#![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 = "foundation")]
#[derive(Debug, Clone, PartialEq, Default)]
pub struct StructureMap {
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 url: Option<Primitive<String>>,
pub identifier: Vec<Identifier>,
pub version: Option<Primitive<String>>,
pub name: Option<Primitive<String>>,
pub title: Option<Primitive<String>>,
pub status: Option<Primitive<String>>,
pub experimental: Option<Primitive<bool>>,
pub date: Option<Primitive<String>>,
pub publisher: Option<Primitive<String>>,
pub contact: Vec<ContactDetail>,
pub description: Option<Primitive<String>>,
pub use_context: Vec<UsageContext>,
pub jurisdiction: Vec<CodeableConcept>,
pub purpose: Option<Primitive<String>>,
pub copyright: Option<Primitive<String>>,
pub structure: Vec<StructureMapStructure>,
pub import: Vec<Primitive<String>>,
pub group: Vec<StructureMapGroup>,
}
#[cfg(feature = "foundation")]
impl FhirJson for StructureMap {
const TYPE_NAME: &'static str = "StructureMap";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
resource_type(&mut o, d, "StructureMap");
let r = StructureMap {
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"),
url: o.prim(d, "url", Kind::Uri),
identifier: o.list(d, "identifier"),
version: o.prim(d, "version", Kind::String),
name: o.prim(d, "name", Kind::String),
title: o.prim(d, "title", Kind::String),
status: o.prim(d, "status", Kind::Code),
experimental: o.prim(d, "experimental", Kind::Boolean),
date: o.prim(d, "date", Kind::DateTime),
publisher: o.prim(d, "publisher", Kind::String),
contact: o.list(d, "contact"),
description: o.prim(d, "description", Kind::Markdown),
use_context: o.list(d, "useContext"),
jurisdiction: o.list(d, "jurisdiction"),
purpose: o.prim(d, "purpose", Kind::Markdown),
copyright: o.prim(d, "copyright", Kind::Markdown),
structure: o.list(d, "structure"),
import: o.prim_list(d, "import", Kind::Canonical),
group: o.list(d, "group"),
};
required(d, "url", &r.url);
required(d, "name", &r.name);
required(d, "status", &r.status);
required_list(d, "group", &r.group, 1);
o.finish(d);
Some(r)
}
fn encode(&self) -> Json {
let mut w = ObjWriter::new();
w.raw("resourceType", Json::String("StructureMap".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.prim("url", &self.url);
w.list("identifier", &self.identifier);
w.prim("version", &self.version);
w.prim("name", &self.name);
w.prim("title", &self.title);
w.prim("status", &self.status);
w.prim("experimental", &self.experimental);
w.prim("date", &self.date);
w.prim("publisher", &self.publisher);
w.list("contact", &self.contact);
w.prim("description", &self.description);
w.list("useContext", &self.use_context);
w.list("jurisdiction", &self.jurisdiction);
w.prim("purpose", &self.purpose);
w.prim("copyright", &self.copyright);
w.list("structure", &self.structure);
w.prim_list("import", &self.import);
w.list("group", &self.group);
w.finish()
}
}
#[cfg(feature = "foundation")]
#[derive(Debug, Clone, PartialEq, Default)]
pub struct StructureMapStructure {
pub id: Option<String>,
pub extension: Vec<Extension>,
pub modifier_extension: Vec<Extension>,
pub url: Option<Primitive<String>>,
pub mode: Option<Primitive<String>>,
pub alias: Option<Primitive<String>>,
pub documentation: Option<Primitive<String>>,
}
#[cfg(feature = "foundation")]
impl FhirJson for StructureMapStructure {
const TYPE_NAME: &'static str = "StructureMapStructure";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
let r = StructureMapStructure {
id: o.string(d, "id"),
extension: o.list(d, "extension"),
modifier_extension: o.list(d, "modifierExtension"),
url: o.prim(d, "url", Kind::Canonical),
mode: o.prim(d, "mode", Kind::Code),
alias: o.prim(d, "alias", Kind::String),
documentation: o.prim(d, "documentation", Kind::String),
};
required(d, "url", &r.url);
required(d, "mode", &r.mode);
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("url", &self.url);
w.prim("mode", &self.mode);
w.prim("alias", &self.alias);
w.prim("documentation", &self.documentation);
w.finish()
}
}
#[cfg(feature = "foundation")]
#[derive(Debug, Clone, PartialEq, Default)]
pub struct StructureMapGroup {
pub id: Option<String>,
pub extension: Vec<Extension>,
pub modifier_extension: Vec<Extension>,
pub name: Option<Primitive<String>>,
pub extends: Option<Primitive<String>>,
pub type_mode: Option<Primitive<String>>,
pub documentation: Option<Primitive<String>>,
pub input: Vec<StructureMapGroupInput>,
pub rule: Vec<StructureMapGroupRule>,
}
#[cfg(feature = "foundation")]
impl FhirJson for StructureMapGroup {
const TYPE_NAME: &'static str = "StructureMapGroup";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
let r = StructureMapGroup {
id: o.string(d, "id"),
extension: o.list(d, "extension"),
modifier_extension: o.list(d, "modifierExtension"),
name: o.prim(d, "name", Kind::Id),
extends: o.prim(d, "extends", Kind::Id),
type_mode: o.prim(d, "typeMode", Kind::Code),
documentation: o.prim(d, "documentation", Kind::String),
input: o.list(d, "input"),
rule: o.list(d, "rule"),
};
required(d, "name", &r.name);
required(d, "typeMode", &r.type_mode);
required_list(d, "input", &r.input, 1);
required_list(d, "rule", &r.rule, 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.prim("name", &self.name);
w.prim("extends", &self.extends);
w.prim("typeMode", &self.type_mode);
w.prim("documentation", &self.documentation);
w.list("input", &self.input);
w.list("rule", &self.rule);
w.finish()
}
}
#[cfg(feature = "foundation")]
#[derive(Debug, Clone, PartialEq, Default)]
pub struct StructureMapGroupInput {
pub id: Option<String>,
pub extension: Vec<Extension>,
pub modifier_extension: Vec<Extension>,
pub name: Option<Primitive<String>>,
pub type_: Option<Primitive<String>>,
pub mode: Option<Primitive<String>>,
pub documentation: Option<Primitive<String>>,
}
#[cfg(feature = "foundation")]
impl FhirJson for StructureMapGroupInput {
const TYPE_NAME: &'static str = "StructureMapGroupInput";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
let r = StructureMapGroupInput {
id: o.string(d, "id"),
extension: o.list(d, "extension"),
modifier_extension: o.list(d, "modifierExtension"),
name: o.prim(d, "name", Kind::Id),
type_: o.prim(d, "type", Kind::String),
mode: o.prim(d, "mode", Kind::Code),
documentation: o.prim(d, "documentation", Kind::String),
};
required(d, "name", &r.name);
required(d, "mode", &r.mode);
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("name", &self.name);
w.prim("type", &self.type_);
w.prim("mode", &self.mode);
w.prim("documentation", &self.documentation);
w.finish()
}
}
#[cfg(feature = "foundation")]
#[derive(Debug, Clone, PartialEq, Default)]
pub struct StructureMapGroupRule {
pub id: Option<String>,
pub extension: Vec<Extension>,
pub modifier_extension: Vec<Extension>,
pub name: Option<Primitive<String>>,
pub source: Vec<StructureMapGroupRuleSource>,
pub target: Vec<StructureMapGroupRuleTarget>,
pub rule: Vec<StructureMapGroupRule>,
pub dependent: Vec<StructureMapGroupRuleDependent>,
pub documentation: Option<Primitive<String>>,
}
#[cfg(feature = "foundation")]
impl FhirJson for StructureMapGroupRule {
const TYPE_NAME: &'static str = "StructureMapGroupRule";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
let r = StructureMapGroupRule {
id: o.string(d, "id"),
extension: o.list(d, "extension"),
modifier_extension: o.list(d, "modifierExtension"),
name: o.prim(d, "name", Kind::Id),
source: o.list(d, "source"),
target: o.list(d, "target"),
rule: o.list(d, "rule"),
dependent: o.list(d, "dependent"),
documentation: o.prim(d, "documentation", Kind::String),
};
required(d, "name", &r.name);
required_list(d, "source", &r.source, 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.prim("name", &self.name);
w.list("source", &self.source);
w.list("target", &self.target);
w.list("rule", &self.rule);
w.list("dependent", &self.dependent);
w.prim("documentation", &self.documentation);
w.finish()
}
}
#[cfg(feature = "foundation")]
#[derive(Debug, Clone, PartialEq, Default)]
pub struct StructureMapGroupRuleSource {
pub id: Option<String>,
pub extension: Vec<Extension>,
pub modifier_extension: Vec<Extension>,
pub context: Option<Primitive<String>>,
pub min: Option<Primitive<i32>>,
pub max: Option<Primitive<String>>,
pub type_: Option<Primitive<String>>,
pub default_value: Option<StructureMapGroupRuleSourceDefaultValue>,
pub element: Option<Primitive<String>>,
pub list_mode: Option<Primitive<String>>,
pub variable: Option<Primitive<String>>,
pub condition: Option<Primitive<String>>,
pub check: Option<Primitive<String>>,
pub log_message: Option<Primitive<String>>,
}
#[cfg(feature = "foundation")]
impl FhirJson for StructureMapGroupRuleSource {
const TYPE_NAME: &'static str = "StructureMapGroupRuleSource";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
let r = StructureMapGroupRuleSource {
id: o.string(d, "id"),
extension: o.list(d, "extension"),
modifier_extension: o.list(d, "modifierExtension"),
context: o.prim(d, "context", Kind::Id),
min: o.prim(d, "min", Kind::Integer),
max: o.prim(d, "max", Kind::String),
type_: o.prim(d, "type", Kind::String),
default_value: o.choice(d, "defaultValue"),
element: o.prim(d, "element", Kind::String),
list_mode: o.prim(d, "listMode", Kind::Code),
variable: o.prim(d, "variable", Kind::Id),
condition: o.prim(d, "condition", Kind::String),
check: o.prim(d, "check", Kind::String),
log_message: o.prim(d, "logMessage", Kind::String),
};
required(d, "context", &r.context);
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("context", &self.context);
w.prim("min", &self.min);
w.prim("max", &self.max);
w.prim("type", &self.type_);
w.choice("defaultValue", &self.default_value);
w.prim("element", &self.element);
w.prim("listMode", &self.list_mode);
w.prim("variable", &self.variable);
w.prim("condition", &self.condition);
w.prim("check", &self.check);
w.prim("logMessage", &self.log_message);
w.finish()
}
}
#[cfg(feature = "foundation")]
#[derive(Debug, Clone, PartialEq, Default)]
pub struct StructureMapGroupRuleTarget {
pub id: Option<String>,
pub extension: Vec<Extension>,
pub modifier_extension: Vec<Extension>,
pub context: Option<Primitive<String>>,
pub context_type: Option<Primitive<String>>,
pub element: Option<Primitive<String>>,
pub variable: Option<Primitive<String>>,
pub list_mode: Vec<Primitive<String>>,
pub list_rule_id: Option<Primitive<String>>,
pub transform: Option<Primitive<String>>,
pub parameter: Vec<StructureMapGroupRuleTargetParameter>,
}
#[cfg(feature = "foundation")]
impl FhirJson for StructureMapGroupRuleTarget {
const TYPE_NAME: &'static str = "StructureMapGroupRuleTarget";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
let r = StructureMapGroupRuleTarget {
id: o.string(d, "id"),
extension: o.list(d, "extension"),
modifier_extension: o.list(d, "modifierExtension"),
context: o.prim(d, "context", Kind::Id),
context_type: o.prim(d, "contextType", Kind::Code),
element: o.prim(d, "element", Kind::String),
variable: o.prim(d, "variable", Kind::Id),
list_mode: o.prim_list(d, "listMode", Kind::Code),
list_rule_id: o.prim(d, "listRuleId", Kind::Id),
transform: o.prim(d, "transform", Kind::Code),
parameter: o.list(d, "parameter"),
};
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("context", &self.context);
w.prim("contextType", &self.context_type);
w.prim("element", &self.element);
w.prim("variable", &self.variable);
w.prim_list("listMode", &self.list_mode);
w.prim("listRuleId", &self.list_rule_id);
w.prim("transform", &self.transform);
w.list("parameter", &self.parameter);
w.finish()
}
}
#[cfg(feature = "foundation")]
#[derive(Debug, Clone, PartialEq, Default)]
pub struct StructureMapGroupRuleTargetParameter {
pub id: Option<String>,
pub extension: Vec<Extension>,
pub modifier_extension: Vec<Extension>,
pub value: Option<StructureMapGroupRuleTargetParameterValue>,
}
#[cfg(feature = "foundation")]
impl FhirJson for StructureMapGroupRuleTargetParameter {
const TYPE_NAME: &'static str = "StructureMapGroupRuleTargetParameter";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
let r = StructureMapGroupRuleTargetParameter {
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 = "foundation")]
#[derive(Debug, Clone, PartialEq, Default)]
pub struct StructureMapGroupRuleDependent {
pub id: Option<String>,
pub extension: Vec<Extension>,
pub modifier_extension: Vec<Extension>,
pub name: Option<Primitive<String>>,
pub variable: Vec<Primitive<String>>,
}
#[cfg(feature = "foundation")]
impl FhirJson for StructureMapGroupRuleDependent {
const TYPE_NAME: &'static str = "StructureMapGroupRuleDependent";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
let r = StructureMapGroupRuleDependent {
id: o.string(d, "id"),
extension: o.list(d, "extension"),
modifier_extension: o.list(d, "modifierExtension"),
name: o.prim(d, "name", Kind::Id),
variable: o.prim_list(d, "variable", Kind::String),
};
required(d, "name", &r.name);
required_list(d, "variable", &r.variable, 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.prim("name", &self.name);
w.prim_list("variable", &self.variable);
w.finish()
}
}
#[cfg(feature = "foundation")]
#[derive(Debug, Clone, PartialEq)]
pub enum StructureMapGroupRuleSourceDefaultValue {
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 = "foundation")]
impl Choice for StructureMapGroupRuleSourceDefaultValue {
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 = "foundation")]
#[derive(Debug, Clone, PartialEq)]
pub enum StructureMapGroupRuleTargetParameterValue {
Id(Primitive<String>),
String(Primitive<String>),
Boolean(Primitive<bool>),
Integer(Primitive<i32>),
Decimal(Primitive<Decimal>),
}
#[cfg(feature = "foundation")]
impl Choice for StructureMapGroupRuleTargetParameterValue {
const TYPES: &'static [&'static str] = &["id", "string", "boolean", "integer", "decimal"];
fn decode_as(code: &str, key: &str, o: &mut Obj<'_>, d: &mut Decoder) -> Option<Self> {
match code {
"id" => o.prim(d, key, Kind::Id).map(Self::Id),
"string" => o.prim(d, key, Kind::String).map(Self::String),
"boolean" => o.prim(d, key, Kind::Boolean).map(Self::Boolean),
"integer" => o.prim(d, key, Kind::Integer).map(Self::Integer),
"decimal" => o.prim(d, key, Kind::Decimal).map(Self::Decimal),
_ => None,
}
}
fn encode_into(&self, base: &str, w: &mut ObjWriter) {
match self {
Self::Id(v) => w.prim_value(&choice_key(base, "id"), v),
Self::String(v) => w.prim_value(&choice_key(base, "string"), v),
Self::Boolean(v) => w.prim_value(&choice_key(base, "boolean"), v),
Self::Integer(v) => w.prim_value(&choice_key(base, "integer"), v),
Self::Decimal(v) => w.prim_value(&choice_key(base, "decimal"), v),
}
}
}