#![allow(unused_imports)]
use crate::r4::types;
use ::serde::{Deserialize, Serialize};
use fhir_derive_macros::{Builder, Validate};
#[serde_with::skip_serializing_none]
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Validate, Builder)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r4")]
pub struct ImplementationGuide {
pub id: Option<types::String>,
pub meta: Option<types::Meta>,
pub implicit_rules: Option<types::Uri>,
#[serde(rename = "_implicitRules")]
pub implicit_rules_ext: Option<types::Element>,
pub language: Option<types::Code>,
#[serde(rename = "_language")]
pub language_ext: Option<types::Element>,
pub text: Option<types::Narrative>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub contained: Vec<::serde_json::Value>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub extension: Vec<types::Extension>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub modifier_extension: Vec<types::Extension>,
pub url: types::Uri,
#[serde(rename = "_url")]
pub url_ext: Option<types::Element>,
pub version: Option<types::String>,
#[serde(rename = "_version")]
pub version_ext: Option<types::Element>,
pub name: types::String,
#[serde(rename = "_name")]
pub name_ext: Option<types::Element>,
pub title: Option<types::String>,
#[serde(rename = "_title")]
pub title_ext: Option<types::Element>,
pub status: crate::coded::Coded<crate::r4::codes::PublicationStatus>,
#[serde(rename = "_status")]
pub status_ext: Option<types::Element>,
pub experimental: Option<types::Boolean>,
#[serde(rename = "_experimental")]
pub experimental_ext: Option<types::Element>,
pub date: Option<types::DateTime>,
#[serde(rename = "_date")]
pub date_ext: Option<types::Element>,
pub publisher: Option<types::String>,
#[serde(rename = "_publisher")]
pub publisher_ext: Option<types::Element>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub contact: Vec<types::ContactDetail>,
pub description: Option<types::Markdown>,
#[serde(rename = "_description")]
pub description_ext: Option<types::Element>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub use_context: Vec<types::UsageContext>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub jurisdiction: Vec<types::CodeableConcept>,
pub copyright: Option<types::Markdown>,
#[serde(rename = "_copyright")]
pub copyright_ext: Option<types::Element>,
pub package_id: types::Id,
#[serde(rename = "_packageId")]
pub package_id_ext: Option<types::Element>,
pub license: Option<crate::coded::Coded<crate::r4::codes::SpdxLicense>>,
#[serde(rename = "_license")]
pub license_ext: Option<types::Element>,
pub fhir_version: ::vec1::Vec1<crate::coded::Coded<crate::r4::codes::FhirVersion>>,
#[serde(rename = "_fhirVersion")]
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub fhir_version_ext: Vec<Option<types::Element>>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub depends_on: Vec<ImplementationGuideDependsOn>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub global: Vec<ImplementationGuideGlobal>,
pub definition: Option<ImplementationGuideDefinition>,
pub manifest: Option<ImplementationGuideManifest>,
}
#[serde_with::skip_serializing_none]
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Validate)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r4")]
pub struct ImplementationGuideDefinition {
pub id: Option<types::String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub extension: Vec<types::Extension>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub modifier_extension: Vec<types::Extension>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub grouping: Vec<ImplementationGuideDefinitionGrouping>,
pub resource: ::vec1::Vec1<ImplementationGuideDefinitionResource>,
pub page: Option<ImplementationGuideDefinitionPage>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub parameter: Vec<ImplementationGuideDefinitionParameter>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub template: Vec<ImplementationGuideDefinitionTemplate>,
}
#[serde_with::skip_serializing_none]
#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq, Validate)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r4")]
pub struct ImplementationGuideDefinitionGrouping {
pub id: Option<types::String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub extension: Vec<types::Extension>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub modifier_extension: Vec<types::Extension>,
pub name: types::String,
#[serde(rename = "_name")]
pub name_ext: Option<types::Element>,
pub description: Option<types::String>,
#[serde(rename = "_description")]
pub description_ext: Option<types::Element>,
}
#[serde_with::skip_serializing_none]
#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq, Validate)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r4")]
pub struct ImplementationGuideDefinitionPage {
pub id: Option<types::String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub extension: Vec<types::Extension>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub modifier_extension: Vec<types::Extension>,
#[serde(flatten)]
pub name: Option<ImplementationGuideDefinitionPageName>,
pub title: types::String,
#[serde(rename = "_title")]
pub title_ext: Option<types::Element>,
pub generation: crate::coded::Coded<crate::r4::codes::GuidePageGeneration>,
#[serde(rename = "_generation")]
pub generation_ext: Option<types::Element>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub page: Vec<ImplementationGuideDefinitionPage>,
}
#[serde_with::skip_serializing_none]
#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq, Validate)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r4")]
pub struct ImplementationGuideDefinitionParameter {
pub id: Option<types::String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub extension: Vec<types::Extension>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub modifier_extension: Vec<types::Extension>,
pub code: crate::coded::Coded<crate::r4::codes::GuideParameterCode>,
#[serde(rename = "_code")]
pub code_ext: Option<types::Element>,
pub value: types::String,
#[serde(rename = "_value")]
pub value_ext: Option<types::Element>,
}
#[serde_with::skip_serializing_none]
#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq, Validate)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r4")]
pub struct ImplementationGuideDefinitionResource {
pub id: Option<types::String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub extension: Vec<types::Extension>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub modifier_extension: Vec<types::Extension>,
pub reference: types::Reference,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub fhir_version: Vec<crate::coded::Coded<crate::r4::codes::FhirVersion>>,
#[serde(rename = "_fhirVersion")]
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub fhir_version_ext: Vec<Option<types::Element>>,
pub name: Option<types::String>,
#[serde(rename = "_name")]
pub name_ext: Option<types::Element>,
pub description: Option<types::String>,
#[serde(rename = "_description")]
pub description_ext: Option<types::Element>,
#[serde(flatten)]
pub example: Option<ImplementationGuideDefinitionResourceExample>,
pub grouping_id: Option<types::Id>,
#[serde(rename = "_groupingId")]
pub grouping_id_ext: Option<types::Element>,
}
#[serde_with::skip_serializing_none]
#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq, Validate)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r4")]
pub struct ImplementationGuideDefinitionTemplate {
pub id: Option<types::String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub extension: Vec<types::Extension>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub modifier_extension: Vec<types::Extension>,
pub code: types::Code,
#[serde(rename = "_code")]
pub code_ext: Option<types::Element>,
pub source: types::String,
#[serde(rename = "_source")]
pub source_ext: Option<types::Element>,
pub scope: Option<types::String>,
#[serde(rename = "_scope")]
pub scope_ext: Option<types::Element>,
}
#[serde_with::skip_serializing_none]
#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq, Validate)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r4")]
pub struct ImplementationGuideDependsOn {
pub id: Option<types::String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub extension: Vec<types::Extension>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub modifier_extension: Vec<types::Extension>,
pub uri: types::Canonical,
#[serde(rename = "_uri")]
pub uri_ext: Option<types::Element>,
pub package_id: Option<types::Id>,
#[serde(rename = "_packageId")]
pub package_id_ext: Option<types::Element>,
pub version: Option<types::String>,
#[serde(rename = "_version")]
pub version_ext: Option<types::Element>,
}
#[serde_with::skip_serializing_none]
#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq, Validate)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r4")]
pub struct ImplementationGuideGlobal {
pub id: Option<types::String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub extension: Vec<types::Extension>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub modifier_extension: Vec<types::Extension>,
pub r#type: crate::coded::Coded<crate::r4::codes::ResourceTypes>,
#[serde(rename = "_type")]
pub type_ext: Option<types::Element>,
pub profile: types::Canonical,
#[serde(rename = "_profile")]
pub profile_ext: Option<types::Element>,
}
#[serde_with::skip_serializing_none]
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Validate)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r4")]
pub struct ImplementationGuideManifest {
pub id: Option<types::String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub extension: Vec<types::Extension>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub modifier_extension: Vec<types::Extension>,
pub rendering: Option<types::Url>,
#[serde(rename = "_rendering")]
pub rendering_ext: Option<types::Element>,
pub resource: ::vec1::Vec1<ImplementationGuideManifestResource>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub page: Vec<ImplementationGuideManifestPage>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub image: Vec<types::String>,
#[serde(rename = "_image")]
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub image_ext: Vec<Option<types::Element>>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub other: Vec<types::String>,
#[serde(rename = "_other")]
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub other_ext: Vec<Option<types::Element>>,
}
#[serde_with::skip_serializing_none]
#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq, Validate)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r4")]
pub struct ImplementationGuideManifestPage {
pub id: Option<types::String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub extension: Vec<types::Extension>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub modifier_extension: Vec<types::Extension>,
pub name: types::String,
#[serde(rename = "_name")]
pub name_ext: Option<types::Element>,
pub title: Option<types::String>,
#[serde(rename = "_title")]
pub title_ext: Option<types::Element>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub anchor: Vec<types::String>,
#[serde(rename = "_anchor")]
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub anchor_ext: Vec<Option<types::Element>>,
}
#[serde_with::skip_serializing_none]
#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq, Validate)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r4")]
pub struct ImplementationGuideManifestResource {
pub id: Option<types::String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub extension: Vec<types::Extension>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub modifier_extension: Vec<types::Extension>,
pub reference: types::Reference,
#[serde(flatten)]
pub example: Option<ImplementationGuideManifestResourceExample>,
pub relative_path: Option<types::Url>,
#[serde(rename = "_relativePath")]
pub relative_path_ext: Option<types::Element>,
}
#[derive(Debug, Clone, PartialEq, Eq, fhir_derive_macros::FhirChoice, Validate)]
#[fhir_version("r4")]
#[allow(clippy::large_enum_variant)]
pub enum ImplementationGuideDefinitionPageName {
#[fhir("nameUrl")]
Url(crate::r4::choice::Primitive<types::Url>),
#[fhir("nameReference")]
Reference(Box<types::Reference>),
}
#[derive(Debug, Clone, PartialEq, Eq, fhir_derive_macros::FhirChoice, Validate)]
#[fhir_version("r4")]
#[allow(clippy::large_enum_variant)]
pub enum ImplementationGuideDefinitionResourceExample {
#[fhir("exampleBoolean")]
Boolean(crate::r4::choice::Primitive<types::Boolean>),
#[fhir("exampleCanonical")]
Canonical(crate::r4::choice::Primitive<types::Canonical>),
}
#[derive(Debug, Clone, PartialEq, Eq, fhir_derive_macros::FhirChoice, Validate)]
#[fhir_version("r4")]
#[allow(clippy::large_enum_variant)]
pub enum ImplementationGuideManifestResourceExample {
#[fhir("exampleBoolean")]
Boolean(crate::r4::choice::Primitive<types::Boolean>),
#[fhir("exampleCanonical")]
Canonical(crate::r4::choice::Primitive<types::Canonical>),
}