5a4049e0e2
## Validator Changes Note: This validator release is accompanied by a new release of tx.fhir.org, and earlier versions of the validator will not perform validation correctly for some valuesets and languages. This is in effect a mandatory upgrade * Major **Breaking** change: test multi-lanugage support on the terminology service API, and make many fixes. ** This release also includes full support for supplements providing designations and properties * Add support for -install operation to install packages and generate snapshots while at it (support simplifier packages in sushi) * Add support for ```lang-transform extract``` and ```-lang-transform inject``` to the validator (start of multi-lingual implementation support) * Add support for -tx-tests to validator * Change settings file to fhir-settings.json in .fhir, instead of fhir-tools-setting.ini (see [here](https://confluence.hl7.org/display/FHIR/Using+fhir-settings.json) for documentation) * Add provisional support for running without a network: -no-network. Beware: this is not fully tested at this point * Warning not error when the code system isn't known validating questionnaires * Fix up loading of IG bundles * Work around issue with R5 path in extensions pack * Fix issue with SearchParameter validation throwing an exception if no expressions are valid ## Other code changes * Code to support translation functionality * Partial fix for problem parsing maps from previous versions * Fix Code System rendering for supplements, and when there's 1..2 display translations * Remove spurious header from ConceptMap rendering * Return ID part correctly when FhirPath expression result is converted to string * fix problem with leaf rendering in profile driven renderer * Fix R4B tests to be based on R4B * fix index error validating HierarchicalTable * fix NPE in requirements renderer * Fix NPE in code generator * Rework package cache manager - add testing mode * Add link to questionnaire rendering questionnaireResponse + Fix access violation rendering questionnaire * Fix bugs generating narratives * Defining the existence of R6 * i18n framework for HTML generation in renderers - step #1 * Re-org validation testing to be more memory efficient * Better error handling loading resources * Restore broken R4 loading * Add new R5 fields to R4/R5 conversion for ValueSet * minor changes two HumanName.getNameAsSingleString (missed family name) ***NO_CI*** |
||
---|---|---|
.github | ||
.mvn/wrapper | ||
org.hl7.fhir.convertors | ||
org.hl7.fhir.core.generator | ||
org.hl7.fhir.dstu2 | ||
org.hl7.fhir.dstu3 | ||
org.hl7.fhir.dstu2016may | ||
org.hl7.fhir.r4 | ||
org.hl7.fhir.r4b | ||
org.hl7.fhir.r5 | ||
org.hl7.fhir.report | ||
org.hl7.fhir.utilities | ||
org.hl7.fhir.validation | ||
org.hl7.fhir.validation.cli | ||
.editorconfig | ||
.gitignore | ||
LICENSE.txt | ||
README.md | ||
RELEASE_NOTES.md | ||
RELEASE_NOTES.template.md | ||
cache-target-directory-task.yml | ||
checkstyle.xml | ||
codecov.yml | ||
compare updated code.bat | ||
master-branch-parallel-pipeline.yml | ||
master-branch-pipeline.yml | ||
mvnw | ||
mvnw.cmd | ||
pom.xml | ||
pull-request-pipeline-parameterized.yml | ||
pull-request-pipeline.yml | ||
r4 test resources.lnk | ||
release-branch-pipeline.yml | ||
validation test resources.lnk |
README.md
HAPI FHIR - HL7 FHIR Core Artifacts
CI Status (master) |
---|
This is the java core object handling code, with utilities (including validator), for the FHIR specification. included in this repo:
- org.fhir.fhir.utilities: Shared code used by all the other projects - including the internationalization code
- org.fhir.fhir.r5: Object models and utilities for R5 candidate (will change regularly as new R5 candidates are released)
- org.fhir.fhir.r4b: Object models and utilities for R4B
- org.fhir.fhir.r4: Object models and utilities for R4
- org.fhir.fhir.dstu3: Object models and utilities for STU3
- org.fhir.fhir.dstu2: Object models and utilities for STU2
- org.fhir.fhir.dstu2016may: Object models and utilities for an early STU3 candidate still used by some implementers
- org.fhir.fhir.convertors: Code to convert between versions, and other version independence code - uses all the above projects
- org.fhir.fhir.validation: The FHIR Java validator (note: based on R5 internally, but validates all the above versions)
- org.fhir.fhir.validation.cli: Holder project for releasing the FHIR validator as as single fat jar (will be removed in the future)
This code is used in all HAPI servers and clients, and also is the HL7 maintained FHIR Validator. In addition, this is the core code for the HL7 maintained IG publisher and FHIR main build publisher. As such, this code is considered an authoritatively correct implementation of the core FHIR specification that it implements.
Building this Project
Prerequisites
This project uses Java (minumum version 11), Apache Maven, and Lombok to build. You can find detailed instructions on setting up this project in your IDE here.
Build Commands
To build and add artifacts to your local Maven repository:
mvn install
To skip unit tests:
mvn -Dmaven.test.skip install
To clean and rebuild the terminology server caches:
clean
mvn clean -Dfhir.txcache.clean=true
rebuild
mvn test -Dfhir.txcache.rebuild=true
The source contains cached terminology server responses for testing. If the expected responses have changed in any way,
this cache should be cleaned and rebuilt with the above so that subsequent mvn test
calls will have the most current
responses cached.
To build only the validator_cli jar locally:
mvn clean package -Dmaven.test.skip=true --projects org.hl7.fhir.validation.cli --no-transfer-progress
cp org.hl7.fhir.validation.cli/target/org.hl7.fhir.validation.cli*-SNAPSHOT.jar ./validator_cli.jar
This will produce ./validator_cli.jar
in the project root directory.
Releases
The built binary for the FHIR command-line validator is released through GitHub releases and can be downloaded directly here. For instructions on using this validator visit the FHIR Validator Confluence page.
All build artifacts are published on OSS Sonatype.
Current Versions
Project | Current Release | Latest SNAPSHOT |
---|---|---|
org.hl7.fhir.validation.cli | ||
org.hl7.fhir.validation | ||
org.hl7.fhir.dstu2 | ||
org.hl7.fhir.dstu2016may | ||
org.hl7.fhir.dstu3 | ||
org.hl7.fhir.r4 | ||
org.hl7.fhir.r5 |
To use these artifacts in your project will need to add the proper dependency to your pom.xml
file, or your build.gradle.kts
file.
pom.xml
<repositories>
<repository>
<id>oss-snapshot</id>
<url>https://oss.sonatype.org/content/repositories/snapshots/</url>
</repository>
<repository>
<id>oss-releases</id>
<url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
</repository>
</repositories>
build.gradle.kts
repositories {
maven {
url = uri("https://oss.sonatype.org/content/repositories/snapshots")
}
maven {
url = uri("https://oss.sonatype.org/service/local/staging/deploy/maven2/")
}
}
After adding the necessary repositories, you can include the libraries as follows:
org.hl7.fhir.validation.cli
Maven
<dependency>
<groupId>ca.uhn.hapi.fhir</groupId>
<artifactId>org.hl7.fhir.validation.cli</artifactId>
<version>(latest version)</version>
</dependency>
Gradle
compile group: 'ca.uhn.hapi.fhir', name: 'org.hl7.fhir.validation.cli', version: '(latest version)'
org.hl7.fhir.dstu2
Maven
<dependency>
<groupId>ca.uhn.hapi.fhir</groupId>
<artifactId>hapi-fhir-structures-dstu2</artifactId>
<version>(latest version)</version>
</dependency>
Gradle
compile group: 'ca.uhn.hapi.fhir', name: 'hapi-fhir-structures-dstu2', version: '(latest version)'
org.hl7.fhir.dstu3
Maven
<dependency>
<groupId>ca.uhn.hapi.fhir</groupId>
<artifactId>hapi-fhir-structures-dstu3</artifactId>
<version>(latest version)</version>
</dependency>
Gradle
compile group: 'ca.uhn.hapi.fhir', name: 'hapi-fhir-structures-dstu3', version: '(latest version)'
org.hl7.fhir.r4
Maven
<dependency>
<groupId>ca.uhn.hapi.fhir</groupId>
<artifactId>hapi-fhir-structures-r4</artifactId>
<version>(latest version)</version>
</dependency>
Gradle
compile group: 'ca.uhn.hapi.fhir', name: 'hapi-fhir-structures-r4', version: '(latest version)'
org.hl7.fhir.r5
Maven
<dependency>
<groupId>ca.uhn.hapi.fhir</groupId>
<artifactId>hapi-fhir-structures-r5</artifactId>
<version>(latest version)</version>
</dependency>
Gradle
compile group: 'ca.uhn.hapi.fhir', name: 'hapi-fhir-structures-r5', version: '(latest version)'
CI/CD
All integration and delivery done on Azure pipelines. Azure project can be viewed here.
- Pull Request Pipeline is automatically run for every Pull Request to ensure that the project can be built via maven. [Azure Pipeline] [source]
- Master Branch Pipeline is automatically run whenever code is merged to the master branch and builds the SNAPSHOT binaries distributed to OSSRH [Azure Pipeline][source]
- Release Branch Pipeline is run manually whenever a release is ready to be made. It builds the release binaries, distributes them to artifact repositories and sends release notifications. [Azure Pipeline][source]
A brief overview of our publishing process is here.
For more detailed instructions on cutting a release, please read the wiki
Maintenance
Have you found an issue? Do you have a feature request? Great! Submit it here and we'll try to fix it as soon as possible.
This project is maintained by Grahame Grieve, James Agnew, David Otasek and Mark Iantorno on behalf of the FHIR community.