Releases: microsoft/fhir-server
Releases · microsoft/fhir-server
4.0.511
What's Changed
Azure Health Data Services (SQL)
- Bulk update improvement: Optimize performance by processing records in batches of 1,000 instead of 10,000.
By @apurvabhaleMS in #5124
Common to both Azure API for FHIR and Azure Health Data Services
- Search parameters bug fix: Previously, search parameters that were added that have no current resources impacted (thus not needing to be reindexed) were marked as not supported. Now, after this fix, these search parameters that have no records to process will be enabled, so that they can be properly used as soon as relevant records are loaded. By @jestradaMS in #5132
Other Changes
- Refactored naming: Replace ProcessingJobBytesToRead with more generic ProcessingUnitBytesToRead by @SergeyGaluzo in #5127
Full Changelog: release/4.0.508...release/4.0.511
4.0.508
What's Changed
Azure Health Data Services (SQL)
- Optimized import test for >80K surrogate ids: Improves performance and reliability of bulk import operations by optimizing test scenarios for large volumes of surrogate IDs. By @SergeyGaluzo in #5113
Common to both Azure API for FHIR and Azure Health Data Services
- Fixing an argument null exception from IncludeExpression: Previously, a wildcard search using _revinclude (for example, GET [base]/Patient?_id=123&_revinclude=* ) would result in a 500 InternalServerError. After this improvement, the service processes the request successfully with 200 code, aligning with the same behavior as _include. By @v-isyamauchi-gh in #5108
- Fixed duplicate code value custom search parameter bugs. By @v-isyamauchi-gh in #5024: Previously, the FHIR server would block the creation of a new custom search parameter if it had the same resource type and code as a search parameter already existing on the FHIR server. This could be an issue when trying to upload certain search parameters for implementation guides (such as US Core). This issue has now been fixed, and new custom search parameters that have the same resource type and code as an existing search parameter can be successfully added to the server now, as long as it has a unique URL and expression that is a subset/superset of an existing search parameter on the server. Some examples below of uploading a new custom search parameter that has the same code value as a built-in FHIR search parameter:
- Exact duplicate of same code value, same resource type, same expression: For example, FHIR server already has an inbuilt search parameter with code value "type" for resource type "InsurancePlan" with expression "InsurancePlan.type", and you want to upload a new custom search parameter that is an exact duplicate, with code value "type" for resource type "InsurancePlan" with expression "InsurancePlan.type". Previously, POST did not allow this to be uploaded, while PUT had a bug that would allow for upload but left the search parameter in an unusable state. This has now been fixed, and now both POST and PUT will allow for uploading this exact match duplicate search parameter.
- Same code value, same resource type, different expression: For example, FHIR server already has an inbuilt search parameter with code value "type" for resource type "InsurancePlan" with expression "InsurancePlan.type", and you want to upload a new custom search parameter with code value "type" for resource type "InsurancePlan" with different expression "InsurancePlan.coverage.type". Previously, POST did not allow this to be uploaded, while PUT had a bug that would allow for upload but left the search parameter in an unusable state. This has now been fixed, and this type of upload will not be allowed. Please use a different code value in this case.
- Same code value, different resource type, different expression: For example, FHIR server already has an inbuilt search parameter with code value "type" for resource type "InsurancePlan" with expression "InsurancePlan.type", and you want to upload a new custom search parameter with code value "type" for resource type "ExplanationOfBenefit" (where ExplanationOfBenefit does not already have an inbuilt search parameter with code value "type"), with different expression "ExplanationOfBenefit.type". Previously, adding the new custom search parameter would cause the inbuilt search parameter to not work anymore. This issue has been fixed, and both the inbuilt search parameter and the new search parameter will both be able to work. As always, please remember to reindex after any uploads and changes to search parameters.
Other Changes
- P2V3 S4 2sec 4tasks revert add waits: Reverts timing adjustments in task execution to restore expected behavior and improve test reliability. By @SergeyGaluzo in #5118
Full Changelog: release/4.0.504...release/4.0.508
4.0.504
What's Changed
Breaking Changes & Warnings 🛠
- Bug fix for $status requests with empty parameters: Previously, there were issues when using selectable search parameters SearchParameter/$status request with an unexpected request body returning misleading error messages. When the request body was omitted, 500 (Internal Server Error) was returned due to mishandling of the missing body. This issue is now fixed, and a 400 (Bad Request) will be returned. When the request body was an empty array of parameters, a 200 response was returned, which is misleading, as no search parameter status is actually updated. This issue is now fixed, and a 400 (Bad Request) response will be returned now, as the request requires search parameter URLs whose status need to be updated. By @v-isyamauchi-gh in #5107
Azure Health Data Services (SQL)
- Refactor job hosting logic: Simplifies and modularizes the job hosting infrastructure to improve maintainability and scalability of background operations. By @SergeyGaluzo in #5101
- Set enlistTransaction as false by default: Changes the default behavior to disable transaction enlistment, reducing overhead and improving performance for SQL operations that don’t require distributed transactions. By @apurvabhaleMS in #5106
- Address intermittent "invalid column name SearchParamId" on test: Fixes a flaky test issue caused by timing-related schema mismatches, improving reliability of automated test runs. By @SergeyGaluzo in #5109
Full Changelog: release/4.0.500...release/4.0.504
4.0.500
What's Changed
Azure API for FHIR (Cosmos)
- Add CustomerManagedKeyException catch by @abiisnn in #5102: Previously, provisioning an API for FHIR account with invalid CMK (Customer Managed Key) would return an Unhealthy Status. This has been corrected to return Degraded status.
Azure Health Data Services (SQL)
- MergeResources concurrent call return 429 by @rbans96 in #5029: Adds throttling logic to return HTTP 429 when concurrent MergeResources operations exceed capacity, preventing overload and improving system stability.
- Ability to control $import processing job bytes-to-read by @SergeyGaluzo in #5099: Introduces configuration to control the byte size read per operation in $import jobs, allowing better performance tuning for data ingestion with large resources.
- Removing Reindex folder from SqlServer project by @jestradaMS in #5100: Cleans up the SQL Server project by removing obsolete reindexing code, reflecting architectural changes that moved reindex logic elsewhere.
- Added new data actions for SMART V2 by @apurvabhaleMS in #5098: Add support for new SMART on FHIR v2 data actions.
- Moved setting default byte-to-read value to orchestrator by @SergeyGaluzo in #5105: Refactors $import job configuration by relocating default byte-to-read settings to the orchestrator.
- Handle history records and add Unit tests for bulk update service by @apurvabhaleMS in #5095: Enhances bulk update functionality by properly handling historical records and adding unit tests.
Common to both Azure API for FHIR and Azure Health Data Services
- [Security] Update .NET SDK to latest patch version by @v-rachitsh in #5104
Other Changes
Full Changelog: release/4.0.491...release/4.0.500
4.0.491
What's Changed
Azure Health Data Services (SQL)
- Added support for URI in blob copy tool by @SergeyGaluzo in #5093
- Bug fix: Fix multi parallel reference issue: Previously, transaction bundles that have dynamic references to each other in the same bundle that did not use conditional operations could lead to references becoming invalidated. This issue has been fixed by changing how dynamically generated resource IDs are propagated—avoiding the use of the non-thread-safe ResourceIdProvider and instead passing IDs through inner requests—resolving issues where multiple generated identifiers could conflict or override each other during concurrent execution. By @fhibf in #5083
Full Changelog: release/4.0.489...release/4.0.491
4.0.489
What's Changed
Azure Health Data Services (SQL)
- Handled search parameter sync issues by @rajithaalurims in #5084: Previously, there was a bug where duplicate custom search parameters could be created, and existing custom search parameters could not be updated. This fixes search parameter creation and update issues in some scenarios, with more fixes to follow soon.
- Fix Proxy URL Generation for Bundles by @wsugarman in #5073: Previously, X-Forwarded-Host and X-Forwarded-Prefix headers were not being returned properly for requests within bundles when the FHIR server is behind a proxy. This issue has been fixed, and X-Forwarded-Host and X-Forwarded-Prefix will now be correctly used to return URLs for requests within bundles for FHIR servers behind a proxy.
- Log merge resources call plus by @SergeyGaluzo in #5086: Added enhanced logging for merge resource operations.
- Remove raw resource size computation by @SergeyGaluzo in #5090: Removed raw resource length compute logic
- Emit protocol in bundle metric notification by @rbans96 in #5092
Common to both Azure API for FHIR and Azure Health Data Services
- Updating the error message during conditional reference by @v-rachitsh in #5007: Previously, a conditional reference that returns multiple results would result in the error message "Given conditional reference does not resolve to a resource." This error message has been updated to be more descriptive, and is now changed to "Given conditional reference resolved to multiple resources."
- Removing throws from ValidateParams to make it more permissive by @jestradaMS in #5091: After the reindex infrastructure change introduced earlier (#4942), maximumConcurrency and queryDelayIntervalInMilliseconds parameters are no longer supported as part of the reindex request. We have added ability for the validator to ignore unrecognized parameters rather than blocking requests, to avoid breaking workflows.
New Contributors
- @wsugarman made their first contribution in #5073
Full Changelog: release/4.0.482...release/4.0.489
4.0.482
Changes:
This list of changes was auto generated.
4.0.481
What's Changed
Azure Health Data Services (SQL)
- Add GeoReplicationLagWatchdog for Azure SQL geo-replication by @bcarthic in #5059
- Reindex job refactor to Queue Client by @jestradaMS in #4942
- Make LogRawResourceStats configurable in CleanupEventLogWatchdog by @Copilot in #5069
- Fix not referenced search by @LTA-Thinking in #5072
- Bulk update searches to use MaximumNumberOfResourcesPerQuery by @apurvabhaleMS in #5070
Other Changes
- suppressed the error as it is non-prod code by @v-rachitsh in #5065
- Fix for Import with TokenSearchParam Overflow Should Return 400 by @v-riadbale in #4872
New Contributors
- @bcarthic made their first contribution in #5059
- @v-riadbale made their first contribution in #4872
- @Copilot made their first contribution in #5069
Full Changelog: release/4.0.474...release/4.0.481
4.0.474
What's Changed
Azure API for FHIR (Cosmos)
- Add delegate for ArmClient in Cosmos Init by @mikaelweave in #5062
Azure Health Data Services (SQL)
- Index all token values, regardless of casing by @LTA-Thinking in #5056
Common to both Azure API for FHIR and Azure Health Data Services
- Users/jestrada/searchparameterupdatefix by @jestradaMS in #5061
- Fix cancel Bulk job logic by @apurvabhaleMS in #5064
- Use Debug Logging by @LTA-Thinking in #5054
Full Changelog: release/4.0.469...release/4.0.474