-
Achraf Achkari authoredAchraf Achkari authored
- Instalation Guide of Gazelle Objects Checker
- Table of Content
- Introduction
- Clone Project
- Run Tests (Optional)
- Generate Artifact
- Prepare BBR
- Generate Validator
- Validate CDA
- Extras
- 1. Introduction
- 2. Clone Project
- Cloning gazelle-objects-checker:
- 3. Run Tests (Optional)
- 4. Prepare BBR
- 5. Generate Artifact
- 6. Generate Validator
- 7. Validate CDA
- 8. Extras
- Next released documentation
title: Installation & usage documentation
subtitle: Instalation Guide of Gazelle Objects Checker
authors: Achraf Achkari
date: 19/10/2021
Instalation Guide of Gazelle Objects Checker
Table of Content
-
Introduction
-
Clone Project
-
Run Tests (Optional)
-
Generate Artifact
-
Prepare BBR
-
Generate Validator
-
Validate CDA
-
Extras
1. Introduction
In this guide, we will show how to retrieve the new version of Gazelle Objects Cheker, build it and generate a CDA Validator in a generic case, and client specific case
Requirements:
- JDK 11 or higher
- maven
- git
2. Clone Project
the project is not maintained by the forge anymore.
Gazelle Objects Checker has been migred to Gitlab and package under one module called gazelle-objects-checker
If you worked already with the pervious versions of GOC, the following structure could be familiar to you:
- Archetypes
- generated-validator
- Hl7templates
- gocmodel-jar
- hl7templates-model-jar
- hl7templates-api-jar
- hl7templates-generator-jar
- hl7templates-packager-jar
- Models
- cda-models
- cdaepsos-models
- datatypes-models
- common-models
- infr-model
- model-resources
- nblock-model
- voc-model
In the current version 3.0.0
, the Archtypes
and Hl7templates
modules (with all their sub modules) are packaged in one module Gazelle Objects Checker
The resources models are packaged in a module called UML Models
.
Project | Link Gitlab |
---|---|
Gazelle Objects Checker | https://gitlab.inria.fr/gazelle/library/gazelle-objects-checker |
UML Models | https://gitlab.inria.fr/gazelle/library/uml-models |
Cloning gazelle-objects-checker:
you need to have git
and maven
installed
Run the following command:
> git clone https://gitlab.inria.fr/gazelle/library/gazelle-objects-checker.git
> cd gazelle-objects-checker
Notice: the install of gazelle-objects-checker will be done in the Generate Artifact section.
You can skip tests if you want, but it's not recommand to do.You don't have to install the
uml-models
module, it's already released
3. Run Tests (Optional)
/!\ You can skip this section, but it's recommanded to have all tests passed before continue
GOC provide two types of tests, units tests and integration tests.
The unit tests are environement independents.
The integration tests create some temporary resources (UML Models) using the uml-modes
(no need to have it installed locally, it has been packaged in Nexus)
Run Unit tests
> cd gazelle-objects-checker
> mvn test
Run Integration Tests
> cd gazelle-objects-checker
> mvn verify
If Something went wrong, make sure you have mentioned in maven logs:
- Resources created successfully
- Ressources deleted successfully
If not, try to run the creation resources script CreateResourcesForTest.java
in:
- gazelle-objects-checker/gocmodel-jar/src/main/java/net.ihe.gazelle.goc.script
4. Prepare BBR
BBR is an abreveation of Building Block Repository, a large XML file containing all the fonctional specifications,
that will be used by GOC to generate OCL which is converted finally to a Java validatorrr.
So Basically, the BBR is considered as the main input for GOC
Each client provide his own BBR, and we can retrieve it from the ART-DECOR plateform that belong to this client.
We'll take the example of a BBR in SEQUOIA's ART-DECOR.
To retrieve the project follow the link:
https://gazellecontent.sequoiaproject.org/apps/decor/services/RetrieveProject
Choose project as (BBR) Consolidated CDA (en-US).
Make sure to select the Compiled version.
Then check the Download radio.
Press send button.
Once you download it, you need to adapt it before using it in the next section of generation.
You first need to open it (as it is a very large file, I recommand you to use VSCode as it's optimized for that ) then change ccda- by ccda(version)- for example for version 2.1: ccda21- (without the '.')
NOTICE: A script could be released for this, due to performance issues
5. Generate Artifact
After having all tests working (not mandatory but recommanded) we can now install the gazelle-objects-checker
module and generate the artifact.
The Artifact generated is a .jar
suffixed by jar-with-dependencies
as it's created as a standalone application.
To do we run the following command:
> mvn clean install
or
> mvn clean install -DskipTests=true` (to skip tests)
Alert: even if GOC is in Standalone mode, it's need to have the Archetype installed locally at Runtime
This could be improved in a future release
The Artifcat is generated at gazelle-objects-checker/hl7templates-packager-jar/target/hl7templates-packager-jar-X.X.X-SNAPSHOT-jar-with-dependencies.jar
The X.X.X refers to the current SNAPSHOT version
HINT: if you still have compile errors, you can install just the archetypes module (as it's required at runtime) with:
cd gazelle-objects-checker/archetype/generated-validator mvn clean install
And retrieve GOC Artifact from nexus.
here: GOC Artifact Nexus /!\ to be updated after GOC Release
6. Generate Validator
This section remains to run Gazelle Objects Checker and generate the CDA MBval validator.
Reminder: you need to have at least the Archetype installed as it's used at Runtime
we will need the following parameters to run GOC and generate the validator:
Parameters | Description | Type | Example | is Required |
---|---|---|---|---|
-bbr | Path to the BBR file (provided by ART-DECOR) | XML File | /home/mylap/Documents/bbr-eHDSI-5.0.1.xml | Required |
-out | Path where to generate the validator | Directory | /home/mylap/Documents/CDA-Validators/output-pivot-19-10-2021 | Required |
-mvn | Path to maven binary | Binary (executable) | /opt/apache-maven-3.5.4/bin/mvn | Required |
-serviceName | Validation Service Name | String | Pivot | not Required |
-HL7TEMP_CDACONFFOLDERNAME | HL7template CDA config folder name | cdabasic or cdaepsos | cdaepsos | not Required (default=cdabasic) |
-ignoreTemplateIdRequirements | ignore TemplateId Requirements when generating the constraints (useful for C-CDA validation tools) name | Boolean | VOID, parameter persent ==> it's true, not presenet ==> it's false | not Required (default=false [Not present]) |
-ignoreCdaBasicRequirements | ignore TemplateId Requirements when generating the constraints (useful for C-CDA validation tools) name | Boolean | VOID, parameter persent ==> it's true, not presenet ==> it's false | not Required (default=false [Not present]) |
-versionLabel | VersionLabel that will be used during the generation | String | 2.1 | not Required |
-rootClassName | DEPRECATED:Root class name of generated classes | Path to java class (see example) | net.ihe.gazelle.cdaepsos3.POCDMT000040ClinicalDocument | not Required |
-HL7TEMP_RESOURCES_PATH | DEPRECATED: Path to hl7templates resources folder | String | /home/mylap/Documents/hl7templates-resources | not Required |
Move to the hl7templates-packager-jar/target directory and run the following command with java 11:
Generic command with all possible parameters:
> java -jar hl7templates-packager-jar-X.X.X[-SNAPSHOT]-jar-with-dependencies.jar -bbr <Path_To_BBR>
-out <Path_To_Output> -mvn <Path_To_MVN> [-serviceName <Service_Name>] [-HL7TEMP_CDACONFFOLDERNAME <cdabasic|cdaepsos>]
[-ignoreTemplateIdRequirements <true|false>] [-ignoreCdaBasicRequirements <true|false>]
[-versionLabel <version>] [-rootClassName <Root_ClassName>] [-HL7TEMP_RESOURCES_PATH <Path_To_Resources>]
The [X.X.X] to the current used version of GOC, and it's not present if we retrieve a release from Nexus.
Example with SEQUOIA:
> java -jar hl7templates-packager-jar-3.0.0-SNAPSHOT-jar-with-dependencies.jar -bbr ~/Documents/BBR-SEQUOIA.xml
-out home/mylap/Documents/GOC-OUTPUT/output-sequoia-mu3 -mvn /opt/apache-maven-3.5.4/bin/mvn
-serviceName "HL7 - C-CDA R2.1 - Meaningful Use Stage 3" -ignoreTemplateIdRequirements
-ignoreCdaBasicRequirements -versionLabel 2.1
For logs:
Root folder of the provided output path
cd /home/mylap/Documents/GOC-OUTPUT/logs/logs-[generation_date_time]
More details about logs will be provided later.
7. Validate CDA
Now we are going to use the generated validator.
We will suppose we generated a validator with a BBR containing the following version: epsos5-.
We didn't use the SEQUOIA's BBR because the validator needs a hack (access to SVS) before it could be used
Open the following directory:
> cd <Path_To_Output>/epsos5-validator-app/bin
> chmod +x validator.sh #if on linux
> ./validator.sh -path <Path_to_CDA.xml> -out <Path_To_output_result.xml>
Here is a summary of possible parameters for the validator:
Parameters | Description | Type | Example | is Required |
---|---|---|---|---|
-path | Path to the CDA Document we want to validate | Path to an XML file | /home/mylap/Documents/eHDSI_CDA.xml | Required |
-out | Path to save the generated results | Path to an XML file | ../../results1.xml | Recomanded: If not provided, output is redirected to STDOUT |
-b64 | Provide a path to a document in Base64 | Path to an XML file | /home/mylap/Documents/eHDSI_CDA_B64.xml | Don't use it if you use the -path parameter |
-html | Generate html as output of validation | Boolean | VOID, parameter persent ==> it's true, not presenet ==> it's false | Not Required |
-resources | Full path to the resources folder (XSD schema + valueSets) | Path to directory | /home/mylap/resources/ | Not Required |
Here is an example to validate a document with normal case:
> ./validator.sh -path /home/mylap/eHDSI_CDA.xml -out ../../results1.xml
8. Extras
You can find some previous made documentation here (belong the old GOC, and could propably not reperesent the actual version):
Next released documentation
- Functional description of GOC
- Pepare validator for SEQUOIA
- Use interactif scripts for generation
- New Archetecture used for logging