Skip to content

Conversation

@brendankowitz
Copy link
Member

@brendankowitz brendankowitz commented Oct 17, 2025

Description

This pull request introduces significant changes to how FHIR resources are represented and processed within the codebase, moving from the use of ITypedElement to PocoNode for resource elements. This update impacts a wide range of files, refactoring interfaces, implementations, and test code to align with the new model. Additionally, there are several dependency version updates and some package version downgrades.

The most important changes are:

Core Model Refactoring

  • Refactored ResourceElement and related APIs to use PocoNode instead of ITypedElement, affecting constructors, properties, and internal logic in ResourceElement, ResourceTypeExtensions, and all related usages. This change improves consistency and interoperability with the FHIR .NET library. [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11]
  • Updated the IReferenceToElementResolver interface and its implementation to return PocoNode instead of ITypedElement. [1] [2] [3]
  • Changed the IModelInfoProvider.GetEvaluationContext signature to accept a resolver function returning PocoNode. [1] [2]

Dependency and Package Version Updates

  • Downgraded or updated several package versions in Directory.Packages.props, including HealthcareSharedPackageVersion, DotNetSdkPackageVersion, Azure.Identity, Microsoft.Data.SqlClient, and Newtonsoft.Json. Also, updated Hl7FhirVersion and OpenIddict packages to newer versions. [1] [2] [3] [4]
  • Added new package references, such as IdentityServer4 and updated Microsoft.EntityFrameworkCore.InMemory to a newer version. [1] [2]

Test Adjustments

  • Updated unit tests to use the new PocoNode-based APIs and adjusted mock setups and test logic accordingly. [1] [2] [3] [4] [5] [6]

Minor Logic Changes

  • Improved FHIRPath evaluation and search parameter extraction to operate on PocoNode instances, ensuring correct FHIRPath context and evaluation. [1] [2] [3]
  • Fixed logic in CreateBulkUpdateHandler to correctly extract the operation value from FHIR parameters, handling FhirString specifically.

These changes collectively modernize the resource handling pipeline and align the codebase with the latest FHIR .NET best practices.

Related issues

Addresses [issue #].

Testing

Describe how this change was tested.

FHIR Team Checklist

  • Update the title of the PR to be succinct and less than 65 characters
  • Add a milestone to the PR for the sprint that it is merged (i.e. add S47)
  • Tag the PR with the type of update: Bug, Build, Dependencies, Enhancement, New-Feature or Documentation
  • Tag the PR with Open source, Azure API for FHIR (CosmosDB or common code) or Azure Healthcare APIs (SQL or common code) to specify where this change is intended to be released.
  • Tag the PR with Schema Version backward compatible or Schema Version backward incompatible or Schema Version unchanged if this adds or updates Sql script which is/is not backward compatible with the code.
  • When changing or adding behavior, if your code modifies the system design or changes design assumptions, please create and include an ADR.
  • CI is green before merge Build Status
  • Review squash-merge requirements

Semver Change (docs)

Patch|Skip|Feature|Breaking (reason)

Robert Johnson and others added 2 commits October 16, 2025 16:56
<PackageVersion Include="Hl7.Fhir.Specification.R4" Version="$(Hl7FhirVersion)" />
<PackageVersion Include="Hl7.Fhir.Specification.R4B" Version="$(Hl7FhirVersion)" />
<PackageVersion Include="Hl7.Fhir.Specification.R5" Version="$(Hl7FhirVersion)" />
<PackageVersion Include="IdentityServer4" Version="4.1.2" />
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

bad things happened to this merge 😞

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant