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

thank you,

I am using the following method

set tSC=oRpt.GenerateReport(filename,2) 

which the filename is a .pdf file, and when i check the output folder a .xml, which has my output and a .xsl file

tSC returns this

tSC="0 "_$lb($lb(5001,"Unable to create ReportDisplay object.",,,,,,,,$lb(,"TRAK",$lb("e^%DrawToXSLFO+7^%ZEN.Report.reportPage.1^1","e^%MakeToXSLFOFile+14^%ZEN.Report.reportPage.1^1","e^%DisplayPDF1+6^%ZEN.Report.reportPage.1^1","e^%DisplayPDF+7^%ZEN.Report.reportPage.1^1","e^zCallReport+33^%ZEN.Report.reportPage.1^1","e^zGenerateReport+4^%ZEN.Report.reportPage.1^1","e^zGenerateReport+38^Region.MEXX.Report.RQM.App.Utils.1^1","e^zRepotToCSV+27^Region.MEXX.Report.RQM.App.Utils.1^1","d^zProcessNextReport+27^Region.MEXX.Report.RQM.App.Utils.1^1","d^zDebugStub+30^%Debugger.System.1^2","d^^^0"))))/* ERROR #5001: Unable to create ReportDisplay object. */

any idea why