#![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 ExplanationOfBenefit {
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>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub identifier: Vec<types::Identifier>,
pub status: crate::coded::Coded<crate::r4::codes::ExplanationofbenefitStatus>,
#[serde(rename = "_status")]
pub status_ext: Option<types::Element>,
pub r#type: types::CodeableConcept,
pub sub_type: Option<types::CodeableConcept>,
pub r#use: crate::coded::Coded<crate::r4::codes::ClaimUse>,
#[serde(rename = "_use")]
pub use_ext: Option<types::Element>,
pub patient: types::Reference,
pub billable_period: Option<types::Period>,
pub created: types::DateTime,
#[serde(rename = "_created")]
pub created_ext: Option<types::Element>,
pub enterer: Option<types::Reference>,
pub insurer: types::Reference,
pub provider: types::Reference,
pub priority: Option<types::CodeableConcept>,
pub funds_reserve_requested: Option<types::CodeableConcept>,
pub funds_reserve: Option<types::CodeableConcept>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub related: Vec<ExplanationOfBenefitRelated>,
pub prescription: Option<types::Reference>,
pub original_prescription: Option<types::Reference>,
pub payee: Option<ExplanationOfBenefitPayee>,
pub referral: Option<types::Reference>,
pub facility: Option<types::Reference>,
pub claim: Option<types::Reference>,
pub claim_response: Option<types::Reference>,
pub outcome: crate::coded::Coded<crate::r4::codes::RemittanceOutcome>,
#[serde(rename = "_outcome")]
pub outcome_ext: Option<types::Element>,
pub disposition: Option<types::String>,
#[serde(rename = "_disposition")]
pub disposition_ext: Option<types::Element>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub pre_auth_ref: Vec<types::String>,
#[serde(rename = "_preAuthRef")]
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub pre_auth_ref_ext: Vec<Option<types::Element>>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub pre_auth_ref_period: Vec<types::Period>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub care_team: Vec<ExplanationOfBenefitCareTeam>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub supporting_info: Vec<ExplanationOfBenefitSupportingInfo>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub diagnosis: Vec<ExplanationOfBenefitDiagnosis>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub procedure: Vec<ExplanationOfBenefitProcedure>,
pub precedence: Option<types::PositiveInt>,
#[serde(rename = "_precedence")]
pub precedence_ext: Option<types::Element>,
pub insurance: ::vec1::Vec1<ExplanationOfBenefitInsurance>,
pub accident: Option<ExplanationOfBenefitAccident>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub item: Vec<ExplanationOfBenefitItem>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub add_item: Vec<ExplanationOfBenefitAddItem>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub adjudication: Vec<ExplanationOfBenefitItemAdjudication>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub total: Vec<ExplanationOfBenefitTotal>,
pub payment: Option<ExplanationOfBenefitPayment>,
pub form_code: Option<types::CodeableConcept>,
pub form: Option<types::Attachment>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub process_note: Vec<ExplanationOfBenefitProcessNote>,
pub benefit_period: Option<types::Period>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub benefit_balance: Vec<ExplanationOfBenefitBenefitBalance>,
}
#[serde_with::skip_serializing_none]
#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq, Validate)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r4")]
pub struct ExplanationOfBenefitAccident {
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 date: Option<types::Date>,
#[serde(rename = "_date")]
pub date_ext: Option<types::Element>,
pub r#type: Option<types::CodeableConcept>,
#[serde(flatten)]
pub location: Option<ExplanationOfBenefitAccidentLocation>,
}
#[serde_with::skip_serializing_none]
#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq, Validate)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r4")]
pub struct ExplanationOfBenefitAddItem {
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 item_sequence: Vec<types::PositiveInt>,
#[serde(rename = "_itemSequence")]
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub item_sequence_ext: Vec<Option<types::Element>>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub detail_sequence: Vec<types::PositiveInt>,
#[serde(rename = "_detailSequence")]
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub detail_sequence_ext: Vec<Option<types::Element>>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub sub_detail_sequence: Vec<types::PositiveInt>,
#[serde(rename = "_subDetailSequence")]
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub sub_detail_sequence_ext: Vec<Option<types::Element>>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub provider: Vec<types::Reference>,
pub product_or_service: types::CodeableConcept,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub modifier: Vec<types::CodeableConcept>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub program_code: Vec<types::CodeableConcept>,
#[serde(flatten)]
pub serviced: Option<ExplanationOfBenefitAddItemServiced>,
#[serde(flatten)]
pub location: Option<ExplanationOfBenefitAddItemLocation>,
pub quantity: Option<types::Quantity>,
pub unit_price: Option<types::Money>,
pub factor: Option<types::Decimal>,
#[serde(rename = "_factor")]
pub factor_ext: Option<types::Element>,
pub net: Option<types::Money>,
pub body_site: Option<types::CodeableConcept>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub sub_site: Vec<types::CodeableConcept>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub note_number: Vec<types::PositiveInt>,
#[serde(rename = "_noteNumber")]
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub note_number_ext: Vec<Option<types::Element>>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub adjudication: Vec<ExplanationOfBenefitItemAdjudication>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub detail: Vec<ExplanationOfBenefitAddItemDetail>,
}
#[serde_with::skip_serializing_none]
#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq, Validate)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r4")]
pub struct ExplanationOfBenefitAddItemDetail {
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 product_or_service: types::CodeableConcept,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub modifier: Vec<types::CodeableConcept>,
pub quantity: Option<types::Quantity>,
pub unit_price: Option<types::Money>,
pub factor: Option<types::Decimal>,
#[serde(rename = "_factor")]
pub factor_ext: Option<types::Element>,
pub net: Option<types::Money>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub note_number: Vec<types::PositiveInt>,
#[serde(rename = "_noteNumber")]
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub note_number_ext: Vec<Option<types::Element>>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub adjudication: Vec<ExplanationOfBenefitItemAdjudication>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub sub_detail: Vec<ExplanationOfBenefitAddItemDetailSubDetail>,
}
#[serde_with::skip_serializing_none]
#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq, Validate)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r4")]
pub struct ExplanationOfBenefitAddItemDetailSubDetail {
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 product_or_service: types::CodeableConcept,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub modifier: Vec<types::CodeableConcept>,
pub quantity: Option<types::Quantity>,
pub unit_price: Option<types::Money>,
pub factor: Option<types::Decimal>,
#[serde(rename = "_factor")]
pub factor_ext: Option<types::Element>,
pub net: Option<types::Money>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub note_number: Vec<types::PositiveInt>,
#[serde(rename = "_noteNumber")]
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub note_number_ext: Vec<Option<types::Element>>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub adjudication: Vec<ExplanationOfBenefitItemAdjudication>,
}
#[serde_with::skip_serializing_none]
#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq, Validate)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r4")]
pub struct ExplanationOfBenefitBenefitBalance {
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 category: types::CodeableConcept,
pub excluded: Option<types::Boolean>,
#[serde(rename = "_excluded")]
pub excluded_ext: 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>,
pub network: Option<types::CodeableConcept>,
pub unit: Option<types::CodeableConcept>,
pub term: Option<types::CodeableConcept>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub financial: Vec<ExplanationOfBenefitBenefitBalanceFinancial>,
}
#[serde_with::skip_serializing_none]
#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq, Validate)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r4")]
pub struct ExplanationOfBenefitBenefitBalanceFinancial {
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: types::CodeableConcept,
#[serde(flatten)]
pub allowed: Option<ExplanationOfBenefitBenefitBalanceFinancialAllowed>,
#[serde(flatten)]
pub used: Option<ExplanationOfBenefitBenefitBalanceFinancialUsed>,
}
#[serde_with::skip_serializing_none]
#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq, Validate)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r4")]
pub struct ExplanationOfBenefitCareTeam {
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 sequence: types::PositiveInt,
#[serde(rename = "_sequence")]
pub sequence_ext: Option<types::Element>,
pub provider: types::Reference,
pub responsible: Option<types::Boolean>,
#[serde(rename = "_responsible")]
pub responsible_ext: Option<types::Element>,
pub role: Option<types::CodeableConcept>,
pub qualification: Option<types::CodeableConcept>,
}
#[serde_with::skip_serializing_none]
#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq, Validate)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r4")]
pub struct ExplanationOfBenefitDiagnosis {
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 sequence: types::PositiveInt,
#[serde(rename = "_sequence")]
pub sequence_ext: Option<types::Element>,
#[serde(flatten)]
pub diagnosis: Option<ExplanationOfBenefitDiagnosisDiagnosis>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub r#type: Vec<types::CodeableConcept>,
pub on_admission: Option<types::CodeableConcept>,
pub package_code: Option<types::CodeableConcept>,
}
#[serde_with::skip_serializing_none]
#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq, Validate)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r4")]
pub struct ExplanationOfBenefitInsurance {
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 focal: types::Boolean,
#[serde(rename = "_focal")]
pub focal_ext: Option<types::Element>,
pub coverage: types::Reference,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub pre_auth_ref: Vec<types::String>,
#[serde(rename = "_preAuthRef")]
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub pre_auth_ref_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 ExplanationOfBenefitItem {
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 sequence: types::PositiveInt,
#[serde(rename = "_sequence")]
pub sequence_ext: Option<types::Element>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub care_team_sequence: Vec<types::PositiveInt>,
#[serde(rename = "_careTeamSequence")]
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub care_team_sequence_ext: Vec<Option<types::Element>>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub diagnosis_sequence: Vec<types::PositiveInt>,
#[serde(rename = "_diagnosisSequence")]
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub diagnosis_sequence_ext: Vec<Option<types::Element>>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub procedure_sequence: Vec<types::PositiveInt>,
#[serde(rename = "_procedureSequence")]
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub procedure_sequence_ext: Vec<Option<types::Element>>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub information_sequence: Vec<types::PositiveInt>,
#[serde(rename = "_informationSequence")]
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub information_sequence_ext: Vec<Option<types::Element>>,
pub revenue: Option<types::CodeableConcept>,
pub category: Option<types::CodeableConcept>,
pub product_or_service: types::CodeableConcept,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub modifier: Vec<types::CodeableConcept>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub program_code: Vec<types::CodeableConcept>,
#[serde(flatten)]
pub serviced: Option<ExplanationOfBenefitItemServiced>,
#[serde(flatten)]
pub location: Option<ExplanationOfBenefitItemLocation>,
pub quantity: Option<types::Quantity>,
pub unit_price: Option<types::Money>,
pub factor: Option<types::Decimal>,
#[serde(rename = "_factor")]
pub factor_ext: Option<types::Element>,
pub net: Option<types::Money>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub udi: Vec<types::Reference>,
pub body_site: Option<types::CodeableConcept>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub sub_site: Vec<types::CodeableConcept>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub encounter: Vec<types::Reference>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub note_number: Vec<types::PositiveInt>,
#[serde(rename = "_noteNumber")]
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub note_number_ext: Vec<Option<types::Element>>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub adjudication: Vec<ExplanationOfBenefitItemAdjudication>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub detail: Vec<ExplanationOfBenefitItemDetail>,
}
#[serde_with::skip_serializing_none]
#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq, Validate)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r4")]
pub struct ExplanationOfBenefitItemAdjudication {
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 category: types::CodeableConcept,
pub reason: Option<types::CodeableConcept>,
pub amount: Option<types::Money>,
pub value: Option<types::Decimal>,
#[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 ExplanationOfBenefitItemDetail {
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 sequence: types::PositiveInt,
#[serde(rename = "_sequence")]
pub sequence_ext: Option<types::Element>,
pub revenue: Option<types::CodeableConcept>,
pub category: Option<types::CodeableConcept>,
pub product_or_service: types::CodeableConcept,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub modifier: Vec<types::CodeableConcept>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub program_code: Vec<types::CodeableConcept>,
pub quantity: Option<types::Quantity>,
pub unit_price: Option<types::Money>,
pub factor: Option<types::Decimal>,
#[serde(rename = "_factor")]
pub factor_ext: Option<types::Element>,
pub net: Option<types::Money>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub udi: Vec<types::Reference>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub note_number: Vec<types::PositiveInt>,
#[serde(rename = "_noteNumber")]
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub note_number_ext: Vec<Option<types::Element>>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub adjudication: Vec<ExplanationOfBenefitItemAdjudication>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub sub_detail: Vec<ExplanationOfBenefitItemDetailSubDetail>,
}
#[serde_with::skip_serializing_none]
#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq, Validate)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r4")]
pub struct ExplanationOfBenefitItemDetailSubDetail {
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 sequence: types::PositiveInt,
#[serde(rename = "_sequence")]
pub sequence_ext: Option<types::Element>,
pub revenue: Option<types::CodeableConcept>,
pub category: Option<types::CodeableConcept>,
pub product_or_service: types::CodeableConcept,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub modifier: Vec<types::CodeableConcept>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub program_code: Vec<types::CodeableConcept>,
pub quantity: Option<types::Quantity>,
pub unit_price: Option<types::Money>,
pub factor: Option<types::Decimal>,
#[serde(rename = "_factor")]
pub factor_ext: Option<types::Element>,
pub net: Option<types::Money>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub udi: Vec<types::Reference>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub note_number: Vec<types::PositiveInt>,
#[serde(rename = "_noteNumber")]
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub note_number_ext: Vec<Option<types::Element>>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub adjudication: Vec<ExplanationOfBenefitItemAdjudication>,
}
#[serde_with::skip_serializing_none]
#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq, Validate)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r4")]
pub struct ExplanationOfBenefitPayee {
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::CodeableConcept>,
pub party: Option<types::Reference>,
}
#[serde_with::skip_serializing_none]
#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq, Validate)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r4")]
pub struct ExplanationOfBenefitPayment {
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::CodeableConcept>,
pub adjustment: Option<types::Money>,
pub adjustment_reason: Option<types::CodeableConcept>,
pub date: Option<types::Date>,
#[serde(rename = "_date")]
pub date_ext: Option<types::Element>,
pub amount: Option<types::Money>,
pub identifier: Option<types::Identifier>,
}
#[serde_with::skip_serializing_none]
#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq, Validate)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r4")]
pub struct ExplanationOfBenefitProcedure {
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 sequence: types::PositiveInt,
#[serde(rename = "_sequence")]
pub sequence_ext: Option<types::Element>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub r#type: Vec<types::CodeableConcept>,
pub date: Option<types::DateTime>,
#[serde(rename = "_date")]
pub date_ext: Option<types::Element>,
#[serde(flatten)]
pub procedure: Option<ExplanationOfBenefitProcedureProcedure>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub udi: Vec<types::Reference>,
}
#[serde_with::skip_serializing_none]
#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq, Validate)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r4")]
pub struct ExplanationOfBenefitProcessNote {
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 number: Option<types::PositiveInt>,
#[serde(rename = "_number")]
pub number_ext: Option<types::Element>,
pub r#type: Option<crate::coded::Coded<crate::r4::codes::NoteType>>,
#[serde(rename = "_type")]
pub type_ext: Option<types::Element>,
pub text: Option<types::String>,
#[serde(rename = "_text")]
pub text_ext: Option<types::Element>,
pub language: Option<types::CodeableConcept>,
}
#[serde_with::skip_serializing_none]
#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq, Validate)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r4")]
pub struct ExplanationOfBenefitRelated {
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 claim: Option<types::Reference>,
pub relationship: Option<types::CodeableConcept>,
pub reference: Option<types::Identifier>,
}
#[serde_with::skip_serializing_none]
#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq, Validate)]
#[serde(rename_all = "camelCase")]
#[fhir_version("r4")]
pub struct ExplanationOfBenefitSupportingInfo {
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 sequence: types::PositiveInt,
#[serde(rename = "_sequence")]
pub sequence_ext: Option<types::Element>,
pub category: types::CodeableConcept,
pub code: Option<types::CodeableConcept>,
#[serde(flatten)]
pub timing: Option<ExplanationOfBenefitSupportingInfoTiming>,
#[serde(flatten)]
pub value: Option<ExplanationOfBenefitSupportingInfoValue>,
pub reason: Option<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 ExplanationOfBenefitTotal {
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 category: types::CodeableConcept,
pub amount: types::Money,
}
#[derive(Debug, Clone, PartialEq, Eq, fhir_derive_macros::FhirChoice, Validate)]
#[fhir_version("r4")]
#[allow(clippy::large_enum_variant)]
pub enum ExplanationOfBenefitAccidentLocation {
#[fhir("locationAddress")]
Address(Box<types::Address>),
#[fhir("locationReference")]
Reference(Box<types::Reference>),
}
#[derive(Debug, Clone, PartialEq, Eq, fhir_derive_macros::FhirChoice, Validate)]
#[fhir_version("r4")]
#[allow(clippy::large_enum_variant)]
pub enum ExplanationOfBenefitAddItemServiced {
#[fhir("servicedDate")]
Date(crate::r4::choice::Primitive<types::Date>),
#[fhir("servicedPeriod")]
Period(Box<types::Period>),
}
#[derive(Debug, Clone, PartialEq, Eq, fhir_derive_macros::FhirChoice, Validate)]
#[fhir_version("r4")]
#[allow(clippy::large_enum_variant)]
pub enum ExplanationOfBenefitAddItemLocation {
#[fhir("locationCodeableConcept")]
CodeableConcept(Box<types::CodeableConcept>),
#[fhir("locationAddress")]
Address(Box<types::Address>),
#[fhir("locationReference")]
Reference(Box<types::Reference>),
}
#[derive(Debug, Clone, PartialEq, Eq, fhir_derive_macros::FhirChoice, Validate)]
#[fhir_version("r4")]
#[allow(clippy::large_enum_variant)]
pub enum ExplanationOfBenefitBenefitBalanceFinancialAllowed {
#[fhir("allowedUnsignedInt")]
UnsignedInt(crate::r4::choice::Primitive<types::UnsignedInt>),
#[fhir("allowedString")]
String(crate::r4::choice::Primitive<types::String>),
#[fhir("allowedMoney")]
Money(Box<types::Money>),
}
#[derive(Debug, Clone, PartialEq, Eq, fhir_derive_macros::FhirChoice, Validate)]
#[fhir_version("r4")]
#[allow(clippy::large_enum_variant)]
pub enum ExplanationOfBenefitBenefitBalanceFinancialUsed {
#[fhir("usedUnsignedInt")]
UnsignedInt(crate::r4::choice::Primitive<types::UnsignedInt>),
#[fhir("usedMoney")]
Money(Box<types::Money>),
}
#[derive(Debug, Clone, PartialEq, Eq, fhir_derive_macros::FhirChoice, Validate)]
#[fhir_version("r4")]
#[allow(clippy::large_enum_variant)]
pub enum ExplanationOfBenefitDiagnosisDiagnosis {
#[fhir("diagnosisCodeableConcept")]
CodeableConcept(Box<types::CodeableConcept>),
#[fhir("diagnosisReference")]
Reference(Box<types::Reference>),
}
#[derive(Debug, Clone, PartialEq, Eq, fhir_derive_macros::FhirChoice, Validate)]
#[fhir_version("r4")]
#[allow(clippy::large_enum_variant)]
pub enum ExplanationOfBenefitItemServiced {
#[fhir("servicedDate")]
Date(crate::r4::choice::Primitive<types::Date>),
#[fhir("servicedPeriod")]
Period(Box<types::Period>),
}
#[derive(Debug, Clone, PartialEq, Eq, fhir_derive_macros::FhirChoice, Validate)]
#[fhir_version("r4")]
#[allow(clippy::large_enum_variant)]
pub enum ExplanationOfBenefitItemLocation {
#[fhir("locationCodeableConcept")]
CodeableConcept(Box<types::CodeableConcept>),
#[fhir("locationAddress")]
Address(Box<types::Address>),
#[fhir("locationReference")]
Reference(Box<types::Reference>),
}
#[derive(Debug, Clone, PartialEq, Eq, fhir_derive_macros::FhirChoice, Validate)]
#[fhir_version("r4")]
#[allow(clippy::large_enum_variant)]
pub enum ExplanationOfBenefitProcedureProcedure {
#[fhir("procedureCodeableConcept")]
CodeableConcept(Box<types::CodeableConcept>),
#[fhir("procedureReference")]
Reference(Box<types::Reference>),
}
#[derive(Debug, Clone, PartialEq, Eq, fhir_derive_macros::FhirChoice, Validate)]
#[fhir_version("r4")]
#[allow(clippy::large_enum_variant)]
pub enum ExplanationOfBenefitSupportingInfoTiming {
#[fhir("timingDate")]
Date(crate::r4::choice::Primitive<types::Date>),
#[fhir("timingPeriod")]
Period(Box<types::Period>),
}
#[derive(Debug, Clone, PartialEq, Eq, fhir_derive_macros::FhirChoice, Validate)]
#[fhir_version("r4")]
#[allow(clippy::large_enum_variant)]
pub enum ExplanationOfBenefitSupportingInfoValue {
#[fhir("valueBoolean")]
Boolean(crate::r4::choice::Primitive<types::Boolean>),
#[fhir("valueString")]
String(crate::r4::choice::Primitive<types::String>),
#[fhir("valueQuantity")]
Quantity(Box<types::Quantity>),
#[fhir("valueAttachment")]
Attachment(Box<types::Attachment>),
#[fhir("valueReference")]
Reference(Box<types::Reference>),
}