Released: 2024-12-18
Codename: (Despina)
As of 7.6.1, versions of FHIR below R5 now consider the Device
resource's patient
Search Parameter to be in the Patient Compartment. The following features are affected:
_revInclude=*
$everything
operation$everything
operationPreviously, there were various shims in the code that permitted similar behaviour in these features. Those shims have been removed. The only remaining component is Advanced Compartment Authorization, which can still be used to add other Search Parameters into a given compartment.
The
|
||
#6538 |
In HAPI FHIR 8.0.0, validation processing has been significantly improved thanks to ticket #6508. This enhancement has been partially backported to the 7.6.x release line in order to provide partial improvement prior to the release of HAPI FHIR 8.0.0. |
|
#6538 |
In HAPI FHIR 8.0.0, transaction processing has been significantly improved thanks to ticket #6460. This enhancement has been partially backported to the 7.6.x release line in order to provide partial improvement prior to the release of HAPI FHIR 8.0.0. |
|
#6424 |
Changed VersionSpecificWorkerContextWrapper to never expire StructureDefinition entries in the cache, which is needed because the validator makes assumptions about StructureDefinitions never changing. |
|
#6502 |
Support ReferenceParam in addition to UriParam for |
Released: 2024-11-15
Codename: (Despina)
DQM $care-gaps
and $evaluate-measure
will convert parameters periodStart
and periodEnd
according to a timezone supplied by the client, not the server timezone as it was previously. Clients can leverage this functionality by passing in a new Timezone
header (ex: America/Denver
). If nothing is supplied, it will default to UTC.
Certain $care-gaps
operation parameters have been dropped, because they are not used or likely to be implemented
topic
practitioner
is now callable via subject
parameterorganization
program
measureIdentifier
now is available to resolve measure resources for evaluationnonDocument
is a new optional parameter that defaults to false
which returns standard document
bundle for $care-gaps
.
If true
, this will return summarized subject bundle with only detectedIssue.The subject
parameter of the Questionnaire/$populate
operation has been changed to expect a Reference
as specified in the SDC IG.
The version of a few dependencies have been bumped to more recent versions (dependent HAPI modules listed in brackets):
|
||
#6182 |
A new Pointcut called |
|
#6184 |
Added a configuration setting for the TTL of HTTP connections to IRestfulClientFactory. The following implementations have been updated to respect this new setting: 1. ApacheRestfulClientFactory 2. OkHttpRestfulClientFactory 3. HapiFhirCliRestfulClientFactory Thanks to Alex Kopp and Alex Cote for the contribution! |
|
#6210 |
Batch instance ID and chunk ID have been added to the logging context so that they can be automatically added to batch-related messages in the log. |
|
#6263 |
The method |
|
#6313 |
The |
|
#6325 |
A new configuration option, |
|
#6357 |
Upgrade the Clinical Reasoning module to the latest release of 3.13.0. This update comes with several changes and feature enhancements to CPG and dQM clinical-reasoning operations. Please review associated ticket and upgrade.md for detailed list of changes. |
|
#6359 |
Remote Terminology validation has been enhanced to support output parameter |
|
#6366 |
Add plumbing for combining IConsentServices with different vote tally strategies |
|
#6370 |
When using the FHIR |
|
#6375 |
A new experimental JPA setting has been added to JpaStorageSettings which causes searches for token SearchParameters to include a predicate on the HASH_IDENTITY column even if it is not needed because other hashes are in use. |
|
#6445 |
Add Multimap versions of the search() methods to Repository to support queries like |
|
#6253 |
A cache has been added to the validation services layer which results in improved validation performance. Thanks to Max Bureck for the contribution! |
|
#6323 |
A synchronization choke point was removed from the model object initialization code, reducing the risk of multi-thread contention. |
|
#6345 |
Date searches using equality would perform badly as the query planner does not know that our LOW_VALUE columns are always < HIGH_VALUE columns, and HIGH_VALUE is always > LOW_VALUE columns. These queries have been fixed to account for this. |
|
#6489 |
Change the migrator to avoid table locks when adding an index. This allows systems to continue running during upgrade. |
|
#6261 |
Upgrading to Jakarta had caused a problem with the version of java-simple-mail that was in use. This has been updated to be conformant with the Jakarta Mail APIs. Thanks to Thomas Papke(@thopap) for the contribution! |
|
#6341 |
The CachingValidationSupport cache for concept translations will now keep up to 500000 translations instead of the previous 5000. This will be made configurable in a future release. |
|
Contained resources which arrive without assigned IDs are now assigned GUIDs, as opposed to monotonically increasing numeric IDs. This avoids a whole class of issues related to processing order and collisions. |
||
#6206 |
A resource leak during database migration on Oracle could cause a failure |
|
#6216 |
Previously, searches combining the |
|
#6218 |
Previously, when disabling the 'Enforce Referential Integrity on Write' setting, referential integrity was still partially enforced when posting a resource with an invalid reference. This has now been fixed. |
|
#6231 |
The PatientIdPartitionInterceptor could on rare occasion select the incorrect partition for a resource. This has been corrected. In order for the wrong partition to be selected, the following three things need to be true: 1) there are multiple values of a patient compartment for a resource (see https://hl7.org/fhir/R4/compartmentdefinition-patient.html) 2) a patient compartment value is a non-Patient reference 3) the search parameter of the incorrect value needs to come alphabetically before the search parameter of the correct value. For example, if a QuestionnaireResponse has subject Patient/123 and author Organization/456, then since 'author' appears ahead of 'subject' alphabetically it would incorrectly determine the partition. The fix changed the partition selection so that it now only matches on Patient references. |
|
#6262 |
Previously, when a |
|
#6285 |
Updated the Reindex Batch2 job to allow for an additional step that will check to ensure that no pending 'reindex' work is needed. This was done to prevent a bug in which value set expansion would not return all the existing CodeSystem Concepts after a reindex call, due to some of the concepts being deferred to future job runs.
As such, |
|
#6290 |
Previously, a specific migration task was using the |
|
#6305 |
Previously, when having StorageSettings#getIndexMissingFields() == IndexEnabledEnum.DISABLED (default value) and attempting to search with the missing qualifier against a resource type with multiple search parameters of type reference, the returned results would be incorrect. This has been fixed. |
|
#6317 |
Previously, defining a unique combo Search Parameter with the DateTime component and submitting multiple resources with the same dateTime element (e.g. Observation.effectiveDateTime) resulted in duplicate resource creation. This has been fixed. |
|
#6339 |
Fixed a bug in migrations when using Postgres when using the non-default schema. If a migration attempted to drop a primary key, the generated SQL would only ever target the |
|
#6359 |
After upgrading org.hl7.fhir.core from 6.1.2.2 to 6.3.11, the $validate-code operation stopped returning an error for invalid codes using remote terminology. This has been fixed. |
|
#6365 |
A crash while executing a search with named |
|
#6372 |
Searches that combined full-text searching (i.e. |
|
Fixed a rare bug in the JSON Parser, wherein client-assigned contained resource IDs could collide with server-assigned contained IDs. For example if a resource had a client-assigned contained ID of |
||
#6419 |
Previously, on Postgres, the |
|
#6420 |
Previously, when the |
|
#6422 |
Previously, since 7.4.4 the validation issue detail codes were not translated correctly for Remote Terminology validateCode calls. The detail code used was |
|
#6440 |
Previously, if an |
|
#6451 |
Previously, activating |
|
#6467 |
Fixed an incompatibility between Hibernate Search and Lucene versions that caused ValueSet expansion to fail when Hibernate Search was configured to use Lucene. |
|
#6283 |
Hibernate Search Fulltext fields which were unused have been removed from indexing. This will reduce storage usage in Lucene and Elasticsearch. The fields that were removed are: |
Released: 2024-10-21
Codename: (Copernicus)
#6372 |
Searches that combined full-text searching (i.e. |
Released: 2024-10-17
Codename: (Copernicus)
#6359 |
Remote Terminology validation has been enhanced to support output parameter |
|
#6359 |
After upgrading org.hl7.fhir.core from 6.1.2.2 to 6.3.11, the $validate-code operation stopped returning an error for invalid codes using remote terminology. This has been fixed. |
|
#6363 |
This release updates the org.hl7.fhir core dependency up to 6.3.23, in order to patch CVE-2024-45294. |
Released: 2024-09-30
Codename: (Copernicus)
#6317 |
Previously, defining a unique combo Search Parameter with the DateTime component and submitting multiple resources with the same dateTime element (e.g. Observation.effectiveDateTime) resulted in duplicate resource creation. This has been fixed. |
Released: 2024-09-20
Codename: (Copernicus)
#6216 |
Previously, searches combining the |
Released: 2024-08-15
Codename: (Copernicus)
As of Derby 17, in order to support JDK17, the jars must be built from source, as the default package supports JDK21. Due to a high severity vulnerability in older versions, and a lack of appetite to host a forked packaged version of Derby, the Derby JARs have been removed from the HAPI-FHIR distribution. For those who wish to continue to use Derby, you may still do so, but the following jars must be manually added to your classpath:
HFJ_SPIDX
tables, which include sp_name
or res_type
columns.sp_name
and res_type
columns to nullable on HFJ_SPIDX
tables may be completed with errors, as changing a column to nullable when a column is a part of an index can lead to errors on SQL Server (MSSQL).sp_name
and res_type
nullability.To update columns to nullable in such a scenario, execute steps below:
sp_name
or res_type
columns should be dropped:DROP INDEX IDX_SP_TOKEN_REST_TYPE_SP_NAME ON HFJ_SPIDX_TOKEN;
sp_name
and res_type
columns should be updated:ALTER TABLE HFJ_SPIDX_TOKEN ALTER COLUMN RES_TYPE varchar(100) NULL;
ALTER TABLE HFJ_SPIDX_TOKEN ALTER COLUMN SP_NAME varchar(100) NULL;
CREATE INDEX IDX_SP_TOKEN_MISSING_OPTIMIZED ON HFJ_SPIDX_TOKEN (HASH_IDENTITY, SP_MISSING, RES_ID, PARTITION_ID);
#5871 |
When encoding resources in summary mode, it is now possible to override the built-in list of summary elements, by adding additional elements and/or by removing elements from the default list. This can be done for an individual parser instance, or globally using the ParserOptions object available from the FhirContext. |
|
#5914 |
Update Clinical Reasoning version to v3.6.0 |
|
#5919 |
Added the entire WorkChunk to the StepExecutionDetails of a Batch Job. |
|
#5935 |
Remote Terminology Service can now return subproperty fields for a CodeSystem lookup operation. This can be done in DSTU3 and R4. R5 is not yet implemented. |
|
#5938 |
Generated IPS documents will now include a bundle profile declaration. |
|
#5945 |
A new utility method has been added to |
|
#5952 |
Previously, since hapi-fhir 7.0, when retrieving the consecutive pages of a Bundle resource search operation using a client with read permissions for Bundle resources, the request would fail with a 403 Forbidden error. This has been fixed. |
|
#5968 |
Added support for filtering on CodeSystem defined properties when using database (hibernate) filtering. The following ValueSet filters can be used to filter on CodeSystem defined properties: EQUAL, EXISTS, IN, NOTIN |
|
#5980 |
When processing a batch job, OpenTelemetry spans named |
|
#6003 |
When performing a search for a resource which uses versioned canonical references to another resource (e.g. a QuestionnaireResponse with a questionnaire reference of |
|
#6008 |
Previously, when partitioning is enabled, the reindex job could only be run against one partition. The reindex job parameters can now accept a list of partitions or all partitions (list of RequestPartitionId or RequestPartitionId.allPartitions). In the future, the functionality can be extended to other bulk operations run via batch2 jobs (e.g. $delete-expunge, $export). |
|
#6010 |
When populated, the search score field will now be included in the entries of a response Bundle. |
|
#6014 |
When uploading an invalid CodeSystem to the JPA server containing duplicate codes, the server responded with an unhelpful error message referring to a database constraint error. This has been fixed so that a more informative error message is returned. |
|
#6031 |
Subscriptions now support the evaluation use of FhirPath criteria and the use of the variables %current and %previous. Thanks to Jens Villadsen (@jkiddo) for the contribution! |
|
#6038 |
Allow overriding RestfulServer's contextPath determination by overriding IServerAddressStrategy. Thanks to Alex Kopp (@alexrkopp) for the contribution! |
|
#6046 |
Added support for |
|
#6060 |
The server-generated CapabilityStatement will now use the server name defined by |
|
#6070 |
Added paging support for |
|
#6073 |
Previously, if a unique or non-unique combo SeaerchParameter was defined, it would not be used by searches if any parameter contained multiple OR clauses (e.g. |
|
#6079 |
It is now possible to save TermConceptDesignations with values over 2,000 characters. |
|
#6148 |
Added the target resource partitionId and partitionDate to the resourceLink table. |
|
#5658 |
The MDM candidate search will now be skipped if data for required search parameters is not present. Thanks to Adrienne Sox for the pull request! |
|
#5885 |
Indexing for non-unique combo Search Parameters has been improved, using a new hash-based index that should perform significantly better in many circumstances. |
|
#5885 |
Indexing for unique combo Search Parameters has been modified so that a hash value is now stored. This hash value is not yet used in searching or enforcing uniqueness, but will be in the future in order to reduce the space required to store the indexes and the current size limitation on unique indexes. |
|
#5885 |
When unique and non-unique combo parameters are in use on a server, FHIR Transaction and Reindex Job performance has been optimized by pre-fetching all existing combo index rows for a large batch of resources in a single database operation. This should yield a meaningful performance improvement on such systems. |
|
#5937 |
A new configuration option, |
|
#5999 |
The in-memory search matcher module (used for Subscriptions and other places where a resource needs to be evaluated against an existing pool of search parameter expressions) has been optimized so that it doesn't evaluate unnecessary search parameters while analyzing the resource. Thanks to Ahmet Melih Aydoğdu for the pull request! |
|
#6099 |
Database migrations that add or drop an index no longer lock tables when running on Azure Sql Server. |
|
#5887 |
Extract Subscription Settings from Storage Settings so they can be managed independently. |
|
#5939 |
This brings the org.hl7.fhir.core dependency to version 6.3.11. |
|
#6023 |
Previously, CDS hook extensions needed to be encoded as strings. This has been changed so that extensions are now properly provided as inline JSON. |
|
#6140 |
An prototype interface to abstract data access across different types of FHIR repositories (e.g. remote REST, local JPA) has been added to the |
|
#6179 |
The $reindex operation could potentially initiate a reindex job without any urls provided in the parameters. We now internally generate a list of urls out of all the supported resource types and attempt to reindex found resources of each type separately. As a result, each reindex (batch2) job chunk will be always associated with a url. |
|
#3986 |
Removed the validation error of the |
|
#4556 |
The CSS file used by the OpenApiInterceptor to serve up the Swagger UI component inadvertently blocked the authorization button evem when it was wanted. This has been fixed. Thanks Jesse Bonzo for the contribution! |
|
#4837 |
In the case where a resource was serialized, deserialized, copied and reserialized it resulted in duplication of contained resources. This has been corrected. |
|
#5559 |
The IPS narrative generator previously created narratives for each |
|
#5867 |
Previously, when adding multiple resources and defining a golden resource using MDM, the golden resource's tags were removed. This has been fixed |
|
#5877 |
Previously, updating a tokenParam with a value greater than 200 characters would raise a SQLException. This issue has been fixed. |
|
#5900 |
Remove unnecessary call to deleteAllSearchParams when $expunge is called on an already-deleted resource. |
|
#5913 |
Bulk export was failing with a HAPI-2222 error with the persistence module configured for R5. This has been fixed. |
|
#5925 |
An UnsupportedOperationException occurred when validating R5 MHD bundles using the HAPI FHIR validator. Thanks to Renaud Subiger for contributing a fix! |
|
#5926 |
A regression in HAPI FHIR 6.4.0 meant that ther JPA server schema migrator ran all tasks even when the database was initially empty and the schema was being initialized by script. This did not produce any incorrect results, but did impact the amount of time taken to initialize an empty database. This has been corrected. |
|
#5926 |
A number of columns in the JPA schema use primitive types (and therefore can never have a null value) but aren't marked as non-null. |
|
#5942 |
Delete expunge targeted to resources (not everything) that were created with IfNoneExists URL followed by recreation of said resources was failing with HAPI-0550 due to the fact that the corresponding search url records were not being deleted. This has been fixed. |
|
#5956 |
Fixed a regression that prevented rebuilding golden resources with mdm survivorship rules when resources have non-numeric fhir ids in a partitioned system. |
|
#6077 |
Previously, when a MDM rule tried to perform a phonetic match by HumanName (eg. Patient.name), a |
|
#5959 |
An overly verbose log in the JPA server about deleting stale searches has been reduced to DEBUG level. |
|
#5960 |
Previously, queries with chained would fail to sort correctly with lucene and full text searches enabled. This has been fixed. |
|
#5962 |
The default use of the Accept-Charset header has been removed as its use is deprecated. Thanks to Jens Villadsen for the suggestion and pull request! |
|
#5971 |
The JSON Parser failed to parse alternate names (e.g. |
|
#5973 |
Previously, subscription criteria on R4 backport subscriptions were not validated by the SubscriptionValidatingInterceptor. This has been corrected. |
|
#5981 |
Batch2WorkChunkEntity poll_attempt count is a nullable field, but was incorrectly declared as a primitive. This has been fixed. |
|
#5985 |
Fixed an issue where MDM json links were unserializable due to using the IResourcePersistenceId objects. This has been fixed, and IResourcePersistenceId objects will not be serialized or returned to users. |
|
#5988 |
Previously, when creating a custom SearchParameter for a document Bundle that references an entry resource through the composition (e.g. Bundle.entry[0].resource.as(Composition).subject.resolve().as(Patient).identifier), the search using that parameter would not return the matching document Bundle resources, despite the fullUrl of the entry matching the composite reference. This problem does not exist if the reference match can be done against the entry id. However an id is not required so the match should be done against the fullUrl. This issue has been fixed. |
|
#5933 |
Bulk export was failing with a HAPI-1775 error with the persistence module configured for DSTU3. This has been fixed. |
|
#5993 |
Corrected a regression in valueset expansion. If a valueset with a non-standard |
|
#5994 |
Fixed a bug in the MdmSurvivorshipSvcImpl that caused resourceType/id (as opposed to just id) to be passed on to the IIdHelperService. |
|
#5006 |
Expanding a ValueSet on a property using a filter operator that is not supported (ISA, NOTISA, etc) would throw an exception and fail expansion. This has been fixed. |
|
#6000 |
In an MDM enabled system with multi-delete enabled, deleting both the final source resource and it's linked golden resource at the same time results in an error being thrown. This has been fixed. |
|
#6007 |
Previously, HAPI-FHIR schedulers were automatically suffixing the Quartz scheduler's |
|
#6021 |
The updated Spring Boot was not compatible with jetty version 12.0.3. Jetty has been updated to 12.0.9, fixing this issue. |
|
#6024 |
Fixed a bug in search where requesting a count with HSearch indexing and FilterParameter enabled and using the _filter parameter would result in inaccurate results being returned. This happened because the count query would use an incorrect set of parameters to find the count, and the regular search when then try and ensure its results matched the count query (which it couldn't because it had different parameters). |
|
#6033 |
Previously, attempting to store resources with common identifies but different partitions would. This has been fixed by adding a new configuration key defaulting to false to allow storing resources with duplicate identifiers across partitions. This new feature can be activated by calling PartitionSettings.setConditionalCreateDuplicateIdentifiersEnabled() |
|
#6034 |
Two indexes introduced in HAPI-FHIR 6.6.0, |
|
#6036 |
The maximum length of |
|
#6040 |
The |
|
#6044 |
Fixed an issue where doing a cache refresh with advanced Hibernate Search enabled would result in an infinite loop of cache refresh -> search for StructureDefinition -> cache refresh, etc |
|
#6046 |
Previously, using |
|
#6049 |
Rolled back org.apache.derby dependency to one that supports JREs 11 - 17. |
|
#6049 |
Fixed a bug in SchemaMigrator that would considered skippable migration tasks as 'failed' migrations. |
|
#6058 |
Added |
|
#6061 |
The latest migration for HFJ_RES_SEARCH_URL introduced in 6033 does not fully respect dry-run. This has been fixed. |
|
#6063 |
Removing deprecated thymeleaf syntax from existing templates, so as to avoid deprecation warnings in logs. |
|
#6074 |
Before being processed, subscriptions would be read out of the database all at once. This lead to massive memory consumption if there were a lot of them. This has now been changed to use batching as a means of mitigating this problem. |
|
#6083 |
Address care-gaps bug for handling missing improvement notation validation, and group level measure scoring definition. Bug fix for evaluate-measure subject-list where contained List resource was setting invalid references. Bumping to latest version of clinical reasoning 3.8. |
|
#6094 |
Fix for regression of searches for canonical uris using a version (eg: http://example.com|1.2.3). |
|
#6097 |
Fixed a bug where booting the JPA Server Starter would get a duplicate bean error. This has been corrected. Thanks to @subigre for the fix! |
|
#6111 |
Previously, the package installer wouldn't create a composite SearchParameter resource if the SearchParameter resource didn't have an expression element at the root level. This has now been fixed by making SearchParameter validation in package installer consistent with the DAO level validations. |
|
#6094 |
Searching or conditional creating/updating with a timestamp with an offset containing '+' fails with HAPI-1883. For example: 'Observation?date=2024-07-08T20:47:12.123+03:30' This has been fixed. |
|
#6122 |
Previously, executing the '$validate' operation on a resource instance could result in an HTTP 400 Bad Request instead of an HTTP 200 OK response with a list of validation issues. This has been fixed. |
|
#6123 |
|
|
#6124 |
Previously, when retrieving a resource which may contain other resources, such as a document Bundle, if a ConsentService's willSeeResource returned AUTHORIZED or REJECT on this parent resource, the willSeeResource was still being called for the child resources. This has now been fixed so that if a consent service returns AUTHORIZED or REJECT for a parent resource, willSeeResource is not called for the child resources. |
|
#6083 |
A bug with $everything operation was discovered when trying to search using hibernate search, this change makes all $everything operation rely on database search until hibernate search fully supports the operation. |
|
#6134 |
Fixed a regression in 7.2.0 which caused systems using |
|
#6142 |
Previously, if you upgraded from any older HAPI version to 6.6.0 or later, the |
|
#6146 |
Previously, on MSSQL, two resources with IDs that are identical except for case (ex: Patient1 vs. patient1) would be considered to have the same ID because the database collation is case insensitive (SQL_Latin1_General_CP1_CI_AS). Among other things, this would manifest itself when trying to delete and re-create one of the resources. This has been fixed with a migration step that makes the collation on the resource ID case sensitive (SQL_Latin1_General_CP1_CS_AS). |
|
#6150 |
Previously, the resource $validate operation would return a 404 when the associated profile uses a ValueSet that has multiple includes referencing Remote Terminology CodeSystem resources. This has been fixed to return a 200 with issues instead. |
|
#6153 |
Previously, if you created a resource with some conditional url, but then submitted a transaction bundle that a) updated the resource to not match the condition anymore and b) create a resource with the (same) condition a unique index violation would result. This has been fixed. |
|
#6156 |
Index IDX_IDXCMBTOKNU_HASHC on table HFJ_IDX_CMB_TOK_NU's migration is now marked as online (concurrent). |
|
#6159 |
Previously, |
|
When JPA servers are configured to always require a new database transaction when switching partitions, the server will now correctly identify the correct partition for FHIR transaction operations, and fail the operation if multiple partitions would be required. |
||
#6179 |
Previously, the $reindex operation would fail when using a custom partitioning interceptor which decides the partition based on the resource type in the request. This has been fixed, such that we avoid retrieving the resource type from the request, rather we use the urls provided as parameters to the operation to determine the partitions. |
|
#6188 |
Previously, a Subscription not marked as a cross-partition subscription could listen to incoming resources from other partitions. This issue is fixed. |
|
#6208 |
A regression was temporarily introduced which caused searches by |
|
#6056 |
The Derby JARs have been removed from this release. The older versions have multiple high-severity vulnerabilities against them, and the newer versions force usage of Java 21, which HAPI-FHIR does not yet support. If you wish to continue to use derby, you will have to provide the |
Released: 2024-08-25
Codename: (Borealis)
#6070 |
Added paging support for |
|
#6216 |
Previously, searches combining the |
Released: 2024-07-19
Codename: (Borealis)
#6046 |
Added support for |
|
#6099 |
Database migrations that add or drop an index no longer lock tables when running on Azure Sql Server. |
|
#6024 |
Fixed a bug in search where requesting a count with HSearch indexing and FilterParameter enabled and using the _filter parameter would result in inaccurate results being returned. This happened because the count query would use an incorrect set of parameters to find the count, and the regular search when then try and ensure its results matched the count query (which it couldn't because it had different parameters). |
|
#6044 |
Fixed an issue where doing a cache refresh with advanced Hibernate Search enabled would result in an infinite loop of cache refresh -> search for StructureDefinition -> cache refresh, etc |
|
#6046 |
Previously, using |
|
#6083 |
A bug with $everything operation was discovered when trying to search using hibernate search, this change makes all $everything operation rely on database search until hibernate search fully supports the operation. |
|
#6134 |
Fixed a regression in 7.2.0 which caused systems using |
Released: 2024-05-30
Codename: (Borealis)
#5960 |
Previously, queries with chained would fail to sort correctly with lucene and full text searches enabled. This has been fixed. |
Released: 2024-05-18
Codename: (Borealis)
The HFJ_FORCED_ID table is no longer used. Users may delete it after upgrading to 7.2 to free database storage space.
The version of a few dependencies have been bumped to the latest versions (dependent HAPI modules listed in brackets):
|
||
#5610 |
Before, message broker always used |
|
#5682 |
Several enhancements have been made to the International Patient Summary generator based on feedback from implementers:
|
|
#5692 |
The JPA WebSocket delivery mechanism now supports the |
|
#5712 |
The SearchNarrowingInterceptor can now optionally be configured to also apply URL narrowing to conditional URLs used by conditional create/update/delete/patch operations, both as raw HTTP transactions as well as within FHIR transaction Bundles. |
|
#5745 |
Added another state to the Batch2 work chunk state machine: |
|
#5750 |
Update to the 3.2.0 release of the Clinical Reasoning Module. This includes the following changes:
|
|
#5767 |
Added new |
|
#5777 |
Change the implementation of CDS on FHIR to use the Auto Prefetch functionality and to no longer pass the fhirServer from the request into the dataEndpoint parameter of $apply. |
|
#5784 |
Add support to _sort for chained |
|
#5800 |
A new setting in JpaStorageSettings enforces a maximum file size for Bulk Export output files, as well as work chunks creating during processing. This setting has a default value of 100 MB. |
|
#5816 |
The ConceptMap/$translate operation will include targets with an equivalence code of |
|
#5818 |
Added another state to the Batch2 work chunk state machine: |
|
#5845 |
Added a new pointcut: STORAGE_PRE_INITIATE_BULK_EXPORT. This pointcut is meant to be called explicitly before STORAGE_INITIATE_BULK_EXPORT, so that parameter manipulation that needs to be done before permission checks (currently done using STORAGE_INITIATE_BULK_EXPORT) can safely be done without risk of affecting permission checks/ authorization. |
|
#5850 |
Add additional Clinical Reasoning operations $collect-data and $data-requirements to HAPI-FHIR to expand capability for clinical reasoning module users. These operations will assist users in identifying data requirements for evaluating a measure, and what data was used for a measure evaluation |
|
#5855 |
If using an OpenTelemetry agent, a span is now generated for each interceptor method call. The span is named as 'hapifhir.interceptor' and it has the following attributes about the interceptor: 'hapifhir.interceptor.pointcut_name','hapifhir.interceptor.class_name', 'hapifhir.interceptor.method_name' |
|
#5861 |
Enhance RuleBuilder code to support multiple instance IDs. |
|
#5890 |
As part of the migration from LOB, provided the capability to force persisting data to LOB columns. The default behavior is to not persist in lob columns. |
|
#5899 |
The |
|
#5748 |
In the JPA server, several database columns related to Batch2 jobs and searching have been reworked so that they no will longer use LOB datatypes going forward. This is a significant advantage on Postgresql databases as it removes a significant use of the inefficient |
|
#5838 |
Migration of remaining database columns still using the LOB datatypes. This change effectively cuts all ties with the inefficient |
|
#5682 |
The IPS $summary generation API has been overhauled to make it more flexible for future use cases. Specifically, the section registry has been removed and folded into the generation strategy, and support has been added for non-JPA sources of data. This is a breaking change to the API, and implementers will need to update their code. This updated API incorporates community feedback, and should now be considered a stable API for IPS generation. |
|
#5814 |
Extracted methods out of ResourceProviderFactory into ObservableSupplierSet so that functionality can be used by other services. Unit tests revealed a cleanup bug in MdmProviderLoader that is fixed in this MR. |
|
#5817 |
The HFJ_FORCED_ID table is no longer used. |
|
#3761 |
Fixed behaviour of the |
|
#5088 |
Previously, the fullUrl for resources in _history bundles was not generated correctly when using a client provided id. The same problem started to happen for the resources with server generated ids more recently (after 6.9.10). This has now been fixed |
|
#5110 |
When processing a FHIR transaction in the JPA server, an identifier containing a system that has no value but has an extension present could cause a NullPointerException. This has been corrected. |
|
#5667 |
Previously, creating an XML encoded FHIR resource with a decimal element that has a leading plus sign value would result in |
|
#5668 |
Added support for sorting on a chained |
|
#5671 |
Avoid lock contention by refreshing SearchParameter cache in a new transaction. |
|
#5672 |
Previously, when performing a FHIR search using a non-chained relative reference (returns entire resource) with a server assigned id, it ignores the invalid resourceType in the parameter value and proceeds with the id based lookup. e.g. GET |
|
#5682 |
The IPS Generator will no longer replace resource IDs with placeholder IDs in the resulting bundle by default, although this can be overridden in the generation strategy object. |
|
#5682 |
The BundleBuilder utility class will no longer include the |
|
#5690 |
Previously, a DELETE on a specific URL search string would always attempt to delete no matter the number of resolved resources. This has been fixed by adding a storage setting to enforce a threshold for resolved resources, above which the DELETE operation will fail to execute with HAPI-2496. |
|
#5701 |
Previously, invoking search URLs containing ':identifier' would result in a HAPI-1250 error complaining about an invalid resource type. This has been fixed by returning a clearer error message for this specific condition: HAPI-2498. |
|
#5707 |
Previously, with validation active, when a user POSTed a resource with a meta profile with a non-existent StructureDefinition URL, then POSTed the StructureDefinition, POSTing the same or another patient with that same meta profile URL would still fail with a VALIDATION_VAL_PROFILE_UNKNOWN_NOT_POLICY validation error. This has been fixed. |
|
#5771 |
Previously, a Patch operation would fail when adding a complex extension, i.e. an extension comprised of another extension. This issue has been fixed. |
|
#5720 |
System-level and Type-level History operations on the JPA server (i.e. |
|
#5722 |
An incorrect migration script caused a failure when upgrading to HAPI FHIR 7.0.0 on PostgreSQL if the database was not in the |
|
#5725 |
The recommended constructor was not present on hibernate dialects provided by HAPI FHIR, leading to warnings during startup, and failures in some cases. This has been corrected. Thanks to GitHub user @pano-smals for the contribution! |
|
#5730 |
Previously, using the FhirTerser to process an Extension with an Enumeration would fail. This has been fixed. |
|
#5731 |
Previously, transactions that had entries with |
|
#5734 |
A scheduled job to clean up the Search URL table used to enforce uniqueness of conditional create/update jobs was created as a local job and not a clustered job. This has been fixed. |
|
#5735 |
Previously, complex _has then chain then _has searches would fail to return results when expected (ex: 'Practitioner?_has:ExplanationOfBenefit:care-team:coverage.payor._has:List:item:_id=list1') This has been fixed. |
|
#5742 |
Fixed behaviour of the _language query parameter. Now it is picked up as search parameter in the resource provider and filters accordingly. Thanks to Jens Villadsen (@jkiddo) for the contribution! |
|
#5746 |
Batch2 jobs with reduction steps didn't fire the completion handler. This has been fixed. |
|
#5758 |
Batch2 jobs with reduction steps didn't fire the completion handler with the up-to-date job status. This has been fixed. |
|
#5788 |
Previously, the casing of the X-Request-ID header key was not retained in the corresponding response. This has been fixed. |
|
#5801 |
Support for the _language parameter was added but it was not able to be used by clients of a JPA server because the _language parameter was not added to the resource providers. Additionally, no error message was returned when language support was disabled and a search with _language was performed. This has been fixed. |
|
#5812 |
Previously, the 'planDefinition' resource parameter for the Dstu3 version of PlanDefinition/$apply was incorrectly defined as an R4 resource. This issue has been fixed. |
|
#5820 |
Unifying the code paths for Patient type export and Patient instance export. These paths should be the same, since type is defined by spec, but instance is just 'syntactic sugar' on top of that spec (and so should be the same). |
|
#5824 |
We now avoid a query during reindex and transaction processing that was very slow on Sql Server. |
|
#5828 |
When batch 2 jobs with Reduction steps fail in the final part of the reduction step, this would often leave the job stuck in the FINALIZE state. This has been fixed; the job will now FAIL. |
|
#5842 |
Fixed a bug where an NPE was being thrown when trying to serialize a FHIR fragment (e.g., backboneElement , compound datatype) to a string representation if the fragment contains a |
|
#5856 |
Previously, it was possible to execute the |
|
#5865 |
Moving the Hibernate.Search annotation for text indexing from the lob column to the column added as part of the PostgreSql LOB migration. |
|
#5874 |
Fixed a bug where 'List' would be incorrectly shown as 'ListResource' in the error response for a GET for an invalid resource. |
|
#5877 |
Previously, updating a tokenParam with a value greater than 200 characters would raise a SQLException. This issue has been fixed. |
|
#5886 |
Previously, either updating links on, or deleting one of two patients with non-numeric IDs linked to a golden patient would result in a HAPI-0389 if there were survivorship rules. This issue has been fixed for both the update links and delete cases. |
|
#5888 |
Updated documentation on binary_security_interceptor to specify using |
|
#5893 |
Previously, hapi-fhir-cli: upload-terminology failed with a HAPI-0862 error when uploading LOINC. This has been fixed. |
|
#5898 |
Previously, triggering a |
|
#5904 |
Chained sort would exclude results that did not have resources matching the sort chain. These are now included, and sorted at the end. |
|
#5915 |
Previously, in some edge case scenarios the Bulk Export Rule Applier could accidentally permit a Patient type level bulk export request, even if the calling user only had permissions to a subset of patients. This has been corrected. |
|
#5917 |
Fix chained sorts on strings when using MS Sql |
|
#5960 |
Previously, queries with chained would fail to sort correctly with lucene and full text searches enabled. This has been fixed. |
|
#5717 |
Fixed a potential XSS vulnerability in the HAPI FHIR Testpage Overlay module. |
Released: 2024-08-24
Codename: (Zed)
#6099 |
Database migrations that add or drop an index no longer lock tables when running on Azure Sql Server. |
Released: 2024-03-20
Codename: (Zed)
Released: 2024-03-01
Codename: (Zed)
#5671 |
Avoid lock contention by refreshing SearchParameter cache in a new transaction. |
|
#5722 |
An incorrect migration script caused a failure when upgrading to HAPI FHIR 7.0.0 on PostgreSQL if the database was not in the |
|
#5742 |
Fixed behaviour of the _language query parameter. Now it is picked up as search parameter in the resource provider and filters accordingly. Thanks to Jens Villadsen (@jkiddo) for the contribution! |
|
#5717 |
Fixed a potential XSS vulnerability in the HAPI FHIR Testpage Overlay module. |
Released: 2024-02-18
Codename: (Apollo)
This release contains a large breaking change for authors of interceptors. Internally, HAPI-FHIR has swapped from using javax.*
to jakarta.*
packages. Please see the migration guide for more information. Without manual intervention, the majority of interceptors will fail at runtime unless they are upgraded.
These are the new indexes that will be created:
CREATE INDEX idx_sp_string_hash_nrm_pattern_ops ON public.hfj_spidx_string USING btree (hash_norm_prefix, sp_value_normalized varchar_pattern_ops, res_id, partition_id);
CREATE UNIQUE INDEX idx_sp_uri_hash_identity_pattern_ops ON public.hfj_spidx_uri USING btree (hash_identity, sp_uri varchar_pattern_ops, res_id, partition_id);
The version of a few dependencies have been bumped to the latest versions (dependent HAPI modules listed in brackets):
|
||
#5081 |
Added MDM support for FHIR R5. |
|
#5138 |
A match result map field has been added to the |
|
#5271 |
The error messages returned in an OperationOutcome when validating terminology codes as a part of resource profile validation have been improved. Machine processable location (line/col) information is now available through a pair of dedicated extensions, and error messages such as UCUM parsing issues are now returned to the client (previously they were swallowed and a generic error message was returned). |
|
#5321 |
It is now possible to configure the strictness of concept display name validation using a new flag on the InMemoryTerminologyServerValidationSupport (for non-JPA validation) and JpaStorageSettings (for JPA validation). In addition, the error messages emitted by the validator when a concept display doesn't match have been improved to be much more useful. |
|
#5401 |
Previously, it was only possible to clear a top-level field on a resource using TerserUtil. A new method has been added to TerserUtil to support clearing a value by FhirPath. |
|
#5426 |
Added a new method |
|
#5436 |
Moving clinical reasoning to non-javax dependency for alignment with incoming hapi-fhir changes, bumping CR version and updating impacted classes and services |
|
#5439 |
Added Terminology Troubleshooting Log to support troubleshooting terminology issues. |
|
#5442 |
The ValidatorResourceFetcher will now resolve canonical URL references as well as simple local references. |
|
#5469 |
There is a programmatic filter enabled which skips installation for certain resources based on their status in PackageInstallerSvcImpl. The filter can now be controlled via StorageSettings. |
|
#5476 |
A new method on the IValidationSupport interface called lookupCode(LookupCodeRequest) has been added. This method will replace the existing lookupCode methods, which are now deprecated. |
|
#5480 |
Updated $member-match operation signature to match the latest specification. |
|
#5480 |
Updated Consent storage in $member-match operation. |
|
#5498 |
Added support for |
|
#5502 |
It is now possible to mutate an HTTP response from the CLIENT_RESPONSE Pointcut, and pass this mutated response to downstream processing. |
|
#5527 |
Added a map of |
|
#5536 |
In code: Support lowercase for SQL columns and overridden column type/driver type SQL type string rules |
|
#5558 |
An interceptor was added to block resource updates which would cause the resource to change Patient compartment. Please see JPA Server: Block Resource Updates Changing Patient Compartment for more information. |
|
#5569 |
Upgrade Clinical Reasoning version for latest bug fixes and available operations. Add $evaluate library operation. |
|
#5588 |
Added |
|
#5593 |
Hibernate SQL log filtering capability was added. See Hibernate SQL Log Filtering. |
|
#5377 |
Subscription triggering via the |
|
#5555 |
Previously, resource body content went into one of 2 columns on the HFJ_RES_VER table: RES_TEXT if the size was above a configurable threshold, or RES_TEXT_VC if it was below that threshold. Performance testing has shown that the latter is always faster, and that on Postgres the use of the latter is particularly problematic since it maps to the largeobject table which isn't the recommended way of storing high frequency objects. The configurable threshold is now ignored, and the latter column is always used. Any legacy data in the former column will still be read however. |
|
HAPI FHIR JPA now requires PostgreSQL 10+. Previously Postgres 9.4 was supported but this version has been dropped. |
||
#5444 |
The reindexing and mdm-clear batch jobs now stream results internally for more reliable operation. |
|
#5612 |
The resource dao interface now supports searching for IIdType or full resources. |
|
#5452 |
Swapped from using |
|
#4634 |
Previously, rule builder could not effectively handle Patient Type-Level Exports. It would over-permit requests in certain scenarios. This fix allows for accumulation of ids on a Patient Type-Level Bulk export to enable us to properly match the requested Patient IDs against the users permitted Patient IDs. |
|
#5192 |
Fixed a bug where search Bundles with |
|
#5333 |
A regression was introduced in 2023.08.R01 which caused binary storage prefixes to not be applied to exported binary blobs. This has been fixed. |
|
#5340 |
Updated documentation specifying the correct status (CANCELLED) to set the job status to if a job is cancelled. |
|
#5353 |
Previously, when using revincludes and includes with iterate, while also using revincludes without iterate, the result omitted some resources that should have been included. This issue has now been fixed. |
|
#5445 |
Added warnings when MDM candidate search parameters are not defined and candidate search limit is exceeded. |
|
#5452 |
Previously, the $mdm-query-link operation would return values of field linkCreated and linkUpdated in scientific notation when the last digits are 0. This is now fixed and always returns in standard notation. |
|
#5454 |
Previously, searching with parameter '_total' could influence chunked query resultsets and subsequently, paged results. This is now fixed. |
|
#5460 |
Previously, expanding a ValueSet using hierarchical CodeSystem would fail in different scenarios with a constraint violation exception when codes (term concepts) were being persisted. This is now fixed. |
|
#5465 |
Several fixes to the HAPI FHIR generated OpenAPI schema have been implemented. This means that the spec now validates cleanly. Thanks to Primož Delopst for the contribution! |
|
The hapi-fhir-validation module inadvertently included a mandatory dependency on the Caffeine caching library instead of leaving it to implementors to choose which module to pick. This has been corrected. |
||
#5475 |
Ensure batch2 jpa persistence always targets the default partition. |
|
#5486 |
Previously, testing database migration with cli migrate-database command in dry-run mode would insert in the migration task table. The issue has been fixed. |
|
Previously, it was impossible to find all resources from different partitions for $everything operation with partitioning.cross_partition_reference_mode=ALLOWED_UNQUALIFIED and dao_config.client_id_mode=ANY. It's fixed now |
||
#5496 |
Ensure batch jobs target the default partition for non-gated steps. |
|
The HFQL/SQL engine incorrectly parsed expressions containing a |
||
#5511 |
Previously, when creating an index as a part of a migration, if the index already existed with a different name on Oracle, the migration would fail. This has been fixed so that the create index migration task now recovers with a warning message if the index already exists with a different name. |
|
#5511 |
Previously, CodeSystem |
|
#5523 |
Previously, it was possible to store NPM Packages where the package name's case did not match the package ID's case, e.g. |
|
#5529 |
When using a chained SearchParameter to search within a Bundle as described here, if the |
|
#5537 |
Calling the method getOrCreateContentType in AttachmentUtil on an attachment with no content type would throw exception because contentType is a code not a string. This fixes the function to create an empty code as expected |
|
#5546 |
A database migration added trailing spaces to server-assigned resource ids. This fix removes the bad migration, and adds another migration to fix the errors. |
|
#5547 |
The addition of the indexes |
|
#5547 |
Previously LIKE queries against resources would perform poorly on PostgreSQL if the database locale/collation was not 'C'. This has been resolved by checking hfj_spidx_string.sp_value_normalized and hfj_spidx_uri.sp_uri column collations during migration and if either or both are non C, create a new btree varchar_pattern_ops on the hash values. If both column collations are 'C', do not create any new indexes. |
|
#5553 |
mdm-clear jobs are prone to failing because of deadlocks when running on SQL Server. Such job failures have been mitigated to some extent by increasing the retries on deadlocks. |
|
#5563 |
Previously, certain mdm configuration could lead to duplicate eid identifier entries in golden resources. This has been corrected |
|
#5564 |
Previously, FHIRPath expression evaluation when using the |
|
#5567 |
When updating or reindexing a resource in the JPA server, if duplicate rows are present in the indexing tables, the duplicate rows may fail to be removed. Duplicates are not typically present in these tables, but can happen if an indexing job fails in some circumstances. The impact of these rows not being cleaned up is that resources may appear in search results that they should no longer appear in. |
|
#5589 |
When encoding resources using the RDF parser, placeholder IDs (i.e. resource IDs starting with |
|
#5589 |
When encoding a Bundle, if resources in bundle entries had a value in |
|
$everything queries with MDM expansion were bypassing the partition boundary by return resources outside the partition. Also, POST (as opposed to GET) $everything queries with MDM expansion. The first issue was fixed by reversing the previous changes in 5493 and by filtering source and golden resources by partition ID. The second issue was fixed by correctly capturing the MDM expansion flag in POST $everything queries. |
||
#5602 |
Previously, instance-level Patient Bulk Export batch job would fail if the |
|
#5603 |
Previously, the semantics of |
|
#5606 |
Fixed an issue where executing $trigger-subscription with a search URL criteria on a partitioned Subscription resource would result in the failure to deliver the affected resources. This issue has now been resolved. |
|
#5617 |
Resource UserData RESOURCE_PARTITION_ID was incorrectly being set to null for the default partition. This has been corrected to use RequestPartitionId.defaultPartition() |
|
#5619 |
Previously, when a transaction was posted with a resource that had placeholder references and auto versioning references enabled for that path, if the target resource was included in the Bundle but not modified, the reference was saved with a version number that didn't exist. This has been fixed. |
|
#5621 |
Fixed a deadlock in resource conditional create. |
|
#5623 |
Previously, searches that used more than one chained |
|
#5626 |
Previously, an exception could be thrown by the container when executing a contextClosedEvent on the Scheduler Service. This issue has been fixed. |
|
#5632 |
Previously bulk export operation was returning an empty response when no resources matched the request, which didn't comply with HL7 HAPI IG. This has been corrected. |
|
#5633 |
Smile failed to save resources running on Oracle when installed from 2023-02 or earlier. This has been fixed. |
|
#5634 |
Previously, expanding a 'ValueSet' with no concepts based on system |
|
#5636 |
Previously, the number of threads allocated to the $expunge operation in certain cases could be more than configured, this would cause hundreds of threads to be created and all available database connections to be consumed. This has been fixed. |
|
#5640 |
Clinical reasoning version bump to address reported 'null pointer' error that is encountered when running $evaluate-measure against a measure with an omitted measure.group.population.id |
|
#5642 |
A non-superuser with correct permissions encounters HAPI-0339 when POSTING a transaction Bundle with a PATCH. This has been fixed. |
|
#5644 |
Previously, searching for |
|
#5649 |
Change database upgrade script to avoid holding locks while adding indices. |
|
#5651 |
Previously, conditional creates would fail with HAPI-0929 errors if there was no preceding '?'. This has been fixed. |
|
#5654 |
Fixed a MeasureReport measureScoring bug impacting any measures currently using denominator-exception population will incorrectly calculate the score without following specification. This bug adds an extension to MeasureReport Groups to capture calculated denominator and numerator to bring transparency to the measureScore calculation and act as a dataSource of measureScore instead of behind the scenes calculations. |
|
Previously, the Bulk Import ( |
||
#5659 |
Previously, after registering built-in interceptor |
|
#5680 |
Previously, after registering built-in interceptor |
|
#5700 |
Previously (this release cycle), when you call |
|
The legacy |
||
#5505 |
Removed an incorrect implementation of $member-match. |
Released: 2024-03-01
Codename: (Yucatán)
This release strictly attempts to remove as much usage of the LOB table as possible in postgres. Specifically, in the JPA server, several database columns related to Batch2 jobs and searching have been reworked so that they no will longer use LOB datatypes going forward. This is a significant advantage on Postgresql databases as it removes a significant use of the inefficient pg_largeobject
table, and should yield performance boosts for MSSQL as well.
#5748 |
In the JPA server, several database columns related to Batch2 jobs and searching have been reworked so that they no will longer use LOB datatypes going forward. This is a significant advantage on Postgresql databases as it removes a significant use of the inefficient |
Released: 2024-01-31
Codename: (Zed)
#5621 |
Fixed a deadlock in resource conditional create. |
Released: 2024-01-17
Codename: (Zed)
#5563 |
Previously, certain mdm configuration could lead to duplicate eid identifier entries in golden resources. This has been corrected |