use crate::prelude::*;
#[derive(Resource, Debug, Clone, Default)]
#[fhir(base="DomainResource")]
pub struct SubscriptionTopic {
#[fhir(name="id", min="0", max="1", summary=true, modifier=false, choice="")]
pub id: Option<Id>,
#[fhir(name="meta", min="0", max="1", summary=true, modifier=false, choice="")]
pub meta: Option<Meta>,
#[fhir(name="implicitRules", min="0", max="1", summary=true, modifier=true)]
pub implicit_rules: Option<UriDt>,
#[fhir(name="language", min="0", max="1", summary=false, modifier=false, choice="")]
pub language: Option<CodeDt>,
#[fhir(name="text", min="0", max="1", summary=false, modifier=false, choice="")]
pub text: Option<Narrative>,
#[fhir(name="contained", min="0", max="*", summary=false, modifier=false, choice="")]
pub contained: Option<Vec<AnyResource>>,
#[fhir(name="extension", min="0", max="*", summary=false, modifier=false, choice="")]
pub extension: Option<Vec<Extension>>,
#[fhir(name="modifierExtension", min="0", max="*", summary=true, modifier=true)]
pub modifier_extension: Option<Vec<Extension>>,
#[fhir(name="url", min="1", max="1", summary=true, modifier=false, choice="")]
pub url: Option<UriDt>,
#[fhir(name="identifier", min="0", max="*", summary=true, modifier=false, choice="")]
pub identifier: Option<Vec<Identifier>>,
#[fhir(name="version", min="0", max="1", summary=true, modifier=false, choice="")]
pub version: Option<StringDt>,
#[fhir(name="versionAlgorithm", min="0", max="1", summary=true, modifier=false, choice="")]
pub version_algorithm: Option<Coding>,
#[fhir(name="name", min="0", max="1", summary=true, modifier=false, choice="")]
pub name: Option<StringDt>,
#[fhir(name="title", min="0", max="1", summary=true, modifier=false, choice="")]
pub title: Option<StringDt>,
#[fhir(name="derivedFrom", min="0", max="*", summary=true, modifier=false, choice="")]
pub derived_from: Option<Vec<CanonicalDt>>,
#[fhir(name="status", min="1", max="1", summary=true, modifier=true)]
pub status: Option<CodeDt>,
#[fhir(name="experimental", min="0", max="1", summary=true, modifier=false, choice="")]
pub experimental: Option<BooleanDt>,
#[fhir(name="date", min="0", max="1", summary=true, modifier=false, choice="")]
pub date: Option<DateTimeDt>,
#[fhir(name="publisher", min="0", max="1", summary=true, modifier=false, choice="")]
pub publisher: Option<StringDt>,
#[fhir(name="contact", min="0", max="*", summary=true, modifier=false, choice="")]
pub contact: Option<Vec<ContactDetail>>,
#[fhir(name="description", min="0", max="1", summary=false, modifier=false, choice="")]
pub description: Option<MarkdownDt>,
#[fhir(name="useContext", min="0", max="*", summary=true, modifier=false, choice="")]
pub use_context: Option<Vec<UsageContext>>,
#[fhir(name="jurisdiction", min="0", max="*", summary=true, modifier=false, choice="")]
pub jurisdiction: Option<Vec<CodeableConcept>>,
#[fhir(name="purpose", min="0", max="1", summary=false, modifier=false, choice="")]
pub purpose: Option<MarkdownDt>,
#[fhir(name="copyright", min="0", max="1", summary=false, modifier=false, choice="")]
pub copyright: Option<MarkdownDt>,
#[fhir(name="copyrightLabel", min="0", max="1", summary=false, modifier=false, choice="")]
pub copyright_label: Option<StringDt>,
#[fhir(name="approvalDate", min="0", max="1", summary=false, modifier=false, choice="")]
pub approval_date: Option<DateDt>,
#[fhir(name="lastReviewDate", min="0", max="1", summary=false, modifier=false, choice="")]
pub last_review_date: Option<DateDt>,
#[fhir(name="effectivePeriod", min="0", max="1", summary=true, modifier=false, choice="")]
pub effective_period: Option<Period>,
#[fhir(name="resourceTrigger", min="0", max="*", summary=true, modifier=false, choice="")]
pub resource_trigger: Option<Vec<SubscriptionTopicResourceTriggerBackboneElement>>,
#[fhir(name="eventTrigger", min="0", max="*", summary=true, modifier=false, choice="")]
pub event_trigger: Option<Vec<SubscriptionTopicEventTriggerBackboneElement>>,
#[fhir(name="canFilterBy", min="0", max="*", summary=true, modifier=false, choice="")]
pub can_filter_by: Option<Vec<SubscriptionTopicCanFilterByBackboneElement>>,
#[fhir(name="notificationShape", min="0", max="*", summary=true, modifier=false, choice="")]
pub notification_shape: Option<Vec<SubscriptionTopicNotificationShapeBackboneElement>>,
}
#[derive(BackboneElement, Debug, Clone, Default)]
pub struct SubscriptionTopicEventTriggerBackboneElement {
#[fhir(name="id", min="0", max="1", summary=false, modifier=false, choice="")]
pub id: Option<String>,
#[fhir(name="extension", min="0", max="*", summary=false, modifier=false, choice="")]
pub extension: Option<Vec<Extension>>,
#[fhir(name="modifierExtension", min="0", max="*", summary=true, modifier=true)]
pub modifier_extension: Option<Vec<Extension>>,
#[fhir(name="description", min="0", max="1", summary=true, modifier=false, choice="")]
pub description: Option<MarkdownDt>,
#[fhir(name="event", min="1", max="1", summary=true, modifier=false, choice="")]
pub event: Option<CodeableConcept>,
#[fhir(name="resource", min="1", max="1", summary=true, modifier=false, choice="")]
pub resource: Option<UriDt>,
}
#[derive(BackboneElement, Debug, Clone, Default)]
pub struct SubscriptionTopicCanFilterByBackboneElement {
#[fhir(name="id", min="0", max="1", summary=false, modifier=false, choice="")]
pub id: Option<String>,
#[fhir(name="extension", min="0", max="*", summary=false, modifier=false, choice="")]
pub extension: Option<Vec<Extension>>,
#[fhir(name="modifierExtension", min="0", max="*", summary=true, modifier=true)]
pub modifier_extension: Option<Vec<Extension>>,
#[fhir(name="description", min="0", max="1", summary=true, modifier=false, choice="")]
pub description: Option<MarkdownDt>,
#[fhir(name="resource", min="0", max="1", summary=true, modifier=false, choice="")]
pub resource: Option<UriDt>,
#[fhir(name="filterParameter", min="1", max="1", summary=true, modifier=false, choice="")]
pub filter_parameter: Option<StringDt>,
#[fhir(name="filterDefinition", min="0", max="1", summary=true, modifier=false, choice="")]
pub filter_definition: Option<UriDt>,
#[fhir(name="comparator", min="0", max="*", summary=false, modifier=false, choice="")]
pub comparator: Option<Vec<CodeDt>>,
#[fhir(name="modifier", min="0", max="*", summary=false, modifier=false, choice="")]
pub modifier: Option<Vec<CodeDt>>,
}
#[derive(BackboneElement, Debug, Clone, Default)]
pub struct SubscriptionTopicResourceTriggerBackboneElement {
#[fhir(name="id", min="0", max="1", summary=false, modifier=false, choice="")]
pub id: Option<String>,
#[fhir(name="extension", min="0", max="*", summary=false, modifier=false, choice="")]
pub extension: Option<Vec<Extension>>,
#[fhir(name="modifierExtension", min="0", max="*", summary=true, modifier=true)]
pub modifier_extension: Option<Vec<Extension>>,
#[fhir(name="description", min="0", max="1", summary=true, modifier=false, choice="")]
pub description: Option<MarkdownDt>,
#[fhir(name="resource", min="1", max="1", summary=true, modifier=false, choice="")]
pub resource: Option<UriDt>,
#[fhir(name="supportedInteraction", min="0", max="*", summary=true, modifier=false, choice="")]
pub supported_interaction: Option<Vec<CodeDt>>,
#[fhir(name="queryCriteria", min="0", max="1", summary=true, modifier=false, choice="")]
pub query_criteria: Option<SubscriptionTopicResourceTriggerQueryCriteriaBackboneElement>,
#[fhir(name="fhirPathCriteria", min="0", max="1", summary=true, modifier=false, choice="")]
pub fhir_path_criteria: Option<StringDt>,
}
#[derive(BackboneElement, Debug, Clone, Default)]
pub struct SubscriptionTopicResourceTriggerQueryCriteriaBackboneElement {
#[fhir(name="id", min="0", max="1", summary=false, modifier=false, choice="")]
pub id: Option<String>,
#[fhir(name="extension", min="0", max="*", summary=false, modifier=false, choice="")]
pub extension: Option<Vec<Extension>>,
#[fhir(name="modifierExtension", min="0", max="*", summary=true, modifier=true)]
pub modifier_extension: Option<Vec<Extension>>,
#[fhir(name="previous", min="0", max="1", summary=true, modifier=false, choice="")]
pub previous: Option<StringDt>,
#[fhir(name="resultForCreate", min="0", max="1", summary=true, modifier=false, choice="")]
pub result_for_create: Option<CodeDt>,
#[fhir(name="current", min="0", max="1", summary=true, modifier=false, choice="")]
pub current: Option<StringDt>,
#[fhir(name="resultForDelete", min="0", max="1", summary=true, modifier=false, choice="")]
pub result_for_delete: Option<CodeDt>,
#[fhir(name="requireBoth", min="0", max="1", summary=true, modifier=false, choice="")]
pub require_both: Option<BooleanDt>,
}
#[derive(BackboneElement, Debug, Clone, Default)]
pub struct SubscriptionTopicNotificationShapeBackboneElement {
#[fhir(name="id", min="0", max="1", summary=false, modifier=false, choice="")]
pub id: Option<String>,
#[fhir(name="extension", min="0", max="*", summary=false, modifier=false, choice="")]
pub extension: Option<Vec<Extension>>,
#[fhir(name="modifierExtension", min="0", max="*", summary=true, modifier=true)]
pub modifier_extension: Option<Vec<Extension>>,
#[fhir(name="resource", min="1", max="1", summary=true, modifier=false, choice="")]
pub resource: Option<UriDt>,
#[fhir(name="include", min="0", max="*", summary=true, modifier=false, choice="")]
pub include: Option<Vec<StringDt>>,
#[fhir(name="revInclude", min="0", max="*", summary=true, modifier=false, choice="")]
pub rev_include: Option<Vec<StringDt>>,
}