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