#![allow(unused_imports)]
use crate::r3::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("r3")]
pub struct CapabilityStatement {
pub id: Option<types::Id>,
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: Option<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: Option<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::r3::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: 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 purpose: Option<types::Markdown>,
#[serde(rename = "_purpose")]
pub purpose_ext: Option<types::Element>,
pub copyright: Option<types::Markdown>,
#[serde(rename = "_copyright")]
pub copyright_ext: Option<types::Element>,
pub kind: crate::coded::Coded<crate::r3::codes::CapabilityStatementKind>,
#[serde(rename = "_kind")]
pub kind_ext: Option<types::Element>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub instantiates: Vec<types::Uri>,
#[serde(rename = "_instantiates")]
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub instantiates_ext: Vec<Option<types::Element>>,
pub software: Option<CapabilityStatementSoftware>,
pub implementation: Option<CapabilityStatementImplementation>,
pub fhir_version: types::Id,
#[serde(rename = "_fhirVersion")]
pub fhir_version_ext: Option<types::Element>,
pub accept_unknown: crate::coded::Coded<crate::r3::codes::UnknownContentCode>,
#[serde(rename = "_acceptUnknown")]
pub accept_unknown_ext: Option<types::Element>,
pub format: ::vec1::Vec1<types::Code>,
#[serde(rename = "_format")]
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub format_ext: Vec<Option<types::Element>>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub patch_format: Vec<types::Code>,
#[serde(rename = "_patchFormat")]
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub patch_format_ext: Vec<Option<types::Element>>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub implementation_guide: Vec<types::Uri>,
#[serde(rename = "_implementationGuide")]
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub implementation_guide_ext: Vec<Option<types::Element>>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub profile: Vec<types::Reference>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub rest: Vec<CapabilityStatementRest>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub messaging: Vec<CapabilityStatementMessaging>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub document: Vec<CapabilityStatementDocument>,
}
#[serde_with::skip_serializing_none]
#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq, Validate)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r3")]
pub struct CapabilityStatementDocument {
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 mode: crate::coded::Coded<crate::r3::codes::DocumentMode>,
#[serde(rename = "_mode")]
pub mode_ext: Option<types::Element>,
pub documentation: Option<types::String>,
#[serde(rename = "_documentation")]
pub documentation_ext: Option<types::Element>,
pub profile: types::Reference,
}
#[serde_with::skip_serializing_none]
#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq, Validate)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r3")]
pub struct CapabilityStatementImplementation {
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 description: types::String,
#[serde(rename = "_description")]
pub description_ext: Option<types::Element>,
pub url: Option<types::Uri>,
#[serde(rename = "_url")]
pub url_ext: Option<types::Element>,
}
#[serde_with::skip_serializing_none]
#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq, Validate)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r3")]
pub struct CapabilityStatementMessaging {
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 endpoint: Vec<CapabilityStatementMessagingEndpoint>,
pub reliable_cache: Option<types::UnsignedInt>,
#[serde(rename = "_reliableCache")]
pub reliable_cache_ext: Option<types::Element>,
pub documentation: Option<types::String>,
#[serde(rename = "_documentation")]
pub documentation_ext: Option<types::Element>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub supported_message: Vec<CapabilityStatementMessagingSupportedMessage>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub event: Vec<CapabilityStatementMessagingEvent>,
}
#[serde_with::skip_serializing_none]
#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq, Validate)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r3")]
pub struct CapabilityStatementMessagingEndpoint {
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 protocol: types::Coding,
pub address: types::Uri,
#[serde(rename = "_address")]
pub address_ext: Option<types::Element>,
}
#[serde_with::skip_serializing_none]
#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq, Validate)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r3")]
pub struct CapabilityStatementMessagingEvent {
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::Coding,
pub category: Option<crate::coded::Coded<crate::r3::codes::MessageSignificanceCategory>>,
#[serde(rename = "_category")]
pub category_ext: Option<types::Element>,
pub mode: crate::coded::Coded<crate::r3::codes::EventCapabilityMode>,
#[serde(rename = "_mode")]
pub mode_ext: Option<types::Element>,
pub focus: crate::coded::Coded<crate::r3::codes::ResourceTypes>,
#[serde(rename = "_focus")]
pub focus_ext: Option<types::Element>,
pub request: types::Reference,
pub response: types::Reference,
pub documentation: Option<types::String>,
#[serde(rename = "_documentation")]
pub documentation_ext: Option<types::Element>,
}
#[serde_with::skip_serializing_none]
#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq, Validate)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r3")]
pub struct CapabilityStatementMessagingSupportedMessage {
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 mode: crate::coded::Coded<crate::r3::codes::EventCapabilityMode>,
#[serde(rename = "_mode")]
pub mode_ext: Option<types::Element>,
pub definition: types::Reference,
}
#[serde_with::skip_serializing_none]
#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq, Validate)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r3")]
pub struct CapabilityStatementRest {
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 mode: crate::coded::Coded<crate::r3::codes::RestfulCapabilityMode>,
#[serde(rename = "_mode")]
pub mode_ext: Option<types::Element>,
pub documentation: Option<types::String>,
#[serde(rename = "_documentation")]
pub documentation_ext: Option<types::Element>,
pub security: Option<CapabilityStatementRestSecurity>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub resource: Vec<CapabilityStatementRestResource>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub interaction: Vec<CapabilityStatementRestInteraction>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub search_param: Vec<CapabilityStatementRestResourceSearchParam>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub operation: Vec<CapabilityStatementRestOperation>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub compartment: Vec<types::Uri>,
#[serde(rename = "_compartment")]
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub compartment_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("r3")]
pub struct CapabilityStatementRestInteraction {
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 documentation: Option<types::String>,
#[serde(rename = "_documentation")]
pub documentation_ext: Option<types::Element>,
}
#[serde_with::skip_serializing_none]
#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq, Validate)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r3")]
pub struct CapabilityStatementRestOperation {
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 definition: types::Reference,
}
#[serde_with::skip_serializing_none]
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Validate)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r3")]
pub struct CapabilityStatementRestResource {
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::r3::codes::ResourceTypes>,
#[serde(rename = "_type")]
pub type_ext: Option<types::Element>,
pub profile: Option<types::Reference>,
pub documentation: Option<types::Markdown>,
#[serde(rename = "_documentation")]
pub documentation_ext: Option<types::Element>,
pub interaction: ::vec1::Vec1<CapabilityStatementRestResourceInteraction>,
pub versioning: Option<crate::coded::Coded<crate::r3::codes::VersioningPolicy>>,
#[serde(rename = "_versioning")]
pub versioning_ext: Option<types::Element>,
pub read_history: Option<types::Boolean>,
#[serde(rename = "_readHistory")]
pub read_history_ext: Option<types::Element>,
pub update_create: Option<types::Boolean>,
#[serde(rename = "_updateCreate")]
pub update_create_ext: Option<types::Element>,
pub conditional_create: Option<types::Boolean>,
#[serde(rename = "_conditionalCreate")]
pub conditional_create_ext: Option<types::Element>,
pub conditional_read: Option<crate::coded::Coded<crate::r3::codes::ConditionalReadStatus>>,
#[serde(rename = "_conditionalRead")]
pub conditional_read_ext: Option<types::Element>,
pub conditional_update: Option<types::Boolean>,
#[serde(rename = "_conditionalUpdate")]
pub conditional_update_ext: Option<types::Element>,
pub conditional_delete: Option<crate::coded::Coded<crate::r3::codes::ConditionalDeleteStatus>>,
#[serde(rename = "_conditionalDelete")]
pub conditional_delete_ext: Option<types::Element>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub reference_policy: Vec<crate::coded::Coded<crate::r3::codes::ReferenceHandlingPolicy>>,
#[serde(rename = "_referencePolicy")]
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub reference_policy_ext: Vec<Option<types::Element>>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub search_include: Vec<types::String>,
#[serde(rename = "_searchInclude")]
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub search_include_ext: Vec<Option<types::Element>>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub search_rev_include: Vec<types::String>,
#[serde(rename = "_searchRevInclude")]
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub search_rev_include_ext: Vec<Option<types::Element>>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub search_param: Vec<CapabilityStatementRestResourceSearchParam>,
}
#[serde_with::skip_serializing_none]
#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq, Validate)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r3")]
pub struct CapabilityStatementRestResourceInteraction {
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 documentation: Option<types::String>,
#[serde(rename = "_documentation")]
pub documentation_ext: Option<types::Element>,
}
#[serde_with::skip_serializing_none]
#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq, Validate)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r3")]
pub struct CapabilityStatementRestResourceSearchParam {
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 definition: Option<types::Uri>,
#[serde(rename = "_definition")]
pub definition_ext: Option<types::Element>,
pub r#type: crate::coded::Coded<crate::r3::codes::SearchParamType>,
#[serde(rename = "_type")]
pub type_ext: Option<types::Element>,
pub documentation: Option<types::String>,
#[serde(rename = "_documentation")]
pub documentation_ext: Option<types::Element>,
}
#[serde_with::skip_serializing_none]
#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq, Validate)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r3")]
pub struct CapabilityStatementRestSecurity {
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 cors: Option<types::Boolean>,
#[serde(rename = "_cors")]
pub cors_ext: Option<types::Element>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub service: Vec<types::CodeableConcept>,
pub description: Option<types::String>,
#[serde(rename = "_description")]
pub description_ext: Option<types::Element>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub certificate: Vec<CapabilityStatementRestSecurityCertificate>,
}
#[serde_with::skip_serializing_none]
#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq, Validate)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r3")]
pub struct CapabilityStatementRestSecurityCertificate {
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: Option<types::Code>,
#[serde(rename = "_type")]
pub type_ext: Option<types::Element>,
pub blob: Option<types::Base64Binary>,
#[serde(rename = "_blob")]
pub blob_ext: Option<types::Element>,
}
#[serde_with::skip_serializing_none]
#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq, Validate)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r3")]
pub struct CapabilityStatementSoftware {
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 version: Option<types::String>,
#[serde(rename = "_version")]
pub version_ext: Option<types::Element>,
pub release_date: Option<types::DateTime>,
#[serde(rename = "_releaseDate")]
pub release_date_ext: Option<types::Element>,
}