1use super::*;
2#[cfg_attr(feature = "derive-debug", derive(Debug))]
4#[cfg_attr(feature = "derive-clone", derive(Clone))]
5pub struct MedicalCode {
6 pub r#code_value: Vec<CodeValueProperty>,
8 pub r#coding_system: Vec<CodingSystemProperty>,
10 pub r#in_code_set: Vec<InCodeSetProperty>,
12 pub r#in_defined_term_set: Vec<InDefinedTermSetProperty>,
14 pub r#term_code: Vec<TermCodeProperty>,
16 pub r#code: Vec<CodeProperty>,
18 pub r#funding: Vec<FundingProperty>,
20 pub r#guideline: Vec<GuidelineProperty>,
22 pub r#legal_status: Vec<LegalStatusProperty>,
24 pub r#medicine_system: Vec<MedicineSystemProperty>,
26 pub r#recognizing_authority: Vec<RecognizingAuthorityProperty>,
28 pub r#relevant_specialty: Vec<RelevantSpecialtyProperty>,
30 pub r#study: Vec<StudyProperty>,
32 pub r#additional_type: Vec<AdditionalTypeProperty>,
34 pub r#alternate_name: Vec<AlternateNameProperty>,
36 pub r#description: Vec<DescriptionProperty>,
38 pub r#disambiguating_description: Vec<DisambiguatingDescriptionProperty>,
40 pub r#identifier: Vec<IdentifierProperty>,
42 pub r#image: Vec<ImageProperty>,
44 pub r#main_entity_of_page: Vec<MainEntityOfPageProperty>,
46 pub r#name: Vec<NameProperty>,
48 pub r#potential_action: Vec<PotentialActionProperty>,
50 pub r#same_as: Vec<SameAsProperty>,
52 pub r#subject_of: Vec<SubjectOfProperty>,
54 pub r#url: Vec<UrlProperty>,
56}
57pub trait MedicalCodeTrait {
59 fn get_code_value(&self) -> &[CodeValueProperty];
61 fn take_code_value(&mut self) -> Vec<CodeValueProperty>;
63 fn get_coding_system(&self) -> &[CodingSystemProperty];
65 fn take_coding_system(&mut self) -> Vec<CodingSystemProperty>;
67}
68impl MedicalCodeTrait for MedicalCode {
69 fn get_code_value(&self) -> &[CodeValueProperty] {
70 self.r#code_value.as_slice()
71 }
72 fn take_code_value(&mut self) -> Vec<CodeValueProperty> {
73 std::mem::take(&mut self.r#code_value)
74 }
75 fn get_coding_system(&self) -> &[CodingSystemProperty] {
76 self.r#coding_system.as_slice()
77 }
78 fn take_coding_system(&mut self) -> Vec<CodingSystemProperty> {
79 std::mem::take(&mut self.r#coding_system)
80 }
81}
82impl CategoryCodeTrait for MedicalCode {
83 fn get_code_value(&self) -> &[CodeValueProperty] {
84 self.r#code_value.as_slice()
85 }
86 fn take_code_value(&mut self) -> Vec<CodeValueProperty> {
87 std::mem::take(&mut self.r#code_value)
88 }
89 fn get_in_code_set(&self) -> &[InCodeSetProperty] {
90 self.r#in_code_set.as_slice()
91 }
92 fn take_in_code_set(&mut self) -> Vec<InCodeSetProperty> {
93 std::mem::take(&mut self.r#in_code_set)
94 }
95}
96impl DefinedTermTrait for MedicalCode {
97 fn get_in_defined_term_set(&self) -> &[InDefinedTermSetProperty] {
98 self.r#in_defined_term_set.as_slice()
99 }
100 fn take_in_defined_term_set(&mut self) -> Vec<InDefinedTermSetProperty> {
101 std::mem::take(&mut self.r#in_defined_term_set)
102 }
103 fn get_term_code(&self) -> &[TermCodeProperty] {
104 self.r#term_code.as_slice()
105 }
106 fn take_term_code(&mut self) -> Vec<TermCodeProperty> {
107 std::mem::take(&mut self.r#term_code)
108 }
109}
110impl MedicalEntityTrait for MedicalCode {
111 fn get_code(&self) -> &[CodeProperty] {
112 self.r#code.as_slice()
113 }
114 fn take_code(&mut self) -> Vec<CodeProperty> {
115 std::mem::take(&mut self.r#code)
116 }
117 fn get_funding(&self) -> &[FundingProperty] {
118 self.r#funding.as_slice()
119 }
120 fn take_funding(&mut self) -> Vec<FundingProperty> {
121 std::mem::take(&mut self.r#funding)
122 }
123 fn get_guideline(&self) -> &[GuidelineProperty] {
124 self.r#guideline.as_slice()
125 }
126 fn take_guideline(&mut self) -> Vec<GuidelineProperty> {
127 std::mem::take(&mut self.r#guideline)
128 }
129 fn get_legal_status(&self) -> &[LegalStatusProperty] {
130 self.r#legal_status.as_slice()
131 }
132 fn take_legal_status(&mut self) -> Vec<LegalStatusProperty> {
133 std::mem::take(&mut self.r#legal_status)
134 }
135 fn get_medicine_system(&self) -> &[MedicineSystemProperty] {
136 self.r#medicine_system.as_slice()
137 }
138 fn take_medicine_system(&mut self) -> Vec<MedicineSystemProperty> {
139 std::mem::take(&mut self.r#medicine_system)
140 }
141 fn get_recognizing_authority(&self) -> &[RecognizingAuthorityProperty] {
142 self.r#recognizing_authority.as_slice()
143 }
144 fn take_recognizing_authority(&mut self) -> Vec<RecognizingAuthorityProperty> {
145 std::mem::take(&mut self.r#recognizing_authority)
146 }
147 fn get_relevant_specialty(&self) -> &[RelevantSpecialtyProperty] {
148 self.r#relevant_specialty.as_slice()
149 }
150 fn take_relevant_specialty(&mut self) -> Vec<RelevantSpecialtyProperty> {
151 std::mem::take(&mut self.r#relevant_specialty)
152 }
153 fn get_study(&self) -> &[StudyProperty] {
154 self.r#study.as_slice()
155 }
156 fn take_study(&mut self) -> Vec<StudyProperty> {
157 std::mem::take(&mut self.r#study)
158 }
159}
160impl MedicalIntangibleTrait for MedicalCode {}
161impl ThingTrait for MedicalCode {
162 fn get_additional_type(&self) -> &[AdditionalTypeProperty] {
163 self.r#additional_type.as_slice()
164 }
165 fn take_additional_type(&mut self) -> Vec<AdditionalTypeProperty> {
166 std::mem::take(&mut self.r#additional_type)
167 }
168 fn get_alternate_name(&self) -> &[AlternateNameProperty] {
169 self.r#alternate_name.as_slice()
170 }
171 fn take_alternate_name(&mut self) -> Vec<AlternateNameProperty> {
172 std::mem::take(&mut self.r#alternate_name)
173 }
174 fn get_description(&self) -> &[DescriptionProperty] {
175 self.r#description.as_slice()
176 }
177 fn take_description(&mut self) -> Vec<DescriptionProperty> {
178 std::mem::take(&mut self.r#description)
179 }
180 fn get_disambiguating_description(&self) -> &[DisambiguatingDescriptionProperty] {
181 self.r#disambiguating_description.as_slice()
182 }
183 fn take_disambiguating_description(&mut self) -> Vec<DisambiguatingDescriptionProperty> {
184 std::mem::take(&mut self.r#disambiguating_description)
185 }
186 fn get_identifier(&self) -> &[IdentifierProperty] {
187 self.r#identifier.as_slice()
188 }
189 fn take_identifier(&mut self) -> Vec<IdentifierProperty> {
190 std::mem::take(&mut self.r#identifier)
191 }
192 fn get_image(&self) -> &[ImageProperty] {
193 self.r#image.as_slice()
194 }
195 fn take_image(&mut self) -> Vec<ImageProperty> {
196 std::mem::take(&mut self.r#image)
197 }
198 fn get_main_entity_of_page(&self) -> &[MainEntityOfPageProperty] {
199 self.r#main_entity_of_page.as_slice()
200 }
201 fn take_main_entity_of_page(&mut self) -> Vec<MainEntityOfPageProperty> {
202 std::mem::take(&mut self.r#main_entity_of_page)
203 }
204 fn get_name(&self) -> &[NameProperty] {
205 self.r#name.as_slice()
206 }
207 fn take_name(&mut self) -> Vec<NameProperty> {
208 std::mem::take(&mut self.r#name)
209 }
210 fn get_potential_action(&self) -> &[PotentialActionProperty] {
211 self.r#potential_action.as_slice()
212 }
213 fn take_potential_action(&mut self) -> Vec<PotentialActionProperty> {
214 std::mem::take(&mut self.r#potential_action)
215 }
216 fn get_same_as(&self) -> &[SameAsProperty] {
217 self.r#same_as.as_slice()
218 }
219 fn take_same_as(&mut self) -> Vec<SameAsProperty> {
220 std::mem::take(&mut self.r#same_as)
221 }
222 fn get_subject_of(&self) -> &[SubjectOfProperty] {
223 self.r#subject_of.as_slice()
224 }
225 fn take_subject_of(&mut self) -> Vec<SubjectOfProperty> {
226 std::mem::take(&mut self.r#subject_of)
227 }
228 fn get_url(&self) -> &[UrlProperty] {
229 self.r#url.as_slice()
230 }
231 fn take_url(&mut self) -> Vec<UrlProperty> {
232 std::mem::take(&mut self.r#url)
233 }
234}
235#[cfg(feature = "serde")]
236mod serde {
237 use std::{fmt, fmt::Formatter};
238
239 use ::serde::{
240 de, de::Visitor, ser::SerializeStruct, Deserialize, Deserializer, Serialize, Serializer,
241 };
242
243 use super::*;
244 impl Serialize for MedicalCode {
245 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
246 where
247 S: Serializer,
248 {
249 let len: usize = [
250 !Vec::is_empty(&self.r#code_value) as usize,
251 !Vec::is_empty(&self.r#coding_system) as usize,
252 !Vec::is_empty(&self.r#in_code_set) as usize,
253 !Vec::is_empty(&self.r#in_defined_term_set) as usize,
254 !Vec::is_empty(&self.r#term_code) as usize,
255 !Vec::is_empty(&self.r#code) as usize,
256 !Vec::is_empty(&self.r#funding) as usize,
257 !Vec::is_empty(&self.r#guideline) as usize,
258 !Vec::is_empty(&self.r#legal_status) as usize,
259 !Vec::is_empty(&self.r#medicine_system) as usize,
260 !Vec::is_empty(&self.r#recognizing_authority) as usize,
261 !Vec::is_empty(&self.r#relevant_specialty) as usize,
262 !Vec::is_empty(&self.r#study) as usize,
263 !Vec::is_empty(&self.r#additional_type) as usize,
264 !Vec::is_empty(&self.r#alternate_name) as usize,
265 !Vec::is_empty(&self.r#description) as usize,
266 !Vec::is_empty(&self.r#disambiguating_description) as usize,
267 !Vec::is_empty(&self.r#identifier) as usize,
268 !Vec::is_empty(&self.r#image) as usize,
269 !Vec::is_empty(&self.r#main_entity_of_page) as usize,
270 !Vec::is_empty(&self.r#name) as usize,
271 !Vec::is_empty(&self.r#potential_action) as usize,
272 !Vec::is_empty(&self.r#same_as) as usize,
273 !Vec::is_empty(&self.r#subject_of) as usize,
274 !Vec::is_empty(&self.r#url) as usize,
275 ]
276 .iter()
277 .sum();
278 let mut serialize_struct =
279 Serializer::serialize_struct(serializer, "MedicalCode", len)?;
280 if !Vec::is_empty(&self.r#code_value) {
281 serialize_struct.serialize_field("codeValue", {
282 struct SerializeWith<'a>(&'a Vec<CodeValueProperty>);
283 impl<'a> Serialize for SerializeWith<'a> {
284 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
285 where
286 S: Serializer,
287 {
288 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
289 self.0, serializer,
290 )
291 }
292 }
293 &SerializeWith(&self.r#code_value)
294 })?;
295 } else {
296 serialize_struct.skip_field("codeValue")?;
297 }
298 if !Vec::is_empty(&self.r#coding_system) {
299 serialize_struct.serialize_field("codingSystem", {
300 struct SerializeWith<'a>(&'a Vec<CodingSystemProperty>);
301 impl<'a> Serialize for SerializeWith<'a> {
302 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
303 where
304 S: Serializer,
305 {
306 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
307 self.0, serializer,
308 )
309 }
310 }
311 &SerializeWith(&self.r#coding_system)
312 })?;
313 } else {
314 serialize_struct.skip_field("codingSystem")?;
315 }
316 if !Vec::is_empty(&self.r#in_code_set) {
317 serialize_struct.serialize_field("inCodeSet", {
318 struct SerializeWith<'a>(&'a Vec<InCodeSetProperty>);
319 impl<'a> Serialize for SerializeWith<'a> {
320 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
321 where
322 S: Serializer,
323 {
324 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
325 self.0, serializer,
326 )
327 }
328 }
329 &SerializeWith(&self.r#in_code_set)
330 })?;
331 } else {
332 serialize_struct.skip_field("inCodeSet")?;
333 }
334 if !Vec::is_empty(&self.r#in_defined_term_set) {
335 serialize_struct.serialize_field("inDefinedTermSet", {
336 struct SerializeWith<'a>(&'a Vec<InDefinedTermSetProperty>);
337 impl<'a> Serialize for SerializeWith<'a> {
338 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
339 where
340 S: Serializer,
341 {
342 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
343 self.0, serializer,
344 )
345 }
346 }
347 &SerializeWith(&self.r#in_defined_term_set)
348 })?;
349 } else {
350 serialize_struct.skip_field("inDefinedTermSet")?;
351 }
352 if !Vec::is_empty(&self.r#term_code) {
353 serialize_struct.serialize_field("termCode", {
354 struct SerializeWith<'a>(&'a Vec<TermCodeProperty>);
355 impl<'a> Serialize for SerializeWith<'a> {
356 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
357 where
358 S: Serializer,
359 {
360 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
361 self.0, serializer,
362 )
363 }
364 }
365 &SerializeWith(&self.r#term_code)
366 })?;
367 } else {
368 serialize_struct.skip_field("termCode")?;
369 }
370 if !Vec::is_empty(&self.r#code) {
371 serialize_struct.serialize_field("code", {
372 struct SerializeWith<'a>(&'a Vec<CodeProperty>);
373 impl<'a> Serialize for SerializeWith<'a> {
374 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
375 where
376 S: Serializer,
377 {
378 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
379 self.0, serializer,
380 )
381 }
382 }
383 &SerializeWith(&self.r#code)
384 })?;
385 } else {
386 serialize_struct.skip_field("code")?;
387 }
388 if !Vec::is_empty(&self.r#funding) {
389 serialize_struct.serialize_field("funding", {
390 struct SerializeWith<'a>(&'a Vec<FundingProperty>);
391 impl<'a> Serialize for SerializeWith<'a> {
392 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
393 where
394 S: Serializer,
395 {
396 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
397 self.0, serializer,
398 )
399 }
400 }
401 &SerializeWith(&self.r#funding)
402 })?;
403 } else {
404 serialize_struct.skip_field("funding")?;
405 }
406 if !Vec::is_empty(&self.r#guideline) {
407 serialize_struct.serialize_field("guideline", {
408 struct SerializeWith<'a>(&'a Vec<GuidelineProperty>);
409 impl<'a> Serialize for SerializeWith<'a> {
410 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
411 where
412 S: Serializer,
413 {
414 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
415 self.0, serializer,
416 )
417 }
418 }
419 &SerializeWith(&self.r#guideline)
420 })?;
421 } else {
422 serialize_struct.skip_field("guideline")?;
423 }
424 if !Vec::is_empty(&self.r#legal_status) {
425 serialize_struct.serialize_field("legalStatus", {
426 struct SerializeWith<'a>(&'a Vec<LegalStatusProperty>);
427 impl<'a> Serialize for SerializeWith<'a> {
428 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
429 where
430 S: Serializer,
431 {
432 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
433 self.0, serializer,
434 )
435 }
436 }
437 &SerializeWith(&self.r#legal_status)
438 })?;
439 } else {
440 serialize_struct.skip_field("legalStatus")?;
441 }
442 if !Vec::is_empty(&self.r#medicine_system) {
443 serialize_struct.serialize_field("medicineSystem", {
444 struct SerializeWith<'a>(&'a Vec<MedicineSystemProperty>);
445 impl<'a> Serialize for SerializeWith<'a> {
446 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
447 where
448 S: Serializer,
449 {
450 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
451 self.0, serializer,
452 )
453 }
454 }
455 &SerializeWith(&self.r#medicine_system)
456 })?;
457 } else {
458 serialize_struct.skip_field("medicineSystem")?;
459 }
460 if !Vec::is_empty(&self.r#recognizing_authority) {
461 serialize_struct.serialize_field("recognizingAuthority", {
462 struct SerializeWith<'a>(&'a Vec<RecognizingAuthorityProperty>);
463 impl<'a> Serialize for SerializeWith<'a> {
464 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
465 where
466 S: Serializer,
467 {
468 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
469 self.0, serializer,
470 )
471 }
472 }
473 &SerializeWith(&self.r#recognizing_authority)
474 })?;
475 } else {
476 serialize_struct.skip_field("recognizingAuthority")?;
477 }
478 if !Vec::is_empty(&self.r#relevant_specialty) {
479 serialize_struct.serialize_field("relevantSpecialty", {
480 struct SerializeWith<'a>(&'a Vec<RelevantSpecialtyProperty>);
481 impl<'a> Serialize for SerializeWith<'a> {
482 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
483 where
484 S: Serializer,
485 {
486 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
487 self.0, serializer,
488 )
489 }
490 }
491 &SerializeWith(&self.r#relevant_specialty)
492 })?;
493 } else {
494 serialize_struct.skip_field("relevantSpecialty")?;
495 }
496 if !Vec::is_empty(&self.r#study) {
497 serialize_struct.serialize_field("study", {
498 struct SerializeWith<'a>(&'a Vec<StudyProperty>);
499 impl<'a> Serialize for SerializeWith<'a> {
500 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
501 where
502 S: Serializer,
503 {
504 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
505 self.0, serializer,
506 )
507 }
508 }
509 &SerializeWith(&self.r#study)
510 })?;
511 } else {
512 serialize_struct.skip_field("study")?;
513 }
514 if !Vec::is_empty(&self.r#additional_type) {
515 serialize_struct.serialize_field("additionalType", {
516 struct SerializeWith<'a>(&'a Vec<AdditionalTypeProperty>);
517 impl<'a> Serialize for SerializeWith<'a> {
518 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
519 where
520 S: Serializer,
521 {
522 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
523 self.0, serializer,
524 )
525 }
526 }
527 &SerializeWith(&self.r#additional_type)
528 })?;
529 } else {
530 serialize_struct.skip_field("additionalType")?;
531 }
532 if !Vec::is_empty(&self.r#alternate_name) {
533 serialize_struct.serialize_field("alternateName", {
534 struct SerializeWith<'a>(&'a Vec<AlternateNameProperty>);
535 impl<'a> Serialize for SerializeWith<'a> {
536 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
537 where
538 S: Serializer,
539 {
540 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
541 self.0, serializer,
542 )
543 }
544 }
545 &SerializeWith(&self.r#alternate_name)
546 })?;
547 } else {
548 serialize_struct.skip_field("alternateName")?;
549 }
550 if !Vec::is_empty(&self.r#description) {
551 serialize_struct.serialize_field("description", {
552 struct SerializeWith<'a>(&'a Vec<DescriptionProperty>);
553 impl<'a> Serialize for SerializeWith<'a> {
554 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
555 where
556 S: Serializer,
557 {
558 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
559 self.0, serializer,
560 )
561 }
562 }
563 &SerializeWith(&self.r#description)
564 })?;
565 } else {
566 serialize_struct.skip_field("description")?;
567 }
568 if !Vec::is_empty(&self.r#disambiguating_description) {
569 serialize_struct.serialize_field("disambiguatingDescription", {
570 struct SerializeWith<'a>(&'a Vec<DisambiguatingDescriptionProperty>);
571 impl<'a> Serialize for SerializeWith<'a> {
572 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
573 where
574 S: Serializer,
575 {
576 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
577 self.0, serializer,
578 )
579 }
580 }
581 &SerializeWith(&self.r#disambiguating_description)
582 })?;
583 } else {
584 serialize_struct.skip_field("disambiguatingDescription")?;
585 }
586 if !Vec::is_empty(&self.r#identifier) {
587 serialize_struct.serialize_field("identifier", {
588 struct SerializeWith<'a>(&'a Vec<IdentifierProperty>);
589 impl<'a> Serialize for SerializeWith<'a> {
590 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
591 where
592 S: Serializer,
593 {
594 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
595 self.0, serializer,
596 )
597 }
598 }
599 &SerializeWith(&self.r#identifier)
600 })?;
601 } else {
602 serialize_struct.skip_field("identifier")?;
603 }
604 if !Vec::is_empty(&self.r#image) {
605 serialize_struct.serialize_field("image", {
606 struct SerializeWith<'a>(&'a Vec<ImageProperty>);
607 impl<'a> Serialize for SerializeWith<'a> {
608 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
609 where
610 S: Serializer,
611 {
612 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
613 self.0, serializer,
614 )
615 }
616 }
617 &SerializeWith(&self.r#image)
618 })?;
619 } else {
620 serialize_struct.skip_field("image")?;
621 }
622 if !Vec::is_empty(&self.r#main_entity_of_page) {
623 serialize_struct.serialize_field("mainEntityOfPage", {
624 struct SerializeWith<'a>(&'a Vec<MainEntityOfPageProperty>);
625 impl<'a> Serialize for SerializeWith<'a> {
626 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
627 where
628 S: Serializer,
629 {
630 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
631 self.0, serializer,
632 )
633 }
634 }
635 &SerializeWith(&self.r#main_entity_of_page)
636 })?;
637 } else {
638 serialize_struct.skip_field("mainEntityOfPage")?;
639 }
640 if !Vec::is_empty(&self.r#name) {
641 serialize_struct.serialize_field("name", {
642 struct SerializeWith<'a>(&'a Vec<NameProperty>);
643 impl<'a> Serialize for SerializeWith<'a> {
644 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
645 where
646 S: Serializer,
647 {
648 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
649 self.0, serializer,
650 )
651 }
652 }
653 &SerializeWith(&self.r#name)
654 })?;
655 } else {
656 serialize_struct.skip_field("name")?;
657 }
658 if !Vec::is_empty(&self.r#potential_action) {
659 serialize_struct.serialize_field("potentialAction", {
660 struct SerializeWith<'a>(&'a Vec<PotentialActionProperty>);
661 impl<'a> Serialize for SerializeWith<'a> {
662 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
663 where
664 S: Serializer,
665 {
666 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
667 self.0, serializer,
668 )
669 }
670 }
671 &SerializeWith(&self.r#potential_action)
672 })?;
673 } else {
674 serialize_struct.skip_field("potentialAction")?;
675 }
676 if !Vec::is_empty(&self.r#same_as) {
677 serialize_struct.serialize_field("sameAs", {
678 struct SerializeWith<'a>(&'a Vec<SameAsProperty>);
679 impl<'a> Serialize for SerializeWith<'a> {
680 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
681 where
682 S: Serializer,
683 {
684 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
685 self.0, serializer,
686 )
687 }
688 }
689 &SerializeWith(&self.r#same_as)
690 })?;
691 } else {
692 serialize_struct.skip_field("sameAs")?;
693 }
694 if !Vec::is_empty(&self.r#subject_of) {
695 serialize_struct.serialize_field("subjectOf", {
696 struct SerializeWith<'a>(&'a Vec<SubjectOfProperty>);
697 impl<'a> Serialize for SerializeWith<'a> {
698 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
699 where
700 S: Serializer,
701 {
702 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
703 self.0, serializer,
704 )
705 }
706 }
707 &SerializeWith(&self.r#subject_of)
708 })?;
709 } else {
710 serialize_struct.skip_field("subjectOf")?;
711 }
712 if !Vec::is_empty(&self.r#url) {
713 serialize_struct.serialize_field("url", {
714 struct SerializeWith<'a>(&'a Vec<UrlProperty>);
715 impl<'a> Serialize for SerializeWith<'a> {
716 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
717 where
718 S: Serializer,
719 {
720 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
721 self.0, serializer,
722 )
723 }
724 }
725 &SerializeWith(&self.r#url)
726 })?;
727 } else {
728 serialize_struct.skip_field("url")?;
729 }
730 serialize_struct.end()
731 }
732 }
733 impl<'de> Deserialize<'de> for MedicalCode {
734 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
735 where
736 D: Deserializer<'de>,
737 {
738 enum Field {
739 CodeValue,
740 CodingSystem,
741 InCodeSet,
742 InDefinedTermSet,
743 TermCode,
744 Code,
745 Funding,
746 Guideline,
747 LegalStatus,
748 MedicineSystem,
749 RecognizingAuthority,
750 RelevantSpecialty,
751 Study,
752 AdditionalType,
753 AlternateName,
754 Description,
755 DisambiguatingDescription,
756 Identifier,
757 Image,
758 MainEntityOfPage,
759 Name,
760 PotentialAction,
761 SameAs,
762 SubjectOf,
763 Url,
764 Ignore,
765 }
766 struct FieldVisitor;
767 impl<'de> Visitor<'de> for FieldVisitor {
768 type Value = Field;
769 fn expecting(&self, formatter: &mut Formatter) -> fmt::Result {
770 formatter.write_str("field identifier")
771 }
772 fn visit_str<E>(self, value: &str) -> Result<Self::Value, E>
773 where
774 E: de::Error,
775 {
776 match value {
777 "codeValue" => Ok(Field::CodeValue),
778 "codingSystem" => Ok(Field::CodingSystem),
779 "inCodeSet" => Ok(Field::InCodeSet),
780 "inDefinedTermSet" => Ok(Field::InDefinedTermSet),
781 "termCode" => Ok(Field::TermCode),
782 "code" => Ok(Field::Code),
783 "funding" => Ok(Field::Funding),
784 "guideline" => Ok(Field::Guideline),
785 "legalStatus" => Ok(Field::LegalStatus),
786 "medicineSystem" => Ok(Field::MedicineSystem),
787 "recognizingAuthority" => Ok(Field::RecognizingAuthority),
788 "relevantSpecialty" => Ok(Field::RelevantSpecialty),
789 "study" => Ok(Field::Study),
790 "additionalType" => Ok(Field::AdditionalType),
791 "alternateName" => Ok(Field::AlternateName),
792 "description" => Ok(Field::Description),
793 "disambiguatingDescription" => Ok(Field::DisambiguatingDescription),
794 "identifier" => Ok(Field::Identifier),
795 "image" => Ok(Field::Image),
796 "mainEntityOfPage" => Ok(Field::MainEntityOfPage),
797 "name" => Ok(Field::Name),
798 "potentialAction" => Ok(Field::PotentialAction),
799 "sameAs" => Ok(Field::SameAs),
800 "subjectOf" => Ok(Field::SubjectOf),
801 "url" => Ok(Field::Url),
802 "id" | "type" => Ok(Field::Ignore),
803 _ => Err(de::Error::unknown_field(value, FIELDS)),
804 }
805 }
806 fn visit_bytes<E>(self, value: &[u8]) -> Result<Self::Value, E>
807 where
808 E: de::Error,
809 {
810 match value {
811 b"codeValue" => Ok(Field::CodeValue),
812 b"codingSystem" => Ok(Field::CodingSystem),
813 b"inCodeSet" => Ok(Field::InCodeSet),
814 b"inDefinedTermSet" => Ok(Field::InDefinedTermSet),
815 b"termCode" => Ok(Field::TermCode),
816 b"code" => Ok(Field::Code),
817 b"funding" => Ok(Field::Funding),
818 b"guideline" => Ok(Field::Guideline),
819 b"legalStatus" => Ok(Field::LegalStatus),
820 b"medicineSystem" => Ok(Field::MedicineSystem),
821 b"recognizingAuthority" => Ok(Field::RecognizingAuthority),
822 b"relevantSpecialty" => Ok(Field::RelevantSpecialty),
823 b"study" => Ok(Field::Study),
824 b"additionalType" => Ok(Field::AdditionalType),
825 b"alternateName" => Ok(Field::AlternateName),
826 b"description" => Ok(Field::Description),
827 b"disambiguatingDescription" => Ok(Field::DisambiguatingDescription),
828 b"identifier" => Ok(Field::Identifier),
829 b"image" => Ok(Field::Image),
830 b"mainEntityOfPage" => Ok(Field::MainEntityOfPage),
831 b"name" => Ok(Field::Name),
832 b"potentialAction" => Ok(Field::PotentialAction),
833 b"sameAs" => Ok(Field::SameAs),
834 b"subjectOf" => Ok(Field::SubjectOf),
835 b"url" => Ok(Field::Url),
836 b"id" | b"type" => Ok(Field::Ignore),
837 _ => {
838 let value = &String::from_utf8_lossy(value);
839 Err(de::Error::unknown_field(value, FIELDS))
840 }
841 }
842 }
843 }
844 impl<'de> Deserialize<'de> for Field {
845 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
846 where
847 D: Deserializer<'de>,
848 {
849 deserializer.deserialize_identifier(FieldVisitor)
850 }
851 }
852 struct ClassVisitor;
853 impl<'de> Visitor<'de> for ClassVisitor {
854 type Value = MedicalCode;
855 fn expecting(&self, formatter: &mut Formatter) -> fmt::Result {
856 formatter.write_str("schema.org schema MedicalCode")
857 }
858 fn visit_map<A>(self, mut map: A) -> Result<Self::Value, A::Error>
859 where
860 A: de::MapAccess<'de>,
861 {
862 let mut r#code_value_property = None;
863 let mut r#coding_system_property = None;
864 let mut r#in_code_set_property = None;
865 let mut r#in_defined_term_set_property = None;
866 let mut r#term_code_property = None;
867 let mut r#code_property = None;
868 let mut r#funding_property = None;
869 let mut r#guideline_property = None;
870 let mut r#legal_status_property = None;
871 let mut r#medicine_system_property = None;
872 let mut r#recognizing_authority_property = None;
873 let mut r#relevant_specialty_property = None;
874 let mut r#study_property = None;
875 let mut r#additional_type_property = None;
876 let mut r#alternate_name_property = None;
877 let mut r#description_property = None;
878 let mut r#disambiguating_description_property = None;
879 let mut r#identifier_property = None;
880 let mut r#image_property = None;
881 let mut r#main_entity_of_page_property = None;
882 let mut r#name_property = None;
883 let mut r#potential_action_property = None;
884 let mut r#same_as_property = None;
885 let mut r#subject_of_property = None;
886 let mut r#url_property = None;
887 while let Some(key) = map.next_key::<Field>()? {
888 match key {
889 Field::CodeValue => {
890 if r#code_value_property.is_some() {
891 return Err(<A::Error as de::Error>::duplicate_field(
892 "codeValue",
893 ));
894 }
895 r#code_value_property = Some({
896 struct DeserializeWith(Vec<CodeValueProperty>);
897 impl<'de> Deserialize<'de> for DeserializeWith {
898 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
899 where
900 D: Deserializer<'de>,
901 {
902 Ok(DeserializeWith(serde_with::As::<
903 serde_with::OneOrMany<serde_with::Same>,
904 >::deserialize(deserializer)?))
905 }
906 }
907 match map.next_value::<DeserializeWith>() {
908 Ok(deserialize_with) => deserialize_with.0,
909 Err(err) => {
910 return Err(err);
911 }
912 }
913 });
914 }
915 Field::CodingSystem => {
916 if r#coding_system_property.is_some() {
917 return Err(<A::Error as de::Error>::duplicate_field(
918 "codingSystem",
919 ));
920 }
921 r#coding_system_property = Some({
922 struct DeserializeWith(Vec<CodingSystemProperty>);
923 impl<'de> Deserialize<'de> for DeserializeWith {
924 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
925 where
926 D: Deserializer<'de>,
927 {
928 Ok(DeserializeWith(serde_with::As::<
929 serde_with::OneOrMany<serde_with::Same>,
930 >::deserialize(deserializer)?))
931 }
932 }
933 match map.next_value::<DeserializeWith>() {
934 Ok(deserialize_with) => deserialize_with.0,
935 Err(err) => {
936 return Err(err);
937 }
938 }
939 });
940 }
941 Field::InCodeSet => {
942 if r#in_code_set_property.is_some() {
943 return Err(<A::Error as de::Error>::duplicate_field(
944 "inCodeSet",
945 ));
946 }
947 r#in_code_set_property = Some({
948 struct DeserializeWith(Vec<InCodeSetProperty>);
949 impl<'de> Deserialize<'de> for DeserializeWith {
950 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
951 where
952 D: Deserializer<'de>,
953 {
954 Ok(DeserializeWith(serde_with::As::<
955 serde_with::OneOrMany<serde_with::Same>,
956 >::deserialize(deserializer)?))
957 }
958 }
959 match map.next_value::<DeserializeWith>() {
960 Ok(deserialize_with) => deserialize_with.0,
961 Err(err) => {
962 return Err(err);
963 }
964 }
965 });
966 }
967 Field::InDefinedTermSet => {
968 if r#in_defined_term_set_property.is_some() {
969 return Err(<A::Error as de::Error>::duplicate_field(
970 "inDefinedTermSet",
971 ));
972 }
973 r#in_defined_term_set_property = Some({
974 struct DeserializeWith(Vec<InDefinedTermSetProperty>);
975 impl<'de> Deserialize<'de> for DeserializeWith {
976 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
977 where
978 D: Deserializer<'de>,
979 {
980 Ok(DeserializeWith(serde_with::As::<
981 serde_with::OneOrMany<serde_with::Same>,
982 >::deserialize(deserializer)?))
983 }
984 }
985 match map.next_value::<DeserializeWith>() {
986 Ok(deserialize_with) => deserialize_with.0,
987 Err(err) => {
988 return Err(err);
989 }
990 }
991 });
992 }
993 Field::TermCode => {
994 if r#term_code_property.is_some() {
995 return Err(<A::Error as de::Error>::duplicate_field(
996 "termCode",
997 ));
998 }
999 r#term_code_property = Some({
1000 struct DeserializeWith(Vec<TermCodeProperty>);
1001 impl<'de> Deserialize<'de> for DeserializeWith {
1002 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1003 where
1004 D: Deserializer<'de>,
1005 {
1006 Ok(DeserializeWith(serde_with::As::<
1007 serde_with::OneOrMany<serde_with::Same>,
1008 >::deserialize(deserializer)?))
1009 }
1010 }
1011 match map.next_value::<DeserializeWith>() {
1012 Ok(deserialize_with) => deserialize_with.0,
1013 Err(err) => {
1014 return Err(err);
1015 }
1016 }
1017 });
1018 }
1019 Field::Code => {
1020 if r#code_property.is_some() {
1021 return Err(<A::Error as de::Error>::duplicate_field("code"));
1022 }
1023 r#code_property = Some({
1024 struct DeserializeWith(Vec<CodeProperty>);
1025 impl<'de> Deserialize<'de> for DeserializeWith {
1026 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1027 where
1028 D: Deserializer<'de>,
1029 {
1030 Ok(DeserializeWith(serde_with::As::<
1031 serde_with::OneOrMany<serde_with::Same>,
1032 >::deserialize(deserializer)?))
1033 }
1034 }
1035 match map.next_value::<DeserializeWith>() {
1036 Ok(deserialize_with) => deserialize_with.0,
1037 Err(err) => {
1038 return Err(err);
1039 }
1040 }
1041 });
1042 }
1043 Field::Funding => {
1044 if r#funding_property.is_some() {
1045 return Err(<A::Error as de::Error>::duplicate_field(
1046 "funding",
1047 ));
1048 }
1049 r#funding_property = Some({
1050 struct DeserializeWith(Vec<FundingProperty>);
1051 impl<'de> Deserialize<'de> for DeserializeWith {
1052 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1053 where
1054 D: Deserializer<'de>,
1055 {
1056 Ok(DeserializeWith(serde_with::As::<
1057 serde_with::OneOrMany<serde_with::Same>,
1058 >::deserialize(deserializer)?))
1059 }
1060 }
1061 match map.next_value::<DeserializeWith>() {
1062 Ok(deserialize_with) => deserialize_with.0,
1063 Err(err) => {
1064 return Err(err);
1065 }
1066 }
1067 });
1068 }
1069 Field::Guideline => {
1070 if r#guideline_property.is_some() {
1071 return Err(<A::Error as de::Error>::duplicate_field(
1072 "guideline",
1073 ));
1074 }
1075 r#guideline_property = Some({
1076 struct DeserializeWith(Vec<GuidelineProperty>);
1077 impl<'de> Deserialize<'de> for DeserializeWith {
1078 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1079 where
1080 D: Deserializer<'de>,
1081 {
1082 Ok(DeserializeWith(serde_with::As::<
1083 serde_with::OneOrMany<serde_with::Same>,
1084 >::deserialize(deserializer)?))
1085 }
1086 }
1087 match map.next_value::<DeserializeWith>() {
1088 Ok(deserialize_with) => deserialize_with.0,
1089 Err(err) => {
1090 return Err(err);
1091 }
1092 }
1093 });
1094 }
1095 Field::LegalStatus => {
1096 if r#legal_status_property.is_some() {
1097 return Err(<A::Error as de::Error>::duplicate_field(
1098 "legalStatus",
1099 ));
1100 }
1101 r#legal_status_property = Some({
1102 struct DeserializeWith(Vec<LegalStatusProperty>);
1103 impl<'de> Deserialize<'de> for DeserializeWith {
1104 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1105 where
1106 D: Deserializer<'de>,
1107 {
1108 Ok(DeserializeWith(serde_with::As::<
1109 serde_with::OneOrMany<serde_with::Same>,
1110 >::deserialize(deserializer)?))
1111 }
1112 }
1113 match map.next_value::<DeserializeWith>() {
1114 Ok(deserialize_with) => deserialize_with.0,
1115 Err(err) => {
1116 return Err(err);
1117 }
1118 }
1119 });
1120 }
1121 Field::MedicineSystem => {
1122 if r#medicine_system_property.is_some() {
1123 return Err(<A::Error as de::Error>::duplicate_field(
1124 "medicineSystem",
1125 ));
1126 }
1127 r#medicine_system_property = Some({
1128 struct DeserializeWith(Vec<MedicineSystemProperty>);
1129 impl<'de> Deserialize<'de> for DeserializeWith {
1130 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1131 where
1132 D: Deserializer<'de>,
1133 {
1134 Ok(DeserializeWith(serde_with::As::<
1135 serde_with::OneOrMany<serde_with::Same>,
1136 >::deserialize(deserializer)?))
1137 }
1138 }
1139 match map.next_value::<DeserializeWith>() {
1140 Ok(deserialize_with) => deserialize_with.0,
1141 Err(err) => {
1142 return Err(err);
1143 }
1144 }
1145 });
1146 }
1147 Field::RecognizingAuthority => {
1148 if r#recognizing_authority_property.is_some() {
1149 return Err(<A::Error as de::Error>::duplicate_field(
1150 "recognizingAuthority",
1151 ));
1152 }
1153 r#recognizing_authority_property = Some({
1154 struct DeserializeWith(Vec<RecognizingAuthorityProperty>);
1155 impl<'de> Deserialize<'de> for DeserializeWith {
1156 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1157 where
1158 D: Deserializer<'de>,
1159 {
1160 Ok(DeserializeWith(serde_with::As::<
1161 serde_with::OneOrMany<serde_with::Same>,
1162 >::deserialize(deserializer)?))
1163 }
1164 }
1165 match map.next_value::<DeserializeWith>() {
1166 Ok(deserialize_with) => deserialize_with.0,
1167 Err(err) => {
1168 return Err(err);
1169 }
1170 }
1171 });
1172 }
1173 Field::RelevantSpecialty => {
1174 if r#relevant_specialty_property.is_some() {
1175 return Err(<A::Error as de::Error>::duplicate_field(
1176 "relevantSpecialty",
1177 ));
1178 }
1179 r#relevant_specialty_property = Some({
1180 struct DeserializeWith(Vec<RelevantSpecialtyProperty>);
1181 impl<'de> Deserialize<'de> for DeserializeWith {
1182 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1183 where
1184 D: Deserializer<'de>,
1185 {
1186 Ok(DeserializeWith(serde_with::As::<
1187 serde_with::OneOrMany<serde_with::Same>,
1188 >::deserialize(deserializer)?))
1189 }
1190 }
1191 match map.next_value::<DeserializeWith>() {
1192 Ok(deserialize_with) => deserialize_with.0,
1193 Err(err) => {
1194 return Err(err);
1195 }
1196 }
1197 });
1198 }
1199 Field::Study => {
1200 if r#study_property.is_some() {
1201 return Err(<A::Error as de::Error>::duplicate_field("study"));
1202 }
1203 r#study_property = Some({
1204 struct DeserializeWith(Vec<StudyProperty>);
1205 impl<'de> Deserialize<'de> for DeserializeWith {
1206 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1207 where
1208 D: Deserializer<'de>,
1209 {
1210 Ok(DeserializeWith(serde_with::As::<
1211 serde_with::OneOrMany<serde_with::Same>,
1212 >::deserialize(deserializer)?))
1213 }
1214 }
1215 match map.next_value::<DeserializeWith>() {
1216 Ok(deserialize_with) => deserialize_with.0,
1217 Err(err) => {
1218 return Err(err);
1219 }
1220 }
1221 });
1222 }
1223 Field::AdditionalType => {
1224 if r#additional_type_property.is_some() {
1225 return Err(<A::Error as de::Error>::duplicate_field(
1226 "additionalType",
1227 ));
1228 }
1229 r#additional_type_property = Some({
1230 struct DeserializeWith(Vec<AdditionalTypeProperty>);
1231 impl<'de> Deserialize<'de> for DeserializeWith {
1232 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1233 where
1234 D: Deserializer<'de>,
1235 {
1236 Ok(DeserializeWith(serde_with::As::<
1237 serde_with::OneOrMany<serde_with::Same>,
1238 >::deserialize(deserializer)?))
1239 }
1240 }
1241 match map.next_value::<DeserializeWith>() {
1242 Ok(deserialize_with) => deserialize_with.0,
1243 Err(err) => {
1244 return Err(err);
1245 }
1246 }
1247 });
1248 }
1249 Field::AlternateName => {
1250 if r#alternate_name_property.is_some() {
1251 return Err(<A::Error as de::Error>::duplicate_field(
1252 "alternateName",
1253 ));
1254 }
1255 r#alternate_name_property = Some({
1256 struct DeserializeWith(Vec<AlternateNameProperty>);
1257 impl<'de> Deserialize<'de> for DeserializeWith {
1258 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1259 where
1260 D: Deserializer<'de>,
1261 {
1262 Ok(DeserializeWith(serde_with::As::<
1263 serde_with::OneOrMany<serde_with::Same>,
1264 >::deserialize(deserializer)?))
1265 }
1266 }
1267 match map.next_value::<DeserializeWith>() {
1268 Ok(deserialize_with) => deserialize_with.0,
1269 Err(err) => {
1270 return Err(err);
1271 }
1272 }
1273 });
1274 }
1275 Field::Description => {
1276 if r#description_property.is_some() {
1277 return Err(<A::Error as de::Error>::duplicate_field(
1278 "description",
1279 ));
1280 }
1281 r#description_property = Some({
1282 struct DeserializeWith(Vec<DescriptionProperty>);
1283 impl<'de> Deserialize<'de> for DeserializeWith {
1284 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1285 where
1286 D: Deserializer<'de>,
1287 {
1288 Ok(DeserializeWith(serde_with::As::<
1289 serde_with::OneOrMany<serde_with::Same>,
1290 >::deserialize(deserializer)?))
1291 }
1292 }
1293 match map.next_value::<DeserializeWith>() {
1294 Ok(deserialize_with) => deserialize_with.0,
1295 Err(err) => {
1296 return Err(err);
1297 }
1298 }
1299 });
1300 }
1301 Field::DisambiguatingDescription => {
1302 if r#disambiguating_description_property.is_some() {
1303 return Err(<A::Error as de::Error>::duplicate_field(
1304 "disambiguatingDescription",
1305 ));
1306 }
1307 r#disambiguating_description_property = Some({
1308 struct DeserializeWith(Vec<DisambiguatingDescriptionProperty>);
1309 impl<'de> Deserialize<'de> for DeserializeWith {
1310 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1311 where
1312 D: Deserializer<'de>,
1313 {
1314 Ok(DeserializeWith(serde_with::As::<
1315 serde_with::OneOrMany<serde_with::Same>,
1316 >::deserialize(deserializer)?))
1317 }
1318 }
1319 match map.next_value::<DeserializeWith>() {
1320 Ok(deserialize_with) => deserialize_with.0,
1321 Err(err) => {
1322 return Err(err);
1323 }
1324 }
1325 });
1326 }
1327 Field::Identifier => {
1328 if r#identifier_property.is_some() {
1329 return Err(<A::Error as de::Error>::duplicate_field(
1330 "identifier",
1331 ));
1332 }
1333 r#identifier_property = Some({
1334 struct DeserializeWith(Vec<IdentifierProperty>);
1335 impl<'de> Deserialize<'de> for DeserializeWith {
1336 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1337 where
1338 D: Deserializer<'de>,
1339 {
1340 Ok(DeserializeWith(serde_with::As::<
1341 serde_with::OneOrMany<serde_with::Same>,
1342 >::deserialize(deserializer)?))
1343 }
1344 }
1345 match map.next_value::<DeserializeWith>() {
1346 Ok(deserialize_with) => deserialize_with.0,
1347 Err(err) => {
1348 return Err(err);
1349 }
1350 }
1351 });
1352 }
1353 Field::Image => {
1354 if r#image_property.is_some() {
1355 return Err(<A::Error as de::Error>::duplicate_field("image"));
1356 }
1357 r#image_property = Some({
1358 struct DeserializeWith(Vec<ImageProperty>);
1359 impl<'de> Deserialize<'de> for DeserializeWith {
1360 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1361 where
1362 D: Deserializer<'de>,
1363 {
1364 Ok(DeserializeWith(serde_with::As::<
1365 serde_with::OneOrMany<serde_with::Same>,
1366 >::deserialize(deserializer)?))
1367 }
1368 }
1369 match map.next_value::<DeserializeWith>() {
1370 Ok(deserialize_with) => deserialize_with.0,
1371 Err(err) => {
1372 return Err(err);
1373 }
1374 }
1375 });
1376 }
1377 Field::MainEntityOfPage => {
1378 if r#main_entity_of_page_property.is_some() {
1379 return Err(<A::Error as de::Error>::duplicate_field(
1380 "mainEntityOfPage",
1381 ));
1382 }
1383 r#main_entity_of_page_property = Some({
1384 struct DeserializeWith(Vec<MainEntityOfPageProperty>);
1385 impl<'de> Deserialize<'de> for DeserializeWith {
1386 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1387 where
1388 D: Deserializer<'de>,
1389 {
1390 Ok(DeserializeWith(serde_with::As::<
1391 serde_with::OneOrMany<serde_with::Same>,
1392 >::deserialize(deserializer)?))
1393 }
1394 }
1395 match map.next_value::<DeserializeWith>() {
1396 Ok(deserialize_with) => deserialize_with.0,
1397 Err(err) => {
1398 return Err(err);
1399 }
1400 }
1401 });
1402 }
1403 Field::Name => {
1404 if r#name_property.is_some() {
1405 return Err(<A::Error as de::Error>::duplicate_field("name"));
1406 }
1407 r#name_property = Some({
1408 struct DeserializeWith(Vec<NameProperty>);
1409 impl<'de> Deserialize<'de> for DeserializeWith {
1410 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1411 where
1412 D: Deserializer<'de>,
1413 {
1414 Ok(DeserializeWith(serde_with::As::<
1415 serde_with::OneOrMany<serde_with::Same>,
1416 >::deserialize(deserializer)?))
1417 }
1418 }
1419 match map.next_value::<DeserializeWith>() {
1420 Ok(deserialize_with) => deserialize_with.0,
1421 Err(err) => {
1422 return Err(err);
1423 }
1424 }
1425 });
1426 }
1427 Field::PotentialAction => {
1428 if r#potential_action_property.is_some() {
1429 return Err(<A::Error as de::Error>::duplicate_field(
1430 "potentialAction",
1431 ));
1432 }
1433 r#potential_action_property = Some({
1434 struct DeserializeWith(Vec<PotentialActionProperty>);
1435 impl<'de> Deserialize<'de> for DeserializeWith {
1436 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1437 where
1438 D: Deserializer<'de>,
1439 {
1440 Ok(DeserializeWith(serde_with::As::<
1441 serde_with::OneOrMany<serde_with::Same>,
1442 >::deserialize(deserializer)?))
1443 }
1444 }
1445 match map.next_value::<DeserializeWith>() {
1446 Ok(deserialize_with) => deserialize_with.0,
1447 Err(err) => {
1448 return Err(err);
1449 }
1450 }
1451 });
1452 }
1453 Field::SameAs => {
1454 if r#same_as_property.is_some() {
1455 return Err(<A::Error as de::Error>::duplicate_field("sameAs"));
1456 }
1457 r#same_as_property = Some({
1458 struct DeserializeWith(Vec<SameAsProperty>);
1459 impl<'de> Deserialize<'de> for DeserializeWith {
1460 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1461 where
1462 D: Deserializer<'de>,
1463 {
1464 Ok(DeserializeWith(serde_with::As::<
1465 serde_with::OneOrMany<serde_with::Same>,
1466 >::deserialize(deserializer)?))
1467 }
1468 }
1469 match map.next_value::<DeserializeWith>() {
1470 Ok(deserialize_with) => deserialize_with.0,
1471 Err(err) => {
1472 return Err(err);
1473 }
1474 }
1475 });
1476 }
1477 Field::SubjectOf => {
1478 if r#subject_of_property.is_some() {
1479 return Err(<A::Error as de::Error>::duplicate_field(
1480 "subjectOf",
1481 ));
1482 }
1483 r#subject_of_property = Some({
1484 struct DeserializeWith(Vec<SubjectOfProperty>);
1485 impl<'de> Deserialize<'de> for DeserializeWith {
1486 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1487 where
1488 D: Deserializer<'de>,
1489 {
1490 Ok(DeserializeWith(serde_with::As::<
1491 serde_with::OneOrMany<serde_with::Same>,
1492 >::deserialize(deserializer)?))
1493 }
1494 }
1495 match map.next_value::<DeserializeWith>() {
1496 Ok(deserialize_with) => deserialize_with.0,
1497 Err(err) => {
1498 return Err(err);
1499 }
1500 }
1501 });
1502 }
1503 Field::Url => {
1504 if r#url_property.is_some() {
1505 return Err(<A::Error as de::Error>::duplicate_field("url"));
1506 }
1507 r#url_property = Some({
1508 struct DeserializeWith(Vec<UrlProperty>);
1509 impl<'de> Deserialize<'de> for DeserializeWith {
1510 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1511 where
1512 D: Deserializer<'de>,
1513 {
1514 Ok(DeserializeWith(serde_with::As::<
1515 serde_with::OneOrMany<serde_with::Same>,
1516 >::deserialize(deserializer)?))
1517 }
1518 }
1519 match map.next_value::<DeserializeWith>() {
1520 Ok(deserialize_with) => deserialize_with.0,
1521 Err(err) => {
1522 return Err(err);
1523 }
1524 }
1525 });
1526 }
1527 Field::Ignore => {
1528 let _ = map.next_value::<de::IgnoredAny>()?;
1529 }
1530 }
1531 }
1532 Ok(MedicalCode {
1533 r#code_value: r#code_value_property.unwrap_or_default(),
1534 r#coding_system: r#coding_system_property.unwrap_or_default(),
1535 r#in_code_set: r#in_code_set_property.unwrap_or_default(),
1536 r#in_defined_term_set: r#in_defined_term_set_property.unwrap_or_default(),
1537 r#term_code: r#term_code_property.unwrap_or_default(),
1538 r#code: r#code_property.unwrap_or_default(),
1539 r#funding: r#funding_property.unwrap_or_default(),
1540 r#guideline: r#guideline_property.unwrap_or_default(),
1541 r#legal_status: r#legal_status_property.unwrap_or_default(),
1542 r#medicine_system: r#medicine_system_property.unwrap_or_default(),
1543 r#recognizing_authority: r#recognizing_authority_property
1544 .unwrap_or_default(),
1545 r#relevant_specialty: r#relevant_specialty_property.unwrap_or_default(),
1546 r#study: r#study_property.unwrap_or_default(),
1547 r#additional_type: r#additional_type_property.unwrap_or_default(),
1548 r#alternate_name: r#alternate_name_property.unwrap_or_default(),
1549 r#description: r#description_property.unwrap_or_default(),
1550 r#disambiguating_description: r#disambiguating_description_property
1551 .unwrap_or_default(),
1552 r#identifier: r#identifier_property.unwrap_or_default(),
1553 r#image: r#image_property.unwrap_or_default(),
1554 r#main_entity_of_page: r#main_entity_of_page_property.unwrap_or_default(),
1555 r#name: r#name_property.unwrap_or_default(),
1556 r#potential_action: r#potential_action_property.unwrap_or_default(),
1557 r#same_as: r#same_as_property.unwrap_or_default(),
1558 r#subject_of: r#subject_of_property.unwrap_or_default(),
1559 r#url: r#url_property.unwrap_or_default(),
1560 })
1561 }
1562 }
1563 const FIELDS: &[&str] = &[
1564 "codeValue",
1565 "codingSystem",
1566 "inCodeSet",
1567 "inDefinedTermSet",
1568 "termCode",
1569 "code",
1570 "funding",
1571 "guideline",
1572 "legalStatus",
1573 "medicineSystem",
1574 "recognizingAuthority",
1575 "relevantSpecialty",
1576 "study",
1577 "additionalType",
1578 "alternateName",
1579 "description",
1580 "disambiguatingDescription",
1581 "identifier",
1582 "image",
1583 "mainEntityOfPage",
1584 "name",
1585 "potentialAction",
1586 "sameAs",
1587 "subjectOf",
1588 "url",
1589 ];
1590 deserializer.deserialize_struct("MedicalCode", FIELDS, ClassVisitor)
1591 }
1592 }
1593}