Connect HL7 v2 orders
A scheduled exam reaches KomPACS as an HL7 v2 ORM^O01 order. IRIS converts it to a FHIR ServiceRequest with its built-in path.
NIS/RIS ──ORM^O01──> HL7.Orders.In ──> ZHL7.OrderToSDA ──> SDA3 ──> ZHL7.SDA3ToFHIR ──> FHIR ServiceRequest| Production item | Class |
|---|---|
HL7.Orders.In | EnsLib.HL7.Service.HTTPService (POC). Production: an MLLP/TCP service with TLS. |
| HL7 to SDA3 | ZHL7.OrderToSDA. It calls HS.Gateway.HL7.HL7ToSDA3 and passes PID-3 as the patient resource ID. |
| SDA3 to FHIR | HS.FHIR.DTL.Util.HC.SDA3.FHIR.Process with transform class ZHL7.SDA3ToFHIR. It skips the Patient entry, so the existing Patient stays. |
| FHIR write | HS.FHIRServer.Interop.Operation |
Message rules
Section titled “Message rules”- PID-3: the patient ID. It must equal the FHIR
Patient.id. - ORC-2: the placer order number. It becomes a
ServiceRequest.identifierof typePLAC. - OBR-4: the modality with coding system
DCM(for exampleCT,MR,PT). IRIS maps it to the DICOM OID systemurn:oid:1.2.840.10008.2.16.4.
-
Load the two ObjectScript classes into the FHIR namespace.
-
Add the business service, the process and the operation to the production. Start it.
-
Point the NIS/RIS interface engine at the business service.
-
Send one test order.
-
Check the result with a FHIR search, not the ACK:
GET /fhir/r4/ServiceRequest?identifier=<placer number>The HTTP service ACKs on receipt (
MSA|CA). TheServiceRequestis searchable about 1 s later.
Known limits
Section titled “Known limits”- Each order also creates one
Organizationfrom MSH. - The POC HTTP service decodes the body as Latin-1. Czech diacritics in free-text fields break. Set the character set in the production before you send Czech text.