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