Atrius India Core FHIR Implementation Guide
0.1.0 - ci-build

Atrius India Core FHIR Implementation Guide - Local Development build (v0.1.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions

Subscriptions

SubscriptionTopics

Atrius authors FHIR topic-based Subscriptions as R4 Backport Basic resources (clinical HFS is R4). Canonical URLs use:

https://atrius.in/fhir/SubscriptionTopic/{slug}

These match the HIS seed script (atrius-his/scripts/seed-fhir-subscriptions.py) and HFS topic registry.

Topics

Slug Focus Notes
encounter-lifecycle Encounter create/update Broad ADT / bed-board topic (HIS seed)
encounter-admit Encounter → in-progress fhirPathCriteria evaluated by HFS; HIS SSE alert (kind=admit)
encounter-discharge Encounter → finished fhirPathCriteria evaluated by HFS; HIS SSE alert (kind=discharge)
encounter-transfer Encounter location change fhirPathCriteria evaluated by HFS; HIS SSE alert (kind=transfer)
lab-task-lifecycle Task create/update Lab fulfillment (HIS seed)
lab-result-final Observation laboratory/final fhirPathCriteria evaluated; HIS seed sub-his-lab-final
lab-result-critical Critical lab Observation Live: sub-cds-critical-labs → cds-server → Flag
medication-order-lifecycle MedicationRequest create/update Order status visibility (authored; seed when consumer ready)
medication-administered MedicationAdministration Authored in IG; not yet seeded — add to seed script when eMAR consumers need it
appointment-changes Appointment create/update Scheduling changes

FSH source: input/fsh/subscriptions/.

Runtime note — fhirPathCriteria

HFS evaluates resourceTrigger.fhirPathCriteria during topic matching (helios-fhirpath, with %previous / %current). Criteria parse/eval failures are fail-closed (topic does not match). Prefer broad lifecycle topics for dashboards; use refined admit/discharge/transfer/lab-critical topics for alerts.

Still not evaluated: queryCriteria, eventTrigger, and subscription-level FHIRPath filters (Phase-1 JSON field match only).

Live consumers (seeded)

Subscription id Topic Endpoint
sub-his-encounter encounter-lifecycle HIS /api/v1/fhir-notifications → SSE generation (bed board)
sub-his-lab-task lab-task-lifecycle HIS inbox
sub-his-admit encounter-admit HIS → SSE alert (kind=admit); no board double-bump
sub-his-discharge encounter-discharge HIS → SSE alert (kind=discharge)
sub-his-transfer encounter-transfer HIS → SSE alert (kind=transfer); admin bed-board toast
sub-his-lab-final lab-result-final HIS inbox → SSE alert (kind=lab-final)
sub-cds-critical-labs lab-result-critical cds-server /internal/cds/fhir-notificationsatrius-critical-labs → Flag

Channel: rest-hook, payload id-only, backport topic canonical + payload-content extensions.

Gap recovery

HIS inbox keys on (subscription_id, event_number). Gaps are detected via eventsSinceSubscriptionStart and recovered best-effort through HFS $events (outbox-backed).

Verify HFS gating (non-critical lab must not Flag): atrius-his/scripts/smoke-hfs-critical-labs-gate.sh.

  • FHIR Messaging — consequence $process-message (LIS/PACS), not a Subscription substitute
  • Clinical feedback Flags from critical-labs may appear in the patient banner alongside subscription-driven alerts