#![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 Contract {
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 url: Option<Primitive<String>>,
pub version: Option<Primitive<String>>,
pub status: Option<Primitive<String>>,
pub legal_state: Option<CodeableConcept>,
pub instantiates_canonical: Option<Reference>,
pub instantiates_uri: Option<Primitive<String>>,
pub content_derivative: Option<CodeableConcept>,
pub issued: Option<Primitive<String>>,
pub applies: Option<Period>,
pub expiration_type: Option<CodeableConcept>,
pub subject: Vec<Reference>,
pub authority: Vec<Reference>,
pub domain: Vec<Reference>,
pub site: Vec<Reference>,
pub name: Option<Primitive<String>>,
pub title: Option<Primitive<String>>,
pub subtitle: Option<Primitive<String>>,
pub alias: Vec<Primitive<String>>,
pub author: Option<Reference>,
pub scope: Option<CodeableConcept>,
pub topic: Option<ContractTopic>,
pub type_: Option<CodeableConcept>,
pub sub_type: Vec<CodeableConcept>,
pub content_definition: Option<ContractContentDefinition>,
pub term: Vec<ContractTerm>,
pub supporting_info: Vec<Reference>,
pub relevant_history: Vec<Reference>,
pub signer: Vec<ContractSigner>,
pub friendly: Vec<ContractFriendly>,
pub legal: Vec<ContractLegal>,
pub rule: Vec<ContractRule>,
pub legally_binding: Option<ContractLegallyBinding>,
}
#[cfg(feature = "financial")]
impl FhirJson for Contract {
const TYPE_NAME: &'static str = "Contract";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
resource_type(&mut o, d, "Contract");
let r = Contract {
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"),
url: o.prim(d, "url", Kind::Uri),
version: o.prim(d, "version", Kind::String),
status: o.prim(d, "status", Kind::Code),
legal_state: o.one(d, "legalState"),
instantiates_canonical: o.one(d, "instantiatesCanonical"),
instantiates_uri: o.prim(d, "instantiatesUri", Kind::Uri),
content_derivative: o.one(d, "contentDerivative"),
issued: o.prim(d, "issued", Kind::DateTime),
applies: o.one(d, "applies"),
expiration_type: o.one(d, "expirationType"),
subject: o.list(d, "subject"),
authority: o.list(d, "authority"),
domain: o.list(d, "domain"),
site: o.list(d, "site"),
name: o.prim(d, "name", Kind::String),
title: o.prim(d, "title", Kind::String),
subtitle: o.prim(d, "subtitle", Kind::String),
alias: o.prim_list(d, "alias", Kind::String),
author: o.one(d, "author"),
scope: o.one(d, "scope"),
topic: o.choice(d, "topic"),
type_: o.one(d, "type"),
sub_type: o.list(d, "subType"),
content_definition: o.one(d, "contentDefinition"),
term: o.list(d, "term"),
supporting_info: o.list(d, "supportingInfo"),
relevant_history: o.list(d, "relevantHistory"),
signer: o.list(d, "signer"),
friendly: o.list(d, "friendly"),
legal: o.list(d, "legal"),
rule: o.list(d, "rule"),
legally_binding: o.choice(d, "legallyBinding"),
};
o.finish(d);
Some(r)
}
fn encode(&self) -> Json {
let mut w = ObjWriter::new();
w.raw("resourceType", Json::String("Contract".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("url", &self.url);
w.prim("version", &self.version);
w.prim("status", &self.status);
w.one("legalState", &self.legal_state);
w.one("instantiatesCanonical", &self.instantiates_canonical);
w.prim("instantiatesUri", &self.instantiates_uri);
w.one("contentDerivative", &self.content_derivative);
w.prim("issued", &self.issued);
w.one("applies", &self.applies);
w.one("expirationType", &self.expiration_type);
w.list("subject", &self.subject);
w.list("authority", &self.authority);
w.list("domain", &self.domain);
w.list("site", &self.site);
w.prim("name", &self.name);
w.prim("title", &self.title);
w.prim("subtitle", &self.subtitle);
w.prim_list("alias", &self.alias);
w.one("author", &self.author);
w.one("scope", &self.scope);
w.choice("topic", &self.topic);
w.one("type", &self.type_);
w.list("subType", &self.sub_type);
w.one("contentDefinition", &self.content_definition);
w.list("term", &self.term);
w.list("supportingInfo", &self.supporting_info);
w.list("relevantHistory", &self.relevant_history);
w.list("signer", &self.signer);
w.list("friendly", &self.friendly);
w.list("legal", &self.legal);
w.list("rule", &self.rule);
w.choice("legallyBinding", &self.legally_binding);
w.finish()
}
}
#[cfg(feature = "financial")]
#[derive(Debug, Clone, PartialEq, Default)]
pub struct ContractContentDefinition {
pub id: Option<String>,
pub extension: Vec<Extension>,
pub modifier_extension: Vec<Extension>,
pub type_: Option<CodeableConcept>,
pub sub_type: Option<CodeableConcept>,
pub publisher: Option<Reference>,
pub publication_date: Option<Primitive<String>>,
pub publication_status: Option<Primitive<String>>,
pub copyright: Option<Primitive<String>>,
}
#[cfg(feature = "financial")]
impl FhirJson for ContractContentDefinition {
const TYPE_NAME: &'static str = "ContractContentDefinition";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
let r = ContractContentDefinition {
id: o.string(d, "id"),
extension: o.list(d, "extension"),
modifier_extension: o.list(d, "modifierExtension"),
type_: o.one(d, "type"),
sub_type: o.one(d, "subType"),
publisher: o.one(d, "publisher"),
publication_date: o.prim(d, "publicationDate", Kind::DateTime),
publication_status: o.prim(d, "publicationStatus", Kind::Code),
copyright: o.prim(d, "copyright", Kind::Markdown),
};
required(d, "type", &r.type_);
required(d, "publicationStatus", &r.publication_status);
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("subType", &self.sub_type);
w.one("publisher", &self.publisher);
w.prim("publicationDate", &self.publication_date);
w.prim("publicationStatus", &self.publication_status);
w.prim("copyright", &self.copyright);
w.finish()
}
}
#[cfg(feature = "financial")]
#[derive(Debug, Clone, PartialEq, Default)]
pub struct ContractTerm {
pub id: Option<String>,
pub extension: Vec<Extension>,
pub modifier_extension: Vec<Extension>,
pub identifier: Option<Identifier>,
pub issued: Option<Primitive<String>>,
pub applies: Option<Period>,
pub topic: Option<ContractTermTopic>,
pub type_: Option<CodeableConcept>,
pub sub_type: Option<CodeableConcept>,
pub text: Option<Primitive<String>>,
pub security_label: Vec<ContractTermSecurityLabel>,
pub offer: Option<ContractTermOffer>,
pub asset: Vec<ContractTermAsset>,
pub action: Vec<ContractTermAction>,
pub group: Vec<ContractTerm>,
}
#[cfg(feature = "financial")]
impl FhirJson for ContractTerm {
const TYPE_NAME: &'static str = "ContractTerm";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
let r = ContractTerm {
id: o.string(d, "id"),
extension: o.list(d, "extension"),
modifier_extension: o.list(d, "modifierExtension"),
identifier: o.one(d, "identifier"),
issued: o.prim(d, "issued", Kind::DateTime),
applies: o.one(d, "applies"),
topic: o.choice(d, "topic"),
type_: o.one(d, "type"),
sub_type: o.one(d, "subType"),
text: o.prim(d, "text", Kind::String),
security_label: o.list(d, "securityLabel"),
offer: o.one(d, "offer"),
asset: o.list(d, "asset"),
action: o.list(d, "action"),
group: o.list(d, "group"),
};
required(d, "offer", &r.offer);
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("identifier", &self.identifier);
w.prim("issued", &self.issued);
w.one("applies", &self.applies);
w.choice("topic", &self.topic);
w.one("type", &self.type_);
w.one("subType", &self.sub_type);
w.prim("text", &self.text);
w.list("securityLabel", &self.security_label);
w.one("offer", &self.offer);
w.list("asset", &self.asset);
w.list("action", &self.action);
w.list("group", &self.group);
w.finish()
}
}
#[cfg(feature = "financial")]
#[derive(Debug, Clone, PartialEq, Default)]
pub struct ContractTermSecurityLabel {
pub id: Option<String>,
pub extension: Vec<Extension>,
pub modifier_extension: Vec<Extension>,
pub number: Vec<Primitive<i32>>,
pub classification: Option<Coding>,
pub category: Vec<Coding>,
pub control: Vec<Coding>,
}
#[cfg(feature = "financial")]
impl FhirJson for ContractTermSecurityLabel {
const TYPE_NAME: &'static str = "ContractTermSecurityLabel";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
let r = ContractTermSecurityLabel {
id: o.string(d, "id"),
extension: o.list(d, "extension"),
modifier_extension: o.list(d, "modifierExtension"),
number: o.prim_list(d, "number", Kind::UnsignedInt),
classification: o.one(d, "classification"),
category: o.list(d, "category"),
control: o.list(d, "control"),
};
required(d, "classification", &r.classification);
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("number", &self.number);
w.one("classification", &self.classification);
w.list("category", &self.category);
w.list("control", &self.control);
w.finish()
}
}
#[cfg(feature = "financial")]
#[derive(Debug, Clone, PartialEq, Default)]
pub struct ContractTermOffer {
pub id: Option<String>,
pub extension: Vec<Extension>,
pub modifier_extension: Vec<Extension>,
pub identifier: Vec<Identifier>,
pub party: Vec<ContractTermOfferParty>,
pub topic: Option<Reference>,
pub type_: Option<CodeableConcept>,
pub decision: Option<CodeableConcept>,
pub decision_mode: Vec<CodeableConcept>,
pub answer: Vec<ContractTermOfferAnswer>,
pub text: Option<Primitive<String>>,
pub link_id: Vec<Primitive<String>>,
pub security_label_number: Vec<Primitive<i32>>,
}
#[cfg(feature = "financial")]
impl FhirJson for ContractTermOffer {
const TYPE_NAME: &'static str = "ContractTermOffer";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
let r = ContractTermOffer {
id: o.string(d, "id"),
extension: o.list(d, "extension"),
modifier_extension: o.list(d, "modifierExtension"),
identifier: o.list(d, "identifier"),
party: o.list(d, "party"),
topic: o.one(d, "topic"),
type_: o.one(d, "type"),
decision: o.one(d, "decision"),
decision_mode: o.list(d, "decisionMode"),
answer: o.list(d, "answer"),
text: o.prim(d, "text", Kind::String),
link_id: o.prim_list(d, "linkId", Kind::String),
security_label_number: o.prim_list(d, "securityLabelNumber", Kind::UnsignedInt),
};
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.list("identifier", &self.identifier);
w.list("party", &self.party);
w.one("topic", &self.topic);
w.one("type", &self.type_);
w.one("decision", &self.decision);
w.list("decisionMode", &self.decision_mode);
w.list("answer", &self.answer);
w.prim("text", &self.text);
w.prim_list("linkId", &self.link_id);
w.prim_list("securityLabelNumber", &self.security_label_number);
w.finish()
}
}
#[cfg(feature = "financial")]
#[derive(Debug, Clone, PartialEq, Default)]
pub struct ContractTermOfferParty {
pub id: Option<String>,
pub extension: Vec<Extension>,
pub modifier_extension: Vec<Extension>,
pub reference: Vec<Reference>,
pub role: Option<CodeableConcept>,
}
#[cfg(feature = "financial")]
impl FhirJson for ContractTermOfferParty {
const TYPE_NAME: &'static str = "ContractTermOfferParty";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
let r = ContractTermOfferParty {
id: o.string(d, "id"),
extension: o.list(d, "extension"),
modifier_extension: o.list(d, "modifierExtension"),
reference: o.list(d, "reference"),
role: o.one(d, "role"),
};
required_list(d, "reference", &r.reference, 1);
required(d, "role", &r.role);
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.list("reference", &self.reference);
w.one("role", &self.role);
w.finish()
}
}
#[cfg(feature = "financial")]
#[derive(Debug, Clone, PartialEq, Default)]
pub struct ContractTermOfferAnswer {
pub id: Option<String>,
pub extension: Vec<Extension>,
pub modifier_extension: Vec<Extension>,
pub value: Option<ContractTermOfferAnswerValue>,
}
#[cfg(feature = "financial")]
impl FhirJson for ContractTermOfferAnswer {
const TYPE_NAME: &'static str = "ContractTermOfferAnswer";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
let r = ContractTermOfferAnswer {
id: o.string(d, "id"),
extension: o.list(d, "extension"),
modifier_extension: o.list(d, "modifierExtension"),
value: o.choice(d, "value"),
};
required(d, "value[x]", &r.value);
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.choice("value", &self.value);
w.finish()
}
}
#[cfg(feature = "financial")]
#[derive(Debug, Clone, PartialEq, Default)]
pub struct ContractTermAsset {
pub id: Option<String>,
pub extension: Vec<Extension>,
pub modifier_extension: Vec<Extension>,
pub scope: Option<CodeableConcept>,
pub type_: Vec<CodeableConcept>,
pub type_reference: Vec<Reference>,
pub subtype: Vec<CodeableConcept>,
pub relationship: Option<Coding>,
pub context: Vec<ContractTermAssetContext>,
pub condition: Option<Primitive<String>>,
pub period_type: Vec<CodeableConcept>,
pub period: Vec<Period>,
pub use_period: Vec<Period>,
pub text: Option<Primitive<String>>,
pub link_id: Vec<Primitive<String>>,
pub answer: Vec<ContractTermOfferAnswer>,
pub security_label_number: Vec<Primitive<i32>>,
pub valued_item: Vec<ContractTermAssetValuedItem>,
}
#[cfg(feature = "financial")]
impl FhirJson for ContractTermAsset {
const TYPE_NAME: &'static str = "ContractTermAsset";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
let r = ContractTermAsset {
id: o.string(d, "id"),
extension: o.list(d, "extension"),
modifier_extension: o.list(d, "modifierExtension"),
scope: o.one(d, "scope"),
type_: o.list(d, "type"),
type_reference: o.list(d, "typeReference"),
subtype: o.list(d, "subtype"),
relationship: o.one(d, "relationship"),
context: o.list(d, "context"),
condition: o.prim(d, "condition", Kind::String),
period_type: o.list(d, "periodType"),
period: o.list(d, "period"),
use_period: o.list(d, "usePeriod"),
text: o.prim(d, "text", Kind::String),
link_id: o.prim_list(d, "linkId", Kind::String),
answer: o.list(d, "answer"),
security_label_number: o.prim_list(d, "securityLabelNumber", Kind::UnsignedInt),
valued_item: o.list(d, "valuedItem"),
};
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("scope", &self.scope);
w.list("type", &self.type_);
w.list("typeReference", &self.type_reference);
w.list("subtype", &self.subtype);
w.one("relationship", &self.relationship);
w.list("context", &self.context);
w.prim("condition", &self.condition);
w.list("periodType", &self.period_type);
w.list("period", &self.period);
w.list("usePeriod", &self.use_period);
w.prim("text", &self.text);
w.prim_list("linkId", &self.link_id);
w.list("answer", &self.answer);
w.prim_list("securityLabelNumber", &self.security_label_number);
w.list("valuedItem", &self.valued_item);
w.finish()
}
}
#[cfg(feature = "financial")]
#[derive(Debug, Clone, PartialEq, Default)]
pub struct ContractTermAssetContext {
pub id: Option<String>,
pub extension: Vec<Extension>,
pub modifier_extension: Vec<Extension>,
pub reference: Option<Reference>,
pub code: Vec<CodeableConcept>,
pub text: Option<Primitive<String>>,
}
#[cfg(feature = "financial")]
impl FhirJson for ContractTermAssetContext {
const TYPE_NAME: &'static str = "ContractTermAssetContext";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
let r = ContractTermAssetContext {
id: o.string(d, "id"),
extension: o.list(d, "extension"),
modifier_extension: o.list(d, "modifierExtension"),
reference: o.one(d, "reference"),
code: o.list(d, "code"),
text: o.prim(d, "text", Kind::String),
};
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("reference", &self.reference);
w.list("code", &self.code);
w.prim("text", &self.text);
w.finish()
}
}
#[cfg(feature = "financial")]
#[derive(Debug, Clone, PartialEq, Default)]
pub struct ContractTermAssetValuedItem {
pub id: Option<String>,
pub extension: Vec<Extension>,
pub modifier_extension: Vec<Extension>,
pub entity: Option<ContractTermAssetValuedItemEntity>,
pub identifier: Option<Identifier>,
pub effective_time: Option<Primitive<String>>,
pub quantity: Option<Quantity>,
pub unit_price: Option<Money>,
pub factor: Option<Primitive<Decimal>>,
pub points: Option<Primitive<Decimal>>,
pub net: Option<Money>,
pub payment: Option<Primitive<String>>,
pub payment_date: Option<Primitive<String>>,
pub responsible: Option<Reference>,
pub recipient: Option<Reference>,
pub link_id: Vec<Primitive<String>>,
pub security_label_number: Vec<Primitive<i32>>,
}
#[cfg(feature = "financial")]
impl FhirJson for ContractTermAssetValuedItem {
const TYPE_NAME: &'static str = "ContractTermAssetValuedItem";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
let r = ContractTermAssetValuedItem {
id: o.string(d, "id"),
extension: o.list(d, "extension"),
modifier_extension: o.list(d, "modifierExtension"),
entity: o.choice(d, "entity"),
identifier: o.one(d, "identifier"),
effective_time: o.prim(d, "effectiveTime", Kind::DateTime),
quantity: o.one(d, "quantity"),
unit_price: o.one(d, "unitPrice"),
factor: o.prim(d, "factor", Kind::Decimal),
points: o.prim(d, "points", Kind::Decimal),
net: o.one(d, "net"),
payment: o.prim(d, "payment", Kind::String),
payment_date: o.prim(d, "paymentDate", Kind::DateTime),
responsible: o.one(d, "responsible"),
recipient: o.one(d, "recipient"),
link_id: o.prim_list(d, "linkId", Kind::String),
security_label_number: o.prim_list(d, "securityLabelNumber", Kind::UnsignedInt),
};
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.choice("entity", &self.entity);
w.one("identifier", &self.identifier);
w.prim("effectiveTime", &self.effective_time);
w.one("quantity", &self.quantity);
w.one("unitPrice", &self.unit_price);
w.prim("factor", &self.factor);
w.prim("points", &self.points);
w.one("net", &self.net);
w.prim("payment", &self.payment);
w.prim("paymentDate", &self.payment_date);
w.one("responsible", &self.responsible);
w.one("recipient", &self.recipient);
w.prim_list("linkId", &self.link_id);
w.prim_list("securityLabelNumber", &self.security_label_number);
w.finish()
}
}
#[cfg(feature = "financial")]
#[derive(Debug, Clone, PartialEq, Default)]
pub struct ContractTermAction {
pub id: Option<String>,
pub extension: Vec<Extension>,
pub modifier_extension: Vec<Extension>,
pub do_not_perform: Option<Primitive<bool>>,
pub type_: Option<CodeableConcept>,
pub subject: Vec<ContractTermActionSubject>,
pub intent: Option<CodeableConcept>,
pub link_id: Vec<Primitive<String>>,
pub status: Option<CodeableConcept>,
pub context: Option<Reference>,
pub context_link_id: Vec<Primitive<String>>,
pub occurrence: Option<ContractTermActionOccurrence>,
pub requester: Vec<Reference>,
pub requester_link_id: Vec<Primitive<String>>,
pub performer_type: Vec<CodeableConcept>,
pub performer_role: Option<CodeableConcept>,
pub performer: Option<Reference>,
pub performer_link_id: Vec<Primitive<String>>,
pub reason_code: Vec<CodeableConcept>,
pub reason_reference: Vec<Reference>,
pub reason: Vec<Primitive<String>>,
pub reason_link_id: Vec<Primitive<String>>,
pub note: Vec<Annotation>,
pub security_label_number: Vec<Primitive<i32>>,
}
#[cfg(feature = "financial")]
impl FhirJson for ContractTermAction {
const TYPE_NAME: &'static str = "ContractTermAction";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
let r = ContractTermAction {
id: o.string(d, "id"),
extension: o.list(d, "extension"),
modifier_extension: o.list(d, "modifierExtension"),
do_not_perform: o.prim(d, "doNotPerform", Kind::Boolean),
type_: o.one(d, "type"),
subject: o.list(d, "subject"),
intent: o.one(d, "intent"),
link_id: o.prim_list(d, "linkId", Kind::String),
status: o.one(d, "status"),
context: o.one(d, "context"),
context_link_id: o.prim_list(d, "contextLinkId", Kind::String),
occurrence: o.choice(d, "occurrence"),
requester: o.list(d, "requester"),
requester_link_id: o.prim_list(d, "requesterLinkId", Kind::String),
performer_type: o.list(d, "performerType"),
performer_role: o.one(d, "performerRole"),
performer: o.one(d, "performer"),
performer_link_id: o.prim_list(d, "performerLinkId", Kind::String),
reason_code: o.list(d, "reasonCode"),
reason_reference: o.list(d, "reasonReference"),
reason: o.prim_list(d, "reason", Kind::String),
reason_link_id: o.prim_list(d, "reasonLinkId", Kind::String),
note: o.list(d, "note"),
security_label_number: o.prim_list(d, "securityLabelNumber", Kind::UnsignedInt),
};
required(d, "type", &r.type_);
required(d, "intent", &r.intent);
required(d, "status", &r.status);
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("doNotPerform", &self.do_not_perform);
w.one("type", &self.type_);
w.list("subject", &self.subject);
w.one("intent", &self.intent);
w.prim_list("linkId", &self.link_id);
w.one("status", &self.status);
w.one("context", &self.context);
w.prim_list("contextLinkId", &self.context_link_id);
w.choice("occurrence", &self.occurrence);
w.list("requester", &self.requester);
w.prim_list("requesterLinkId", &self.requester_link_id);
w.list("performerType", &self.performer_type);
w.one("performerRole", &self.performer_role);
w.one("performer", &self.performer);
w.prim_list("performerLinkId", &self.performer_link_id);
w.list("reasonCode", &self.reason_code);
w.list("reasonReference", &self.reason_reference);
w.prim_list("reason", &self.reason);
w.prim_list("reasonLinkId", &self.reason_link_id);
w.list("note", &self.note);
w.prim_list("securityLabelNumber", &self.security_label_number);
w.finish()
}
}
#[cfg(feature = "financial")]
#[derive(Debug, Clone, PartialEq, Default)]
pub struct ContractTermActionSubject {
pub id: Option<String>,
pub extension: Vec<Extension>,
pub modifier_extension: Vec<Extension>,
pub reference: Vec<Reference>,
pub role: Option<CodeableConcept>,
}
#[cfg(feature = "financial")]
impl FhirJson for ContractTermActionSubject {
const TYPE_NAME: &'static str = "ContractTermActionSubject";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
let r = ContractTermActionSubject {
id: o.string(d, "id"),
extension: o.list(d, "extension"),
modifier_extension: o.list(d, "modifierExtension"),
reference: o.list(d, "reference"),
role: o.one(d, "role"),
};
required_list(d, "reference", &r.reference, 1);
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.list("reference", &self.reference);
w.one("role", &self.role);
w.finish()
}
}
#[cfg(feature = "financial")]
#[derive(Debug, Clone, PartialEq, Default)]
pub struct ContractSigner {
pub id: Option<String>,
pub extension: Vec<Extension>,
pub modifier_extension: Vec<Extension>,
pub type_: Option<Coding>,
pub party: Option<Reference>,
pub signature: Vec<Signature>,
}
#[cfg(feature = "financial")]
impl FhirJson for ContractSigner {
const TYPE_NAME: &'static str = "ContractSigner";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
let r = ContractSigner {
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"),
signature: o.list(d, "signature"),
};
required(d, "type", &r.type_);
required(d, "party", &r.party);
required_list(d, "signature", &r.signature, 1);
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.list("signature", &self.signature);
w.finish()
}
}
#[cfg(feature = "financial")]
#[derive(Debug, Clone, PartialEq, Default)]
pub struct ContractFriendly {
pub id: Option<String>,
pub extension: Vec<Extension>,
pub modifier_extension: Vec<Extension>,
pub content: Option<ContractFriendlyContent>,
}
#[cfg(feature = "financial")]
impl FhirJson for ContractFriendly {
const TYPE_NAME: &'static str = "ContractFriendly";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
let r = ContractFriendly {
id: o.string(d, "id"),
extension: o.list(d, "extension"),
modifier_extension: o.list(d, "modifierExtension"),
content: o.choice(d, "content"),
};
required(d, "content[x]", &r.content);
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.choice("content", &self.content);
w.finish()
}
}
#[cfg(feature = "financial")]
#[derive(Debug, Clone, PartialEq, Default)]
pub struct ContractLegal {
pub id: Option<String>,
pub extension: Vec<Extension>,
pub modifier_extension: Vec<Extension>,
pub content: Option<ContractLegalContent>,
}
#[cfg(feature = "financial")]
impl FhirJson for ContractLegal {
const TYPE_NAME: &'static str = "ContractLegal";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
let r = ContractLegal {
id: o.string(d, "id"),
extension: o.list(d, "extension"),
modifier_extension: o.list(d, "modifierExtension"),
content: o.choice(d, "content"),
};
required(d, "content[x]", &r.content);
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.choice("content", &self.content);
w.finish()
}
}
#[cfg(feature = "financial")]
#[derive(Debug, Clone, PartialEq, Default)]
pub struct ContractRule {
pub id: Option<String>,
pub extension: Vec<Extension>,
pub modifier_extension: Vec<Extension>,
pub content: Option<ContractRuleContent>,
}
#[cfg(feature = "financial")]
impl FhirJson for ContractRule {
const TYPE_NAME: &'static str = "ContractRule";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
let r = ContractRule {
id: o.string(d, "id"),
extension: o.list(d, "extension"),
modifier_extension: o.list(d, "modifierExtension"),
content: o.choice(d, "content"),
};
required(d, "content[x]", &r.content);
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.choice("content", &self.content);
w.finish()
}
}
#[cfg(feature = "financial")]
#[derive(Debug, Clone, PartialEq)]
pub enum ContractTopic {
CodeableConcept(CodeableConcept),
Reference(Reference),
}
#[cfg(feature = "financial")]
impl Choice for ContractTopic {
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 ContractLegallyBinding {
Attachment(Attachment),
Reference(Reference),
}
#[cfg(feature = "financial")]
impl Choice for ContractLegallyBinding {
const TYPES: &'static [&'static str] = &["Attachment", "Reference"];
fn decode_as(code: &str, key: &str, o: &mut Obj<'_>, d: &mut Decoder) -> Option<Self> {
match code {
"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::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 ContractTermTopic {
CodeableConcept(CodeableConcept),
Reference(Reference),
}
#[cfg(feature = "financial")]
impl Choice for ContractTermTopic {
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 ContractTermOfferAnswerValue {
Boolean(Primitive<bool>),
Decimal(Primitive<Decimal>),
Integer(Primitive<i32>),
Date(Primitive<String>),
DateTime(Primitive<String>),
Time(Primitive<String>),
String(Primitive<String>),
Uri(Primitive<String>),
Attachment(Attachment),
Coding(Coding),
Quantity(Quantity),
Reference(Reference),
}
#[cfg(feature = "financial")]
impl Choice for ContractTermOfferAnswerValue {
const TYPES: &'static [&'static str] = &[
"boolean",
"decimal",
"integer",
"date",
"dateTime",
"time",
"string",
"uri",
"Attachment",
"Coding",
"Quantity",
"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),
"decimal" => o.prim(d, key, Kind::Decimal).map(Self::Decimal),
"integer" => o.prim(d, key, Kind::Integer).map(Self::Integer),
"date" => o.prim(d, key, Kind::Date).map(Self::Date),
"dateTime" => o.prim(d, key, Kind::DateTime).map(Self::DateTime),
"time" => o.prim(d, key, Kind::Time).map(Self::Time),
"string" => o.prim(d, key, Kind::String).map(Self::String),
"uri" => o.prim(d, key, Kind::Uri).map(Self::Uri),
"Attachment" => o.one(d, key).map(Self::Attachment),
"Coding" => o.one(d, key).map(Self::Coding),
"Quantity" => o.one(d, key).map(Self::Quantity),
"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::Decimal(v) => w.prim_value(&choice_key(base, "decimal"), v),
Self::Integer(v) => w.prim_value(&choice_key(base, "integer"), v),
Self::Date(v) => w.prim_value(&choice_key(base, "date"), v),
Self::DateTime(v) => w.prim_value(&choice_key(base, "dateTime"), v),
Self::Time(v) => w.prim_value(&choice_key(base, "time"), v),
Self::String(v) => w.prim_value(&choice_key(base, "string"), v),
Self::Uri(v) => w.prim_value(&choice_key(base, "uri"), v),
Self::Attachment(v) => w.value(&choice_key(base, "Attachment"), v),
Self::Coding(v) => w.value(&choice_key(base, "Coding"), v),
Self::Quantity(v) => w.value(&choice_key(base, "Quantity"), v),
Self::Reference(v) => w.value(&choice_key(base, "Reference"), v),
}
}
}
#[cfg(feature = "financial")]
#[derive(Debug, Clone, PartialEq)]
pub enum ContractTermAssetValuedItemEntity {
CodeableConcept(CodeableConcept),
Reference(Reference),
}
#[cfg(feature = "financial")]
impl Choice for ContractTermAssetValuedItemEntity {
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 ContractTermActionOccurrence {
DateTime(Primitive<String>),
Period(Period),
Timing(Timing),
}
#[cfg(feature = "financial")]
impl Choice for ContractTermActionOccurrence {
const TYPES: &'static [&'static str] = &["dateTime", "Period", "Timing"];
fn decode_as(code: &str, key: &str, o: &mut Obj<'_>, d: &mut Decoder) -> Option<Self> {
match code {
"dateTime" => o.prim(d, key, Kind::DateTime).map(Self::DateTime),
"Period" => o.one(d, key).map(Self::Period),
"Timing" => o.one(d, key).map(Self::Timing),
_ => None,
}
}
fn encode_into(&self, base: &str, w: &mut ObjWriter) {
match self {
Self::DateTime(v) => w.prim_value(&choice_key(base, "dateTime"), v),
Self::Period(v) => w.value(&choice_key(base, "Period"), v),
Self::Timing(v) => w.value(&choice_key(base, "Timing"), v),
}
}
}
#[cfg(feature = "financial")]
#[derive(Debug, Clone, PartialEq)]
pub enum ContractFriendlyContent {
Attachment(Attachment),
Reference(Reference),
}
#[cfg(feature = "financial")]
impl Choice for ContractFriendlyContent {
const TYPES: &'static [&'static str] = &["Attachment", "Reference"];
fn decode_as(code: &str, key: &str, o: &mut Obj<'_>, d: &mut Decoder) -> Option<Self> {
match code {
"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::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 ContractLegalContent {
Attachment(Attachment),
Reference(Reference),
}
#[cfg(feature = "financial")]
impl Choice for ContractLegalContent {
const TYPES: &'static [&'static str] = &["Attachment", "Reference"];
fn decode_as(code: &str, key: &str, o: &mut Obj<'_>, d: &mut Decoder) -> Option<Self> {
match code {
"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::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 ContractRuleContent {
Attachment(Attachment),
Reference(Reference),
}
#[cfg(feature = "financial")]
impl Choice for ContractRuleContent {
const TYPES: &'static [&'static str] = &["Attachment", "Reference"];
fn decode_as(code: &str, key: &str, o: &mut Obj<'_>, d: &mut Decoder) -> Option<Self> {
match code {
"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::Attachment(v) => w.value(&choice_key(base, "Attachment"), v),
Self::Reference(v) => w.value(&choice_key(base, "Reference"), v),
}
}
}