All Projects → CMSgov → qpp-conversion-tool

CMSgov / qpp-conversion-tool

Licence: CC0-1.0 license
Conversion tool for QPP, particularly focused on QRDA3 -> QPP, built by Flexion.

Programming Languages

java
68154 projects - #9 most used programming language
HCL
1544 projects
Gherkin
971 projects
Smarty
1635 projects
shell
77523 projects
javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to qpp-conversion-tool

NextLevelSeven
A fast and simple library for Health Level Seven (HL7) v2 messages.
Stars: ✭ 20 (-37.5%)
Mutual labels:  hl7
HL7
PHP library for Parsing, Generation and Sending HL7 v2 messages
Stars: ✭ 135 (+321.88%)
Mutual labels:  hl7
cql
Clincal Quality Language Specification
Stars: ✭ 16 (-50%)
Mutual labels:  hl7
php-fhir
Tools for consuming data from a FHIR server with PHP
Stars: ✭ 87 (+171.88%)
Mutual labels:  hl7
hl7v2-fhir-converter
Converts HL7 v2 Messages to FHIR Resources
Stars: ✭ 40 (+25%)
Mutual labels:  hl7
nodengine-hl7
HL7 parser for nodengine
Stars: ✭ 23 (-28.12%)
Mutual labels:  hl7
CyFHIR
A Neo4j Plugin for Handling HL7 FHIR Data
Stars: ✭ 39 (+21.88%)
Mutual labels:  hl7
Machete
Cut through the Crap, with Machete, a text parser, object mapper, and query engine.
Stars: ✭ 39 (+21.88%)
Mutual labels:  hl7
HL7-dotnetcore
Lightweight HL7 C# parser and composer compatible with .Net Core and .Net Standard
Stars: ✭ 150 (+368.75%)
Mutual labels:  hl7
HL7-Powershell-Module
HL7 PowerShell Module
Stars: ✭ 18 (-43.75%)
Mutual labels:  hl7
smolder
HL7 Apache Spark Datasource
Stars: ✭ 33 (+3.13%)
Mutual labels:  hl7
fhirpath
FHIRPath implementation in Python.
Stars: ✭ 25 (-21.87%)
Mutual labels:  hl7
hospitalrun-core
All elements shared between Frontend and Backend, including CouchDB design-documents and schemas.
Stars: ✭ 36 (+12.5%)
Mutual labels:  hl7
firely-net-common
The official Firely .NET SDK for HL7 FHIR - Contains common code for all FHIR versions
Stars: ✭ 31 (-3.12%)
Mutual labels:  hl7
fhir-works-on-aws-persistence-ddb
A DynamoDB implementation of the FHIR Works on AWS framework, enabling users to complete CRUD operations on FHIR resources
Stars: ✭ 24 (-25%)
Mutual labels:  hl7
filter
⏳ Provide filtering, sanitizing, and conversion of Golang data. 提供对Golang数据的过滤,净化,转换。
Stars: ✭ 53 (+65.63%)
Mutual labels:  data-conversion
json-to-multicsv
Split a JSON file with hierarchical data to multiple CSV files
Stars: ✭ 23 (-28.12%)
Mutual labels:  data-conversion

qpp-conversion-tool

Installation Instructions

Prerequisite Software

Before you can use the qpp-conversion-tool application, you must install and configure the following products on your machine:

  • Git and/or the GitHub application.

    GitHub's Guide to Installing Git is a good source of information.

  • Java Runtime (version >= 11).

    It is important that you have the right version of java on your path.

    # When you run 'java -version', you should get 11. For example:
    java -version
    java version "11"
    ...

    Sometimes the Java Runtime installer doesn't update your path. So you must do it manually. Alternatively, download and install the Java Development Kit (version >= 1.8). The JDK is better at updating your path.

  • Maven (version >= 3.8.4).

    Maven is used to build the application, manage dependencies, and run tests. After you unzip the Maven archive, you need to add the bin directory to your path, as described the Maven installation instructions.

    # When you run 'mvn -v', you should get 3.8.4. For example:
    mvn -v
    Apache Maven 3.8.4
    ...
  • Docker.

    Docker is not required but is an alternative to the above requirements if all you need is to run the converter.

Getting the Converter

Use the GitHub application or the command line to clone this repository.

# Clone the GitHub repository.
git clone https://github.com/CMSgov/qpp-conversion-tool.git

# Go to the qpp-conversion-tool directory.
cd ./qpp-conversion-tool

Running the Converter

ReST API via Docker

The Conversion Tool can be executed through a ReST API. Using the ReST API has the added benefit of having the QPP validated if you so choose. For the examples below, make sure you're in the qpp-conversion-tool directory.

Starting the API Endpoint

# Build the Docker image and run the container using docker-compose.
docker-compose -f ./docker-compose.test.yaml up

Invoking the Endpoint

curl -X POST \
  http://localhost:3000 \
  -H 'cache-control: no-cache' \
  -H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
  -F file=@./qrda-files/valid-QRDA-III-latest.xml

The response body will either be the QPP JSON on success or error JSON on an error. The HTTP Status will be 201 Created on success or 422 Unprocessable entity on an error.

Submission Validation

While the converter will validate the format of the QRDA-III file and some basic semantics, deeper semantic checks are only available if you enable the public submission validation API. If any errors are found by the public submission validation API, error JSON will be returned from the ReST API like normal.

To enable the public submission validation API, modify the .env file with VALIDATION_URL=https://qpp.cms.gov/api/submissions/public/validate-submission and then restart the ReST API endpoint.

Ensure the environment variable CPC_END_DATE is set to a valid date, in the format YYYY-MM-DD, or a validation error may be thrown.

Command Line

For the examples below, make sure you're in the qpp-conversion-tool directory.

Note: If you are using Windows, replace ./convert.sh in the examples below with convert.bat.

Convert a File

# Try the convert script. If the JAR isn't built yet, the script will build it for you first.
./convert.sh ./qrda-files/valid-QRDA-III-latest.xml

If a QRDA-III XML file is successfully converted, a QPP JSON file is created in the current working directory. The file name will have the same name as the input file but with the extension .qpp.json. For example, valid-QRDA-III-latest.qpp.json.

When an invalid file is provided to the converter, an error JSON file is created in the current working directory. The file name will be the same as the input file but with the extension .err.json. For example, not-a-QRDA-III-file.err.json. This error file contains descriptions and XPaths that help in identifying the errors in the provided input file.

View all commands with convert.sh.

Sample files

Sample QRDA-III files that cover all of the eCQM, PI, and IA measures as well as other scenarios can be found in the sample-files folder.

Want to Contribute?

Want to file a bug or contribute some code? Read up on our guidelines for contributing and developer instructions.

Public Domain

This project is in the public domain within the United States, and copyright and related rights in the work worldwide are waived through the CC0 1.0 Universal public domain dedication.

All contributions to this project will be released under the CC0 dedication. By submitting a pull request, you are agreeing to comply with this waiver of copyright interest.

See the formal LICENSE file.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].