Question
· 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
Discussion (2)1
Log in or sign up to continue

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 3
        set 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": ""
}