Ignixa.Models.R5
0.6.74-beta
dotnet add package Ignixa.Models.R5 --version 0.6.74-beta
NuGet\Install-Package Ignixa.Models.R5 -Version 0.6.74-beta
<PackageReference Include="Ignixa.Models.R5" Version="0.6.74-beta" />
<PackageVersion Include="Ignixa.Models.R5" Version="0.6.74-beta" />
<PackageReference Include="Ignixa.Models.R5" />
paket add Ignixa.Models.R5 --version 0.6.74-beta
#r "nuget: Ignixa.Models.R5, 0.6.74-beta"
#:package Ignixa.Models.R5@0.6.74-beta
#addin nuget:?package=Ignixa.Models.R5&version=0.6.74-beta&prerelease
#tool nuget:?package=Ignixa.Models.R5&version=0.6.74-beta&prerelease
Ignixa.Models.R5
FHIR R5 strongly-typed POCO facades over the Ignixa element/JSON runtime. Opt-in: subclasses the shared
Ignixa.Models base layer in Ignixa.Serialization, so it adds Firely-grade ergonomics
(patient.Name[0].Family, compile-time safety, IntelliSense over every element, enums for every value
set) without becoming a second source of truth — every generated type is a zero-copy view over the same
JsonObject/IElement runtime the rest of the SDK already uses.
Why Use This Package?
- Zero-copy: typed facades read and write directly against the backing JSON; there is no
POCO↔JSON serialization step, so extensions, primitive shadow elements (
_birthDate), and unknown elements all survive untouched. - Shared base, R5-specific deltas: types identical across versions (e.g.
Coding) live once inIgnixa.Serialization; R5-specific shape lives here. You get the base type's ergonomics for free and only pull in this package for the R5-specific delta. - Cross-version safe by construction:
As<T>()validates that a version-tagged node is only reinterpreted through a facade that actually supports that version, so R5 data can't silently be misread through another version's shaped accessor. - Opt-in, never on the core request path: the server runs without this package. Add it only where you want typed R5 ergonomics.
Installation
dotnet add package Ignixa.Models.R5 --prerelease
Quick Start
using Ignixa.Abstractions;
using Ignixa.Models.R5;
using Ignixa.Serialization;
using Ignixa.Serialization.SourceNodes;
const string json = """
{
"resourceType": "Patient",
"id": "example",
"gender": "female",
"birthDate": "1974-12-25",
"name": [ { "family": "Chalmers", "given": [ "Jean" ] } ]
}
""";
// Parse once, view as the R5-typed facade -- zero-copy over the same backing JsonObject.
Patient patient = ResourceJsonNode.Parse(json).As<Patient>();
Console.WriteLine(patient.Name[0].Family); // "Chalmers"
Console.WriteLine(patient.Gender); // AdministrativeGender.Female
// Mutate through the typed facade; writes land directly on the backing JSON.
patient.Active = true;
string serialized = patient.SerializeToString();
Cross-version dispatch
using Ignixa.Abstractions;
ResourceJsonNode resource = ResourceJsonNode.Parse(json);
// Explicit, version-aware dispatch -- throws InvalidOperationException on a registry miss rather than
// silently returning a wrong-typed facade.
ResourceJsonNode viaR5 = resource.AsVersion(FhirVersion.R5);
// Or the best-effort variant:
if (resource.TryAsVersion(FhirVersion.R5, out var versioned))
{
// ...
}
Integration with Other Packages
- Ignixa.Serialization: provides the shared
Ignixa.Modelsbase layer this package subclasses, plus theResourceJsonNode/BaseJsonNoderuntime every facade is built on. - Ignixa.Models.R4: the R4 counterpart. Both can be referenced from the same project — a single
parsed node can be viewed as
Ignixa.Models.R4.PatientandIgnixa.Models.R5.Patientsimultaneously, since neither owns the underlying data. - Ignixa.Abstractions: supplies
FhirVersionand other cross-cutting contracts.
License
MIT License - see LICENSE file in repository root
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Ensure.That (>= 10.1.0)
- Ignixa.Abstractions (>= 0.6.74)
- Ignixa.Serialization (>= 0.6.74)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.9)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.9)
- Microsoft.IO.RecyclableMemoryStream (>= 3.0.1)
-
net9.0
- Ensure.That (>= 10.1.0)
- Ignixa.Abstractions (>= 0.6.74)
- Ignixa.Serialization (>= 0.6.74)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.9)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.9)
- Microsoft.IO.RecyclableMemoryStream (>= 3.0.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.6.74-beta | 61 | 9/3/2026 |
| 0.6.73-beta | 59 | 9/2/2026 |
| 0.6.68-beta | 63 | 8/24/2026 |
| 0.6.41-beta | 78 | 7/27/2026 |
| 0.6.28-beta | 68 | 7/22/2026 |
| 0.6.19-beta | 74 | 7/12/2026 |