1use super::*;
2#[cfg_attr(feature = "derive-debug", derive(Debug))]
4#[cfg_attr(feature = "derive-clone", derive(Clone))]
5pub struct MedicalIntangible {
6 pub r#code: Vec<CodeProperty>,
8 pub r#funding: Vec<FundingProperty>,
10 pub r#guideline: Vec<GuidelineProperty>,
12 pub r#legal_status: Vec<LegalStatusProperty>,
14 pub r#medicine_system: Vec<MedicineSystemProperty>,
16 pub r#recognizing_authority: Vec<RecognizingAuthorityProperty>,
18 pub r#relevant_specialty: Vec<RelevantSpecialtyProperty>,
20 pub r#study: Vec<StudyProperty>,
22 pub r#additional_type: Vec<AdditionalTypeProperty>,
24 pub r#alternate_name: Vec<AlternateNameProperty>,
26 pub r#description: Vec<DescriptionProperty>,
28 pub r#disambiguating_description: Vec<DisambiguatingDescriptionProperty>,
30 pub r#identifier: Vec<IdentifierProperty>,
32 pub r#image: Vec<ImageProperty>,
34 pub r#main_entity_of_page: Vec<MainEntityOfPageProperty>,
36 pub r#name: Vec<NameProperty>,
38 pub r#potential_action: Vec<PotentialActionProperty>,
40 pub r#same_as: Vec<SameAsProperty>,
42 pub r#subject_of: Vec<SubjectOfProperty>,
44 pub r#url: Vec<UrlProperty>,
46}
47pub trait MedicalIntangibleTrait {}
49impl MedicalIntangibleTrait for MedicalIntangible {}
50impl MedicalEntityTrait for MedicalIntangible {
51 fn get_code(&self) -> &[CodeProperty] {
52 self.r#code.as_slice()
53 }
54 fn take_code(&mut self) -> Vec<CodeProperty> {
55 std::mem::take(&mut self.r#code)
56 }
57 fn get_funding(&self) -> &[FundingProperty] {
58 self.r#funding.as_slice()
59 }
60 fn take_funding(&mut self) -> Vec<FundingProperty> {
61 std::mem::take(&mut self.r#funding)
62 }
63 fn get_guideline(&self) -> &[GuidelineProperty] {
64 self.r#guideline.as_slice()
65 }
66 fn take_guideline(&mut self) -> Vec<GuidelineProperty> {
67 std::mem::take(&mut self.r#guideline)
68 }
69 fn get_legal_status(&self) -> &[LegalStatusProperty] {
70 self.r#legal_status.as_slice()
71 }
72 fn take_legal_status(&mut self) -> Vec<LegalStatusProperty> {
73 std::mem::take(&mut self.r#legal_status)
74 }
75 fn get_medicine_system(&self) -> &[MedicineSystemProperty] {
76 self.r#medicine_system.as_slice()
77 }
78 fn take_medicine_system(&mut self) -> Vec<MedicineSystemProperty> {
79 std::mem::take(&mut self.r#medicine_system)
80 }
81 fn get_recognizing_authority(&self) -> &[RecognizingAuthorityProperty] {
82 self.r#recognizing_authority.as_slice()
83 }
84 fn take_recognizing_authority(&mut self) -> Vec<RecognizingAuthorityProperty> {
85 std::mem::take(&mut self.r#recognizing_authority)
86 }
87 fn get_relevant_specialty(&self) -> &[RelevantSpecialtyProperty] {
88 self.r#relevant_specialty.as_slice()
89 }
90 fn take_relevant_specialty(&mut self) -> Vec<RelevantSpecialtyProperty> {
91 std::mem::take(&mut self.r#relevant_specialty)
92 }
93 fn get_study(&self) -> &[StudyProperty] {
94 self.r#study.as_slice()
95 }
96 fn take_study(&mut self) -> Vec<StudyProperty> {
97 std::mem::take(&mut self.r#study)
98 }
99}
100impl ThingTrait for MedicalIntangible {
101 fn get_additional_type(&self) -> &[AdditionalTypeProperty] {
102 self.r#additional_type.as_slice()
103 }
104 fn take_additional_type(&mut self) -> Vec<AdditionalTypeProperty> {
105 std::mem::take(&mut self.r#additional_type)
106 }
107 fn get_alternate_name(&self) -> &[AlternateNameProperty] {
108 self.r#alternate_name.as_slice()
109 }
110 fn take_alternate_name(&mut self) -> Vec<AlternateNameProperty> {
111 std::mem::take(&mut self.r#alternate_name)
112 }
113 fn get_description(&self) -> &[DescriptionProperty] {
114 self.r#description.as_slice()
115 }
116 fn take_description(&mut self) -> Vec<DescriptionProperty> {
117 std::mem::take(&mut self.r#description)
118 }
119 fn get_disambiguating_description(&self) -> &[DisambiguatingDescriptionProperty] {
120 self.r#disambiguating_description.as_slice()
121 }
122 fn take_disambiguating_description(&mut self) -> Vec<DisambiguatingDescriptionProperty> {
123 std::mem::take(&mut self.r#disambiguating_description)
124 }
125 fn get_identifier(&self) -> &[IdentifierProperty] {
126 self.r#identifier.as_slice()
127 }
128 fn take_identifier(&mut self) -> Vec<IdentifierProperty> {
129 std::mem::take(&mut self.r#identifier)
130 }
131 fn get_image(&self) -> &[ImageProperty] {
132 self.r#image.as_slice()
133 }
134 fn take_image(&mut self) -> Vec<ImageProperty> {
135 std::mem::take(&mut self.r#image)
136 }
137 fn get_main_entity_of_page(&self) -> &[MainEntityOfPageProperty] {
138 self.r#main_entity_of_page.as_slice()
139 }
140 fn take_main_entity_of_page(&mut self) -> Vec<MainEntityOfPageProperty> {
141 std::mem::take(&mut self.r#main_entity_of_page)
142 }
143 fn get_name(&self) -> &[NameProperty] {
144 self.r#name.as_slice()
145 }
146 fn take_name(&mut self) -> Vec<NameProperty> {
147 std::mem::take(&mut self.r#name)
148 }
149 fn get_potential_action(&self) -> &[PotentialActionProperty] {
150 self.r#potential_action.as_slice()
151 }
152 fn take_potential_action(&mut self) -> Vec<PotentialActionProperty> {
153 std::mem::take(&mut self.r#potential_action)
154 }
155 fn get_same_as(&self) -> &[SameAsProperty] {
156 self.r#same_as.as_slice()
157 }
158 fn take_same_as(&mut self) -> Vec<SameAsProperty> {
159 std::mem::take(&mut self.r#same_as)
160 }
161 fn get_subject_of(&self) -> &[SubjectOfProperty] {
162 self.r#subject_of.as_slice()
163 }
164 fn take_subject_of(&mut self) -> Vec<SubjectOfProperty> {
165 std::mem::take(&mut self.r#subject_of)
166 }
167 fn get_url(&self) -> &[UrlProperty] {
168 self.r#url.as_slice()
169 }
170 fn take_url(&mut self) -> Vec<UrlProperty> {
171 std::mem::take(&mut self.r#url)
172 }
173}
174#[cfg(feature = "serde")]
175mod serde {
176 use std::{fmt, fmt::Formatter};
177
178 use ::serde::{
179 de, de::Visitor, ser::SerializeStruct, Deserialize, Deserializer, Serialize, Serializer,
180 };
181
182 use super::*;
183 impl Serialize for MedicalIntangible {
184 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
185 where
186 S: Serializer,
187 {
188 let len: usize = [
189 !Vec::is_empty(&self.r#code) as usize,
190 !Vec::is_empty(&self.r#funding) as usize,
191 !Vec::is_empty(&self.r#guideline) as usize,
192 !Vec::is_empty(&self.r#legal_status) as usize,
193 !Vec::is_empty(&self.r#medicine_system) as usize,
194 !Vec::is_empty(&self.r#recognizing_authority) as usize,
195 !Vec::is_empty(&self.r#relevant_specialty) as usize,
196 !Vec::is_empty(&self.r#study) as usize,
197 !Vec::is_empty(&self.r#additional_type) as usize,
198 !Vec::is_empty(&self.r#alternate_name) as usize,
199 !Vec::is_empty(&self.r#description) as usize,
200 !Vec::is_empty(&self.r#disambiguating_description) as usize,
201 !Vec::is_empty(&self.r#identifier) as usize,
202 !Vec::is_empty(&self.r#image) as usize,
203 !Vec::is_empty(&self.r#main_entity_of_page) as usize,
204 !Vec::is_empty(&self.r#name) as usize,
205 !Vec::is_empty(&self.r#potential_action) as usize,
206 !Vec::is_empty(&self.r#same_as) as usize,
207 !Vec::is_empty(&self.r#subject_of) as usize,
208 !Vec::is_empty(&self.r#url) as usize,
209 ]
210 .iter()
211 .sum();
212 let mut serialize_struct =
213 Serializer::serialize_struct(serializer, "MedicalIntangible", len)?;
214 if !Vec::is_empty(&self.r#code) {
215 serialize_struct.serialize_field("code", {
216 struct SerializeWith<'a>(&'a Vec<CodeProperty>);
217 impl<'a> Serialize for SerializeWith<'a> {
218 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
219 where
220 S: Serializer,
221 {
222 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
223 self.0, serializer,
224 )
225 }
226 }
227 &SerializeWith(&self.r#code)
228 })?;
229 } else {
230 serialize_struct.skip_field("code")?;
231 }
232 if !Vec::is_empty(&self.r#funding) {
233 serialize_struct.serialize_field("funding", {
234 struct SerializeWith<'a>(&'a Vec<FundingProperty>);
235 impl<'a> Serialize for SerializeWith<'a> {
236 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
237 where
238 S: Serializer,
239 {
240 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
241 self.0, serializer,
242 )
243 }
244 }
245 &SerializeWith(&self.r#funding)
246 })?;
247 } else {
248 serialize_struct.skip_field("funding")?;
249 }
250 if !Vec::is_empty(&self.r#guideline) {
251 serialize_struct.serialize_field("guideline", {
252 struct SerializeWith<'a>(&'a Vec<GuidelineProperty>);
253 impl<'a> Serialize for SerializeWith<'a> {
254 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
255 where
256 S: Serializer,
257 {
258 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
259 self.0, serializer,
260 )
261 }
262 }
263 &SerializeWith(&self.r#guideline)
264 })?;
265 } else {
266 serialize_struct.skip_field("guideline")?;
267 }
268 if !Vec::is_empty(&self.r#legal_status) {
269 serialize_struct.serialize_field("legalStatus", {
270 struct SerializeWith<'a>(&'a Vec<LegalStatusProperty>);
271 impl<'a> Serialize for SerializeWith<'a> {
272 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
273 where
274 S: Serializer,
275 {
276 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
277 self.0, serializer,
278 )
279 }
280 }
281 &SerializeWith(&self.r#legal_status)
282 })?;
283 } else {
284 serialize_struct.skip_field("legalStatus")?;
285 }
286 if !Vec::is_empty(&self.r#medicine_system) {
287 serialize_struct.serialize_field("medicineSystem", {
288 struct SerializeWith<'a>(&'a Vec<MedicineSystemProperty>);
289 impl<'a> Serialize for SerializeWith<'a> {
290 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
291 where
292 S: Serializer,
293 {
294 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
295 self.0, serializer,
296 )
297 }
298 }
299 &SerializeWith(&self.r#medicine_system)
300 })?;
301 } else {
302 serialize_struct.skip_field("medicineSystem")?;
303 }
304 if !Vec::is_empty(&self.r#recognizing_authority) {
305 serialize_struct.serialize_field("recognizingAuthority", {
306 struct SerializeWith<'a>(&'a Vec<RecognizingAuthorityProperty>);
307 impl<'a> Serialize for SerializeWith<'a> {
308 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
309 where
310 S: Serializer,
311 {
312 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
313 self.0, serializer,
314 )
315 }
316 }
317 &SerializeWith(&self.r#recognizing_authority)
318 })?;
319 } else {
320 serialize_struct.skip_field("recognizingAuthority")?;
321 }
322 if !Vec::is_empty(&self.r#relevant_specialty) {
323 serialize_struct.serialize_field("relevantSpecialty", {
324 struct SerializeWith<'a>(&'a Vec<RelevantSpecialtyProperty>);
325 impl<'a> Serialize for SerializeWith<'a> {
326 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
327 where
328 S: Serializer,
329 {
330 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
331 self.0, serializer,
332 )
333 }
334 }
335 &SerializeWith(&self.r#relevant_specialty)
336 })?;
337 } else {
338 serialize_struct.skip_field("relevantSpecialty")?;
339 }
340 if !Vec::is_empty(&self.r#study) {
341 serialize_struct.serialize_field("study", {
342 struct SerializeWith<'a>(&'a Vec<StudyProperty>);
343 impl<'a> Serialize for SerializeWith<'a> {
344 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
345 where
346 S: Serializer,
347 {
348 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
349 self.0, serializer,
350 )
351 }
352 }
353 &SerializeWith(&self.r#study)
354 })?;
355 } else {
356 serialize_struct.skip_field("study")?;
357 }
358 if !Vec::is_empty(&self.r#additional_type) {
359 serialize_struct.serialize_field("additionalType", {
360 struct SerializeWith<'a>(&'a Vec<AdditionalTypeProperty>);
361 impl<'a> Serialize for SerializeWith<'a> {
362 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
363 where
364 S: Serializer,
365 {
366 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
367 self.0, serializer,
368 )
369 }
370 }
371 &SerializeWith(&self.r#additional_type)
372 })?;
373 } else {
374 serialize_struct.skip_field("additionalType")?;
375 }
376 if !Vec::is_empty(&self.r#alternate_name) {
377 serialize_struct.serialize_field("alternateName", {
378 struct SerializeWith<'a>(&'a Vec<AlternateNameProperty>);
379 impl<'a> Serialize for SerializeWith<'a> {
380 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
381 where
382 S: Serializer,
383 {
384 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
385 self.0, serializer,
386 )
387 }
388 }
389 &SerializeWith(&self.r#alternate_name)
390 })?;
391 } else {
392 serialize_struct.skip_field("alternateName")?;
393 }
394 if !Vec::is_empty(&self.r#description) {
395 serialize_struct.serialize_field("description", {
396 struct SerializeWith<'a>(&'a Vec<DescriptionProperty>);
397 impl<'a> Serialize for SerializeWith<'a> {
398 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
399 where
400 S: Serializer,
401 {
402 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
403 self.0, serializer,
404 )
405 }
406 }
407 &SerializeWith(&self.r#description)
408 })?;
409 } else {
410 serialize_struct.skip_field("description")?;
411 }
412 if !Vec::is_empty(&self.r#disambiguating_description) {
413 serialize_struct.serialize_field("disambiguatingDescription", {
414 struct SerializeWith<'a>(&'a Vec<DisambiguatingDescriptionProperty>);
415 impl<'a> Serialize for SerializeWith<'a> {
416 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
417 where
418 S: Serializer,
419 {
420 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
421 self.0, serializer,
422 )
423 }
424 }
425 &SerializeWith(&self.r#disambiguating_description)
426 })?;
427 } else {
428 serialize_struct.skip_field("disambiguatingDescription")?;
429 }
430 if !Vec::is_empty(&self.r#identifier) {
431 serialize_struct.serialize_field("identifier", {
432 struct SerializeWith<'a>(&'a Vec<IdentifierProperty>);
433 impl<'a> Serialize for SerializeWith<'a> {
434 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
435 where
436 S: Serializer,
437 {
438 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
439 self.0, serializer,
440 )
441 }
442 }
443 &SerializeWith(&self.r#identifier)
444 })?;
445 } else {
446 serialize_struct.skip_field("identifier")?;
447 }
448 if !Vec::is_empty(&self.r#image) {
449 serialize_struct.serialize_field("image", {
450 struct SerializeWith<'a>(&'a Vec<ImageProperty>);
451 impl<'a> Serialize for SerializeWith<'a> {
452 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
453 where
454 S: Serializer,
455 {
456 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
457 self.0, serializer,
458 )
459 }
460 }
461 &SerializeWith(&self.r#image)
462 })?;
463 } else {
464 serialize_struct.skip_field("image")?;
465 }
466 if !Vec::is_empty(&self.r#main_entity_of_page) {
467 serialize_struct.serialize_field("mainEntityOfPage", {
468 struct SerializeWith<'a>(&'a Vec<MainEntityOfPageProperty>);
469 impl<'a> Serialize for SerializeWith<'a> {
470 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
471 where
472 S: Serializer,
473 {
474 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
475 self.0, serializer,
476 )
477 }
478 }
479 &SerializeWith(&self.r#main_entity_of_page)
480 })?;
481 } else {
482 serialize_struct.skip_field("mainEntityOfPage")?;
483 }
484 if !Vec::is_empty(&self.r#name) {
485 serialize_struct.serialize_field("name", {
486 struct SerializeWith<'a>(&'a Vec<NameProperty>);
487 impl<'a> Serialize for SerializeWith<'a> {
488 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
489 where
490 S: Serializer,
491 {
492 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
493 self.0, serializer,
494 )
495 }
496 }
497 &SerializeWith(&self.r#name)
498 })?;
499 } else {
500 serialize_struct.skip_field("name")?;
501 }
502 if !Vec::is_empty(&self.r#potential_action) {
503 serialize_struct.serialize_field("potentialAction", {
504 struct SerializeWith<'a>(&'a Vec<PotentialActionProperty>);
505 impl<'a> Serialize for SerializeWith<'a> {
506 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
507 where
508 S: Serializer,
509 {
510 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
511 self.0, serializer,
512 )
513 }
514 }
515 &SerializeWith(&self.r#potential_action)
516 })?;
517 } else {
518 serialize_struct.skip_field("potentialAction")?;
519 }
520 if !Vec::is_empty(&self.r#same_as) {
521 serialize_struct.serialize_field("sameAs", {
522 struct SerializeWith<'a>(&'a Vec<SameAsProperty>);
523 impl<'a> Serialize for SerializeWith<'a> {
524 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
525 where
526 S: Serializer,
527 {
528 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
529 self.0, serializer,
530 )
531 }
532 }
533 &SerializeWith(&self.r#same_as)
534 })?;
535 } else {
536 serialize_struct.skip_field("sameAs")?;
537 }
538 if !Vec::is_empty(&self.r#subject_of) {
539 serialize_struct.serialize_field("subjectOf", {
540 struct SerializeWith<'a>(&'a Vec<SubjectOfProperty>);
541 impl<'a> Serialize for SerializeWith<'a> {
542 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
543 where
544 S: Serializer,
545 {
546 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
547 self.0, serializer,
548 )
549 }
550 }
551 &SerializeWith(&self.r#subject_of)
552 })?;
553 } else {
554 serialize_struct.skip_field("subjectOf")?;
555 }
556 if !Vec::is_empty(&self.r#url) {
557 serialize_struct.serialize_field("url", {
558 struct SerializeWith<'a>(&'a Vec<UrlProperty>);
559 impl<'a> Serialize for SerializeWith<'a> {
560 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
561 where
562 S: Serializer,
563 {
564 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
565 self.0, serializer,
566 )
567 }
568 }
569 &SerializeWith(&self.r#url)
570 })?;
571 } else {
572 serialize_struct.skip_field("url")?;
573 }
574 serialize_struct.end()
575 }
576 }
577 impl<'de> Deserialize<'de> for MedicalIntangible {
578 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
579 where
580 D: Deserializer<'de>,
581 {
582 enum Field {
583 Code,
584 Funding,
585 Guideline,
586 LegalStatus,
587 MedicineSystem,
588 RecognizingAuthority,
589 RelevantSpecialty,
590 Study,
591 AdditionalType,
592 AlternateName,
593 Description,
594 DisambiguatingDescription,
595 Identifier,
596 Image,
597 MainEntityOfPage,
598 Name,
599 PotentialAction,
600 SameAs,
601 SubjectOf,
602 Url,
603 Ignore,
604 }
605 struct FieldVisitor;
606 impl<'de> Visitor<'de> for FieldVisitor {
607 type Value = Field;
608 fn expecting(&self, formatter: &mut Formatter) -> fmt::Result {
609 formatter.write_str("field identifier")
610 }
611 fn visit_str<E>(self, value: &str) -> Result<Self::Value, E>
612 where
613 E: de::Error,
614 {
615 match value {
616 "code" => Ok(Field::Code),
617 "funding" => Ok(Field::Funding),
618 "guideline" => Ok(Field::Guideline),
619 "legalStatus" => Ok(Field::LegalStatus),
620 "medicineSystem" => Ok(Field::MedicineSystem),
621 "recognizingAuthority" => Ok(Field::RecognizingAuthority),
622 "relevantSpecialty" => Ok(Field::RelevantSpecialty),
623 "study" => Ok(Field::Study),
624 "additionalType" => Ok(Field::AdditionalType),
625 "alternateName" => Ok(Field::AlternateName),
626 "description" => Ok(Field::Description),
627 "disambiguatingDescription" => Ok(Field::DisambiguatingDescription),
628 "identifier" => Ok(Field::Identifier),
629 "image" => Ok(Field::Image),
630 "mainEntityOfPage" => Ok(Field::MainEntityOfPage),
631 "name" => Ok(Field::Name),
632 "potentialAction" => Ok(Field::PotentialAction),
633 "sameAs" => Ok(Field::SameAs),
634 "subjectOf" => Ok(Field::SubjectOf),
635 "url" => Ok(Field::Url),
636 "id" | "type" => Ok(Field::Ignore),
637 _ => Err(de::Error::unknown_field(value, FIELDS)),
638 }
639 }
640 fn visit_bytes<E>(self, value: &[u8]) -> Result<Self::Value, E>
641 where
642 E: de::Error,
643 {
644 match value {
645 b"code" => Ok(Field::Code),
646 b"funding" => Ok(Field::Funding),
647 b"guideline" => Ok(Field::Guideline),
648 b"legalStatus" => Ok(Field::LegalStatus),
649 b"medicineSystem" => Ok(Field::MedicineSystem),
650 b"recognizingAuthority" => Ok(Field::RecognizingAuthority),
651 b"relevantSpecialty" => Ok(Field::RelevantSpecialty),
652 b"study" => Ok(Field::Study),
653 b"additionalType" => Ok(Field::AdditionalType),
654 b"alternateName" => Ok(Field::AlternateName),
655 b"description" => Ok(Field::Description),
656 b"disambiguatingDescription" => Ok(Field::DisambiguatingDescription),
657 b"identifier" => Ok(Field::Identifier),
658 b"image" => Ok(Field::Image),
659 b"mainEntityOfPage" => Ok(Field::MainEntityOfPage),
660 b"name" => Ok(Field::Name),
661 b"potentialAction" => Ok(Field::PotentialAction),
662 b"sameAs" => Ok(Field::SameAs),
663 b"subjectOf" => Ok(Field::SubjectOf),
664 b"url" => Ok(Field::Url),
665 b"id" | b"type" => Ok(Field::Ignore),
666 _ => {
667 let value = &String::from_utf8_lossy(value);
668 Err(de::Error::unknown_field(value, FIELDS))
669 }
670 }
671 }
672 }
673 impl<'de> Deserialize<'de> for Field {
674 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
675 where
676 D: Deserializer<'de>,
677 {
678 deserializer.deserialize_identifier(FieldVisitor)
679 }
680 }
681 struct ClassVisitor;
682 impl<'de> Visitor<'de> for ClassVisitor {
683 type Value = MedicalIntangible;
684 fn expecting(&self, formatter: &mut Formatter) -> fmt::Result {
685 formatter.write_str("schema.org schema MedicalIntangible")
686 }
687 fn visit_map<A>(self, mut map: A) -> Result<Self::Value, A::Error>
688 where
689 A: de::MapAccess<'de>,
690 {
691 let mut r#code_property = None;
692 let mut r#funding_property = None;
693 let mut r#guideline_property = None;
694 let mut r#legal_status_property = None;
695 let mut r#medicine_system_property = None;
696 let mut r#recognizing_authority_property = None;
697 let mut r#relevant_specialty_property = None;
698 let mut r#study_property = None;
699 let mut r#additional_type_property = None;
700 let mut r#alternate_name_property = None;
701 let mut r#description_property = None;
702 let mut r#disambiguating_description_property = None;
703 let mut r#identifier_property = None;
704 let mut r#image_property = None;
705 let mut r#main_entity_of_page_property = None;
706 let mut r#name_property = None;
707 let mut r#potential_action_property = None;
708 let mut r#same_as_property = None;
709 let mut r#subject_of_property = None;
710 let mut r#url_property = None;
711 while let Some(key) = map.next_key::<Field>()? {
712 match key {
713 Field::Code => {
714 if r#code_property.is_some() {
715 return Err(<A::Error as de::Error>::duplicate_field("code"));
716 }
717 r#code_property = Some({
718 struct DeserializeWith(Vec<CodeProperty>);
719 impl<'de> Deserialize<'de> for DeserializeWith {
720 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
721 where
722 D: Deserializer<'de>,
723 {
724 Ok(DeserializeWith(serde_with::As::<
725 serde_with::OneOrMany<serde_with::Same>,
726 >::deserialize(deserializer)?))
727 }
728 }
729 match map.next_value::<DeserializeWith>() {
730 Ok(deserialize_with) => deserialize_with.0,
731 Err(err) => {
732 return Err(err);
733 }
734 }
735 });
736 }
737 Field::Funding => {
738 if r#funding_property.is_some() {
739 return Err(<A::Error as de::Error>::duplicate_field(
740 "funding",
741 ));
742 }
743 r#funding_property = Some({
744 struct DeserializeWith(Vec<FundingProperty>);
745 impl<'de> Deserialize<'de> for DeserializeWith {
746 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
747 where
748 D: Deserializer<'de>,
749 {
750 Ok(DeserializeWith(serde_with::As::<
751 serde_with::OneOrMany<serde_with::Same>,
752 >::deserialize(deserializer)?))
753 }
754 }
755 match map.next_value::<DeserializeWith>() {
756 Ok(deserialize_with) => deserialize_with.0,
757 Err(err) => {
758 return Err(err);
759 }
760 }
761 });
762 }
763 Field::Guideline => {
764 if r#guideline_property.is_some() {
765 return Err(<A::Error as de::Error>::duplicate_field(
766 "guideline",
767 ));
768 }
769 r#guideline_property = Some({
770 struct DeserializeWith(Vec<GuidelineProperty>);
771 impl<'de> Deserialize<'de> for DeserializeWith {
772 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
773 where
774 D: Deserializer<'de>,
775 {
776 Ok(DeserializeWith(serde_with::As::<
777 serde_with::OneOrMany<serde_with::Same>,
778 >::deserialize(deserializer)?))
779 }
780 }
781 match map.next_value::<DeserializeWith>() {
782 Ok(deserialize_with) => deserialize_with.0,
783 Err(err) => {
784 return Err(err);
785 }
786 }
787 });
788 }
789 Field::LegalStatus => {
790 if r#legal_status_property.is_some() {
791 return Err(<A::Error as de::Error>::duplicate_field(
792 "legalStatus",
793 ));
794 }
795 r#legal_status_property = Some({
796 struct DeserializeWith(Vec<LegalStatusProperty>);
797 impl<'de> Deserialize<'de> for DeserializeWith {
798 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
799 where
800 D: Deserializer<'de>,
801 {
802 Ok(DeserializeWith(serde_with::As::<
803 serde_with::OneOrMany<serde_with::Same>,
804 >::deserialize(deserializer)?))
805 }
806 }
807 match map.next_value::<DeserializeWith>() {
808 Ok(deserialize_with) => deserialize_with.0,
809 Err(err) => {
810 return Err(err);
811 }
812 }
813 });
814 }
815 Field::MedicineSystem => {
816 if r#medicine_system_property.is_some() {
817 return Err(<A::Error as de::Error>::duplicate_field(
818 "medicineSystem",
819 ));
820 }
821 r#medicine_system_property = Some({
822 struct DeserializeWith(Vec<MedicineSystemProperty>);
823 impl<'de> Deserialize<'de> for DeserializeWith {
824 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
825 where
826 D: Deserializer<'de>,
827 {
828 Ok(DeserializeWith(serde_with::As::<
829 serde_with::OneOrMany<serde_with::Same>,
830 >::deserialize(deserializer)?))
831 }
832 }
833 match map.next_value::<DeserializeWith>() {
834 Ok(deserialize_with) => deserialize_with.0,
835 Err(err) => {
836 return Err(err);
837 }
838 }
839 });
840 }
841 Field::RecognizingAuthority => {
842 if r#recognizing_authority_property.is_some() {
843 return Err(<A::Error as de::Error>::duplicate_field(
844 "recognizingAuthority",
845 ));
846 }
847 r#recognizing_authority_property = Some({
848 struct DeserializeWith(Vec<RecognizingAuthorityProperty>);
849 impl<'de> Deserialize<'de> for DeserializeWith {
850 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
851 where
852 D: Deserializer<'de>,
853 {
854 Ok(DeserializeWith(serde_with::As::<
855 serde_with::OneOrMany<serde_with::Same>,
856 >::deserialize(deserializer)?))
857 }
858 }
859 match map.next_value::<DeserializeWith>() {
860 Ok(deserialize_with) => deserialize_with.0,
861 Err(err) => {
862 return Err(err);
863 }
864 }
865 });
866 }
867 Field::RelevantSpecialty => {
868 if r#relevant_specialty_property.is_some() {
869 return Err(<A::Error as de::Error>::duplicate_field(
870 "relevantSpecialty",
871 ));
872 }
873 r#relevant_specialty_property = Some({
874 struct DeserializeWith(Vec<RelevantSpecialtyProperty>);
875 impl<'de> Deserialize<'de> for DeserializeWith {
876 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
877 where
878 D: Deserializer<'de>,
879 {
880 Ok(DeserializeWith(serde_with::As::<
881 serde_with::OneOrMany<serde_with::Same>,
882 >::deserialize(deserializer)?))
883 }
884 }
885 match map.next_value::<DeserializeWith>() {
886 Ok(deserialize_with) => deserialize_with.0,
887 Err(err) => {
888 return Err(err);
889 }
890 }
891 });
892 }
893 Field::Study => {
894 if r#study_property.is_some() {
895 return Err(<A::Error as de::Error>::duplicate_field("study"));
896 }
897 r#study_property = Some({
898 struct DeserializeWith(Vec<StudyProperty>);
899 impl<'de> Deserialize<'de> for DeserializeWith {
900 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
901 where
902 D: Deserializer<'de>,
903 {
904 Ok(DeserializeWith(serde_with::As::<
905 serde_with::OneOrMany<serde_with::Same>,
906 >::deserialize(deserializer)?))
907 }
908 }
909 match map.next_value::<DeserializeWith>() {
910 Ok(deserialize_with) => deserialize_with.0,
911 Err(err) => {
912 return Err(err);
913 }
914 }
915 });
916 }
917 Field::AdditionalType => {
918 if r#additional_type_property.is_some() {
919 return Err(<A::Error as de::Error>::duplicate_field(
920 "additionalType",
921 ));
922 }
923 r#additional_type_property = Some({
924 struct DeserializeWith(Vec<AdditionalTypeProperty>);
925 impl<'de> Deserialize<'de> for DeserializeWith {
926 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
927 where
928 D: Deserializer<'de>,
929 {
930 Ok(DeserializeWith(serde_with::As::<
931 serde_with::OneOrMany<serde_with::Same>,
932 >::deserialize(deserializer)?))
933 }
934 }
935 match map.next_value::<DeserializeWith>() {
936 Ok(deserialize_with) => deserialize_with.0,
937 Err(err) => {
938 return Err(err);
939 }
940 }
941 });
942 }
943 Field::AlternateName => {
944 if r#alternate_name_property.is_some() {
945 return Err(<A::Error as de::Error>::duplicate_field(
946 "alternateName",
947 ));
948 }
949 r#alternate_name_property = Some({
950 struct DeserializeWith(Vec<AlternateNameProperty>);
951 impl<'de> Deserialize<'de> for DeserializeWith {
952 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
953 where
954 D: Deserializer<'de>,
955 {
956 Ok(DeserializeWith(serde_with::As::<
957 serde_with::OneOrMany<serde_with::Same>,
958 >::deserialize(deserializer)?))
959 }
960 }
961 match map.next_value::<DeserializeWith>() {
962 Ok(deserialize_with) => deserialize_with.0,
963 Err(err) => {
964 return Err(err);
965 }
966 }
967 });
968 }
969 Field::Description => {
970 if r#description_property.is_some() {
971 return Err(<A::Error as de::Error>::duplicate_field(
972 "description",
973 ));
974 }
975 r#description_property = Some({
976 struct DeserializeWith(Vec<DescriptionProperty>);
977 impl<'de> Deserialize<'de> for DeserializeWith {
978 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
979 where
980 D: Deserializer<'de>,
981 {
982 Ok(DeserializeWith(serde_with::As::<
983 serde_with::OneOrMany<serde_with::Same>,
984 >::deserialize(deserializer)?))
985 }
986 }
987 match map.next_value::<DeserializeWith>() {
988 Ok(deserialize_with) => deserialize_with.0,
989 Err(err) => {
990 return Err(err);
991 }
992 }
993 });
994 }
995 Field::DisambiguatingDescription => {
996 if r#disambiguating_description_property.is_some() {
997 return Err(<A::Error as de::Error>::duplicate_field(
998 "disambiguatingDescription",
999 ));
1000 }
1001 r#disambiguating_description_property = Some({
1002 struct DeserializeWith(Vec<DisambiguatingDescriptionProperty>);
1003 impl<'de> Deserialize<'de> for DeserializeWith {
1004 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1005 where
1006 D: Deserializer<'de>,
1007 {
1008 Ok(DeserializeWith(serde_with::As::<
1009 serde_with::OneOrMany<serde_with::Same>,
1010 >::deserialize(deserializer)?))
1011 }
1012 }
1013 match map.next_value::<DeserializeWith>() {
1014 Ok(deserialize_with) => deserialize_with.0,
1015 Err(err) => {
1016 return Err(err);
1017 }
1018 }
1019 });
1020 }
1021 Field::Identifier => {
1022 if r#identifier_property.is_some() {
1023 return Err(<A::Error as de::Error>::duplicate_field(
1024 "identifier",
1025 ));
1026 }
1027 r#identifier_property = Some({
1028 struct DeserializeWith(Vec<IdentifierProperty>);
1029 impl<'de> Deserialize<'de> for DeserializeWith {
1030 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1031 where
1032 D: Deserializer<'de>,
1033 {
1034 Ok(DeserializeWith(serde_with::As::<
1035 serde_with::OneOrMany<serde_with::Same>,
1036 >::deserialize(deserializer)?))
1037 }
1038 }
1039 match map.next_value::<DeserializeWith>() {
1040 Ok(deserialize_with) => deserialize_with.0,
1041 Err(err) => {
1042 return Err(err);
1043 }
1044 }
1045 });
1046 }
1047 Field::Image => {
1048 if r#image_property.is_some() {
1049 return Err(<A::Error as de::Error>::duplicate_field("image"));
1050 }
1051 r#image_property = Some({
1052 struct DeserializeWith(Vec<ImageProperty>);
1053 impl<'de> Deserialize<'de> for DeserializeWith {
1054 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1055 where
1056 D: Deserializer<'de>,
1057 {
1058 Ok(DeserializeWith(serde_with::As::<
1059 serde_with::OneOrMany<serde_with::Same>,
1060 >::deserialize(deserializer)?))
1061 }
1062 }
1063 match map.next_value::<DeserializeWith>() {
1064 Ok(deserialize_with) => deserialize_with.0,
1065 Err(err) => {
1066 return Err(err);
1067 }
1068 }
1069 });
1070 }
1071 Field::MainEntityOfPage => {
1072 if r#main_entity_of_page_property.is_some() {
1073 return Err(<A::Error as de::Error>::duplicate_field(
1074 "mainEntityOfPage",
1075 ));
1076 }
1077 r#main_entity_of_page_property = Some({
1078 struct DeserializeWith(Vec<MainEntityOfPageProperty>);
1079 impl<'de> Deserialize<'de> for DeserializeWith {
1080 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1081 where
1082 D: Deserializer<'de>,
1083 {
1084 Ok(DeserializeWith(serde_with::As::<
1085 serde_with::OneOrMany<serde_with::Same>,
1086 >::deserialize(deserializer)?))
1087 }
1088 }
1089 match map.next_value::<DeserializeWith>() {
1090 Ok(deserialize_with) => deserialize_with.0,
1091 Err(err) => {
1092 return Err(err);
1093 }
1094 }
1095 });
1096 }
1097 Field::Name => {
1098 if r#name_property.is_some() {
1099 return Err(<A::Error as de::Error>::duplicate_field("name"));
1100 }
1101 r#name_property = Some({
1102 struct DeserializeWith(Vec<NameProperty>);
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::PotentialAction => {
1122 if r#potential_action_property.is_some() {
1123 return Err(<A::Error as de::Error>::duplicate_field(
1124 "potentialAction",
1125 ));
1126 }
1127 r#potential_action_property = Some({
1128 struct DeserializeWith(Vec<PotentialActionProperty>);
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::SameAs => {
1148 if r#same_as_property.is_some() {
1149 return Err(<A::Error as de::Error>::duplicate_field("sameAs"));
1150 }
1151 r#same_as_property = Some({
1152 struct DeserializeWith(Vec<SameAsProperty>);
1153 impl<'de> Deserialize<'de> for DeserializeWith {
1154 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1155 where
1156 D: Deserializer<'de>,
1157 {
1158 Ok(DeserializeWith(serde_with::As::<
1159 serde_with::OneOrMany<serde_with::Same>,
1160 >::deserialize(deserializer)?))
1161 }
1162 }
1163 match map.next_value::<DeserializeWith>() {
1164 Ok(deserialize_with) => deserialize_with.0,
1165 Err(err) => {
1166 return Err(err);
1167 }
1168 }
1169 });
1170 }
1171 Field::SubjectOf => {
1172 if r#subject_of_property.is_some() {
1173 return Err(<A::Error as de::Error>::duplicate_field(
1174 "subjectOf",
1175 ));
1176 }
1177 r#subject_of_property = Some({
1178 struct DeserializeWith(Vec<SubjectOfProperty>);
1179 impl<'de> Deserialize<'de> for DeserializeWith {
1180 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1181 where
1182 D: Deserializer<'de>,
1183 {
1184 Ok(DeserializeWith(serde_with::As::<
1185 serde_with::OneOrMany<serde_with::Same>,
1186 >::deserialize(deserializer)?))
1187 }
1188 }
1189 match map.next_value::<DeserializeWith>() {
1190 Ok(deserialize_with) => deserialize_with.0,
1191 Err(err) => {
1192 return Err(err);
1193 }
1194 }
1195 });
1196 }
1197 Field::Url => {
1198 if r#url_property.is_some() {
1199 return Err(<A::Error as de::Error>::duplicate_field("url"));
1200 }
1201 r#url_property = Some({
1202 struct DeserializeWith(Vec<UrlProperty>);
1203 impl<'de> Deserialize<'de> for DeserializeWith {
1204 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1205 where
1206 D: Deserializer<'de>,
1207 {
1208 Ok(DeserializeWith(serde_with::As::<
1209 serde_with::OneOrMany<serde_with::Same>,
1210 >::deserialize(deserializer)?))
1211 }
1212 }
1213 match map.next_value::<DeserializeWith>() {
1214 Ok(deserialize_with) => deserialize_with.0,
1215 Err(err) => {
1216 return Err(err);
1217 }
1218 }
1219 });
1220 }
1221 Field::Ignore => {
1222 let _ = map.next_value::<de::IgnoredAny>()?;
1223 }
1224 }
1225 }
1226 Ok(MedicalIntangible {
1227 r#code: r#code_property.unwrap_or_default(),
1228 r#funding: r#funding_property.unwrap_or_default(),
1229 r#guideline: r#guideline_property.unwrap_or_default(),
1230 r#legal_status: r#legal_status_property.unwrap_or_default(),
1231 r#medicine_system: r#medicine_system_property.unwrap_or_default(),
1232 r#recognizing_authority: r#recognizing_authority_property
1233 .unwrap_or_default(),
1234 r#relevant_specialty: r#relevant_specialty_property.unwrap_or_default(),
1235 r#study: r#study_property.unwrap_or_default(),
1236 r#additional_type: r#additional_type_property.unwrap_or_default(),
1237 r#alternate_name: r#alternate_name_property.unwrap_or_default(),
1238 r#description: r#description_property.unwrap_or_default(),
1239 r#disambiguating_description: r#disambiguating_description_property
1240 .unwrap_or_default(),
1241 r#identifier: r#identifier_property.unwrap_or_default(),
1242 r#image: r#image_property.unwrap_or_default(),
1243 r#main_entity_of_page: r#main_entity_of_page_property.unwrap_or_default(),
1244 r#name: r#name_property.unwrap_or_default(),
1245 r#potential_action: r#potential_action_property.unwrap_or_default(),
1246 r#same_as: r#same_as_property.unwrap_or_default(),
1247 r#subject_of: r#subject_of_property.unwrap_or_default(),
1248 r#url: r#url_property.unwrap_or_default(),
1249 })
1250 }
1251 }
1252 const FIELDS: &[&str] = &[
1253 "code",
1254 "funding",
1255 "guideline",
1256 "legalStatus",
1257 "medicineSystem",
1258 "recognizingAuthority",
1259 "relevantSpecialty",
1260 "study",
1261 "additionalType",
1262 "alternateName",
1263 "description",
1264 "disambiguatingDescription",
1265 "identifier",
1266 "image",
1267 "mainEntityOfPage",
1268 "name",
1269 "potentialAction",
1270 "sameAs",
1271 "subjectOf",
1272 "url",
1273 ];
1274 deserializer.deserialize_struct("MedicalIntangible", FIELDS, ClassVisitor)
1275 }
1276 }
1277}