Skip to content

Breaking changes in 5.0

Ewout Kramer edited this page Dec 19, 2022 · 35 revisions

Behavior

  • When you serialize a FHIR resource with the option summary != SummaryType.False then we add now 2 Meta tags in the resource: one for the context STU3 and one for the context R4 and higher.

Target Framework

This version of the SDK no longer supports .NET Framework 4.5.2. The following framework are supported:

  • .NET 6.0
  • NetStandard 2.0

Changes in classes

  • The constructor of previously abstract class BaseFhirClient is now public and requires a ModelInspector and fhirVersion. The nullable parameter IStructureDefinitionSummaryProvider has been removed.
  • The classes BundleToEntryRequest, TypedEntryResponseToBundle, EntryRequest, EntryRequestHeaders, EntryResponse, TypedEntryResponse, EntryToTypedEntryExtensions, EntryToHttpExtensions, HttpToEntryExtensions and TypedEntryResponseToBundle have been made internal. They exposed internal details about the FhirClient and should never have been public.
  • The default parameter IStructureDefinitionSummaryProvider provider of all the constructors of FhirClient have been removed.
  • We have added nullability annotations to BaseFhirClient and FhirClient, which means you may get compiler errors about the fact that most functions on these classes return a nullable resource, which may have gone unhandled until now. These functions return null when the operation resulted in an OperationOutcome instead of the expected resource type. In such cases, check LastResult for the OperationOutcome.
  • Obsolete members of FhirClient have been removed (use the FhirClient.Settings property or the settings argument in the constructor instead):
    • VerifyFhirVersion
    • PreferredFormat
    • UseFormatParam
    • Timeout
    • ReturnFullResource
    • PreferredReturn
    • PreferredParameterHandling
    • PreferCompressedResponses
    • CompressRequestBody
    • ParserSettings
    • OnBeforeRequest: add a HttpClientEventHandler or another HttpMessageHandler to the constructor to use this functionality
    • OnAfterResponseRequest: add a HttpClientEventHandler or another HttpMessageHandler to the constructor to use this functionality
  • Obsolete class LegacyFhirClient has been removed.
  • The constructor of classes BaseFhirParser and BaseFhirSerializer requires a ModelInspector.
  • The protected methods BaseFhirParser.MakeElementStack are not static anymore.
  • ModelInfo.ConformanceResources and ModelInfo.ConformanceResourceTypes have been removed.
  • ModelInfo.FhirCoreProfileBaseUri has been removed. Use now Canonical.FHIR_CORE_PROFILE_BASE_URI.
  • Obsolete members ModelInfo.IsProfiledQuantity and ModelInfoExtensions.GetCollectionName have been removed.
  • Partial class `ModelInfo' is not static anymore.
  • ValidationSettings.XsdSchemaCollection is now of type XmlSchemaSet instead of SchemaCollection.
  • SchemaCollection(IArtifactSource) is marked as obsolete, and the constructor will now get the schema from the embedded resource, disregarding the IArtifactSource argument completely.
  • Interface IConformanceSource is now derived from ICommonConformanceSource. And IConformanceSource.FindCodeSystemByValueSet(string) has been moved to this new interface ICommonConformanceSource.
  • Obsolete extension methods of ResourceResolverExtensions has been removed: FindExtensionDefinition, FindStructureDefinition, FindStructureDefinitionForCoreType and FindValueSet.
  • The constructor of ProfileAssertion and ProfilePreprocessor require now a ModelInspector as a parameter.
  • The public method of ProfileAssertion.SetDeclaredType has been removed.
  • The overloaded methods Validate of the class Validator with the parameter ITypedElement requires now a ModelInspector as a parameter.
  • The public method of Validator.IsBindeableFhirType has been removed.
  • The type of property TranslateParameters.ConceptMap has been changed from ConceptMap to Resource.
  • The type of the parameter conceptMap in TranslateParameters has been changed from ConceptMap to Resource.
  • The public method ElementDefinitionExtensions.PrimaryTypeCode has been changed to GetTypeCode() and the return type is now string?.
  • The FindConceptMaps() and FindConceptMapsAsync() methods in FhirPackageSource and CommonFhirPackageSource will now return an empty list, not null when no items are found (this was the original intention of the interface, but was implemented incorrrectly).
  • FhirPath's ExpressionVisitor has been simplified, it no longer requires a SymbolTable arguments to Accept and the Visit methods.
  • The public class SemVersion has been made internal. If you want to keep using this functionality we recommend to use the external Semver NuGet package.

Removed obsolete members

  • Hl7.Fhir.Model.ElementDefinitionExtensions.GetDeclaredProfiles(TypeRefComponent). Use ElementDefinition.TypeRefComponent.GetTypeProfile() instead.
  • Hl7.Fhir.ElementModel.ElementNode.Clone(). Use Hl7.Fhir.ElementModel.ElementNode.ShallowCopy() instead.
  • Hl7.Fhir.ElementModel.Types.DateTime.FromDateTime(DateTimeOffset). Use Hl7.Fhir.ElementModel.Types.DateTime.FromDateTimeOffset(DateTimeOffset) instead.
  • Hl7.Fhir.Serialization.FhirXmlSerializationSettings.SkipUnknownElements. Use Hl7.Fhir.Serialization.FhirXmlSerializationSettings.IgnoreUnknownElements instead.
  • Hl7.Fhir.Serialization.ParserSettings.Default. Use Hl7.Fhir.Serialization.ParserSettings.CreateDefault() instead.
  • Hl7.Fhir.Support.DateExtensions.ToFhirDateTime(DateTime). Use Hl7.Fhir.Support.DateExtensions.ToFhirDateTime(DateTimeOffset) instead.
  • Hl7.Fhir.Support.DateExtensions.ToFhirDateTime(DateTime?). Use Hl7.Fhir.Support.DateExtensions.ToFhirDateTime(DateTimeOffset?) instead.
  • Hl7.Fhir.Specification.Source.OriginInformation. Use Hl7.Fhir.Specification.Source.OriginAnnotation instead.
  • Hl7.Fhir.Specification.Snapshot.SnapshotGeneratorSettings.Default. Use ``Hl7.Fhir.Specification.Snapshot.SnapshotGeneratorSettings.CreateDefault()` instead.
  • Hl7.Fhir.Specification.Source.ConformanceSummaryProperties.GetConformanceStatus(IArtifactSummaryPropertyBag). Use Hl7.Fhir.Specification.Source.ConformanceSummaryProperties.GetPublicationStatus(IArtifactSummaryPropertyBag) instead.
  • Hl7.Fhir.Specification.Source.DirectorySource(bool). Use Hl7.Fhir.Specification.Source.DirectorySource(DirectorySourceSettings) instead.
  • Hl7.Fhir.Specification.Source.DirectorySource(string, bool). Use Hl7.Fhir.Specification.Source.DirectorySource(DirectorySourceSettings) instead.
  • Hl7.Fhir.Introspection.ClassMapping.AddMappingForType(Type. FhirRelease, ClassMapping).
  • Hl7.Fhir.Introspection.ClassMapping.DeclaredType.
  • Hl7.Fhir.Introspection.ClassMapping.Create(Type). Use Hl7.Fhir.Introspection.ClassMapping.TryCreate(Type, ClassMapping, FhirRelease) instead.
  • Hl7.Fhir.Introspection.ClassMapping.IsMappableType(Type). Use Hl7.Fhir.Introspection.ClassMapping.TryCreate(Type, ClassMapping, FhirRelease) instead.
  • Hl7.Fhir.Introspection.FhirVersionDependentExtensions.AppliesToVersion(IFhirVersionDependent, FhirRelease). Use Hl7.Fhir.Introspection.FhirVersionDependentExtensions.AppliesToRelease(Attribute, FhirRelease) instead.
  • Hl7.Fhir.Introspection.PropertyMapping.ElementType. Use Hl7.Fhir.Introspection.PropertyMapping.ImplementingType instead.
  • Hl7.Fhir.Introspection.PropertyMapping.IsResourceChoice.
  • Hl7.Fhir.Introspection.PropertyMapping.Create(PropertyInfo, ClassMapping, FhirRelease). Use Hl7.Fhir.Introspection.PropertyMapping.TryCreate(PropertyInfo, out PropertyMapping?, ClassMapping, FhirRelease) instead.
  • Hl7.Fhir.Model.Date.ToDateTime(). Use Hl7.Fhir.Model.Date.ToDateTimeOffset() instead.
  • Hl7.Fhir.Model.FhirDateTime.FhirDateTime(DateTime). Use Hl7.Fhir.Model.FhirDateTime.FhirDateTime(DateTimeOffset) instead.
  • Hl7.Fhir.Model.FhirDateTime.FhirDateTime(int, int, int, int, int, int). Use Hl7.Fhir.Model.FhirDateTime.FhirDateTime(int, int, int, int, int, int, TimeSpan) instead.
  • Hl7.Fhir.Model.FhirDateTime.ToDateTimeOffset(TimeSpan?). Use Hl7.Fhir.Model.FhirDateTime.ToDateTimeOffset(TimeSpan) instead.
  • Hl7.Fhir.Model.FhirDateTime.ToDateTime(). Use Hl7.Fhir.Model.FhirDateTime.ToDateTimeOffset(TimeSpan) instead.
  • Hl7.Fhir.Model.XHtml.IsValidValue(string). Use Hl7.Fhir.Model.XHtml.IsValidNarrativeXhtml(string) instead (or IsValidXml if that is more appropriate).
  • Hl7.Fhir.Rest.EntryToHttpExtensions.ToHttpWebRequest(EntryRequest, Uri, FhirClientSettings). Use Hl7.Fhir.Rest.EntryToHttpExtensions.ToHttpRequestMessage(EntryRequest, Uri, FhirClientSettings) instead.
  • Hl7.Fhir.Rest.SearchParams.FromParameters(object). Use Parameters.ToSearchParameters() method instead.
  • Hl7.Fhir.Rest.ResourceIdentity.Endpoint. Use Hl7.Fhir.Rest.ResourceIdentity.BaseUri instead.
  • Hl7.Fhir.Specification.Terminology.ValueSetExpanderSettings.Default. Use Hl7.Fhir.Specification.Terminology.ValueSetExpanderSettings.CreateDefault() instead.
  • Hl7.Fhir.Support.Issue.PROFILE_INCOMPLETE_BINDING. This issue will not be raised by the validator anymore. Use 'PROFILE_ELEMENTDEF_INCORRECT' instead.
  • Hl7.Fhir.Utility.FhirReleaseParser.TryFhirReleaseFromMimeVersion(string, out FhirRelease?). Use Hl7.Fhir.Utility.FhirReleaseParser.TryGetFhirReleaseFromMimeVersion(string, out FhirRelease?) instead.
  • Hl7.Fhir.Utility.FhirReleaseParser.TryFhirReleaseFromCorePackageName(string, out FhirRelease?). Use Hl7.Fhir.Utility.FhirReleaseParser.TryGetFhirReleaseFromCorePackageName(string, out FhirRelease?) instead.
  • Hl7.Fhir.Utility.ObjectListExtensions. This class has been removed.
  • Hl7.FhirPath.EvaluationContext.Default. Use Hl7.FhirPath.EvaluationContext.CreateDefault() instead.
  • ResourceReferenceNotFoundException
  • OperationValidCodeExtensions
  • FhirPackageSource
  • CommonFhirPackageSource

Model (for R4 and higher)

  • The type of CapabilityStatement.Type has been changed to string? (was ResourceType?)
  • The type of CapabilityStatement.TypeElement has been changed to Code (was Code<Hl7.Fhir.Model.ResourceType>)
  • The AllowedTypes attribute has been removed from the following properties:
    • ElementDefinition.Value
    • ElementDefinition.DefaultValue
    • ElementDefinition.Pattern
    • ElementDefinition.Fixed
  • Enum ElementDefinition.ConstraintSeverity has been moved to Template-Bindings.cs.
  • Description of Money values has been corrected (diacritics)

ValueSets/enums update

Over the last year we have discovered that we have generated enum names that were not capitalized. This has been corrected. This means the following enums have had their names capitalized:

  • (R3) Sequence.qualityType, Sequence.repositoryType
  • (R4 and higher) MolecularSequence.orientationType, qualityType, repositoryType, sequenceType, strandType,
  • (R4 and higher) medicationRequestIntent, medicationRequestStatus
  • (R4 and higher) v3-ConfidentialityClassification has been renamed to ConfidentialityClassification
  • (R4 and higher) VerificationResult.status
  • (R4 and higher) messageheader_response_request has been renamed to MessageHeaderResponseRequest

The names of the following valuesets clashed with properties within the classes, which meant we had properties which names ended with an underscore. This has been corrected for the following valuesets:

  • ["http://hl7.org/fhir/ValueSet/characteristic-combination"] = "CharacteristicCombinationCode",
  • ["http://hl7.org/fhir/ValueSet/claim-use"] = "ClaimUseCode",
  • ["http://hl7.org/fhir/ValueSet/content-type"] = "ContentTypeCode",
  • ["http://hl7.org/fhir/ValueSet/exposure-state"] = "ExposureStateCode",
  • ["http://hl7.org/fhir/ValueSet/verificationresult-status"] = "StatusCode",
  • ["http://terminology.hl7.org/ValueSet/v3-Confidentiality"] = "ConfidentialityCode",
  • ["http://hl7.org/fhir/ValueSet/variable-type"] = "VariableTypeCode",
  • ["http://hl7.org/fhir/ValueSet/group-measure"] = "GroupMeasureCode"
Clone this wiki locally