{
  "contract": {
    "name": "YatakKapasite",
    "version": "3.0.0",
    "language": "tr-TR",
    "runtimeFunction": "window.hesaplaYatakKapasite(input)",
    "legacyAdapterFunction": "window.hesaplaYatakKapasiteLegacyV2(input, nursingAssociateAllocation)",
    "description": "Aynı servis ve dönem için BOR, ALOS, dönemsel yatak devri ve güncel NHS tüm-klinik-işgücü kapsamındaki CHPPD sonuçlarını deterministik hesaplayan makine sözleşmesi.",
    "breakingChangesFrom": "2.0.0",
    "migration": "care* ve birleşik nursingAssociate* alanları kanonik girdiden kaldırıldı. Nursing associate saatleri kayıt statüsü ve gündüz/gece temelinde dört alana ayrıldı. Legacy v2 çağrıları ayrı adapter ve zorunlu kayıt-statüsü dağılımıyla taşınır.",
    "scope": "Betimleyici ve operasyonel hesaplama",
    "notInScope": [
      "Güvenli doluluk sonucu",
      "Personel yeterliliği sonucu",
      "Klinik karar",
      "Mevzuata uygunluk sonucu",
      "Hedef, eşik veya önerilen oran"
    ]
  },
  "input": {
    "mode": "canonical-v3",
    "additionalProperties": false,
    "fieldCount": 17,
    "required": [
      "periodDays",
      "availableBedDays",
      "occupiedBedDays",
      "admissions",
      "rnDayActualHours",
      "rnNightActualHours",
      "registeredNursingAssociateDayActualHours",
      "registeredNursingAssociateNightActualHours",
      "nonRegisteredNursingAssociateDayActualHours",
      "nonRegisteredNursingAssociateNightActualHours",
      "nonRegisteredNursingDayActualHours",
      "nonRegisteredNursingNightActualHours",
      "registeredAHPDayActualHours",
      "registeredAHPNightActualHours",
      "nonRegisteredAHPDayActualHours",
      "nonRegisteredAHPNightActualHours",
      "midnightPatientCensusSum"
    ],
    "validationOrder": [
      "periodDays",
      "availableBedDays",
      "occupiedBedDays",
      "admissions",
      "rnDayActualHours",
      "rnNightActualHours",
      "registeredNursingAssociateDayActualHours",
      "registeredNursingAssociateNightActualHours",
      "nonRegisteredNursingAssociateDayActualHours",
      "nonRegisteredNursingAssociateNightActualHours",
      "nonRegisteredNursingDayActualHours",
      "nonRegisteredNursingNightActualHours",
      "registeredAHPDayActualHours",
      "registeredAHPNightActualHours",
      "nonRegisteredAHPDayActualHours",
      "nonRegisteredAHPNightActualHours",
      "midnightPatientCensusSum"
    ],
    "fields": {
      "periodDays": {
        "name": "Raporlama dönemi",
        "type": "integer",
        "unit": {"id": "day", "label": "gün"},
        "constraints": {"required": true, "finite": true, "exclusiveMinimum": 0},
        "description": "Aynı servis için raporlama dönemindeki gün sayısı."
      },
      "availableBedDays": {
        "name": "Kullanılabilir yatak-gün",
        "type": "number",
        "unit": {"id": "bed-day", "label": "yatak-gün"},
        "constraints": {"required": true, "finite": true, "exclusiveMinimum": 0},
        "description": "Dönem boyunca günlük kullanılabilir yatak sayılarının toplamı.",
        "sourceIds": ["WHO_FACILITY_INDICATORS_2019"]
      },
      "occupiedBedDays": {
        "name": "Dolu yatak-gün",
        "type": "number",
        "unit": {"id": "bed-day", "label": "hasta/yatak-gün"},
        "constraints": {"required": true, "finite": true, "minimum": 0},
        "description": "Aynı servis ve dönem için toplam dolu yatak-gün.",
        "sourceIds": ["WHO_FACILITY_INDICATORS_2019"]
      },
      "admissions": {
        "name": "Kabul sayısı",
        "type": "integer",
        "unit": {"id": "patient-event", "label": "hasta olayı"},
        "constraints": {"required": true, "finite": true, "minimum": 0},
        "description": "WHO gösterge tanımındaki admissions; yerel eşleme önceden doğrulanır.",
        "sourceIds": ["WHO_FACILITY_INDICATORS_2019"]
      },
      "rnDayActualHours": {
        "name": "Kayıtlı hemşire/ebe gündüz fiili ücretli saatleri",
        "type": "number",
        "unit": {"id": "staff-hour", "label": "personel-saat"},
        "constraints": {"required": true, "finite": true, "minimum": 0},
        "description": "Duty roster'a atanmış kayıtlı hemşire/ebelerin gündüz actual hours worked (paid) değeri.",
        "sourceIds": ["NHS_CHPPD_GUIDANCE_ALL_INPATIENT_TRUSTS_2023"]
      },
      "rnNightActualHours": {
        "name": "Kayıtlı hemşire/ebe gece fiili ücretli saatleri",
        "type": "number",
        "unit": {"id": "staff-hour", "label": "personel-saat"},
        "constraints": {"required": true, "finite": true, "minimum": 0},
        "description": "Duty roster'a atanmış kayıtlı hemşire/ebelerin gece actual hours worked (paid) değeri.",
        "sourceIds": ["NHS_CHPPD_GUIDANCE_ALL_INPATIENT_TRUSTS_2023"]
      },
      "registeredNursingAssociateDayActualHours": {
        "name": "Kayıtlı nursing associate gündüz fiili ücretli saatleri",
        "type": "number",
        "unit": {"id": "staff-hour", "label": "personel-saat"},
        "constraints": {"required": true, "finite": true, "minimum": 0},
        "registrationStatus": "registered",
        "shift": "day",
        "description": "Kayıtlı statüdeki, duty roster'a atanmış nursing associate gündüz actual hours worked (paid) değeri.",
        "sourceIds": ["NHS_CHPPD_GUIDANCE_ALL_INPATIENT_TRUSTS_2023"]
      },
      "registeredNursingAssociateNightActualHours": {
        "name": "Kayıtlı nursing associate gece fiili ücretli saatleri",
        "type": "number",
        "unit": {"id": "staff-hour", "label": "personel-saat"},
        "constraints": {"required": true, "finite": true, "minimum": 0},
        "registrationStatus": "registered",
        "shift": "night",
        "description": "Kayıtlı statüdeki, duty roster'a atanmış nursing associate gece actual hours worked (paid) değeri.",
        "sourceIds": ["NHS_CHPPD_GUIDANCE_ALL_INPATIENT_TRUSTS_2023"]
      },
      "nonRegisteredNursingAssociateDayActualHours": {
        "name": "Kayıtlı olmayan nursing associate gündüz fiili ücretli saatleri",
        "type": "number",
        "unit": {"id": "staff-hour", "label": "personel-saat"},
        "constraints": {"required": true, "finite": true, "minimum": 0},
        "registrationStatus": "non-registered",
        "shift": "day",
        "description": "Kayıtlı olmayan statüdeki, duty roster'a atanmış nursing associate gündüz actual hours worked (paid) değeri.",
        "sourceIds": ["NHS_CHPPD_GUIDANCE_ALL_INPATIENT_TRUSTS_2023"]
      },
      "nonRegisteredNursingAssociateNightActualHours": {
        "name": "Kayıtlı olmayan nursing associate gece fiili ücretli saatleri",
        "type": "number",
        "unit": {"id": "staff-hour", "label": "personel-saat"},
        "constraints": {"required": true, "finite": true, "minimum": 0},
        "registrationStatus": "non-registered",
        "shift": "night",
        "description": "Kayıtlı olmayan statüdeki, duty roster'a atanmış nursing associate gece actual hours worked (paid) değeri.",
        "sourceIds": ["NHS_CHPPD_GUIDANCE_ALL_INPATIENT_TRUSTS_2023"]
      },
      "nonRegisteredNursingDayActualHours": {
        "name": "Kayıtlı olmayan nursing gündüz fiili ücretli saatleri",
        "type": "number",
        "unit": {"id": "staff-hour", "label": "personel-saat"},
        "constraints": {"required": true, "finite": true, "minimum": 0},
        "excludes": ["registered nursing associates", "non-registered nursing associates"],
        "description": "Nursing associate dışındaki roster'lı kayıtlı olmayan nursing personelinin gündüz actual hours worked (paid) değeri.",
        "sourceIds": ["NHS_CHPPD_GUIDANCE_ALL_INPATIENT_TRUSTS_2023"]
      },
      "nonRegisteredNursingNightActualHours": {
        "name": "Kayıtlı olmayan nursing gece fiili ücretli saatleri",
        "type": "number",
        "unit": {"id": "staff-hour", "label": "personel-saat"},
        "constraints": {"required": true, "finite": true, "minimum": 0},
        "excludes": ["registered nursing associates", "non-registered nursing associates"],
        "description": "Nursing associate dışındaki roster'lı kayıtlı olmayan nursing personelinin gece actual hours worked (paid) değeri.",
        "sourceIds": ["NHS_CHPPD_GUIDANCE_ALL_INPATIENT_TRUSTS_2023"]
      },
      "registeredAHPDayActualHours": {
        "name": "Kayıtlı AHP gündüz fiili ücretli saatleri",
        "type": "number",
        "unit": {"id": "staff-hour", "label": "personel-saat"},
        "constraints": {"required": true, "finite": true, "minimum": 0},
        "description": "Duty roster'a atanmış kayıtlı AHP gündüz actual hours worked (paid) değeri.",
        "sourceIds": ["NHS_CHPPD_GUIDANCE_ALL_INPATIENT_TRUSTS_2023"]
      },
      "registeredAHPNightActualHours": {
        "name": "Kayıtlı AHP gece fiili ücretli saatleri",
        "type": "number",
        "unit": {"id": "staff-hour", "label": "personel-saat"},
        "constraints": {"required": true, "finite": true, "minimum": 0},
        "description": "Duty roster'a atanmış kayıtlı AHP gece actual hours worked (paid) değeri.",
        "sourceIds": ["NHS_CHPPD_GUIDANCE_ALL_INPATIENT_TRUSTS_2023"]
      },
      "nonRegisteredAHPDayActualHours": {
        "name": "Kayıtlı olmayan AHP gündüz fiili ücretli saatleri",
        "type": "number",
        "unit": {"id": "staff-hour", "label": "personel-saat"},
        "constraints": {"required": true, "finite": true, "minimum": 0},
        "description": "Duty roster'a atanmış kayıtlı olmayan AHP gündüz actual hours worked (paid) değeri.",
        "sourceIds": ["NHS_CHPPD_GUIDANCE_ALL_INPATIENT_TRUSTS_2023"]
      },
      "nonRegisteredAHPNightActualHours": {
        "name": "Kayıtlı olmayan AHP gece fiili ücretli saatleri",
        "type": "number",
        "unit": {"id": "staff-hour", "label": "personel-saat"},
        "constraints": {"required": true, "finite": true, "minimum": 0},
        "description": "Duty roster'a atanmış kayıtlı olmayan AHP gece actual hours worked (paid) değeri.",
        "sourceIds": ["NHS_CHPPD_GUIDANCE_ALL_INPATIENT_TRUSTS_2023"]
      },
      "midnightPatientCensusSum": {
        "name": "23:59 hasta sayımları toplamı",
        "type": "integer",
        "unit": {"id": "patient-census-day", "label": "hasta-sayım-günü"},
        "constraints": {"required": true, "finite": true, "minimum": 0},
        "description": "Dönemdeki günlük ayrık 23:59 hasta sayımlarının toplamı; günlük ortalama değildir.",
        "sourceIds": ["NHS_CHPPD_GUIDANCE_ALL_INPATIENT_TRUSTS_2023"]
      }
    },
    "mutualExclusion": {
      "rule": "Aynı kategori için legacy ve kanonik alanlardan en az birer pozitif değer aynı çağrıda bulunamaz.",
      "exclusivePairs": [
        {
          "legacyFields": ["careDayActualHours", "careNightActualHours"],
          "canonicalFields": ["nonRegisteredNursingDayActualHours", "nonRegisteredNursingNightActualHours"]
        },
        {
          "legacyFields": ["nursingAssociateDayActualHours", "nursingAssociateNightActualHours"],
          "canonicalFields": ["registeredNursingAssociateDayActualHours", "registeredNursingAssociateNightActualHours", "nonRegisteredNursingAssociateDayActualHours", "nonRegisteredNursingAssociateNightActualHours"]
        }
      ],
      "errorCode": "MUTUALLY_EXCLUSIVE_NURSING_INPUTS",
      "resultProduced": false
    }
  },
  "output": {
    "fieldCount": 25,
    "fieldOrder": [
      "borPct",
      "alosDays",
      "averageAvailableBeds",
      "bedTurnoverPerBedPeriod",
      "rnActualHours",
      "registeredNursingAssociateActualHours",
      "nonRegisteredNursingAssociateActualHours",
      "nursingAssociateActualHours",
      "nonRegisteredNursingActualHours",
      "registeredAHPActualHours",
      "nonRegisteredAHPActualHours",
      "registeredClinicalActualHours",
      "nonRegisteredClinicalActualHours",
      "totalClinicalActualHours",
      "rnCHPPD",
      "registeredNursingAssociateCHPPD",
      "nonRegisteredNursingAssociateCHPPD",
      "nursingAssociateCHPPD",
      "nonRegisteredNursingCHPPD",
      "registeredAHPCHPPD",
      "nonRegisteredAHPCHPPD",
      "registeredClinicalCHPPD",
      "nonRegisteredClinicalCHPPD",
      "totalCHPPD",
      "averageMidnightCensus"
    ],
    "fields": {
      "borPct": {"type": "number", "unit": {"id": "percent", "label": "%"}},
      "alosDays": {"type": ["number", "null"], "unit": {"id": "day", "label": "gün"}},
      "averageAvailableBeds": {"type": "number", "unit": {"id": "bed", "label": "yatak"}},
      "bedTurnoverPerBedPeriod": {"type": "number", "unit": {"id": "admission-per-bed-period", "label": "kabul/yatak/dönem"}},
      "rnActualHours": {"type": "number", "unit": {"id": "staff-hour", "label": "personel-saat"}},
      "registeredNursingAssociateActualHours": {"type": "number", "unit": {"id": "staff-hour", "label": "personel-saat"}},
      "nonRegisteredNursingAssociateActualHours": {"type": "number", "unit": {"id": "staff-hour", "label": "personel-saat"}},
      "nursingAssociateActualHours": {"type": "number", "unit": {"id": "staff-hour", "label": "personel-saat"}, "description": "Yalnız nursing associate kategorisinin iki kayıt statüsünü birleştirir; kayıt statüsü toplamı değildir."},
      "nonRegisteredNursingActualHours": {"type": "number", "unit": {"id": "staff-hour", "label": "personel-saat"}, "description": "Nursing associate dışındaki kayıtlı olmayan nursing kategorisi."},
      "registeredAHPActualHours": {"type": "number", "unit": {"id": "staff-hour", "label": "personel-saat"}},
      "nonRegisteredAHPActualHours": {"type": "number", "unit": {"id": "staff-hour", "label": "personel-saat"}},
      "registeredClinicalActualHours": {"type": "number", "unit": {"id": "staff-hour", "label": "personel-saat"}, "includes": ["rnActualHours", "registeredNursingAssociateActualHours", "registeredAHPActualHours"]},
      "nonRegisteredClinicalActualHours": {"type": "number", "unit": {"id": "staff-hour", "label": "personel-saat"}, "includes": ["nonRegisteredNursingAssociateActualHours", "nonRegisteredNursingActualHours", "nonRegisteredAHPActualHours"]},
      "totalClinicalActualHours": {"type": "number", "unit": {"id": "staff-hour", "label": "personel-saat"}},
      "rnCHPPD": {"type": ["number", "null"], "unit": {"id": "staff-hour-per-patient-day", "label": "personel-saat/hasta-günü"}},
      "registeredNursingAssociateCHPPD": {"type": ["number", "null"], "unit": {"id": "staff-hour-per-patient-day", "label": "personel-saat/hasta-günü"}},
      "nonRegisteredNursingAssociateCHPPD": {"type": ["number", "null"], "unit": {"id": "staff-hour-per-patient-day", "label": "personel-saat/hasta-günü"}},
      "nursingAssociateCHPPD": {"type": ["number", "null"], "unit": {"id": "staff-hour-per-patient-day", "label": "personel-saat/hasta-günü"}, "description": "Yalnız nursing associate kategorisinin iki kayıt statüsünü birleştirir; kayıt statüsü toplamı değildir."},
      "nonRegisteredNursingCHPPD": {"type": ["number", "null"], "unit": {"id": "staff-hour-per-patient-day", "label": "personel-saat/hasta-günü"}},
      "registeredAHPCHPPD": {"type": ["number", "null"], "unit": {"id": "staff-hour-per-patient-day", "label": "personel-saat/hasta-günü"}},
      "nonRegisteredAHPCHPPD": {"type": ["number", "null"], "unit": {"id": "staff-hour-per-patient-day", "label": "personel-saat/hasta-günü"}},
      "registeredClinicalCHPPD": {"type": ["number", "null"], "unit": {"id": "staff-hour-per-patient-day", "label": "personel-saat/hasta-günü"}, "includesNursingAssociateStatus": "registered"},
      "nonRegisteredClinicalCHPPD": {"type": ["number", "null"], "unit": {"id": "staff-hour-per-patient-day", "label": "personel-saat/hasta-günü"}, "includesNursingAssociateStatus": "non-registered"},
      "totalCHPPD": {"type": ["number", "null"], "unit": {"id": "staff-hour-per-patient-day", "label": "personel-saat/hasta-günü"}},
      "averageMidnightCensus": {"type": "number", "unit": {"id": "patient", "label": "hasta"}}
    }
  },
  "formulas": [
    {"id": "BOR_PCT", "outputField": "borPct", "expression": "occupiedBedDays / availableBedDays * 100", "sourceIds": ["WHO_FACILITY_INDICATORS_2019"], "numeratorField": "occupiedBedDays", "denominatorField": "availableBedDays", "factor": 100},
    {"id": "ALOS_DAYS", "outputField": "alosDays", "expression": "admissions === 0 ? null : occupiedBedDays / admissions", "sourceIds": ["WHO_FACILITY_INDICATORS_2019"], "numeratorField": "occupiedBedDays", "denominatorField": "admissions", "nullReasonCode": "ADMISSIONS_ZERO"},
    {"id": "AVERAGE_AVAILABLE_BEDS", "outputField": "averageAvailableBeds", "expression": "availableBedDays / periodDays", "sourceIds": ["WHO_FACILITY_INDICATORS_2019"], "numeratorField": "availableBedDays", "denominatorField": "periodDays"},
    {"id": "BED_TURNOVER_PER_BED_PERIOD", "outputField": "bedTurnoverPerBedPeriod", "expression": "admissions / averageAvailableBeds", "sourceIds": ["WHO_FACILITY_INDICATORS_2019", "WHO_WHR_BP41_2010"], "numeratorField": "admissions", "denominatorField": "averageAvailableBeds", "annualized": false},
    {"id": "RN_ACTUAL_HOURS", "outputField": "rnActualHours", "expression": "rnDayActualHours + rnNightActualHours", "sourceIds": ["NHS_CHPPD_GUIDANCE_ALL_INPATIENT_TRUSTS_2023"], "termFields": ["rnDayActualHours", "rnNightActualHours"]},
    {"id": "REGISTERED_NA_ACTUAL_HOURS", "outputField": "registeredNursingAssociateActualHours", "expression": "registeredNursingAssociateDayActualHours + registeredNursingAssociateNightActualHours", "sourceIds": ["NHS_CHPPD_GUIDANCE_ALL_INPATIENT_TRUSTS_2023"], "termFields": ["registeredNursingAssociateDayActualHours", "registeredNursingAssociateNightActualHours"]},
    {"id": "NON_REGISTERED_NA_ACTUAL_HOURS", "outputField": "nonRegisteredNursingAssociateActualHours", "expression": "nonRegisteredNursingAssociateDayActualHours + nonRegisteredNursingAssociateNightActualHours", "sourceIds": ["NHS_CHPPD_GUIDANCE_ALL_INPATIENT_TRUSTS_2023"], "termFields": ["nonRegisteredNursingAssociateDayActualHours", "nonRegisteredNursingAssociateNightActualHours"]},
    {"id": "NURSING_ASSOCIATE_ACTUAL_HOURS", "outputField": "nursingAssociateActualHours", "expression": "registeredNursingAssociateActualHours + nonRegisteredNursingAssociateActualHours", "sourceIds": ["NHS_CHPPD_GUIDANCE_ALL_INPATIENT_TRUSTS_2023"], "termFields": ["registeredNursingAssociateActualHours", "nonRegisteredNursingAssociateActualHours"]},
    {"id": "NON_REGISTERED_NURSING_ACTUAL_HOURS", "outputField": "nonRegisteredNursingActualHours", "expression": "nonRegisteredNursingDayActualHours + nonRegisteredNursingNightActualHours", "sourceIds": ["NHS_CHPPD_GUIDANCE_ALL_INPATIENT_TRUSTS_2023"], "termFields": ["nonRegisteredNursingDayActualHours", "nonRegisteredNursingNightActualHours"]},
    {"id": "REGISTERED_AHP_ACTUAL_HOURS", "outputField": "registeredAHPActualHours", "expression": "registeredAHPDayActualHours + registeredAHPNightActualHours", "sourceIds": ["NHS_CHPPD_GUIDANCE_ALL_INPATIENT_TRUSTS_2023"], "termFields": ["registeredAHPDayActualHours", "registeredAHPNightActualHours"]},
    {"id": "NON_REGISTERED_AHP_ACTUAL_HOURS", "outputField": "nonRegisteredAHPActualHours", "expression": "nonRegisteredAHPDayActualHours + nonRegisteredAHPNightActualHours", "sourceIds": ["NHS_CHPPD_GUIDANCE_ALL_INPATIENT_TRUSTS_2023"], "termFields": ["nonRegisteredAHPDayActualHours", "nonRegisteredAHPNightActualHours"]},
    {"id": "REGISTERED_CLINICAL_ACTUAL_HOURS", "outputField": "registeredClinicalActualHours", "expression": "rnActualHours + registeredNursingAssociateActualHours + registeredAHPActualHours", "sourceIds": ["NHS_CHPPD_GUIDANCE_ALL_INPATIENT_TRUSTS_2023"], "termFields": ["rnActualHours", "registeredNursingAssociateActualHours", "registeredAHPActualHours"]},
    {"id": "NON_REGISTERED_CLINICAL_ACTUAL_HOURS", "outputField": "nonRegisteredClinicalActualHours", "expression": "nonRegisteredNursingAssociateActualHours + nonRegisteredNursingActualHours + nonRegisteredAHPActualHours", "sourceIds": ["NHS_CHPPD_GUIDANCE_ALL_INPATIENT_TRUSTS_2023"], "termFields": ["nonRegisteredNursingAssociateActualHours", "nonRegisteredNursingActualHours", "nonRegisteredAHPActualHours"]},
    {"id": "TOTAL_CLINICAL_ACTUAL_HOURS", "outputField": "totalClinicalActualHours", "expression": "registeredClinicalActualHours + nonRegisteredClinicalActualHours", "sourceIds": ["NHS_CHPPD_GUIDANCE_ALL_INPATIENT_TRUSTS_2023"], "termFields": ["registeredClinicalActualHours", "nonRegisteredClinicalActualHours"]},
    {"id": "RN_CHPPD", "outputField": "rnCHPPD", "expression": "midnightPatientCensusSum === 0 ? null : rnActualHours / midnightPatientCensusSum", "sourceIds": ["NHS_CHPPD_GUIDANCE_ALL_INPATIENT_TRUSTS_2023"], "numeratorField": "rnActualHours", "denominatorField": "midnightPatientCensusSum", "nullReasonCode": "MIDNIGHT_PATIENT_CENSUS_SUM_ZERO"},
    {"id": "REGISTERED_NA_CHPPD", "outputField": "registeredNursingAssociateCHPPD", "expression": "midnightPatientCensusSum === 0 ? null : registeredNursingAssociateActualHours / midnightPatientCensusSum", "sourceIds": ["NHS_CHPPD_GUIDANCE_ALL_INPATIENT_TRUSTS_2023"], "numeratorField": "registeredNursingAssociateActualHours", "denominatorField": "midnightPatientCensusSum", "nullReasonCode": "MIDNIGHT_PATIENT_CENSUS_SUM_ZERO"},
    {"id": "NON_REGISTERED_NA_CHPPD", "outputField": "nonRegisteredNursingAssociateCHPPD", "expression": "midnightPatientCensusSum === 0 ? null : nonRegisteredNursingAssociateActualHours / midnightPatientCensusSum", "sourceIds": ["NHS_CHPPD_GUIDANCE_ALL_INPATIENT_TRUSTS_2023"], "numeratorField": "nonRegisteredNursingAssociateActualHours", "denominatorField": "midnightPatientCensusSum", "nullReasonCode": "MIDNIGHT_PATIENT_CENSUS_SUM_ZERO"},
    {"id": "NURSING_ASSOCIATE_CHPPD", "outputField": "nursingAssociateCHPPD", "expression": "midnightPatientCensusSum === 0 ? null : nursingAssociateActualHours / midnightPatientCensusSum", "sourceIds": ["NHS_CHPPD_GUIDANCE_ALL_INPATIENT_TRUSTS_2023"], "numeratorField": "nursingAssociateActualHours", "denominatorField": "midnightPatientCensusSum", "nullReasonCode": "MIDNIGHT_PATIENT_CENSUS_SUM_ZERO"},
    {"id": "NON_REGISTERED_NURSING_CHPPD", "outputField": "nonRegisteredNursingCHPPD", "expression": "midnightPatientCensusSum === 0 ? null : nonRegisteredNursingActualHours / midnightPatientCensusSum", "sourceIds": ["NHS_CHPPD_GUIDANCE_ALL_INPATIENT_TRUSTS_2023"], "numeratorField": "nonRegisteredNursingActualHours", "denominatorField": "midnightPatientCensusSum", "nullReasonCode": "MIDNIGHT_PATIENT_CENSUS_SUM_ZERO"},
    {"id": "REGISTERED_AHP_CHPPD", "outputField": "registeredAHPCHPPD", "expression": "midnightPatientCensusSum === 0 ? null : registeredAHPActualHours / midnightPatientCensusSum", "sourceIds": ["NHS_CHPPD_GUIDANCE_ALL_INPATIENT_TRUSTS_2023"], "numeratorField": "registeredAHPActualHours", "denominatorField": "midnightPatientCensusSum", "nullReasonCode": "MIDNIGHT_PATIENT_CENSUS_SUM_ZERO"},
    {"id": "NON_REGISTERED_AHP_CHPPD", "outputField": "nonRegisteredAHPCHPPD", "expression": "midnightPatientCensusSum === 0 ? null : nonRegisteredAHPActualHours / midnightPatientCensusSum", "sourceIds": ["NHS_CHPPD_GUIDANCE_ALL_INPATIENT_TRUSTS_2023"], "numeratorField": "nonRegisteredAHPActualHours", "denominatorField": "midnightPatientCensusSum", "nullReasonCode": "MIDNIGHT_PATIENT_CENSUS_SUM_ZERO"},
    {"id": "REGISTERED_CLINICAL_CHPPD", "outputField": "registeredClinicalCHPPD", "expression": "midnightPatientCensusSum === 0 ? null : registeredClinicalActualHours / midnightPatientCensusSum", "sourceIds": ["NHS_CHPPD_GUIDANCE_ALL_INPATIENT_TRUSTS_2023"], "numeratorField": "registeredClinicalActualHours", "denominatorField": "midnightPatientCensusSum", "nullReasonCode": "MIDNIGHT_PATIENT_CENSUS_SUM_ZERO"},
    {"id": "NON_REGISTERED_CLINICAL_CHPPD", "outputField": "nonRegisteredClinicalCHPPD", "expression": "midnightPatientCensusSum === 0 ? null : nonRegisteredClinicalActualHours / midnightPatientCensusSum", "sourceIds": ["NHS_CHPPD_GUIDANCE_ALL_INPATIENT_TRUSTS_2023"], "numeratorField": "nonRegisteredClinicalActualHours", "denominatorField": "midnightPatientCensusSum", "nullReasonCode": "MIDNIGHT_PATIENT_CENSUS_SUM_ZERO"},
    {"id": "TOTAL_CHPPD", "outputField": "totalCHPPD", "expression": "midnightPatientCensusSum === 0 ? null : totalClinicalActualHours / midnightPatientCensusSum", "sourceIds": ["NHS_CHPPD_GUIDANCE_ALL_INPATIENT_TRUSTS_2023"], "numeratorFields": ["registeredClinicalActualHours", "nonRegisteredClinicalActualHours"], "denominatorField": "midnightPatientCensusSum", "nullReasonCode": "MIDNIGHT_PATIENT_CENSUS_SUM_ZERO"},
    {"id": "AVERAGE_MIDNIGHT_CENSUS", "outputField": "averageMidnightCensus", "expression": "midnightPatientCensusSum / periodDays", "sourceIds": ["NHS_CHPPD_GUIDANCE_ALL_INPATIENT_TRUSTS_2023"], "numeratorField": "midnightPatientCensusSum", "denominatorField": "periodDays"}
  ],
  "errorCodes": {
    "INVALID_JSON": {"scope": "JSON panel parser", "field": "jsonInput", "message": "JSON metni ayrıştırılamadı."},
    "INPUT_NOT_OBJECT": {"scope": "engine", "field": null, "message": "Girdi, dizi olmayan bir nesne olmalıdır."},
    "MISSING_REQUIRED_FIELD": {"scope": "engine", "messageTemplate": "{field} zorunludur."},
    "UNEXPECTED_FIELD": {"scope": "engine", "messageTemplate": "{field} sözleşmede tanımlı bir girdi alanı değildir."},
    "MUTUALLY_EXCLUSIVE_NURSING_INPUTS": {"scope": "engine and legacy adapter", "field": null, "message": "Legacy care*/nursingAssociate* alanları ile güncel nursing alanları aynı çağrıda pozitif olamaz; tek bir sözleşme ailesi kullanın.", "resultProduced": false},
    "LEGACY_NURSING_ASSOCIATE_ALLOCATION_REQUIRED": {"scope": "legacy adapter", "field": null},
    "LEGACY_NURSING_ASSOCIATE_ALLOCATION_MISMATCH": {"scope": "legacy adapter", "field": null},
    "TYPE_NUMBER_REQUIRED": {"scope": "engine", "messageTemplate": "{field} sayı olmalıdır; sayısal metinler dönüştürülmez."},
    "TYPE_INTEGER_REQUIRED": {"scope": "engine", "appliesTo": ["periodDays", "admissions", "midnightPatientCensusSum"], "messageTemplate": "{field} tam sayı olmalıdır."},
    "NON_FINITE_NUMBER": {"scope": "engine", "messageTemplate": "{field} sonlu bir sayı olmalıdır."},
    "VALUE_MUST_BE_GREATER_THAN_ZERO": {"scope": "engine", "appliesTo": ["periodDays", "availableBedDays"], "messageTemplate": "{field} sıfırdan büyük olmalıdır."},
    "VALUE_MUST_BE_NON_NEGATIVE": {"scope": "engine", "messageTemplate": "{field} negatif olamaz."},
    "CALCULATION_NON_FINITE": {"scope": "engine", "messageTemplate": "{field} hesabı sonlu bir sayı üretmedi; sonuç döndürülmedi."}
  },
  "nullReasonCodes": {
    "ADMISSIONS_ZERO": {"appliesTo": ["alosDays"]},
    "MIDNIGHT_PATIENT_CENSUS_SUM_ZERO": {
      "appliesTo": ["rnCHPPD", "registeredNursingAssociateCHPPD", "nonRegisteredNursingAssociateCHPPD", "nursingAssociateCHPPD", "nonRegisteredNursingCHPPD", "registeredAHPCHPPD", "nonRegisteredAHPCHPPD", "registeredClinicalCHPPD", "nonRegisteredClinicalCHPPD", "totalCHPPD"]
    }
  },
  "sources": {
    "WHO_FACILITY_INDICATORS_2019": {
      "organization": "World Health Organization",
      "title": "Analysis and use of health facility data: guidance for indicators",
      "url": "https://www.who.int/docs/default-source/documents/ddi/facilityanalysisguidance-indicators.pdf",
      "accessDate": "2026-07-29",
      "supports": ["BOR pay/payda tanımı", "ALOS pay/payda ve admissions veri tanımı", "Kullanılabilir yatak-gün"]
    },
    "WHO_WHR_BP41_2010": {
      "organization": "World Health Organization",
      "title": "Fiscal space for health in resource-poor countries — World Health Report (2010) Background Paper 41",
      "url": "https://cdn.who.int/media/docs/default-source/health-financing/technical-briefs-background-papers/whr-2010-background-paper-41.pdf?sfvrsn=ef456560_3",
      "accessDate": "2026-07-29",
      "supports": ["Bed turnover rate = total admissions / beds"]
    },
    "NHS_CHPPD_GUIDANCE_ALL_INPATIENT_TRUSTS_2023": {
      "organization": "NHS England",
      "title": "Care hours per patient day (CHPPD): guidance for all inpatient trusts",
      "publicationDate": "2023-05-11",
      "lastUpdatedDate": "2023-11-15",
      "url": "https://www.england.nhs.uk/long-read/care-hours-per-patient-day-chppd-guidance-for-all-inpatient-trusts/",
      "accessDate": "2026-07-29",
      "legacy": false,
      "supports": [
        "Ward establishment/bütçede ve named inpatient area duty roster'ında yer alan dahil kapsamlı klinik personel",
        "Registered nurse/midwife, nursing associate, non-registered nursing, registered AHP ve non-registered AHP gündüz/gece actual hours worked (paid)",
        "Dönem içindeki günlük 23:59 hasta sayımları toplamı",
        "Assistant practitioner, student ve duty roster dışında birden çok ward/service/pathway arasında çalışan personelin hariç tutulması"
      ],
      "evidenceMappings": [
        {
          "requirement": "Nursing associate kayıt statüsü kapsamı",
          "section": "Introduction",
          "sourceText": "all registered and non-registered nursing associates (NAs)",
          "mapsToInputs": ["registeredNursingAssociateDayActualHours", "registeredNursingAssociateNightActualHours", "nonRegisteredNursingAssociateDayActualHours", "nonRegisteredNursingAssociateNightActualHours"]
        },
        {
          "requirement": "Kayıtlı ve kayıtlı olmayan klinik ayrımı",
          "section": "What is CHPPD?",
          "sourceText": "differentiates registered clinical staff from non-registered clinical staff",
          "mapsToOutputs": ["registeredClinicalActualHours", "registeredClinicalCHPPD", "nonRegisteredClinicalActualHours", "nonRegisteredClinicalCHPPD"]
        },
        {
          "requirement": "Genel toplam korunumu",
          "section": "How to calculate CHPPD",
          "sourceParaphrase": "Kayıtlı ve kayıtlı olmayan ward-based klinik personel saatleri aynı 23:59 yatan hasta toplamına bölünür.",
          "mapsToOutputs": ["totalClinicalActualHours", "totalCHPPD"]
        },
        {
          "requirement": "Fiili ücretli saat ve gündüz/gece alanları",
          "section": "SDCS template explanations and definitions, item 13",
          "sourceParaphrase": "Aylık actual hours worked (paid), nursing associates dahil her personel kategorisi için gündüz ve gece temelinde girilir.",
          "mapsToInputs": ["rnDayActualHours", "rnNightActualHours", "registeredNursingAssociateDayActualHours", "registeredNursingAssociateNightActualHours", "nonRegisteredNursingAssociateDayActualHours", "nonRegisteredNursingAssociateNightActualHours", "nonRegisteredNursingDayActualHours", "nonRegisteredNursingNightActualHours", "registeredAHPDayActualHours", "registeredAHPNightActualHours", "nonRegisteredAHPDayActualHours", "nonRegisteredAHPNightActualHours"]
        }
      ]
    },
    "NHS_CHPPD_GUIDANCE_V3_2016_LEGACY": {
      "organization": "NHS England",
      "title": "Care Hours per Patient Day (CHPPD): Guidance for Unify collection, version 3",
      "documentDate": "2016-04",
      "urlPathDate": "2019-10",
      "url": "https://www.england.nhs.uk/wp-content/uploads/2019/10/CHPPD_guidance_for_unify_v3.pdf",
      "accessDate": "2026-07-29",
      "legacy": true,
      "notBasisFor": ["registeredClinicalActualHours", "registeredClinicalCHPPD", "nonRegisteredClinicalActualHours", "nonRegisteredClinicalCHPPD", "totalClinicalActualHours", "totalCHPPD"],
      "supports": ["Yalnız ayrı legacy v2 adapter çağrısındaki care* alanlarının tarihsel bağlamı"]
    }
  },
  "legacyAdapter": {
    "function": "window.hesaplaYatakKapasiteLegacyV2(input, nursingAssociateAllocation)",
    "fromContractVersion": "2.0.0",
    "toContractVersion": "3.0.0",
    "separateFromCanonicalCall": true,
    "inputNursingMode": "legacy-v2",
    "rules": [
      "care* ile nonRegisteredNursing* ailelerinden ikisi de pozitifse MUTUALLY_EXCLUSIVE_NURSING_INPUTS ile sonuçsuz reddet.",
      "Birleşik legacy nursingAssociate* saatlerini kanonik statü toplamlarına tahmin ederek dağıtma.",
      "İkinci argümandaki dört kayıt-statüsü/gündüz-gece alanının gündüz ve gece toplamları legacy nursingAssociate* alanlarıyla birebir eşleşmelidir."
    ]
  },
  "responseEnvelope": {
    "success": {
      "fieldOrder": ["ok", "contractVersion", "period", "inputs", "results", "usedValues", "nullReasons", "warnings", "sourceIds"],
      "required": ["ok", "contractVersion", "period", "inputs", "results", "usedValues", "nullReasons", "warnings", "sourceIds"],
      "additionalProperties": false,
      "fields": {
        "ok": {"type": "boolean", "const": true},
        "contractVersion": {"type": "string", "const": "3.0.0"},
        "period": {"type": "object", "valueShape": {"periodDays": "input.periodDays", "unit": "day"}},
        "inputs": {"type": "object", "description": "Doğrulanmış 17 kanonik girdinin FIELD_ORDER sırasında yankısı."},
        "results": {"type": "object", "description": "output.fields altında tanımlanan 25 sayısal veya null sonuç."},
        "usedValues": {"type": "object", "description": "Her sonuç için kullanılan pay, payda, çarpan veya toplam terimleri."},
        "nullReasons": {"type": "object", "description": "Yalnız null dönen sonuçların nedenleri."},
        "warnings": {"type": "array", "description": "Hesabı durdurmayan veri-tanımı uyarıları."},
        "sourceIds": {"type": "array", "const": ["WHO_FACILITY_INDICATORS_2019", "WHO_WHR_BP41_2010", "NHS_CHPPD_GUIDANCE_ALL_INPATIENT_TRUSTS_2023"]}
      }
    },
    "error": {
      "fieldOrder": ["ok", "contractVersion", "errors", "warnings", "sourceIds"],
      "required": ["ok", "contractVersion", "errors", "warnings", "sourceIds"],
      "additionalProperties": false,
      "fields": {
        "ok": {"type": "boolean", "const": false},
        "contractVersion": {"type": "string", "const": "3.0.0"},
        "errors": {"type": "array", "minimumItems": 1, "itemShape": {"code": "string", "field": "string|null", "message": "string"}},
        "warnings": {"type": "array", "const": []},
        "sourceIds": {"type": "array", "const": []}
      },
      "omittedFields": ["period", "inputs", "results", "usedValues", "nullReasons"],
      "behavior": "Herhangi bir doğrulama, overlap veya sonlu sonuç hatasında kısmi hesap sonucu üretilmez."
    },
    "usedValuesShape": {
      "borPct": {"numeratorField": "occupiedBedDays", "numerator": "number", "denominatorField": "availableBedDays", "denominator": "number", "factor": 100},
      "alosDays": {"numeratorField": "occupiedBedDays", "numerator": "number", "denominatorField": "admissions", "denominator": "integer"},
      "averageAvailableBeds": {"numeratorField": "availableBedDays", "numerator": "number", "denominatorField": "periodDays", "denominator": "integer"},
      "bedTurnoverPerBedPeriod": {"numeratorField": "admissions", "numerator": "integer", "denominatorField": "averageAvailableBeds", "denominator": "number"},
      "rnActualHours": {"termFields": ["rnDayActualHours", "rnNightActualHours"], "terms": ["number", "number"]},
      "registeredNursingAssociateActualHours": {"termFields": ["registeredNursingAssociateDayActualHours", "registeredNursingAssociateNightActualHours"], "terms": ["number", "number"]},
      "nonRegisteredNursingAssociateActualHours": {"termFields": ["nonRegisteredNursingAssociateDayActualHours", "nonRegisteredNursingAssociateNightActualHours"], "terms": ["number", "number"]},
      "nursingAssociateActualHours": {"termFields": ["registeredNursingAssociateActualHours", "nonRegisteredNursingAssociateActualHours"], "terms": ["number", "number"]},
      "nonRegisteredNursingActualHours": {"termFields": ["nonRegisteredNursingDayActualHours", "nonRegisteredNursingNightActualHours"], "terms": ["number", "number"]},
      "registeredAHPActualHours": {"termFields": ["registeredAHPDayActualHours", "registeredAHPNightActualHours"], "terms": ["number", "number"]},
      "nonRegisteredAHPActualHours": {"termFields": ["nonRegisteredAHPDayActualHours", "nonRegisteredAHPNightActualHours"], "terms": ["number", "number"]},
      "registeredClinicalActualHours": {"termFields": ["rnActualHours", "registeredNursingAssociateActualHours", "registeredAHPActualHours"], "terms": ["number", "number", "number"]},
      "nonRegisteredClinicalActualHours": {"termFields": ["nonRegisteredNursingAssociateActualHours", "nonRegisteredNursingActualHours", "nonRegisteredAHPActualHours"], "terms": ["number", "number", "number"]},
      "totalClinicalActualHours": {"termFields": ["registeredClinicalActualHours", "nonRegisteredClinicalActualHours"], "terms": ["number", "number"]},
      "rnCHPPD": {"numeratorField": "rnActualHours", "numerator": "number", "denominatorField": "midnightPatientCensusSum", "denominator": "integer"},
      "registeredNursingAssociateCHPPD": {"numeratorField": "registeredNursingAssociateActualHours", "numerator": "number", "denominatorField": "midnightPatientCensusSum", "denominator": "integer"},
      "nonRegisteredNursingAssociateCHPPD": {"numeratorField": "nonRegisteredNursingAssociateActualHours", "numerator": "number", "denominatorField": "midnightPatientCensusSum", "denominator": "integer"},
      "nursingAssociateCHPPD": {"numeratorField": "nursingAssociateActualHours", "numerator": "number", "denominatorField": "midnightPatientCensusSum", "denominator": "integer"},
      "nonRegisteredNursingCHPPD": {"numeratorField": "nonRegisteredNursingActualHours", "numerator": "number", "denominatorField": "midnightPatientCensusSum", "denominator": "integer"},
      "registeredAHPCHPPD": {"numeratorField": "registeredAHPActualHours", "numerator": "number", "denominatorField": "midnightPatientCensusSum", "denominator": "integer"},
      "nonRegisteredAHPCHPPD": {"numeratorField": "nonRegisteredAHPActualHours", "numerator": "number", "denominatorField": "midnightPatientCensusSum", "denominator": "integer"},
      "registeredClinicalCHPPD": {"numeratorField": "registeredClinicalActualHours", "numerator": "number", "denominatorField": "midnightPatientCensusSum", "denominator": "integer"},
      "nonRegisteredClinicalCHPPD": {"numeratorField": "nonRegisteredClinicalActualHours", "numerator": "number", "denominatorField": "midnightPatientCensusSum", "denominator": "integer"},
      "totalCHPPD": {"numeratorFields": ["registeredClinicalActualHours", "nonRegisteredClinicalActualHours"], "numeratorTerms": ["number", "number"], "numerator": "number", "denominatorField": "midnightPatientCensusSum", "denominator": "integer"},
      "averageMidnightCensus": {"numeratorField": "midnightPatientCensusSum", "numerator": "integer", "denominatorField": "periodDays", "denominator": "integer"}
    }
  },
  "example": {
    "id": "easy-current-scope-v3",
    "description": "Nursing associate saatleri kayıt statüsüne ayrılmış, genel toplamı 7.333333333333333 olan kanonik vaka.",
    "call": {
      "periodDays": 30,
      "availableBedDays": 600,
      "occupiedBedDays": 450,
      "admissions": 75,
      "rnDayActualHours": 1200,
      "rnNightActualHours": 600,
      "registeredNursingAssociateDayActualHours": 120,
      "registeredNursingAssociateNightActualHours": 80,
      "nonRegisteredNursingAssociateDayActualHours": 60,
      "nonRegisteredNursingAssociateNightActualHours": 40,
      "nonRegisteredNursingDayActualHours": 600,
      "nonRegisteredNursingNightActualHours": 300,
      "registeredAHPDayActualHours": 120,
      "registeredAHPNightActualHours": 80,
      "nonRegisteredAHPDayActualHours": 60,
      "nonRegisteredAHPNightActualHours": 40,
      "midnightPatientCensusSum": 450
    },
    "expectedResponse": {
      "ok": true,
      "contractVersion": "3.0.0",
      "period": {"periodDays": 30, "unit": "day"},
      "inputs": {
        "periodDays": 30,
        "availableBedDays": 600,
        "occupiedBedDays": 450,
        "admissions": 75,
        "rnDayActualHours": 1200,
        "rnNightActualHours": 600,
        "registeredNursingAssociateDayActualHours": 120,
        "registeredNursingAssociateNightActualHours": 80,
        "nonRegisteredNursingAssociateDayActualHours": 60,
        "nonRegisteredNursingAssociateNightActualHours": 40,
        "nonRegisteredNursingDayActualHours": 600,
        "nonRegisteredNursingNightActualHours": 300,
        "registeredAHPDayActualHours": 120,
        "registeredAHPNightActualHours": 80,
        "nonRegisteredAHPDayActualHours": 60,
        "nonRegisteredAHPNightActualHours": 40,
        "midnightPatientCensusSum": 450
      },
      "results": {
        "borPct": 75,
        "alosDays": 6,
        "averageAvailableBeds": 20,
        "bedTurnoverPerBedPeriod": 3.75,
        "rnActualHours": 1800,
        "registeredNursingAssociateActualHours": 200,
        "nonRegisteredNursingAssociateActualHours": 100,
        "nursingAssociateActualHours": 300,
        "nonRegisteredNursingActualHours": 900,
        "registeredAHPActualHours": 200,
        "nonRegisteredAHPActualHours": 100,
        "registeredClinicalActualHours": 2200,
        "nonRegisteredClinicalActualHours": 1100,
        "totalClinicalActualHours": 3300,
        "rnCHPPD": 4,
        "registeredNursingAssociateCHPPD": 0.4444444444444444,
        "nonRegisteredNursingAssociateCHPPD": 0.2222222222222222,
        "nursingAssociateCHPPD": 0.6666666666666666,
        "nonRegisteredNursingCHPPD": 2,
        "registeredAHPCHPPD": 0.4444444444444444,
        "nonRegisteredAHPCHPPD": 0.2222222222222222,
        "registeredClinicalCHPPD": 4.888888888888889,
        "nonRegisteredClinicalCHPPD": 2.4444444444444446,
        "totalCHPPD": 7.333333333333333,
        "averageMidnightCensus": 15
      },
      "usedValues": {
        "borPct": {"numeratorField": "occupiedBedDays", "numerator": 450, "denominatorField": "availableBedDays", "denominator": 600, "factor": 100},
        "alosDays": {"numeratorField": "occupiedBedDays", "numerator": 450, "denominatorField": "admissions", "denominator": 75},
        "averageAvailableBeds": {"numeratorField": "availableBedDays", "numerator": 600, "denominatorField": "periodDays", "denominator": 30},
        "bedTurnoverPerBedPeriod": {"numeratorField": "admissions", "numerator": 75, "denominatorField": "averageAvailableBeds", "denominator": 20},
        "rnActualHours": {"termFields": ["rnDayActualHours", "rnNightActualHours"], "terms": [1200, 600]},
        "registeredNursingAssociateActualHours": {"termFields": ["registeredNursingAssociateDayActualHours", "registeredNursingAssociateNightActualHours"], "terms": [120, 80]},
        "nonRegisteredNursingAssociateActualHours": {"termFields": ["nonRegisteredNursingAssociateDayActualHours", "nonRegisteredNursingAssociateNightActualHours"], "terms": [60, 40]},
        "nursingAssociateActualHours": {"termFields": ["registeredNursingAssociateActualHours", "nonRegisteredNursingAssociateActualHours"], "terms": [200, 100]},
        "nonRegisteredNursingActualHours": {"termFields": ["nonRegisteredNursingDayActualHours", "nonRegisteredNursingNightActualHours"], "terms": [600, 300]},
        "registeredAHPActualHours": {"termFields": ["registeredAHPDayActualHours", "registeredAHPNightActualHours"], "terms": [120, 80]},
        "nonRegisteredAHPActualHours": {"termFields": ["nonRegisteredAHPDayActualHours", "nonRegisteredAHPNightActualHours"], "terms": [60, 40]},
        "registeredClinicalActualHours": {"termFields": ["rnActualHours", "registeredNursingAssociateActualHours", "registeredAHPActualHours"], "terms": [1800, 200, 200]},
        "nonRegisteredClinicalActualHours": {"termFields": ["nonRegisteredNursingAssociateActualHours", "nonRegisteredNursingActualHours", "nonRegisteredAHPActualHours"], "terms": [100, 900, 100]},
        "totalClinicalActualHours": {"termFields": ["registeredClinicalActualHours", "nonRegisteredClinicalActualHours"], "terms": [2200, 1100]},
        "rnCHPPD": {"numeratorField": "rnActualHours", "numerator": 1800, "denominatorField": "midnightPatientCensusSum", "denominator": 450},
        "registeredNursingAssociateCHPPD": {"numeratorField": "registeredNursingAssociateActualHours", "numerator": 200, "denominatorField": "midnightPatientCensusSum", "denominator": 450},
        "nonRegisteredNursingAssociateCHPPD": {"numeratorField": "nonRegisteredNursingAssociateActualHours", "numerator": 100, "denominatorField": "midnightPatientCensusSum", "denominator": 450},
        "nursingAssociateCHPPD": {"numeratorField": "nursingAssociateActualHours", "numerator": 300, "denominatorField": "midnightPatientCensusSum", "denominator": 450},
        "nonRegisteredNursingCHPPD": {"numeratorField": "nonRegisteredNursingActualHours", "numerator": 900, "denominatorField": "midnightPatientCensusSum", "denominator": 450},
        "registeredAHPCHPPD": {"numeratorField": "registeredAHPActualHours", "numerator": 200, "denominatorField": "midnightPatientCensusSum", "denominator": 450},
        "nonRegisteredAHPCHPPD": {"numeratorField": "nonRegisteredAHPActualHours", "numerator": 100, "denominatorField": "midnightPatientCensusSum", "denominator": 450},
        "registeredClinicalCHPPD": {"numeratorField": "registeredClinicalActualHours", "numerator": 2200, "denominatorField": "midnightPatientCensusSum", "denominator": 450},
        "nonRegisteredClinicalCHPPD": {"numeratorField": "nonRegisteredClinicalActualHours", "numerator": 1100, "denominatorField": "midnightPatientCensusSum", "denominator": 450},
        "totalCHPPD": {"numeratorFields": ["registeredClinicalActualHours", "nonRegisteredClinicalActualHours"], "numeratorTerms": [2200, 1100], "numerator": 3300, "denominatorField": "midnightPatientCensusSum", "denominator": 450},
        "averageMidnightCensus": {"numeratorField": "midnightPatientCensusSum", "numerator": 450, "denominatorField": "periodDays", "denominator": 30}
      },
      "nullReasons": {},
      "warnings": [],
      "sourceIds": ["WHO_FACILITY_INDICATORS_2019", "WHO_WHR_BP41_2010", "NHS_CHPPD_GUIDANCE_ALL_INPATIENT_TRUSTS_2023"]
    }
  }
}
