#![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 = "base")]
#[derive(Debug, Clone, PartialEq, Default)]
pub struct Task {
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 instantiates_canonical: Option<Primitive<String>>,
pub instantiates_uri: Option<Primitive<String>>,
pub based_on: Vec<Reference>,
pub group_identifier: Option<Identifier>,
pub part_of: Vec<Reference>,
pub status: Option<Primitive<String>>,
pub status_reason: Option<CodeableConcept>,
pub business_status: Option<CodeableConcept>,
pub intent: Option<Primitive<String>>,
pub priority: Option<Primitive<String>>,
pub code: Option<CodeableConcept>,
pub description: Option<Primitive<String>>,
pub focus: Option<Reference>,
pub for_: Option<Reference>,
pub encounter: Option<Reference>,
pub execution_period: Option<Period>,
pub authored_on: Option<Primitive<String>>,
pub last_modified: Option<Primitive<String>>,
pub requester: Option<Reference>,
pub performer_type: Vec<CodeableConcept>,
pub owner: Option<Reference>,
pub location: Option<Reference>,
pub reason_code: Option<CodeableConcept>,
pub reason_reference: Option<Reference>,
pub insurance: Vec<Reference>,
pub note: Vec<Annotation>,
pub relevant_history: Vec<Reference>,
pub restriction: Option<TaskRestriction>,
pub input: Vec<TaskInput>,
pub output: Vec<TaskOutput>,
}
#[cfg(feature = "base")]
impl FhirJson for Task {
const TYPE_NAME: &'static str = "Task";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
resource_type(&mut o, d, "Task");
let r = Task {
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"),
instantiates_canonical: o.prim(d, "instantiatesCanonical", Kind::Canonical),
instantiates_uri: o.prim(d, "instantiatesUri", Kind::Uri),
based_on: o.list(d, "basedOn"),
group_identifier: o.one(d, "groupIdentifier"),
part_of: o.list(d, "partOf"),
status: o.prim(d, "status", Kind::Code),
status_reason: o.one(d, "statusReason"),
business_status: o.one(d, "businessStatus"),
intent: o.prim(d, "intent", Kind::Code),
priority: o.prim(d, "priority", Kind::Code),
code: o.one(d, "code"),
description: o.prim(d, "description", Kind::String),
focus: o.one(d, "focus"),
for_: o.one(d, "for"),
encounter: o.one(d, "encounter"),
execution_period: o.one(d, "executionPeriod"),
authored_on: o.prim(d, "authoredOn", Kind::DateTime),
last_modified: o.prim(d, "lastModified", Kind::DateTime),
requester: o.one(d, "requester"),
performer_type: o.list(d, "performerType"),
owner: o.one(d, "owner"),
location: o.one(d, "location"),
reason_code: o.one(d, "reasonCode"),
reason_reference: o.one(d, "reasonReference"),
insurance: o.list(d, "insurance"),
note: o.list(d, "note"),
relevant_history: o.list(d, "relevantHistory"),
restriction: o.one(d, "restriction"),
input: o.list(d, "input"),
output: o.list(d, "output"),
};
required(d, "status", &r.status);
required(d, "intent", &r.intent);
o.finish(d);
Some(r)
}
fn encode(&self) -> Json {
let mut w = ObjWriter::new();
w.raw("resourceType", Json::String("Task".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("instantiatesCanonical", &self.instantiates_canonical);
w.prim("instantiatesUri", &self.instantiates_uri);
w.list("basedOn", &self.based_on);
w.one("groupIdentifier", &self.group_identifier);
w.list("partOf", &self.part_of);
w.prim("status", &self.status);
w.one("statusReason", &self.status_reason);
w.one("businessStatus", &self.business_status);
w.prim("intent", &self.intent);
w.prim("priority", &self.priority);
w.one("code", &self.code);
w.prim("description", &self.description);
w.one("focus", &self.focus);
w.one("for", &self.for_);
w.one("encounter", &self.encounter);
w.one("executionPeriod", &self.execution_period);
w.prim("authoredOn", &self.authored_on);
w.prim("lastModified", &self.last_modified);
w.one("requester", &self.requester);
w.list("performerType", &self.performer_type);
w.one("owner", &self.owner);
w.one("location", &self.location);
w.one("reasonCode", &self.reason_code);
w.one("reasonReference", &self.reason_reference);
w.list("insurance", &self.insurance);
w.list("note", &self.note);
w.list("relevantHistory", &self.relevant_history);
w.one("restriction", &self.restriction);
w.list("input", &self.input);
w.list("output", &self.output);
w.finish()
}
}
#[cfg(feature = "base")]
#[derive(Debug, Clone, PartialEq, Default)]
pub struct TaskRestriction {
pub id: Option<String>,
pub extension: Vec<Extension>,
pub modifier_extension: Vec<Extension>,
pub repetitions: Option<Primitive<i32>>,
pub period: Option<Period>,
pub recipient: Vec<Reference>,
}
#[cfg(feature = "base")]
impl FhirJson for TaskRestriction {
const TYPE_NAME: &'static str = "TaskRestriction";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
let r = TaskRestriction {
id: o.string(d, "id"),
extension: o.list(d, "extension"),
modifier_extension: o.list(d, "modifierExtension"),
repetitions: o.prim(d, "repetitions", Kind::PositiveInt),
period: o.one(d, "period"),
recipient: o.list(d, "recipient"),
};
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("repetitions", &self.repetitions);
w.one("period", &self.period);
w.list("recipient", &self.recipient);
w.finish()
}
}
#[cfg(feature = "base")]
#[derive(Debug, Clone, PartialEq, Default)]
pub struct TaskInput {
pub id: Option<String>,
pub extension: Vec<Extension>,
pub modifier_extension: Vec<Extension>,
pub type_: Option<CodeableConcept>,
pub value: Option<TaskInputValue>,
}
#[cfg(feature = "base")]
impl FhirJson for TaskInput {
const TYPE_NAME: &'static str = "TaskInput";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
let r = TaskInput {
id: o.string(d, "id"),
extension: o.list(d, "extension"),
modifier_extension: o.list(d, "modifierExtension"),
type_: o.one(d, "type"),
value: o.choice(d, "value"),
};
required(d, "type", &r.type_);
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.one("type", &self.type_);
w.choice("value", &self.value);
w.finish()
}
}
#[cfg(feature = "base")]
#[derive(Debug, Clone, PartialEq, Default)]
pub struct TaskOutput {
pub id: Option<String>,
pub extension: Vec<Extension>,
pub modifier_extension: Vec<Extension>,
pub type_: Option<CodeableConcept>,
pub value: Option<TaskOutputValue>,
}
#[cfg(feature = "base")]
impl FhirJson for TaskOutput {
const TYPE_NAME: &'static str = "TaskOutput";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
let r = TaskOutput {
id: o.string(d, "id"),
extension: o.list(d, "extension"),
modifier_extension: o.list(d, "modifierExtension"),
type_: o.one(d, "type"),
value: o.choice(d, "value"),
};
required(d, "type", &r.type_);
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.one("type", &self.type_);
w.choice("value", &self.value);
w.finish()
}
}
#[cfg(feature = "base")]
#[derive(Debug, Clone, PartialEq)]
pub enum TaskInputValue {
Base64Binary(Primitive<String>),
Boolean(Primitive<bool>),
Canonical(Primitive<String>),
Code(Primitive<String>),
Date(Primitive<String>),
DateTime(Primitive<String>),
Decimal(Primitive<Decimal>),
Id(Primitive<String>),
Instant(Primitive<String>),
Integer(Primitive<i32>),
Markdown(Primitive<String>),
Oid(Primitive<String>),
PositiveInt(Primitive<i32>),
String(Primitive<String>),
Time(Primitive<String>),
UnsignedInt(Primitive<i32>),
Uri(Primitive<String>),
Url(Primitive<String>),
Uuid(Primitive<String>),
Address(Address),
Age(Age),
Annotation(Annotation),
Attachment(Attachment),
CodeableConcept(CodeableConcept),
Coding(Coding),
ContactPoint(ContactPoint),
Count(Count),
Distance(Distance),
Duration(Duration),
HumanName(HumanName),
Identifier(Identifier),
Money(Money),
Period(Period),
Quantity(Quantity),
Range(Range),
Ratio(Ratio),
Reference(Reference),
SampledData(SampledData),
Signature(Signature),
Timing(Timing),
ContactDetail(ContactDetail),
Contributor(Contributor),
DataRequirement(DataRequirement),
Expression(Expression),
ParameterDefinition(ParameterDefinition),
RelatedArtifact(RelatedArtifact),
TriggerDefinition(TriggerDefinition),
UsageContext(UsageContext),
Dosage(Dosage),
Meta(Meta),
}
#[cfg(feature = "base")]
impl Choice for TaskInputValue {
const TYPES: &'static [&'static str] = &[
"base64Binary",
"boolean",
"canonical",
"code",
"date",
"dateTime",
"decimal",
"id",
"instant",
"integer",
"markdown",
"oid",
"positiveInt",
"string",
"time",
"unsignedInt",
"uri",
"url",
"uuid",
"Address",
"Age",
"Annotation",
"Attachment",
"CodeableConcept",
"Coding",
"ContactPoint",
"Count",
"Distance",
"Duration",
"HumanName",
"Identifier",
"Money",
"Period",
"Quantity",
"Range",
"Ratio",
"Reference",
"SampledData",
"Signature",
"Timing",
"ContactDetail",
"Contributor",
"DataRequirement",
"Expression",
"ParameterDefinition",
"RelatedArtifact",
"TriggerDefinition",
"UsageContext",
"Dosage",
"Meta",
];
fn decode_as(code: &str, key: &str, o: &mut Obj<'_>, d: &mut Decoder) -> Option<Self> {
match code {
"base64Binary" => o.prim(d, key, Kind::Base64Binary).map(Self::Base64Binary),
"boolean" => o.prim(d, key, Kind::Boolean).map(Self::Boolean),
"canonical" => o.prim(d, key, Kind::Canonical).map(Self::Canonical),
"code" => o.prim(d, key, Kind::Code).map(Self::Code),
"date" => o.prim(d, key, Kind::Date).map(Self::Date),
"dateTime" => o.prim(d, key, Kind::DateTime).map(Self::DateTime),
"decimal" => o.prim(d, key, Kind::Decimal).map(Self::Decimal),
"id" => o.prim(d, key, Kind::Id).map(Self::Id),
"instant" => o.prim(d, key, Kind::Instant).map(Self::Instant),
"integer" => o.prim(d, key, Kind::Integer).map(Self::Integer),
"markdown" => o.prim(d, key, Kind::Markdown).map(Self::Markdown),
"oid" => o.prim(d, key, Kind::Oid).map(Self::Oid),
"positiveInt" => o.prim(d, key, Kind::PositiveInt).map(Self::PositiveInt),
"string" => o.prim(d, key, Kind::String).map(Self::String),
"time" => o.prim(d, key, Kind::Time).map(Self::Time),
"unsignedInt" => o.prim(d, key, Kind::UnsignedInt).map(Self::UnsignedInt),
"uri" => o.prim(d, key, Kind::Uri).map(Self::Uri),
"url" => o.prim(d, key, Kind::Url).map(Self::Url),
"uuid" => o.prim(d, key, Kind::Uuid).map(Self::Uuid),
"Address" => o.one(d, key).map(Self::Address),
"Age" => o.one(d, key).map(Self::Age),
"Annotation" => o.one(d, key).map(Self::Annotation),
"Attachment" => o.one(d, key).map(Self::Attachment),
"CodeableConcept" => o.one(d, key).map(Self::CodeableConcept),
"Coding" => o.one(d, key).map(Self::Coding),
"ContactPoint" => o.one(d, key).map(Self::ContactPoint),
"Count" => o.one(d, key).map(Self::Count),
"Distance" => o.one(d, key).map(Self::Distance),
"Duration" => o.one(d, key).map(Self::Duration),
"HumanName" => o.one(d, key).map(Self::HumanName),
"Identifier" => o.one(d, key).map(Self::Identifier),
"Money" => o.one(d, key).map(Self::Money),
"Period" => o.one(d, key).map(Self::Period),
"Quantity" => o.one(d, key).map(Self::Quantity),
"Range" => o.one(d, key).map(Self::Range),
"Ratio" => o.one(d, key).map(Self::Ratio),
"Reference" => o.one(d, key).map(Self::Reference),
"SampledData" => o.one(d, key).map(Self::SampledData),
"Signature" => o.one(d, key).map(Self::Signature),
"Timing" => o.one(d, key).map(Self::Timing),
"ContactDetail" => o.one(d, key).map(Self::ContactDetail),
"Contributor" => o.one(d, key).map(Self::Contributor),
"DataRequirement" => o.one(d, key).map(Self::DataRequirement),
"Expression" => o.one(d, key).map(Self::Expression),
"ParameterDefinition" => o.one(d, key).map(Self::ParameterDefinition),
"RelatedArtifact" => o.one(d, key).map(Self::RelatedArtifact),
"TriggerDefinition" => o.one(d, key).map(Self::TriggerDefinition),
"UsageContext" => o.one(d, key).map(Self::UsageContext),
"Dosage" => o.one(d, key).map(Self::Dosage),
"Meta" => o.one(d, key).map(Self::Meta),
_ => None,
}
}
fn encode_into(&self, base: &str, w: &mut ObjWriter) {
match self {
Self::Base64Binary(v) => w.prim_value(&choice_key(base, "base64Binary"), v),
Self::Boolean(v) => w.prim_value(&choice_key(base, "boolean"), v),
Self::Canonical(v) => w.prim_value(&choice_key(base, "canonical"), v),
Self::Code(v) => w.prim_value(&choice_key(base, "code"), v),
Self::Date(v) => w.prim_value(&choice_key(base, "date"), v),
Self::DateTime(v) => w.prim_value(&choice_key(base, "dateTime"), v),
Self::Decimal(v) => w.prim_value(&choice_key(base, "decimal"), v),
Self::Id(v) => w.prim_value(&choice_key(base, "id"), v),
Self::Instant(v) => w.prim_value(&choice_key(base, "instant"), v),
Self::Integer(v) => w.prim_value(&choice_key(base, "integer"), v),
Self::Markdown(v) => w.prim_value(&choice_key(base, "markdown"), v),
Self::Oid(v) => w.prim_value(&choice_key(base, "oid"), v),
Self::PositiveInt(v) => w.prim_value(&choice_key(base, "positiveInt"), v),
Self::String(v) => w.prim_value(&choice_key(base, "string"), v),
Self::Time(v) => w.prim_value(&choice_key(base, "time"), v),
Self::UnsignedInt(v) => w.prim_value(&choice_key(base, "unsignedInt"), v),
Self::Uri(v) => w.prim_value(&choice_key(base, "uri"), v),
Self::Url(v) => w.prim_value(&choice_key(base, "url"), v),
Self::Uuid(v) => w.prim_value(&choice_key(base, "uuid"), v),
Self::Address(v) => w.value(&choice_key(base, "Address"), v),
Self::Age(v) => w.value(&choice_key(base, "Age"), v),
Self::Annotation(v) => w.value(&choice_key(base, "Annotation"), v),
Self::Attachment(v) => w.value(&choice_key(base, "Attachment"), v),
Self::CodeableConcept(v) => w.value(&choice_key(base, "CodeableConcept"), v),
Self::Coding(v) => w.value(&choice_key(base, "Coding"), v),
Self::ContactPoint(v) => w.value(&choice_key(base, "ContactPoint"), v),
Self::Count(v) => w.value(&choice_key(base, "Count"), v),
Self::Distance(v) => w.value(&choice_key(base, "Distance"), v),
Self::Duration(v) => w.value(&choice_key(base, "Duration"), v),
Self::HumanName(v) => w.value(&choice_key(base, "HumanName"), v),
Self::Identifier(v) => w.value(&choice_key(base, "Identifier"), v),
Self::Money(v) => w.value(&choice_key(base, "Money"), v),
Self::Period(v) => w.value(&choice_key(base, "Period"), v),
Self::Quantity(v) => w.value(&choice_key(base, "Quantity"), v),
Self::Range(v) => w.value(&choice_key(base, "Range"), v),
Self::Ratio(v) => w.value(&choice_key(base, "Ratio"), v),
Self::Reference(v) => w.value(&choice_key(base, "Reference"), v),
Self::SampledData(v) => w.value(&choice_key(base, "SampledData"), v),
Self::Signature(v) => w.value(&choice_key(base, "Signature"), v),
Self::Timing(v) => w.value(&choice_key(base, "Timing"), v),
Self::ContactDetail(v) => w.value(&choice_key(base, "ContactDetail"), v),
Self::Contributor(v) => w.value(&choice_key(base, "Contributor"), v),
Self::DataRequirement(v) => w.value(&choice_key(base, "DataRequirement"), v),
Self::Expression(v) => w.value(&choice_key(base, "Expression"), v),
Self::ParameterDefinition(v) => w.value(&choice_key(base, "ParameterDefinition"), v),
Self::RelatedArtifact(v) => w.value(&choice_key(base, "RelatedArtifact"), v),
Self::TriggerDefinition(v) => w.value(&choice_key(base, "TriggerDefinition"), v),
Self::UsageContext(v) => w.value(&choice_key(base, "UsageContext"), v),
Self::Dosage(v) => w.value(&choice_key(base, "Dosage"), v),
Self::Meta(v) => w.value(&choice_key(base, "Meta"), v),
}
}
}
#[cfg(feature = "base")]
#[derive(Debug, Clone, PartialEq)]
pub enum TaskOutputValue {
Base64Binary(Primitive<String>),
Boolean(Primitive<bool>),
Canonical(Primitive<String>),
Code(Primitive<String>),
Date(Primitive<String>),
DateTime(Primitive<String>),
Decimal(Primitive<Decimal>),
Id(Primitive<String>),
Instant(Primitive<String>),
Integer(Primitive<i32>),
Markdown(Primitive<String>),
Oid(Primitive<String>),
PositiveInt(Primitive<i32>),
String(Primitive<String>),
Time(Primitive<String>),
UnsignedInt(Primitive<i32>),
Uri(Primitive<String>),
Url(Primitive<String>),
Uuid(Primitive<String>),
Address(Address),
Age(Age),
Annotation(Annotation),
Attachment(Attachment),
CodeableConcept(CodeableConcept),
Coding(Coding),
ContactPoint(ContactPoint),
Count(Count),
Distance(Distance),
Duration(Duration),
HumanName(HumanName),
Identifier(Identifier),
Money(Money),
Period(Period),
Quantity(Quantity),
Range(Range),
Ratio(Ratio),
Reference(Reference),
SampledData(SampledData),
Signature(Signature),
Timing(Timing),
ContactDetail(ContactDetail),
Contributor(Contributor),
DataRequirement(DataRequirement),
Expression(Expression),
ParameterDefinition(ParameterDefinition),
RelatedArtifact(RelatedArtifact),
TriggerDefinition(TriggerDefinition),
UsageContext(UsageContext),
Dosage(Dosage),
Meta(Meta),
}
#[cfg(feature = "base")]
impl Choice for TaskOutputValue {
const TYPES: &'static [&'static str] = &[
"base64Binary",
"boolean",
"canonical",
"code",
"date",
"dateTime",
"decimal",
"id",
"instant",
"integer",
"markdown",
"oid",
"positiveInt",
"string",
"time",
"unsignedInt",
"uri",
"url",
"uuid",
"Address",
"Age",
"Annotation",
"Attachment",
"CodeableConcept",
"Coding",
"ContactPoint",
"Count",
"Distance",
"Duration",
"HumanName",
"Identifier",
"Money",
"Period",
"Quantity",
"Range",
"Ratio",
"Reference",
"SampledData",
"Signature",
"Timing",
"ContactDetail",
"Contributor",
"DataRequirement",
"Expression",
"ParameterDefinition",
"RelatedArtifact",
"TriggerDefinition",
"UsageContext",
"Dosage",
"Meta",
];
fn decode_as(code: &str, key: &str, o: &mut Obj<'_>, d: &mut Decoder) -> Option<Self> {
match code {
"base64Binary" => o.prim(d, key, Kind::Base64Binary).map(Self::Base64Binary),
"boolean" => o.prim(d, key, Kind::Boolean).map(Self::Boolean),
"canonical" => o.prim(d, key, Kind::Canonical).map(Self::Canonical),
"code" => o.prim(d, key, Kind::Code).map(Self::Code),
"date" => o.prim(d, key, Kind::Date).map(Self::Date),
"dateTime" => o.prim(d, key, Kind::DateTime).map(Self::DateTime),
"decimal" => o.prim(d, key, Kind::Decimal).map(Self::Decimal),
"id" => o.prim(d, key, Kind::Id).map(Self::Id),
"instant" => o.prim(d, key, Kind::Instant).map(Self::Instant),
"integer" => o.prim(d, key, Kind::Integer).map(Self::Integer),
"markdown" => o.prim(d, key, Kind::Markdown).map(Self::Markdown),
"oid" => o.prim(d, key, Kind::Oid).map(Self::Oid),
"positiveInt" => o.prim(d, key, Kind::PositiveInt).map(Self::PositiveInt),
"string" => o.prim(d, key, Kind::String).map(Self::String),
"time" => o.prim(d, key, Kind::Time).map(Self::Time),
"unsignedInt" => o.prim(d, key, Kind::UnsignedInt).map(Self::UnsignedInt),
"uri" => o.prim(d, key, Kind::Uri).map(Self::Uri),
"url" => o.prim(d, key, Kind::Url).map(Self::Url),
"uuid" => o.prim(d, key, Kind::Uuid).map(Self::Uuid),
"Address" => o.one(d, key).map(Self::Address),
"Age" => o.one(d, key).map(Self::Age),
"Annotation" => o.one(d, key).map(Self::Annotation),
"Attachment" => o.one(d, key).map(Self::Attachment),
"CodeableConcept" => o.one(d, key).map(Self::CodeableConcept),
"Coding" => o.one(d, key).map(Self::Coding),
"ContactPoint" => o.one(d, key).map(Self::ContactPoint),
"Count" => o.one(d, key).map(Self::Count),
"Distance" => o.one(d, key).map(Self::Distance),
"Duration" => o.one(d, key).map(Self::Duration),
"HumanName" => o.one(d, key).map(Self::HumanName),
"Identifier" => o.one(d, key).map(Self::Identifier),
"Money" => o.one(d, key).map(Self::Money),
"Period" => o.one(d, key).map(Self::Period),
"Quantity" => o.one(d, key).map(Self::Quantity),
"Range" => o.one(d, key).map(Self::Range),
"Ratio" => o.one(d, key).map(Self::Ratio),
"Reference" => o.one(d, key).map(Self::Reference),
"SampledData" => o.one(d, key).map(Self::SampledData),
"Signature" => o.one(d, key).map(Self::Signature),
"Timing" => o.one(d, key).map(Self::Timing),
"ContactDetail" => o.one(d, key).map(Self::ContactDetail),
"Contributor" => o.one(d, key).map(Self::Contributor),
"DataRequirement" => o.one(d, key).map(Self::DataRequirement),
"Expression" => o.one(d, key).map(Self::Expression),
"ParameterDefinition" => o.one(d, key).map(Self::ParameterDefinition),
"RelatedArtifact" => o.one(d, key).map(Self::RelatedArtifact),
"TriggerDefinition" => o.one(d, key).map(Self::TriggerDefinition),
"UsageContext" => o.one(d, key).map(Self::UsageContext),
"Dosage" => o.one(d, key).map(Self::Dosage),
"Meta" => o.one(d, key).map(Self::Meta),
_ => None,
}
}
fn encode_into(&self, base: &str, w: &mut ObjWriter) {
match self {
Self::Base64Binary(v) => w.prim_value(&choice_key(base, "base64Binary"), v),
Self::Boolean(v) => w.prim_value(&choice_key(base, "boolean"), v),
Self::Canonical(v) => w.prim_value(&choice_key(base, "canonical"), v),
Self::Code(v) => w.prim_value(&choice_key(base, "code"), v),
Self::Date(v) => w.prim_value(&choice_key(base, "date"), v),
Self::DateTime(v) => w.prim_value(&choice_key(base, "dateTime"), v),
Self::Decimal(v) => w.prim_value(&choice_key(base, "decimal"), v),
Self::Id(v) => w.prim_value(&choice_key(base, "id"), v),
Self::Instant(v) => w.prim_value(&choice_key(base, "instant"), v),
Self::Integer(v) => w.prim_value(&choice_key(base, "integer"), v),
Self::Markdown(v) => w.prim_value(&choice_key(base, "markdown"), v),
Self::Oid(v) => w.prim_value(&choice_key(base, "oid"), v),
Self::PositiveInt(v) => w.prim_value(&choice_key(base, "positiveInt"), v),
Self::String(v) => w.prim_value(&choice_key(base, "string"), v),
Self::Time(v) => w.prim_value(&choice_key(base, "time"), v),
Self::UnsignedInt(v) => w.prim_value(&choice_key(base, "unsignedInt"), v),
Self::Uri(v) => w.prim_value(&choice_key(base, "uri"), v),
Self::Url(v) => w.prim_value(&choice_key(base, "url"), v),
Self::Uuid(v) => w.prim_value(&choice_key(base, "uuid"), v),
Self::Address(v) => w.value(&choice_key(base, "Address"), v),
Self::Age(v) => w.value(&choice_key(base, "Age"), v),
Self::Annotation(v) => w.value(&choice_key(base, "Annotation"), v),
Self::Attachment(v) => w.value(&choice_key(base, "Attachment"), v),
Self::CodeableConcept(v) => w.value(&choice_key(base, "CodeableConcept"), v),
Self::Coding(v) => w.value(&choice_key(base, "Coding"), v),
Self::ContactPoint(v) => w.value(&choice_key(base, "ContactPoint"), v),
Self::Count(v) => w.value(&choice_key(base, "Count"), v),
Self::Distance(v) => w.value(&choice_key(base, "Distance"), v),
Self::Duration(v) => w.value(&choice_key(base, "Duration"), v),
Self::HumanName(v) => w.value(&choice_key(base, "HumanName"), v),
Self::Identifier(v) => w.value(&choice_key(base, "Identifier"), v),
Self::Money(v) => w.value(&choice_key(base, "Money"), v),
Self::Period(v) => w.value(&choice_key(base, "Period"), v),
Self::Quantity(v) => w.value(&choice_key(base, "Quantity"), v),
Self::Range(v) => w.value(&choice_key(base, "Range"), v),
Self::Ratio(v) => w.value(&choice_key(base, "Ratio"), v),
Self::Reference(v) => w.value(&choice_key(base, "Reference"), v),
Self::SampledData(v) => w.value(&choice_key(base, "SampledData"), v),
Self::Signature(v) => w.value(&choice_key(base, "Signature"), v),
Self::Timing(v) => w.value(&choice_key(base, "Timing"), v),
Self::ContactDetail(v) => w.value(&choice_key(base, "ContactDetail"), v),
Self::Contributor(v) => w.value(&choice_key(base, "Contributor"), v),
Self::DataRequirement(v) => w.value(&choice_key(base, "DataRequirement"), v),
Self::Expression(v) => w.value(&choice_key(base, "Expression"), v),
Self::ParameterDefinition(v) => w.value(&choice_key(base, "ParameterDefinition"), v),
Self::RelatedArtifact(v) => w.value(&choice_key(base, "RelatedArtifact"), v),
Self::TriggerDefinition(v) => w.value(&choice_key(base, "TriggerDefinition"), v),
Self::UsageContext(v) => w.value(&choice_key(base, "UsageContext"), v),
Self::Dosage(v) => w.value(&choice_key(base, "Dosage"), v),
Self::Meta(v) => w.value(&choice_key(base, "Meta"), v),
}
}
}