#![allow(
unused_imports,
clippy::large_enum_variant,
clippy::too_many_lines,
clippy::doc_markdown
)]
use crate::decode::{
choice_key, required, required_list, resource_type, Choice, Decoder, FhirJson, Obj, ObjWriter,
};
use crate::json::Json;
use crate::primitive::{Decimal, Kind, Primitive};
use crate::r4::*;
#[cfg(feature = "financial")]
#[derive(Debug, Clone, PartialEq, Default)]
pub struct ExplanationOfBenefit {
pub id: Option<String>,
pub meta: Option<Meta>,
pub implicit_rules: Option<Primitive<String>>,
pub language: Option<Primitive<String>>,
pub text: Option<Narrative>,
pub contained: Vec<Resource>,
pub extension: Vec<Extension>,
pub modifier_extension: Vec<Extension>,
pub identifier: Vec<Identifier>,
pub status: Option<Primitive<String>>,
pub type_: Option<CodeableConcept>,
pub sub_type: Option<CodeableConcept>,
pub use_: Option<Primitive<String>>,
pub patient: Option<Reference>,
pub billable_period: Option<Period>,
pub created: Option<Primitive<String>>,
pub enterer: Option<Reference>,
pub insurer: Option<Reference>,
pub provider: Option<Reference>,
pub priority: Option<CodeableConcept>,
pub funds_reserve_requested: Option<CodeableConcept>,
pub funds_reserve: Option<CodeableConcept>,
pub related: Vec<ExplanationOfBenefitRelated>,
pub prescription: Option<Reference>,
pub original_prescription: Option<Reference>,
pub payee: Option<ExplanationOfBenefitPayee>,
pub referral: Option<Reference>,
pub facility: Option<Reference>,
pub claim: Option<Reference>,
pub claim_response: Option<Reference>,
pub outcome: Option<Primitive<String>>,
pub disposition: Option<Primitive<String>>,
pub pre_auth_ref: Vec<Primitive<String>>,
pub pre_auth_ref_period: Vec<Period>,
pub care_team: Vec<ExplanationOfBenefitCareTeam>,
pub supporting_info: Vec<ExplanationOfBenefitSupportingInfo>,
pub diagnosis: Vec<ExplanationOfBenefitDiagnosis>,
pub procedure: Vec<ExplanationOfBenefitProcedure>,
pub precedence: Option<Primitive<i32>>,
pub insurance: Vec<ExplanationOfBenefitInsurance>,
pub accident: Option<ExplanationOfBenefitAccident>,
pub item: Vec<ExplanationOfBenefitItem>,
pub add_item: Vec<ExplanationOfBenefitAddItem>,
pub adjudication: Vec<ExplanationOfBenefitItemAdjudication>,
pub total: Vec<ExplanationOfBenefitTotal>,
pub payment: Option<ExplanationOfBenefitPayment>,
pub form_code: Option<CodeableConcept>,
pub form: Option<Attachment>,
pub process_note: Vec<ExplanationOfBenefitProcessNote>,
pub benefit_period: Option<Period>,
pub benefit_balance: Vec<ExplanationOfBenefitBenefitBalance>,
}
#[cfg(feature = "financial")]
impl FhirJson for ExplanationOfBenefit {
const TYPE_NAME: &'static str = "ExplanationOfBenefit";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
resource_type(&mut o, d, "ExplanationOfBenefit");
let r = ExplanationOfBenefit {
id: o.string(d, "id"),
meta: o.one(d, "meta"),
implicit_rules: o.prim(d, "implicitRules", Kind::Uri),
language: o.prim(d, "language", Kind::Code),
text: o.one(d, "text"),
contained: o.list(d, "contained"),
extension: o.list(d, "extension"),
modifier_extension: o.list(d, "modifierExtension"),
identifier: o.list(d, "identifier"),
status: o.prim(d, "status", Kind::Code),
type_: o.one(d, "type"),
sub_type: o.one(d, "subType"),
use_: o.prim(d, "use", Kind::Code),
patient: o.one(d, "patient"),
billable_period: o.one(d, "billablePeriod"),
created: o.prim(d, "created", Kind::DateTime),
enterer: o.one(d, "enterer"),
insurer: o.one(d, "insurer"),
provider: o.one(d, "provider"),
priority: o.one(d, "priority"),
funds_reserve_requested: o.one(d, "fundsReserveRequested"),
funds_reserve: o.one(d, "fundsReserve"),
related: o.list(d, "related"),
prescription: o.one(d, "prescription"),
original_prescription: o.one(d, "originalPrescription"),
payee: o.one(d, "payee"),
referral: o.one(d, "referral"),
facility: o.one(d, "facility"),
claim: o.one(d, "claim"),
claim_response: o.one(d, "claimResponse"),
outcome: o.prim(d, "outcome", Kind::Code),
disposition: o.prim(d, "disposition", Kind::String),
pre_auth_ref: o.prim_list(d, "preAuthRef", Kind::String),
pre_auth_ref_period: o.list(d, "preAuthRefPeriod"),
care_team: o.list(d, "careTeam"),
supporting_info: o.list(d, "supportingInfo"),
diagnosis: o.list(d, "diagnosis"),
procedure: o.list(d, "procedure"),
precedence: o.prim(d, "precedence", Kind::PositiveInt),
insurance: o.list(d, "insurance"),
accident: o.one(d, "accident"),
item: o.list(d, "item"),
add_item: o.list(d, "addItem"),
adjudication: o.list(d, "adjudication"),
total: o.list(d, "total"),
payment: o.one(d, "payment"),
form_code: o.one(d, "formCode"),
form: o.one(d, "form"),
process_note: o.list(d, "processNote"),
benefit_period: o.one(d, "benefitPeriod"),
benefit_balance: o.list(d, "benefitBalance"),
};
required(d, "status", &r.status);
required(d, "type", &r.type_);
required(d, "use", &r.use_);
required(d, "patient", &r.patient);
required(d, "created", &r.created);
required(d, "insurer", &r.insurer);
required(d, "provider", &r.provider);
required(d, "outcome", &r.outcome);
required_list(d, "insurance", &r.insurance, 1);
o.finish(d);
Some(r)
}
fn encode(&self) -> Json {
let mut w = ObjWriter::new();
w.raw("resourceType", Json::String("ExplanationOfBenefit".into()));
w.string("id", &self.id);
w.one("meta", &self.meta);
w.prim("implicitRules", &self.implicit_rules);
w.prim("language", &self.language);
w.one("text", &self.text);
w.list("contained", &self.contained);
w.list("extension", &self.extension);
w.list("modifierExtension", &self.modifier_extension);
w.list("identifier", &self.identifier);
w.prim("status", &self.status);
w.one("type", &self.type_);
w.one("subType", &self.sub_type);
w.prim("use", &self.use_);
w.one("patient", &self.patient);
w.one("billablePeriod", &self.billable_period);
w.prim("created", &self.created);
w.one("enterer", &self.enterer);
w.one("insurer", &self.insurer);
w.one("provider", &self.provider);
w.one("priority", &self.priority);
w.one("fundsReserveRequested", &self.funds_reserve_requested);
w.one("fundsReserve", &self.funds_reserve);
w.list("related", &self.related);
w.one("prescription", &self.prescription);
w.one("originalPrescription", &self.original_prescription);
w.one("payee", &self.payee);
w.one("referral", &self.referral);
w.one("facility", &self.facility);
w.one("claim", &self.claim);
w.one("claimResponse", &self.claim_response);
w.prim("outcome", &self.outcome);
w.prim("disposition", &self.disposition);
w.prim_list("preAuthRef", &self.pre_auth_ref);
w.list("preAuthRefPeriod", &self.pre_auth_ref_period);
w.list("careTeam", &self.care_team);
w.list("supportingInfo", &self.supporting_info);
w.list("diagnosis", &self.diagnosis);
w.list("procedure", &self.procedure);
w.prim("precedence", &self.precedence);
w.list("insurance", &self.insurance);
w.one("accident", &self.accident);
w.list("item", &self.item);
w.list("addItem", &self.add_item);
w.list("adjudication", &self.adjudication);
w.list("total", &self.total);
w.one("payment", &self.payment);
w.one("formCode", &self.form_code);
w.one("form", &self.form);
w.list("processNote", &self.process_note);
w.one("benefitPeriod", &self.benefit_period);
w.list("benefitBalance", &self.benefit_balance);
w.finish()
}
}
#[cfg(feature = "financial")]
#[derive(Debug, Clone, PartialEq, Default)]
pub struct ExplanationOfBenefitRelated {
pub id: Option<String>,
pub extension: Vec<Extension>,
pub modifier_extension: Vec<Extension>,
pub claim: Option<Reference>,
pub relationship: Option<CodeableConcept>,
pub reference: Option<Identifier>,
}
#[cfg(feature = "financial")]
impl FhirJson for ExplanationOfBenefitRelated {
const TYPE_NAME: &'static str = "ExplanationOfBenefitRelated";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
let r = ExplanationOfBenefitRelated {
id: o.string(d, "id"),
extension: o.list(d, "extension"),
modifier_extension: o.list(d, "modifierExtension"),
claim: o.one(d, "claim"),
relationship: o.one(d, "relationship"),
reference: o.one(d, "reference"),
};
o.finish(d);
Some(r)
}
fn encode(&self) -> Json {
let mut w = ObjWriter::new();
w.string("id", &self.id);
w.list("extension", &self.extension);
w.list("modifierExtension", &self.modifier_extension);
w.one("claim", &self.claim);
w.one("relationship", &self.relationship);
w.one("reference", &self.reference);
w.finish()
}
}
#[cfg(feature = "financial")]
#[derive(Debug, Clone, PartialEq, Default)]
pub struct ExplanationOfBenefitPayee {
pub id: Option<String>,
pub extension: Vec<Extension>,
pub modifier_extension: Vec<Extension>,
pub type_: Option<CodeableConcept>,
pub party: Option<Reference>,
}
#[cfg(feature = "financial")]
impl FhirJson for ExplanationOfBenefitPayee {
const TYPE_NAME: &'static str = "ExplanationOfBenefitPayee";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
let r = ExplanationOfBenefitPayee {
id: o.string(d, "id"),
extension: o.list(d, "extension"),
modifier_extension: o.list(d, "modifierExtension"),
type_: o.one(d, "type"),
party: o.one(d, "party"),
};
o.finish(d);
Some(r)
}
fn encode(&self) -> Json {
let mut w = ObjWriter::new();
w.string("id", &self.id);
w.list("extension", &self.extension);
w.list("modifierExtension", &self.modifier_extension);
w.one("type", &self.type_);
w.one("party", &self.party);
w.finish()
}
}
#[cfg(feature = "financial")]
#[derive(Debug, Clone, PartialEq, Default)]
pub struct ExplanationOfBenefitCareTeam {
pub id: Option<String>,
pub extension: Vec<Extension>,
pub modifier_extension: Vec<Extension>,
pub sequence: Option<Primitive<i32>>,
pub provider: Option<Reference>,
pub responsible: Option<Primitive<bool>>,
pub role: Option<CodeableConcept>,
pub qualification: Option<CodeableConcept>,
}
#[cfg(feature = "financial")]
impl FhirJson for ExplanationOfBenefitCareTeam {
const TYPE_NAME: &'static str = "ExplanationOfBenefitCareTeam";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
let r = ExplanationOfBenefitCareTeam {
id: o.string(d, "id"),
extension: o.list(d, "extension"),
modifier_extension: o.list(d, "modifierExtension"),
sequence: o.prim(d, "sequence", Kind::PositiveInt),
provider: o.one(d, "provider"),
responsible: o.prim(d, "responsible", Kind::Boolean),
role: o.one(d, "role"),
qualification: o.one(d, "qualification"),
};
required(d, "sequence", &r.sequence);
required(d, "provider", &r.provider);
o.finish(d);
Some(r)
}
fn encode(&self) -> Json {
let mut w = ObjWriter::new();
w.string("id", &self.id);
w.list("extension", &self.extension);
w.list("modifierExtension", &self.modifier_extension);
w.prim("sequence", &self.sequence);
w.one("provider", &self.provider);
w.prim("responsible", &self.responsible);
w.one("role", &self.role);
w.one("qualification", &self.qualification);
w.finish()
}
}
#[cfg(feature = "financial")]
#[derive(Debug, Clone, PartialEq, Default)]
pub struct ExplanationOfBenefitSupportingInfo {
pub id: Option<String>,
pub extension: Vec<Extension>,
pub modifier_extension: Vec<Extension>,
pub sequence: Option<Primitive<i32>>,
pub category: Option<CodeableConcept>,
pub code: Option<CodeableConcept>,
pub timing: Option<ExplanationOfBenefitSupportingInfoTiming>,
pub value: Option<ExplanationOfBenefitSupportingInfoValue>,
pub reason: Option<Coding>,
}
#[cfg(feature = "financial")]
impl FhirJson for ExplanationOfBenefitSupportingInfo {
const TYPE_NAME: &'static str = "ExplanationOfBenefitSupportingInfo";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
let r = ExplanationOfBenefitSupportingInfo {
id: o.string(d, "id"),
extension: o.list(d, "extension"),
modifier_extension: o.list(d, "modifierExtension"),
sequence: o.prim(d, "sequence", Kind::PositiveInt),
category: o.one(d, "category"),
code: o.one(d, "code"),
timing: o.choice(d, "timing"),
value: o.choice(d, "value"),
reason: o.one(d, "reason"),
};
required(d, "sequence", &r.sequence);
required(d, "category", &r.category);
o.finish(d);
Some(r)
}
fn encode(&self) -> Json {
let mut w = ObjWriter::new();
w.string("id", &self.id);
w.list("extension", &self.extension);
w.list("modifierExtension", &self.modifier_extension);
w.prim("sequence", &self.sequence);
w.one("category", &self.category);
w.one("code", &self.code);
w.choice("timing", &self.timing);
w.choice("value", &self.value);
w.one("reason", &self.reason);
w.finish()
}
}
#[cfg(feature = "financial")]
#[derive(Debug, Clone, PartialEq, Default)]
pub struct ExplanationOfBenefitDiagnosis {
pub id: Option<String>,
pub extension: Vec<Extension>,
pub modifier_extension: Vec<Extension>,
pub sequence: Option<Primitive<i32>>,
pub diagnosis: Option<ExplanationOfBenefitDiagnosisDiagnosis>,
pub type_: Vec<CodeableConcept>,
pub on_admission: Option<CodeableConcept>,
pub package_code: Option<CodeableConcept>,
}
#[cfg(feature = "financial")]
impl FhirJson for ExplanationOfBenefitDiagnosis {
const TYPE_NAME: &'static str = "ExplanationOfBenefitDiagnosis";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
let r = ExplanationOfBenefitDiagnosis {
id: o.string(d, "id"),
extension: o.list(d, "extension"),
modifier_extension: o.list(d, "modifierExtension"),
sequence: o.prim(d, "sequence", Kind::PositiveInt),
diagnosis: o.choice(d, "diagnosis"),
type_: o.list(d, "type"),
on_admission: o.one(d, "onAdmission"),
package_code: o.one(d, "packageCode"),
};
required(d, "sequence", &r.sequence);
required(d, "diagnosis[x]", &r.diagnosis);
o.finish(d);
Some(r)
}
fn encode(&self) -> Json {
let mut w = ObjWriter::new();
w.string("id", &self.id);
w.list("extension", &self.extension);
w.list("modifierExtension", &self.modifier_extension);
w.prim("sequence", &self.sequence);
w.choice("diagnosis", &self.diagnosis);
w.list("type", &self.type_);
w.one("onAdmission", &self.on_admission);
w.one("packageCode", &self.package_code);
w.finish()
}
}
#[cfg(feature = "financial")]
#[derive(Debug, Clone, PartialEq, Default)]
pub struct ExplanationOfBenefitProcedure {
pub id: Option<String>,
pub extension: Vec<Extension>,
pub modifier_extension: Vec<Extension>,
pub sequence: Option<Primitive<i32>>,
pub type_: Vec<CodeableConcept>,
pub date: Option<Primitive<String>>,
pub procedure: Option<ExplanationOfBenefitProcedureProcedure>,
pub udi: Vec<Reference>,
}
#[cfg(feature = "financial")]
impl FhirJson for ExplanationOfBenefitProcedure {
const TYPE_NAME: &'static str = "ExplanationOfBenefitProcedure";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
let r = ExplanationOfBenefitProcedure {
id: o.string(d, "id"),
extension: o.list(d, "extension"),
modifier_extension: o.list(d, "modifierExtension"),
sequence: o.prim(d, "sequence", Kind::PositiveInt),
type_: o.list(d, "type"),
date: o.prim(d, "date", Kind::DateTime),
procedure: o.choice(d, "procedure"),
udi: o.list(d, "udi"),
};
required(d, "sequence", &r.sequence);
required(d, "procedure[x]", &r.procedure);
o.finish(d);
Some(r)
}
fn encode(&self) -> Json {
let mut w = ObjWriter::new();
w.string("id", &self.id);
w.list("extension", &self.extension);
w.list("modifierExtension", &self.modifier_extension);
w.prim("sequence", &self.sequence);
w.list("type", &self.type_);
w.prim("date", &self.date);
w.choice("procedure", &self.procedure);
w.list("udi", &self.udi);
w.finish()
}
}
#[cfg(feature = "financial")]
#[derive(Debug, Clone, PartialEq, Default)]
pub struct ExplanationOfBenefitInsurance {
pub id: Option<String>,
pub extension: Vec<Extension>,
pub modifier_extension: Vec<Extension>,
pub focal: Option<Primitive<bool>>,
pub coverage: Option<Reference>,
pub pre_auth_ref: Vec<Primitive<String>>,
}
#[cfg(feature = "financial")]
impl FhirJson for ExplanationOfBenefitInsurance {
const TYPE_NAME: &'static str = "ExplanationOfBenefitInsurance";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
let r = ExplanationOfBenefitInsurance {
id: o.string(d, "id"),
extension: o.list(d, "extension"),
modifier_extension: o.list(d, "modifierExtension"),
focal: o.prim(d, "focal", Kind::Boolean),
coverage: o.one(d, "coverage"),
pre_auth_ref: o.prim_list(d, "preAuthRef", Kind::String),
};
required(d, "focal", &r.focal);
required(d, "coverage", &r.coverage);
o.finish(d);
Some(r)
}
fn encode(&self) -> Json {
let mut w = ObjWriter::new();
w.string("id", &self.id);
w.list("extension", &self.extension);
w.list("modifierExtension", &self.modifier_extension);
w.prim("focal", &self.focal);
w.one("coverage", &self.coverage);
w.prim_list("preAuthRef", &self.pre_auth_ref);
w.finish()
}
}
#[cfg(feature = "financial")]
#[derive(Debug, Clone, PartialEq, Default)]
pub struct ExplanationOfBenefitAccident {
pub id: Option<String>,
pub extension: Vec<Extension>,
pub modifier_extension: Vec<Extension>,
pub date: Option<Primitive<String>>,
pub type_: Option<CodeableConcept>,
pub location: Option<ExplanationOfBenefitAccidentLocation>,
}
#[cfg(feature = "financial")]
impl FhirJson for ExplanationOfBenefitAccident {
const TYPE_NAME: &'static str = "ExplanationOfBenefitAccident";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
let r = ExplanationOfBenefitAccident {
id: o.string(d, "id"),
extension: o.list(d, "extension"),
modifier_extension: o.list(d, "modifierExtension"),
date: o.prim(d, "date", Kind::Date),
type_: o.one(d, "type"),
location: o.choice(d, "location"),
};
o.finish(d);
Some(r)
}
fn encode(&self) -> Json {
let mut w = ObjWriter::new();
w.string("id", &self.id);
w.list("extension", &self.extension);
w.list("modifierExtension", &self.modifier_extension);
w.prim("date", &self.date);
w.one("type", &self.type_);
w.choice("location", &self.location);
w.finish()
}
}
#[cfg(feature = "financial")]
#[derive(Debug, Clone, PartialEq, Default)]
pub struct ExplanationOfBenefitItem {
pub id: Option<String>,
pub extension: Vec<Extension>,
pub modifier_extension: Vec<Extension>,
pub sequence: Option<Primitive<i32>>,
pub care_team_sequence: Vec<Primitive<i32>>,
pub diagnosis_sequence: Vec<Primitive<i32>>,
pub procedure_sequence: Vec<Primitive<i32>>,
pub information_sequence: Vec<Primitive<i32>>,
pub revenue: Option<CodeableConcept>,
pub category: Option<CodeableConcept>,
pub product_or_service: Option<CodeableConcept>,
pub modifier: Vec<CodeableConcept>,
pub program_code: Vec<CodeableConcept>,
pub serviced: Option<ExplanationOfBenefitItemServiced>,
pub location: Option<ExplanationOfBenefitItemLocation>,
pub quantity: Option<Quantity>,
pub unit_price: Option<Money>,
pub factor: Option<Primitive<Decimal>>,
pub net: Option<Money>,
pub udi: Vec<Reference>,
pub body_site: Option<CodeableConcept>,
pub sub_site: Vec<CodeableConcept>,
pub encounter: Vec<Reference>,
pub note_number: Vec<Primitive<i32>>,
pub adjudication: Vec<ExplanationOfBenefitItemAdjudication>,
pub detail: Vec<ExplanationOfBenefitItemDetail>,
}
#[cfg(feature = "financial")]
impl FhirJson for ExplanationOfBenefitItem {
const TYPE_NAME: &'static str = "ExplanationOfBenefitItem";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
let r = ExplanationOfBenefitItem {
id: o.string(d, "id"),
extension: o.list(d, "extension"),
modifier_extension: o.list(d, "modifierExtension"),
sequence: o.prim(d, "sequence", Kind::PositiveInt),
care_team_sequence: o.prim_list(d, "careTeamSequence", Kind::PositiveInt),
diagnosis_sequence: o.prim_list(d, "diagnosisSequence", Kind::PositiveInt),
procedure_sequence: o.prim_list(d, "procedureSequence", Kind::PositiveInt),
information_sequence: o.prim_list(d, "informationSequence", Kind::PositiveInt),
revenue: o.one(d, "revenue"),
category: o.one(d, "category"),
product_or_service: o.one(d, "productOrService"),
modifier: o.list(d, "modifier"),
program_code: o.list(d, "programCode"),
serviced: o.choice(d, "serviced"),
location: o.choice(d, "location"),
quantity: o.one(d, "quantity"),
unit_price: o.one(d, "unitPrice"),
factor: o.prim(d, "factor", Kind::Decimal),
net: o.one(d, "net"),
udi: o.list(d, "udi"),
body_site: o.one(d, "bodySite"),
sub_site: o.list(d, "subSite"),
encounter: o.list(d, "encounter"),
note_number: o.prim_list(d, "noteNumber", Kind::PositiveInt),
adjudication: o.list(d, "adjudication"),
detail: o.list(d, "detail"),
};
required(d, "sequence", &r.sequence);
required(d, "productOrService", &r.product_or_service);
o.finish(d);
Some(r)
}
fn encode(&self) -> Json {
let mut w = ObjWriter::new();
w.string("id", &self.id);
w.list("extension", &self.extension);
w.list("modifierExtension", &self.modifier_extension);
w.prim("sequence", &self.sequence);
w.prim_list("careTeamSequence", &self.care_team_sequence);
w.prim_list("diagnosisSequence", &self.diagnosis_sequence);
w.prim_list("procedureSequence", &self.procedure_sequence);
w.prim_list("informationSequence", &self.information_sequence);
w.one("revenue", &self.revenue);
w.one("category", &self.category);
w.one("productOrService", &self.product_or_service);
w.list("modifier", &self.modifier);
w.list("programCode", &self.program_code);
w.choice("serviced", &self.serviced);
w.choice("location", &self.location);
w.one("quantity", &self.quantity);
w.one("unitPrice", &self.unit_price);
w.prim("factor", &self.factor);
w.one("net", &self.net);
w.list("udi", &self.udi);
w.one("bodySite", &self.body_site);
w.list("subSite", &self.sub_site);
w.list("encounter", &self.encounter);
w.prim_list("noteNumber", &self.note_number);
w.list("adjudication", &self.adjudication);
w.list("detail", &self.detail);
w.finish()
}
}
#[cfg(feature = "financial")]
#[derive(Debug, Clone, PartialEq, Default)]
pub struct ExplanationOfBenefitItemAdjudication {
pub id: Option<String>,
pub extension: Vec<Extension>,
pub modifier_extension: Vec<Extension>,
pub category: Option<CodeableConcept>,
pub reason: Option<CodeableConcept>,
pub amount: Option<Money>,
pub value: Option<Primitive<Decimal>>,
}
#[cfg(feature = "financial")]
impl FhirJson for ExplanationOfBenefitItemAdjudication {
const TYPE_NAME: &'static str = "ExplanationOfBenefitItemAdjudication";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
let r = ExplanationOfBenefitItemAdjudication {
id: o.string(d, "id"),
extension: o.list(d, "extension"),
modifier_extension: o.list(d, "modifierExtension"),
category: o.one(d, "category"),
reason: o.one(d, "reason"),
amount: o.one(d, "amount"),
value: o.prim(d, "value", Kind::Decimal),
};
required(d, "category", &r.category);
o.finish(d);
Some(r)
}
fn encode(&self) -> Json {
let mut w = ObjWriter::new();
w.string("id", &self.id);
w.list("extension", &self.extension);
w.list("modifierExtension", &self.modifier_extension);
w.one("category", &self.category);
w.one("reason", &self.reason);
w.one("amount", &self.amount);
w.prim("value", &self.value);
w.finish()
}
}
#[cfg(feature = "financial")]
#[derive(Debug, Clone, PartialEq, Default)]
pub struct ExplanationOfBenefitItemDetail {
pub id: Option<String>,
pub extension: Vec<Extension>,
pub modifier_extension: Vec<Extension>,
pub sequence: Option<Primitive<i32>>,
pub revenue: Option<CodeableConcept>,
pub category: Option<CodeableConcept>,
pub product_or_service: Option<CodeableConcept>,
pub modifier: Vec<CodeableConcept>,
pub program_code: Vec<CodeableConcept>,
pub quantity: Option<Quantity>,
pub unit_price: Option<Money>,
pub factor: Option<Primitive<Decimal>>,
pub net: Option<Money>,
pub udi: Vec<Reference>,
pub note_number: Vec<Primitive<i32>>,
pub adjudication: Vec<ExplanationOfBenefitItemAdjudication>,
pub sub_detail: Vec<ExplanationOfBenefitItemDetailSubDetail>,
}
#[cfg(feature = "financial")]
impl FhirJson for ExplanationOfBenefitItemDetail {
const TYPE_NAME: &'static str = "ExplanationOfBenefitItemDetail";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
let r = ExplanationOfBenefitItemDetail {
id: o.string(d, "id"),
extension: o.list(d, "extension"),
modifier_extension: o.list(d, "modifierExtension"),
sequence: o.prim(d, "sequence", Kind::PositiveInt),
revenue: o.one(d, "revenue"),
category: o.one(d, "category"),
product_or_service: o.one(d, "productOrService"),
modifier: o.list(d, "modifier"),
program_code: o.list(d, "programCode"),
quantity: o.one(d, "quantity"),
unit_price: o.one(d, "unitPrice"),
factor: o.prim(d, "factor", Kind::Decimal),
net: o.one(d, "net"),
udi: o.list(d, "udi"),
note_number: o.prim_list(d, "noteNumber", Kind::PositiveInt),
adjudication: o.list(d, "adjudication"),
sub_detail: o.list(d, "subDetail"),
};
required(d, "sequence", &r.sequence);
required(d, "productOrService", &r.product_or_service);
o.finish(d);
Some(r)
}
fn encode(&self) -> Json {
let mut w = ObjWriter::new();
w.string("id", &self.id);
w.list("extension", &self.extension);
w.list("modifierExtension", &self.modifier_extension);
w.prim("sequence", &self.sequence);
w.one("revenue", &self.revenue);
w.one("category", &self.category);
w.one("productOrService", &self.product_or_service);
w.list("modifier", &self.modifier);
w.list("programCode", &self.program_code);
w.one("quantity", &self.quantity);
w.one("unitPrice", &self.unit_price);
w.prim("factor", &self.factor);
w.one("net", &self.net);
w.list("udi", &self.udi);
w.prim_list("noteNumber", &self.note_number);
w.list("adjudication", &self.adjudication);
w.list("subDetail", &self.sub_detail);
w.finish()
}
}
#[cfg(feature = "financial")]
#[derive(Debug, Clone, PartialEq, Default)]
pub struct ExplanationOfBenefitItemDetailSubDetail {
pub id: Option<String>,
pub extension: Vec<Extension>,
pub modifier_extension: Vec<Extension>,
pub sequence: Option<Primitive<i32>>,
pub revenue: Option<CodeableConcept>,
pub category: Option<CodeableConcept>,
pub product_or_service: Option<CodeableConcept>,
pub modifier: Vec<CodeableConcept>,
pub program_code: Vec<CodeableConcept>,
pub quantity: Option<Quantity>,
pub unit_price: Option<Money>,
pub factor: Option<Primitive<Decimal>>,
pub net: Option<Money>,
pub udi: Vec<Reference>,
pub note_number: Vec<Primitive<i32>>,
pub adjudication: Vec<ExplanationOfBenefitItemAdjudication>,
}
#[cfg(feature = "financial")]
impl FhirJson for ExplanationOfBenefitItemDetailSubDetail {
const TYPE_NAME: &'static str = "ExplanationOfBenefitItemDetailSubDetail";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
let r = ExplanationOfBenefitItemDetailSubDetail {
id: o.string(d, "id"),
extension: o.list(d, "extension"),
modifier_extension: o.list(d, "modifierExtension"),
sequence: o.prim(d, "sequence", Kind::PositiveInt),
revenue: o.one(d, "revenue"),
category: o.one(d, "category"),
product_or_service: o.one(d, "productOrService"),
modifier: o.list(d, "modifier"),
program_code: o.list(d, "programCode"),
quantity: o.one(d, "quantity"),
unit_price: o.one(d, "unitPrice"),
factor: o.prim(d, "factor", Kind::Decimal),
net: o.one(d, "net"),
udi: o.list(d, "udi"),
note_number: o.prim_list(d, "noteNumber", Kind::PositiveInt),
adjudication: o.list(d, "adjudication"),
};
required(d, "sequence", &r.sequence);
required(d, "productOrService", &r.product_or_service);
o.finish(d);
Some(r)
}
fn encode(&self) -> Json {
let mut w = ObjWriter::new();
w.string("id", &self.id);
w.list("extension", &self.extension);
w.list("modifierExtension", &self.modifier_extension);
w.prim("sequence", &self.sequence);
w.one("revenue", &self.revenue);
w.one("category", &self.category);
w.one("productOrService", &self.product_or_service);
w.list("modifier", &self.modifier);
w.list("programCode", &self.program_code);
w.one("quantity", &self.quantity);
w.one("unitPrice", &self.unit_price);
w.prim("factor", &self.factor);
w.one("net", &self.net);
w.list("udi", &self.udi);
w.prim_list("noteNumber", &self.note_number);
w.list("adjudication", &self.adjudication);
w.finish()
}
}
#[cfg(feature = "financial")]
#[derive(Debug, Clone, PartialEq, Default)]
pub struct ExplanationOfBenefitAddItem {
pub id: Option<String>,
pub extension: Vec<Extension>,
pub modifier_extension: Vec<Extension>,
pub item_sequence: Vec<Primitive<i32>>,
pub detail_sequence: Vec<Primitive<i32>>,
pub sub_detail_sequence: Vec<Primitive<i32>>,
pub provider: Vec<Reference>,
pub product_or_service: Option<CodeableConcept>,
pub modifier: Vec<CodeableConcept>,
pub program_code: Vec<CodeableConcept>,
pub serviced: Option<ExplanationOfBenefitAddItemServiced>,
pub location: Option<ExplanationOfBenefitAddItemLocation>,
pub quantity: Option<Quantity>,
pub unit_price: Option<Money>,
pub factor: Option<Primitive<Decimal>>,
pub net: Option<Money>,
pub body_site: Option<CodeableConcept>,
pub sub_site: Vec<CodeableConcept>,
pub note_number: Vec<Primitive<i32>>,
pub adjudication: Vec<ExplanationOfBenefitItemAdjudication>,
pub detail: Vec<ExplanationOfBenefitAddItemDetail>,
}
#[cfg(feature = "financial")]
impl FhirJson for ExplanationOfBenefitAddItem {
const TYPE_NAME: &'static str = "ExplanationOfBenefitAddItem";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
let r = ExplanationOfBenefitAddItem {
id: o.string(d, "id"),
extension: o.list(d, "extension"),
modifier_extension: o.list(d, "modifierExtension"),
item_sequence: o.prim_list(d, "itemSequence", Kind::PositiveInt),
detail_sequence: o.prim_list(d, "detailSequence", Kind::PositiveInt),
sub_detail_sequence: o.prim_list(d, "subDetailSequence", Kind::PositiveInt),
provider: o.list(d, "provider"),
product_or_service: o.one(d, "productOrService"),
modifier: o.list(d, "modifier"),
program_code: o.list(d, "programCode"),
serviced: o.choice(d, "serviced"),
location: o.choice(d, "location"),
quantity: o.one(d, "quantity"),
unit_price: o.one(d, "unitPrice"),
factor: o.prim(d, "factor", Kind::Decimal),
net: o.one(d, "net"),
body_site: o.one(d, "bodySite"),
sub_site: o.list(d, "subSite"),
note_number: o.prim_list(d, "noteNumber", Kind::PositiveInt),
adjudication: o.list(d, "adjudication"),
detail: o.list(d, "detail"),
};
required(d, "productOrService", &r.product_or_service);
o.finish(d);
Some(r)
}
fn encode(&self) -> Json {
let mut w = ObjWriter::new();
w.string("id", &self.id);
w.list("extension", &self.extension);
w.list("modifierExtension", &self.modifier_extension);
w.prim_list("itemSequence", &self.item_sequence);
w.prim_list("detailSequence", &self.detail_sequence);
w.prim_list("subDetailSequence", &self.sub_detail_sequence);
w.list("provider", &self.provider);
w.one("productOrService", &self.product_or_service);
w.list("modifier", &self.modifier);
w.list("programCode", &self.program_code);
w.choice("serviced", &self.serviced);
w.choice("location", &self.location);
w.one("quantity", &self.quantity);
w.one("unitPrice", &self.unit_price);
w.prim("factor", &self.factor);
w.one("net", &self.net);
w.one("bodySite", &self.body_site);
w.list("subSite", &self.sub_site);
w.prim_list("noteNumber", &self.note_number);
w.list("adjudication", &self.adjudication);
w.list("detail", &self.detail);
w.finish()
}
}
#[cfg(feature = "financial")]
#[derive(Debug, Clone, PartialEq, Default)]
pub struct ExplanationOfBenefitAddItemDetail {
pub id: Option<String>,
pub extension: Vec<Extension>,
pub modifier_extension: Vec<Extension>,
pub product_or_service: Option<CodeableConcept>,
pub modifier: Vec<CodeableConcept>,
pub quantity: Option<Quantity>,
pub unit_price: Option<Money>,
pub factor: Option<Primitive<Decimal>>,
pub net: Option<Money>,
pub note_number: Vec<Primitive<i32>>,
pub adjudication: Vec<ExplanationOfBenefitItemAdjudication>,
pub sub_detail: Vec<ExplanationOfBenefitAddItemDetailSubDetail>,
}
#[cfg(feature = "financial")]
impl FhirJson for ExplanationOfBenefitAddItemDetail {
const TYPE_NAME: &'static str = "ExplanationOfBenefitAddItemDetail";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
let r = ExplanationOfBenefitAddItemDetail {
id: o.string(d, "id"),
extension: o.list(d, "extension"),
modifier_extension: o.list(d, "modifierExtension"),
product_or_service: o.one(d, "productOrService"),
modifier: o.list(d, "modifier"),
quantity: o.one(d, "quantity"),
unit_price: o.one(d, "unitPrice"),
factor: o.prim(d, "factor", Kind::Decimal),
net: o.one(d, "net"),
note_number: o.prim_list(d, "noteNumber", Kind::PositiveInt),
adjudication: o.list(d, "adjudication"),
sub_detail: o.list(d, "subDetail"),
};
required(d, "productOrService", &r.product_or_service);
o.finish(d);
Some(r)
}
fn encode(&self) -> Json {
let mut w = ObjWriter::new();
w.string("id", &self.id);
w.list("extension", &self.extension);
w.list("modifierExtension", &self.modifier_extension);
w.one("productOrService", &self.product_or_service);
w.list("modifier", &self.modifier);
w.one("quantity", &self.quantity);
w.one("unitPrice", &self.unit_price);
w.prim("factor", &self.factor);
w.one("net", &self.net);
w.prim_list("noteNumber", &self.note_number);
w.list("adjudication", &self.adjudication);
w.list("subDetail", &self.sub_detail);
w.finish()
}
}
#[cfg(feature = "financial")]
#[derive(Debug, Clone, PartialEq, Default)]
pub struct ExplanationOfBenefitAddItemDetailSubDetail {
pub id: Option<String>,
pub extension: Vec<Extension>,
pub modifier_extension: Vec<Extension>,
pub product_or_service: Option<CodeableConcept>,
pub modifier: Vec<CodeableConcept>,
pub quantity: Option<Quantity>,
pub unit_price: Option<Money>,
pub factor: Option<Primitive<Decimal>>,
pub net: Option<Money>,
pub note_number: Vec<Primitive<i32>>,
pub adjudication: Vec<ExplanationOfBenefitItemAdjudication>,
}
#[cfg(feature = "financial")]
impl FhirJson for ExplanationOfBenefitAddItemDetailSubDetail {
const TYPE_NAME: &'static str = "ExplanationOfBenefitAddItemDetailSubDetail";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
let r = ExplanationOfBenefitAddItemDetailSubDetail {
id: o.string(d, "id"),
extension: o.list(d, "extension"),
modifier_extension: o.list(d, "modifierExtension"),
product_or_service: o.one(d, "productOrService"),
modifier: o.list(d, "modifier"),
quantity: o.one(d, "quantity"),
unit_price: o.one(d, "unitPrice"),
factor: o.prim(d, "factor", Kind::Decimal),
net: o.one(d, "net"),
note_number: o.prim_list(d, "noteNumber", Kind::PositiveInt),
adjudication: o.list(d, "adjudication"),
};
required(d, "productOrService", &r.product_or_service);
o.finish(d);
Some(r)
}
fn encode(&self) -> Json {
let mut w = ObjWriter::new();
w.string("id", &self.id);
w.list("extension", &self.extension);
w.list("modifierExtension", &self.modifier_extension);
w.one("productOrService", &self.product_or_service);
w.list("modifier", &self.modifier);
w.one("quantity", &self.quantity);
w.one("unitPrice", &self.unit_price);
w.prim("factor", &self.factor);
w.one("net", &self.net);
w.prim_list("noteNumber", &self.note_number);
w.list("adjudication", &self.adjudication);
w.finish()
}
}
#[cfg(feature = "financial")]
#[derive(Debug, Clone, PartialEq, Default)]
pub struct ExplanationOfBenefitTotal {
pub id: Option<String>,
pub extension: Vec<Extension>,
pub modifier_extension: Vec<Extension>,
pub category: Option<CodeableConcept>,
pub amount: Option<Money>,
}
#[cfg(feature = "financial")]
impl FhirJson for ExplanationOfBenefitTotal {
const TYPE_NAME: &'static str = "ExplanationOfBenefitTotal";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
let r = ExplanationOfBenefitTotal {
id: o.string(d, "id"),
extension: o.list(d, "extension"),
modifier_extension: o.list(d, "modifierExtension"),
category: o.one(d, "category"),
amount: o.one(d, "amount"),
};
required(d, "category", &r.category);
required(d, "amount", &r.amount);
o.finish(d);
Some(r)
}
fn encode(&self) -> Json {
let mut w = ObjWriter::new();
w.string("id", &self.id);
w.list("extension", &self.extension);
w.list("modifierExtension", &self.modifier_extension);
w.one("category", &self.category);
w.one("amount", &self.amount);
w.finish()
}
}
#[cfg(feature = "financial")]
#[derive(Debug, Clone, PartialEq, Default)]
pub struct ExplanationOfBenefitPayment {
pub id: Option<String>,
pub extension: Vec<Extension>,
pub modifier_extension: Vec<Extension>,
pub type_: Option<CodeableConcept>,
pub adjustment: Option<Money>,
pub adjustment_reason: Option<CodeableConcept>,
pub date: Option<Primitive<String>>,
pub amount: Option<Money>,
pub identifier: Option<Identifier>,
}
#[cfg(feature = "financial")]
impl FhirJson for ExplanationOfBenefitPayment {
const TYPE_NAME: &'static str = "ExplanationOfBenefitPayment";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
let r = ExplanationOfBenefitPayment {
id: o.string(d, "id"),
extension: o.list(d, "extension"),
modifier_extension: o.list(d, "modifierExtension"),
type_: o.one(d, "type"),
adjustment: o.one(d, "adjustment"),
adjustment_reason: o.one(d, "adjustmentReason"),
date: o.prim(d, "date", Kind::Date),
amount: o.one(d, "amount"),
identifier: o.one(d, "identifier"),
};
o.finish(d);
Some(r)
}
fn encode(&self) -> Json {
let mut w = ObjWriter::new();
w.string("id", &self.id);
w.list("extension", &self.extension);
w.list("modifierExtension", &self.modifier_extension);
w.one("type", &self.type_);
w.one("adjustment", &self.adjustment);
w.one("adjustmentReason", &self.adjustment_reason);
w.prim("date", &self.date);
w.one("amount", &self.amount);
w.one("identifier", &self.identifier);
w.finish()
}
}
#[cfg(feature = "financial")]
#[derive(Debug, Clone, PartialEq, Default)]
pub struct ExplanationOfBenefitProcessNote {
pub id: Option<String>,
pub extension: Vec<Extension>,
pub modifier_extension: Vec<Extension>,
pub number: Option<Primitive<i32>>,
pub type_: Option<Primitive<String>>,
pub text: Option<Primitive<String>>,
pub language: Option<CodeableConcept>,
}
#[cfg(feature = "financial")]
impl FhirJson for ExplanationOfBenefitProcessNote {
const TYPE_NAME: &'static str = "ExplanationOfBenefitProcessNote";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
let r = ExplanationOfBenefitProcessNote {
id: o.string(d, "id"),
extension: o.list(d, "extension"),
modifier_extension: o.list(d, "modifierExtension"),
number: o.prim(d, "number", Kind::PositiveInt),
type_: o.prim(d, "type", Kind::Code),
text: o.prim(d, "text", Kind::String),
language: o.one(d, "language"),
};
o.finish(d);
Some(r)
}
fn encode(&self) -> Json {
let mut w = ObjWriter::new();
w.string("id", &self.id);
w.list("extension", &self.extension);
w.list("modifierExtension", &self.modifier_extension);
w.prim("number", &self.number);
w.prim("type", &self.type_);
w.prim("text", &self.text);
w.one("language", &self.language);
w.finish()
}
}
#[cfg(feature = "financial")]
#[derive(Debug, Clone, PartialEq, Default)]
pub struct ExplanationOfBenefitBenefitBalance {
pub id: Option<String>,
pub extension: Vec<Extension>,
pub modifier_extension: Vec<Extension>,
pub category: Option<CodeableConcept>,
pub excluded: Option<Primitive<bool>>,
pub name: Option<Primitive<String>>,
pub description: Option<Primitive<String>>,
pub network: Option<CodeableConcept>,
pub unit: Option<CodeableConcept>,
pub term: Option<CodeableConcept>,
pub financial: Vec<ExplanationOfBenefitBenefitBalanceFinancial>,
}
#[cfg(feature = "financial")]
impl FhirJson for ExplanationOfBenefitBenefitBalance {
const TYPE_NAME: &'static str = "ExplanationOfBenefitBenefitBalance";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
let r = ExplanationOfBenefitBenefitBalance {
id: o.string(d, "id"),
extension: o.list(d, "extension"),
modifier_extension: o.list(d, "modifierExtension"),
category: o.one(d, "category"),
excluded: o.prim(d, "excluded", Kind::Boolean),
name: o.prim(d, "name", Kind::String),
description: o.prim(d, "description", Kind::String),
network: o.one(d, "network"),
unit: o.one(d, "unit"),
term: o.one(d, "term"),
financial: o.list(d, "financial"),
};
required(d, "category", &r.category);
o.finish(d);
Some(r)
}
fn encode(&self) -> Json {
let mut w = ObjWriter::new();
w.string("id", &self.id);
w.list("extension", &self.extension);
w.list("modifierExtension", &self.modifier_extension);
w.one("category", &self.category);
w.prim("excluded", &self.excluded);
w.prim("name", &self.name);
w.prim("description", &self.description);
w.one("network", &self.network);
w.one("unit", &self.unit);
w.one("term", &self.term);
w.list("financial", &self.financial);
w.finish()
}
}
#[cfg(feature = "financial")]
#[derive(Debug, Clone, PartialEq, Default)]
pub struct ExplanationOfBenefitBenefitBalanceFinancial {
pub id: Option<String>,
pub extension: Vec<Extension>,
pub modifier_extension: Vec<Extension>,
pub type_: Option<CodeableConcept>,
pub allowed: Option<ExplanationOfBenefitBenefitBalanceFinancialAllowed>,
pub used: Option<ExplanationOfBenefitBenefitBalanceFinancialUsed>,
}
#[cfg(feature = "financial")]
impl FhirJson for ExplanationOfBenefitBenefitBalanceFinancial {
const TYPE_NAME: &'static str = "ExplanationOfBenefitBenefitBalanceFinancial";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
let r = ExplanationOfBenefitBenefitBalanceFinancial {
id: o.string(d, "id"),
extension: o.list(d, "extension"),
modifier_extension: o.list(d, "modifierExtension"),
type_: o.one(d, "type"),
allowed: o.choice(d, "allowed"),
used: o.choice(d, "used"),
};
required(d, "type", &r.type_);
o.finish(d);
Some(r)
}
fn encode(&self) -> Json {
let mut w = ObjWriter::new();
w.string("id", &self.id);
w.list("extension", &self.extension);
w.list("modifierExtension", &self.modifier_extension);
w.one("type", &self.type_);
w.choice("allowed", &self.allowed);
w.choice("used", &self.used);
w.finish()
}
}
#[cfg(feature = "financial")]
#[derive(Debug, Clone, PartialEq)]
pub enum ExplanationOfBenefitSupportingInfoTiming {
Date(Primitive<String>),
Period(Period),
}
#[cfg(feature = "financial")]
impl Choice for ExplanationOfBenefitSupportingInfoTiming {
const TYPES: &'static [&'static str] = &["date", "Period"];
fn decode_as(code: &str, key: &str, o: &mut Obj<'_>, d: &mut Decoder) -> Option<Self> {
match code {
"date" => o.prim(d, key, Kind::Date).map(Self::Date),
"Period" => o.one(d, key).map(Self::Period),
_ => None,
}
}
fn encode_into(&self, base: &str, w: &mut ObjWriter) {
match self {
Self::Date(v) => w.prim_value(&choice_key(base, "date"), v),
Self::Period(v) => w.value(&choice_key(base, "Period"), v),
}
}
}
#[cfg(feature = "financial")]
#[derive(Debug, Clone, PartialEq)]
pub enum ExplanationOfBenefitSupportingInfoValue {
Boolean(Primitive<bool>),
String(Primitive<String>),
Quantity(Quantity),
Attachment(Attachment),
Reference(Reference),
}
#[cfg(feature = "financial")]
impl Choice for ExplanationOfBenefitSupportingInfoValue {
const TYPES: &'static [&'static str] =
&["boolean", "string", "Quantity", "Attachment", "Reference"];
fn decode_as(code: &str, key: &str, o: &mut Obj<'_>, d: &mut Decoder) -> Option<Self> {
match code {
"boolean" => o.prim(d, key, Kind::Boolean).map(Self::Boolean),
"string" => o.prim(d, key, Kind::String).map(Self::String),
"Quantity" => o.one(d, key).map(Self::Quantity),
"Attachment" => o.one(d, key).map(Self::Attachment),
"Reference" => o.one(d, key).map(Self::Reference),
_ => None,
}
}
fn encode_into(&self, base: &str, w: &mut ObjWriter) {
match self {
Self::Boolean(v) => w.prim_value(&choice_key(base, "boolean"), v),
Self::String(v) => w.prim_value(&choice_key(base, "string"), v),
Self::Quantity(v) => w.value(&choice_key(base, "Quantity"), v),
Self::Attachment(v) => w.value(&choice_key(base, "Attachment"), v),
Self::Reference(v) => w.value(&choice_key(base, "Reference"), v),
}
}
}
#[cfg(feature = "financial")]
#[derive(Debug, Clone, PartialEq)]
pub enum ExplanationOfBenefitDiagnosisDiagnosis {
CodeableConcept(CodeableConcept),
Reference(Reference),
}
#[cfg(feature = "financial")]
impl Choice for ExplanationOfBenefitDiagnosisDiagnosis {
const TYPES: &'static [&'static str] = &["CodeableConcept", "Reference"];
fn decode_as(code: &str, key: &str, o: &mut Obj<'_>, d: &mut Decoder) -> Option<Self> {
match code {
"CodeableConcept" => o.one(d, key).map(Self::CodeableConcept),
"Reference" => o.one(d, key).map(Self::Reference),
_ => None,
}
}
fn encode_into(&self, base: &str, w: &mut ObjWriter) {
match self {
Self::CodeableConcept(v) => w.value(&choice_key(base, "CodeableConcept"), v),
Self::Reference(v) => w.value(&choice_key(base, "Reference"), v),
}
}
}
#[cfg(feature = "financial")]
#[derive(Debug, Clone, PartialEq)]
pub enum ExplanationOfBenefitProcedureProcedure {
CodeableConcept(CodeableConcept),
Reference(Reference),
}
#[cfg(feature = "financial")]
impl Choice for ExplanationOfBenefitProcedureProcedure {
const TYPES: &'static [&'static str] = &["CodeableConcept", "Reference"];
fn decode_as(code: &str, key: &str, o: &mut Obj<'_>, d: &mut Decoder) -> Option<Self> {
match code {
"CodeableConcept" => o.one(d, key).map(Self::CodeableConcept),
"Reference" => o.one(d, key).map(Self::Reference),
_ => None,
}
}
fn encode_into(&self, base: &str, w: &mut ObjWriter) {
match self {
Self::CodeableConcept(v) => w.value(&choice_key(base, "CodeableConcept"), v),
Self::Reference(v) => w.value(&choice_key(base, "Reference"), v),
}
}
}
#[cfg(feature = "financial")]
#[derive(Debug, Clone, PartialEq)]
pub enum ExplanationOfBenefitAccidentLocation {
Address(Address),
Reference(Reference),
}
#[cfg(feature = "financial")]
impl Choice for ExplanationOfBenefitAccidentLocation {
const TYPES: &'static [&'static str] = &["Address", "Reference"];
fn decode_as(code: &str, key: &str, o: &mut Obj<'_>, d: &mut Decoder) -> Option<Self> {
match code {
"Address" => o.one(d, key).map(Self::Address),
"Reference" => o.one(d, key).map(Self::Reference),
_ => None,
}
}
fn encode_into(&self, base: &str, w: &mut ObjWriter) {
match self {
Self::Address(v) => w.value(&choice_key(base, "Address"), v),
Self::Reference(v) => w.value(&choice_key(base, "Reference"), v),
}
}
}
#[cfg(feature = "financial")]
#[derive(Debug, Clone, PartialEq)]
pub enum ExplanationOfBenefitItemServiced {
Date(Primitive<String>),
Period(Period),
}
#[cfg(feature = "financial")]
impl Choice for ExplanationOfBenefitItemServiced {
const TYPES: &'static [&'static str] = &["date", "Period"];
fn decode_as(code: &str, key: &str, o: &mut Obj<'_>, d: &mut Decoder) -> Option<Self> {
match code {
"date" => o.prim(d, key, Kind::Date).map(Self::Date),
"Period" => o.one(d, key).map(Self::Period),
_ => None,
}
}
fn encode_into(&self, base: &str, w: &mut ObjWriter) {
match self {
Self::Date(v) => w.prim_value(&choice_key(base, "date"), v),
Self::Period(v) => w.value(&choice_key(base, "Period"), v),
}
}
}
#[cfg(feature = "financial")]
#[derive(Debug, Clone, PartialEq)]
pub enum ExplanationOfBenefitItemLocation {
CodeableConcept(CodeableConcept),
Address(Address),
Reference(Reference),
}
#[cfg(feature = "financial")]
impl Choice for ExplanationOfBenefitItemLocation {
const TYPES: &'static [&'static str] = &["CodeableConcept", "Address", "Reference"];
fn decode_as(code: &str, key: &str, o: &mut Obj<'_>, d: &mut Decoder) -> Option<Self> {
match code {
"CodeableConcept" => o.one(d, key).map(Self::CodeableConcept),
"Address" => o.one(d, key).map(Self::Address),
"Reference" => o.one(d, key).map(Self::Reference),
_ => None,
}
}
fn encode_into(&self, base: &str, w: &mut ObjWriter) {
match self {
Self::CodeableConcept(v) => w.value(&choice_key(base, "CodeableConcept"), v),
Self::Address(v) => w.value(&choice_key(base, "Address"), v),
Self::Reference(v) => w.value(&choice_key(base, "Reference"), v),
}
}
}
#[cfg(feature = "financial")]
#[derive(Debug, Clone, PartialEq)]
pub enum ExplanationOfBenefitAddItemServiced {
Date(Primitive<String>),
Period(Period),
}
#[cfg(feature = "financial")]
impl Choice for ExplanationOfBenefitAddItemServiced {
const TYPES: &'static [&'static str] = &["date", "Period"];
fn decode_as(code: &str, key: &str, o: &mut Obj<'_>, d: &mut Decoder) -> Option<Self> {
match code {
"date" => o.prim(d, key, Kind::Date).map(Self::Date),
"Period" => o.one(d, key).map(Self::Period),
_ => None,
}
}
fn encode_into(&self, base: &str, w: &mut ObjWriter) {
match self {
Self::Date(v) => w.prim_value(&choice_key(base, "date"), v),
Self::Period(v) => w.value(&choice_key(base, "Period"), v),
}
}
}
#[cfg(feature = "financial")]
#[derive(Debug, Clone, PartialEq)]
pub enum ExplanationOfBenefitAddItemLocation {
CodeableConcept(CodeableConcept),
Address(Address),
Reference(Reference),
}
#[cfg(feature = "financial")]
impl Choice for ExplanationOfBenefitAddItemLocation {
const TYPES: &'static [&'static str] = &["CodeableConcept", "Address", "Reference"];
fn decode_as(code: &str, key: &str, o: &mut Obj<'_>, d: &mut Decoder) -> Option<Self> {
match code {
"CodeableConcept" => o.one(d, key).map(Self::CodeableConcept),
"Address" => o.one(d, key).map(Self::Address),
"Reference" => o.one(d, key).map(Self::Reference),
_ => None,
}
}
fn encode_into(&self, base: &str, w: &mut ObjWriter) {
match self {
Self::CodeableConcept(v) => w.value(&choice_key(base, "CodeableConcept"), v),
Self::Address(v) => w.value(&choice_key(base, "Address"), v),
Self::Reference(v) => w.value(&choice_key(base, "Reference"), v),
}
}
}
#[cfg(feature = "financial")]
#[derive(Debug, Clone, PartialEq)]
pub enum ExplanationOfBenefitBenefitBalanceFinancialAllowed {
UnsignedInt(Primitive<i32>),
String(Primitive<String>),
Money(Money),
}
#[cfg(feature = "financial")]
impl Choice for ExplanationOfBenefitBenefitBalanceFinancialAllowed {
const TYPES: &'static [&'static str] = &["unsignedInt", "string", "Money"];
fn decode_as(code: &str, key: &str, o: &mut Obj<'_>, d: &mut Decoder) -> Option<Self> {
match code {
"unsignedInt" => o.prim(d, key, Kind::UnsignedInt).map(Self::UnsignedInt),
"string" => o.prim(d, key, Kind::String).map(Self::String),
"Money" => o.one(d, key).map(Self::Money),
_ => None,
}
}
fn encode_into(&self, base: &str, w: &mut ObjWriter) {
match self {
Self::UnsignedInt(v) => w.prim_value(&choice_key(base, "unsignedInt"), v),
Self::String(v) => w.prim_value(&choice_key(base, "string"), v),
Self::Money(v) => w.value(&choice_key(base, "Money"), v),
}
}
}
#[cfg(feature = "financial")]
#[derive(Debug, Clone, PartialEq)]
pub enum ExplanationOfBenefitBenefitBalanceFinancialUsed {
UnsignedInt(Primitive<i32>),
Money(Money),
}
#[cfg(feature = "financial")]
impl Choice for ExplanationOfBenefitBenefitBalanceFinancialUsed {
const TYPES: &'static [&'static str] = &["unsignedInt", "Money"];
fn decode_as(code: &str, key: &str, o: &mut Obj<'_>, d: &mut Decoder) -> Option<Self> {
match code {
"unsignedInt" => o.prim(d, key, Kind::UnsignedInt).map(Self::UnsignedInt),
"Money" => o.one(d, key).map(Self::Money),
_ => None,
}
}
fn encode_into(&self, base: &str, w: &mut ObjWriter) {
match self {
Self::UnsignedInt(v) => w.prim_value(&choice_key(base, "unsignedInt"), v),
Self::Money(v) => w.value(&choice_key(base, "Money"), v),
}
}
}