Initial Release
A UI and API for testing CCDA documents against the IRIS XPath Utilities and C-CDA to SDA XSLT code base.
Chi Nguyen-Rettig (LEAD North)
Nathan Holt (LEAD North)
To create a user-friendly front-end to organize several testing utilities and methods used to facility CCD transform development
Creates /csp/visualizer/service web app in IRIS with endpoints for XPath testing, XSLT testing, and CCD to SDA transform testing.
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:
$ docker-compose up -d --build
The management portal is available at:
Management portal
Login: _system/SYS
The API is available on localhost:62773/csp/visusalier/service
The UI is served from a second container and is available after docker startup at:
Sample Data
Sample C-CDAs from the SyntheaMass open-source data set have been included in the testing/sample data
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 Visualizer.postman_collection.json
in Postman to run tests.
Data set up in the Postman import is also from Synthea.
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!