Announcement
Guillaume Rongier · Mar 16

HL7v2 to FHIR, it's easy !

Iris Healthtoolkit Service

Video

Easy to use HL7v2 to FHIR, CDA to FHIR, FHIR to HL7v2 as a Service.

The aim of this project is to provide an REST API that can convert easily various health formats.
Post the desire format in the REST body, get the answer in the new format.

Install

Clone this repository

git clone https://github.com/grongierisc/iris-healthtoolkit-service.git

Docker

docker-compose up --build -d

Usage

Api details

HL7 to FHIR

POST http://localhost:32783/api/hl7/fhir

Example

Input

Output

FHIR to HL7 ADT

POST http://localhost:32783/api/fhir/hl7/adt

Example

FHIR to HL7 ORU

POST http://localhost:32783/api/fhir/hl7/oru

FHIR to HL7 vxu

POST http://localhost:32783/api/fhir/hl7/vxu

CDA to FHIR

POST http://localhost:32783/api/cda/fhir

Example

FHIR repo

GET http://localhost:32783/api/fhir/metadata

Supported HL7 inbound format :

  • ADT_A01, ADT_A02, ADT_A03, ADT_A04, ADT_A05, ADT_A06, ADT_A07, ADT_A08, ADT_A09, ADT_A10, ADT_A11, ADT_A12, ADT_A13, ADT_A17, ADT_A18, ADT_A23, ADT_A25, ADT_A27, ADT_A28, ADT_A29, ADT_A30, ADT_A31, ADT_A34, ADT_A36, ADT_A39, ADT_A40, ADT_A41, ADT_A45, ADT_A47, ADT_A49, ADT_A50, ADT_A51, ADT_A60

  • BAR_P12

  • MDM_T02, MDM_T04, MDM_T08, MDM_T11

  • OMP_O09

  • ORM_O01

  • ORU_R01

  • PPR_PC1, PPR_PC2, PPR_PC3

  • RDE_O11

  • SIU_S12, SIU_S13, SIU_S14, SIU_S15, SIU_S16, SIU_S17, SIU_S26

  • VXU_V04

How it's working

This project works with the pivot diagram: SDA.

The SDA (Summary Document Architecture) is the InterSystems Clinical Data Format.

The SDA FHIR correspondences can be consulted here, and those of the CDA -> SDA here.

gif sda pivot

5
1 594
Discussion (5)1
Log in or sign up to continue

Hi Guillaume,

I'm really interested in getting this working
I managed to install your production inside docker

However, I'm getting this error:

{
  "errors": [
    {
      "code": 5002,
      "domain": "%ObjectErrors",
      "error": "ERROR #5002: ObjectScript error: <PROPERTY DOES NOT EXIST>zhl7+10^HealthToolKit.REST.HL7.1 *QuickStreamId,Ens.StreamContainer",
      "id": "ObjectScriptError",
      "params": [
        "<PROPERTY DOES NOT EXIST>zhl7+10^HealthToolKit.REST.HL7.1 *QuickStreamId,Ens.StreamContainer"
      ]
    }
  ],
  "summary": "ERROR #5002: ObjectScript error: <PROPERTY DOES NOT EXIST>zhl7+10^HealthToolKit.REST.HL7.1 *QuickStreamId,Ens.StreamContainer"
}

I'm posting your swagger example into your IRIS production (REST interface):

http://192.168.2.11:32783/api/hl7/fhir

MSH|^~&||HEALTHSHARE|INTERSYSTEMS||201003090900||ADT^A01||P|2.5.1|
EVN|A01|201003090900|
PID|1||200000001^^^HEALTHSHARE^MR||CARTER^JANE||19381001|F||W|1 Memorial Drive^^CAMBRIDGE^MA^02142||617-225-3133|||M||||
PV1|1|O|||||PALR^FARRELL^SAM^^^^MD^^HEALTHSHARE|||HEALTHSHARE|||||||PALR^FARRELL^SAM^^^^MD^^HEALTHSHARE||HEALTHSHARE00003_201003091236|||||||||||||||||||||||||201003090900|201003090900
AL1|1||PENICILLIN^PENICILLIN|MODERATE|RASH|20030212
DG1|1|9|401.1^Hypertension^I9||20100309|F||||||||28||FARRELL^FARRELL^SAM^^^^MD^^HEALTHSHARE|||
DG1|2|9|250.4^Type 2 Diabetes Mellitus with renal comp^I9||20100309|F||||||||28||FARRELL^FARRELL^SAM^^^^MD^^HEALTHSHARE|||
IN1|1|PHP||ACME HEALTH PLAN|PO Box 22222^^Boston^MA^102142||(617)641-3500|||||||||CARTER^JANE|S|||||||||||||||||||XXXX00211|

Also, noticed these errors during installation:

Loading file /opt/irisapp/src/HealthToolKit/HS/FHIR/DTL/SDA3/vR4/LabOrder/DiagnosticReport.cls as udl
ERROR #16008: Unable to load text for 'HS.FHIR.DTL.SDA3.vR4.LabOrder.DiagnosticReport.cls'
  > ERROR #16000: Line:0 Offset:0 Error 'ERROR #5883: Item 'HS.FHIR.DTL.SDA3.vR4.LabOrder.DiagnosticReport' is mapped from a database that you do not have write permission on.'
Loading file /opt/irisapp/src/HealthToolKit/HS/FHIR/DTL/SDA3/vR4/OtherOrder/DiagnosticReport.cls as udl
ERROR #16008: Unable to load text for 'HS.FHIR.DTL.SDA3.vR4.OtherOrder.DiagnosticReport.cls'
  > ERROR #16000: Line:0 Offset:0 Error 'ERROR #5883: Item 'HS.FHIR.DTL.SDA3.vR4.OtherOrder.DiagnosticReport' is mapped from a database that you do not have write permission on.'
Loading file /opt/irisapp/src/HealthToolKit/HS/FHIR/DTL/SDA3/vR4/RadOrder/DiagnosticReport.cls as udl
ERROR #16008: Unable to load text for 'HS.FHIR.DTL.SDA3.vR4.RadOrder.DiagnosticReport.cls'
  > ERROR #16000: Line:0 Offset:0 Error 'ERROR #5883: Item 'HS.FHIR.DTL.SDA3.vR4.RadOrder.DiagnosticReport' is mapped from a database that you do not have write permission on.'
Loading file /opt/irisapp/src/HealthToolKit/HS/FHIR/DTL/Util/HC/SDA3/HC/FHIR/SDA3/Process.cls as udl
ERROR #16008: Unable to load text for 'HS.FHIR.DTL.Util.HC.FHIR.SDA3.Process.cls'
  > ERROR #16000: Line:0 Offset:0 Error 'ERROR #5883: Item 'HS.FHIR.DTL.Util.HC.FHIR.SDA3.Process' is mapped from a database that you do not have write permission on.'
Loading file /opt/irisapp/src/HealthToolKit/HS/FHIR/DTL/SDA3/vR4/Vaccination/Immunization.cls as udl
ERROR #16008: Unable to load text for 'HS.FHIR.DTL.SDA3.vR4.Vaccination.Immunization.cls'
  > ERROR #16000: Line:0 Offset:0 Error 'ERROR #5883: Item 'HS.FHIR.DTL.SDA3.vR4.Vaccination.Immunization' is mapped from a database that you do not have write permission on.'
Loading file /opt/irisapp/src/HealthToolKit/HS/FHIR/DTL/Util/HC/SDA3/HC/SDA3/FHIR/Process.cls as udl
ERROR #16008: Unable to load text for 'HS.FHIR.DTL.Util.HC.SDA3.FHIR.Process.cls'
  > ERROR #16000: Line:0 Offset:0 Error 'ERROR #5883: Item 'HS.FHIR.DTL.Util.HC.SDA3.FHIR.Process' is mapped from a database that you do not have write permission on.'

I've also attached the entire output that's generated suring the install

How do I access the management portal (what port is it listening on?)
If I wanted to take a look at the code in Studio - what's the _system password?
What version of IRIS do I need to get this running locally on my laptop?

All really good stuff!

Many Thanks,
-- Paul.

Hi Paul,

You can log with SuperUser/SYS.

The last version of main should fix your issue.

I still have to fix, CDA to FHIR but others are working.

Hi Guillaume,

I've got the HEALTHTOOLKIT production running Guillaume - and its working great (thanks)
Could you please give me some advice on how to get the production to transform SDA to DSTU2?

I found this code:

/// FHIRMetadataSets returns a list where each display row is a FHIR metadata set Key,
/// plus " / ", plus FHIR metadata set Description.
ClassMethod FHIRMetadataSets(Output pCaption As %String, Output pTopResults, Output pResults, ByRef pParms As %String, pSearchKey As %String = "") As %Status
{
    Set tSC = $$$OK
    
    // This method returns the core FHIR package for each version that can be transformed to/from SDA.
    Set pResults(1) = "HL7v40 / FHIR R4 Core Specification"
    Set pResults(2) = "HL7v30 / FHIR STU3 Core Specification"
    
    Quit tSC
}

But, I have no idea what the FHIR package is for DSTU2 - and whether or not this is the class that needs changing?

Many Thanks,
-- Paul.