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"
    };
}