* WIP add initial test running code * Importing test modules fix breaking tests 1 * Clean up pom dependencies, move execution before context load * Re-org and document cli pom * Set more dependencies to compile. Print entries in classpath * Try running via internal Executors * Clearer class names + provide clear output * Clean up test summarys and output + update class regex to junit default * Refactor to avoid having to extend class * Trim down dependency additions in pom + javadoc * Add the rest of the modules to TestExecutor * Parse additional params for classname filter and module * Add experimental JUnit 4 runner in case JUnit 5 hates us. * Include JUnit4 tests via adapters. Need to refactor for better naming. * Update LoadIgTests to JUnit 5 * Gentle refactor, print execution time * Remove unnecessary interface, organize packages * Remove cached resources (need to fix this) * Allow setting of txCache globally for tests + fix r5 tests * Mild refactor of TestExecutor + Reorder test execution * Add fhirTestCasesDirectory to testConfig + get r4 tests working * Add dstu2016may and dstu3 tests * Add dstu2 tests * Add convertors tests * Refactor resourceNameForFile + don't copy existing files * Get all txCache directories centrally and allow all to live in same dir * Start extracting txCache resources * Finish extracting txCache resources * Fix failing GraphQLEngineTest * Try an mvn install for the pull pipeline * Clean and refactor * Test coverage * Fix GraphQLEngineTests for local jar run * More refactoring, more tests * Add bare test for TxCacheResourceExtractor Co-authored-by: dotasek <david.otasek@smilecdr.com>
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.
CI/CD
All integration and delivery done on Azure pipelines. Azure project can be viewed here.
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 |
Building this Project
This project uses Apache Maven to build. To build:
mvn install
Note that unit tests will run, but are currently not set to fail the build as they do not all pass. This is being worked on.
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.
IDE Setup
This project uses the Lombok java library, which requires some configuration to work correctly with an IDE. Currently, the project works in Intellij and Eclipse, and you can find instructions on how to configure Lombok for each here.
Publishing Binaries
An brief overview of our publishing process is here.
For more detailed instructions on cutting a release, please read the wiki
Download
All binaries are published on OSS Sonatype. You 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)'
Note that the built binary validator is released through GitHub releases.
Maintenance
This project is maintained by Grahame Grieve, James Agnew and Mark Iantorno on behalf of the FHIR community.