Releases: microsoft/fhir-server
Releases · microsoft/fhir-server
4.0.639
What's Changed
Azure Health Data Services (SQL)
- Fix delete issue context by @LTA-Thinking in #5336: There was an issue where some $bulk-delete queries that have paged results exceeding 1000 included items with related links could return an HTTP 500 Internal Server Error. The issue has been fixed, and the results are returned correctly now.
- Fix SQL UNION column count mismatch in include/revinclude queries by @mikaelweave in #5340: There was an issue where queries combining _include and _revinclude (for example,
GET /Patient?_include=Patient:organization&_revinclude=Observation:patientcould return an HTTP 500 Internal Server Error. This issue has been fixed, and results are returned correctly now.
Common to both Azure API for FHIR and Azure Health Data Services
- Move FhirRequestContextAccessor by @LTA-Thinking in #5332
- Adding E2E tests for InstantiatesCapabilityProvider. by @v-isyamauchi-gh in #5341:
Full Changelog: release/4.0.635...release/4.0.639
4.0.635
What's Changed
Common to both Azure API for FHIR and Azure Health Data Services
- Populating 'instantiates' field of CapabilityStatement. by @v-isyamauchi-gh in #5241: The change will populate 'instantiates' field of CapabilityStatement when necessary.
- Improve test coverage for Azure project by @rbans96 in #5316:
Other Changes
Full Changelog: release/4.0.632...release/4.0.635
4.0.632
What's Changed
Azure Health Data Services (SQL)
- $import can handle merge throttling by @brendankowitz in #5320: This pull request adds improved handling for SQL throttling errors during resource import operations in the SQL Server FHIR data store. Now, when the system detects that concurrent calls are above optimal levels, it will back off for a randomized delay, reducing the chance of repeated throttling and improving system stability.
- Fix duplicate ids search by @LTA-Thinking in #5338: Bug fix for duplicate ID's used in search: There was a regression where searching for duplicate ID's with _id and no other search parameters would return a HTTP 500 Internal Server Error. This issue has been fixed, and correct search results are now returned.
Common to both Azure API for FHIR and Azure Health Data Services
- Capability statement refreshes when profiles are updated by @fhibf in #5330: Improved capability statement refresh after profile updates: Previously, changes to profile updates could take up to 4 hours to reflect in the Capability Statement. This has been improved to load new profile updates in the Capability Statement after 2 minutes.
Full Changelog: release/4.0.629...release/4.0.632
4.0.629
What's Changed
Azure Health Data Services (SQL)
- Fix reindex scalability by @jestradaMS in #5324: Introduces several improvements to the reindexing job orchestration and SQL Server search logic to enhance scalability and reliability, especially for large datasets.
- Removed not used global start id by @SergeyGaluzo in #5326: Eliminated redundant global start ID to streamline code.
- Exposing resource count in get surrogate ids ranges methods by @SergeyGaluzo in #5327: Display resource counts when retrieving surrogate ID ranges.
- Fix infinite loop with multiple includes by @LTA-Thinking in #5297: Bug fix for _sort with multiple _include/_revinclude parameters. Resolved issue where using multiple _include/_revinclude parameters in a search with _sort could lead to the includes continuation tokens to get into an infinite loop if there are more than two pages of results. This issue is fixed, and the includes continuation tokens are correct now.
Common to both Azure API for FHIR and Azure Health Data Services
- Fix for Ambiguous match exception in patch call by @Charles-Patrick-Moore (merged via @PTaladay) in #5321: Improved error handling for PATCH requests with an empty body. Previously, PATCH requests sent to the FHIR with an empty body returned HTTP 500 Internal Server Error. This has been improved to return HTTP 400 Bad Request with more informative messaging to inform user that Content-Type and body are required.
- SMART on FHIR Token Introspection Endpoint by @mikaelweave in #5257
- Reindex job reliability improvements by @jestradaMS in #5331: Improves the reliability and resilience of the FHIR reindexing jobs by introducing smarter retry logic for transient database errors and by making the resource fetching process more robust against out-of-memory (OOM) errors.
Other Changes
- Add validation for ADR labels in PRs by @rajithaalurims in #5315
Full Changelog: release/4.0.621...release/4.0.629
4.0.621
What's Changed
Azure Health Data Services (SQL)
- Adding stored procedure instead of UNION by @SergeyGaluzo in #5300: Replaces UNION-based queries with a stored procedure to improve performance and maintainability.
- Refactor SearchProxyTests structure by @jestradaMS in #5308: This pull request adds support for configuring proxy-related HTTP headers in the E2E search tests by introducing new environment variables. This allows the tests to be more flexible and adaptable to different deployment environments.
- Allow hard delete inside transaction bundle by @paorodma-ms in #5291: Hard delete now supported inside transaction bundles. Previously, hard deletes and conditional deletes were not supported inside transaction bundles. Now, hard deletes are allowed inside transaction bundles. Conditional deletes remain unsupported inside transaction bundles.
- Improve test coverage for schema manager project by @rbans96 in #5307
- Remove incorrect coding pattern for GetResourceSurrogateIdRanges stored procedure by @SergeyGaluzo in #5312
- Extend usage of get async to search on multiple ids by @SergeyGaluzo in #5311
Common to both Azure API for FHIR and Azure Health Data Services
- Adding a configuration for SMART 3rd-party IDP. by @v-isyamauchi-gh in #5309
Other Changes
- Code coverage improvement for R4 API part 2. by @v-isyamauchi-gh in #5282
- Enhance PR cleanup scripts by @jestradaMS in #5310
- Improve Microsoft Graph module installation in AAD cleanup job by @mikaelweave in #5322
Full Changelog: release/4.0.611...release/4.0.621
4.0.611
What's Changed
Azure Health Data Services (SQL)
- Add meta history to PATCH by @LTA-Thinking in #5290: Introduced new query parameter "_meta-history" for PATCH updates when versioning policy is set to either "versioned" or "version-update" to configure whether or not the old version is saved as a historical record. "_meta-history = true" is the default. By default, the resource version is incremented, a new version is created, and the old version is saved as a historical record. "_meta-history=false" can be configured so that the resource version is incremented, a new version is created, but the old version is not saved as a historical record.
Other Changes
- Add validation for PaaS compatibility labels in PRs by @jestradaMS in #5298
- Fix for OSS pipelines transient failures by @jestradaMS in #5275
- Add PackageTags to project file for schema versioning by @jestradaMS in #5301
Full Changelog: release/4.0.607...release/4.0.611
4.0.607
What's Changed
Azure Health Data Services (SQL)
- Remove parameters hash from sql query hash calculation by @SergeyGaluzo in #5294: Fixes custom query bug that prevents reusing custom stored procedures across different parameter values.
- Simplify generated SQL by removing "predecessorTable" alias by @SergeyGaluzo in #5295: This change removes the misleading “predecessorTable” alias introduced earlier by switching to uniquely named columns in virtual inline views to disambiguate joins, simplifying generated SQL and restoring pre-change behavior with no functional or query‑logic changes.
Common to both Azure API for FHIR and Azure Health Data Services
- Increase coverage for Fhir.Core across versions by @rbans96 in #5277: Increase core project test coverage across all versions
- Changes to include Structure Definition version in canonical URL by @paorodma-ms in #5280: The capability statement lists details of the stored profiles on the FHIR server. There was a bug where the capability statement wasn't showing the profile version that is currently loaded into the FHIR server. The issue is fixed, and the capability statement now correctly states the profile version that is loaded on the FHIR server.
- Block update or delete of system defined search parameters. by @paorodma-ms in #5288: Updates in responses for update and deletion of FHIR spec-defined search parameters: We have made a few updates and improvements to the behaviors and responses for update and deletion of FHIR spec-defined search parameters. This includes:
- Deletion of out-of-box FHIR spec-defined search parameters previously returned a "204 No Content" and the parameter would not actually be deleted. This response has been updated to correctly return "405 Method Not Allowed".
- Update of out-of-box FHIR spec-defined search parameters previously returned "201 Created", which can cause unintended behavior. This has been updated to return "405 Method Not Allowed". If you wish to update an out-of-box FHIR spec-defined search parameter, please create a new custom search parameter with a different URL.
- This update also includes: Deletion of non-existent search parameter previously returned a "204 No Content". This response has been improved to be more informative and now returns "404 Not Found".
- Check AadSmartProxy for well-known/smart-configuration by @feordin in #5292
Other Changes
- Removing validate search parameter hash from ReindexProcessingJob by @jestradaMS in #5286
- Pin Microsoft Graph modules to version 2.33.0 to address bug by @jestradaMS in #5289
Full Changelog: release/4.0.599...release/4.0.607
4.0.599
What's Changed
Other Changes
- Add integration setup and extraction templates for test jobs by @jestradaMS in #5279
Full Changelog: release/4.0.598...release/4.0.599
4.0.598
What's Changed
Azure Health Data Services (SQL)
- Fix search with include and sort by @LTA-Thinking in #5242: When executing a search request with _include or _revinclude, if there are more than the _includesCount number of matched items, an include continuation link is provided, allowing you to navigate the complete result set. Previously, this particular functionality had some bugs when it was used in conjunction with _sort. The following issues have been fixed:
- Sorting by lastUpdated (descending): Included resources were missing from the bundle, and no include continuation token was returned. This issue has been fixed; included resources and the include continuation token are now returned correctly.
- Sorting by any other field: If enough results existed to fill a page, it triggered a 500 error. This issue has been fixed, and all results are returned correctly.
- Partial page with sort value: If matched results didn't fill a page but generated an include continuation token, that token was lost during the second search for non-sort matches. This issue has been fixed, and the include continuation token is returned correctly.
- Include continuation link with _sort: The search retrieved data for both matches with and without the sort field, regardless of which type generated the token. This issue has been fixed, and data is retrieved for the correct match.
Common to both Azure API for FHIR and Azure Health Data Services
- Adding SMART v2 fields to SMART configuration. by @v-isyamauchi-gh in #5220: Updated .well-known/smart-configuration endpoint to support SMART v2: Updated fields in the .well-known/smart-configuration endpoint with all SMART v2 required and recommended fields. Note: This affects both SMART v1 and v2. Some existing fields have been updated, including
authorization_endpoint(previouslyauthorizationEndpoint,token_endpoint(previouslytokenEndpoint). New fields have been added, includinggrant_types_supported,token_endpoint_auth_methods_supported,scopes_supported,response_types_supported. - Fixing 500 error due to an invalid input url for import. by @v-isyamauchi-gh in #5255: Bug fix for $import error: Previously, using $import with a relative URL could return a 500 Internal Server Error stating "This operation is not supported for a relative URI". This issue has been fixed, and now, a relative URL can be used as the input URL.
- Refactoring authorization code for SMART v2. by @v-isyamauchi-gh in #5248: Refactoring SMART v2 code to move all SMART v2-related authorization code to one place.
- Add tests to improve R4.Core tests coverage by @rbans96 in #5260
- Reindex core fixes and test enhancements by @jestradaMS in #5264: Reindex infrastructure improvements, ensuring more robust handling of search parameter updates, improving job orchestration for reindexing, and addressing concurrency and cancellation scenarios.
- Strengthen error handing in post search by @LTA-Thinking in #5267
Other Changes
- Fix over locking in dequeue job stored procedure by @SergeyGaluzo in #5256
- Adding pr-cleanup-pipeline for async resource cleanup per PR by @jestradaMS in #5259
- Removing Cleanup stage from pr-pipeline.yml by @jestradaMS in #5261
- Add Retry functionality to xUnit by @jestradaMS in #5263
- Updates to improve PR infrastructure deployment stability by @jestradaMS in #5262
- Adding UniqueResourceGroupName to CI variables for tests by @jestradaMS in #5271
- Update CI Deploy pipeline by @jestradaMS in #5273
- Code coverage improvement for R4 API. by @v-isyamauchi-gh in #5270
- Add retry logic for provisioning tasks to handle transient errors by @jestradaMS in #5276
Full Changelog: release/4.0.582...release/4.0.598
4.0.582
What's Changed
Azure Health Data Services (SQL)
- Merge hotfix to retain history if only meta is updated via PATCH by @rbans96 in #5253: Resolved issue where metadata-only updates made via PATCH incremented the resource version without preserving the previous version. This issue was resolved on December 1, 2025.
Full Changelog: release/4.0.581...release/4.0.582