Ignixa.DeId
0.5.2-beta
This is a prerelease version of Ignixa.DeId.
dotnet add package Ignixa.DeId --version 0.5.2-beta
NuGet\Install-Package Ignixa.DeId -Version 0.5.2-beta
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Ignixa.DeId" Version="0.5.2-beta" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Ignixa.DeId" Version="0.5.2-beta" />
<PackageReference Include="Ignixa.DeId" />
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Ignixa.DeId --version 0.5.2-beta
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Ignixa.DeId, 0.5.2-beta"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Ignixa.DeId@0.5.2-beta
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Ignixa.DeId&version=0.5.2-beta&prerelease
#tool nuget:?package=Ignixa.DeId&version=0.5.2-beta&prerelease
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Ignixa.DeId
FHIR resource de-identification via FHIRPath-based rules. Supports HIPAA Safe Harbor de-identification standards.
Installation
dotnet add package Ignixa.DeId
Quick Start
using Ignixa.DeId;
using Ignixa.Specification;
// Create de-identification engine from configuration
var schema = FhirVersion.R4.GetSchemaProvider();
var engine = new DeIdEngine("config.json", schema);
// De-identify FHIR JSON
var patientJson = """
{
"resourceType": "Patient",
"id": "example",
"name": [{ "family": "Smith", "given": ["John"] }],
"birthDate": "2000-01-01"
}
""";
var result = await engine.DeidentifyAsync(patientJson);
Configuration Example
{
"fhirVersion": "R4",
"fhirPathRules": [
{
"path": "Patient.id",
"method": "cryptoHash"
},
{
"path": "descendants().ofType(HumanName)",
"method": "redact"
},
{
"path": "descendants().ofType(date)",
"method": "dateShift"
}
],
"parameters": {
"dateShiftKey": "your-secret-key",
"cryptoHashKey": "your-hash-key",
"enablePartialDatesForRedact": true,
"enablePartialAgesForRedact": true,
"enablePartialZipCodesForRedact": true
}
}
De-identification Methods
| Method | Description |
|---|---|
| cryptoHash | HMAC-SHA256 hashing (deterministic) |
| dateShift | Consistent date shifting |
| redact | Data removal with optional partial preservation (HIPAA Safe Harbor) |
| encrypt | Reversible AES encryption |
| substitute | Value replacement |
| perturb | Statistical noise addition |
| keep | Explicit preservation |
| generalize | Conditional value generalization |
HIPAA Safe Harbor Support
Partial redaction features for HIPAA compliance:
- Dates: Preserve year only (if age ⇐89)
- Ages: Truncate ages >89 to "90+"
- Zip Codes: Keep first 3 digits (except restricted areas)
Batch Processing
using Ignixa.Serialization.SourceNodes;
async IAsyncEnumerable<ResourceJsonNode> LoadResourcesAsync()
{
foreach (var line in File.ReadLines("patients.ndjson"))
{
yield return ResourceJsonNode.Parse(line);
}
}
var resources = LoadResourcesAsync();
await foreach (var result in engine.DeidentifyManyAsync(resources))
{
if (result.IsSuccess)
{
await File.AppendAllTextAsync("de-identified.ndjson", result.Value.DeidentifiedJson + "\n");
}
else
{
Console.Error.WriteLine($"Failed: {result.Error.Message}");
}
}
Documentation
Full documentation: https://brendankowitz.github.io/ignixa-fhir/docs/core-sdk/deid
Attribution
This library is based on the FHIR Tools for Anonymization by Microsoft, adapted for the Ignixa ecosystem.
License
MIT License. See LICENSE file in the 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. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net10.0
- Ensure.That (>= 10.1.0)
- Fhir.Metrics (>= 1.3.1)
- Ignixa.Abstractions (>= 0.5.2)
- Ignixa.FhirPath (>= 0.5.2)
- Ignixa.Serialization (>= 0.5.2)
- Ignixa.Validation (>= 0.5.2)
- MathNet.Numerics (>= 5.0.0)
- Microsoft.Extensions.DependencyInjection (>= 10.0.9)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.9)
- Microsoft.Extensions.Logging (>= 10.0.9)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.9)
- Microsoft.Extensions.Options (>= 10.0.9)
- Microsoft.IO.RecyclableMemoryStream (>= 3.0.1)
- Superpower (>= 3.1.0)
-
net9.0
- Ensure.That (>= 10.1.0)
- Fhir.Metrics (>= 1.3.1)
- Ignixa.Abstractions (>= 0.5.2)
- Ignixa.FhirPath (>= 0.5.2)
- Ignixa.Serialization (>= 0.5.2)
- Ignixa.Validation (>= 0.5.2)
- MathNet.Numerics (>= 5.0.0)
- Microsoft.Extensions.DependencyInjection (>= 10.0.9)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.9)
- Microsoft.Extensions.Logging (>= 10.0.9)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.9)
- Microsoft.Extensions.Options (>= 10.0.9)
- Microsoft.IO.RecyclableMemoryStream (>= 3.0.1)
- Superpower (>= 3.1.0)
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.5.2-beta | 0 | 6/16/2026 |
| 0.5.0-beta | 37 | 6/15/2026 |