Release 5 Preview #1

This page is part of the FHIR Specification (v4.2.0: R5 Preview #1). The current version which supercedes this version is 5.0.0. For a full list of available versions, see the Directory of published versions

2.48 Resource Topic - Content

FHIR Infrastructure Work GroupMaturity Level: 0 Trial UseSecurity Category: Business Compartments: Not linked to any defined compartments

Describes a stream of resource state changes identified by trigger criteria and annotated with labels useful to filter projections from this topic.

Subscriptions Refactor Proposal : Proposal to split the definition of a subscription into definition of a topic (this resource) and subscriptions on that topic (updated Subscription resource)

A FHIR based subscriptions is split into two FHIR resources. Topic describes a stream of resource state changes identified by trigger criteria and annotated with labels useful to filter projections from this topic. Subscription describes a particular client's request to be notified about a Topic.

Major challenges for R4 Subscriptions:

Clients

  • need to listen for specific changes (i.e., events)
  • a way to listen for deletes, and resources "falling out" of a set
  • need a way to listen to all changes at one [endpoint], not [endpoint]/[sub]/[path]

Servers

  • need to limit number + complexity of subscribable Topics
  • should be able to handle large numbers of Subscriptions on a given Topic

This resource is referenced by Subscription and itself.

This resource implements the Definition pattern.

Structure

NameFlagsCard.TypeDescription & Constraintsdoco
.. Topic TUDomainResourceDefinition Pattern
Elements defined in Ancestors: id, meta, implicitRules, language, text, contained, extension, modifierExtension
... url Σ0..1uriLogical canonical URL to reference this Topic (globally unique)
... identifier Σ0..*IdentifierBusiness Identifier for Topic
... version Σ0..1stringBusiness version of the Topic
... derivedFromCanonical Σ0..*canonical(Topic)Based on FHIR protocol or definition
... derivedFromUri Σ0..*uriBased on external protocol or definition
... status ?!Σ1..1codedraft | active | retired | unknown
PublicationStatus (Required)
... experimental ?!Σ0..1booleanIf for testing purposes, not real usage
... date Σ0..1dateTimeDate status first applied
... publisher Σ0..1Reference(Practitioner | PractitionerRole | Organization)The name of the individual or organization that published the Topic
... contact Σ0..*ContactDetailContact details for the publisher
... description 0..1markdownNatural language description of the Topic
... useContext Σ0..*UsageContextContent intends to support these contexts
... jurisdiction Σ0..*CodeableConceptIntended jurisdiction for Topic (if applicable)
Jurisdiction (Extensible)
... purpose 0..1markdownWhy this Topic is defined
... copyright 0..1markdownUse and/or publishing restrictions
... approvalDate 0..1dateWhen Topic approved by publisher
... lastReviewDate 0..1dateLast review date for the Topic
... effectivePeriod Σ0..1PeriodThe effective date range for the Topic
... resourceTrigger Σ0..1BackboneElementCriteria for including a resource update in the topic
.... description Σ0..1stringText representation of the trigger
.... resourceType Σ0..*codeCandidate types for this topic
ResourceType (Required)
.... methodCriteria Σ0..*codecreate | update | delete
Interaction Trigger (Required)
.... queryCriteria Σ0..1BackboneElementQuery based trigger rule
..... previous Σ0..1stringRule applied to previous resource state
..... current Σ0..1stringRule applied to current resource state
..... requireBoth Σ0..1booleanBoth must be true flag
.... fhirPathCriteria Σ0..1stringFHIRPath based trigger rule
... canFilterBy Σ0..*BackboneElementProperties by which a Subscription can further filter a Topic
.... name Σ0..1stringSearch parameter that serves as filter key
.... matchType Σ0..*code= | in | not-in | above | below
TopicFilterByMatchType (Required)
.... documentation Σ0..1markdownDescription of this filter parameter

doco Documentation for this format

UML Diagram (Legend)

Topic (DomainResource)An absolute URL that is used to identify this Topic when it is referenced in a specification, model, design or an instance. This SHALL be a URL, SHOULD be globally unique, and SHOULD be an address at which this Topic is (or will be) published. The URL SHOULD include the major version of the Topic. For more information see [Technical and Business Versions](resource.html#versions)url : uri [0..1]Business identifiers assigned to this Topic by the performer and/or other systems. These identifiers remain constant as the resource is updated and propagates from server to serveridentifier : Identifier [0..*]The identifier that is used to identify this version of the Topic when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the Topic author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions are orderableversion : string [0..1]A short, descriptive, user-friendly title for the Topic, for example, "admission"title : string [0..1]The canonical URL pointing to another FHIR-defined Topic that is adhered to in whole or in part by this TopicderivedFromCanonical : canonical [0..*] « Topic »The URL pointing to an externally-defined subscription topic or other definition that is adhered to in whole or in part by this definitionderivedFromUri : uri [0..*]The current state of the Topic (this element modifies the meaning of other elements)status : code [1..1] « The lifecycle status of an artifact. (Strength=Required)PublicationStatus! »A flag to indicate that this Topic is authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage (this element modifies the meaning of other elements)experimental : boolean [0..1]For draft definitions, indicates the date of initial creation. For active definitions, represents the date of activation. For withdrawn definitions, indicates the date of withdrawaldate : dateTime [0..1]Helps establish the "authority/credibility" of the Topic. May also allow for contactpublisher : Reference [0..1] « Practitioner|PractitionerRole| Organization »Contact details to assist a user in finding and communicating with the publishercontact : ContactDetail [0..*]A free text natural language description of the Topic from the consumer's perspectivedescription : markdown [0..1]The content was developed with a focus and intent of supporting the contexts that are listed. These terms may be used to assist with indexing and searching of code system definitionsuseContext : UsageContext [0..*]A jurisdiction in which the Topic is intended to be usedjurisdiction : CodeableConcept [0..*] « Countries and regions within which this artifact is targeted for use. (Strength=Extensible)Jurisdiction ValueSet+ »Explains why this Topic is needed and why it has been designed as it haspurpose : markdown [0..1]A copyright statement relating to the Topic and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the Topiccopyright : markdown [0..1]The date on which the asset content was approved by the publisher. Approval happens once when the content is officially approved for usageapprovalDate : date [0..1]The date on which the asset content was last reviewed. Review happens periodically after that, but doesn't change the original approval datelastReviewDate : date [0..1]The period during which the Topic content was or is planned to be effectiveeffectivePeriod : Period [0..1]ResourceTriggerThe human readable description of what triggers inclusion into this topic - for example, "Beginning of a clinical encounter"description : string [0..1]The list of resource types that are candidates for this topic. For example, the Encounter resource is updated in an 'admission' topicresourceType : code [0..*] « Resource types defined as part FHIR. (Strength=Required)ResourceType! »The REST interaction based rules that the server should use to determine when to trigger a notification for this topicmethodCriteria : code [0..*] « FHIR RESTful interaction used for topic trigger. (Strength=Required)InteractionTrigger! »The FHIRPath based rules that the server should use to determine when to trigger a notification for this topicfhirPathCriteria : string [0..1]QueryCriteriaThe FHIR query based rules are applied to the previous resource stateprevious : string [0..1]The FHIR query based rules are applied to the current resource statecurrent : string [0..1]If set to true, both current and previous criteria must evaluate true to trigger a notification for this topic. Otherwise a notification for this topic will be triggered if either one evaluates to truerequireBoth : boolean [0..1]CanFilterByA search parameter (like "patient") which is a label for the filtername : string [0..1]Allowable operators to apply when determining matches (Search Modifiers)matchType : code [0..*] « Operator to apply to filter label. (Strength=Required)TopicFilterByMatchType! »Description of how this filter parameter is intended to be useddocumentation : markdown [0..1]The FHIR query based rules that the server should use to determine when to trigger a notification for this topicqueryCriteria[0..1]The criteria for including updates to a nominated resource in the topic. Thie criteria may be just a human readable description and/or a full FHIR search string or FHIRPath expressionresourceTrigger[0..1]List of properties by which Subscriptions on the topic can be filteredcanFilterBy[0..*]

XML Template

<Topic xmlns="http://hl7.org/fhir"> doco
 <!-- from Resource: id, meta, implicitRules, and language -->
 <!-- from DomainResource: text, contained, extension, and modifierExtension -->
 <url value="[uri]"/><!-- 0..1 Logical canonical URL to reference this Topic (globally unique) -->
 <identifier><!-- 0..* Identifier Business Identifier for Topic --></identifier>
 <version value="[string]"/><!-- 0..1 Business version of the Topic -->
 <title value="[string]"/><!-- 0..1 Name for this Topic (Human friendly) -->
 <derivedFromCanonical><!-- 0..* canonical(Topic) Based on FHIR protocol or definition --></derivedFromCanonical>
 <derivedFromUri value="[uri]"/><!-- 0..* Based on external protocol or definition -->
 <status value="[code]"/><!-- 1..1 draft | active | retired | unknown -->
 <experimental value="[boolean]"/><!-- 0..1 If for testing purposes, not real usage -->
 <date value="[dateTime]"/><!-- 0..1 Date status first applied -->
 <publisher><!-- 0..1 Reference(Organization|Practitioner|PractitionerRole) The name of the individual or organization that published the Topic --></publisher>
 <contact><!-- 0..* ContactDetail Contact details for the publisher --></contact>
 <description value="[markdown]"/><!-- 0..1 Natural language description of the Topic -->
 <useContext><!-- 0..* UsageContext Content intends to support these contexts --></useContext>
 <jurisdiction><!-- 0..* CodeableConcept Intended jurisdiction for Topic (if applicable) --></jurisdiction>
 <purpose value="[markdown]"/><!-- 0..1 Why this Topic is defined -->
 <copyright value="[markdown]"/><!-- 0..1 Use and/or publishing restrictions -->
 <approvalDate value="[date]"/><!-- 0..1 When Topic approved by publisher -->
 <lastReviewDate value="[date]"/><!-- 0..1 Last review date for the Topic -->
 <effectivePeriod><!-- 0..1 Period The effective date range for the Topic --></effectivePeriod>
 <resourceTrigger>  <!-- 0..1 Criteria for including a resource update in the topic -->
  <description value="[string]"/><!-- 0..1 Text representation of the trigger -->
  <resourceType value="[code]"/><!-- 0..* Candidate types for this topic -->
  <methodCriteria value="[code]"/><!-- 0..* create | update | delete -->
  <queryCriteria>  <!-- 0..1 Query based trigger rule -->
   <previous value="[string]"/><!-- 0..1 Rule applied to previous resource state -->
   <current value="[string]"/><!-- 0..1 Rule applied to current resource state -->
   <requireBoth value="[boolean]"/><!-- 0..1 Both must be true flag -->
  </queryCriteria>
  <fhirPathCriteria value="[string]"/><!-- 0..1 FHIRPath based trigger rule -->
 </resourceTrigger>
 <canFilterBy>  <!-- 0..* Properties by which a Subscription can further filter a Topic -->
  <name value="[string]"/><!-- 0..1 Search parameter that serves as filter key -->
  <matchType value="[code]"/><!-- 0..* = | in | not-in | above | below -->
  <documentation value="[markdown]"/><!-- 0..1 Description of this filter parameter -->
 </canFilterBy>
</Topic>

JSON Template

{doco
  "resourceType" : "Topic",
  // from Resource: id, meta, implicitRules, and language
  // from DomainResource: text, contained, extension, and modifierExtension
  "url" : "<uri>", // Logical canonical URL to reference this Topic (globally unique)
  "identifier" : [{ Identifier }], // Business Identifier for Topic
  "version" : "<string>", // Business version of the Topic
  "title" : "<string>", // Name for this Topic (Human friendly)
  "derivedFromCanonical" : [{ canonical(Topic) }], // Based on FHIR protocol or definition
  "derivedFromUri" : ["<uri>"], // Based on external protocol or definition
  "status" : "<code>", // R!  draft | active | retired | unknown
  "experimental" : <boolean>, // If for testing purposes, not real usage
  "date" : "<dateTime>", // Date status first applied
  "publisher" : { Reference(Organization|Practitioner|PractitionerRole) }, // The name of the individual or organization that published the Topic
  "contact" : [{ ContactDetail }], // Contact details for the publisher
  "description" : "<markdown>", // Natural language description of the Topic
  "useContext" : [{ UsageContext }], // Content intends to support these contexts
  "jurisdiction" : [{ CodeableConcept }], // Intended jurisdiction for Topic (if applicable)
  "purpose" : "<markdown>", // Why this Topic is defined
  "copyright" : "<markdown>", // Use and/or publishing restrictions
  "approvalDate" : "<date>", // When Topic approved by publisher
  "lastReviewDate" : "<date>", // Last review date for the Topic
  "effectivePeriod" : { Period }, // The effective date range for the Topic
  "resourceTrigger" : { // Criteria for including a resource update in the topic
    "description" : "<string>", // Text representation of the trigger
    "resourceType" : ["<code>"], // Candidate types for this topic
    "methodCriteria" : ["<code>"], // create | update | delete
    "queryCriteria" : { // Query based trigger rule
      "previous" : "<string>", // Rule applied to previous resource state
      "current" : "<string>", // Rule applied to current resource state
      "requireBoth" : <boolean> // Both must be true flag
    },
    "fhirPathCriteria" : "<string>" // FHIRPath based trigger rule
  },
  "canFilterBy" : [{ // Properties by which a Subscription can further filter a Topic
    "name" : "<string>", // Search parameter that serves as filter key
    "matchType" : ["<code>"], // = | in | not-in | above | below
    "documentation" : "<markdown>" // Description of this filter parameter
  }]
}

Turtle Template

@prefix fhir: <http://hl7.org/fhir/> .doco


[ a fhir:Topic;
  fhir:nodeRole fhir:treeRoot; # if this is the parser root

  # from Resource: .id, .meta, .implicitRules, and .language
  # from DomainResource: .text, .contained, .extension, and .modifierExtension
  fhir:Topic.url [ uri ]; # 0..1 Logical canonical URL to reference this Topic (globally unique)
  fhir:Topic.identifier [ Identifier ], ... ; # 0..* Business Identifier for Topic
  fhir:Topic.version [ string ]; # 0..1 Business version of the Topic
  fhir:Topic.title [ string ]; # 0..1 Name for this Topic (Human friendly)
  fhir:Topic.derivedFromCanonical [ canonical(Topic) ], ... ; # 0..* Based on FHIR protocol or definition
  fhir:Topic.derivedFromUri [ uri ], ... ; # 0..* Based on external protocol or definition
  fhir:Topic.status [ code ]; # 1..1 draft | active | retired | unknown
  fhir:Topic.experimental [ boolean ]; # 0..1 If for testing purposes, not real usage
  fhir:Topic.date [ dateTime ]; # 0..1 Date status first applied
  fhir:Topic.publisher [ Reference(Organization|Practitioner|PractitionerRole) ]; # 0..1 The name of the individual or organization that published the Topic
  fhir:Topic.contact [ ContactDetail ], ... ; # 0..* Contact details for the publisher
  fhir:Topic.description [ markdown ]; # 0..1 Natural language description of the Topic
  fhir:Topic.useContext [ UsageContext ], ... ; # 0..* Content intends to support these contexts
  fhir:Topic.jurisdiction [ CodeableConcept ], ... ; # 0..* Intended jurisdiction for Topic (if applicable)
  fhir:Topic.purpose [ markdown ]; # 0..1 Why this Topic is defined
  fhir:Topic.copyright [ markdown ]; # 0..1 Use and/or publishing restrictions
  fhir:Topic.approvalDate [ date ]; # 0..1 When Topic approved by publisher
  fhir:Topic.lastReviewDate [ date ]; # 0..1 Last review date for the Topic
  fhir:Topic.effectivePeriod [ Period ]; # 0..1 The effective date range for the Topic
  fhir:Topic.resourceTrigger [ # 0..1 Criteria for including a resource update in the topic
    fhir:Topic.resourceTrigger.description [ string ]; # 0..1 Text representation of the trigger
    fhir:Topic.resourceTrigger.resourceType [ code ], ... ; # 0..* Candidate types for this topic
    fhir:Topic.resourceTrigger.methodCriteria [ code ], ... ; # 0..* create | update | delete
    fhir:Topic.resourceTrigger.queryCriteria [ # 0..1 Query based trigger rule
      fhir:Topic.resourceTrigger.queryCriteria.previous [ string ]; # 0..1 Rule applied to previous resource state
      fhir:Topic.resourceTrigger.queryCriteria.current [ string ]; # 0..1 Rule applied to current resource state
      fhir:Topic.resourceTrigger.queryCriteria.requireBoth [ boolean ]; # 0..1 Both must be true flag
    ];
    fhir:Topic.resourceTrigger.fhirPathCriteria [ string ]; # 0..1 FHIRPath based trigger rule
  ];
  fhir:Topic.canFilterBy [ # 0..* Properties by which a Subscription can further filter a Topic
    fhir:Topic.canFilterBy.name [ string ]; # 0..1 Search parameter that serves as filter key
    fhir:Topic.canFilterBy.matchType [ code ], ... ; # 0..* = | in | not-in | above | below
    fhir:Topic.canFilterBy.documentation [ markdown ]; # 0..1 Description of this filter parameter
  ], ...;
]

Changes since R3

This resource did not exist in Release 2

This analysis is available as XML or JSON.

Structure

NameFlagsCard.TypeDescription & Constraintsdoco
.. Topic TUDomainResourceDefinition Pattern
Elements defined in Ancestors: id, meta, implicitRules, language, text, contained, extension, modifierExtension
... url Σ0..1uriLogical canonical URL to reference this Topic (globally unique)
... identifier Σ0..*IdentifierBusiness Identifier for Topic
... version Σ0..1stringBusiness version of the Topic
... derivedFromCanonical Σ0..*canonical(Topic)Based on FHIR protocol or definition
... derivedFromUri Σ0..*uriBased on external protocol or definition
... status ?!Σ1..1codedraft | active | retired | unknown
PublicationStatus (Required)
... experimental ?!Σ0..1booleanIf for testing purposes, not real usage
... date Σ0..1dateTimeDate status first applied
... publisher Σ0..1Reference(Practitioner | PractitionerRole | Organization)The name of the individual or organization that published the Topic
... contact Σ0..*ContactDetailContact details for the publisher
... description 0..1markdownNatural language description of the Topic
... useContext Σ0..*UsageContextContent intends to support these contexts
... jurisdiction Σ0..*CodeableConceptIntended jurisdiction for Topic (if applicable)
Jurisdiction (Extensible)
... purpose 0..1markdownWhy this Topic is defined
... copyright 0..1markdownUse and/or publishing restrictions
... approvalDate 0..1dateWhen Topic approved by publisher
... lastReviewDate 0..1dateLast review date for the Topic
... effectivePeriod Σ0..1PeriodThe effective date range for the Topic
... resourceTrigger Σ0..1BackboneElementCriteria for including a resource update in the topic
.... description Σ0..1stringText representation of the trigger
.... resourceType Σ0..*codeCandidate types for this topic
ResourceType (Required)
.... methodCriteria Σ0..*codecreate | update | delete
Interaction Trigger (Required)
.... queryCriteria Σ0..1BackboneElementQuery based trigger rule
..... previous Σ0..1stringRule applied to previous resource state
..... current Σ0..1stringRule applied to current resource state
..... requireBoth Σ0..1booleanBoth must be true flag
.... fhirPathCriteria Σ0..1stringFHIRPath based trigger rule
... canFilterBy Σ0..*BackboneElementProperties by which a Subscription can further filter a Topic
.... name Σ0..1stringSearch parameter that serves as filter key
.... matchType Σ0..*code= | in | not-in | above | below
TopicFilterByMatchType (Required)
.... documentation Σ0..1markdownDescription of this filter parameter

doco Documentation for this format

UML Diagram (Legend)

Topic (DomainResource)An absolute URL that is used to identify this Topic when it is referenced in a specification, model, design or an instance. This SHALL be a URL, SHOULD be globally unique, and SHOULD be an address at which this Topic is (or will be) published. The URL SHOULD include the major version of the Topic. For more information see [Technical and Business Versions](resource.html#versions)url : uri [0..1]Business identifiers assigned to this Topic by the performer and/or other systems. These identifiers remain constant as the resource is updated and propagates from server to serveridentifier : Identifier [0..*]The identifier that is used to identify this version of the Topic when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the Topic author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions are orderableversion : string [0..1]A short, descriptive, user-friendly title for the Topic, for example, "admission"title : string [0..1]The canonical URL pointing to another FHIR-defined Topic that is adhered to in whole or in part by this TopicderivedFromCanonical : canonical [0..*] « Topic »The URL pointing to an externally-defined subscription topic or other definition that is adhered to in whole or in part by this definitionderivedFromUri : uri [0..*]The current state of the Topic (this element modifies the meaning of other elements)status : code [1..1] « The lifecycle status of an artifact. (Strength=Required)PublicationStatus! »A flag to indicate that this Topic is authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage (this element modifies the meaning of other elements)experimental : boolean [0..1]For draft definitions, indicates the date of initial creation. For active definitions, represents the date of activation. For withdrawn definitions, indicates the date of withdrawaldate : dateTime [0..1]Helps establish the "authority/credibility" of the Topic. May also allow for contactpublisher : Reference [0..1] « Practitioner|PractitionerRole| Organization »Contact details to assist a user in finding and communicating with the publishercontact : ContactDetail [0..*]A free text natural language description of the Topic from the consumer's perspectivedescription : markdown [0..1]The content was developed with a focus and intent of supporting the contexts that are listed. These terms may be used to assist with indexing and searching of code system definitionsuseContext : UsageContext [0..*]A jurisdiction in which the Topic is intended to be usedjurisdiction : CodeableConcept [0..*] « Countries and regions within which this artifact is targeted for use. (Strength=Extensible)Jurisdiction ValueSet+ »Explains why this Topic is needed and why it has been designed as it haspurpose : markdown [0..1]A copyright statement relating to the Topic and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the Topiccopyright : markdown [0..1]The date on which the asset content was approved by the publisher. Approval happens once when the content is officially approved for usageapprovalDate : date [0..1]The date on which the asset content was last reviewed. Review happens periodically after that, but doesn't change the original approval datelastReviewDate : date [0..1]The period during which the Topic content was or is planned to be effectiveeffectivePeriod : Period [0..1]ResourceTriggerThe human readable description of what triggers inclusion into this topic - for example, "Beginning of a clinical encounter"description : string [0..1]The list of resource types that are candidates for this topic. For example, the Encounter resource is updated in an 'admission' topicresourceType : code [0..*] « Resource types defined as part FHIR. (Strength=Required)ResourceType! »The REST interaction based rules that the server should use to determine when to trigger a notification for this topicmethodCriteria : code [0..*] « FHIR RESTful interaction used for topic trigger. (Strength=Required)InteractionTrigger! »The FHIRPath based rules that the server should use to determine when to trigger a notification for this topicfhirPathCriteria : string [0..1]QueryCriteriaThe FHIR query based rules are applied to the previous resource stateprevious : string [0..1]The FHIR query based rules are applied to the current resource statecurrent : string [0..1]If set to true, both current and previous criteria must evaluate true to trigger a notification for this topic. Otherwise a notification for this topic will be triggered if either one evaluates to truerequireBoth : boolean [0..1]CanFilterByA search parameter (like "patient") which is a label for the filtername : string [0..1]Allowable operators to apply when determining matches (Search Modifiers)matchType : code [0..*] « Operator to apply to filter label. (Strength=Required)TopicFilterByMatchType! »Description of how this filter parameter is intended to be useddocumentation : markdown [0..1]The FHIR query based rules that the server should use to determine when to trigger a notification for this topicqueryCriteria[0..1]The criteria for including updates to a nominated resource in the topic. Thie criteria may be just a human readable description and/or a full FHIR search string or FHIRPath expressionresourceTrigger[0..1]List of properties by which Subscriptions on the topic can be filteredcanFilterBy[0..*]

XML Template

<Topic xmlns="http://hl7.org/fhir"> doco
 <!-- from Resource: id, meta, implicitRules, and language -->
 <!-- from DomainResource: text, contained, extension, and modifierExtension -->
 <url value="[uri]"/><!-- 0..1 Logical canonical URL to reference this Topic (globally unique) -->
 <identifier><!-- 0..* Identifier Business Identifier for Topic --></identifier>
 <version value="[string]"/><!-- 0..1 Business version of the Topic -->
 <title value="[string]"/><!-- 0..1 Name for this Topic (Human friendly) -->
 <derivedFromCanonical><!-- 0..* canonical(Topic) Based on FHIR protocol or definition --></derivedFromCanonical>
 <derivedFromUri value="[uri]"/><!-- 0..* Based on external protocol or definition -->
 <status value="[code]"/><!-- 1..1 draft | active | retired | unknown -->
 <experimental value="[boolean]"/><!-- 0..1 If for testing purposes, not real usage -->
 <date value="[dateTime]"/><!-- 0..1 Date status first applied -->
 <publisher><!-- 0..1 Reference(Organization|Practitioner|PractitionerRole) The name of the individual or organization that published the Topic --></publisher>
 <contact><!-- 0..* ContactDetail Contact details for the publisher --></contact>
 <description value="[markdown]"/><!-- 0..1 Natural language description of the Topic -->
 <useContext><!-- 0..* UsageContext Content intends to support these contexts --></useContext>
 <jurisdiction><!-- 0..* CodeableConcept Intended jurisdiction for Topic (if applicable) --></jurisdiction>
 <purpose value="[markdown]"/><!-- 0..1 Why this Topic is defined -->
 <copyright value="[markdown]"/><!-- 0..1 Use and/or publishing restrictions -->
 <approvalDate value="[date]"/><!-- 0..1 When Topic approved by publisher -->
 <lastReviewDate value="[date]"/><!-- 0..1 Last review date for the Topic -->
 <effectivePeriod><!-- 0..1 Period The effective date range for the Topic --></effectivePeriod>
 <resourceTrigger>  <!-- 0..1 Criteria for including a resource update in the topic -->
  <description value="[string]"/><!-- 0..1 Text representation of the trigger -->
  <resourceType value="[code]"/><!-- 0..* Candidate types for this topic -->
  <methodCriteria value="[code]"/><!-- 0..* create | update | delete -->
  <queryCriteria>  <!-- 0..1 Query based trigger rule -->
   <previous value="[string]"/><!-- 0..1 Rule applied to previous resource state -->
   <current value="[string]"/><!-- 0..1 Rule applied to current resource state -->
   <requireBoth value="[boolean]"/><!-- 0..1 Both must be true flag -->
  </queryCriteria>
  <fhirPathCriteria value="[string]"/><!-- 0..1 FHIRPath based trigger rule -->
 </resourceTrigger>
 <canFilterBy>  <!-- 0..* Properties by which a Subscription can further filter a Topic -->
  <name value="[string]"/><!-- 0..1 Search parameter that serves as filter key -->
  <matchType value="[code]"/><!-- 0..* = | in | not-in | above | below -->
  <documentation value="[markdown]"/><!-- 0..1 Description of this filter parameter -->
 </canFilterBy>
</Topic>

JSON Template

{doco
  "resourceType" : "Topic",
  // from Resource: id, meta, implicitRules, and language
  // from DomainResource: text, contained, extension, and modifierExtension
  "url" : "<uri>", // Logical canonical URL to reference this Topic (globally unique)
  "identifier" : [{ Identifier }], // Business Identifier for Topic
  "version" : "<string>", // Business version of the Topic
  "title" : "<string>", // Name for this Topic (Human friendly)
  "derivedFromCanonical" : [{ canonical(Topic) }], // Based on FHIR protocol or definition
  "derivedFromUri" : ["<uri>"], // Based on external protocol or definition
  "status" : "<code>", // R!  draft | active | retired | unknown
  "experimental" : <boolean>, // If for testing purposes, not real usage
  "date" : "<dateTime>", // Date status first applied
  "publisher" : { Reference(Organization|Practitioner|PractitionerRole) }, // The name of the individual or organization that published the Topic
  "contact" : [{ ContactDetail }], // Contact details for the publisher
  "description" : "<markdown>", // Natural language description of the Topic
  "useContext" : [{ UsageContext }], // Content intends to support these contexts
  "jurisdiction" : [{ CodeableConcept }], // Intended jurisdiction for Topic (if applicable)
  "purpose" : "<markdown>", // Why this Topic is defined
  "copyright" : "<markdown>", // Use and/or publishing restrictions
  "approvalDate" : "<date>", // When Topic approved by publisher
  "lastReviewDate" : "<date>", // Last review date for the Topic
  "effectivePeriod" : { Period }, // The effective date range for the Topic
  "resourceTrigger" : { // Criteria for including a resource update in the topic
    "description" : "<string>", // Text representation of the trigger
    "resourceType" : ["<code>"], // Candidate types for this topic
    "methodCriteria" : ["<code>"], // create | update | delete
    "queryCriteria" : { // Query based trigger rule
      "previous" : "<string>", // Rule applied to previous resource state
      "current" : "<string>", // Rule applied to current resource state
      "requireBoth" : <boolean> // Both must be true flag
    },
    "fhirPathCriteria" : "<string>" // FHIRPath based trigger rule
  },
  "canFilterBy" : [{ // Properties by which a Subscription can further filter a Topic
    "name" : "<string>", // Search parameter that serves as filter key
    "matchType" : ["<code>"], // = | in | not-in | above | below
    "documentation" : "<markdown>" // Description of this filter parameter
  }]
}

Turtle Template

@prefix fhir: <http://hl7.org/fhir/> .doco


[ a fhir:Topic;
  fhir:nodeRole fhir:treeRoot; # if this is the parser root

  # from Resource: .id, .meta, .implicitRules, and .language
  # from DomainResource: .text, .contained, .extension, and .modifierExtension
  fhir:Topic.url [ uri ]; # 0..1 Logical canonical URL to reference this Topic (globally unique)
  fhir:Topic.identifier [ Identifier ], ... ; # 0..* Business Identifier for Topic
  fhir:Topic.version [ string ]; # 0..1 Business version of the Topic
  fhir:Topic.title [ string ]; # 0..1 Name for this Topic (Human friendly)
  fhir:Topic.derivedFromCanonical [ canonical(Topic) ], ... ; # 0..* Based on FHIR protocol or definition
  fhir:Topic.derivedFromUri [ uri ], ... ; # 0..* Based on external protocol or definition
  fhir:Topic.status [ code ]; # 1..1 draft | active | retired | unknown
  fhir:Topic.experimental [ boolean ]; # 0..1 If for testing purposes, not real usage
  fhir:Topic.date [ dateTime ]; # 0..1 Date status first applied
  fhir:Topic.publisher [ Reference(Organization|Practitioner|PractitionerRole) ]; # 0..1 The name of the individual or organization that published the Topic
  fhir:Topic.contact [ ContactDetail ], ... ; # 0..* Contact details for the publisher
  fhir:Topic.description [ markdown ]; # 0..1 Natural language description of the Topic
  fhir:Topic.useContext [ UsageContext ], ... ; # 0..* Content intends to support these contexts
  fhir:Topic.jurisdiction [ CodeableConcept ], ... ; # 0..* Intended jurisdiction for Topic (if applicable)
  fhir:Topic.purpose [ markdown ]; # 0..1 Why this Topic is defined
  fhir:Topic.copyright [ markdown ]; # 0..1 Use and/or publishing restrictions
  fhir:Topic.approvalDate [ date ]; # 0..1 When Topic approved by publisher
  fhir:Topic.lastReviewDate [ date ]; # 0..1 Last review date for the Topic
  fhir:Topic.effectivePeriod [ Period ]; # 0..1 The effective date range for the Topic
  fhir:Topic.resourceTrigger [ # 0..1 Criteria for including a resource update in the topic
    fhir:Topic.resourceTrigger.description [ string ]; # 0..1 Text representation of the trigger
    fhir:Topic.resourceTrigger.resourceType [ code ], ... ; # 0..* Candidate types for this topic
    fhir:Topic.resourceTrigger.methodCriteria [ code ], ... ; # 0..* create | update | delete
    fhir:Topic.resourceTrigger.queryCriteria [ # 0..1 Query based trigger rule
      fhir:Topic.resourceTrigger.queryCriteria.previous [ string ]; # 0..1 Rule applied to previous resource state
      fhir:Topic.resourceTrigger.queryCriteria.current [ string ]; # 0..1 Rule applied to current resource state
      fhir:Topic.resourceTrigger.queryCriteria.requireBoth [ boolean ]; # 0..1 Both must be true flag
    ];
    fhir:Topic.resourceTrigger.fhirPathCriteria [ string ]; # 0..1 FHIRPath based trigger rule
  ];
  fhir:Topic.canFilterBy [ # 0..* Properties by which a Subscription can further filter a Topic
    fhir:Topic.canFilterBy.name [ string ]; # 0..1 Search parameter that serves as filter key
    fhir:Topic.canFilterBy.matchType [ code ], ... ; # 0..* = | in | not-in | above | below
    fhir:Topic.canFilterBy.documentation [ markdown ]; # 0..1 Description of this filter parameter
  ], ...;
]

Changes since Release 3

This resource did not exist in Release 2

This analysis is available as XML or JSON.

 

See the Profiles & Extensions and the alternate definitions: Master Definition XML + JSON, XML Schema/Schematron + JSON Schema, ShEx (for Turtle) + see the extensions, the spreadsheet version & the dependency analysis a

PathDefinitionTypeReference
Topic.status The lifecycle status of an artifact.RequiredPublicationStatus
Topic.jurisdiction Countries and regions within which this artifact is targeted for use.ExtensibleJurisdiction ValueSet
Topic.resourceTrigger.resourceType Resource types defined as part FHIR.RequiredResourceType
Topic.resourceTrigger.methodCriteria FHIR RESTful interaction used for topic trigger.RequiredInteractionTrigger
Topic.canFilterBy.matchType Operator to apply to filter label.RequiredTopicFilterByMatchType

Defining a new Topic requires clear communication to implementers of both clients and servers around requirements and expectations. Below are some areas which should be considered when creating a Topic. Anyone defining a Topic is encouraged to publish the (IG?) at (?).

Trial-Use Note: Warning: This section is still in early drafting.

Implementers are encouraged to add additional filters, but cannot remove existing ones nor change the 'concept' of a Topic during derivation. For example:

  • Deriving a new Topic with the same concept but a different computable definition is OK.
  • Deriving a new Topic to expose additional canFilterBy parameters is OK.
  • Deriving a new Topic to remove an existing canFilterBy parameter is NOT ok.
  • Deriving a new Topic based on a different resource than its parent is NOT ok (e.g., start/end of medication derived from encounter).

Trial-Use Note: Warning: This section is still in early drafting.

Search parameters for this resource. The common parameters also apply. See Searching for more information about searching in REST, messaging, and services.

NameTypeDescriptionExpressionIn Common
date NdateDate status first appliedTopic.date
identifiertokenBusiness Identifier for TopicTopic.identifier
publisherreferenceThe name of the individual or organization that published the TopicTopic.publisher
(Practitioner, Organization, PractitionerRole)
resource-type NtokenCandidate types for this topicTopic.resourceTrigger.resourceType
status Ntokendraft | active | retired | unknownTopic.status
title NstringName for this Topic (Human friendly)Topic.title
trigger-description NstringText representation of the triggerTopic.resourceTrigger.description
url NuriLogical canonical URL to reference this Topic (globally unique)Topic.url
version NtokenBusiness version of the TopicTopic.version