1#[derive(Debug, Clone, Default, PartialEq, Eq)]
13pub struct Parameters {
14 pub id: Option<std::string::String>,
19 pub meta: Option<super::meta::Meta>,
25 pub implicit_rules: Option<super::primitives::Uri>,
32 pub language: Option<super::primitives::Code>,
36 pub parameter: Vec<ParametersParameter>,
40}
41
42impl super::super::codec::Json for Parameters {
43 fn to_json(&self) -> Result<super::super::codec::Object, super::super::codec::EncodeError> {
44 let mut object = super::super::codec::Object::new();
45 object.insert(
46 std::string::String::from("resourceType"),
47 super::super::codec::Value::String(std::string::String::from("Parameters")),
48 );
49 if let Some(v) = &self.id {
50 object.insert(
51 std::string::String::from("id"),
52 super::super::codec::Value::String(v.clone()),
53 );
54 }
55 if let Some(item) = &self.meta {
56 object.insert(
57 std::string::String::from("meta"),
58 super::super::codec::Value::Object(super::super::codec::Json::to_json(item)?),
59 );
60 }
61 if let Some(item) = &self.implicit_rules {
62 if let Some(v) = super::super::codec::Primitive::value_json(item)? {
63 object.insert(std::string::String::from("implicitRules"), v);
64 }
65 if let Some(e) = super::super::codec::Primitive::element_json(item)? {
66 object.insert(std::string::String::from("_implicitRules"), e);
67 }
68 }
69 if let Some(item) = &self.language {
70 if let Some(v) = super::super::codec::Primitive::value_json(item)? {
71 object.insert(std::string::String::from("language"), v);
72 }
73 if let Some(e) = super::super::codec::Primitive::element_json(item)? {
74 object.insert(std::string::String::from("_language"), e);
75 }
76 }
77 if !self.parameter.is_empty() {
78 let mut items = Vec::with_capacity(self.parameter.len());
79 for item in &self.parameter {
80 items.push(super::super::codec::Value::Object(
81 super::super::codec::Json::to_json(item)?,
82 ));
83 }
84 object.insert(
85 std::string::String::from("parameter"),
86 super::super::codec::Value::Array(items),
87 );
88 }
89 Ok(object)
90 }
91
92 fn from_json(
93 object: &super::super::codec::Object,
94 path: &mut super::super::codec::Path,
95 ) -> Result<Self, super::super::codec::DecodeError> {
96 let mut raw_id: Option<&super::super::codec::Value> = None;
97 let mut raw_meta: Option<&super::super::codec::Value> = None;
98 let mut raw_implicit_rules: Option<&super::super::codec::Value> = None;
99 let mut raw_implicit_rules_element: Option<&super::super::codec::Value> = None;
100 let mut raw_language: Option<&super::super::codec::Value> = None;
101 let mut raw_language_element: Option<&super::super::codec::Value> = None;
102 let mut raw_parameter: Option<&super::super::codec::Value> = None;
103 for (key, value) in object {
104 match key.as_str() {
105 "resourceType" => {
106 if value.as_str() != Some("Parameters") {
107 return Err(path.error(super::super::codec::DecodeErrorKind::ResourceType));
108 }
109 }
110 "id" => {
111 raw_id = Some(value);
112 }
113 "meta" => {
114 raw_meta = Some(value);
115 }
116 "implicitRules" => {
117 raw_implicit_rules = Some(value);
118 }
119 "_implicitRules" => {
120 raw_implicit_rules_element = Some(value);
121 }
122 "language" => {
123 raw_language = Some(value);
124 }
125 "_language" => {
126 raw_language_element = Some(value);
127 }
128 "parameter" => {
129 raw_parameter = Some(value);
130 }
131 other => {
132 return path.with(other, |path| {
133 Err(path.error(super::super::codec::DecodeErrorKind::UnknownProperty))
134 });
135 }
136 }
137 }
138 let field_id = raw_id
139 .map(|value| {
140 path.with("id", |path| {
141 let value = super::super::codec::expect_single(value, path)?;
142 super::primitives::checked_id(
143 super::super::codec::expect_string(value, path)?,
144 path,
145 )
146 })
147 })
148 .transpose()?;
149 let field_meta = raw_meta
150 .map(|value| {
151 path.with("meta", |path| {
152 super::super::codec::Json::from_json(
153 super::super::codec::expect_object(
154 super::super::codec::expect_single(value, path)?,
155 path,
156 )?,
157 path,
158 )
159 })
160 })
161 .transpose()?;
162 let field_implicit_rules = match (raw_implicit_rules, raw_implicit_rules_element) {
163 (None, None) => None,
164 (value, element) => Some(path.with("implicitRules", |path| {
165 super::super::codec::Primitive::from_json_parts(value, element, path)
166 })?),
167 };
168 let field_language = match (raw_language, raw_language_element) {
169 (None, None) => None,
170 (value, element) => Some(path.with("language", |path| {
171 super::super::codec::Primitive::from_json_parts(value, element, path)
172 })?),
173 };
174 let mut field_parameter = Vec::new();
175 if let Some(raw) = raw_parameter {
176 for (index, value) in path
177 .with("parameter", |path| {
178 super::super::codec::expect_array(raw, path)
179 })?
180 .iter()
181 .enumerate()
182 {
183 field_parameter.push(path.with_index("parameter", index, |path| {
184 super::super::codec::Json::from_json(
185 super::super::codec::expect_object(value, path)?,
186 path,
187 )
188 })?);
189 }
190 }
191 Ok(Self {
192 id: field_id,
193 meta: field_meta,
194 implicit_rules: field_implicit_rules,
195 language: field_language,
196 parameter: field_parameter,
197 })
198 }
199}
200
201impl serde::Serialize for Parameters {
202 fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
203 let mut map = serde::Serializer::serialize_map(serializer, None)?;
204 if let Some(item) = &self.implicit_rules {
205 super::super::codec::element_entry(&mut map, "_implicitRules", item)?;
206 }
207 if let Some(item) = &self.language {
208 super::super::codec::element_entry(&mut map, "_language", item)?;
209 }
210 if let Some(v) = &self.id {
211 serde::ser::SerializeMap::serialize_entry(&mut map, "id", v)?;
212 }
213 if let Some(item) = &self.implicit_rules {
214 super::super::codec::value_entry(&mut map, "implicitRules", item)?;
215 }
216 if let Some(item) = &self.language {
217 super::super::codec::value_entry(&mut map, "language", item)?;
218 }
219 if let Some(item) = &self.meta {
220 serde::ser::SerializeMap::serialize_entry(&mut map, "meta", item)?;
221 }
222 if !self.parameter.is_empty() {
223 serde::ser::SerializeMap::serialize_entry(&mut map, "parameter", &self.parameter)?;
224 }
225 serde::ser::SerializeMap::serialize_entry(&mut map, "resourceType", "Parameters")?;
226 serde::ser::SerializeMap::end(map)
227 }
228}
229
230impl<'de> serde::Deserialize<'de> for Parameters {
231 fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
232 let value = <super::super::codec::Value as serde::Deserialize>::deserialize(deserializer)?;
233 let mut path = super::super::codec::Path::root("Parameters");
234 let object =
235 super::super::codec::expect_object(&value, &path).map_err(serde::de::Error::custom)?;
236 super::super::codec::Json::from_json(object, &mut path).map_err(serde::de::Error::custom)
237 }
238}
239
240#[derive(Debug, Clone, Default, PartialEq, Eq)]
244pub struct ParametersParameter {
245 pub id: Option<std::string::String>,
250 pub extension: Vec<super::extension::Extension>,
259 pub modifier_extension: Vec<super::extension::Extension>,
274 pub name: super::primitives::String,
278 pub value: Option<ParametersParameterValue>,
282 pub resource: Option<super::resource::Resource>,
286 pub part: Vec<ParametersParameter>,
290}
291
292impl super::super::codec::Json for ParametersParameter {
293 fn to_json(&self) -> Result<super::super::codec::Object, super::super::codec::EncodeError> {
294 let mut object = super::super::codec::Object::new();
295 if let Some(v) = &self.id {
296 object.insert(
297 std::string::String::from("id"),
298 super::super::codec::Value::String(v.clone()),
299 );
300 }
301 if !self.extension.is_empty() {
302 let mut items = Vec::with_capacity(self.extension.len());
303 for item in &self.extension {
304 items.push(super::super::codec::Value::Object(
305 super::super::codec::Json::to_json(item)?,
306 ));
307 }
308 object.insert(
309 std::string::String::from("extension"),
310 super::super::codec::Value::Array(items),
311 );
312 }
313 if !self.modifier_extension.is_empty() {
314 let mut items = Vec::with_capacity(self.modifier_extension.len());
315 for item in &self.modifier_extension {
316 items.push(super::super::codec::Value::Object(
317 super::super::codec::Json::to_json(item)?,
318 ));
319 }
320 object.insert(
321 std::string::String::from("modifierExtension"),
322 super::super::codec::Value::Array(items),
323 );
324 }
325 if let Some(v) = super::super::codec::Primitive::value_json(&self.name)? {
326 object.insert(std::string::String::from("name"), v);
327 }
328 if let Some(e) = super::super::codec::Primitive::element_json(&self.name)? {
329 object.insert(std::string::String::from("_name"), e);
330 }
331 if let Some(item) = &self.value {
332 let (suffix, value, element) = item.to_json_parts()?;
333 if let Some(value) = value {
334 object.insert(format!("value{suffix}"), value);
335 }
336 if let Some(element) = element {
337 object.insert(format!("_value{suffix}"), element);
338 }
339 }
340 if let Some(item) = &self.resource {
341 object.insert(
342 std::string::String::from("resource"),
343 super::super::codec::Value::Object(super::super::codec::Json::to_json(item)?),
344 );
345 }
346 if !self.part.is_empty() {
347 let mut items = Vec::with_capacity(self.part.len());
348 for item in &self.part {
349 items.push(super::super::codec::Value::Object(
350 super::super::codec::Json::to_json(item)?,
351 ));
352 }
353 object.insert(
354 std::string::String::from("part"),
355 super::super::codec::Value::Array(items),
356 );
357 }
358 Ok(object)
359 }
360
361 fn from_json(
362 object: &super::super::codec::Object,
363 path: &mut super::super::codec::Path,
364 ) -> Result<Self, super::super::codec::DecodeError> {
365 let mut raw_id: Option<&super::super::codec::Value> = None;
366 let mut raw_extension: Option<&super::super::codec::Value> = None;
367 let mut raw_modifier_extension: Option<&super::super::codec::Value> = None;
368 let mut raw_name: Option<&super::super::codec::Value> = None;
369 let mut raw_name_element: Option<&super::super::codec::Value> = None;
370 let mut raw_value = super::super::codec::ChoiceSlot::default();
371 let mut raw_resource: Option<&super::super::codec::Value> = None;
372 let mut raw_part: Option<&super::super::codec::Value> = None;
373 for (key, value) in object {
374 match key.as_str() {
375 "id" => {
376 raw_id = Some(value);
377 }
378 "extension" => {
379 raw_extension = Some(value);
380 }
381 "modifierExtension" => {
382 raw_modifier_extension = Some(value);
383 }
384 "name" => {
385 raw_name = Some(value);
386 }
387 "_name" => {
388 raw_name_element = Some(value);
389 }
390 "valueBase64Binary" => {
391 raw_value.value("Base64Binary", value, path)?;
392 }
393 "_valueBase64Binary" => {
394 raw_value.element("Base64Binary", value, path)?;
395 }
396 "valueBoolean" => {
397 raw_value.value("Boolean", value, path)?;
398 }
399 "_valueBoolean" => {
400 raw_value.element("Boolean", value, path)?;
401 }
402 "valueCanonical" => {
403 raw_value.value("Canonical", value, path)?;
404 }
405 "_valueCanonical" => {
406 raw_value.element("Canonical", value, path)?;
407 }
408 "valueCode" => {
409 raw_value.value("Code", value, path)?;
410 }
411 "_valueCode" => {
412 raw_value.element("Code", value, path)?;
413 }
414 "valueDate" => {
415 raw_value.value("Date", value, path)?;
416 }
417 "_valueDate" => {
418 raw_value.element("Date", value, path)?;
419 }
420 "valueDateTime" => {
421 raw_value.value("DateTime", value, path)?;
422 }
423 "_valueDateTime" => {
424 raw_value.element("DateTime", value, path)?;
425 }
426 "valueDecimal" => {
427 raw_value.value("Decimal", value, path)?;
428 }
429 "_valueDecimal" => {
430 raw_value.element("Decimal", value, path)?;
431 }
432 "valueId" => {
433 raw_value.value("Id", value, path)?;
434 }
435 "_valueId" => {
436 raw_value.element("Id", value, path)?;
437 }
438 "valueInstant" => {
439 raw_value.value("Instant", value, path)?;
440 }
441 "_valueInstant" => {
442 raw_value.element("Instant", value, path)?;
443 }
444 "valueInteger" => {
445 raw_value.value("Integer", value, path)?;
446 }
447 "_valueInteger" => {
448 raw_value.element("Integer", value, path)?;
449 }
450 "valueInteger64" => {
451 raw_value.value("Integer64", value, path)?;
452 }
453 "_valueInteger64" => {
454 raw_value.element("Integer64", value, path)?;
455 }
456 "valueMarkdown" => {
457 raw_value.value("Markdown", value, path)?;
458 }
459 "_valueMarkdown" => {
460 raw_value.element("Markdown", value, path)?;
461 }
462 "valueOid" => {
463 raw_value.value("Oid", value, path)?;
464 }
465 "_valueOid" => {
466 raw_value.element("Oid", value, path)?;
467 }
468 "valuePositiveInt" => {
469 raw_value.value("PositiveInt", value, path)?;
470 }
471 "_valuePositiveInt" => {
472 raw_value.element("PositiveInt", value, path)?;
473 }
474 "valueString" => {
475 raw_value.value("String", value, path)?;
476 }
477 "_valueString" => {
478 raw_value.element("String", value, path)?;
479 }
480 "valueTime" => {
481 raw_value.value("Time", value, path)?;
482 }
483 "_valueTime" => {
484 raw_value.element("Time", value, path)?;
485 }
486 "valueUnsignedInt" => {
487 raw_value.value("UnsignedInt", value, path)?;
488 }
489 "_valueUnsignedInt" => {
490 raw_value.element("UnsignedInt", value, path)?;
491 }
492 "valueUri" => {
493 raw_value.value("Uri", value, path)?;
494 }
495 "_valueUri" => {
496 raw_value.element("Uri", value, path)?;
497 }
498 "valueUrl" => {
499 raw_value.value("Url", value, path)?;
500 }
501 "_valueUrl" => {
502 raw_value.element("Url", value, path)?;
503 }
504 "valueUuid" => {
505 raw_value.value("Uuid", value, path)?;
506 }
507 "_valueUuid" => {
508 raw_value.element("Uuid", value, path)?;
509 }
510 "valueAddress" => {
511 raw_value.value("Address", value, path)?;
512 }
513 "_valueAddress" => {
514 raw_value.element("Address", value, path)?;
515 }
516 "valueAge" => {
517 raw_value.value("Age", value, path)?;
518 }
519 "_valueAge" => {
520 raw_value.element("Age", value, path)?;
521 }
522 "valueAnnotation" => {
523 raw_value.value("Annotation", value, path)?;
524 }
525 "_valueAnnotation" => {
526 raw_value.element("Annotation", value, path)?;
527 }
528 "valueAttachment" => {
529 raw_value.value("Attachment", value, path)?;
530 }
531 "_valueAttachment" => {
532 raw_value.element("Attachment", value, path)?;
533 }
534 "valueCodeableConcept" => {
535 raw_value.value("CodeableConcept", value, path)?;
536 }
537 "_valueCodeableConcept" => {
538 raw_value.element("CodeableConcept", value, path)?;
539 }
540 "valueCodeableReference" => {
541 raw_value.value("CodeableReference", value, path)?;
542 }
543 "_valueCodeableReference" => {
544 raw_value.element("CodeableReference", value, path)?;
545 }
546 "valueCoding" => {
547 raw_value.value("Coding", value, path)?;
548 }
549 "_valueCoding" => {
550 raw_value.element("Coding", value, path)?;
551 }
552 "valueContactPoint" => {
553 raw_value.value("ContactPoint", value, path)?;
554 }
555 "_valueContactPoint" => {
556 raw_value.element("ContactPoint", value, path)?;
557 }
558 "valueCount" => {
559 raw_value.value("Count", value, path)?;
560 }
561 "_valueCount" => {
562 raw_value.element("Count", value, path)?;
563 }
564 "valueDistance" => {
565 raw_value.value("Distance", value, path)?;
566 }
567 "_valueDistance" => {
568 raw_value.element("Distance", value, path)?;
569 }
570 "valueDuration" => {
571 raw_value.value("Duration", value, path)?;
572 }
573 "_valueDuration" => {
574 raw_value.element("Duration", value, path)?;
575 }
576 "valueHumanName" => {
577 raw_value.value("HumanName", value, path)?;
578 }
579 "_valueHumanName" => {
580 raw_value.element("HumanName", value, path)?;
581 }
582 "valueIdentifier" => {
583 raw_value.value("Identifier", value, path)?;
584 }
585 "_valueIdentifier" => {
586 raw_value.element("Identifier", value, path)?;
587 }
588 "valueMoney" => {
589 raw_value.value("Money", value, path)?;
590 }
591 "_valueMoney" => {
592 raw_value.element("Money", value, path)?;
593 }
594 "valuePeriod" => {
595 raw_value.value("Period", value, path)?;
596 }
597 "_valuePeriod" => {
598 raw_value.element("Period", value, path)?;
599 }
600 "valueQuantity" => {
601 raw_value.value("Quantity", value, path)?;
602 }
603 "_valueQuantity" => {
604 raw_value.element("Quantity", value, path)?;
605 }
606 "valueRange" => {
607 raw_value.value("Range", value, path)?;
608 }
609 "_valueRange" => {
610 raw_value.element("Range", value, path)?;
611 }
612 "valueRatio" => {
613 raw_value.value("Ratio", value, path)?;
614 }
615 "_valueRatio" => {
616 raw_value.element("Ratio", value, path)?;
617 }
618 "valueRatioRange" => {
619 raw_value.value("RatioRange", value, path)?;
620 }
621 "_valueRatioRange" => {
622 raw_value.element("RatioRange", value, path)?;
623 }
624 "valueReference" => {
625 raw_value.value("Reference", value, path)?;
626 }
627 "_valueReference" => {
628 raw_value.element("Reference", value, path)?;
629 }
630 "valueSampledData" => {
631 raw_value.value("SampledData", value, path)?;
632 }
633 "_valueSampledData" => {
634 raw_value.element("SampledData", value, path)?;
635 }
636 "valueSignature" => {
637 raw_value.value("Signature", value, path)?;
638 }
639 "_valueSignature" => {
640 raw_value.element("Signature", value, path)?;
641 }
642 "valueTiming" => {
643 raw_value.value("Timing", value, path)?;
644 }
645 "_valueTiming" => {
646 raw_value.element("Timing", value, path)?;
647 }
648 "valueContactDetail" => {
649 raw_value.value("ContactDetail", value, path)?;
650 }
651 "_valueContactDetail" => {
652 raw_value.element("ContactDetail", value, path)?;
653 }
654 "valueDataRequirement" => {
655 raw_value.value("DataRequirement", value, path)?;
656 }
657 "_valueDataRequirement" => {
658 raw_value.element("DataRequirement", value, path)?;
659 }
660 "valueExpression" => {
661 raw_value.value("Expression", value, path)?;
662 }
663 "_valueExpression" => {
664 raw_value.element("Expression", value, path)?;
665 }
666 "valueParameterDefinition" => {
667 raw_value.value("ParameterDefinition", value, path)?;
668 }
669 "_valueParameterDefinition" => {
670 raw_value.element("ParameterDefinition", value, path)?;
671 }
672 "valueRelatedArtifact" => {
673 raw_value.value("RelatedArtifact", value, path)?;
674 }
675 "_valueRelatedArtifact" => {
676 raw_value.element("RelatedArtifact", value, path)?;
677 }
678 "valueTriggerDefinition" => {
679 raw_value.value("TriggerDefinition", value, path)?;
680 }
681 "_valueTriggerDefinition" => {
682 raw_value.element("TriggerDefinition", value, path)?;
683 }
684 "valueUsageContext" => {
685 raw_value.value("UsageContext", value, path)?;
686 }
687 "_valueUsageContext" => {
688 raw_value.element("UsageContext", value, path)?;
689 }
690 "valueAvailability" => {
691 raw_value.value("Availability", value, path)?;
692 }
693 "_valueAvailability" => {
694 raw_value.element("Availability", value, path)?;
695 }
696 "valueExtendedContactDetail" => {
697 raw_value.value("ExtendedContactDetail", value, path)?;
698 }
699 "_valueExtendedContactDetail" => {
700 raw_value.element("ExtendedContactDetail", value, path)?;
701 }
702 "valueDosage" => {
703 raw_value.value("Dosage", value, path)?;
704 }
705 "_valueDosage" => {
706 raw_value.element("Dosage", value, path)?;
707 }
708 "valueMeta" => {
709 raw_value.value("Meta", value, path)?;
710 }
711 "_valueMeta" => {
712 raw_value.element("Meta", value, path)?;
713 }
714 "resource" => {
715 raw_resource = Some(value);
716 }
717 "part" => {
718 raw_part = Some(value);
719 }
720 other => {
721 return path.with(other, |path| {
722 Err(path.error(super::super::codec::DecodeErrorKind::UnknownProperty))
723 });
724 }
725 }
726 }
727 let field_id = raw_id
728 .map(|value| {
729 path.with("id", |path| {
730 let value = super::super::codec::expect_single(value, path)?;
731 super::primitives::checked_string(
732 super::super::codec::expect_string(value, path)?,
733 path,
734 )
735 })
736 })
737 .transpose()?;
738 let mut field_extension = Vec::new();
739 if let Some(raw) = raw_extension {
740 for (index, value) in path
741 .with("extension", |path| {
742 super::super::codec::expect_array(raw, path)
743 })?
744 .iter()
745 .enumerate()
746 {
747 field_extension.push(path.with_index("extension", index, |path| {
748 super::super::codec::Json::from_json(
749 super::super::codec::expect_object(value, path)?,
750 path,
751 )
752 })?);
753 }
754 }
755 let mut field_modifier_extension = Vec::new();
756 if let Some(raw) = raw_modifier_extension {
757 for (index, value) in path
758 .with("modifierExtension", |path| {
759 super::super::codec::expect_array(raw, path)
760 })?
761 .iter()
762 .enumerate()
763 {
764 field_modifier_extension.push(path.with_index(
765 "modifierExtension",
766 index,
767 |path| {
768 super::super::codec::Json::from_json(
769 super::super::codec::expect_object(value, path)?,
770 path,
771 )
772 },
773 )?);
774 }
775 }
776 let field_name = path.with("name", |path| {
777 super::super::codec::Primitive::from_json_parts(raw_name, raw_name_element, path)
778 })?;
779 let field_value = match raw_value.suffix {
780 None => None,
781 Some(suffix) => Some(path.with("value", |path| {
782 ParametersParameterValue::from_json_parts(
783 suffix,
784 raw_value.value,
785 raw_value.element,
786 path,
787 )
788 })?),
789 };
790 let field_resource = raw_resource
791 .map(|value| {
792 path.with("resource", |path| {
793 super::super::codec::Json::from_json(
794 super::super::codec::expect_object(
795 super::super::codec::expect_single(value, path)?,
796 path,
797 )?,
798 path,
799 )
800 })
801 })
802 .transpose()?;
803 let mut field_part = Vec::new();
804 if let Some(raw) = raw_part {
805 for (index, value) in path
806 .with("part", |path| super::super::codec::expect_array(raw, path))?
807 .iter()
808 .enumerate()
809 {
810 field_part.push(path.with_index("part", index, |path| {
811 super::super::codec::Json::from_json(
812 super::super::codec::expect_object(value, path)?,
813 path,
814 )
815 })?);
816 }
817 }
818 Ok(Self {
819 id: field_id,
820 extension: field_extension,
821 modifier_extension: field_modifier_extension,
822 name: field_name,
823 value: field_value,
824 resource: field_resource,
825 part: field_part,
826 })
827 }
828}
829
830impl serde::Serialize for ParametersParameter {
831 fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
832 let mut map = serde::Serializer::serialize_map(serializer, None)?;
833 super::super::codec::element_entry(&mut map, "_name", &self.name)?;
834 match &self.value {
835 Some(ParametersParameterValue::Base64Binary(inner)) => {
836 super::super::codec::element_entry(&mut map, "_valueBase64Binary", inner)?;
837 }
838 Some(ParametersParameterValue::Boolean(inner)) => {
839 super::super::codec::element_entry(&mut map, "_valueBoolean", inner)?;
840 }
841 Some(ParametersParameterValue::Canonical(inner)) => {
842 super::super::codec::element_entry(&mut map, "_valueCanonical", inner)?;
843 }
844 Some(ParametersParameterValue::Code(inner)) => {
845 super::super::codec::element_entry(&mut map, "_valueCode", inner)?;
846 }
847 Some(ParametersParameterValue::Date(inner)) => {
848 super::super::codec::element_entry(&mut map, "_valueDate", inner)?;
849 }
850 Some(ParametersParameterValue::DateTime(inner)) => {
851 super::super::codec::element_entry(&mut map, "_valueDateTime", inner)?;
852 }
853 Some(ParametersParameterValue::Decimal(inner)) => {
854 super::super::codec::element_entry(&mut map, "_valueDecimal", inner)?;
855 }
856 Some(ParametersParameterValue::Id(inner)) => {
857 super::super::codec::element_entry(&mut map, "_valueId", inner)?;
858 }
859 Some(ParametersParameterValue::Instant(inner)) => {
860 super::super::codec::element_entry(&mut map, "_valueInstant", inner)?;
861 }
862 Some(ParametersParameterValue::Integer(inner)) => {
863 super::super::codec::element_entry(&mut map, "_valueInteger", inner)?;
864 }
865 Some(ParametersParameterValue::Integer64(inner)) => {
866 super::super::codec::element_entry(&mut map, "_valueInteger64", inner)?;
867 }
868 Some(ParametersParameterValue::Markdown(inner)) => {
869 super::super::codec::element_entry(&mut map, "_valueMarkdown", inner)?;
870 }
871 Some(ParametersParameterValue::Oid(inner)) => {
872 super::super::codec::element_entry(&mut map, "_valueOid", inner)?;
873 }
874 Some(ParametersParameterValue::PositiveInt(inner)) => {
875 super::super::codec::element_entry(&mut map, "_valuePositiveInt", inner)?;
876 }
877 Some(ParametersParameterValue::String(inner)) => {
878 super::super::codec::element_entry(&mut map, "_valueString", inner)?;
879 }
880 Some(ParametersParameterValue::Time(inner)) => {
881 super::super::codec::element_entry(&mut map, "_valueTime", inner)?;
882 }
883 Some(ParametersParameterValue::UnsignedInt(inner)) => {
884 super::super::codec::element_entry(&mut map, "_valueUnsignedInt", inner)?;
885 }
886 Some(ParametersParameterValue::Uri(inner)) => {
887 super::super::codec::element_entry(&mut map, "_valueUri", inner)?;
888 }
889 Some(ParametersParameterValue::Url(inner)) => {
890 super::super::codec::element_entry(&mut map, "_valueUrl", inner)?;
891 }
892 Some(ParametersParameterValue::Uuid(inner)) => {
893 super::super::codec::element_entry(&mut map, "_valueUuid", inner)?;
894 }
895 _ => {}
896 }
897 if !self.extension.is_empty() {
898 serde::ser::SerializeMap::serialize_entry(&mut map, "extension", &self.extension)?;
899 }
900 if let Some(v) = &self.id {
901 serde::ser::SerializeMap::serialize_entry(&mut map, "id", v)?;
902 }
903 if !self.modifier_extension.is_empty() {
904 serde::ser::SerializeMap::serialize_entry(
905 &mut map,
906 "modifierExtension",
907 &self.modifier_extension,
908 )?;
909 }
910 super::super::codec::value_entry(&mut map, "name", &self.name)?;
911 if !self.part.is_empty() {
912 serde::ser::SerializeMap::serialize_entry(&mut map, "part", &self.part)?;
913 }
914 if let Some(item) = &self.resource {
915 serde::ser::SerializeMap::serialize_entry(&mut map, "resource", item)?;
916 }
917 match &self.value {
918 Some(ParametersParameterValue::Address(inner)) => {
919 serde::ser::SerializeMap::serialize_entry(
920 &mut map,
921 "valueAddress",
922 inner.as_ref(),
923 )?;
924 }
925 Some(ParametersParameterValue::Age(inner)) => {
926 serde::ser::SerializeMap::serialize_entry(&mut map, "valueAge", inner.as_ref())?;
927 }
928 Some(ParametersParameterValue::Annotation(inner)) => {
929 serde::ser::SerializeMap::serialize_entry(
930 &mut map,
931 "valueAnnotation",
932 inner.as_ref(),
933 )?;
934 }
935 Some(ParametersParameterValue::Attachment(inner)) => {
936 serde::ser::SerializeMap::serialize_entry(
937 &mut map,
938 "valueAttachment",
939 inner.as_ref(),
940 )?;
941 }
942 Some(ParametersParameterValue::Availability(inner)) => {
943 serde::ser::SerializeMap::serialize_entry(
944 &mut map,
945 "valueAvailability",
946 inner.as_ref(),
947 )?;
948 }
949 Some(ParametersParameterValue::Base64Binary(inner)) => {
950 super::super::codec::value_entry(&mut map, "valueBase64Binary", inner)?;
951 }
952 Some(ParametersParameterValue::Boolean(inner)) => {
953 super::super::codec::value_entry(&mut map, "valueBoolean", inner)?;
954 }
955 Some(ParametersParameterValue::Canonical(inner)) => {
956 super::super::codec::value_entry(&mut map, "valueCanonical", inner)?;
957 }
958 Some(ParametersParameterValue::Code(inner)) => {
959 super::super::codec::value_entry(&mut map, "valueCode", inner)?;
960 }
961 Some(ParametersParameterValue::CodeableConcept(inner)) => {
962 serde::ser::SerializeMap::serialize_entry(
963 &mut map,
964 "valueCodeableConcept",
965 inner.as_ref(),
966 )?;
967 }
968 Some(ParametersParameterValue::CodeableReference(inner)) => {
969 serde::ser::SerializeMap::serialize_entry(
970 &mut map,
971 "valueCodeableReference",
972 inner.as_ref(),
973 )?;
974 }
975 Some(ParametersParameterValue::Coding(inner)) => {
976 serde::ser::SerializeMap::serialize_entry(&mut map, "valueCoding", inner.as_ref())?;
977 }
978 Some(ParametersParameterValue::ContactDetail(inner)) => {
979 serde::ser::SerializeMap::serialize_entry(
980 &mut map,
981 "valueContactDetail",
982 inner.as_ref(),
983 )?;
984 }
985 Some(ParametersParameterValue::ContactPoint(inner)) => {
986 serde::ser::SerializeMap::serialize_entry(
987 &mut map,
988 "valueContactPoint",
989 inner.as_ref(),
990 )?;
991 }
992 Some(ParametersParameterValue::Count(inner)) => {
993 serde::ser::SerializeMap::serialize_entry(&mut map, "valueCount", inner.as_ref())?;
994 }
995 Some(ParametersParameterValue::DataRequirement(inner)) => {
996 serde::ser::SerializeMap::serialize_entry(
997 &mut map,
998 "valueDataRequirement",
999 inner.as_ref(),
1000 )?;
1001 }
1002 Some(ParametersParameterValue::Date(inner)) => {
1003 super::super::codec::value_entry(&mut map, "valueDate", inner)?;
1004 }
1005 Some(ParametersParameterValue::DateTime(inner)) => {
1006 super::super::codec::value_entry(&mut map, "valueDateTime", inner)?;
1007 }
1008 Some(ParametersParameterValue::Decimal(inner)) => {
1009 super::super::codec::value_entry(&mut map, "valueDecimal", inner)?;
1010 }
1011 Some(ParametersParameterValue::Distance(inner)) => {
1012 serde::ser::SerializeMap::serialize_entry(
1013 &mut map,
1014 "valueDistance",
1015 inner.as_ref(),
1016 )?;
1017 }
1018 Some(ParametersParameterValue::Dosage(inner)) => {
1019 serde::ser::SerializeMap::serialize_entry(&mut map, "valueDosage", inner.as_ref())?;
1020 }
1021 Some(ParametersParameterValue::Duration(inner)) => {
1022 serde::ser::SerializeMap::serialize_entry(
1023 &mut map,
1024 "valueDuration",
1025 inner.as_ref(),
1026 )?;
1027 }
1028 Some(ParametersParameterValue::Expression(inner)) => {
1029 serde::ser::SerializeMap::serialize_entry(
1030 &mut map,
1031 "valueExpression",
1032 inner.as_ref(),
1033 )?;
1034 }
1035 Some(ParametersParameterValue::ExtendedContactDetail(inner)) => {
1036 serde::ser::SerializeMap::serialize_entry(
1037 &mut map,
1038 "valueExtendedContactDetail",
1039 inner.as_ref(),
1040 )?;
1041 }
1042 Some(ParametersParameterValue::HumanName(inner)) => {
1043 serde::ser::SerializeMap::serialize_entry(
1044 &mut map,
1045 "valueHumanName",
1046 inner.as_ref(),
1047 )?;
1048 }
1049 Some(ParametersParameterValue::Id(inner)) => {
1050 super::super::codec::value_entry(&mut map, "valueId", inner)?;
1051 }
1052 Some(ParametersParameterValue::Identifier(inner)) => {
1053 serde::ser::SerializeMap::serialize_entry(
1054 &mut map,
1055 "valueIdentifier",
1056 inner.as_ref(),
1057 )?;
1058 }
1059 Some(ParametersParameterValue::Instant(inner)) => {
1060 super::super::codec::value_entry(&mut map, "valueInstant", inner)?;
1061 }
1062 Some(ParametersParameterValue::Integer(inner)) => {
1063 super::super::codec::value_entry(&mut map, "valueInteger", inner)?;
1064 }
1065 Some(ParametersParameterValue::Integer64(inner)) => {
1066 super::super::codec::value_entry(&mut map, "valueInteger64", inner)?;
1067 }
1068 Some(ParametersParameterValue::Markdown(inner)) => {
1069 super::super::codec::value_entry(&mut map, "valueMarkdown", inner)?;
1070 }
1071 Some(ParametersParameterValue::Meta(inner)) => {
1072 serde::ser::SerializeMap::serialize_entry(&mut map, "valueMeta", inner.as_ref())?;
1073 }
1074 Some(ParametersParameterValue::Money(inner)) => {
1075 serde::ser::SerializeMap::serialize_entry(&mut map, "valueMoney", inner.as_ref())?;
1076 }
1077 Some(ParametersParameterValue::Oid(inner)) => {
1078 super::super::codec::value_entry(&mut map, "valueOid", inner)?;
1079 }
1080 Some(ParametersParameterValue::ParameterDefinition(inner)) => {
1081 serde::ser::SerializeMap::serialize_entry(
1082 &mut map,
1083 "valueParameterDefinition",
1084 inner.as_ref(),
1085 )?;
1086 }
1087 Some(ParametersParameterValue::Period(inner)) => {
1088 serde::ser::SerializeMap::serialize_entry(&mut map, "valuePeriod", inner.as_ref())?;
1089 }
1090 Some(ParametersParameterValue::PositiveInt(inner)) => {
1091 super::super::codec::value_entry(&mut map, "valuePositiveInt", inner)?;
1092 }
1093 Some(ParametersParameterValue::Quantity(inner)) => {
1094 serde::ser::SerializeMap::serialize_entry(
1095 &mut map,
1096 "valueQuantity",
1097 inner.as_ref(),
1098 )?;
1099 }
1100 Some(ParametersParameterValue::Range(inner)) => {
1101 serde::ser::SerializeMap::serialize_entry(&mut map, "valueRange", inner.as_ref())?;
1102 }
1103 Some(ParametersParameterValue::Ratio(inner)) => {
1104 serde::ser::SerializeMap::serialize_entry(&mut map, "valueRatio", inner.as_ref())?;
1105 }
1106 Some(ParametersParameterValue::RatioRange(inner)) => {
1107 serde::ser::SerializeMap::serialize_entry(
1108 &mut map,
1109 "valueRatioRange",
1110 inner.as_ref(),
1111 )?;
1112 }
1113 Some(ParametersParameterValue::Reference(inner)) => {
1114 serde::ser::SerializeMap::serialize_entry(
1115 &mut map,
1116 "valueReference",
1117 inner.as_ref(),
1118 )?;
1119 }
1120 Some(ParametersParameterValue::RelatedArtifact(inner)) => {
1121 serde::ser::SerializeMap::serialize_entry(
1122 &mut map,
1123 "valueRelatedArtifact",
1124 inner.as_ref(),
1125 )?;
1126 }
1127 Some(ParametersParameterValue::SampledData(inner)) => {
1128 serde::ser::SerializeMap::serialize_entry(
1129 &mut map,
1130 "valueSampledData",
1131 inner.as_ref(),
1132 )?;
1133 }
1134 Some(ParametersParameterValue::Signature(inner)) => {
1135 serde::ser::SerializeMap::serialize_entry(
1136 &mut map,
1137 "valueSignature",
1138 inner.as_ref(),
1139 )?;
1140 }
1141 Some(ParametersParameterValue::String(inner)) => {
1142 super::super::codec::value_entry(&mut map, "valueString", inner)?;
1143 }
1144 Some(ParametersParameterValue::Time(inner)) => {
1145 super::super::codec::value_entry(&mut map, "valueTime", inner)?;
1146 }
1147 Some(ParametersParameterValue::Timing(inner)) => {
1148 serde::ser::SerializeMap::serialize_entry(&mut map, "valueTiming", inner.as_ref())?;
1149 }
1150 Some(ParametersParameterValue::TriggerDefinition(inner)) => {
1151 serde::ser::SerializeMap::serialize_entry(
1152 &mut map,
1153 "valueTriggerDefinition",
1154 inner.as_ref(),
1155 )?;
1156 }
1157 Some(ParametersParameterValue::UnsignedInt(inner)) => {
1158 super::super::codec::value_entry(&mut map, "valueUnsignedInt", inner)?;
1159 }
1160 Some(ParametersParameterValue::Uri(inner)) => {
1161 super::super::codec::value_entry(&mut map, "valueUri", inner)?;
1162 }
1163 Some(ParametersParameterValue::Url(inner)) => {
1164 super::super::codec::value_entry(&mut map, "valueUrl", inner)?;
1165 }
1166 Some(ParametersParameterValue::UsageContext(inner)) => {
1167 serde::ser::SerializeMap::serialize_entry(
1168 &mut map,
1169 "valueUsageContext",
1170 inner.as_ref(),
1171 )?;
1172 }
1173 Some(ParametersParameterValue::Uuid(inner)) => {
1174 super::super::codec::value_entry(&mut map, "valueUuid", inner)?;
1175 }
1176 None => {}
1177 }
1178 serde::ser::SerializeMap::end(map)
1179 }
1180}
1181
1182impl<'de> serde::Deserialize<'de> for ParametersParameter {
1183 fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1184 let value = <super::super::codec::Value as serde::Deserialize>::deserialize(deserializer)?;
1185 let mut path = super::super::codec::Path::root("ParametersParameter");
1186 let object =
1187 super::super::codec::expect_object(&value, &path).map_err(serde::de::Error::custom)?;
1188 super::super::codec::Json::from_json(object, &mut path).map_err(serde::de::Error::custom)
1189 }
1190}
1191
1192#[derive(Debug, Clone, PartialEq, Eq)]
1196pub enum ParametersParameterValue {
1197 Base64Binary(super::primitives::Base64Binary),
1199 Boolean(super::primitives::Boolean),
1201 Canonical(super::primitives::Canonical),
1203 Code(super::primitives::Code),
1205 Date(super::primitives::Date),
1207 DateTime(super::primitives::DateTime),
1209 Decimal(super::primitives::Decimal),
1211 Id(super::primitives::Id),
1213 Instant(super::primitives::Instant),
1215 Integer(super::primitives::Integer),
1217 Integer64(super::primitives::Integer64),
1219 Markdown(super::primitives::Markdown),
1221 Oid(super::primitives::Oid),
1223 PositiveInt(super::primitives::PositiveInt),
1225 String(super::primitives::String),
1227 Time(super::primitives::Time),
1229 UnsignedInt(super::primitives::UnsignedInt),
1231 Uri(super::primitives::Uri),
1233 Url(super::primitives::Url),
1235 Uuid(super::primitives::Uuid),
1237 Address(Box<super::address::Address>),
1239 Age(Box<super::age::Age>),
1241 Annotation(Box<super::annotation::Annotation>),
1243 Attachment(Box<super::attachment::Attachment>),
1245 CodeableConcept(Box<super::codeable_concept::CodeableConcept>),
1247 CodeableReference(Box<super::codeable_reference::CodeableReference>),
1249 Coding(Box<super::coding::Coding>),
1251 ContactPoint(Box<super::contact_point::ContactPoint>),
1253 Count(Box<super::count::Count>),
1255 Distance(Box<super::distance::Distance>),
1257 Duration(Box<super::duration::Duration>),
1259 HumanName(Box<super::human_name::HumanName>),
1261 Identifier(Box<super::identifier::Identifier>),
1263 Money(Box<super::money::Money>),
1265 Period(Box<super::period::Period>),
1267 Quantity(Box<super::quantity::Quantity>),
1269 Range(Box<super::range::Range>),
1271 Ratio(Box<super::ratio::Ratio>),
1273 RatioRange(Box<super::ratio_range::RatioRange>),
1275 Reference(Box<super::reference::Reference>),
1277 SampledData(Box<super::sampled_data::SampledData>),
1279 Signature(Box<super::signature::Signature>),
1281 Timing(Box<super::timing::Timing>),
1283 ContactDetail(Box<super::contact_detail::ContactDetail>),
1285 DataRequirement(Box<super::data_requirement::DataRequirement>),
1287 Expression(Box<super::expression::Expression>),
1289 ParameterDefinition(Box<super::parameter_definition::ParameterDefinition>),
1291 RelatedArtifact(Box<super::related_artifact::RelatedArtifact>),
1293 TriggerDefinition(Box<super::trigger_definition::TriggerDefinition>),
1295 UsageContext(Box<super::usage_context::UsageContext>),
1297 Availability(Box<super::availability::Availability>),
1299 ExtendedContactDetail(Box<super::extended_contact_detail::ExtendedContactDetail>),
1301 Dosage(Box<super::dosage::Dosage>),
1303 Meta(Box<super::meta::Meta>),
1305}
1306
1307impl ParametersParameterValue {
1308 pub fn to_json_parts(
1314 &self,
1315 ) -> Result<
1316 (
1317 &'static str,
1318 Option<super::super::codec::Value>,
1319 Option<super::super::codec::Value>,
1320 ),
1321 super::super::codec::EncodeError,
1322 > {
1323 match self {
1324 Self::Base64Binary(inner) => Ok((
1325 "Base64Binary",
1326 super::super::codec::Primitive::value_json(inner)?,
1327 super::super::codec::Primitive::element_json(inner)?,
1328 )),
1329 Self::Boolean(inner) => Ok((
1330 "Boolean",
1331 super::super::codec::Primitive::value_json(inner)?,
1332 super::super::codec::Primitive::element_json(inner)?,
1333 )),
1334 Self::Canonical(inner) => Ok((
1335 "Canonical",
1336 super::super::codec::Primitive::value_json(inner)?,
1337 super::super::codec::Primitive::element_json(inner)?,
1338 )),
1339 Self::Code(inner) => Ok((
1340 "Code",
1341 super::super::codec::Primitive::value_json(inner)?,
1342 super::super::codec::Primitive::element_json(inner)?,
1343 )),
1344 Self::Date(inner) => Ok((
1345 "Date",
1346 super::super::codec::Primitive::value_json(inner)?,
1347 super::super::codec::Primitive::element_json(inner)?,
1348 )),
1349 Self::DateTime(inner) => Ok((
1350 "DateTime",
1351 super::super::codec::Primitive::value_json(inner)?,
1352 super::super::codec::Primitive::element_json(inner)?,
1353 )),
1354 Self::Decimal(inner) => Ok((
1355 "Decimal",
1356 super::super::codec::Primitive::value_json(inner)?,
1357 super::super::codec::Primitive::element_json(inner)?,
1358 )),
1359 Self::Id(inner) => Ok((
1360 "Id",
1361 super::super::codec::Primitive::value_json(inner)?,
1362 super::super::codec::Primitive::element_json(inner)?,
1363 )),
1364 Self::Instant(inner) => Ok((
1365 "Instant",
1366 super::super::codec::Primitive::value_json(inner)?,
1367 super::super::codec::Primitive::element_json(inner)?,
1368 )),
1369 Self::Integer(inner) => Ok((
1370 "Integer",
1371 super::super::codec::Primitive::value_json(inner)?,
1372 super::super::codec::Primitive::element_json(inner)?,
1373 )),
1374 Self::Integer64(inner) => Ok((
1375 "Integer64",
1376 super::super::codec::Primitive::value_json(inner)?,
1377 super::super::codec::Primitive::element_json(inner)?,
1378 )),
1379 Self::Markdown(inner) => Ok((
1380 "Markdown",
1381 super::super::codec::Primitive::value_json(inner)?,
1382 super::super::codec::Primitive::element_json(inner)?,
1383 )),
1384 Self::Oid(inner) => Ok((
1385 "Oid",
1386 super::super::codec::Primitive::value_json(inner)?,
1387 super::super::codec::Primitive::element_json(inner)?,
1388 )),
1389 Self::PositiveInt(inner) => Ok((
1390 "PositiveInt",
1391 super::super::codec::Primitive::value_json(inner)?,
1392 super::super::codec::Primitive::element_json(inner)?,
1393 )),
1394 Self::String(inner) => Ok((
1395 "String",
1396 super::super::codec::Primitive::value_json(inner)?,
1397 super::super::codec::Primitive::element_json(inner)?,
1398 )),
1399 Self::Time(inner) => Ok((
1400 "Time",
1401 super::super::codec::Primitive::value_json(inner)?,
1402 super::super::codec::Primitive::element_json(inner)?,
1403 )),
1404 Self::UnsignedInt(inner) => Ok((
1405 "UnsignedInt",
1406 super::super::codec::Primitive::value_json(inner)?,
1407 super::super::codec::Primitive::element_json(inner)?,
1408 )),
1409 Self::Uri(inner) => Ok((
1410 "Uri",
1411 super::super::codec::Primitive::value_json(inner)?,
1412 super::super::codec::Primitive::element_json(inner)?,
1413 )),
1414 Self::Url(inner) => Ok((
1415 "Url",
1416 super::super::codec::Primitive::value_json(inner)?,
1417 super::super::codec::Primitive::element_json(inner)?,
1418 )),
1419 Self::Uuid(inner) => Ok((
1420 "Uuid",
1421 super::super::codec::Primitive::value_json(inner)?,
1422 super::super::codec::Primitive::element_json(inner)?,
1423 )),
1424 Self::Address(inner) => Ok((
1425 "Address",
1426 Some(super::super::codec::Value::Object(
1427 super::super::codec::Json::to_json(inner.as_ref())?,
1428 )),
1429 None,
1430 )),
1431 Self::Age(inner) => Ok((
1432 "Age",
1433 Some(super::super::codec::Value::Object(
1434 super::super::codec::Json::to_json(inner.as_ref())?,
1435 )),
1436 None,
1437 )),
1438 Self::Annotation(inner) => Ok((
1439 "Annotation",
1440 Some(super::super::codec::Value::Object(
1441 super::super::codec::Json::to_json(inner.as_ref())?,
1442 )),
1443 None,
1444 )),
1445 Self::Attachment(inner) => Ok((
1446 "Attachment",
1447 Some(super::super::codec::Value::Object(
1448 super::super::codec::Json::to_json(inner.as_ref())?,
1449 )),
1450 None,
1451 )),
1452 Self::CodeableConcept(inner) => Ok((
1453 "CodeableConcept",
1454 Some(super::super::codec::Value::Object(
1455 super::super::codec::Json::to_json(inner.as_ref())?,
1456 )),
1457 None,
1458 )),
1459 Self::CodeableReference(inner) => Ok((
1460 "CodeableReference",
1461 Some(super::super::codec::Value::Object(
1462 super::super::codec::Json::to_json(inner.as_ref())?,
1463 )),
1464 None,
1465 )),
1466 Self::Coding(inner) => Ok((
1467 "Coding",
1468 Some(super::super::codec::Value::Object(
1469 super::super::codec::Json::to_json(inner.as_ref())?,
1470 )),
1471 None,
1472 )),
1473 Self::ContactPoint(inner) => Ok((
1474 "ContactPoint",
1475 Some(super::super::codec::Value::Object(
1476 super::super::codec::Json::to_json(inner.as_ref())?,
1477 )),
1478 None,
1479 )),
1480 Self::Count(inner) => Ok((
1481 "Count",
1482 Some(super::super::codec::Value::Object(
1483 super::super::codec::Json::to_json(inner.as_ref())?,
1484 )),
1485 None,
1486 )),
1487 Self::Distance(inner) => Ok((
1488 "Distance",
1489 Some(super::super::codec::Value::Object(
1490 super::super::codec::Json::to_json(inner.as_ref())?,
1491 )),
1492 None,
1493 )),
1494 Self::Duration(inner) => Ok((
1495 "Duration",
1496 Some(super::super::codec::Value::Object(
1497 super::super::codec::Json::to_json(inner.as_ref())?,
1498 )),
1499 None,
1500 )),
1501 Self::HumanName(inner) => Ok((
1502 "HumanName",
1503 Some(super::super::codec::Value::Object(
1504 super::super::codec::Json::to_json(inner.as_ref())?,
1505 )),
1506 None,
1507 )),
1508 Self::Identifier(inner) => Ok((
1509 "Identifier",
1510 Some(super::super::codec::Value::Object(
1511 super::super::codec::Json::to_json(inner.as_ref())?,
1512 )),
1513 None,
1514 )),
1515 Self::Money(inner) => Ok((
1516 "Money",
1517 Some(super::super::codec::Value::Object(
1518 super::super::codec::Json::to_json(inner.as_ref())?,
1519 )),
1520 None,
1521 )),
1522 Self::Period(inner) => Ok((
1523 "Period",
1524 Some(super::super::codec::Value::Object(
1525 super::super::codec::Json::to_json(inner.as_ref())?,
1526 )),
1527 None,
1528 )),
1529 Self::Quantity(inner) => Ok((
1530 "Quantity",
1531 Some(super::super::codec::Value::Object(
1532 super::super::codec::Json::to_json(inner.as_ref())?,
1533 )),
1534 None,
1535 )),
1536 Self::Range(inner) => Ok((
1537 "Range",
1538 Some(super::super::codec::Value::Object(
1539 super::super::codec::Json::to_json(inner.as_ref())?,
1540 )),
1541 None,
1542 )),
1543 Self::Ratio(inner) => Ok((
1544 "Ratio",
1545 Some(super::super::codec::Value::Object(
1546 super::super::codec::Json::to_json(inner.as_ref())?,
1547 )),
1548 None,
1549 )),
1550 Self::RatioRange(inner) => Ok((
1551 "RatioRange",
1552 Some(super::super::codec::Value::Object(
1553 super::super::codec::Json::to_json(inner.as_ref())?,
1554 )),
1555 None,
1556 )),
1557 Self::Reference(inner) => Ok((
1558 "Reference",
1559 Some(super::super::codec::Value::Object(
1560 super::super::codec::Json::to_json(inner.as_ref())?,
1561 )),
1562 None,
1563 )),
1564 Self::SampledData(inner) => Ok((
1565 "SampledData",
1566 Some(super::super::codec::Value::Object(
1567 super::super::codec::Json::to_json(inner.as_ref())?,
1568 )),
1569 None,
1570 )),
1571 Self::Signature(inner) => Ok((
1572 "Signature",
1573 Some(super::super::codec::Value::Object(
1574 super::super::codec::Json::to_json(inner.as_ref())?,
1575 )),
1576 None,
1577 )),
1578 Self::Timing(inner) => Ok((
1579 "Timing",
1580 Some(super::super::codec::Value::Object(
1581 super::super::codec::Json::to_json(inner.as_ref())?,
1582 )),
1583 None,
1584 )),
1585 Self::ContactDetail(inner) => Ok((
1586 "ContactDetail",
1587 Some(super::super::codec::Value::Object(
1588 super::super::codec::Json::to_json(inner.as_ref())?,
1589 )),
1590 None,
1591 )),
1592 Self::DataRequirement(inner) => Ok((
1593 "DataRequirement",
1594 Some(super::super::codec::Value::Object(
1595 super::super::codec::Json::to_json(inner.as_ref())?,
1596 )),
1597 None,
1598 )),
1599 Self::Expression(inner) => Ok((
1600 "Expression",
1601 Some(super::super::codec::Value::Object(
1602 super::super::codec::Json::to_json(inner.as_ref())?,
1603 )),
1604 None,
1605 )),
1606 Self::ParameterDefinition(inner) => Ok((
1607 "ParameterDefinition",
1608 Some(super::super::codec::Value::Object(
1609 super::super::codec::Json::to_json(inner.as_ref())?,
1610 )),
1611 None,
1612 )),
1613 Self::RelatedArtifact(inner) => Ok((
1614 "RelatedArtifact",
1615 Some(super::super::codec::Value::Object(
1616 super::super::codec::Json::to_json(inner.as_ref())?,
1617 )),
1618 None,
1619 )),
1620 Self::TriggerDefinition(inner) => Ok((
1621 "TriggerDefinition",
1622 Some(super::super::codec::Value::Object(
1623 super::super::codec::Json::to_json(inner.as_ref())?,
1624 )),
1625 None,
1626 )),
1627 Self::UsageContext(inner) => Ok((
1628 "UsageContext",
1629 Some(super::super::codec::Value::Object(
1630 super::super::codec::Json::to_json(inner.as_ref())?,
1631 )),
1632 None,
1633 )),
1634 Self::Availability(inner) => Ok((
1635 "Availability",
1636 Some(super::super::codec::Value::Object(
1637 super::super::codec::Json::to_json(inner.as_ref())?,
1638 )),
1639 None,
1640 )),
1641 Self::ExtendedContactDetail(inner) => Ok((
1642 "ExtendedContactDetail",
1643 Some(super::super::codec::Value::Object(
1644 super::super::codec::Json::to_json(inner.as_ref())?,
1645 )),
1646 None,
1647 )),
1648 Self::Dosage(inner) => Ok((
1649 "Dosage",
1650 Some(super::super::codec::Value::Object(
1651 super::super::codec::Json::to_json(inner.as_ref())?,
1652 )),
1653 None,
1654 )),
1655 Self::Meta(inner) => Ok((
1656 "Meta",
1657 Some(super::super::codec::Value::Object(
1658 super::super::codec::Json::to_json(inner.as_ref())?,
1659 )),
1660 None,
1661 )),
1662 }
1663 }
1664
1665 pub fn from_json_parts(
1671 suffix: &str,
1672 value: Option<&super::super::codec::Value>,
1673 element: Option<&super::super::codec::Value>,
1674 path: &mut super::super::codec::Path,
1675 ) -> Result<Self, super::super::codec::DecodeError> {
1676 match suffix {
1677 "Base64Binary" => Ok(Self::Base64Binary(
1678 super::super::codec::Primitive::from_json_parts(value, element, path)?,
1679 )),
1680 "Boolean" => Ok(Self::Boolean(
1681 super::super::codec::Primitive::from_json_parts(value, element, path)?,
1682 )),
1683 "Canonical" => Ok(Self::Canonical(
1684 super::super::codec::Primitive::from_json_parts(value, element, path)?,
1685 )),
1686 "Code" => Ok(Self::Code(super::super::codec::Primitive::from_json_parts(
1687 value, element, path,
1688 )?)),
1689 "Date" => Ok(Self::Date(super::super::codec::Primitive::from_json_parts(
1690 value, element, path,
1691 )?)),
1692 "DateTime" => Ok(Self::DateTime(
1693 super::super::codec::Primitive::from_json_parts(value, element, path)?,
1694 )),
1695 "Decimal" => Ok(Self::Decimal(
1696 super::super::codec::Primitive::from_json_parts(value, element, path)?,
1697 )),
1698 "Id" => Ok(Self::Id(super::super::codec::Primitive::from_json_parts(
1699 value, element, path,
1700 )?)),
1701 "Instant" => Ok(Self::Instant(
1702 super::super::codec::Primitive::from_json_parts(value, element, path)?,
1703 )),
1704 "Integer" => Ok(Self::Integer(
1705 super::super::codec::Primitive::from_json_parts(value, element, path)?,
1706 )),
1707 "Integer64" => Ok(Self::Integer64(
1708 super::super::codec::Primitive::from_json_parts(value, element, path)?,
1709 )),
1710 "Markdown" => Ok(Self::Markdown(
1711 super::super::codec::Primitive::from_json_parts(value, element, path)?,
1712 )),
1713 "Oid" => Ok(Self::Oid(super::super::codec::Primitive::from_json_parts(
1714 value, element, path,
1715 )?)),
1716 "PositiveInt" => Ok(Self::PositiveInt(
1717 super::super::codec::Primitive::from_json_parts(value, element, path)?,
1718 )),
1719 "String" => Ok(Self::String(
1720 super::super::codec::Primitive::from_json_parts(value, element, path)?,
1721 )),
1722 "Time" => Ok(Self::Time(super::super::codec::Primitive::from_json_parts(
1723 value, element, path,
1724 )?)),
1725 "UnsignedInt" => Ok(Self::UnsignedInt(
1726 super::super::codec::Primitive::from_json_parts(value, element, path)?,
1727 )),
1728 "Uri" => Ok(Self::Uri(super::super::codec::Primitive::from_json_parts(
1729 value, element, path,
1730 )?)),
1731 "Url" => Ok(Self::Url(super::super::codec::Primitive::from_json_parts(
1732 value, element, path,
1733 )?)),
1734 "Uuid" => Ok(Self::Uuid(super::super::codec::Primitive::from_json_parts(
1735 value, element, path,
1736 )?)),
1737 "Address" => {
1738 if element.is_some() {
1739 return Err(path.error(super::super::codec::DecodeErrorKind::WrongType {
1740 expected: "no underscore form for a complex type",
1741 }));
1742 }
1743 let value = value.ok_or_else(|| {
1744 path.error(super::super::codec::DecodeErrorKind::MissingProperty)
1745 })?;
1746 let inner = super::super::codec::Json::from_json(
1747 super::super::codec::expect_object(
1748 super::super::codec::expect_single(value, path)?,
1749 path,
1750 )?,
1751 path,
1752 )?;
1753 Ok(Self::Address(Box::new(inner)))
1754 }
1755 "Age" => {
1756 if element.is_some() {
1757 return Err(path.error(super::super::codec::DecodeErrorKind::WrongType {
1758 expected: "no underscore form for a complex type",
1759 }));
1760 }
1761 let value = value.ok_or_else(|| {
1762 path.error(super::super::codec::DecodeErrorKind::MissingProperty)
1763 })?;
1764 let inner = super::super::codec::Json::from_json(
1765 super::super::codec::expect_object(
1766 super::super::codec::expect_single(value, path)?,
1767 path,
1768 )?,
1769 path,
1770 )?;
1771 Ok(Self::Age(Box::new(inner)))
1772 }
1773 "Annotation" => {
1774 if element.is_some() {
1775 return Err(path.error(super::super::codec::DecodeErrorKind::WrongType {
1776 expected: "no underscore form for a complex type",
1777 }));
1778 }
1779 let value = value.ok_or_else(|| {
1780 path.error(super::super::codec::DecodeErrorKind::MissingProperty)
1781 })?;
1782 let inner = super::super::codec::Json::from_json(
1783 super::super::codec::expect_object(
1784 super::super::codec::expect_single(value, path)?,
1785 path,
1786 )?,
1787 path,
1788 )?;
1789 Ok(Self::Annotation(Box::new(inner)))
1790 }
1791 "Attachment" => {
1792 if element.is_some() {
1793 return Err(path.error(super::super::codec::DecodeErrorKind::WrongType {
1794 expected: "no underscore form for a complex type",
1795 }));
1796 }
1797 let value = value.ok_or_else(|| {
1798 path.error(super::super::codec::DecodeErrorKind::MissingProperty)
1799 })?;
1800 let inner = super::super::codec::Json::from_json(
1801 super::super::codec::expect_object(
1802 super::super::codec::expect_single(value, path)?,
1803 path,
1804 )?,
1805 path,
1806 )?;
1807 Ok(Self::Attachment(Box::new(inner)))
1808 }
1809 "CodeableConcept" => {
1810 if element.is_some() {
1811 return Err(path.error(super::super::codec::DecodeErrorKind::WrongType {
1812 expected: "no underscore form for a complex type",
1813 }));
1814 }
1815 let value = value.ok_or_else(|| {
1816 path.error(super::super::codec::DecodeErrorKind::MissingProperty)
1817 })?;
1818 let inner = super::super::codec::Json::from_json(
1819 super::super::codec::expect_object(
1820 super::super::codec::expect_single(value, path)?,
1821 path,
1822 )?,
1823 path,
1824 )?;
1825 Ok(Self::CodeableConcept(Box::new(inner)))
1826 }
1827 "CodeableReference" => {
1828 if element.is_some() {
1829 return Err(path.error(super::super::codec::DecodeErrorKind::WrongType {
1830 expected: "no underscore form for a complex type",
1831 }));
1832 }
1833 let value = value.ok_or_else(|| {
1834 path.error(super::super::codec::DecodeErrorKind::MissingProperty)
1835 })?;
1836 let inner = super::super::codec::Json::from_json(
1837 super::super::codec::expect_object(
1838 super::super::codec::expect_single(value, path)?,
1839 path,
1840 )?,
1841 path,
1842 )?;
1843 Ok(Self::CodeableReference(Box::new(inner)))
1844 }
1845 "Coding" => {
1846 if element.is_some() {
1847 return Err(path.error(super::super::codec::DecodeErrorKind::WrongType {
1848 expected: "no underscore form for a complex type",
1849 }));
1850 }
1851 let value = value.ok_or_else(|| {
1852 path.error(super::super::codec::DecodeErrorKind::MissingProperty)
1853 })?;
1854 let inner = super::super::codec::Json::from_json(
1855 super::super::codec::expect_object(
1856 super::super::codec::expect_single(value, path)?,
1857 path,
1858 )?,
1859 path,
1860 )?;
1861 Ok(Self::Coding(Box::new(inner)))
1862 }
1863 "ContactPoint" => {
1864 if element.is_some() {
1865 return Err(path.error(super::super::codec::DecodeErrorKind::WrongType {
1866 expected: "no underscore form for a complex type",
1867 }));
1868 }
1869 let value = value.ok_or_else(|| {
1870 path.error(super::super::codec::DecodeErrorKind::MissingProperty)
1871 })?;
1872 let inner = super::super::codec::Json::from_json(
1873 super::super::codec::expect_object(
1874 super::super::codec::expect_single(value, path)?,
1875 path,
1876 )?,
1877 path,
1878 )?;
1879 Ok(Self::ContactPoint(Box::new(inner)))
1880 }
1881 "Count" => {
1882 if element.is_some() {
1883 return Err(path.error(super::super::codec::DecodeErrorKind::WrongType {
1884 expected: "no underscore form for a complex type",
1885 }));
1886 }
1887 let value = value.ok_or_else(|| {
1888 path.error(super::super::codec::DecodeErrorKind::MissingProperty)
1889 })?;
1890 let inner = super::super::codec::Json::from_json(
1891 super::super::codec::expect_object(
1892 super::super::codec::expect_single(value, path)?,
1893 path,
1894 )?,
1895 path,
1896 )?;
1897 Ok(Self::Count(Box::new(inner)))
1898 }
1899 "Distance" => {
1900 if element.is_some() {
1901 return Err(path.error(super::super::codec::DecodeErrorKind::WrongType {
1902 expected: "no underscore form for a complex type",
1903 }));
1904 }
1905 let value = value.ok_or_else(|| {
1906 path.error(super::super::codec::DecodeErrorKind::MissingProperty)
1907 })?;
1908 let inner = super::super::codec::Json::from_json(
1909 super::super::codec::expect_object(
1910 super::super::codec::expect_single(value, path)?,
1911 path,
1912 )?,
1913 path,
1914 )?;
1915 Ok(Self::Distance(Box::new(inner)))
1916 }
1917 "Duration" => {
1918 if element.is_some() {
1919 return Err(path.error(super::super::codec::DecodeErrorKind::WrongType {
1920 expected: "no underscore form for a complex type",
1921 }));
1922 }
1923 let value = value.ok_or_else(|| {
1924 path.error(super::super::codec::DecodeErrorKind::MissingProperty)
1925 })?;
1926 let inner = super::super::codec::Json::from_json(
1927 super::super::codec::expect_object(
1928 super::super::codec::expect_single(value, path)?,
1929 path,
1930 )?,
1931 path,
1932 )?;
1933 Ok(Self::Duration(Box::new(inner)))
1934 }
1935 "HumanName" => {
1936 if element.is_some() {
1937 return Err(path.error(super::super::codec::DecodeErrorKind::WrongType {
1938 expected: "no underscore form for a complex type",
1939 }));
1940 }
1941 let value = value.ok_or_else(|| {
1942 path.error(super::super::codec::DecodeErrorKind::MissingProperty)
1943 })?;
1944 let inner = super::super::codec::Json::from_json(
1945 super::super::codec::expect_object(
1946 super::super::codec::expect_single(value, path)?,
1947 path,
1948 )?,
1949 path,
1950 )?;
1951 Ok(Self::HumanName(Box::new(inner)))
1952 }
1953 "Identifier" => {
1954 if element.is_some() {
1955 return Err(path.error(super::super::codec::DecodeErrorKind::WrongType {
1956 expected: "no underscore form for a complex type",
1957 }));
1958 }
1959 let value = value.ok_or_else(|| {
1960 path.error(super::super::codec::DecodeErrorKind::MissingProperty)
1961 })?;
1962 let inner = super::super::codec::Json::from_json(
1963 super::super::codec::expect_object(
1964 super::super::codec::expect_single(value, path)?,
1965 path,
1966 )?,
1967 path,
1968 )?;
1969 Ok(Self::Identifier(Box::new(inner)))
1970 }
1971 "Money" => {
1972 if element.is_some() {
1973 return Err(path.error(super::super::codec::DecodeErrorKind::WrongType {
1974 expected: "no underscore form for a complex type",
1975 }));
1976 }
1977 let value = value.ok_or_else(|| {
1978 path.error(super::super::codec::DecodeErrorKind::MissingProperty)
1979 })?;
1980 let inner = super::super::codec::Json::from_json(
1981 super::super::codec::expect_object(
1982 super::super::codec::expect_single(value, path)?,
1983 path,
1984 )?,
1985 path,
1986 )?;
1987 Ok(Self::Money(Box::new(inner)))
1988 }
1989 "Period" => {
1990 if element.is_some() {
1991 return Err(path.error(super::super::codec::DecodeErrorKind::WrongType {
1992 expected: "no underscore form for a complex type",
1993 }));
1994 }
1995 let value = value.ok_or_else(|| {
1996 path.error(super::super::codec::DecodeErrorKind::MissingProperty)
1997 })?;
1998 let inner = super::super::codec::Json::from_json(
1999 super::super::codec::expect_object(
2000 super::super::codec::expect_single(value, path)?,
2001 path,
2002 )?,
2003 path,
2004 )?;
2005 Ok(Self::Period(Box::new(inner)))
2006 }
2007 "Quantity" => {
2008 if element.is_some() {
2009 return Err(path.error(super::super::codec::DecodeErrorKind::WrongType {
2010 expected: "no underscore form for a complex type",
2011 }));
2012 }
2013 let value = value.ok_or_else(|| {
2014 path.error(super::super::codec::DecodeErrorKind::MissingProperty)
2015 })?;
2016 let inner = super::super::codec::Json::from_json(
2017 super::super::codec::expect_object(
2018 super::super::codec::expect_single(value, path)?,
2019 path,
2020 )?,
2021 path,
2022 )?;
2023 Ok(Self::Quantity(Box::new(inner)))
2024 }
2025 "Range" => {
2026 if element.is_some() {
2027 return Err(path.error(super::super::codec::DecodeErrorKind::WrongType {
2028 expected: "no underscore form for a complex type",
2029 }));
2030 }
2031 let value = value.ok_or_else(|| {
2032 path.error(super::super::codec::DecodeErrorKind::MissingProperty)
2033 })?;
2034 let inner = super::super::codec::Json::from_json(
2035 super::super::codec::expect_object(
2036 super::super::codec::expect_single(value, path)?,
2037 path,
2038 )?,
2039 path,
2040 )?;
2041 Ok(Self::Range(Box::new(inner)))
2042 }
2043 "Ratio" => {
2044 if element.is_some() {
2045 return Err(path.error(super::super::codec::DecodeErrorKind::WrongType {
2046 expected: "no underscore form for a complex type",
2047 }));
2048 }
2049 let value = value.ok_or_else(|| {
2050 path.error(super::super::codec::DecodeErrorKind::MissingProperty)
2051 })?;
2052 let inner = super::super::codec::Json::from_json(
2053 super::super::codec::expect_object(
2054 super::super::codec::expect_single(value, path)?,
2055 path,
2056 )?,
2057 path,
2058 )?;
2059 Ok(Self::Ratio(Box::new(inner)))
2060 }
2061 "RatioRange" => {
2062 if element.is_some() {
2063 return Err(path.error(super::super::codec::DecodeErrorKind::WrongType {
2064 expected: "no underscore form for a complex type",
2065 }));
2066 }
2067 let value = value.ok_or_else(|| {
2068 path.error(super::super::codec::DecodeErrorKind::MissingProperty)
2069 })?;
2070 let inner = super::super::codec::Json::from_json(
2071 super::super::codec::expect_object(
2072 super::super::codec::expect_single(value, path)?,
2073 path,
2074 )?,
2075 path,
2076 )?;
2077 Ok(Self::RatioRange(Box::new(inner)))
2078 }
2079 "Reference" => {
2080 if element.is_some() {
2081 return Err(path.error(super::super::codec::DecodeErrorKind::WrongType {
2082 expected: "no underscore form for a complex type",
2083 }));
2084 }
2085 let value = value.ok_or_else(|| {
2086 path.error(super::super::codec::DecodeErrorKind::MissingProperty)
2087 })?;
2088 let inner = super::super::codec::Json::from_json(
2089 super::super::codec::expect_object(
2090 super::super::codec::expect_single(value, path)?,
2091 path,
2092 )?,
2093 path,
2094 )?;
2095 Ok(Self::Reference(Box::new(inner)))
2096 }
2097 "SampledData" => {
2098 if element.is_some() {
2099 return Err(path.error(super::super::codec::DecodeErrorKind::WrongType {
2100 expected: "no underscore form for a complex type",
2101 }));
2102 }
2103 let value = value.ok_or_else(|| {
2104 path.error(super::super::codec::DecodeErrorKind::MissingProperty)
2105 })?;
2106 let inner = super::super::codec::Json::from_json(
2107 super::super::codec::expect_object(
2108 super::super::codec::expect_single(value, path)?,
2109 path,
2110 )?,
2111 path,
2112 )?;
2113 Ok(Self::SampledData(Box::new(inner)))
2114 }
2115 "Signature" => {
2116 if element.is_some() {
2117 return Err(path.error(super::super::codec::DecodeErrorKind::WrongType {
2118 expected: "no underscore form for a complex type",
2119 }));
2120 }
2121 let value = value.ok_or_else(|| {
2122 path.error(super::super::codec::DecodeErrorKind::MissingProperty)
2123 })?;
2124 let inner = super::super::codec::Json::from_json(
2125 super::super::codec::expect_object(
2126 super::super::codec::expect_single(value, path)?,
2127 path,
2128 )?,
2129 path,
2130 )?;
2131 Ok(Self::Signature(Box::new(inner)))
2132 }
2133 "Timing" => {
2134 if element.is_some() {
2135 return Err(path.error(super::super::codec::DecodeErrorKind::WrongType {
2136 expected: "no underscore form for a complex type",
2137 }));
2138 }
2139 let value = value.ok_or_else(|| {
2140 path.error(super::super::codec::DecodeErrorKind::MissingProperty)
2141 })?;
2142 let inner = super::super::codec::Json::from_json(
2143 super::super::codec::expect_object(
2144 super::super::codec::expect_single(value, path)?,
2145 path,
2146 )?,
2147 path,
2148 )?;
2149 Ok(Self::Timing(Box::new(inner)))
2150 }
2151 "ContactDetail" => {
2152 if element.is_some() {
2153 return Err(path.error(super::super::codec::DecodeErrorKind::WrongType {
2154 expected: "no underscore form for a complex type",
2155 }));
2156 }
2157 let value = value.ok_or_else(|| {
2158 path.error(super::super::codec::DecodeErrorKind::MissingProperty)
2159 })?;
2160 let inner = super::super::codec::Json::from_json(
2161 super::super::codec::expect_object(
2162 super::super::codec::expect_single(value, path)?,
2163 path,
2164 )?,
2165 path,
2166 )?;
2167 Ok(Self::ContactDetail(Box::new(inner)))
2168 }
2169 "DataRequirement" => {
2170 if element.is_some() {
2171 return Err(path.error(super::super::codec::DecodeErrorKind::WrongType {
2172 expected: "no underscore form for a complex type",
2173 }));
2174 }
2175 let value = value.ok_or_else(|| {
2176 path.error(super::super::codec::DecodeErrorKind::MissingProperty)
2177 })?;
2178 let inner = super::super::codec::Json::from_json(
2179 super::super::codec::expect_object(
2180 super::super::codec::expect_single(value, path)?,
2181 path,
2182 )?,
2183 path,
2184 )?;
2185 Ok(Self::DataRequirement(Box::new(inner)))
2186 }
2187 "Expression" => {
2188 if element.is_some() {
2189 return Err(path.error(super::super::codec::DecodeErrorKind::WrongType {
2190 expected: "no underscore form for a complex type",
2191 }));
2192 }
2193 let value = value.ok_or_else(|| {
2194 path.error(super::super::codec::DecodeErrorKind::MissingProperty)
2195 })?;
2196 let inner = super::super::codec::Json::from_json(
2197 super::super::codec::expect_object(
2198 super::super::codec::expect_single(value, path)?,
2199 path,
2200 )?,
2201 path,
2202 )?;
2203 Ok(Self::Expression(Box::new(inner)))
2204 }
2205 "ParameterDefinition" => {
2206 if element.is_some() {
2207 return Err(path.error(super::super::codec::DecodeErrorKind::WrongType {
2208 expected: "no underscore form for a complex type",
2209 }));
2210 }
2211 let value = value.ok_or_else(|| {
2212 path.error(super::super::codec::DecodeErrorKind::MissingProperty)
2213 })?;
2214 let inner = super::super::codec::Json::from_json(
2215 super::super::codec::expect_object(
2216 super::super::codec::expect_single(value, path)?,
2217 path,
2218 )?,
2219 path,
2220 )?;
2221 Ok(Self::ParameterDefinition(Box::new(inner)))
2222 }
2223 "RelatedArtifact" => {
2224 if element.is_some() {
2225 return Err(path.error(super::super::codec::DecodeErrorKind::WrongType {
2226 expected: "no underscore form for a complex type",
2227 }));
2228 }
2229 let value = value.ok_or_else(|| {
2230 path.error(super::super::codec::DecodeErrorKind::MissingProperty)
2231 })?;
2232 let inner = super::super::codec::Json::from_json(
2233 super::super::codec::expect_object(
2234 super::super::codec::expect_single(value, path)?,
2235 path,
2236 )?,
2237 path,
2238 )?;
2239 Ok(Self::RelatedArtifact(Box::new(inner)))
2240 }
2241 "TriggerDefinition" => {
2242 if element.is_some() {
2243 return Err(path.error(super::super::codec::DecodeErrorKind::WrongType {
2244 expected: "no underscore form for a complex type",
2245 }));
2246 }
2247 let value = value.ok_or_else(|| {
2248 path.error(super::super::codec::DecodeErrorKind::MissingProperty)
2249 })?;
2250 let inner = super::super::codec::Json::from_json(
2251 super::super::codec::expect_object(
2252 super::super::codec::expect_single(value, path)?,
2253 path,
2254 )?,
2255 path,
2256 )?;
2257 Ok(Self::TriggerDefinition(Box::new(inner)))
2258 }
2259 "UsageContext" => {
2260 if element.is_some() {
2261 return Err(path.error(super::super::codec::DecodeErrorKind::WrongType {
2262 expected: "no underscore form for a complex type",
2263 }));
2264 }
2265 let value = value.ok_or_else(|| {
2266 path.error(super::super::codec::DecodeErrorKind::MissingProperty)
2267 })?;
2268 let inner = super::super::codec::Json::from_json(
2269 super::super::codec::expect_object(
2270 super::super::codec::expect_single(value, path)?,
2271 path,
2272 )?,
2273 path,
2274 )?;
2275 Ok(Self::UsageContext(Box::new(inner)))
2276 }
2277 "Availability" => {
2278 if element.is_some() {
2279 return Err(path.error(super::super::codec::DecodeErrorKind::WrongType {
2280 expected: "no underscore form for a complex type",
2281 }));
2282 }
2283 let value = value.ok_or_else(|| {
2284 path.error(super::super::codec::DecodeErrorKind::MissingProperty)
2285 })?;
2286 let inner = super::super::codec::Json::from_json(
2287 super::super::codec::expect_object(
2288 super::super::codec::expect_single(value, path)?,
2289 path,
2290 )?,
2291 path,
2292 )?;
2293 Ok(Self::Availability(Box::new(inner)))
2294 }
2295 "ExtendedContactDetail" => {
2296 if element.is_some() {
2297 return Err(path.error(super::super::codec::DecodeErrorKind::WrongType {
2298 expected: "no underscore form for a complex type",
2299 }));
2300 }
2301 let value = value.ok_or_else(|| {
2302 path.error(super::super::codec::DecodeErrorKind::MissingProperty)
2303 })?;
2304 let inner = super::super::codec::Json::from_json(
2305 super::super::codec::expect_object(
2306 super::super::codec::expect_single(value, path)?,
2307 path,
2308 )?,
2309 path,
2310 )?;
2311 Ok(Self::ExtendedContactDetail(Box::new(inner)))
2312 }
2313 "Dosage" => {
2314 if element.is_some() {
2315 return Err(path.error(super::super::codec::DecodeErrorKind::WrongType {
2316 expected: "no underscore form for a complex type",
2317 }));
2318 }
2319 let value = value.ok_or_else(|| {
2320 path.error(super::super::codec::DecodeErrorKind::MissingProperty)
2321 })?;
2322 let inner = super::super::codec::Json::from_json(
2323 super::super::codec::expect_object(
2324 super::super::codec::expect_single(value, path)?,
2325 path,
2326 )?,
2327 path,
2328 )?;
2329 Ok(Self::Dosage(Box::new(inner)))
2330 }
2331 "Meta" => {
2332 if element.is_some() {
2333 return Err(path.error(super::super::codec::DecodeErrorKind::WrongType {
2334 expected: "no underscore form for a complex type",
2335 }));
2336 }
2337 let value = value.ok_or_else(|| {
2338 path.error(super::super::codec::DecodeErrorKind::MissingProperty)
2339 })?;
2340 let inner = super::super::codec::Json::from_json(
2341 super::super::codec::expect_object(
2342 super::super::codec::expect_single(value, path)?,
2343 path,
2344 )?,
2345 path,
2346 )?;
2347 Ok(Self::Meta(Box::new(inner)))
2348 }
2349 _ => Err(path.error(super::super::codec::DecodeErrorKind::UnknownProperty)),
2350 }
2351 }
2352}