1use super::*;
2#[cfg_attr(feature = "derive-debug", derive(Debug))]
4#[cfg_attr(feature = "derive-clone", derive(Clone))]
5pub struct PathologyTest {
6 pub r#tissue_sample: Vec<TissueSampleProperty>,
8 pub r#code: Vec<CodeProperty>,
10 pub r#funding: Vec<FundingProperty>,
12 pub r#guideline: Vec<GuidelineProperty>,
14 pub r#legal_status: Vec<LegalStatusProperty>,
16 pub r#medicine_system: Vec<MedicineSystemProperty>,
18 pub r#recognizing_authority: Vec<RecognizingAuthorityProperty>,
20 pub r#relevant_specialty: Vec<RelevantSpecialtyProperty>,
22 pub r#study: Vec<StudyProperty>,
24 pub r#affected_by: Vec<AffectedByProperty>,
26 pub r#normal_range: Vec<NormalRangeProperty>,
28 pub r#sign_detected: Vec<SignDetectedProperty>,
30 pub r#used_to_diagnose: Vec<UsedToDiagnoseProperty>,
32 pub r#uses_device: Vec<UsesDeviceProperty>,
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 PathologyTestTrait {
61 fn get_tissue_sample(&self) -> &[TissueSampleProperty];
63 fn take_tissue_sample(&mut self) -> Vec<TissueSampleProperty>;
65}
66impl PathologyTestTrait for PathologyTest {
67 fn get_tissue_sample(&self) -> &[TissueSampleProperty] {
68 self.r#tissue_sample.as_slice()
69 }
70 fn take_tissue_sample(&mut self) -> Vec<TissueSampleProperty> {
71 std::mem::take(&mut self.r#tissue_sample)
72 }
73}
74impl MedicalEntityTrait for PathologyTest {
75 fn get_code(&self) -> &[CodeProperty] {
76 self.r#code.as_slice()
77 }
78 fn take_code(&mut self) -> Vec<CodeProperty> {
79 std::mem::take(&mut self.r#code)
80 }
81 fn get_funding(&self) -> &[FundingProperty] {
82 self.r#funding.as_slice()
83 }
84 fn take_funding(&mut self) -> Vec<FundingProperty> {
85 std::mem::take(&mut self.r#funding)
86 }
87 fn get_guideline(&self) -> &[GuidelineProperty] {
88 self.r#guideline.as_slice()
89 }
90 fn take_guideline(&mut self) -> Vec<GuidelineProperty> {
91 std::mem::take(&mut self.r#guideline)
92 }
93 fn get_legal_status(&self) -> &[LegalStatusProperty] {
94 self.r#legal_status.as_slice()
95 }
96 fn take_legal_status(&mut self) -> Vec<LegalStatusProperty> {
97 std::mem::take(&mut self.r#legal_status)
98 }
99 fn get_medicine_system(&self) -> &[MedicineSystemProperty] {
100 self.r#medicine_system.as_slice()
101 }
102 fn take_medicine_system(&mut self) -> Vec<MedicineSystemProperty> {
103 std::mem::take(&mut self.r#medicine_system)
104 }
105 fn get_recognizing_authority(&self) -> &[RecognizingAuthorityProperty] {
106 self.r#recognizing_authority.as_slice()
107 }
108 fn take_recognizing_authority(&mut self) -> Vec<RecognizingAuthorityProperty> {
109 std::mem::take(&mut self.r#recognizing_authority)
110 }
111 fn get_relevant_specialty(&self) -> &[RelevantSpecialtyProperty] {
112 self.r#relevant_specialty.as_slice()
113 }
114 fn take_relevant_specialty(&mut self) -> Vec<RelevantSpecialtyProperty> {
115 std::mem::take(&mut self.r#relevant_specialty)
116 }
117 fn get_study(&self) -> &[StudyProperty] {
118 self.r#study.as_slice()
119 }
120 fn take_study(&mut self) -> Vec<StudyProperty> {
121 std::mem::take(&mut self.r#study)
122 }
123}
124impl MedicalTestTrait for PathologyTest {
125 fn get_affected_by(&self) -> &[AffectedByProperty] {
126 self.r#affected_by.as_slice()
127 }
128 fn take_affected_by(&mut self) -> Vec<AffectedByProperty> {
129 std::mem::take(&mut self.r#affected_by)
130 }
131 fn get_normal_range(&self) -> &[NormalRangeProperty] {
132 self.r#normal_range.as_slice()
133 }
134 fn take_normal_range(&mut self) -> Vec<NormalRangeProperty> {
135 std::mem::take(&mut self.r#normal_range)
136 }
137 fn get_sign_detected(&self) -> &[SignDetectedProperty] {
138 self.r#sign_detected.as_slice()
139 }
140 fn take_sign_detected(&mut self) -> Vec<SignDetectedProperty> {
141 std::mem::take(&mut self.r#sign_detected)
142 }
143 fn get_used_to_diagnose(&self) -> &[UsedToDiagnoseProperty] {
144 self.r#used_to_diagnose.as_slice()
145 }
146 fn take_used_to_diagnose(&mut self) -> Vec<UsedToDiagnoseProperty> {
147 std::mem::take(&mut self.r#used_to_diagnose)
148 }
149 fn get_uses_device(&self) -> &[UsesDeviceProperty] {
150 self.r#uses_device.as_slice()
151 }
152 fn take_uses_device(&mut self) -> Vec<UsesDeviceProperty> {
153 std::mem::take(&mut self.r#uses_device)
154 }
155}
156impl ThingTrait for PathologyTest {
157 fn get_additional_type(&self) -> &[AdditionalTypeProperty] {
158 self.r#additional_type.as_slice()
159 }
160 fn take_additional_type(&mut self) -> Vec<AdditionalTypeProperty> {
161 std::mem::take(&mut self.r#additional_type)
162 }
163 fn get_alternate_name(&self) -> &[AlternateNameProperty] {
164 self.r#alternate_name.as_slice()
165 }
166 fn take_alternate_name(&mut self) -> Vec<AlternateNameProperty> {
167 std::mem::take(&mut self.r#alternate_name)
168 }
169 fn get_description(&self) -> &[DescriptionProperty] {
170 self.r#description.as_slice()
171 }
172 fn take_description(&mut self) -> Vec<DescriptionProperty> {
173 std::mem::take(&mut self.r#description)
174 }
175 fn get_disambiguating_description(&self) -> &[DisambiguatingDescriptionProperty] {
176 self.r#disambiguating_description.as_slice()
177 }
178 fn take_disambiguating_description(&mut self) -> Vec<DisambiguatingDescriptionProperty> {
179 std::mem::take(&mut self.r#disambiguating_description)
180 }
181 fn get_identifier(&self) -> &[IdentifierProperty] {
182 self.r#identifier.as_slice()
183 }
184 fn take_identifier(&mut self) -> Vec<IdentifierProperty> {
185 std::mem::take(&mut self.r#identifier)
186 }
187 fn get_image(&self) -> &[ImageProperty] {
188 self.r#image.as_slice()
189 }
190 fn take_image(&mut self) -> Vec<ImageProperty> {
191 std::mem::take(&mut self.r#image)
192 }
193 fn get_main_entity_of_page(&self) -> &[MainEntityOfPageProperty] {
194 self.r#main_entity_of_page.as_slice()
195 }
196 fn take_main_entity_of_page(&mut self) -> Vec<MainEntityOfPageProperty> {
197 std::mem::take(&mut self.r#main_entity_of_page)
198 }
199 fn get_name(&self) -> &[NameProperty] {
200 self.r#name.as_slice()
201 }
202 fn take_name(&mut self) -> Vec<NameProperty> {
203 std::mem::take(&mut self.r#name)
204 }
205 fn get_potential_action(&self) -> &[PotentialActionProperty] {
206 self.r#potential_action.as_slice()
207 }
208 fn take_potential_action(&mut self) -> Vec<PotentialActionProperty> {
209 std::mem::take(&mut self.r#potential_action)
210 }
211 fn get_same_as(&self) -> &[SameAsProperty] {
212 self.r#same_as.as_slice()
213 }
214 fn take_same_as(&mut self) -> Vec<SameAsProperty> {
215 std::mem::take(&mut self.r#same_as)
216 }
217 fn get_subject_of(&self) -> &[SubjectOfProperty] {
218 self.r#subject_of.as_slice()
219 }
220 fn take_subject_of(&mut self) -> Vec<SubjectOfProperty> {
221 std::mem::take(&mut self.r#subject_of)
222 }
223 fn get_url(&self) -> &[UrlProperty] {
224 self.r#url.as_slice()
225 }
226 fn take_url(&mut self) -> Vec<UrlProperty> {
227 std::mem::take(&mut self.r#url)
228 }
229}
230#[cfg(feature = "serde")]
231mod serde {
232 use std::{fmt, fmt::Formatter};
233
234 use ::serde::{
235 de, de::Visitor, ser::SerializeStruct, Deserialize, Deserializer, Serialize, Serializer,
236 };
237
238 use super::*;
239 impl Serialize for PathologyTest {
240 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
241 where
242 S: Serializer,
243 {
244 let len: usize = [
245 !Vec::is_empty(&self.r#tissue_sample) as usize,
246 !Vec::is_empty(&self.r#code) as usize,
247 !Vec::is_empty(&self.r#funding) as usize,
248 !Vec::is_empty(&self.r#guideline) as usize,
249 !Vec::is_empty(&self.r#legal_status) as usize,
250 !Vec::is_empty(&self.r#medicine_system) as usize,
251 !Vec::is_empty(&self.r#recognizing_authority) as usize,
252 !Vec::is_empty(&self.r#relevant_specialty) as usize,
253 !Vec::is_empty(&self.r#study) as usize,
254 !Vec::is_empty(&self.r#affected_by) as usize,
255 !Vec::is_empty(&self.r#normal_range) as usize,
256 !Vec::is_empty(&self.r#sign_detected) as usize,
257 !Vec::is_empty(&self.r#used_to_diagnose) as usize,
258 !Vec::is_empty(&self.r#uses_device) as usize,
259 !Vec::is_empty(&self.r#additional_type) as usize,
260 !Vec::is_empty(&self.r#alternate_name) as usize,
261 !Vec::is_empty(&self.r#description) as usize,
262 !Vec::is_empty(&self.r#disambiguating_description) as usize,
263 !Vec::is_empty(&self.r#identifier) as usize,
264 !Vec::is_empty(&self.r#image) as usize,
265 !Vec::is_empty(&self.r#main_entity_of_page) as usize,
266 !Vec::is_empty(&self.r#name) as usize,
267 !Vec::is_empty(&self.r#potential_action) as usize,
268 !Vec::is_empty(&self.r#same_as) as usize,
269 !Vec::is_empty(&self.r#subject_of) as usize,
270 !Vec::is_empty(&self.r#url) as usize,
271 ]
272 .iter()
273 .sum();
274 let mut serialize_struct =
275 Serializer::serialize_struct(serializer, "PathologyTest", len)?;
276 if !Vec::is_empty(&self.r#tissue_sample) {
277 serialize_struct.serialize_field("tissueSample", {
278 struct SerializeWith<'a>(&'a Vec<TissueSampleProperty>);
279 impl<'a> Serialize for SerializeWith<'a> {
280 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
281 where
282 S: Serializer,
283 {
284 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
285 self.0, serializer,
286 )
287 }
288 }
289 &SerializeWith(&self.r#tissue_sample)
290 })?;
291 } else {
292 serialize_struct.skip_field("tissueSample")?;
293 }
294 if !Vec::is_empty(&self.r#code) {
295 serialize_struct.serialize_field("code", {
296 struct SerializeWith<'a>(&'a Vec<CodeProperty>);
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#code)
308 })?;
309 } else {
310 serialize_struct.skip_field("code")?;
311 }
312 if !Vec::is_empty(&self.r#funding) {
313 serialize_struct.serialize_field("funding", {
314 struct SerializeWith<'a>(&'a Vec<FundingProperty>);
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#funding)
326 })?;
327 } else {
328 serialize_struct.skip_field("funding")?;
329 }
330 if !Vec::is_empty(&self.r#guideline) {
331 serialize_struct.serialize_field("guideline", {
332 struct SerializeWith<'a>(&'a Vec<GuidelineProperty>);
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#guideline)
344 })?;
345 } else {
346 serialize_struct.skip_field("guideline")?;
347 }
348 if !Vec::is_empty(&self.r#legal_status) {
349 serialize_struct.serialize_field("legalStatus", {
350 struct SerializeWith<'a>(&'a Vec<LegalStatusProperty>);
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#legal_status)
362 })?;
363 } else {
364 serialize_struct.skip_field("legalStatus")?;
365 }
366 if !Vec::is_empty(&self.r#medicine_system) {
367 serialize_struct.serialize_field("medicineSystem", {
368 struct SerializeWith<'a>(&'a Vec<MedicineSystemProperty>);
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#medicine_system)
380 })?;
381 } else {
382 serialize_struct.skip_field("medicineSystem")?;
383 }
384 if !Vec::is_empty(&self.r#recognizing_authority) {
385 serialize_struct.serialize_field("recognizingAuthority", {
386 struct SerializeWith<'a>(&'a Vec<RecognizingAuthorityProperty>);
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#recognizing_authority)
398 })?;
399 } else {
400 serialize_struct.skip_field("recognizingAuthority")?;
401 }
402 if !Vec::is_empty(&self.r#relevant_specialty) {
403 serialize_struct.serialize_field("relevantSpecialty", {
404 struct SerializeWith<'a>(&'a Vec<RelevantSpecialtyProperty>);
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#relevant_specialty)
416 })?;
417 } else {
418 serialize_struct.skip_field("relevantSpecialty")?;
419 }
420 if !Vec::is_empty(&self.r#study) {
421 serialize_struct.serialize_field("study", {
422 struct SerializeWith<'a>(&'a Vec<StudyProperty>);
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#study)
434 })?;
435 } else {
436 serialize_struct.skip_field("study")?;
437 }
438 if !Vec::is_empty(&self.r#affected_by) {
439 serialize_struct.serialize_field("affectedBy", {
440 struct SerializeWith<'a>(&'a Vec<AffectedByProperty>);
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#affected_by)
452 })?;
453 } else {
454 serialize_struct.skip_field("affectedBy")?;
455 }
456 if !Vec::is_empty(&self.r#normal_range) {
457 serialize_struct.serialize_field("normalRange", {
458 struct SerializeWith<'a>(&'a Vec<NormalRangeProperty>);
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#normal_range)
470 })?;
471 } else {
472 serialize_struct.skip_field("normalRange")?;
473 }
474 if !Vec::is_empty(&self.r#sign_detected) {
475 serialize_struct.serialize_field("signDetected", {
476 struct SerializeWith<'a>(&'a Vec<SignDetectedProperty>);
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#sign_detected)
488 })?;
489 } else {
490 serialize_struct.skip_field("signDetected")?;
491 }
492 if !Vec::is_empty(&self.r#used_to_diagnose) {
493 serialize_struct.serialize_field("usedToDiagnose", {
494 struct SerializeWith<'a>(&'a Vec<UsedToDiagnoseProperty>);
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#used_to_diagnose)
506 })?;
507 } else {
508 serialize_struct.skip_field("usedToDiagnose")?;
509 }
510 if !Vec::is_empty(&self.r#uses_device) {
511 serialize_struct.serialize_field("usesDevice", {
512 struct SerializeWith<'a>(&'a Vec<UsesDeviceProperty>);
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#uses_device)
524 })?;
525 } else {
526 serialize_struct.skip_field("usesDevice")?;
527 }
528 if !Vec::is_empty(&self.r#additional_type) {
529 serialize_struct.serialize_field("additionalType", {
530 struct SerializeWith<'a>(&'a Vec<AdditionalTypeProperty>);
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#additional_type)
542 })?;
543 } else {
544 serialize_struct.skip_field("additionalType")?;
545 }
546 if !Vec::is_empty(&self.r#alternate_name) {
547 serialize_struct.serialize_field("alternateName", {
548 struct SerializeWith<'a>(&'a Vec<AlternateNameProperty>);
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#alternate_name)
560 })?;
561 } else {
562 serialize_struct.skip_field("alternateName")?;
563 }
564 if !Vec::is_empty(&self.r#description) {
565 serialize_struct.serialize_field("description", {
566 struct SerializeWith<'a>(&'a Vec<DescriptionProperty>);
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#description)
578 })?;
579 } else {
580 serialize_struct.skip_field("description")?;
581 }
582 if !Vec::is_empty(&self.r#disambiguating_description) {
583 serialize_struct.serialize_field("disambiguatingDescription", {
584 struct SerializeWith<'a>(&'a Vec<DisambiguatingDescriptionProperty>);
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#disambiguating_description)
596 })?;
597 } else {
598 serialize_struct.skip_field("disambiguatingDescription")?;
599 }
600 if !Vec::is_empty(&self.r#identifier) {
601 serialize_struct.serialize_field("identifier", {
602 struct SerializeWith<'a>(&'a Vec<IdentifierProperty>);
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#identifier)
614 })?;
615 } else {
616 serialize_struct.skip_field("identifier")?;
617 }
618 if !Vec::is_empty(&self.r#image) {
619 serialize_struct.serialize_field("image", {
620 struct SerializeWith<'a>(&'a Vec<ImageProperty>);
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#image)
632 })?;
633 } else {
634 serialize_struct.skip_field("image")?;
635 }
636 if !Vec::is_empty(&self.r#main_entity_of_page) {
637 serialize_struct.serialize_field("mainEntityOfPage", {
638 struct SerializeWith<'a>(&'a Vec<MainEntityOfPageProperty>);
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#main_entity_of_page)
650 })?;
651 } else {
652 serialize_struct.skip_field("mainEntityOfPage")?;
653 }
654 if !Vec::is_empty(&self.r#name) {
655 serialize_struct.serialize_field("name", {
656 struct SerializeWith<'a>(&'a Vec<NameProperty>);
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#name)
668 })?;
669 } else {
670 serialize_struct.skip_field("name")?;
671 }
672 if !Vec::is_empty(&self.r#potential_action) {
673 serialize_struct.serialize_field("potentialAction", {
674 struct SerializeWith<'a>(&'a Vec<PotentialActionProperty>);
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#potential_action)
686 })?;
687 } else {
688 serialize_struct.skip_field("potentialAction")?;
689 }
690 if !Vec::is_empty(&self.r#same_as) {
691 serialize_struct.serialize_field("sameAs", {
692 struct SerializeWith<'a>(&'a Vec<SameAsProperty>);
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#same_as)
704 })?;
705 } else {
706 serialize_struct.skip_field("sameAs")?;
707 }
708 if !Vec::is_empty(&self.r#subject_of) {
709 serialize_struct.serialize_field("subjectOf", {
710 struct SerializeWith<'a>(&'a Vec<SubjectOfProperty>);
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#subject_of)
722 })?;
723 } else {
724 serialize_struct.skip_field("subjectOf")?;
725 }
726 if !Vec::is_empty(&self.r#url) {
727 serialize_struct.serialize_field("url", {
728 struct SerializeWith<'a>(&'a Vec<UrlProperty>);
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#url)
740 })?;
741 } else {
742 serialize_struct.skip_field("url")?;
743 }
744 serialize_struct.end()
745 }
746 }
747 impl<'de> Deserialize<'de> for PathologyTest {
748 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
749 where
750 D: Deserializer<'de>,
751 {
752 enum Field {
753 TissueSample,
754 Code,
755 Funding,
756 Guideline,
757 LegalStatus,
758 MedicineSystem,
759 RecognizingAuthority,
760 RelevantSpecialty,
761 Study,
762 AffectedBy,
763 NormalRange,
764 SignDetected,
765 UsedToDiagnose,
766 UsesDevice,
767 AdditionalType,
768 AlternateName,
769 Description,
770 DisambiguatingDescription,
771 Identifier,
772 Image,
773 MainEntityOfPage,
774 Name,
775 PotentialAction,
776 SameAs,
777 SubjectOf,
778 Url,
779 Ignore,
780 }
781 struct FieldVisitor;
782 impl<'de> Visitor<'de> for FieldVisitor {
783 type Value = Field;
784 fn expecting(&self, formatter: &mut Formatter) -> fmt::Result {
785 formatter.write_str("field identifier")
786 }
787 fn visit_str<E>(self, value: &str) -> Result<Self::Value, E>
788 where
789 E: de::Error,
790 {
791 match value {
792 "tissueSample" => Ok(Field::TissueSample),
793 "code" => Ok(Field::Code),
794 "funding" => Ok(Field::Funding),
795 "guideline" => Ok(Field::Guideline),
796 "legalStatus" => Ok(Field::LegalStatus),
797 "medicineSystem" => Ok(Field::MedicineSystem),
798 "recognizingAuthority" => Ok(Field::RecognizingAuthority),
799 "relevantSpecialty" => Ok(Field::RelevantSpecialty),
800 "study" => Ok(Field::Study),
801 "affectedBy" => Ok(Field::AffectedBy),
802 "normalRange" => Ok(Field::NormalRange),
803 "signDetected" => Ok(Field::SignDetected),
804 "usedToDiagnose" => Ok(Field::UsedToDiagnose),
805 "usesDevice" => Ok(Field::UsesDevice),
806 "additionalType" => Ok(Field::AdditionalType),
807 "alternateName" => Ok(Field::AlternateName),
808 "description" => Ok(Field::Description),
809 "disambiguatingDescription" => Ok(Field::DisambiguatingDescription),
810 "identifier" => Ok(Field::Identifier),
811 "image" => Ok(Field::Image),
812 "mainEntityOfPage" => Ok(Field::MainEntityOfPage),
813 "name" => Ok(Field::Name),
814 "potentialAction" => Ok(Field::PotentialAction),
815 "sameAs" => Ok(Field::SameAs),
816 "subjectOf" => Ok(Field::SubjectOf),
817 "url" => Ok(Field::Url),
818 "id" | "type" => Ok(Field::Ignore),
819 _ => Err(de::Error::unknown_field(value, FIELDS)),
820 }
821 }
822 fn visit_bytes<E>(self, value: &[u8]) -> Result<Self::Value, E>
823 where
824 E: de::Error,
825 {
826 match value {
827 b"tissueSample" => Ok(Field::TissueSample),
828 b"code" => Ok(Field::Code),
829 b"funding" => Ok(Field::Funding),
830 b"guideline" => Ok(Field::Guideline),
831 b"legalStatus" => Ok(Field::LegalStatus),
832 b"medicineSystem" => Ok(Field::MedicineSystem),
833 b"recognizingAuthority" => Ok(Field::RecognizingAuthority),
834 b"relevantSpecialty" => Ok(Field::RelevantSpecialty),
835 b"study" => Ok(Field::Study),
836 b"affectedBy" => Ok(Field::AffectedBy),
837 b"normalRange" => Ok(Field::NormalRange),
838 b"signDetected" => Ok(Field::SignDetected),
839 b"usedToDiagnose" => Ok(Field::UsedToDiagnose),
840 b"usesDevice" => Ok(Field::UsesDevice),
841 b"additionalType" => Ok(Field::AdditionalType),
842 b"alternateName" => Ok(Field::AlternateName),
843 b"description" => Ok(Field::Description),
844 b"disambiguatingDescription" => Ok(Field::DisambiguatingDescription),
845 b"identifier" => Ok(Field::Identifier),
846 b"image" => Ok(Field::Image),
847 b"mainEntityOfPage" => Ok(Field::MainEntityOfPage),
848 b"name" => Ok(Field::Name),
849 b"potentialAction" => Ok(Field::PotentialAction),
850 b"sameAs" => Ok(Field::SameAs),
851 b"subjectOf" => Ok(Field::SubjectOf),
852 b"url" => Ok(Field::Url),
853 b"id" | b"type" => Ok(Field::Ignore),
854 _ => {
855 let value = &String::from_utf8_lossy(value);
856 Err(de::Error::unknown_field(value, FIELDS))
857 }
858 }
859 }
860 }
861 impl<'de> Deserialize<'de> for Field {
862 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
863 where
864 D: Deserializer<'de>,
865 {
866 deserializer.deserialize_identifier(FieldVisitor)
867 }
868 }
869 struct ClassVisitor;
870 impl<'de> Visitor<'de> for ClassVisitor {
871 type Value = PathologyTest;
872 fn expecting(&self, formatter: &mut Formatter) -> fmt::Result {
873 formatter.write_str("schema.org schema PathologyTest")
874 }
875 fn visit_map<A>(self, mut map: A) -> Result<Self::Value, A::Error>
876 where
877 A: de::MapAccess<'de>,
878 {
879 let mut r#tissue_sample_property = None;
880 let mut r#code_property = None;
881 let mut r#funding_property = None;
882 let mut r#guideline_property = None;
883 let mut r#legal_status_property = None;
884 let mut r#medicine_system_property = None;
885 let mut r#recognizing_authority_property = None;
886 let mut r#relevant_specialty_property = None;
887 let mut r#study_property = None;
888 let mut r#affected_by_property = None;
889 let mut r#normal_range_property = None;
890 let mut r#sign_detected_property = None;
891 let mut r#used_to_diagnose_property = None;
892 let mut r#uses_device_property = None;
893 let mut r#additional_type_property = None;
894 let mut r#alternate_name_property = None;
895 let mut r#description_property = None;
896 let mut r#disambiguating_description_property = None;
897 let mut r#identifier_property = None;
898 let mut r#image_property = None;
899 let mut r#main_entity_of_page_property = None;
900 let mut r#name_property = None;
901 let mut r#potential_action_property = None;
902 let mut r#same_as_property = None;
903 let mut r#subject_of_property = None;
904 let mut r#url_property = None;
905 while let Some(key) = map.next_key::<Field>()? {
906 match key {
907 Field::TissueSample => {
908 if r#tissue_sample_property.is_some() {
909 return Err(<A::Error as de::Error>::duplicate_field(
910 "tissueSample",
911 ));
912 }
913 r#tissue_sample_property = Some({
914 struct DeserializeWith(Vec<TissueSampleProperty>);
915 impl<'de> Deserialize<'de> for DeserializeWith {
916 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
917 where
918 D: Deserializer<'de>,
919 {
920 Ok(DeserializeWith(serde_with::As::<
921 serde_with::OneOrMany<serde_with::Same>,
922 >::deserialize(deserializer)?))
923 }
924 }
925 match map.next_value::<DeserializeWith>() {
926 Ok(deserialize_with) => deserialize_with.0,
927 Err(err) => {
928 return Err(err);
929 }
930 }
931 });
932 }
933 Field::Code => {
934 if r#code_property.is_some() {
935 return Err(<A::Error as de::Error>::duplicate_field("code"));
936 }
937 r#code_property = Some({
938 struct DeserializeWith(Vec<CodeProperty>);
939 impl<'de> Deserialize<'de> for DeserializeWith {
940 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
941 where
942 D: Deserializer<'de>,
943 {
944 Ok(DeserializeWith(serde_with::As::<
945 serde_with::OneOrMany<serde_with::Same>,
946 >::deserialize(deserializer)?))
947 }
948 }
949 match map.next_value::<DeserializeWith>() {
950 Ok(deserialize_with) => deserialize_with.0,
951 Err(err) => {
952 return Err(err);
953 }
954 }
955 });
956 }
957 Field::Funding => {
958 if r#funding_property.is_some() {
959 return Err(<A::Error as de::Error>::duplicate_field(
960 "funding",
961 ));
962 }
963 r#funding_property = Some({
964 struct DeserializeWith(Vec<FundingProperty>);
965 impl<'de> Deserialize<'de> for DeserializeWith {
966 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
967 where
968 D: Deserializer<'de>,
969 {
970 Ok(DeserializeWith(serde_with::As::<
971 serde_with::OneOrMany<serde_with::Same>,
972 >::deserialize(deserializer)?))
973 }
974 }
975 match map.next_value::<DeserializeWith>() {
976 Ok(deserialize_with) => deserialize_with.0,
977 Err(err) => {
978 return Err(err);
979 }
980 }
981 });
982 }
983 Field::Guideline => {
984 if r#guideline_property.is_some() {
985 return Err(<A::Error as de::Error>::duplicate_field(
986 "guideline",
987 ));
988 }
989 r#guideline_property = Some({
990 struct DeserializeWith(Vec<GuidelineProperty>);
991 impl<'de> Deserialize<'de> for DeserializeWith {
992 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
993 where
994 D: Deserializer<'de>,
995 {
996 Ok(DeserializeWith(serde_with::As::<
997 serde_with::OneOrMany<serde_with::Same>,
998 >::deserialize(deserializer)?))
999 }
1000 }
1001 match map.next_value::<DeserializeWith>() {
1002 Ok(deserialize_with) => deserialize_with.0,
1003 Err(err) => {
1004 return Err(err);
1005 }
1006 }
1007 });
1008 }
1009 Field::LegalStatus => {
1010 if r#legal_status_property.is_some() {
1011 return Err(<A::Error as de::Error>::duplicate_field(
1012 "legalStatus",
1013 ));
1014 }
1015 r#legal_status_property = Some({
1016 struct DeserializeWith(Vec<LegalStatusProperty>);
1017 impl<'de> Deserialize<'de> for DeserializeWith {
1018 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1019 where
1020 D: Deserializer<'de>,
1021 {
1022 Ok(DeserializeWith(serde_with::As::<
1023 serde_with::OneOrMany<serde_with::Same>,
1024 >::deserialize(deserializer)?))
1025 }
1026 }
1027 match map.next_value::<DeserializeWith>() {
1028 Ok(deserialize_with) => deserialize_with.0,
1029 Err(err) => {
1030 return Err(err);
1031 }
1032 }
1033 });
1034 }
1035 Field::MedicineSystem => {
1036 if r#medicine_system_property.is_some() {
1037 return Err(<A::Error as de::Error>::duplicate_field(
1038 "medicineSystem",
1039 ));
1040 }
1041 r#medicine_system_property = Some({
1042 struct DeserializeWith(Vec<MedicineSystemProperty>);
1043 impl<'de> Deserialize<'de> for DeserializeWith {
1044 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1045 where
1046 D: Deserializer<'de>,
1047 {
1048 Ok(DeserializeWith(serde_with::As::<
1049 serde_with::OneOrMany<serde_with::Same>,
1050 >::deserialize(deserializer)?))
1051 }
1052 }
1053 match map.next_value::<DeserializeWith>() {
1054 Ok(deserialize_with) => deserialize_with.0,
1055 Err(err) => {
1056 return Err(err);
1057 }
1058 }
1059 });
1060 }
1061 Field::RecognizingAuthority => {
1062 if r#recognizing_authority_property.is_some() {
1063 return Err(<A::Error as de::Error>::duplicate_field(
1064 "recognizingAuthority",
1065 ));
1066 }
1067 r#recognizing_authority_property = Some({
1068 struct DeserializeWith(Vec<RecognizingAuthorityProperty>);
1069 impl<'de> Deserialize<'de> for DeserializeWith {
1070 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1071 where
1072 D: Deserializer<'de>,
1073 {
1074 Ok(DeserializeWith(serde_with::As::<
1075 serde_with::OneOrMany<serde_with::Same>,
1076 >::deserialize(deserializer)?))
1077 }
1078 }
1079 match map.next_value::<DeserializeWith>() {
1080 Ok(deserialize_with) => deserialize_with.0,
1081 Err(err) => {
1082 return Err(err);
1083 }
1084 }
1085 });
1086 }
1087 Field::RelevantSpecialty => {
1088 if r#relevant_specialty_property.is_some() {
1089 return Err(<A::Error as de::Error>::duplicate_field(
1090 "relevantSpecialty",
1091 ));
1092 }
1093 r#relevant_specialty_property = Some({
1094 struct DeserializeWith(Vec<RelevantSpecialtyProperty>);
1095 impl<'de> Deserialize<'de> for DeserializeWith {
1096 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1097 where
1098 D: Deserializer<'de>,
1099 {
1100 Ok(DeserializeWith(serde_with::As::<
1101 serde_with::OneOrMany<serde_with::Same>,
1102 >::deserialize(deserializer)?))
1103 }
1104 }
1105 match map.next_value::<DeserializeWith>() {
1106 Ok(deserialize_with) => deserialize_with.0,
1107 Err(err) => {
1108 return Err(err);
1109 }
1110 }
1111 });
1112 }
1113 Field::Study => {
1114 if r#study_property.is_some() {
1115 return Err(<A::Error as de::Error>::duplicate_field("study"));
1116 }
1117 r#study_property = Some({
1118 struct DeserializeWith(Vec<StudyProperty>);
1119 impl<'de> Deserialize<'de> for DeserializeWith {
1120 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1121 where
1122 D: Deserializer<'de>,
1123 {
1124 Ok(DeserializeWith(serde_with::As::<
1125 serde_with::OneOrMany<serde_with::Same>,
1126 >::deserialize(deserializer)?))
1127 }
1128 }
1129 match map.next_value::<DeserializeWith>() {
1130 Ok(deserialize_with) => deserialize_with.0,
1131 Err(err) => {
1132 return Err(err);
1133 }
1134 }
1135 });
1136 }
1137 Field::AffectedBy => {
1138 if r#affected_by_property.is_some() {
1139 return Err(<A::Error as de::Error>::duplicate_field(
1140 "affectedBy",
1141 ));
1142 }
1143 r#affected_by_property = Some({
1144 struct DeserializeWith(Vec<AffectedByProperty>);
1145 impl<'de> Deserialize<'de> for DeserializeWith {
1146 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1147 where
1148 D: Deserializer<'de>,
1149 {
1150 Ok(DeserializeWith(serde_with::As::<
1151 serde_with::OneOrMany<serde_with::Same>,
1152 >::deserialize(deserializer)?))
1153 }
1154 }
1155 match map.next_value::<DeserializeWith>() {
1156 Ok(deserialize_with) => deserialize_with.0,
1157 Err(err) => {
1158 return Err(err);
1159 }
1160 }
1161 });
1162 }
1163 Field::NormalRange => {
1164 if r#normal_range_property.is_some() {
1165 return Err(<A::Error as de::Error>::duplicate_field(
1166 "normalRange",
1167 ));
1168 }
1169 r#normal_range_property = Some({
1170 struct DeserializeWith(Vec<NormalRangeProperty>);
1171 impl<'de> Deserialize<'de> for DeserializeWith {
1172 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1173 where
1174 D: Deserializer<'de>,
1175 {
1176 Ok(DeserializeWith(serde_with::As::<
1177 serde_with::OneOrMany<serde_with::Same>,
1178 >::deserialize(deserializer)?))
1179 }
1180 }
1181 match map.next_value::<DeserializeWith>() {
1182 Ok(deserialize_with) => deserialize_with.0,
1183 Err(err) => {
1184 return Err(err);
1185 }
1186 }
1187 });
1188 }
1189 Field::SignDetected => {
1190 if r#sign_detected_property.is_some() {
1191 return Err(<A::Error as de::Error>::duplicate_field(
1192 "signDetected",
1193 ));
1194 }
1195 r#sign_detected_property = Some({
1196 struct DeserializeWith(Vec<SignDetectedProperty>);
1197 impl<'de> Deserialize<'de> for DeserializeWith {
1198 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1199 where
1200 D: Deserializer<'de>,
1201 {
1202 Ok(DeserializeWith(serde_with::As::<
1203 serde_with::OneOrMany<serde_with::Same>,
1204 >::deserialize(deserializer)?))
1205 }
1206 }
1207 match map.next_value::<DeserializeWith>() {
1208 Ok(deserialize_with) => deserialize_with.0,
1209 Err(err) => {
1210 return Err(err);
1211 }
1212 }
1213 });
1214 }
1215 Field::UsedToDiagnose => {
1216 if r#used_to_diagnose_property.is_some() {
1217 return Err(<A::Error as de::Error>::duplicate_field(
1218 "usedToDiagnose",
1219 ));
1220 }
1221 r#used_to_diagnose_property = Some({
1222 struct DeserializeWith(Vec<UsedToDiagnoseProperty>);
1223 impl<'de> Deserialize<'de> for DeserializeWith {
1224 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1225 where
1226 D: Deserializer<'de>,
1227 {
1228 Ok(DeserializeWith(serde_with::As::<
1229 serde_with::OneOrMany<serde_with::Same>,
1230 >::deserialize(deserializer)?))
1231 }
1232 }
1233 match map.next_value::<DeserializeWith>() {
1234 Ok(deserialize_with) => deserialize_with.0,
1235 Err(err) => {
1236 return Err(err);
1237 }
1238 }
1239 });
1240 }
1241 Field::UsesDevice => {
1242 if r#uses_device_property.is_some() {
1243 return Err(<A::Error as de::Error>::duplicate_field(
1244 "usesDevice",
1245 ));
1246 }
1247 r#uses_device_property = Some({
1248 struct DeserializeWith(Vec<UsesDeviceProperty>);
1249 impl<'de> Deserialize<'de> for DeserializeWith {
1250 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1251 where
1252 D: Deserializer<'de>,
1253 {
1254 Ok(DeserializeWith(serde_with::As::<
1255 serde_with::OneOrMany<serde_with::Same>,
1256 >::deserialize(deserializer)?))
1257 }
1258 }
1259 match map.next_value::<DeserializeWith>() {
1260 Ok(deserialize_with) => deserialize_with.0,
1261 Err(err) => {
1262 return Err(err);
1263 }
1264 }
1265 });
1266 }
1267 Field::AdditionalType => {
1268 if r#additional_type_property.is_some() {
1269 return Err(<A::Error as de::Error>::duplicate_field(
1270 "additionalType",
1271 ));
1272 }
1273 r#additional_type_property = Some({
1274 struct DeserializeWith(Vec<AdditionalTypeProperty>);
1275 impl<'de> Deserialize<'de> for DeserializeWith {
1276 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1277 where
1278 D: Deserializer<'de>,
1279 {
1280 Ok(DeserializeWith(serde_with::As::<
1281 serde_with::OneOrMany<serde_with::Same>,
1282 >::deserialize(deserializer)?))
1283 }
1284 }
1285 match map.next_value::<DeserializeWith>() {
1286 Ok(deserialize_with) => deserialize_with.0,
1287 Err(err) => {
1288 return Err(err);
1289 }
1290 }
1291 });
1292 }
1293 Field::AlternateName => {
1294 if r#alternate_name_property.is_some() {
1295 return Err(<A::Error as de::Error>::duplicate_field(
1296 "alternateName",
1297 ));
1298 }
1299 r#alternate_name_property = Some({
1300 struct DeserializeWith(Vec<AlternateNameProperty>);
1301 impl<'de> Deserialize<'de> for DeserializeWith {
1302 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1303 where
1304 D: Deserializer<'de>,
1305 {
1306 Ok(DeserializeWith(serde_with::As::<
1307 serde_with::OneOrMany<serde_with::Same>,
1308 >::deserialize(deserializer)?))
1309 }
1310 }
1311 match map.next_value::<DeserializeWith>() {
1312 Ok(deserialize_with) => deserialize_with.0,
1313 Err(err) => {
1314 return Err(err);
1315 }
1316 }
1317 });
1318 }
1319 Field::Description => {
1320 if r#description_property.is_some() {
1321 return Err(<A::Error as de::Error>::duplicate_field(
1322 "description",
1323 ));
1324 }
1325 r#description_property = Some({
1326 struct DeserializeWith(Vec<DescriptionProperty>);
1327 impl<'de> Deserialize<'de> for DeserializeWith {
1328 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1329 where
1330 D: Deserializer<'de>,
1331 {
1332 Ok(DeserializeWith(serde_with::As::<
1333 serde_with::OneOrMany<serde_with::Same>,
1334 >::deserialize(deserializer)?))
1335 }
1336 }
1337 match map.next_value::<DeserializeWith>() {
1338 Ok(deserialize_with) => deserialize_with.0,
1339 Err(err) => {
1340 return Err(err);
1341 }
1342 }
1343 });
1344 }
1345 Field::DisambiguatingDescription => {
1346 if r#disambiguating_description_property.is_some() {
1347 return Err(<A::Error as de::Error>::duplicate_field(
1348 "disambiguatingDescription",
1349 ));
1350 }
1351 r#disambiguating_description_property = Some({
1352 struct DeserializeWith(Vec<DisambiguatingDescriptionProperty>);
1353 impl<'de> Deserialize<'de> for DeserializeWith {
1354 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1355 where
1356 D: Deserializer<'de>,
1357 {
1358 Ok(DeserializeWith(serde_with::As::<
1359 serde_with::OneOrMany<serde_with::Same>,
1360 >::deserialize(deserializer)?))
1361 }
1362 }
1363 match map.next_value::<DeserializeWith>() {
1364 Ok(deserialize_with) => deserialize_with.0,
1365 Err(err) => {
1366 return Err(err);
1367 }
1368 }
1369 });
1370 }
1371 Field::Identifier => {
1372 if r#identifier_property.is_some() {
1373 return Err(<A::Error as de::Error>::duplicate_field(
1374 "identifier",
1375 ));
1376 }
1377 r#identifier_property = Some({
1378 struct DeserializeWith(Vec<IdentifierProperty>);
1379 impl<'de> Deserialize<'de> for DeserializeWith {
1380 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1381 where
1382 D: Deserializer<'de>,
1383 {
1384 Ok(DeserializeWith(serde_with::As::<
1385 serde_with::OneOrMany<serde_with::Same>,
1386 >::deserialize(deserializer)?))
1387 }
1388 }
1389 match map.next_value::<DeserializeWith>() {
1390 Ok(deserialize_with) => deserialize_with.0,
1391 Err(err) => {
1392 return Err(err);
1393 }
1394 }
1395 });
1396 }
1397 Field::Image => {
1398 if r#image_property.is_some() {
1399 return Err(<A::Error as de::Error>::duplicate_field("image"));
1400 }
1401 r#image_property = Some({
1402 struct DeserializeWith(Vec<ImageProperty>);
1403 impl<'de> Deserialize<'de> for DeserializeWith {
1404 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1405 where
1406 D: Deserializer<'de>,
1407 {
1408 Ok(DeserializeWith(serde_with::As::<
1409 serde_with::OneOrMany<serde_with::Same>,
1410 >::deserialize(deserializer)?))
1411 }
1412 }
1413 match map.next_value::<DeserializeWith>() {
1414 Ok(deserialize_with) => deserialize_with.0,
1415 Err(err) => {
1416 return Err(err);
1417 }
1418 }
1419 });
1420 }
1421 Field::MainEntityOfPage => {
1422 if r#main_entity_of_page_property.is_some() {
1423 return Err(<A::Error as de::Error>::duplicate_field(
1424 "mainEntityOfPage",
1425 ));
1426 }
1427 r#main_entity_of_page_property = Some({
1428 struct DeserializeWith(Vec<MainEntityOfPageProperty>);
1429 impl<'de> Deserialize<'de> for DeserializeWith {
1430 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1431 where
1432 D: Deserializer<'de>,
1433 {
1434 Ok(DeserializeWith(serde_with::As::<
1435 serde_with::OneOrMany<serde_with::Same>,
1436 >::deserialize(deserializer)?))
1437 }
1438 }
1439 match map.next_value::<DeserializeWith>() {
1440 Ok(deserialize_with) => deserialize_with.0,
1441 Err(err) => {
1442 return Err(err);
1443 }
1444 }
1445 });
1446 }
1447 Field::Name => {
1448 if r#name_property.is_some() {
1449 return Err(<A::Error as de::Error>::duplicate_field("name"));
1450 }
1451 r#name_property = Some({
1452 struct DeserializeWith(Vec<NameProperty>);
1453 impl<'de> Deserialize<'de> for DeserializeWith {
1454 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1455 where
1456 D: Deserializer<'de>,
1457 {
1458 Ok(DeserializeWith(serde_with::As::<
1459 serde_with::OneOrMany<serde_with::Same>,
1460 >::deserialize(deserializer)?))
1461 }
1462 }
1463 match map.next_value::<DeserializeWith>() {
1464 Ok(deserialize_with) => deserialize_with.0,
1465 Err(err) => {
1466 return Err(err);
1467 }
1468 }
1469 });
1470 }
1471 Field::PotentialAction => {
1472 if r#potential_action_property.is_some() {
1473 return Err(<A::Error as de::Error>::duplicate_field(
1474 "potentialAction",
1475 ));
1476 }
1477 r#potential_action_property = Some({
1478 struct DeserializeWith(Vec<PotentialActionProperty>);
1479 impl<'de> Deserialize<'de> for DeserializeWith {
1480 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1481 where
1482 D: Deserializer<'de>,
1483 {
1484 Ok(DeserializeWith(serde_with::As::<
1485 serde_with::OneOrMany<serde_with::Same>,
1486 >::deserialize(deserializer)?))
1487 }
1488 }
1489 match map.next_value::<DeserializeWith>() {
1490 Ok(deserialize_with) => deserialize_with.0,
1491 Err(err) => {
1492 return Err(err);
1493 }
1494 }
1495 });
1496 }
1497 Field::SameAs => {
1498 if r#same_as_property.is_some() {
1499 return Err(<A::Error as de::Error>::duplicate_field("sameAs"));
1500 }
1501 r#same_as_property = Some({
1502 struct DeserializeWith(Vec<SameAsProperty>);
1503 impl<'de> Deserialize<'de> for DeserializeWith {
1504 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1505 where
1506 D: Deserializer<'de>,
1507 {
1508 Ok(DeserializeWith(serde_with::As::<
1509 serde_with::OneOrMany<serde_with::Same>,
1510 >::deserialize(deserializer)?))
1511 }
1512 }
1513 match map.next_value::<DeserializeWith>() {
1514 Ok(deserialize_with) => deserialize_with.0,
1515 Err(err) => {
1516 return Err(err);
1517 }
1518 }
1519 });
1520 }
1521 Field::SubjectOf => {
1522 if r#subject_of_property.is_some() {
1523 return Err(<A::Error as de::Error>::duplicate_field(
1524 "subjectOf",
1525 ));
1526 }
1527 r#subject_of_property = Some({
1528 struct DeserializeWith(Vec<SubjectOfProperty>);
1529 impl<'de> Deserialize<'de> for DeserializeWith {
1530 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1531 where
1532 D: Deserializer<'de>,
1533 {
1534 Ok(DeserializeWith(serde_with::As::<
1535 serde_with::OneOrMany<serde_with::Same>,
1536 >::deserialize(deserializer)?))
1537 }
1538 }
1539 match map.next_value::<DeserializeWith>() {
1540 Ok(deserialize_with) => deserialize_with.0,
1541 Err(err) => {
1542 return Err(err);
1543 }
1544 }
1545 });
1546 }
1547 Field::Url => {
1548 if r#url_property.is_some() {
1549 return Err(<A::Error as de::Error>::duplicate_field("url"));
1550 }
1551 r#url_property = Some({
1552 struct DeserializeWith(Vec<UrlProperty>);
1553 impl<'de> Deserialize<'de> for DeserializeWith {
1554 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1555 where
1556 D: Deserializer<'de>,
1557 {
1558 Ok(DeserializeWith(serde_with::As::<
1559 serde_with::OneOrMany<serde_with::Same>,
1560 >::deserialize(deserializer)?))
1561 }
1562 }
1563 match map.next_value::<DeserializeWith>() {
1564 Ok(deserialize_with) => deserialize_with.0,
1565 Err(err) => {
1566 return Err(err);
1567 }
1568 }
1569 });
1570 }
1571 Field::Ignore => {
1572 let _ = map.next_value::<de::IgnoredAny>()?;
1573 }
1574 }
1575 }
1576 Ok(PathologyTest {
1577 r#tissue_sample: r#tissue_sample_property.unwrap_or_default(),
1578 r#code: r#code_property.unwrap_or_default(),
1579 r#funding: r#funding_property.unwrap_or_default(),
1580 r#guideline: r#guideline_property.unwrap_or_default(),
1581 r#legal_status: r#legal_status_property.unwrap_or_default(),
1582 r#medicine_system: r#medicine_system_property.unwrap_or_default(),
1583 r#recognizing_authority: r#recognizing_authority_property
1584 .unwrap_or_default(),
1585 r#relevant_specialty: r#relevant_specialty_property.unwrap_or_default(),
1586 r#study: r#study_property.unwrap_or_default(),
1587 r#affected_by: r#affected_by_property.unwrap_or_default(),
1588 r#normal_range: r#normal_range_property.unwrap_or_default(),
1589 r#sign_detected: r#sign_detected_property.unwrap_or_default(),
1590 r#used_to_diagnose: r#used_to_diagnose_property.unwrap_or_default(),
1591 r#uses_device: r#uses_device_property.unwrap_or_default(),
1592 r#additional_type: r#additional_type_property.unwrap_or_default(),
1593 r#alternate_name: r#alternate_name_property.unwrap_or_default(),
1594 r#description: r#description_property.unwrap_or_default(),
1595 r#disambiguating_description: r#disambiguating_description_property
1596 .unwrap_or_default(),
1597 r#identifier: r#identifier_property.unwrap_or_default(),
1598 r#image: r#image_property.unwrap_or_default(),
1599 r#main_entity_of_page: r#main_entity_of_page_property.unwrap_or_default(),
1600 r#name: r#name_property.unwrap_or_default(),
1601 r#potential_action: r#potential_action_property.unwrap_or_default(),
1602 r#same_as: r#same_as_property.unwrap_or_default(),
1603 r#subject_of: r#subject_of_property.unwrap_or_default(),
1604 r#url: r#url_property.unwrap_or_default(),
1605 })
1606 }
1607 }
1608 const FIELDS: &[&str] = &[
1609 "tissueSample",
1610 "code",
1611 "funding",
1612 "guideline",
1613 "legalStatus",
1614 "medicineSystem",
1615 "recognizingAuthority",
1616 "relevantSpecialty",
1617 "study",
1618 "affectedBy",
1619 "normalRange",
1620 "signDetected",
1621 "usedToDiagnose",
1622 "usesDevice",
1623 "additionalType",
1624 "alternateName",
1625 "description",
1626 "disambiguatingDescription",
1627 "identifier",
1628 "image",
1629 "mainEntityOfPage",
1630 "name",
1631 "potentialAction",
1632 "sameAs",
1633 "subjectOf",
1634 "url",
1635 ];
1636 deserializer.deserialize_struct("PathologyTest", FIELDS, ClassVisitor)
1637 }
1638 }
1639}