Initial Release
A stand-alone HL7 application built on InterSystems IRIS for Health and Docker.
In terminal commands, build an HL7 integration engine, send a sample result to Business Process to get reference ranges for each test and set Abnormal Flag based on the results, and view the trace of routing and transformations.
This application is derived from quickstarts-hl7 template : https://openexchange.intersystems.com/package/HL7-Quick-Start and used csvgen utility from https://openexchange.intersystems.com/package/csvgen
Recommended for use with: https://learning.intersystems.com/course/view.php?name=HL7%20QS
git clone https://github.com/intersystems/LabResultsVerification-hl7
cd Lab-ResultsVerification-hl7
docker-compose up -d
start explorer "http://localhost:52795/csp/interop/EnsPortal.ProductionConfig.zen?PRODUCTION=resultVer.Production"
Log in with credentials: SuperUser | SYS
git clone https://github.com/intersystems/LabResultsVerification-hl7
cd quickstarts-hl7
docker-compose up -d
open "http://localhost:52795/csp/interop/EnsPortal.ProductionConfig.zen?PRODUCTION=resultVer.Production"
Log in with credentials: SuperUser | SYS
LabResultsVerification-hl includes Business Services to read file, Business Processes to get results reference ranges and set abnormal flag and send to Business Operations.
Copy \shared\data\sample_data\ORU_R01.txt \shared\data\results directory.
System will update reference range by using TestRanges Persistent class and set the abnormal flag.
Business process will send critical results whom abnormal flag is set to ToCriticalResultsFile operation and rest of the normal results to ToNormalResultsFile operation.
Below is the primary and transformed HL7 2.5 ORU_R01 message:
It need to save reference ranges in database, for this I used TestRanges Persistent class which will be auto populated by using csvgen:
In order to get reference range a custom function GetReferenceRange() is created in utility class. Please note this class should be Extends from EnsRule.FunctionSet
and for Abnormal Flag, SetAbnormalFlag() function is created in utility class
Data Transformation (UpdateReferenceRangesDTL) is created which will update reference range and set abnormal flag by using GetReferenceRange() and SetAbnormalFlag() utility class functions in nested foreach loops:
Please note that in order to get Abnormal flag we have to pass OBX:ObservationValue (Result) along with OBX:ObservationIdentifier(TestCode)
Business process “ResultsDTRouter” will transform the message by using “ResultsDTRule” Business rule and send message to another business process “ResultsRoute” to send message to “ToCriticalResultsFile” operation in case of Abnormal flag is set otherwise if will send to “ToCriticalResultsFile” operation:
Following Visual Trace Below Visual Trace is for the message successfully send to “ToCriticalResultsFile” Operation