Iris Healthtoolkit Service
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.
-
:fire: Official Version : https://aws.amazon.com/marketplace/pp/prodview-q7ryewpz75cq2 :fire:
-
:tv: Video : https://youtu.be/lr2B7zSFkds :tv:
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
```text
MSH|^~\&||^^NPI|||20211105165829+0000||ADT^A01|66053,61109.396628|P|2.5.1|||AL|AL|||||PH_SS-Ack^SS Sender^2.16.840.1.114222.4.10.3^ISO
EVN||202111051658|||||^^NPI
PID|1||060a6bd5-5146-4b08-a916-009858997bd3^^^https://github.com/synthetichealth/synthea^~060a6bd5-5146-4b08-a916-009858997bd3^^^http://hospital.smarthealthit.org^MR~999-97-4582^^^&^SS~S99986284^^^&^DL~X84330364X^^^&^PPN||Masson^Livia^^^Mrs.^^||19920820|F|Simon^Livia^^||615 Avenue Lemaire^^Lyon^Auvergne-Rhone-Alpes^63000||^PRN^PH^^^555^286|||||||||||||||||||||
PV1|1|O||424441002|||||||||||||||1^^^&&^VN|||||||||||||||||||||||||200812312325|20090101044004
PV2|||72892002^Grossesse normale^SCT
OBX|1||8302-2^Taille du corps^LN||20101014002504^^|cm^^UCUM|||||F|||20101014
OBX|2||72514-3^Gravite de la douleur - 0-10 evaluation numerique verbale [Score] - Signaleee^LN||20101014002504^^|{score}^^UCUM|||||F|||20101014
OBX|3||29463-7^Poids corporel^LN||20101014002504^^|kg^^UCUM|||||F|||20101014
OBX|4||39156-5^Indice de masse corporelle^LN||20101014002504^^|kg/m2^^UCUM|||||F|||20101014
OBX|5||72166-2^Statut du tabagisme^LN||20171026002504^Ancien fumeur^SCT^^^^^^Ancien fumeur||||||F|||20171026
```
Output
```json
{
"resourceType": "Bundle",
"type": "transaction",
"entry": [
{
"request": {
"method": "POST",
"url": "Organization"
},
"fullUrl": "urn:uuid:347a0c88-e7fa-11ec-9601-0242ac1a0002",
"resource": {
"resourceType": "Organization",
"identifier": [
{
"value": "https://github.com/synthetichealth/synthea"
}
]
}
},
{
"request": {
"method": "POST",
"url": "Organization"
},
"fullUrl": "urn:uuid:34d03d1a-e7fa-11ec-9601-0242ac1a0002",
"resource": {
"resourceType": "Organization",
"identifier": [
{
"value": "http://hospital.smarthealthit.org"
}
]
}
},
{
"request": {
"method": "POST",
"url": "Patient"
},
"fullUrl": "urn:uuid:36dd6e2a-e7fa-11ec-9601-0242ac1a0002",
"resource": {
"resourceType": "Patient",
"address": [
{
"city": "Lyon",
"line": [
"615 Avenue Lemaire"
],
"postalCode": "63000",
"state": "Auvergne-Rhone-Alpes"
}
],
"birthDate": "1992-08-20",
"gender": "female",
"identifier": [
{
"assigner": {
"reference": "urn:uuid:347a0c88-e7fa-11ec-9601-0242ac1a0002"
},
"system": "https://github.com/synthetichealth/synthea",
"value": "060a6bd5-5146-4b08-a916-009858997bd3"
},
{
"assigner": {
"reference": "urn:uuid:34d03d1a-e7fa-11ec-9601-0242ac1a0002"
},
"system": "http://hospital.smarthealthit.org",
"type": {
"coding": [
{
"code": "MR",
"system": "http://terminology.hl7.org/CodeSystem/v2-0203"
}
],
"text": "MRN"
},
"value": "060a6bd5-5146-4b08-a916-009858997bd3"
},
{
"extension": [
{
"url": "http://intersystems.com/fhir/extn/sda3/lib/patient-number-i-s-o-assignin...",
"valueString": "&"
}
],
"type": {
"coding": [
{
"code": "SS"
}
],
"text": "SS"
},
"value": "999-97-4582"
},
{
"extension": [
{
"url": "http://intersystems.com/fhir/extn/sda3/lib/patient-number-i-s-o-assignin...",
"valueString": "&"
}
],
"type": {
"coding": [
{
"code": "DL",
"system": "http://terminology.hl7.org/CodeSystem/v2-0203"
}
],
"text": "DL"
},
"value": "S99986284"
},
{
"extension": [
{
"url": "http://intersystems.com/fhir/extn/sda3/lib/patient-number-i-s-o-assignin...",
"valueString": "&"
}
],
"type": {
"coding": [
{
"code": "PPN",
"system": "http://terminology.hl7.org/CodeSystem/v2-0203"
}
],
"text": "PPN"
},
"value": "X84330364X"
}
],
"name": [
{
"family": "Simon",
"given": [
"Livia"
],
"text": "Livia Simon"
},
{
"family": "Masson",
"given": [
"Livia"
],
"prefix": [
"Mrs."
],
"text": "Mrs. Livia Masson",
"use": "official"
}
],
"telecom": [
{
"system": "phone",
"use": "home",
"value": "(555) 286"
}
]
}
},
{
"request": {
"method": "POST",
"url": "Encounter"
},
"fullUrl": "urn:uuid:38cf2d40-e7fa-11ec-9601-0242ac1a0002",
"resource": {
"resourceType": "Encounter",
"class": {
"code": "AMB",
"system": "http://terminology.hl7.org/CodeSystem/v3-ActCode"
},
"extension": [
{
"url": "http://intersystems.com/fhir/extn/sda3/lib/encounter-encounter-type",
"valueString": "O"
},
{
"url": "http://intersystems.com/fhir/extn/sda3/lib/encounter-entered-on",
"valueDateTime": "2008-12-31T23:25:00+00:00"
},
{
"url": "http://intersystems.com/fhir/extn/sda3/lib/encounter-to-time",
"valueDateTime": "2009-01-01T04:40:04+00:00"
}
],
"identifier": [
{
"type": {
"text": "EncounterNumber"
},
"use": "official",
"value": "1"
}
],
"period": {
"start": "2008-12-31T23:25:00+00:00"
},
"reasonCode": [
{
"coding": [
{
"code": "72892002",
"display": "Grossesse normale",
"system": "http://snomed.info/sct"
}
]
}
],
"status": "unknown",
"subject": {
"reference": "urn:uuid:36dd6e2a-e7fa-11ec-9601-0242ac1a0002"
},
"type": [
{
"coding": [
{
"code": "424441002"
}
]
}
]
}
},
{
"request": {
"method": "POST",
"url": "Observation"
},
"fullUrl": "urn:uuid:3a13745e-e7fa-11ec-9601-0242ac1a0002",
"resource": {
"resourceType": "Observation",
"code": {
"coding": [
{
"code": "72166-2",
"display": "Statut du tabagisme",
"system": "http://loinc.org"
}
]
},
"effectiveDateTime": "2017-10-26T00:00:00+00:00",
"encounter": {
"reference": "urn:uuid:38cf2d40-e7fa-11ec-9601-0242ac1a0002"
},
"extension": [
{
"url": "http://intersystems.com/fhir/extn/sda3/lib/observation-encounter-number",
"valueString": "1"
},
{
"url": "http://intersystems.com/fhir/extn/sda3/lib/observation-observation-coded...",
"valueCodeableConcept": {
"coding": [
{
"code": "20171026002504",
"display": "Ancien fumeur",
"system": "http://snomed.info/sct"
}
],
"text": "Ancien fumeur"
}
}
],
"status": "final",
"subject": {
"reference": "urn:uuid:36dd6e2a-e7fa-11ec-9601-0242ac1a0002"
},
"valueString": "Ancien fumeur"
}
},
{
"request": {
"method": "POST",
"url": "Observation"
},
"fullUrl": "urn:uuid:3b6212fc-e7fa-11ec-9601-0242ac1a0002",
"resource": {
"resourceType": "Observation",
"category": [
{
"coding": [
{
"code": "vital-signs",
"display": "Vital Signs",
"system": "http://terminology.hl7.org/CodeSystem/observation-category"
}
],
"text": "Vital Signs"
}
],
"code": {
"coding": [
{
"code": "8302-2",
"display": "Taille du corps",
"system": "http://loinc.org"
}
],
"extension": [
{
"url": "http://intersystems.com/fhir/extn/sda3/lib/code-table-detail-observation...",
"valueCodeableConcept": {
"coding": [
{
"code": "cm",
"system": "http://unitsofmeasure.org"
}
]
}
}
]
},
"effectiveDateTime": "2010-10-14T00:00:00+00:00",
"encounter": {
"reference": "urn:uuid:38cf2d40-e7fa-11ec-9601-0242ac1a0002"
},
"extension": [
{
"url": "http://intersystems.com/fhir/extn/sda3/lib/observation-encounter-number",
"valueString": "1"
}
],
"status": "final",
"subject": {
"reference": "urn:uuid:36dd6e2a-e7fa-11ec-9601-0242ac1a0002"
},
"valueCodeableConcept": {
"coding": [
{
"code": "20101014002504"
}
]
}
}
},
{
"request": {
"method": "POST",
"url": "Observation"
},
"fullUrl": "urn:uuid:3c8aba30-e7fa-11ec-9601-0242ac1a0002",
"resource": {
"resourceType": "Observation",
"code": {
"coding": [
{
"code": "72514-3",
"display": "Gravite de la douleur - 0-10 evaluation numerique verbale [Score] - Signaleee",
"system": "http://loinc.org"
}
],
"extension": [
{
"url": "http://intersystems.com/fhir/extn/sda3/lib/code-table-detail-observation...",
"valueCodeableConcept": {
"coding": [
{
"code": "{score}",
"system": "http://unitsofmeasure.org"
}
]
}
}
]
},
"effectiveDateTime": "2010-10-14T00:00:00+00:00",
"encounter": {
"reference": "urn:uuid:38cf2d40-e7fa-11ec-9601-0242ac1a0002"
},
"extension": [
{
"url": "http://intersystems.com/fhir/extn/sda3/lib/observation-encounter-number",
"valueString": "1"
}
],
"status": "final",
"subject": {
"reference": "urn:uuid:36dd6e2a-e7fa-11ec-9601-0242ac1a0002"
},
"valueCodeableConcept": {
"coding": [
{
"code": "20101014002504"
}
]
}
}
},
{
"request": {
"method": "POST",
"url": "Observation"
},
"fullUrl": "urn:uuid:3de455d0-e7fa-11ec-9601-0242ac1a0002",
"resource": {
"resourceType": "Observation",
"category": [
{
"coding": [
{
"code": "vital-signs",
"display": "Vital Signs",
"system": "http://terminology.hl7.org/CodeSystem/observation-category"
}
],
"text": "Vital Signs"
}
],
"code": {
"coding": [
{
"code": "29463-7",
"display": "Poids corporel",
"system": "http://loinc.org"
}
],
"extension": [
{
"url": "http://intersystems.com/fhir/extn/sda3/lib/code-table-detail-observation...",
"valueCodeableConcept": {
"coding": [
{
"code": "kg",
"system": "http://unitsofmeasure.org"
}
]
}
}
]
},
"effectiveDateTime": "2010-10-14T00:00:00+00:00",
"encounter": {
"reference": "urn:uuid:38cf2d40-e7fa-11ec-9601-0242ac1a0002"
},
"extension": [
{
"url": "http://intersystems.com/fhir/extn/sda3/lib/observation-encounter-number",
"valueString": "1"
}
],
"status": "final",
"subject": {
"reference": "urn:uuid:36dd6e2a-e7fa-11ec-9601-0242ac1a0002"
},
"valueCodeableConcept": {
"coding": [
{
"code": "20101014002504"
}
]
}
}
},
{
"request": {
"method": "POST",
"url": "Observation"
},
"fullUrl": "urn:uuid:3f501418-e7fa-11ec-9601-0242ac1a0002",
"resource": {
"resourceType": "Observation",
"code": {
"coding": [
{
"code": "39156-5",
"display": "Indice de masse corporelle",
"system": "http://loinc.org"
}
],
"extension": [
{
"url": "http://intersystems.com/fhir/extn/sda3/lib/code-table-detail-observation...",
"valueCodeableConcept": {
"coding": [
{
"code": "kg/m2",
"system": "http://unitsofmeasure.org"
}
]
}
}
]
},
"effectiveDateTime": "2010-10-14T00:00:00+00:00",
"encounter": {
"reference": "urn:uuid:38cf2d40-e7fa-11ec-9601-0242ac1a0002"
},
"extension": [
{
"url": "http://intersystems.com/fhir/extn/sda3/lib/observation-encounter-number",
"valueString": "1"
}
],
"status": "final",
"subject": {
"reference": "urn:uuid:36dd6e2a-e7fa-11ec-9601-0242ac1a0002"
},
"valueCodeableConcept": {
"coding": [
{
"code": "20101014002504"
}
]
}
}
}
]
}
```
FHIR to HL7 ADT
POST http://localhost:32783/api/fhir/hl7/adt
Example
```json
{
"resourceType": "Bundle",
"type": "transaction",
"entry": [
{
"request": {
"method": "POST",
"url": "Organization"
},
"fullUrl": "urn:uuid:347a0c88-e7fa-11ec-9601-0242ac1a0002",
"resource": {
"resourceType": "Organization",
"identifier": [
{
"value": "https://github.com/synthetichealth/synthea"
}
]
}
},
{
"request": {
"method": "POST",
"url": "Organization"
},
"fullUrl": "urn:uuid:34d03d1a-e7fa-11ec-9601-0242ac1a0002",
"resource": {
"resourceType": "Organization",
"identifier": [
{
"value": "http://hospital.smarthealthit.org"
}
]
}
},
{
"request": {
"method": "POST",
"url": "Patient"
},
"fullUrl": "urn:uuid:36dd6e2a-e7fa-11ec-9601-0242ac1a0002",
"resource": {
"resourceType": "Patient",
"address": [
{
"city": "Lyon",
"line": [
"615 Avenue Lemaire"
],
"postalCode": "63000",
"state": "Auvergne-Rhone-Alpes"
}
],
"birthDate": "1992-08-20",
"gender": "female",
"identifier": [
{
"assigner": {
"reference": "urn:uuid:347a0c88-e7fa-11ec-9601-0242ac1a0002"
},
"system": "https://github.com/synthetichealth/synthea",
"value": "060a6bd5-5146-4b08-a916-009858997bd3"
},
{
"assigner": {
"reference": "urn:uuid:34d03d1a-e7fa-11ec-9601-0242ac1a0002"
},
"system": "http://hospital.smarthealthit.org",
"type": {
"coding": [
{
"code": "MR",
"system": "http://terminology.hl7.org/CodeSystem/v2-0203"
}
],
"text": "MRN"
},
"value": "060a6bd5-5146-4b08-a916-009858997bd3"
},
{
"extension": [
{
"url": "http://intersystems.com/fhir/extn/sda3/lib/patient-number-i-s-o-assignin...",
"valueString": "&"
}
],
"type": {
"coding": [
{
"code": "SS"
}
],
"text": "SS"
},
"value": "999-97-4582"
},
{
"extension": [
{
"url": "http://intersystems.com/fhir/extn/sda3/lib/patient-number-i-s-o-assignin...",
"valueString": "&"
}
],
"type": {
"coding": [
{
"code": "DL",
"system": "http://terminology.hl7.org/CodeSystem/v2-0203"
}
],
"text": "DL"
},
"value": "S99986284"
},
{
"extension": [
{
"url": "http://intersystems.com/fhir/extn/sda3/lib/patient-number-i-s-o-assignin...",
"valueString": "&"
}
],
"type": {
"coding": [
{
"code": "PPN",
"system": "http://terminology.hl7.org/CodeSystem/v2-0203"
}
],
"text": "PPN"
},
"value": "X84330364X"
}
],
"name": [
{
"family": "Simon",
"given": [
"Livia"
],
"text": "Livia Simon"
},
{
"family": "Masson",
"given": [
"Livia"
],
"prefix": [
"Mrs."
],
"text": "Mrs. Livia Masson",
"use": "official"
}
],
"telecom": [
{
"system": "phone",
"use": "home",
"value": "(555) 286"
}
]
}
},
{
"request": {
"method": "POST",
"url": "Encounter"
},
"fullUrl": "urn:uuid:38cf2d40-e7fa-11ec-9601-0242ac1a0002",
"resource": {
"resourceType": "Encounter",
"class": {
"code": "AMB",
"system": "http://terminology.hl7.org/CodeSystem/v3-ActCode"
},
"extension": [
{
"url": "http://intersystems.com/fhir/extn/sda3/lib/encounter-encounter-type",
"valueString": "O"
},
{
"url": "http://intersystems.com/fhir/extn/sda3/lib/encounter-entered-on",
"valueDateTime": "2008-12-31T23:25:00+00:00"
},
{
"url": "http://intersystems.com/fhir/extn/sda3/lib/encounter-to-time",
"valueDateTime": "2009-01-01T04:40:04+00:00"
}
],
"identifier": [
{
"type": {
"text": "EncounterNumber"
},
"use": "official",
"value": "1"
}
],
"period": {
"start": "2008-12-31T23:25:00+00:00"
},
"reasonCode": [
{
"coding": [
{
"code": "72892002",
"display": "Grossesse normale",
"system": "http://snomed.info/sct"
}
]
}
],
"status": "unknown",
"subject": {
"reference": "urn:uuid:36dd6e2a-e7fa-11ec-9601-0242ac1a0002"
},
"type": [
{
"coding": [
{
"code": "424441002"
}
]
}
]
}
},
{
"request": {
"method": "POST",
"url": "Observation"
},
"fullUrl": "urn:uuid:3a13745e-e7fa-11ec-9601-0242ac1a0002",
"resource": {
"resourceType": "Observation",
"code": {
"coding": [
{
"code": "72166-2",
"display": "Statut du tabagisme",
"system": "http://loinc.org"
}
]
},
"effectiveDateTime": "2017-10-26T00:00:00+00:00",
"encounter": {
"reference": "urn:uuid:38cf2d40-e7fa-11ec-9601-0242ac1a0002"
},
"extension": [
{
"url": "http://intersystems.com/fhir/extn/sda3/lib/observation-encounter-number",
"valueString": "1"
},
{
"url": "http://intersystems.com/fhir/extn/sda3/lib/observation-observation-coded...",
"valueCodeableConcept": {
"coding": [
{
"code": "20171026002504",
"display": "Ancien fumeur",
"system": "http://snomed.info/sct"
}
],
"text": "Ancien fumeur"
}
}
],
"status": "final",
"subject": {
"reference": "urn:uuid:36dd6e2a-e7fa-11ec-9601-0242ac1a0002"
},
"valueString": "Ancien fumeur"
}
},
{
"request": {
"method": "POST",
"url": "Observation"
},
"fullUrl": "urn:uuid:3b6212fc-e7fa-11ec-9601-0242ac1a0002",
"resource": {
"resourceType": "Observation",
"category": [
{
"coding": [
{
"code": "vital-signs",
"display": "Vital Signs",
"system": "http://terminology.hl7.org/CodeSystem/observation-category"
}
],
"text": "Vital Signs"
}
],
"code": {
"coding": [
{
"code": "8302-2",
"display": "Taille du corps",
"system": "http://loinc.org"
}
],
"extension": [
{
"url": "http://intersystems.com/fhir/extn/sda3/lib/code-table-detail-observation...",
"valueCodeableConcept": {
"coding": [
{
"code": "cm",
"system": "http://unitsofmeasure.org"
}
]
}
}
]
},
"effectiveDateTime": "2010-10-14T00:00:00+00:00",
"encounter": {
"reference": "urn:uuid:38cf2d40-e7fa-11ec-9601-0242ac1a0002"
},
"extension": [
{
"url": "http://intersystems.com/fhir/extn/sda3/lib/observation-encounter-number",
"valueString": "1"
}
],
"status": "final",
"subject": {
"reference": "urn:uuid:36dd6e2a-e7fa-11ec-9601-0242ac1a0002"
},
"valueCodeableConcept": {
"coding": [
{
"code": "20101014002504"
}
]
}
}
},
{
"request": {
"method": "POST",
"url": "Observation"
},
"fullUrl": "urn:uuid:3c8aba30-e7fa-11ec-9601-0242ac1a0002",
"resource": {
"resourceType": "Observation",
"code": {
"coding": [
{
"code": "72514-3",
"display": "Gravite de la douleur - 0-10 evaluation numerique verbale [Score] - Signaleee",
"system": "http://loinc.org"
}
],
"extension": [
{
"url": "http://intersystems.com/fhir/extn/sda3/lib/code-table-detail-observation...",
"valueCodeableConcept": {
"coding": [
{
"code": "{score}",
"system": "http://unitsofmeasure.org"
}
]
}
}
]
},
"effectiveDateTime": "2010-10-14T00:00:00+00:00",
"encounter": {
"reference": "urn:uuid:38cf2d40-e7fa-11ec-9601-0242ac1a0002"
},
"extension": [
{
"url": "http://intersystems.com/fhir/extn/sda3/lib/observation-encounter-number",
"valueString": "1"
}
],
"status": "final",
"subject": {
"reference": "urn:uuid:36dd6e2a-e7fa-11ec-9601-0242ac1a0002"
},
"valueCodeableConcept": {
"coding": [
{
"code": "20101014002504"
}
]
}
}
},
{
"request": {
"method": "POST",
"url": "Observation"
},
"fullUrl": "urn:uuid:3de455d0-e7fa-11ec-9601-0242ac1a0002",
"resource": {
"resourceType": "Observation",
"category": [
{
"coding": [
{
"code": "vital-signs",
"display": "Vital Signs",
"system": "http://terminology.hl7.org/CodeSystem/observation-category"
}
],
"text": "Vital Signs"
}
],
"code": {
"coding": [
{
"code": "29463-7",
"display": "Poids corporel",
"system": "http://loinc.org"
}
],
"extension": [
{
"url": "http://intersystems.com/fhir/extn/sda3/lib/code-table-detail-observation...",
"valueCodeableConcept": {
"coding": [
{
"code": "kg",
"system": "http://unitsofmeasure.org"
}
]
}
}
]
},
"effectiveDateTime": "2010-10-14T00:00:00+00:00",
"encounter": {
"reference": "urn:uuid:38cf2d40-e7fa-11ec-9601-0242ac1a0002"
},
"extension": [
{
"url": "http://intersystems.com/fhir/extn/sda3/lib/observation-encounter-number",
"valueString": "1"
}
],
"status": "final",
"subject": {
"reference": "urn:uuid:36dd6e2a-e7fa-11ec-9601-0242ac1a0002"
},
"valueCodeableConcept": {
"coding": [
{
"code": "20101014002504"
}
]
}
}
},
{
"request": {
"method": "POST",
"url": "Observation"
},
"fullUrl": "urn:uuid:3f501418-e7fa-11ec-9601-0242ac1a0002",
"resource": {
"resourceType": "Observation",
"code": {
"coding": [
{
"code": "39156-5",
"display": "Indice de masse corporelle",
"system": "http://loinc.org"
}
],
"extension": [
{
"url": "http://intersystems.com/fhir/extn/sda3/lib/code-table-detail-observation...",
"valueCodeableConcept": {
"coding": [
{
"code": "kg/m2",
"system": "http://unitsofmeasure.org"
}
]
}
}
]
},
"effectiveDateTime": "2010-10-14T00:00:00+00:00",
"encounter": {
"reference": "urn:uuid:38cf2d40-e7fa-11ec-9601-0242ac1a0002"
},
"extension": [
{
"url": "http://intersystems.com/fhir/extn/sda3/lib/observation-encounter-number",
"valueString": "1"
}
],
"status": "final",
"subject": {
"reference": "urn:uuid:36dd6e2a-e7fa-11ec-9601-0242ac1a0002"
},
"valueCodeableConcept": {
"coding": [
{
"code": "20101014002504"
}
]
}
}
}
]
}
```
```text
MSH|^~\&||^^NPI|||20220609134903+0000||^|66269,49743.388133779|P|2.5.1|||AL|AL|||||PH_SS-Ack^SS Sender^2.16.840.1.114222.4.10.3^ISO
EVN||202206091349|||||^^NPI
PID|1||060a6bd5-5146-4b08-a916-009858997bd3^^^https://github.com/s&&ISO^~060a6bd5-5146-4b08-a916-009858997bd3^^^http://hospital.smar&&ISO^MR~999-97-4582^^^&^SS~S99986284^^^&^DL~X84330364X^^^&^PPN||Masson^Livia^^^Mrs.^^||19920820|F|Simon^Livia^^||615 Avenue Lemaire^^^^||^PRN^PH^^^555^286|||||||||||||||||||||
PV1|1|O||424441002|||||||||||||||1^^^&&^VN|||||||||||||||||||||||||200812312325|
PV2|||72892002^Grossesse normale^SCT
OBX|1||72166-2^Statut du tabagisme^LN||^^||||||F|||20171026
OBX|2||8302-2^Taille du corps^LN||^^||||||F|||20101014
OBX|3||72514-3^Gravite de la douleur - 0-10 evaluation numerique verbale [Score] - Signaleee^LN||^^||||||F|||20101014
OBX|4||29463-7^Poids corporel^LN||^^||||||F|||20101014
OBX|5||39156-5^Indice de masse corporelle^LN||^^||||||F|||20101014
```
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.
the app is not available !
The app wasn't published, now it's should be ok.
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.
Hi @Guillaume Rongier !
Please consider the PR to make it an IPM module?
PR accepted with few modifications.
Hi, I have some problems, can someone help with this service?
Building iris [+] Building 8.0s (11/14) docker:default => [internal] load build definition from dockerfile 0.0s => => transferring dockerfile: 988B 0.0s => WARN: FromAsCasing: 'as' and 'FROM' keywords' casing do not match (line 2) 0.0s => WARN: FromAsCasing: 'as' and 'FROM' keywords' casing do not match (line 25) 0.0s => [internal] load metadata for docker.io/intersystemsdc/irishealth-community:preview 1.1s => [internal] load .dockerignore 0.0s => => transferring context: 57B 0.0s => [builder 1/7] FROM docker.io/intersystemsdc/irishealth-community:preview@sha256:d8b99c0153fe5c99e7adbd2ec9121db1c567749a29f08935108f6e258bcd115c 0.0s => [final 2/3] ADD --chown=irisowner:irisowner https://github.com/grongierisc/iris-docker-multi-stage-script/releases/latest/download/copy-data.py /irisdev/app/copy-data.py 1.1s => [internal] load build context 0.0s => => transferring context: 7.30kB 0.0s => CACHED [builder 2/7] WORKDIR /opt/irisapp 0.0s => CACHED [builder 3/7] RUN chown irisowner:irisowner /opt/irisapp 0.0s => [builder 4/7] COPY . . 0.1s => [builder 5/7] COPY iris.script /tmp/iris.script 0.0s => ERROR [builder 6/7] RUN iris start IRIS && iris session IRIS < /tmp/iris.script && iris stop IRIS quietly 6.7s ------ > [builder 6/7] RUN iris start IRIS && iris session IRIS < /tmp/iris.script && iris stop IRIS quietly: 0.170 Using 'iris.cpf' configuration file 0.310 0.368 Starting Control Process 0.368 Global buffer setting requires attention. Auto-selected 25% of total memory. 0.368 Allocated 5029MB shared memory 0.368 3941MB global buffers, 394MB routine buffers 0.459 This copy of InterSystems IRIS has been licensed for use exclusively by: 0.459 InterSystems IRIS Community 0.459 Copyright (c) 1986-2024 by InterSystems Corporation 0.459 Any other use is a violation of your license agreement 6.668 6.668 3 alert(s) during startup. See messages.log for details. 6.677 Starting IRIS 6.677 6.678 /bin/sh: 1: cannot open /tmp/iris.script: Permission denied ------ 3 warnings found (use docker --debug to expand): - FromAsCasing: 'as' and 'FROM' keywords' casing do not match (line 2) - FromAsCasing: 'as' and 'FROM' keywords' casing do not match (line 25) - SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ARG "IRIS_PASSWORD") (line 4) dockerfile:17 -------------------- 16 | # run iris and initial 17 | >>> RUN iris start IRIS \ 18 | >>> && iris session IRIS < /tmp/iris.script \ 19 | >>> && iris stop IRIS quietly 20 | -------------------- ERROR: failed to solve: process "/bin/sh -c iris start IRIS \t&& iris session IRIS < /tmp/iris.script \t&& iris stop IRIS quietly" did not complete successfully: exit code: 2 ERROR: Service 'iris' failed to build : Build failed
I just build it, i had no issue on my side.
In your case, it seems that you don't have the permissions to access /tmp while building the image.
It's weird because /tmp is a public directory, so you should have access to it.
Make sure you haven't mounted a volume on /tmp.
Otherwise, you can try to modify the Dockerfile to use another directory, like /home/your_user/tmp.
# run iris and initial RUN iris start IRIS \ && iris session IRIS < /opt/irisapp/iris.script \ && iris stop IRIS quietly