Skip to main content

Resource Architecture

FHIR Resource Hierarchy

AMR culture results are modeled as a tree rooted at DiagnosticReport:

DiagnosticReport (BotswanaAMRDiagnosticReport)
├── encounter → Encounter (BotswanaAMREncounter)
│ ├── class: ward type (inpatient/outpatient/ICU/emergency)
│ ├── period.start: admission date
│ └── serviceProvider → Organization (facility)
├── specimen → Specimen (BotswanaAMRSpecimen)
├── result[gramStain] → GramStainObservation
└── result[organism] → OrganismObservation (1..*)
├── valueCodeableConcept: identified organism (SNOMED CT)
├── identifier: isolate number
└── hasMember → SusceptibilityObservation (0..*)
│ ├── code: antibiotic (LOINC panel code)
│ ├── interpretation: S / I / R
│ ├── valueQuantity: MIC (ug/mL) or zone diameter (mm)
│ └── method: AST method (disk diffusion, MIC, Etest, automated)
└── hasMember → SpecialTestObservation (0..*)
└── ESBL, carbapenemase, MRSA, D-zone, beta-lactamase

Each OrganismObservation represents one isolate. Susceptibility results are linked as hasMember references, keeping antibiotic results grouped per organism. This pattern aligns with the German MII Microbiology Module.

Design Decisions

hasMember grouping (not derivedFrom) Susceptibility results are children of their organism via OrganismObservation.hasMember, not via SusceptibilityObservation.derivedFrom. This keeps the parent→child direction consistent with how labs think about results and avoids orphaned susceptibility observations when querying.

Triple category coding All observation profiles include both laboratory (HL7 ObservationCategory) and Microbiology studies (set) (LOINC 18725-2) category slices, following the MII pattern for discoverability.

Encounter for GLASS classification Ward type and admission date live on a dedicated Encounter profile rather than extensions on DiagnosticReport. This matches the FHIR workflow pattern and allows the same encounter to be referenced by multiple reports.

Intensional organism ValueSet The organism ValueSet uses include codes from system SCT where concept is-a #410607006 "Organism" rather than listing individual codes. This keeps the ValueSet current as SNOMED CT is updated. Local codes for organism combinations (e.g., "Acinetobacter baumannii complex") are maintained in BotswanaAMRLocalOrganismCS.

Terminology Strategy

DomainCodeSystemExample
Observation codesLOINC634-6 (Bacteria identified), 58321-0 (Susceptibility panel)
OrganismsSNOMED CT112283007 (E. coli), 56415008 (K. pneumoniae)
Antibiotic substancesSNOMED CTVia LOINC-SNOMED CT Ontology component relationships
GLASS antibioticsATC (WHO)J01CA04 (Amoxicillin), J01DD04 (Ceftriaxone)
S/I/RHL7 ObservationInterpretationS, I, R, SDD, NS
Local codesBotswanaAMRLocalOrganismCSOrganism combinations not in SNOMED

ConceptMaps

Four ConceptMaps bridge WHONET codes to standard terminologies:

  • whonet-organism-to-snomed — 4,995 organism mappings
  • whonet-antibiotic-to-loinc — 271 antibiotic-to-LOINC susceptibility codes
  • whonet-antibiotic-to-atc — 374 antibiotic-to-ATC codes
  • whonet-antibiotic-to-snomed — 213 authoritative substance mappings (from LOINC-SNOMED CT Ontology)