schema_org_types/schemas/classes/
pathology_test.rs

1use super::*;
2/// <https://schema.org/PathologyTest>
3#[cfg_attr(feature = "derive-debug", derive(Debug))]
4#[cfg_attr(feature = "derive-clone", derive(Clone))]
5pub struct PathologyTest {
6	/// <https://schema.org/tissueSample>
7	pub r#tissue_sample: Vec<TissueSampleProperty>,
8	/// <https://schema.org/code>
9	pub r#code: Vec<CodeProperty>,
10	/// <https://schema.org/funding>
11	pub r#funding: Vec<FundingProperty>,
12	/// <https://schema.org/guideline>
13	pub r#guideline: Vec<GuidelineProperty>,
14	/// <https://schema.org/legalStatus>
15	pub r#legal_status: Vec<LegalStatusProperty>,
16	/// <https://schema.org/medicineSystem>
17	pub r#medicine_system: Vec<MedicineSystemProperty>,
18	/// <https://schema.org/recognizingAuthority>
19	pub r#recognizing_authority: Vec<RecognizingAuthorityProperty>,
20	/// <https://schema.org/relevantSpecialty>
21	pub r#relevant_specialty: Vec<RelevantSpecialtyProperty>,
22	/// <https://schema.org/study>
23	pub r#study: Vec<StudyProperty>,
24	/// <https://schema.org/affectedBy>
25	pub r#affected_by: Vec<AffectedByProperty>,
26	/// <https://schema.org/normalRange>
27	pub r#normal_range: Vec<NormalRangeProperty>,
28	/// <https://schema.org/signDetected>
29	pub r#sign_detected: Vec<SignDetectedProperty>,
30	/// <https://schema.org/usedToDiagnose>
31	pub r#used_to_diagnose: Vec<UsedToDiagnoseProperty>,
32	/// <https://schema.org/usesDevice>
33	pub r#uses_device: Vec<UsesDeviceProperty>,
34	/// <https://schema.org/additionalType>
35	pub r#additional_type: Vec<AdditionalTypeProperty>,
36	/// <https://schema.org/alternateName>
37	pub r#alternate_name: Vec<AlternateNameProperty>,
38	/// <https://schema.org/description>
39	pub r#description: Vec<DescriptionProperty>,
40	/// <https://schema.org/disambiguatingDescription>
41	pub r#disambiguating_description: Vec<DisambiguatingDescriptionProperty>,
42	/// <https://schema.org/identifier>
43	pub r#identifier: Vec<IdentifierProperty>,
44	/// <https://schema.org/image>
45	pub r#image: Vec<ImageProperty>,
46	/// <https://schema.org/mainEntityOfPage>
47	pub r#main_entity_of_page: Vec<MainEntityOfPageProperty>,
48	/// <https://schema.org/name>
49	pub r#name: Vec<NameProperty>,
50	/// <https://schema.org/potentialAction>
51	pub r#potential_action: Vec<PotentialActionProperty>,
52	/// <https://schema.org/sameAs>
53	pub r#same_as: Vec<SameAsProperty>,
54	/// <https://schema.org/subjectOf>
55	pub r#subject_of: Vec<SubjectOfProperty>,
56	/// <https://schema.org/url>
57	pub r#url: Vec<UrlProperty>,
58}
59/// This trait is for properties from <https://schema.org/PathologyTest>.
60pub trait PathologyTestTrait {
61	/// Get <https://schema.org/tissueSample> from [`Self`] as borrowed slice.
62	fn get_tissue_sample(&self) -> &[TissueSampleProperty];
63	/// Take <https://schema.org/tissueSample> from [`Self`] as owned vector.
64	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}