DHIN 2025Connectathon FHIR IG
0.2.0 - ci-build
DHIN 2025Connectathon FHIR IG, published by DHIN. This guide is not an authorized publication; it is the continuous build for version 0.2.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/Nigeria-FHIR-Community/2025Connectathon/ and changes regularly. See the Directory of published versions
| Official URL: https://sandbox.dhin-hie.org/ig/ImplementationGuide/org.dhin-hie.sandbox | Version: 0.2.0 | |||
| Draft as of 2025-11-19 | Computable Name: DHIN2025ConnectathonFHIRIG | |||
The DHIN 2025 Connectathon Implementation Guide (IG) brings together multiple tracks under a single standards-based framework to demonstrate, test, and advance healthcare interoperability in Nigeria and across Africa.
This IG follows the WHO SMART Guidelines approach (Standards-based, Machine-readable, Adaptable, Requirements-based, Testable), leveraging DAKs and HL7 FHIR R4 artifacts so systems can exchange health information seamlessly, securely, and in line with national and international best practices.
Nigeria’s health information ecosystem is often fragmented and siloed. The Digital Health Interoperability Network (DHIN) in collaboration with many government and development stakeholders convenes regulators, providers, developers, insurers, and innovators to design and test practical interoperability solutions through structured connectathons.
This IG documents the machine-readable artifacts, profiles, and value sets for the 2025 DHIN Connectathon tracks:
Each track builds on DAKs, regulatory frameworks, and stakeholder priorities—providing reference implementations for production systems.
NgCoverage, CoverageEligibilityRequest/Response, NgClaim, NgClaimResponse, NgInvoice, NgExplanationOfBenefitNgServiceRequest, NgTask, NgCarePlanMedication, MedicationRequest, MedicationDispense, InvoiceImmunization, ImmunizationRecommendation, Appointment, Encounter, ObservationDevice, DeviceRequest, Observation, NgTask, ProvenanceAll exchanges are defined via FHIR R4 profiles and conformance statements in this IG.
| Acronym | Meaning |
|---|---|
| AEFI | Adverse Event Following Immunization |
| DAK | Digital Adaptation Kit |
| DHIN | Digital Health Interoperability Network |
| SMART | Standards-based, Machine-readable, Adaptable, Requirements-based, Testable |
Conventions
- Prefer URN UUIDs for intra-bundle references (e.g.,
urn:uuid:...)- Use IG profiles:
NgPatient,NgPractitioner,NgProviderOrganization,NgPharmacyOrganization,NgInsurerOrganization, etc.- Transaction bundles must include
entry.request.method+entry.request.urlper entry- Keep examples minimal; warnings are acceptable, errors are not
Scenarios: (i) Eligibility Check, (ii) Pre-Authorization, (iii) Submission & Billing
Story (summary):
“Did you know your hospital bill can travel faster than you can say ‘where is my receipt?’” In Port Harcourt, night-shift injury becomes a same-day greenlight as the ER nurse runs a digital eligibility check, the clinician requests pre-auth on a tablet, and the cashier submits billing with clean links. A duplicate X-ray is auto-flagged; context is supplied, and approval follows—no phone-tag, no wahala.
Prerequisites
NgPatient, NgPractitioner, NgProviderOrganization, NgInsurerOrganization, NgCoverage, NgCoverageEligibilityRequest/Response, NgClaim, NgClaimResponse, NgInvoice, ExplanationOfBenefitSteps
A) Eligibility Check
NgEligibilityCheck-Request (transaction): Patient, Provider Practitioner, Provider Org, CoverageEligibilityRequestNgEligibilityCheck-Response (collection): Coverage, CoverageEligibilityResponseB) Pre-Authorization
NgPreAuthorizationBundle (transaction): Patient, Provider & Insurer Orgs, Coverage, Claim(use=preauthorization)NgPreAuthorizationBundle (collection): ClaimResponse decisionC) Submission & Billing
NgClaim(use=claim) + optional NgInvoiceExplanationOfBenefit (payer result)Expected Outcomes
inforce=true)ClaimResponse) linked to originating ClaimClaim; totals reconcile with Invoice (if present)Validation
Claim.use values correct across phasesentry.request.* present for transactionsEvidence
Pitfalls
entry.request.url in transactionsInvoice.lineItem.chargeItem[x] absent (must include chargeItemReference or chargeItemCodeableConcept)Story (summary):
“In Kano, a patient fills chronic meds without drama.” The pharmacy receives three medication requests, dispenses exact quantities, attaches counseling notes, and issues a simple invoice; payer or patient can later verify line items by dispense references.
Prerequisites
NgPatient, NgPractitioner (prescriber & dispenser), NgPharmacyOrganizationNgMedication ×3, NgMedicationRequest ×3NgMedicationDispense ×3, NgInvoice (optional)Steps
NgInvoiceExpected Outcomes
MedicationDispense.authorizingPrescription links to the right MedicationRequestlineItem references dispenses (or uses codeable concepts)Validation
lineItem.chargeItemReference or chargeItemCodeableConceptEvidence
Pitfalls
Story (summary):
“In Lafia, a PHC midwife escalates an ANC case with blood-pressure red flags.” A ServiceRequest and initial Task notify a secondary hospital; response updates Task.status, and tracking confirms arrival and completion—no missed calls, no lost papers.
Prerequisites
NgPatient, NgPractitioner, NgProviderOrganization (PHC & hospital)NgServiceRequest, NgTask, optional CommunicationSteps
ready)in-progress → completedExpected Outcomes
Task.for → Patient; Task.owner → receiving facilityTask.basedOn → ServiceRequestValidation
requested/ready → accepted → in-progress/completed)Evidence
Pitfalls
Task.basedOn link to ServiceRequestStory (summary):
“In Aba, a caregiver books a measles shot and later flags a mild fever.” A minimal scheduler suggests dates via ImmunizationRecommendation and Appointment; a separate AEFI report captures Immunization context and an Observation for symptoms.
Prerequisites
NgPatient, NgImmunizationRecommendation, NgAppointment, NgLocationNgPatient, NgPractitioner, NgOrganization, Encounter, Immunization, ObservationSteps
A) Scheduler
Expected Outcomes
Observation.effective[x] and linkage to Immunization presentValidation
Evidence
Pitfalls
Story (summary):
“In Jos, a chemistry analyzer posts serum glucose; in Lagos, a student’s Apple Watch streams heart rate.” Two simple device flows push Observation to a FHIR endpoint with device attribution.
Prerequisites
NgPatient, NgOrganization (performer), NgDevice (analyzer / watch)DeviceMetric, Task; Wearable: mobile app as data sourceSteps
A) Chemistry Analyzer
Expected Outcomes
Observation.device → Device; Observation.subject → PatientValidation
Evidence
Pitfalls
Story (summary):
“In Enugu, a hospital HR verifies a locum doctor before shift.” A practitioner is created/queried against MDCN ID to prevent impersonation and ensure licensure validity.
Prerequisites
NgPractitioner profile; MDCN identifier system agreedSteps
NgPractitioner with MDCN ID/Practitioner?identifier=<system>|<value>Expected Outcomes
Validation
active = trueEvidence
Pitfalls
Story (summary):
“In Abeokuta, a neon sign is not a license.” A community pharmacy publishes NgPharmacyOrganization with PCN number; citizens and HMOs verify registration by identifier. Unlicensed “chemist” shops are filtered out.
Prerequisites
NgPharmacyOrganization profile; PCN identifier system agreedSteps
NgPharmacyOrganization (active = true; type = pharmacy; PCN identifier)/Organization?identifier=<system>|<value>Expected Outcomes
Validation
Evidence
Pitfalls
Story (summary):
“In Kaduna, a facility implements consent and pseudonymization to share data safely.” A simple consent is recorded; separately, a patient/practitioner/related-person example is pseudonymized for a privacy-preserving flow.
Prerequisites
NgConsent profile + exampleNgPatient, NgPractitioner, NgRelatedPerson (consistent tokenization domain)Steps
NgConsent (opt-in/opt-out per scenario)Expected Outcomes
Validation
Consent.provision.type set appropriatelyEvidence
Pitfalls
Story (summary):
“In Uyo, a research extract replaces direct identifiers with tokens while preserving clinical utility.” The dataset keeps dates within policy (e.g., month/year only) and retains linkability across encounters with a stable pseudonym.
Prerequisites
Steps
Expected Outcomes
Validation
Evidence
Pitfalls
Content-Type: application/fhir+jsontransaction ⇒ each entry has request.method + request.urlcollection ⇒ omit entry.requesturn:uuid: in fullUrl and internal referencesInvoice.lineItem must carry either chargeItemReference (e.g., a MedicationDispense/Procedure) or chargeItemCodeableConcept.Claim.use appropriate to phase (preauthorization vs claim).fullUrl vs local Reference(target-id) and slice constraints in your bundle profile.