Releases: hapifhir/hapi-fhir
HAPI FHIR 5.5.0 (Quasar)
New quarter, new release!
Highlights
- A new operation
$delete-expungeimproves performance and usability of delete and expunge. - A new operation
$reindexhas been added, which is now the preferred way to reindex data. $mark-all-resources-for-reindexing is now deprecated. - Many bugs in conditional update/create were fixed, especially where contained resources were involved.
- Added a new interceptor to force JPA to use offset mode for searches.
- MDM Expanding interceptor now looks both ways before returning expanded data, allowing it to be more flexible.
- Support added for uploading ICD-10-CM (US Edition) and LOINC 2.70.
- A new interceptor has been added, ValidationMessageSuppressingInterceptor, for suppressing specific validation messages.
- The
$evaluate-measureoperation is now partition-aware.
As always, the full change set can be seen on the website. Below are more bugfixes and additions which made it into this release:
- Settings have been added to the JPA Server DaoConfig to enable/disable various individual kinds of scheduled tasks.
- Fixed a bug with match urls that contained the plus symbol.
- Fixed several bugs with contained resources during transactions.
- Support has been added to the JPA server for
_includeand_revincludewhere the
value is a qualified star, e.g._include=Observation:*. - A new interceptor ValidationMessageSuppressingInterceptor has been added. This interceptor can be used
to selectively suppress specific vaLidation messages. - A new config option has been added to the DaoConfig that causes generated SQL statements to
account for potential null values in HAPI FHIR JPA date index rows. Nulls are no longer ever
used in this table after HAPI FHIR 5.3.0, but legacy data may still have nulls. - A new setting has been added to the DaoConfig that allows the maximum number of
_includeand_revincluderesources to be added to a single search page result. - A new DaoConfig setting called Mass Ingestion Mode has been added. This mode enables rapid
data ingestion by skipping a number of unnecessary checks during backloading. - A new Pointcut has been added that is invoked when a new Bulk Export is initiated.
- Bulk import batch jobs are now activated in a local scheduled task, making bulk import
jobs better able to take advantage of large clusters - Added new feature to enable versioned tags.
- Fixed many CVEs caused by out of date dependencies.
HAPI FHIR 5.4.1 (Pangolin)
Release tag for HAPI FHIR 5.4.1 (Pangolin)
HAPI FHIR 5.4.0 (Pangolin)
It's time for another release of HAPI FHIR.
HAPI FHIR 5.4.0 (Codename: Pangolin) brings a whole bunch of great new features, bugfixes, and more.
Highlights of this release are shown below. See the Changelog for a complete list. There will be a live Webinar (recording available on-demand afterward) on May 20 2021. Details available here: https://www.smilecdr.com/quarterly-product-release-webinar-reminder
Security Changes
- A resource exhaustion vulnerability in the HAPI FHIR JPA server was corrected. Learn more about CVE-2021-32053 here. Thanks to Zachary Minneker at Security Innovation for reporting!
General Client/Server/Parser Changes
- HAPI FHIR now supports OpenAPI (aka Swagger). See here for an example.
- Normalization and Standardization interceptors have been added. These can be used to normalize selected data fields according to configurable rules prior to storage.
- Contained resources can now reference to containing resources, as allowed in the FHIR Specification. Previously this direction was blocked and contained resources with no incoming reference from the containing resource were automatically stripped, as this style was not permitted in early versions of the FHIR specification. In addition, contained resource order will now be preserved during parsing round-trips.
- New interceptors have been added that can automatically map terminology in response resources using HAPI FHIR terminology services, returning configurable canonical terminology in the response payload.
- Support for the FHIR
Prefer: handling=lenientheader has been added via an optional interceptor. - The automatic CapabiityStatement generation has been completely rewritten for R4+ servers. CapabilityStatements now include many new data elements, such as supported profiles, revincludes, resource level operations, and more.
- Token Search Parameters in GraphQL expressions are now correctly parsed.
JDK Changes
- HAPI FHIR now supports JDK 16, and this version is used to execute our CI test suite in order to ensure continued compliance. The minimum Java version required in order to use HAPI FHIR remains JDK 8. This may be updated to JDK 11 in an upcoming release, as many of the libraries we use are now either contemplating or have already completed an upgrade to JDK 11 as a minimum requirement.
JPA Server General Changes
- Support for the
_listsearch parameter has been added to the JPA server - Support for the
:containedmodifier has been added, allowing searches to select from data in contained resources found within the resource being searches. Note that this feature is disabled by default and must be enabled if needed. - The JPA server now supports persisting FHIR extensions in
Resource.meta - Bulk Export now supports Patient- and Group- based exports
- Auto-created reference target placeholder resources now include an extension and an identifier if one is known
- A profiling effort led to improvements in performance when processing large FHIR Transaction bundles
- Resources imported into a repository via NPM Packages will now attempt to preserve the resource ID defined in the source package.
JPA Server Performance Changes
- Searches with only a single search parameter now generate a more streamlined SQL expression (one unnecessary JOIN was removed), improving performance.
- A new header
X-Upsert-Extistence-Check(note there is a typo in the name, this will be addressed in the next release of HAPI FHIR! Please be aware if you are planning on using this feature) can be added which avoids existence checks when using client assigned IDs to create new records. This can speed up performance.
JPA Server Partitioning Changes
- Resource Reindexing is now supported on partitioned servers.
- FHIR Bulk Export is now supported on partitioned servers (note that this operation is run at the system level and includes data from all partitions. Future enhancements may allow for more nuanced exports on partitioned servers.)
Terminology Server and Validation Changes
- ValueSet expansion can now optionally return codes in the same hierarchy that they are defined in their source CodeSystem.
- Validation can now be configured to return only a warning when a code is found from a CodeSystem that is unknown/unavailable to the validator.
JPA Server MDM Enhancements
- A new search mdm-expansion syntax has been added to FHIR searches on MDM-enabled servers. For example
Observation?patient:mdm=Patient/123can be used to search for Observation resources belonging toPatient/123but also to other MDM-linked patient records. - MDM matching rules can now use FHIRPath expressions as selection criteria.
- A new syntax has been added to Group Bulk Export that allows MDM matching to be used to include matches in the group to export.
- MDM matching rules can now match on extensions, checking the URL and Value for equality.
- A new NUMERIC matcher has been added, allowing matching using numeric values.
HAPI FHIR 5.3.3 (Odyssey)
This is a point release that contains the following backported fixes from the upcoing 5.4.0 release:
- When using the JPA server in partitioned mode with a partition interceptor, the interceptor is now called even for
resource types that can not be placed in a non-default partition (e.g. SearchParameter, CodeSystem, etc.). The interceptor
may return null or default in this case, but can include a non-null partition date if needed. - A NullPointerException was corrected when indexing resources containing an indexed Period field that
had a start but not an end defined.
HAPI FHIR 5.3.0 (Odyssey)
It's time for our next quarterly relese: HAPI FHIR 5.3.0 (Codename: Odyssey).
Major New Features:
- Hibernate Search has been upgraded to 6.0, meaning we now full support ElasticSearch 6.x and 7.x
- Master Data Management: The HAPI FHIR EMPI has been renamed to Master Data Management (hapi-fhir-mdm) as its scope has broadened from just Patient/Practitioner to covering and matching any kind of resources
- MDM "survivorship rules" configuration have been added
- Support for the Clinical Quality Language (CQL)
$evaluate-measureoperation has been added to the JPA server - FHIR Repository Validation: A new validation tool that allows declarative validation rules to be specified on a JPA server
- Normalized Quantity Searches: Search indexes of type quantity can now be stored and searched using normalized values when the value is UCUM coded, allowing (for example) a search for "gt1L" to match a value of "1200mL"
- HAPI FHIR is now being CI tested using JDK15, with supported JDKs now ranging from 1.8 through 15
- Support for LOINC 2.69
- Support has been added for automatically versioning references in the JPA server
- JPA partitioning support now includes support for searching 2 or more partitions
As always, see the changelog for a full list of changes.
Thanks to everyone who contributed to this release!
HAPI FHIR 5.2.0 (Numbat)
It's November, so it's time for our next quarterly relese: HAPI FHIR 5.2.0 (Codename: Numbat).
Security Notice:
- Security Issue CVE-2020-24301: An XSS vulnerability has been fixed in the testpage overlay project. This issue affects only the testpage overlay module, but users of this module should upgrade immediately. Note that this issue is addressed in HAPI FHIR 5.1.0 (as well as 5.2.0+) so users who have already upgraded to HAPI FHIR 5.1.0 do not need to upgrade again to resolve this issue. It is listed here as we experienced a delay in obtaining a CVE number.
Major New Features:
-
The JPA SearchBuilder (which turns FHIR searches into SQL statements to be executed by the database) has been completely rewritten to not use Hibernate. This allows for much more efficient SQL to be generated in some cases. For some specific queries on a very large test repository running on Postgresql this new search builder performed 10x faster. Note that this new module is enabled by default in HAPI FHIR 5.2.0 but can be disabled via a DaoConfig setting. It is disabled by default in Smile CDR 2020.11.R01 but will be enabled by default in the next major release.
-
Support for RDF Turtle encoding has been added, finally bringing native support for the 3rd official FHIR encoding to HAPI FHIR. This support was contributed by Josh Collins and Eric Prud'hommeaux of the company Janeiro Digital. We greatly appreciate the contribution! To see an example of the RDF encoding: hapi.fhir.org/baseR4/Patient?_format=rdf
Terminology Enhancements:
-
Integration with remote terminology services has been improved so that required bindings to closed valuesets are no longer delegated to the remote terminology server. This improves performance since there is no need for remote services in this case.
-
The
CodeSystem/$validate-codeoperation has been implemented for R4+ JPA servers. -
The JPA Terminology Server is now version aware, meaning that multiple versions of a single CodeSystem can now be stored in a single FHIR terminology server repository. ValueSet expansion, CodeSystem lookup, and ConceptMap translation are all now fully version aware. Note that implementing support for fully versioned terminology is mostly complete, but some validation operations may still not work. This should be completed by our next major release.
-
ValueSet expansion with filtering (e.g. using the
filterparameter on the$expandoperation) has now been implemented in such a way that it fully supports filtering on pre-expanded ValueSets, including using offsets and counts. This is a major improvement for people building picker UIs leveraging the $expand operation.
EMPI Improvements:
-
Identifier matchers have been added, providing native FHIR support for matching on resource identifiers
-
The
$empi-clearoperation performance has been greatly improved
Other Notable Improvements:
-
A new combined "delete+expunge" mode has been added to the DELETE operation in the JPA server. This mode deletes resources and expunges (physically deletes) them in a single fast operation. Note that with this mode must be enabled, and completely bypasses interceptor hooks notifying registered listeners that data is being deletes and expunged. It is several orders of magnitude faster when deleting large sets of data, and is generally intended for test scenarios.
-
The Package Server module now supports installing non-conformance resources from packages.
-
The
_typeFilterparameter has been implemented for the $bulk-export module.
As always, see the changelog for a full list of changes.
Thanks to everyone who contributed to this release!
HAPI FHIR 5.1.0 (Manticore)
It's August, so it's time for our next quarterly release: HAPI FHIR 5.1.0 (Codename: Manticore).
Notable changes in this release include:
-
An XSS vulnerability has been fixed in the testpage overlay project. This issue affects only the testpage overlay module, but users of this module should upgrade immediately. A CVE number for this issue has been requested and will be updated here when it is assigned.
-
Support for the new FHIR NPM Package spec has been added. Currently this support is limited to JPA servers, and support should be added to plain servers in the next release. Packages can be imported on startup, either by supplying NPM files locally or by downloading them automatically from an NPM server such as packages.fhir.org. Package contents (the StructureDefinition, CodeSystem, ValueSet, etc. resources in the package) can be installed into the repository, or can be stored in a dedicated set of tables and made available to the validator without actually being installed in the repository.
-
Support for the
Observation/$lastnoperation has been implemented thanks to a partnership with LHNCBC/NIH. This operation uses ElasticSearch to support querying for recent Observations over a set of test codes for one or more patients in a very efficient way. -
The FHIR PATCH operation now supports FHIRPatch in addition to the already supported XML and JSON Patch specs. FHIRPatch is a very expressive mechanism for creating patches and can be used to supply very precise patches.
-
A new operatiion called
$diffhas been added. Diff can be used too generate a FHIRPatch diff between two resrouces, or between two versions of the same resource. For example: http://hapi.fhir.org/baseR4/Patient/example/$diff -
Several performance problems and occasional failures in the resource expunge operation have been corrected
-
The memory use for Subscription delivery queues has been reduced
-
Snapshot generaton now uses a single snapshot generator codebase for generating snapshots across all versions of FHIR. This makes ongoing maintenance much easier and fixes a number of version specific bugs.
-
The maximum cascade depth for cascading deletes is now configurable.
-
AuthorizationInterceptor can now fully authorize GraphQL calls, including allowing/blocking individual resources returned by the graph.
-
GraphQL now supports POST form (thanks to Kholilul Islam!)
-
The LOINC uploader now supports LOINC 2.68
-
A new batch job framework has been introduced, leveraging the Spring Batch library. Initial jobs to use this new framework are the Bulk Export and EMPI modules, but eventually all long processes will be adapted to use this new framework.
-
TThe HAPI FHIR built-in Terminology Server now includes support for validating UCUM (units of measure), BCP-13 (mimetypes), ISO 4217 (currencies), ISO 3166 (countries), and USPS State Codes.
-
It is now possible to disable referential integrity for delete operations for speciific reference paths.
-
A regression has been fixed that significantly degraded validation performance in the JPA server for validation of large numbers of resources.
-
Unit tests have been migrated to JUnit 5. This change has no user visible impacts, but will help us continue to improve ongoing maintenance of our test suites.
As always, see the changelog for a full list of changes.
Thanks to everyone who contributed to this release!
HAPI FHIR 5.0.2 (Labrador)
- This release corrects a snapshot dependency on org.hl7.fhir.core that was accidentally left in HAPI FHIR 5.0.1.
- The default setting for the partition mode's Include Hashes in Search Indexes setting was incorrectly set to true in HAPI FHIR 5.0.0 and has now been changed to false, as this is a more sensible default. Note that this wil affect existing systems that are trying this feature out. A manual reindex of data may be required.
HAPI FHIR 5.0.1 (Labrador)
This point release corrects two issues:
- An inefficient SQL query was created when repository searches were performed containing multiple chained search parameters. See HAPI FHIR Issue 1842 for information on this issue.
- Two new columns were added to the RDBMS repository index table supporting date based searches. A database index was missed, resulting in slow performance for some date based searches.
Users of the JPA server are advised to upgrade to this point release instead of 5.0.0. Other users are not affected.
HAPI FHIR 5.0.0 (Labrador)
It's time for another release of HAPI FHIR!
This release brings some good stuff, including:
-
A new feature called Partitioning has been added to the JPA server. This can be used to implement multitenancy, as well as other partitioned/segregated/sharded use cases.
-
The IValidationSupport interface has been completely redesigned for better flexibility, extensibility and to enable future use cases. Any existing implementations of this interface will need to be adjusted.
-
Many improvements to performance have been implemented
-
FHIR R5 draft definitions have been updated to the latest FHIR 4.2.0 (Preview 2) definitions
-
The Gson JSON parser has been replaced with Jackson for better flexibility and performance
As always, see the changelog for a full list of changes.
Thanks to everyone who contributed to this release!