use crate::prelude::*;
#[derive(Resource, Debug, Clone, Default)]
#[fhir(base="DomainResource")]
pub struct StructureMap {
#[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="1", 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="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="structure", min="0", max="*", summary=true, modifier=false, choice="")]
pub structure: Option<Vec<StructureMapStructureBackboneElement>>,
#[fhir(name="import", min="0", max="*", summary=true, modifier=false, choice="")]
pub import: Option<Vec<CanonicalDt>>,
#[fhir(name="const", min="0", max="*", summary=true, modifier=false, choice="")]
pub const_: Option<Vec<StructureMapConstBackboneElement>>,
#[fhir(name="group", min="1", max="*", summary=true, modifier=false, choice="")]
pub group: Option<Vec<StructureMapGroupBackboneElement>>,
}
#[derive(BackboneElement, Debug, Clone, Default)]
pub struct StructureMapConstBackboneElement {
#[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="name", min="0", max="1", summary=true, modifier=false, choice="")]
pub name: Option<IdDt>,
#[fhir(name="value", min="0", max="1", summary=true, modifier=false, choice="")]
pub value: Option<StringDt>,
}
#[derive(BackboneElement, Debug, Clone, Default)]
pub struct StructureMapGroupBackboneElement {
#[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="name", min="1", max="1", summary=true, modifier=false, choice="")]
pub name: Option<IdDt>,
#[fhir(name="extends", min="0", max="1", summary=true, modifier=false, choice="")]
pub extends: Option<IdDt>,
#[fhir(name="typeMode", min="0", max="1", summary=true, modifier=false, choice="")]
pub type_mode: Option<CodeDt>,
#[fhir(name="documentation", min="0", max="1", summary=true, modifier=false, choice="")]
pub documentation: Option<StringDt>,
#[fhir(name="input", min="1", max="*", summary=true, modifier=false, choice="")]
pub input: Option<Vec<StructureMapGroupInputBackboneElement>>,
#[fhir(name="rule", min="0", max="*", summary=true, modifier=false, choice="")]
pub rule: Option<Vec<StructureMapGroupRuleBackboneElement>>,
}
#[derive(BackboneElement, Debug, Clone, Default)]
pub struct StructureMapGroupInputBackboneElement {
#[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="name", min="1", max="1", summary=true, modifier=false, choice="")]
pub name: Option<IdDt>,
#[fhir(name="type", min="0", max="1", summary=true, modifier=false, choice="")]
pub type_: Option<StringDt>,
#[fhir(name="mode", min="1", max="1", summary=true, modifier=false, choice="")]
pub mode: Option<CodeDt>,
#[fhir(name="documentation", min="0", max="1", summary=false, modifier=false, choice="")]
pub documentation: Option<StringDt>,
}
#[derive(BackboneElement, Debug, Clone, Default)]
pub struct StructureMapGroupRuleBackboneElement {
#[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="name", min="0", max="1", summary=true, modifier=false, choice="")]
pub name: Option<IdDt>,
#[fhir(name="source", min="1", max="*", summary=true, modifier=false, choice="")]
pub source: Option<Vec<StructureMapGroupRuleSourceBackboneElement>>,
#[fhir(name="target", min="0", max="*", summary=true, modifier=false, choice="")]
pub target: Option<Vec<StructureMapGroupRuleTargetBackboneElement>>,
#[fhir(name="rule", min="0", max="*", summary=true, modifier=false, choice="")]
pub rule: Option<Vec<StructureMapGroupRuleBackboneElement>>,
#[fhir(name="dependent", min="0", max="*", summary=true, modifier=false, choice="")]
pub dependent: Option<Vec<StructureMapGroupRuleDependentBackboneElement>>,
#[fhir(name="documentation", min="0", max="1", summary=false, modifier=false, choice="")]
pub documentation: Option<StringDt>,
}
#[derive(BackboneElement, Debug, Clone, Default)]
pub struct StructureMapGroupRuleTargetBackboneElement {
#[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="context", min="0", max="1", summary=true, modifier=false, choice="")]
pub context: Option<StringDt>,
#[fhir(name="element", min="0", max="1", summary=true, modifier=false, choice="")]
pub element: Option<StringDt>,
#[fhir(name="variable", min="0", max="1", summary=true, modifier=false, choice="")]
pub variable: Option<IdDt>,
#[fhir(name="listMode", min="0", max="*", summary=true, modifier=false, choice="")]
pub list_mode: Option<Vec<CodeDt>>,
#[fhir(name="listRuleId", min="0", max="1", summary=true, modifier=false, choice="")]
pub list_rule_id: Option<IdDt>,
#[fhir(name="transform", min="0", max="1", summary=true, modifier=false, choice="")]
pub transform: Option<CodeDt>,
#[fhir(name="parameter", min="0", max="*", summary=true, modifier=false, choice="")]
pub parameter: Option<Vec<StructureMapGroupRuleTargetParameterBackboneElement>>,
}
#[derive(BackboneElement, Debug, Clone, Default)]
pub struct StructureMapGroupRuleTargetParameterBackboneElement {
#[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="value", min="1", max="1", summary=true, modifier=false, choice="")]
pub value: Option<DateTimeDt>,
}
#[derive(BackboneElement, Debug, Clone, Default)]
pub struct StructureMapGroupRuleDependentBackboneElement {
#[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="name", min="1", max="1", summary=true, modifier=false, choice="")]
pub name: Option<IdDt>,
#[fhir(name="parameter", min="1", max="*", summary=true, modifier=false, choice="")]
pub parameter: Option<Vec<StructureMapGroupRuleTargetParameterBackboneElement>>,
}
#[derive(BackboneElement, Debug, Clone, Default)]
pub struct StructureMapGroupRuleSourceBackboneElement {
#[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="context", min="1", max="1", summary=true, modifier=false, choice="")]
pub context: Option<IdDt>,
#[fhir(name="min", min="0", max="1", summary=true, modifier=false, choice="")]
pub min: Option<IntegerDt>,
#[fhir(name="max", min="0", max="1", summary=true, modifier=false, choice="")]
pub max: Option<StringDt>,
#[fhir(name="type", min="0", max="1", summary=true, modifier=false, choice="")]
pub type_: Option<StringDt>,
#[fhir(name="defaultValue", min="0", max="1", summary=true, modifier=false, choice="")]
pub default_value: Option<StringDt>,
#[fhir(name="element", min="0", max="1", summary=true, modifier=false, choice="")]
pub element: Option<StringDt>,
#[fhir(name="listMode", min="0", max="1", summary=true, modifier=false, choice="")]
pub list_mode: Option<CodeDt>,
#[fhir(name="variable", min="0", max="1", summary=true, modifier=false, choice="")]
pub variable: Option<IdDt>,
#[fhir(name="condition", min="0", max="1", summary=true, modifier=false, choice="")]
pub condition: Option<StringDt>,
#[fhir(name="check", min="0", max="1", summary=true, modifier=false, choice="")]
pub check: Option<StringDt>,
#[fhir(name="logMessage", min="0", max="1", summary=true, modifier=false, choice="")]
pub log_message: Option<StringDt>,
}
#[derive(BackboneElement, Debug, Clone, Default)]
pub struct StructureMapStructureBackboneElement {
#[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="url", min="1", max="1", summary=true, modifier=false, choice="")]
pub url: Option<CanonicalDt>,
#[fhir(name="mode", min="1", max="1", summary=true, modifier=false, choice="")]
pub mode: Option<CodeDt>,
#[fhir(name="alias", min="0", max="1", summary=true, modifier=false, choice="")]
pub alias: Option<StringDt>,
#[fhir(name="documentation", min="0", max="1", summary=false, modifier=false, choice="")]
pub documentation: Option<StringDt>,
}