#![allow(unused_imports)]
use crate::r4::types;
use ::serde::{Deserialize, Serialize};
use fhir_derive_macros::{Builder, Validate};
#[serde_with::skip_serializing_none]
#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq, Validate, Builder)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r4")]
pub struct TestScript {
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 identifier: Option<types::Identifier>,
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 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>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub origin: Vec<TestScriptOrigin>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub destination: Vec<TestScriptDestination>,
pub metadata: Option<TestScriptMetadata>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub fixture: Vec<TestScriptFixture>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub profile: Vec<types::Reference>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub variable: Vec<TestScriptVariable>,
pub setup: Option<TestScriptSetup>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub test: Vec<TestScriptTest>,
pub teardown: Option<TestScriptTeardown>,
}
#[serde_with::skip_serializing_none]
#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq, Validate)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r4")]
pub struct TestScriptDestination {
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 index: types::Integer,
#[serde(rename = "_index")]
pub index_ext: Option<types::Element>,
pub profile: types::Coding,
}
#[serde_with::skip_serializing_none]
#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq, Validate)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r4")]
pub struct TestScriptFixture {
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 autocreate: types::Boolean,
#[serde(rename = "_autocreate")]
pub autocreate_ext: Option<types::Element>,
pub autodelete: types::Boolean,
#[serde(rename = "_autodelete")]
pub autodelete_ext: Option<types::Element>,
pub resource: Option<types::Reference>,
}
#[serde_with::skip_serializing_none]
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Validate)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r4")]
pub struct TestScriptMetadata {
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 link: Vec<TestScriptMetadataLink>,
pub capability: ::vec1::Vec1<TestScriptMetadataCapability>,
}
#[serde_with::skip_serializing_none]
#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq, Validate)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r4")]
pub struct TestScriptMetadataCapability {
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 required: types::Boolean,
#[serde(rename = "_required")]
pub required_ext: Option<types::Element>,
pub validated: types::Boolean,
#[serde(rename = "_validated")]
pub validated_ext: Option<types::Element>,
pub description: Option<types::String>,
#[serde(rename = "_description")]
pub description_ext: Option<types::Element>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub origin: Vec<types::Integer>,
#[serde(rename = "_origin")]
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub origin_ext: Vec<Option<types::Element>>,
pub destination: Option<types::Integer>,
#[serde(rename = "_destination")]
pub destination_ext: Option<types::Element>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub link: Vec<types::Uri>,
#[serde(rename = "_link")]
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub link_ext: Vec<Option<types::Element>>,
pub capabilities: types::Canonical,
#[serde(rename = "_capabilities")]
pub capabilities_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 TestScriptMetadataLink {
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 url: types::Uri,
#[serde(rename = "_url")]
pub url_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 TestScriptOrigin {
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 index: types::Integer,
#[serde(rename = "_index")]
pub index_ext: Option<types::Element>,
pub profile: types::Coding,
}
#[serde_with::skip_serializing_none]
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Validate)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r4")]
pub struct TestScriptSetup {
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 action: ::vec1::Vec1<TestScriptSetupAction>,
}
#[serde_with::skip_serializing_none]
#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq, Validate)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r4")]
pub struct TestScriptSetupAction {
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 operation: Option<TestScriptSetupActionOperation>,
pub assert: Option<TestScriptSetupActionAssert>,
}
#[serde_with::skip_serializing_none]
#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq, Validate)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r4")]
pub struct TestScriptSetupActionAssert {
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 label: Option<types::String>,
#[serde(rename = "_label")]
pub label_ext: Option<types::Element>,
pub description: Option<types::String>,
#[serde(rename = "_description")]
pub description_ext: Option<types::Element>,
pub direction: Option<crate::coded::Coded<crate::r4::codes::AssertDirectionCodes>>,
#[serde(rename = "_direction")]
pub direction_ext: Option<types::Element>,
pub compare_to_source_id: Option<types::String>,
#[serde(rename = "_compareToSourceId")]
pub compare_to_source_id_ext: Option<types::Element>,
pub compare_to_source_expression: Option<types::String>,
#[serde(rename = "_compareToSourceExpression")]
pub compare_to_source_expression_ext: Option<types::Element>,
pub compare_to_source_path: Option<types::String>,
#[serde(rename = "_compareToSourcePath")]
pub compare_to_source_path_ext: Option<types::Element>,
pub content_type: Option<types::Code>,
#[serde(rename = "_contentType")]
pub content_type_ext: Option<types::Element>,
pub expression: Option<types::String>,
#[serde(rename = "_expression")]
pub expression_ext: Option<types::Element>,
pub header_field: Option<types::String>,
#[serde(rename = "_headerField")]
pub header_field_ext: Option<types::Element>,
pub minimum_id: Option<types::String>,
#[serde(rename = "_minimumId")]
pub minimum_id_ext: Option<types::Element>,
pub navigation_links: Option<types::Boolean>,
#[serde(rename = "_navigationLinks")]
pub navigation_links_ext: Option<types::Element>,
pub operator: Option<crate::coded::Coded<crate::r4::codes::AssertOperatorCodes>>,
#[serde(rename = "_operator")]
pub operator_ext: Option<types::Element>,
pub path: Option<types::String>,
#[serde(rename = "_path")]
pub path_ext: Option<types::Element>,
pub request_method: Option<crate::coded::Coded<crate::r4::codes::HttpOperations>>,
#[serde(rename = "_requestMethod")]
pub request_method_ext: Option<types::Element>,
#[serde(rename = "requestURL")]
pub request_url: Option<types::String>,
#[serde(rename = "_requestURL")]
pub request_url_ext: Option<types::Element>,
pub resource: Option<types::Code>,
#[serde(rename = "_resource")]
pub resource_ext: Option<types::Element>,
pub response: Option<crate::coded::Coded<crate::r4::codes::AssertResponseCodeTypes>>,
#[serde(rename = "_response")]
pub response_ext: Option<types::Element>,
pub response_code: Option<types::String>,
#[serde(rename = "_responseCode")]
pub response_code_ext: Option<types::Element>,
pub source_id: Option<types::Id>,
#[serde(rename = "_sourceId")]
pub source_id_ext: Option<types::Element>,
pub validate_profile_id: Option<types::Id>,
#[serde(rename = "_validateProfileId")]
pub validate_profile_id_ext: Option<types::Element>,
pub value: Option<types::String>,
#[serde(rename = "_value")]
pub value_ext: Option<types::Element>,
pub warning_only: types::Boolean,
#[serde(rename = "_warningOnly")]
pub warning_only_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 TestScriptSetupActionOperation {
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::Coding>,
pub resource: Option<types::Code>,
#[serde(rename = "_resource")]
pub resource_ext: Option<types::Element>,
pub label: Option<types::String>,
#[serde(rename = "_label")]
pub label_ext: Option<types::Element>,
pub description: Option<types::String>,
#[serde(rename = "_description")]
pub description_ext: Option<types::Element>,
pub accept: Option<types::Code>,
#[serde(rename = "_accept")]
pub accept_ext: Option<types::Element>,
pub content_type: Option<types::Code>,
#[serde(rename = "_contentType")]
pub content_type_ext: Option<types::Element>,
pub destination: Option<types::Integer>,
#[serde(rename = "_destination")]
pub destination_ext: Option<types::Element>,
pub encode_request_url: types::Boolean,
#[serde(rename = "_encodeRequestUrl")]
pub encode_request_url_ext: Option<types::Element>,
pub method: Option<crate::coded::Coded<crate::r4::codes::HttpOperations>>,
#[serde(rename = "_method")]
pub method_ext: Option<types::Element>,
pub origin: Option<types::Integer>,
#[serde(rename = "_origin")]
pub origin_ext: Option<types::Element>,
pub params: Option<types::String>,
#[serde(rename = "_params")]
pub params_ext: Option<types::Element>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub request_header: Vec<TestScriptSetupActionOperationRequestHeader>,
pub request_id: Option<types::Id>,
#[serde(rename = "_requestId")]
pub request_id_ext: Option<types::Element>,
pub response_id: Option<types::Id>,
#[serde(rename = "_responseId")]
pub response_id_ext: Option<types::Element>,
pub source_id: Option<types::Id>,
#[serde(rename = "_sourceId")]
pub source_id_ext: Option<types::Element>,
pub target_id: Option<types::Id>,
#[serde(rename = "_targetId")]
pub target_id_ext: Option<types::Element>,
pub url: Option<types::String>,
#[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("r4")]
pub struct TestScriptSetupActionOperationRequestHeader {
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 field: types::String,
#[serde(rename = "_field")]
pub field_ext: Option<types::Element>,
pub value: types::String,
#[serde(rename = "_value")]
pub value_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 TestScriptTeardown {
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 action: ::vec1::Vec1<TestScriptTeardownAction>,
}
#[serde_with::skip_serializing_none]
#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq, Validate)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r4")]
pub struct TestScriptTeardownAction {
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 operation: TestScriptSetupActionOperation,
}
#[serde_with::skip_serializing_none]
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Validate)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r4")]
pub struct TestScriptTest {
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: 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>,
pub action: ::vec1::Vec1<TestScriptTestAction>,
}
#[serde_with::skip_serializing_none]
#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq, Validate)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r4")]
pub struct TestScriptTestAction {
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 operation: Option<TestScriptSetupActionOperation>,
pub assert: Option<TestScriptSetupActionAssert>,
}
#[serde_with::skip_serializing_none]
#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq, Validate)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r4")]
pub struct TestScriptVariable {
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 default_value: Option<types::String>,
#[serde(rename = "_defaultValue")]
pub default_value_ext: Option<types::Element>,
pub description: Option<types::String>,
#[serde(rename = "_description")]
pub description_ext: Option<types::Element>,
pub expression: Option<types::String>,
#[serde(rename = "_expression")]
pub expression_ext: Option<types::Element>,
pub header_field: Option<types::String>,
#[serde(rename = "_headerField")]
pub header_field_ext: Option<types::Element>,
pub hint: Option<types::String>,
#[serde(rename = "_hint")]
pub hint_ext: Option<types::Element>,
pub path: Option<types::String>,
#[serde(rename = "_path")]
pub path_ext: Option<types::Element>,
pub source_id: Option<types::Id>,
#[serde(rename = "_sourceId")]
pub source_id_ext: Option<types::Element>,
}
#[cfg(test)]
mod tests {
use super::*;
type T = TestScript;
#[test]
fn test_default() {
let _ = T::default();
}
#[test]
fn test_serde_round_trip() {
let value = T::default();
let json = ::serde_json::to_value(&value).expect("to_value");
let back: T = ::serde_json::from_value(json).expect("from_value");
assert_eq!(value, back);
}
}