Skip to content

End-to-end conformance case: WHO smart-immunizations IMMZ.C4 (QuestionnaireResponse → Patient + RelatedPerson) #22

Description

@dhes

Proposal

Seed fmlrunner with a real-world end-to-end test case from published WHO SMART Guidelines content: the client-registration map set from smart-immunizations.

The entry map is IMMZ.C4.QRToPatient (QuestionnaireResponse → Bundle), which composes the two-hop pattern via imports:

  • IMMZ.C4.QRToLM — QuestionnaireResponse → IMMZC4 logical model
  • IMMZ.C4.LMToPatient — IMMZC4 logical model → Bundle (Patient + one RelatedPerson per caregiver)

Source: input/maps/ in WorldHealthOrganization/smart-immunizations.

This one case exercises a useful spread of engine features: map imports/group calls, create() of a logical-model instance, repeating source groups fanning out to multiple target resources, cross-resource references within a Bundle, and translate() against a ConceptMap (IMMZ.C.ConceptMap: DE6→male, DE7→female, DE8→unknown, DE9→other on administrative-gender).

What I can supply

  • Input fixture: a complete QuestionnaireResponse for QIMMZC4 (synthetic patient, all item types covered: strings, date, coded sex answer, one repeating caregiver group instance).
  • Expected output: the Patient + RelatedPerson the maps specify, derived rule-by-rule from IMMZ.C4.LMToPatient.fml — including gender = female from translate() of the coded sex answer, and RelatedPerson.patient referencing the Patient entry.
  • Dependencies the runner needs resolvable: the IMMZC4 logical-model StructureDefinition and ConceptMap/IMMZ.C.ConceptMap, both published in the IG.
  • A live consumer: ohs-foundation's player-reference app already renders QIMMZC4 on the KMP stack, so a working transform has an immediate integration target.

I've verified this fixture pair against the map rules independently (via an SDC template-extraction experiment on the KMP stack), so the expected output is already pinned down. If wanted, the remaining nine IMMZ questionnaires/map sets can follow the same pattern once the first case runs.

Happy to open this as a PR (fixtures + a test wired into the existing test setup) — flagging as an issue first to agree on where conformance fixtures should live in the repo.


🤖 Generated with Claude Code

https://claude.ai/code/session_01LGgxE9TK56BNPJJX2PnYhj

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions