#![allow(unused_imports)]
use crate::r3::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("r3")]
pub struct TestReport {
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 identifier: Option<types::Identifier>,
pub name: Option<types::String>,
#[serde(rename = "_name")]
pub name_ext: Option<types::Element>,
pub status: crate::coded::Coded<crate::r3::codes::ReportStatusCodes>,
#[serde(rename = "_status")]
pub status_ext: Option<types::Element>,
pub test_script: types::Reference,
pub result: crate::coded::Coded<crate::r3::codes::ReportResultCodes>,
#[serde(rename = "_result")]
pub result_ext: Option<types::Element>,
pub score: Option<types::Decimal>,
#[serde(rename = "_score")]
pub score_ext: Option<types::Element>,
pub tester: Option<types::String>,
#[serde(rename = "_tester")]
pub tester_ext: Option<types::Element>,
pub issued: Option<types::DateTime>,
#[serde(rename = "_issued")]
pub issued_ext: Option<types::Element>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub participant: Vec<TestReportParticipant>,
pub setup: Option<TestReportSetup>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub test: Vec<TestReportTest>,
pub teardown: Option<TestReportTeardown>,
}
#[serde_with::skip_serializing_none]
#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq, Validate)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r3")]
pub struct TestReportParticipant {
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::ReportParticipantType>,
#[serde(rename = "_type")]
pub type_ext: Option<types::Element>,
pub uri: types::Uri,
#[serde(rename = "_uri")]
pub uri_ext: Option<types::Element>,
pub display: Option<types::String>,
#[serde(rename = "_display")]
pub display_ext: Option<types::Element>,
}
#[serde_with::skip_serializing_none]
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Validate)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r3")]
pub struct TestReportSetup {
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<TestReportSetupAction>,
}
#[serde_with::skip_serializing_none]
#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq, Validate)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r3")]
pub struct TestReportSetupAction {
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<TestReportSetupActionOperation>,
pub assert: Option<TestReportSetupActionAssert>,
}
#[serde_with::skip_serializing_none]
#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq, Validate)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r3")]
pub struct TestReportSetupActionAssert {
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 result: crate::coded::Coded<crate::r3::codes::ReportActionResultCodes>,
#[serde(rename = "_result")]
pub result_ext: Option<types::Element>,
pub message: Option<types::Markdown>,
#[serde(rename = "_message")]
pub message_ext: Option<types::Element>,
pub detail: Option<types::String>,
#[serde(rename = "_detail")]
pub detail_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 TestReportSetupActionOperation {
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 result: crate::coded::Coded<crate::r3::codes::ReportActionResultCodes>,
#[serde(rename = "_result")]
pub result_ext: Option<types::Element>,
pub message: Option<types::Markdown>,
#[serde(rename = "_message")]
pub message_ext: Option<types::Element>,
pub detail: Option<types::Uri>,
#[serde(rename = "_detail")]
pub detail_ext: Option<types::Element>,
}
#[serde_with::skip_serializing_none]
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Validate)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r3")]
pub struct TestReportTeardown {
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<TestReportTeardownAction>,
}
#[serde_with::skip_serializing_none]
#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq, Validate)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r3")]
pub struct TestReportTeardownAction {
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: TestReportSetupActionOperation,
}
#[serde_with::skip_serializing_none]
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Validate)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r3")]
pub struct TestReportTest {
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<TestReportTestAction>,
}
#[serde_with::skip_serializing_none]
#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq, Validate)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r3")]
pub struct TestReportTestAction {
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<TestReportSetupActionOperation>,
pub assert: Option<TestReportSetupActionAssert>,
}
#[cfg(test)]
mod tests {
use super::*;
type T = TestReport;
#[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);
}
}