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