4.4 KiB
ABDM IPD Discharge Summary FHIR R4 Integration & Fixes
Last Updated: 2026-09-06
Module: ABDM Gateway / IPD Discharge FHIR Generator
Files Modified:
app/Libraries/Abdm/Fhir/Generators/DischargeFhirGenerator.phpapp/Controllers/Ipd_discharge.phpapp/Controllers/AbdmGateway.phptests/unit/Abdm/FhirGeneratorsTest.php
1. Problem Summary
When generating and pushing an IPD Discharge Summary FHIR Bundle with attached PDF documents (Discharge Summary & IPD Bill) to an ABDM PHR app (e.g. ABHA / Aarogya Setu / Driefcase / Eka Care), the PHR application failed with:
"Error in parsing the data. your data is incorrect"
2. Root Cause Analysis (ABDM NRCES FHIR R4 Profile)
According to the official NRCES India ABDM FHIR R4 profile https://nrces.in/ndhm/fhir/r4/StructureDefinition/DischargeSummaryRecord:
-
Composition Section Slicing Rules:
- The discriminator for
Composition.sectioniscode.coding.code. - Every section slice has a strict cardinality of
0..1(Max: 1). - Using non-standard codes or repeating slice codes (e.g., multiple sections with code
425044008) violates the profile.
- The discriminator for
-
Code Discrepancies:
- Medications Section: Previously assigned
721981007(SNOMED for Diagnostic studies report / Investigations). Because PHR parsers expectDiagnosticReportentries under721981007, receivingMedicationRequestentries triggered a schema validation error. - Discharge Diagnosis: Previously used code
397659008. In ABDMDischargeSummaryRecord, diagnoses must be grouped under the standardMedicalHistoryslice (1003642006). - Procedures: Previously used code
371525003instead of profile slice code1003640003. - Care Plan / Advice: Previously used code
736271009instead of profile slice code734163000.
- Medications Section: Previously assigned
-
Standard ABDM Discharge Summary Section Slices:
Slice Name Standard SNOMED Code Standard Display Target Profile ChiefComplaints 422843007Chief complaint section ConditionMedicalHistory 1003642006Past medical history section Condition,ProcedurePhysicalExamination 425044008Physical exam section ObservationProcedures 1003640003History of past procedure section ProcedureMedications 1003606003Medication history section MedicationRequestInvestigations 721981007Diagnostic studies report DiagnosticReportLab,DiagnosticReportImagingCarePlan 734163000Care plan CarePlanDocumentReference 373942005Discharge summary DocumentReferenceAllergies 722446000Allergy record AllergyIntoleranceFamilyHistory 422432008Family history FamilyMemberHistory -
DocumentReference Requirements:
DocumentReferencerequires validstatus,type,subject,content[0].attachment(contentType,data,title,creation),description, andtext(XHTML narrative).
3. Implemented Fixes
-
DischargeFhirGenerator.php:- Aligned all
Composition.sectionslices to standard ABDM SNOMED codes and displays. - Merged diagnoses and clinical history under
Medical History(1003642006). - Consolidated physical exam observations (admission/discharge) under single
Physical Examination(425044008) slice. - Assigned correct
Medicationscode (1003606003) toMedicationRequestentries. - Assigned
Care Plancode (734163000) for follow-up and discharge advice. - Ensured
DocumentReferenceincludesdescriptionand validtextnarrative.
- Aligned all
-
Ipd_discharge.php:- Added
generateDischargeSummaryPdfBinary(int $ipdId, bool $withHeader = true)to render mPDF binaries and cache towritable/uploads/abdm/ipd/{ipdId}/discharge-summary.pdf. - Linked
buildIpdPdfDocumentsList()to auto-generate and include the PDF binary in ABDM FHIR requests.
- Added
-
AbdmGateway.php:- Integrated automatic generation of discharge summary PDFs when bundling or serving IPD care context records.
-
Unit Tests:
- Updated
tests/unit/Abdm/FhirGeneratorsTest.phpassertions to match standard section slice titles. - All 42 unit tests pass.
- Updated
4. Verification Command
To dump and verify the IPD discharge bundle from CLI:
php spark fhir:dump
Output is saved to writable/ipd9_bundle.json.