A dashboard for testing out-of-the-box CCDA and FHIR transformations in IRIS. Supports CCD to SDA, FHIR to SDA, and SDA to FHIR testing.
Version 2.0 includes:
One of the biggest challenges for health data integration and interoperability is orchestrating between different message formats and standards, most notably the Big Three: HL7, CCDA, and FHIR.
The InterSystems IRIS product suite provides a robust toolset including templates and a pre-build code base for handling all three of these standards, but the challenge for developers is accessing the code base in a quick and reliable way without having to dig deep into configuration or code.
The IRIS Interoperability DevTools (formerly IRIS CCD DevTools) allows developers to test CCD and FHIR messages against the code base in the backend of an IRIS for Health instance, while providing visbility and user-friendly tools. With these development tools, health data implementers, developers, and analysts can rapidly inspect and test messages, increasing the speed of IRIS adoption and health data mastery.
Platform: This application is installed IRIS for Health, but the dashboard is compatible with IRIS for Health or HealthShare/UCR. The front-end is built on NextJS. The build instantiates both IRIS for Health Community and a React environment running on Node 18-alpine to run the UI
This current version has these additional features:
Chi Nguyen-Rettig (LEAD North)
Shawntelle Madison-Coker (LEAD North)
To create a user-friendly front-end to organize several testing utilities and methods used to accelerate FHIR and CCD analysis transformation development.
The code for the backend APIs and web application can be installed through IPM. This will install the CSP Application, the IRISAPP Production, and the APIs used by toolkit.
The NextJS/React front-end application is not included in the ZPM package. For local installs, the Dashboard would need to be installed using npm
.
The application is built to run on Docker on an IRIS for Health community image, however the solution only requires a Foundation namespace and is compatible with HealthConnect, IRIS for Health, or HealthShare UCR.
From IRIS terminal:
zpm "install iris-ccd-devtools"
npm install
After installation is complete, then run:
npm rundev
Make sure you have git and Docker desktop installed.
Clone/git pull the repo into any local directory e.g. like it is shown below:
$ git clone git@github.com:LEADNorthLLC/iris-ccd-devtools.git/
Open the terminal in this directory and run on Windows:
$ docker-compose up -d --build
The docker-compose command will install the front-end application and the backend APIs.
Note: For Apple Silicon/ARM64 architecture machines, the React container might fail to build. Try
$ docker compose build --build-arg DOCKERFILE=Dockerfile.mac
The UI is served from a second container and is available after docker startup at:
The management portal is available at:
Management portal
Login: _system/SYS
The API is available on http://localhost:62773/csp/visusalier/service
Sample Data
Sample C-CDAs from the SyntheaMass open-source data set have been included in the testing/sample data/CCDA
folder for unit testing. Also sample FHIR data from SyntheaMass has been included in the testing/sample data/FHIR
folder for unit testing.
*Postman export
An export for a Postman Collection to test the available APIs is located in the testing folder of this project.
Import interop-devtools-ccd-fhir.postman_collection.json
in Postman to run tests.
Data set up in the Postman import is from a combination of Synthea or the HL7 FHIR R4 Specification.
When evaluating CCDs and building transforms, developers need to test an XPATH to see if it’s pointing to the expected location. This XPath evaluation uses the same mechanism as the utilities and transformations within IRIS to locate the XPath so a developer can test that the syntax of the XPath is correct.
Request-type: POST
Content-type: multipart-form
CONTENT1: {"XPathForEval": "/hl7:ClinicalDocument/hl7:recordTarget/hl7:patientRole/hl7:id[1]/@root"}
CONTENT2:
Notes: Quoted values in the XPath must use single quotes in order to not mess with JSON parsing
CONTENT2 should contain the entire XML document, no escaping required.
A CCD can be passed to a standard CCDA to SDA transform to see the results from the IRIS transformation.
[URL](http://localhost:62773/csp/visualizer/service/transform/)
Request-type: POST
Content-type: multipart-form
CONTENT1: {"TransformName": "SDA3/CCDAv21-to-SDA.xsl"}
CONTENT2:
Note: CONTENT2 should contain the entire CCD document, no escaping required.
Possible values for TransformName:
SDA3/CCDA-to-SDA.xsl
SDA3/CCDAv21-to-SDA.xsl
SDA3/CDA-toSDA.xsl
SDA3/AU-CDA-to-SDA.xsl
Test an isolated XSL template. The contents of the XSL template window will be inserted into an XSL stylesheet that contains the identity template.
[URL](http://localhost:62773/csp/visualizer/service/xslt/)
Request-type: POST
Content-type: multipart-form
CONTENT1:
CONTENT2:
Note: CONTENT1 contains the entire XSL template, no escaping or single quotes required. CONTENT2 should contain the entire CCD document, no escaping required.
The DevTools UI is developed using React. We initially tried to serve the DevTools UI through a web application in IRIS, but it appeared incompatible with Next.js.
While testing, we had to deal with CORS issues due to the cross-origin request. In order to get through the pre-flight request, we have the web application set to Unauthenticated and added %ALL to the Role.
Due to the use of two docker containers, we were unable to package the solution with ZPM.
Using VSCode and ObjectScript plugin, IRIS for Health Community Edition in Docker, IRIS openapi API, NextJs and React.
Any collaboration is very welcome! Fork and send Pull requests!