Question Smythe Smythee · Jul 13, 2022

Can you help meHow to Convert HL7 input message into JSON Object Output Message

Can you help meHow to Convert HL7 input message into JSON Object  Output Message.In conversion can you please tell how to use convert a input HL7 message into Dynamic Object Output

Product version: Ensemble 2018.1
$ZV: Cache for Windows (x86-64) 2018.1.1 (Build 312_1_18937U) Fri Apr 26 2019 17:58:36 EDT

Comments

Rizmaan Marikar · Jul 20, 2022

Hi @Smythe Smythee 

The best way i guess is to have the FHIR package installed and use the OOB transformations.
an alternative way would be something as follows;
 

ClassMethod TestHL7ToJson()
{
        set hl7FilePath = "C:\Intersystems\file.hl7"#dim hl7Msg As EnsLib.HL7.Message
        set hl7Msg=##class(EnsLib.HL7.Message).ImportFromFile(hl7FilePath, .sc)
        set tMSH=hl7Msg.getSegmentByIndex(1)
        set tName=tMSH.GetValueAt(9,":_~\&")
        
        set hl7Msg.DocType = "2.5:"_tName
        
        //Anticipating the PID element in line 3set tPID = hl7Msg.getSegmentByIndex(3)
        
        set jsonObj= {}
        do jsonObj.%Set("PatientID",tPID.GetValueAt(2))
        do jsonObj.%Set("PatientIdentifierList",tPID.GetValueAt(3))
        do jsonObj.%Set("AlternatePatientIDPID",tPID.GetValueAt(4))
        do jsonObj.%Set("PatientName",tPID.GetValueAt(5))
        do jsonObj.%Set("MothersMaidenName",tPID.GetValueAt(6))
        do jsonObj.%Set("DateTimeofBirth",tPID.GetValueAt(7))
        do jsonObj.%Set("AdministrativeSex",tPID.GetValueAt(8))
        do jsonObj.%Set("PatientAlias",tPID.GetValueAt(9))
        do jsonObj.%Set("Race",tPID.GetValueAt(10))
        do jsonObj.%Set("PatientAddress",tPID.GetValueAt(11))
        do jsonObj.%Set("CountyCode",tPID.GetValueAt(12))
        do jsonObj.%Set("PhoneNumberBusiness",tPID.GetValueAt(14))
        do jsonObj.%Set("PrimaryLanguage",tPID.GetValueAt(15))
        do jsonObj.%Set("MaritalStatus",tPID.GetValueAt(16))
        do jsonObj.%Set("Religion",tPID.GetValueAt(17))
        do jsonObj.%Set("PatientAccountNumber",tPID.GetValueAt(18))
        do jsonObj.%Set("SSNNumberPatient",tPID.GetValueAt(19))
        do jsonObj.%Set("DriversLicenseNumberPatient",tPID.GetValueAt(20))
        do jsonObj.%Set("MothersIdentifier",tPID.GetValueAt(21))
        do jsonObj.%Set("EthnicGroup",tPID.GetValueAt(22))
        do jsonObj.%Set("BirthPlace",tPID.GetValueAt(23))
        do jsonObj.%Set("MultipleBirthIndicator",tPID.GetValueAt(24))
        do jsonObj.%Set("BirthOrder",tPID.GetValueAt(25))
        do jsonObj.%Set("Citizenship",tPID.GetValueAt(26))
        
        W jsonObj.%ToJSON()
}

the above code generates a json for PID as follows;

{
    "PatientID": "1111111^^^TEST^MR",
    "PatientIdentifierList": "6910315054084^^M10^RSAID^GOV",
    "AlternatePatientIDPID": "",
    "PatientName": "Geoe^Schz^^MR^^^^^^^^^^.",
    "MothersMaidenName": "",
    "DateTimeofBirth": "19330722",
    "AdministrativeSex": "M",
    "PatientAlias": "",
    "Race": "",
    "PatientAddress": "GRASRK^CAPE TOWN^AA^^0001",
    "CountyCode": "",
    "PhoneNumberBusiness": "0",
    "PrimaryLanguage": "E^English",
    "MaritalStatus": "",
    "Religion": "",
    "PatientAccountNumber": "",
    "SSNNumberPatient": "",
    "DriversLicenseNumberPatient": "",
    "MothersIdentifier": "",
    "EthnicGroup": "",
    "BirthPlace": "",
    "MultipleBirthIndicator": "N",
    "BirthOrder": "",
    "Citizenship": ""
}
0
William Liu  Feb 8, 2024 to Rizmaan Marikar

Hi Rizmaan

What is OOB transformations? Any detailed information? Thank you very much?

William

0