Subscription Interface

Topic Discovery

MAIA implements FHIR Subscriptions using the R4/R5 Subscriptions Backport IG.

The supported topic is advertised in the CapabilityStatement via the backport extension capabilitystatement-subscriptiontopic-canonical:

Field Value
Topic canonical https://tiplu.de/fhir/maia/SubscriptionTopic/maia-alert-accepted
Trigger A clinician accepts a rule-based evaluation (MaiaVerdachtsdiagnose); the MaiaRuleBasedEvaluationReviewStatus extension transitions to #accepted
Alert type MaiaVerdachtsdiagnose (TRBE) only

Subscription Registration

idS Σ0..1string
id0..1string
extensionC0..*Extension
versionIdΣ0..1id
lastUpdatedΣ0..1instant
sourceΣ0..1uri
profileΣ0..*canonical(StructureDefinition)
securityΣ0..*CodingBinding
tagΣ0..*Coding
implicitRulesΣ ?!0..1uri
language0..1codeBinding
text0..1Narrative
contained0..*Resource
extensionC0..*Extension
modifierExtension?! C0..*Extension
statusS Σ ?!1..1codeBinding
contactΣ C0..*ContactPoint
endΣ0..1instant
reasonS Σ1..1string
id0..1string
id0..1string
extensionC0..0Extension
url1..1uriFixed Value
valueStringstring
value0..1System.String
errorΣ0..1string
id0..1string
id0..1string
extensionC0..0Extension
url1..1uriFixed Value
valueUnsignedIntunsignedInt
timeoutC0..1Extension(unsignedInt)
maxCountC0..1Extension(positiveInt)
modifierExtensionΣ ?! C0..*Extension
id0..1string
customChannelTypeS Σ C0..0Extension(Coding)
value0..1System.String
endpointS Σ0..1url
id0..1string
id0..1string
extensionC0..0Extension
url1..1uriFixed Value
valueCode0..1codeBindingPattern
value0..1System.String
headerS Σ0..*string

Create a Subscription resource via POST /fhir/Subscription. Constraint violations return HTTP 422.

Authentication header (write-only)

channel.header is accepted on create/update (only the first element is stored) but masked on read to prevent token disclosure.


Subscription Lifecycle

See REST-Hook channel in the Backport IG for the full specification.

If the handshake POST receives a non-2xx response, status is set to error. A subsequent PUT (with status = "requested" or "error") re-triggers the handshake.