Files
2026-06-21 19:53:19 +08:00

51 lines
1.9 KiB
C#

public class FhirOptions
{
public const string Section = "Fhir";
/// <summary>Single API key (convenience shorthand — prefer ApiKeys array for rotation).</summary>
public string? ApiKey { get; set; }
/// <summary>Multiple active API keys for zero-downtime rotation. Both ApiKey and ApiKeys are checked.</summary>
public string[] ApiKeys { get; set; } = [];
/// <summary>Identifier systems accepted for Patient.identifier (hospital MRNs).</summary>
public string[] PatientIdentifierSystems { get; set; } =
[
"urn:oid:2.16.840.1.113883.4.1",
"http://hospital.example/mrn"
];
/// <summary>Identifier systems accepted for Encounter.identifier (visit numbers).</summary>
public string[] EncounterIdentifierSystems { get; set; } =
[
"http://hospital.example/visit"
];
/// <summary>System URI VigilCare uses when embedding internal UUIDs in FHIR responses.</summary>
public string InternalPatientIdSystem { get; set; } = "http://vigilcare.local/patient-id";
public string InternalEncounterIdSystem { get; set; } = "http://vigilcare.local/encounter-id";
public string DefaultDepartment { get; set; } = "GENERAL_MEDICINE";
public string DefaultEncounterType { get; set; } = "INPATIENT";
/// <summary>Maps FHIR location/serviceProvider codes to internal department strings.</summary>
public Dictionary<string, string> DepartmentCodeMap { get; set; } = new()
{
["ICU"] = "ICU",
["EMER"] = "EMERGENCY",
["CARD"] = "CARDIOLOGY",
["SURG"] = "SURGERY",
["PEDI"] = "PEDIATRICS",
["MED"] = "GENERAL_MEDICINE"
};
/// <summary>Maps FHIR Encounter.class ACT codes to internal encounter type strings.</summary>
public Dictionary<string, string> EncounterClassMap { get; set; } = new()
{
["IMP"] = "INPATIENT",
["AMB"] = "OUTPATIENT",
["EMER"] = "EMERGENCY"
};
}