schema_org_types/schemas/classes/
medical_sign.rs

1use super::*;
2/// <https://schema.org/MedicalSign>
3#[cfg_attr(feature = "derive-debug", derive(Debug))]
4#[cfg_attr(feature = "derive-clone", derive(Clone))]
5pub struct MedicalSign {
6	/// <https://schema.org/identifyingExam>
7	pub r#identifying_exam: Vec<IdentifyingExamProperty>,
8	/// <https://schema.org/identifyingTest>
9	pub r#identifying_test: Vec<IdentifyingTestProperty>,
10	/// <https://schema.org/associatedAnatomy>
11	pub r#associated_anatomy: Vec<AssociatedAnatomyProperty>,
12	/// <https://schema.org/differentialDiagnosis>
13	pub r#differential_diagnosis: Vec<DifferentialDiagnosisProperty>,
14	/// <https://schema.org/drug>
15	pub r#drug: Vec<DrugProperty>,
16	/// <https://schema.org/epidemiology>
17	pub r#epidemiology: Vec<EpidemiologyProperty>,
18	/// <https://schema.org/expectedPrognosis>
19	pub r#expected_prognosis: Vec<ExpectedPrognosisProperty>,
20	/// <https://schema.org/naturalProgression>
21	pub r#natural_progression: Vec<NaturalProgressionProperty>,
22	/// <https://schema.org/pathophysiology>
23	pub r#pathophysiology: Vec<PathophysiologyProperty>,
24	/// <https://schema.org/possibleComplication>
25	pub r#possible_complication: Vec<PossibleComplicationProperty>,
26	/// <https://schema.org/possibleTreatment>
27	pub r#possible_treatment: Vec<PossibleTreatmentProperty>,
28	/// <https://schema.org/primaryPrevention>
29	pub r#primary_prevention: Vec<PrimaryPreventionProperty>,
30	/// <https://schema.org/riskFactor>
31	pub r#risk_factor: Vec<RiskFactorProperty>,
32	/// <https://schema.org/secondaryPrevention>
33	pub r#secondary_prevention: Vec<SecondaryPreventionProperty>,
34	/// <https://schema.org/signOrSymptom>
35	pub r#sign_or_symptom: Vec<SignOrSymptomProperty>,
36	/// <https://schema.org/stage>
37	pub r#stage: Vec<StageProperty>,
38	/// <https://schema.org/status>
39	pub r#status: Vec<StatusProperty>,
40	/// <https://schema.org/typicalTest>
41	pub r#typical_test: Vec<TypicalTestProperty>,
42	/// <https://schema.org/code>
43	pub r#code: Vec<CodeProperty>,
44	/// <https://schema.org/funding>
45	pub r#funding: Vec<FundingProperty>,
46	/// <https://schema.org/guideline>
47	pub r#guideline: Vec<GuidelineProperty>,
48	/// <https://schema.org/legalStatus>
49	pub r#legal_status: Vec<LegalStatusProperty>,
50	/// <https://schema.org/medicineSystem>
51	pub r#medicine_system: Vec<MedicineSystemProperty>,
52	/// <https://schema.org/recognizingAuthority>
53	pub r#recognizing_authority: Vec<RecognizingAuthorityProperty>,
54	/// <https://schema.org/relevantSpecialty>
55	pub r#relevant_specialty: Vec<RelevantSpecialtyProperty>,
56	/// <https://schema.org/study>
57	pub r#study: Vec<StudyProperty>,
58	/// <https://schema.org/additionalType>
59	pub r#additional_type: Vec<AdditionalTypeProperty>,
60	/// <https://schema.org/alternateName>
61	pub r#alternate_name: Vec<AlternateNameProperty>,
62	/// <https://schema.org/description>
63	pub r#description: Vec<DescriptionProperty>,
64	/// <https://schema.org/disambiguatingDescription>
65	pub r#disambiguating_description: Vec<DisambiguatingDescriptionProperty>,
66	/// <https://schema.org/identifier>
67	pub r#identifier: Vec<IdentifierProperty>,
68	/// <https://schema.org/image>
69	pub r#image: Vec<ImageProperty>,
70	/// <https://schema.org/mainEntityOfPage>
71	pub r#main_entity_of_page: Vec<MainEntityOfPageProperty>,
72	/// <https://schema.org/name>
73	pub r#name: Vec<NameProperty>,
74	/// <https://schema.org/potentialAction>
75	pub r#potential_action: Vec<PotentialActionProperty>,
76	/// <https://schema.org/sameAs>
77	pub r#same_as: Vec<SameAsProperty>,
78	/// <https://schema.org/subjectOf>
79	pub r#subject_of: Vec<SubjectOfProperty>,
80	/// <https://schema.org/url>
81	pub r#url: Vec<UrlProperty>,
82}
83/// This trait is for properties from <https://schema.org/MedicalSign>.
84pub trait MedicalSignTrait {
85	/// Get <https://schema.org/identifyingExam> from [`Self`] as borrowed slice.
86	fn get_identifying_exam(&self) -> &[IdentifyingExamProperty];
87	/// Take <https://schema.org/identifyingExam> from [`Self`] as owned vector.
88	fn take_identifying_exam(&mut self) -> Vec<IdentifyingExamProperty>;
89	/// Get <https://schema.org/identifyingTest> from [`Self`] as borrowed slice.
90	fn get_identifying_test(&self) -> &[IdentifyingTestProperty];
91	/// Take <https://schema.org/identifyingTest> from [`Self`] as owned vector.
92	fn take_identifying_test(&mut self) -> Vec<IdentifyingTestProperty>;
93}
94impl MedicalSignTrait for MedicalSign {
95	fn get_identifying_exam(&self) -> &[IdentifyingExamProperty] {
96		self.r#identifying_exam.as_slice()
97	}
98	fn take_identifying_exam(&mut self) -> Vec<IdentifyingExamProperty> {
99		std::mem::take(&mut self.r#identifying_exam)
100	}
101	fn get_identifying_test(&self) -> &[IdentifyingTestProperty] {
102		self.r#identifying_test.as_slice()
103	}
104	fn take_identifying_test(&mut self) -> Vec<IdentifyingTestProperty> {
105		std::mem::take(&mut self.r#identifying_test)
106	}
107}
108impl MedicalConditionTrait for MedicalSign {
109	fn get_associated_anatomy(&self) -> &[AssociatedAnatomyProperty] {
110		self.r#associated_anatomy.as_slice()
111	}
112	fn take_associated_anatomy(&mut self) -> Vec<AssociatedAnatomyProperty> {
113		std::mem::take(&mut self.r#associated_anatomy)
114	}
115	fn get_differential_diagnosis(&self) -> &[DifferentialDiagnosisProperty] {
116		self.r#differential_diagnosis.as_slice()
117	}
118	fn take_differential_diagnosis(&mut self) -> Vec<DifferentialDiagnosisProperty> {
119		std::mem::take(&mut self.r#differential_diagnosis)
120	}
121	fn get_drug(&self) -> &[DrugProperty] {
122		self.r#drug.as_slice()
123	}
124	fn take_drug(&mut self) -> Vec<DrugProperty> {
125		std::mem::take(&mut self.r#drug)
126	}
127	fn get_epidemiology(&self) -> &[EpidemiologyProperty] {
128		self.r#epidemiology.as_slice()
129	}
130	fn take_epidemiology(&mut self) -> Vec<EpidemiologyProperty> {
131		std::mem::take(&mut self.r#epidemiology)
132	}
133	fn get_expected_prognosis(&self) -> &[ExpectedPrognosisProperty] {
134		self.r#expected_prognosis.as_slice()
135	}
136	fn take_expected_prognosis(&mut self) -> Vec<ExpectedPrognosisProperty> {
137		std::mem::take(&mut self.r#expected_prognosis)
138	}
139	fn get_natural_progression(&self) -> &[NaturalProgressionProperty] {
140		self.r#natural_progression.as_slice()
141	}
142	fn take_natural_progression(&mut self) -> Vec<NaturalProgressionProperty> {
143		std::mem::take(&mut self.r#natural_progression)
144	}
145	fn get_pathophysiology(&self) -> &[PathophysiologyProperty] {
146		self.r#pathophysiology.as_slice()
147	}
148	fn take_pathophysiology(&mut self) -> Vec<PathophysiologyProperty> {
149		std::mem::take(&mut self.r#pathophysiology)
150	}
151	fn get_possible_complication(&self) -> &[PossibleComplicationProperty] {
152		self.r#possible_complication.as_slice()
153	}
154	fn take_possible_complication(&mut self) -> Vec<PossibleComplicationProperty> {
155		std::mem::take(&mut self.r#possible_complication)
156	}
157	fn get_possible_treatment(&self) -> &[PossibleTreatmentProperty] {
158		self.r#possible_treatment.as_slice()
159	}
160	fn take_possible_treatment(&mut self) -> Vec<PossibleTreatmentProperty> {
161		std::mem::take(&mut self.r#possible_treatment)
162	}
163	fn get_primary_prevention(&self) -> &[PrimaryPreventionProperty] {
164		self.r#primary_prevention.as_slice()
165	}
166	fn take_primary_prevention(&mut self) -> Vec<PrimaryPreventionProperty> {
167		std::mem::take(&mut self.r#primary_prevention)
168	}
169	fn get_risk_factor(&self) -> &[RiskFactorProperty] {
170		self.r#risk_factor.as_slice()
171	}
172	fn take_risk_factor(&mut self) -> Vec<RiskFactorProperty> {
173		std::mem::take(&mut self.r#risk_factor)
174	}
175	fn get_secondary_prevention(&self) -> &[SecondaryPreventionProperty] {
176		self.r#secondary_prevention.as_slice()
177	}
178	fn take_secondary_prevention(&mut self) -> Vec<SecondaryPreventionProperty> {
179		std::mem::take(&mut self.r#secondary_prevention)
180	}
181	fn get_sign_or_symptom(&self) -> &[SignOrSymptomProperty] {
182		self.r#sign_or_symptom.as_slice()
183	}
184	fn take_sign_or_symptom(&mut self) -> Vec<SignOrSymptomProperty> {
185		std::mem::take(&mut self.r#sign_or_symptom)
186	}
187	fn get_stage(&self) -> &[StageProperty] {
188		self.r#stage.as_slice()
189	}
190	fn take_stage(&mut self) -> Vec<StageProperty> {
191		std::mem::take(&mut self.r#stage)
192	}
193	fn get_status(&self) -> &[StatusProperty] {
194		self.r#status.as_slice()
195	}
196	fn take_status(&mut self) -> Vec<StatusProperty> {
197		std::mem::take(&mut self.r#status)
198	}
199	fn get_typical_test(&self) -> &[TypicalTestProperty] {
200		self.r#typical_test.as_slice()
201	}
202	fn take_typical_test(&mut self) -> Vec<TypicalTestProperty> {
203		std::mem::take(&mut self.r#typical_test)
204	}
205}
206impl MedicalEntityTrait for MedicalSign {
207	fn get_code(&self) -> &[CodeProperty] {
208		self.r#code.as_slice()
209	}
210	fn take_code(&mut self) -> Vec<CodeProperty> {
211		std::mem::take(&mut self.r#code)
212	}
213	fn get_funding(&self) -> &[FundingProperty] {
214		self.r#funding.as_slice()
215	}
216	fn take_funding(&mut self) -> Vec<FundingProperty> {
217		std::mem::take(&mut self.r#funding)
218	}
219	fn get_guideline(&self) -> &[GuidelineProperty] {
220		self.r#guideline.as_slice()
221	}
222	fn take_guideline(&mut self) -> Vec<GuidelineProperty> {
223		std::mem::take(&mut self.r#guideline)
224	}
225	fn get_legal_status(&self) -> &[LegalStatusProperty] {
226		self.r#legal_status.as_slice()
227	}
228	fn take_legal_status(&mut self) -> Vec<LegalStatusProperty> {
229		std::mem::take(&mut self.r#legal_status)
230	}
231	fn get_medicine_system(&self) -> &[MedicineSystemProperty] {
232		self.r#medicine_system.as_slice()
233	}
234	fn take_medicine_system(&mut self) -> Vec<MedicineSystemProperty> {
235		std::mem::take(&mut self.r#medicine_system)
236	}
237	fn get_recognizing_authority(&self) -> &[RecognizingAuthorityProperty] {
238		self.r#recognizing_authority.as_slice()
239	}
240	fn take_recognizing_authority(&mut self) -> Vec<RecognizingAuthorityProperty> {
241		std::mem::take(&mut self.r#recognizing_authority)
242	}
243	fn get_relevant_specialty(&self) -> &[RelevantSpecialtyProperty] {
244		self.r#relevant_specialty.as_slice()
245	}
246	fn take_relevant_specialty(&mut self) -> Vec<RelevantSpecialtyProperty> {
247		std::mem::take(&mut self.r#relevant_specialty)
248	}
249	fn get_study(&self) -> &[StudyProperty] {
250		self.r#study.as_slice()
251	}
252	fn take_study(&mut self) -> Vec<StudyProperty> {
253		std::mem::take(&mut self.r#study)
254	}
255}
256impl MedicalSignOrSymptomTrait for MedicalSign {
257	fn get_possible_treatment(&self) -> &[PossibleTreatmentProperty] {
258		self.r#possible_treatment.as_slice()
259	}
260	fn take_possible_treatment(&mut self) -> Vec<PossibleTreatmentProperty> {
261		std::mem::take(&mut self.r#possible_treatment)
262	}
263}
264impl ThingTrait for MedicalSign {
265	fn get_additional_type(&self) -> &[AdditionalTypeProperty] {
266		self.r#additional_type.as_slice()
267	}
268	fn take_additional_type(&mut self) -> Vec<AdditionalTypeProperty> {
269		std::mem::take(&mut self.r#additional_type)
270	}
271	fn get_alternate_name(&self) -> &[AlternateNameProperty] {
272		self.r#alternate_name.as_slice()
273	}
274	fn take_alternate_name(&mut self) -> Vec<AlternateNameProperty> {
275		std::mem::take(&mut self.r#alternate_name)
276	}
277	fn get_description(&self) -> &[DescriptionProperty] {
278		self.r#description.as_slice()
279	}
280	fn take_description(&mut self) -> Vec<DescriptionProperty> {
281		std::mem::take(&mut self.r#description)
282	}
283	fn get_disambiguating_description(&self) -> &[DisambiguatingDescriptionProperty] {
284		self.r#disambiguating_description.as_slice()
285	}
286	fn take_disambiguating_description(&mut self) -> Vec<DisambiguatingDescriptionProperty> {
287		std::mem::take(&mut self.r#disambiguating_description)
288	}
289	fn get_identifier(&self) -> &[IdentifierProperty] {
290		self.r#identifier.as_slice()
291	}
292	fn take_identifier(&mut self) -> Vec<IdentifierProperty> {
293		std::mem::take(&mut self.r#identifier)
294	}
295	fn get_image(&self) -> &[ImageProperty] {
296		self.r#image.as_slice()
297	}
298	fn take_image(&mut self) -> Vec<ImageProperty> {
299		std::mem::take(&mut self.r#image)
300	}
301	fn get_main_entity_of_page(&self) -> &[MainEntityOfPageProperty] {
302		self.r#main_entity_of_page.as_slice()
303	}
304	fn take_main_entity_of_page(&mut self) -> Vec<MainEntityOfPageProperty> {
305		std::mem::take(&mut self.r#main_entity_of_page)
306	}
307	fn get_name(&self) -> &[NameProperty] {
308		self.r#name.as_slice()
309	}
310	fn take_name(&mut self) -> Vec<NameProperty> {
311		std::mem::take(&mut self.r#name)
312	}
313	fn get_potential_action(&self) -> &[PotentialActionProperty] {
314		self.r#potential_action.as_slice()
315	}
316	fn take_potential_action(&mut self) -> Vec<PotentialActionProperty> {
317		std::mem::take(&mut self.r#potential_action)
318	}
319	fn get_same_as(&self) -> &[SameAsProperty] {
320		self.r#same_as.as_slice()
321	}
322	fn take_same_as(&mut self) -> Vec<SameAsProperty> {
323		std::mem::take(&mut self.r#same_as)
324	}
325	fn get_subject_of(&self) -> &[SubjectOfProperty] {
326		self.r#subject_of.as_slice()
327	}
328	fn take_subject_of(&mut self) -> Vec<SubjectOfProperty> {
329		std::mem::take(&mut self.r#subject_of)
330	}
331	fn get_url(&self) -> &[UrlProperty] {
332		self.r#url.as_slice()
333	}
334	fn take_url(&mut self) -> Vec<UrlProperty> {
335		std::mem::take(&mut self.r#url)
336	}
337}
338#[cfg(feature = "serde")]
339mod serde {
340	use std::{fmt, fmt::Formatter};
341
342	use ::serde::{
343		de, de::Visitor, ser::SerializeStruct, Deserialize, Deserializer, Serialize, Serializer,
344	};
345
346	use super::*;
347	impl Serialize for MedicalSign {
348		fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
349		where
350			S: Serializer,
351		{
352			let len: usize = [
353				!Vec::is_empty(&self.r#identifying_exam) as usize,
354				!Vec::is_empty(&self.r#identifying_test) as usize,
355				!Vec::is_empty(&self.r#associated_anatomy) as usize,
356				!Vec::is_empty(&self.r#differential_diagnosis) as usize,
357				!Vec::is_empty(&self.r#drug) as usize,
358				!Vec::is_empty(&self.r#epidemiology) as usize,
359				!Vec::is_empty(&self.r#expected_prognosis) as usize,
360				!Vec::is_empty(&self.r#natural_progression) as usize,
361				!Vec::is_empty(&self.r#pathophysiology) as usize,
362				!Vec::is_empty(&self.r#possible_complication) as usize,
363				!Vec::is_empty(&self.r#possible_treatment) as usize,
364				!Vec::is_empty(&self.r#primary_prevention) as usize,
365				!Vec::is_empty(&self.r#risk_factor) as usize,
366				!Vec::is_empty(&self.r#secondary_prevention) as usize,
367				!Vec::is_empty(&self.r#sign_or_symptom) as usize,
368				!Vec::is_empty(&self.r#stage) as usize,
369				!Vec::is_empty(&self.r#status) as usize,
370				!Vec::is_empty(&self.r#typical_test) as usize,
371				!Vec::is_empty(&self.r#code) as usize,
372				!Vec::is_empty(&self.r#funding) as usize,
373				!Vec::is_empty(&self.r#guideline) as usize,
374				!Vec::is_empty(&self.r#legal_status) as usize,
375				!Vec::is_empty(&self.r#medicine_system) as usize,
376				!Vec::is_empty(&self.r#recognizing_authority) as usize,
377				!Vec::is_empty(&self.r#relevant_specialty) as usize,
378				!Vec::is_empty(&self.r#study) as usize,
379				!Vec::is_empty(&self.r#additional_type) as usize,
380				!Vec::is_empty(&self.r#alternate_name) as usize,
381				!Vec::is_empty(&self.r#description) as usize,
382				!Vec::is_empty(&self.r#disambiguating_description) as usize,
383				!Vec::is_empty(&self.r#identifier) as usize,
384				!Vec::is_empty(&self.r#image) as usize,
385				!Vec::is_empty(&self.r#main_entity_of_page) as usize,
386				!Vec::is_empty(&self.r#name) as usize,
387				!Vec::is_empty(&self.r#potential_action) as usize,
388				!Vec::is_empty(&self.r#same_as) as usize,
389				!Vec::is_empty(&self.r#subject_of) as usize,
390				!Vec::is_empty(&self.r#url) as usize,
391			]
392			.iter()
393			.sum();
394			let mut serialize_struct =
395				Serializer::serialize_struct(serializer, "MedicalSign", len)?;
396			if !Vec::is_empty(&self.r#identifying_exam) {
397				serialize_struct.serialize_field("identifyingExam", {
398					struct SerializeWith<'a>(&'a Vec<IdentifyingExamProperty>);
399					impl<'a> Serialize for SerializeWith<'a> {
400						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
401						where
402							S: Serializer,
403						{
404							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
405								self.0, serializer,
406							)
407						}
408					}
409					&SerializeWith(&self.r#identifying_exam)
410				})?;
411			} else {
412				serialize_struct.skip_field("identifyingExam")?;
413			}
414			if !Vec::is_empty(&self.r#identifying_test) {
415				serialize_struct.serialize_field("identifyingTest", {
416					struct SerializeWith<'a>(&'a Vec<IdentifyingTestProperty>);
417					impl<'a> Serialize for SerializeWith<'a> {
418						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
419						where
420							S: Serializer,
421						{
422							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
423								self.0, serializer,
424							)
425						}
426					}
427					&SerializeWith(&self.r#identifying_test)
428				})?;
429			} else {
430				serialize_struct.skip_field("identifyingTest")?;
431			}
432			if !Vec::is_empty(&self.r#associated_anatomy) {
433				serialize_struct.serialize_field("associatedAnatomy", {
434					struct SerializeWith<'a>(&'a Vec<AssociatedAnatomyProperty>);
435					impl<'a> Serialize for SerializeWith<'a> {
436						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
437						where
438							S: Serializer,
439						{
440							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
441								self.0, serializer,
442							)
443						}
444					}
445					&SerializeWith(&self.r#associated_anatomy)
446				})?;
447			} else {
448				serialize_struct.skip_field("associatedAnatomy")?;
449			}
450			if !Vec::is_empty(&self.r#differential_diagnosis) {
451				serialize_struct.serialize_field("differentialDiagnosis", {
452					struct SerializeWith<'a>(&'a Vec<DifferentialDiagnosisProperty>);
453					impl<'a> Serialize for SerializeWith<'a> {
454						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
455						where
456							S: Serializer,
457						{
458							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
459								self.0, serializer,
460							)
461						}
462					}
463					&SerializeWith(&self.r#differential_diagnosis)
464				})?;
465			} else {
466				serialize_struct.skip_field("differentialDiagnosis")?;
467			}
468			if !Vec::is_empty(&self.r#drug) {
469				serialize_struct.serialize_field("drug", {
470					struct SerializeWith<'a>(&'a Vec<DrugProperty>);
471					impl<'a> Serialize for SerializeWith<'a> {
472						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
473						where
474							S: Serializer,
475						{
476							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
477								self.0, serializer,
478							)
479						}
480					}
481					&SerializeWith(&self.r#drug)
482				})?;
483			} else {
484				serialize_struct.skip_field("drug")?;
485			}
486			if !Vec::is_empty(&self.r#epidemiology) {
487				serialize_struct.serialize_field("epidemiology", {
488					struct SerializeWith<'a>(&'a Vec<EpidemiologyProperty>);
489					impl<'a> Serialize for SerializeWith<'a> {
490						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
491						where
492							S: Serializer,
493						{
494							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
495								self.0, serializer,
496							)
497						}
498					}
499					&SerializeWith(&self.r#epidemiology)
500				})?;
501			} else {
502				serialize_struct.skip_field("epidemiology")?;
503			}
504			if !Vec::is_empty(&self.r#expected_prognosis) {
505				serialize_struct.serialize_field("expectedPrognosis", {
506					struct SerializeWith<'a>(&'a Vec<ExpectedPrognosisProperty>);
507					impl<'a> Serialize for SerializeWith<'a> {
508						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
509						where
510							S: Serializer,
511						{
512							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
513								self.0, serializer,
514							)
515						}
516					}
517					&SerializeWith(&self.r#expected_prognosis)
518				})?;
519			} else {
520				serialize_struct.skip_field("expectedPrognosis")?;
521			}
522			if !Vec::is_empty(&self.r#natural_progression) {
523				serialize_struct.serialize_field("naturalProgression", {
524					struct SerializeWith<'a>(&'a Vec<NaturalProgressionProperty>);
525					impl<'a> Serialize for SerializeWith<'a> {
526						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
527						where
528							S: Serializer,
529						{
530							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
531								self.0, serializer,
532							)
533						}
534					}
535					&SerializeWith(&self.r#natural_progression)
536				})?;
537			} else {
538				serialize_struct.skip_field("naturalProgression")?;
539			}
540			if !Vec::is_empty(&self.r#pathophysiology) {
541				serialize_struct.serialize_field("pathophysiology", {
542					struct SerializeWith<'a>(&'a Vec<PathophysiologyProperty>);
543					impl<'a> Serialize for SerializeWith<'a> {
544						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
545						where
546							S: Serializer,
547						{
548							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
549								self.0, serializer,
550							)
551						}
552					}
553					&SerializeWith(&self.r#pathophysiology)
554				})?;
555			} else {
556				serialize_struct.skip_field("pathophysiology")?;
557			}
558			if !Vec::is_empty(&self.r#possible_complication) {
559				serialize_struct.serialize_field("possibleComplication", {
560					struct SerializeWith<'a>(&'a Vec<PossibleComplicationProperty>);
561					impl<'a> Serialize for SerializeWith<'a> {
562						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
563						where
564							S: Serializer,
565						{
566							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
567								self.0, serializer,
568							)
569						}
570					}
571					&SerializeWith(&self.r#possible_complication)
572				})?;
573			} else {
574				serialize_struct.skip_field("possibleComplication")?;
575			}
576			if !Vec::is_empty(&self.r#possible_treatment) {
577				serialize_struct.serialize_field("possibleTreatment", {
578					struct SerializeWith<'a>(&'a Vec<PossibleTreatmentProperty>);
579					impl<'a> Serialize for SerializeWith<'a> {
580						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
581						where
582							S: Serializer,
583						{
584							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
585								self.0, serializer,
586							)
587						}
588					}
589					&SerializeWith(&self.r#possible_treatment)
590				})?;
591			} else {
592				serialize_struct.skip_field("possibleTreatment")?;
593			}
594			if !Vec::is_empty(&self.r#primary_prevention) {
595				serialize_struct.serialize_field("primaryPrevention", {
596					struct SerializeWith<'a>(&'a Vec<PrimaryPreventionProperty>);
597					impl<'a> Serialize for SerializeWith<'a> {
598						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
599						where
600							S: Serializer,
601						{
602							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
603								self.0, serializer,
604							)
605						}
606					}
607					&SerializeWith(&self.r#primary_prevention)
608				})?;
609			} else {
610				serialize_struct.skip_field("primaryPrevention")?;
611			}
612			if !Vec::is_empty(&self.r#risk_factor) {
613				serialize_struct.serialize_field("riskFactor", {
614					struct SerializeWith<'a>(&'a Vec<RiskFactorProperty>);
615					impl<'a> Serialize for SerializeWith<'a> {
616						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
617						where
618							S: Serializer,
619						{
620							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
621								self.0, serializer,
622							)
623						}
624					}
625					&SerializeWith(&self.r#risk_factor)
626				})?;
627			} else {
628				serialize_struct.skip_field("riskFactor")?;
629			}
630			if !Vec::is_empty(&self.r#secondary_prevention) {
631				serialize_struct.serialize_field("secondaryPrevention", {
632					struct SerializeWith<'a>(&'a Vec<SecondaryPreventionProperty>);
633					impl<'a> Serialize for SerializeWith<'a> {
634						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
635						where
636							S: Serializer,
637						{
638							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
639								self.0, serializer,
640							)
641						}
642					}
643					&SerializeWith(&self.r#secondary_prevention)
644				})?;
645			} else {
646				serialize_struct.skip_field("secondaryPrevention")?;
647			}
648			if !Vec::is_empty(&self.r#sign_or_symptom) {
649				serialize_struct.serialize_field("signOrSymptom", {
650					struct SerializeWith<'a>(&'a Vec<SignOrSymptomProperty>);
651					impl<'a> Serialize for SerializeWith<'a> {
652						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
653						where
654							S: Serializer,
655						{
656							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
657								self.0, serializer,
658							)
659						}
660					}
661					&SerializeWith(&self.r#sign_or_symptom)
662				})?;
663			} else {
664				serialize_struct.skip_field("signOrSymptom")?;
665			}
666			if !Vec::is_empty(&self.r#stage) {
667				serialize_struct.serialize_field("stage", {
668					struct SerializeWith<'a>(&'a Vec<StageProperty>);
669					impl<'a> Serialize for SerializeWith<'a> {
670						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
671						where
672							S: Serializer,
673						{
674							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
675								self.0, serializer,
676							)
677						}
678					}
679					&SerializeWith(&self.r#stage)
680				})?;
681			} else {
682				serialize_struct.skip_field("stage")?;
683			}
684			if !Vec::is_empty(&self.r#status) {
685				serialize_struct.serialize_field("status", {
686					struct SerializeWith<'a>(&'a Vec<StatusProperty>);
687					impl<'a> Serialize for SerializeWith<'a> {
688						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
689						where
690							S: Serializer,
691						{
692							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
693								self.0, serializer,
694							)
695						}
696					}
697					&SerializeWith(&self.r#status)
698				})?;
699			} else {
700				serialize_struct.skip_field("status")?;
701			}
702			if !Vec::is_empty(&self.r#typical_test) {
703				serialize_struct.serialize_field("typicalTest", {
704					struct SerializeWith<'a>(&'a Vec<TypicalTestProperty>);
705					impl<'a> Serialize for SerializeWith<'a> {
706						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
707						where
708							S: Serializer,
709						{
710							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
711								self.0, serializer,
712							)
713						}
714					}
715					&SerializeWith(&self.r#typical_test)
716				})?;
717			} else {
718				serialize_struct.skip_field("typicalTest")?;
719			}
720			if !Vec::is_empty(&self.r#code) {
721				serialize_struct.serialize_field("code", {
722					struct SerializeWith<'a>(&'a Vec<CodeProperty>);
723					impl<'a> Serialize for SerializeWith<'a> {
724						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
725						where
726							S: Serializer,
727						{
728							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
729								self.0, serializer,
730							)
731						}
732					}
733					&SerializeWith(&self.r#code)
734				})?;
735			} else {
736				serialize_struct.skip_field("code")?;
737			}
738			if !Vec::is_empty(&self.r#funding) {
739				serialize_struct.serialize_field("funding", {
740					struct SerializeWith<'a>(&'a Vec<FundingProperty>);
741					impl<'a> Serialize for SerializeWith<'a> {
742						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
743						where
744							S: Serializer,
745						{
746							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
747								self.0, serializer,
748							)
749						}
750					}
751					&SerializeWith(&self.r#funding)
752				})?;
753			} else {
754				serialize_struct.skip_field("funding")?;
755			}
756			if !Vec::is_empty(&self.r#guideline) {
757				serialize_struct.serialize_field("guideline", {
758					struct SerializeWith<'a>(&'a Vec<GuidelineProperty>);
759					impl<'a> Serialize for SerializeWith<'a> {
760						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
761						where
762							S: Serializer,
763						{
764							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
765								self.0, serializer,
766							)
767						}
768					}
769					&SerializeWith(&self.r#guideline)
770				})?;
771			} else {
772				serialize_struct.skip_field("guideline")?;
773			}
774			if !Vec::is_empty(&self.r#legal_status) {
775				serialize_struct.serialize_field("legalStatus", {
776					struct SerializeWith<'a>(&'a Vec<LegalStatusProperty>);
777					impl<'a> Serialize for SerializeWith<'a> {
778						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
779						where
780							S: Serializer,
781						{
782							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
783								self.0, serializer,
784							)
785						}
786					}
787					&SerializeWith(&self.r#legal_status)
788				})?;
789			} else {
790				serialize_struct.skip_field("legalStatus")?;
791			}
792			if !Vec::is_empty(&self.r#medicine_system) {
793				serialize_struct.serialize_field("medicineSystem", {
794					struct SerializeWith<'a>(&'a Vec<MedicineSystemProperty>);
795					impl<'a> Serialize for SerializeWith<'a> {
796						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
797						where
798							S: Serializer,
799						{
800							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
801								self.0, serializer,
802							)
803						}
804					}
805					&SerializeWith(&self.r#medicine_system)
806				})?;
807			} else {
808				serialize_struct.skip_field("medicineSystem")?;
809			}
810			if !Vec::is_empty(&self.r#recognizing_authority) {
811				serialize_struct.serialize_field("recognizingAuthority", {
812					struct SerializeWith<'a>(&'a Vec<RecognizingAuthorityProperty>);
813					impl<'a> Serialize for SerializeWith<'a> {
814						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
815						where
816							S: Serializer,
817						{
818							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
819								self.0, serializer,
820							)
821						}
822					}
823					&SerializeWith(&self.r#recognizing_authority)
824				})?;
825			} else {
826				serialize_struct.skip_field("recognizingAuthority")?;
827			}
828			if !Vec::is_empty(&self.r#relevant_specialty) {
829				serialize_struct.serialize_field("relevantSpecialty", {
830					struct SerializeWith<'a>(&'a Vec<RelevantSpecialtyProperty>);
831					impl<'a> Serialize for SerializeWith<'a> {
832						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
833						where
834							S: Serializer,
835						{
836							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
837								self.0, serializer,
838							)
839						}
840					}
841					&SerializeWith(&self.r#relevant_specialty)
842				})?;
843			} else {
844				serialize_struct.skip_field("relevantSpecialty")?;
845			}
846			if !Vec::is_empty(&self.r#study) {
847				serialize_struct.serialize_field("study", {
848					struct SerializeWith<'a>(&'a Vec<StudyProperty>);
849					impl<'a> Serialize for SerializeWith<'a> {
850						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
851						where
852							S: Serializer,
853						{
854							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
855								self.0, serializer,
856							)
857						}
858					}
859					&SerializeWith(&self.r#study)
860				})?;
861			} else {
862				serialize_struct.skip_field("study")?;
863			}
864			if !Vec::is_empty(&self.r#additional_type) {
865				serialize_struct.serialize_field("additionalType", {
866					struct SerializeWith<'a>(&'a Vec<AdditionalTypeProperty>);
867					impl<'a> Serialize for SerializeWith<'a> {
868						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
869						where
870							S: Serializer,
871						{
872							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
873								self.0, serializer,
874							)
875						}
876					}
877					&SerializeWith(&self.r#additional_type)
878				})?;
879			} else {
880				serialize_struct.skip_field("additionalType")?;
881			}
882			if !Vec::is_empty(&self.r#alternate_name) {
883				serialize_struct.serialize_field("alternateName", {
884					struct SerializeWith<'a>(&'a Vec<AlternateNameProperty>);
885					impl<'a> Serialize for SerializeWith<'a> {
886						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
887						where
888							S: Serializer,
889						{
890							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
891								self.0, serializer,
892							)
893						}
894					}
895					&SerializeWith(&self.r#alternate_name)
896				})?;
897			} else {
898				serialize_struct.skip_field("alternateName")?;
899			}
900			if !Vec::is_empty(&self.r#description) {
901				serialize_struct.serialize_field("description", {
902					struct SerializeWith<'a>(&'a Vec<DescriptionProperty>);
903					impl<'a> Serialize for SerializeWith<'a> {
904						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
905						where
906							S: Serializer,
907						{
908							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
909								self.0, serializer,
910							)
911						}
912					}
913					&SerializeWith(&self.r#description)
914				})?;
915			} else {
916				serialize_struct.skip_field("description")?;
917			}
918			if !Vec::is_empty(&self.r#disambiguating_description) {
919				serialize_struct.serialize_field("disambiguatingDescription", {
920					struct SerializeWith<'a>(&'a Vec<DisambiguatingDescriptionProperty>);
921					impl<'a> Serialize for SerializeWith<'a> {
922						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
923						where
924							S: Serializer,
925						{
926							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
927								self.0, serializer,
928							)
929						}
930					}
931					&SerializeWith(&self.r#disambiguating_description)
932				})?;
933			} else {
934				serialize_struct.skip_field("disambiguatingDescription")?;
935			}
936			if !Vec::is_empty(&self.r#identifier) {
937				serialize_struct.serialize_field("identifier", {
938					struct SerializeWith<'a>(&'a Vec<IdentifierProperty>);
939					impl<'a> Serialize for SerializeWith<'a> {
940						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
941						where
942							S: Serializer,
943						{
944							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
945								self.0, serializer,
946							)
947						}
948					}
949					&SerializeWith(&self.r#identifier)
950				})?;
951			} else {
952				serialize_struct.skip_field("identifier")?;
953			}
954			if !Vec::is_empty(&self.r#image) {
955				serialize_struct.serialize_field("image", {
956					struct SerializeWith<'a>(&'a Vec<ImageProperty>);
957					impl<'a> Serialize for SerializeWith<'a> {
958						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
959						where
960							S: Serializer,
961						{
962							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
963								self.0, serializer,
964							)
965						}
966					}
967					&SerializeWith(&self.r#image)
968				})?;
969			} else {
970				serialize_struct.skip_field("image")?;
971			}
972			if !Vec::is_empty(&self.r#main_entity_of_page) {
973				serialize_struct.serialize_field("mainEntityOfPage", {
974					struct SerializeWith<'a>(&'a Vec<MainEntityOfPageProperty>);
975					impl<'a> Serialize for SerializeWith<'a> {
976						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
977						where
978							S: Serializer,
979						{
980							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
981								self.0, serializer,
982							)
983						}
984					}
985					&SerializeWith(&self.r#main_entity_of_page)
986				})?;
987			} else {
988				serialize_struct.skip_field("mainEntityOfPage")?;
989			}
990			if !Vec::is_empty(&self.r#name) {
991				serialize_struct.serialize_field("name", {
992					struct SerializeWith<'a>(&'a Vec<NameProperty>);
993					impl<'a> Serialize for SerializeWith<'a> {
994						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
995						where
996							S: Serializer,
997						{
998							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
999								self.0, serializer,
1000							)
1001						}
1002					}
1003					&SerializeWith(&self.r#name)
1004				})?;
1005			} else {
1006				serialize_struct.skip_field("name")?;
1007			}
1008			if !Vec::is_empty(&self.r#potential_action) {
1009				serialize_struct.serialize_field("potentialAction", {
1010					struct SerializeWith<'a>(&'a Vec<PotentialActionProperty>);
1011					impl<'a> Serialize for SerializeWith<'a> {
1012						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
1013						where
1014							S: Serializer,
1015						{
1016							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
1017								self.0, serializer,
1018							)
1019						}
1020					}
1021					&SerializeWith(&self.r#potential_action)
1022				})?;
1023			} else {
1024				serialize_struct.skip_field("potentialAction")?;
1025			}
1026			if !Vec::is_empty(&self.r#same_as) {
1027				serialize_struct.serialize_field("sameAs", {
1028					struct SerializeWith<'a>(&'a Vec<SameAsProperty>);
1029					impl<'a> Serialize for SerializeWith<'a> {
1030						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
1031						where
1032							S: Serializer,
1033						{
1034							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
1035								self.0, serializer,
1036							)
1037						}
1038					}
1039					&SerializeWith(&self.r#same_as)
1040				})?;
1041			} else {
1042				serialize_struct.skip_field("sameAs")?;
1043			}
1044			if !Vec::is_empty(&self.r#subject_of) {
1045				serialize_struct.serialize_field("subjectOf", {
1046					struct SerializeWith<'a>(&'a Vec<SubjectOfProperty>);
1047					impl<'a> Serialize for SerializeWith<'a> {
1048						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
1049						where
1050							S: Serializer,
1051						{
1052							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
1053								self.0, serializer,
1054							)
1055						}
1056					}
1057					&SerializeWith(&self.r#subject_of)
1058				})?;
1059			} else {
1060				serialize_struct.skip_field("subjectOf")?;
1061			}
1062			if !Vec::is_empty(&self.r#url) {
1063				serialize_struct.serialize_field("url", {
1064					struct SerializeWith<'a>(&'a Vec<UrlProperty>);
1065					impl<'a> Serialize for SerializeWith<'a> {
1066						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
1067						where
1068							S: Serializer,
1069						{
1070							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
1071								self.0, serializer,
1072							)
1073						}
1074					}
1075					&SerializeWith(&self.r#url)
1076				})?;
1077			} else {
1078				serialize_struct.skip_field("url")?;
1079			}
1080			serialize_struct.end()
1081		}
1082	}
1083	impl<'de> Deserialize<'de> for MedicalSign {
1084		fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1085		where
1086			D: Deserializer<'de>,
1087		{
1088			enum Field {
1089				IdentifyingExam,
1090				IdentifyingTest,
1091				AssociatedAnatomy,
1092				DifferentialDiagnosis,
1093				Drug,
1094				Epidemiology,
1095				ExpectedPrognosis,
1096				NaturalProgression,
1097				Pathophysiology,
1098				PossibleComplication,
1099				PossibleTreatment,
1100				PrimaryPrevention,
1101				RiskFactor,
1102				SecondaryPrevention,
1103				SignOrSymptom,
1104				Stage,
1105				Status,
1106				TypicalTest,
1107				Code,
1108				Funding,
1109				Guideline,
1110				LegalStatus,
1111				MedicineSystem,
1112				RecognizingAuthority,
1113				RelevantSpecialty,
1114				Study,
1115				AdditionalType,
1116				AlternateName,
1117				Description,
1118				DisambiguatingDescription,
1119				Identifier,
1120				Image,
1121				MainEntityOfPage,
1122				Name,
1123				PotentialAction,
1124				SameAs,
1125				SubjectOf,
1126				Url,
1127				Ignore,
1128			}
1129			struct FieldVisitor;
1130			impl<'de> Visitor<'de> for FieldVisitor {
1131				type Value = Field;
1132				fn expecting(&self, formatter: &mut Formatter) -> fmt::Result {
1133					formatter.write_str("field identifier")
1134				}
1135				fn visit_str<E>(self, value: &str) -> Result<Self::Value, E>
1136				where
1137					E: de::Error,
1138				{
1139					match value {
1140						"identifyingExam" => Ok(Field::IdentifyingExam),
1141						"identifyingTest" => Ok(Field::IdentifyingTest),
1142						"associatedAnatomy" => Ok(Field::AssociatedAnatomy),
1143						"differentialDiagnosis" => Ok(Field::DifferentialDiagnosis),
1144						"drug" => Ok(Field::Drug),
1145						"epidemiology" => Ok(Field::Epidemiology),
1146						"expectedPrognosis" => Ok(Field::ExpectedPrognosis),
1147						"naturalProgression" => Ok(Field::NaturalProgression),
1148						"pathophysiology" => Ok(Field::Pathophysiology),
1149						"possibleComplication" => Ok(Field::PossibleComplication),
1150						"possibleTreatment" => Ok(Field::PossibleTreatment),
1151						"primaryPrevention" => Ok(Field::PrimaryPrevention),
1152						"riskFactor" => Ok(Field::RiskFactor),
1153						"secondaryPrevention" => Ok(Field::SecondaryPrevention),
1154						"signOrSymptom" => Ok(Field::SignOrSymptom),
1155						"stage" => Ok(Field::Stage),
1156						"status" => Ok(Field::Status),
1157						"typicalTest" => Ok(Field::TypicalTest),
1158						"code" => Ok(Field::Code),
1159						"funding" => Ok(Field::Funding),
1160						"guideline" => Ok(Field::Guideline),
1161						"legalStatus" => Ok(Field::LegalStatus),
1162						"medicineSystem" => Ok(Field::MedicineSystem),
1163						"recognizingAuthority" => Ok(Field::RecognizingAuthority),
1164						"relevantSpecialty" => Ok(Field::RelevantSpecialty),
1165						"study" => Ok(Field::Study),
1166						"additionalType" => Ok(Field::AdditionalType),
1167						"alternateName" => Ok(Field::AlternateName),
1168						"description" => Ok(Field::Description),
1169						"disambiguatingDescription" => Ok(Field::DisambiguatingDescription),
1170						"identifier" => Ok(Field::Identifier),
1171						"image" => Ok(Field::Image),
1172						"mainEntityOfPage" => Ok(Field::MainEntityOfPage),
1173						"name" => Ok(Field::Name),
1174						"potentialAction" => Ok(Field::PotentialAction),
1175						"sameAs" => Ok(Field::SameAs),
1176						"subjectOf" => Ok(Field::SubjectOf),
1177						"url" => Ok(Field::Url),
1178						"id" | "type" => Ok(Field::Ignore),
1179						_ => Err(de::Error::unknown_field(value, FIELDS)),
1180					}
1181				}
1182				fn visit_bytes<E>(self, value: &[u8]) -> Result<Self::Value, E>
1183				where
1184					E: de::Error,
1185				{
1186					match value {
1187						b"identifyingExam" => Ok(Field::IdentifyingExam),
1188						b"identifyingTest" => Ok(Field::IdentifyingTest),
1189						b"associatedAnatomy" => Ok(Field::AssociatedAnatomy),
1190						b"differentialDiagnosis" => Ok(Field::DifferentialDiagnosis),
1191						b"drug" => Ok(Field::Drug),
1192						b"epidemiology" => Ok(Field::Epidemiology),
1193						b"expectedPrognosis" => Ok(Field::ExpectedPrognosis),
1194						b"naturalProgression" => Ok(Field::NaturalProgression),
1195						b"pathophysiology" => Ok(Field::Pathophysiology),
1196						b"possibleComplication" => Ok(Field::PossibleComplication),
1197						b"possibleTreatment" => Ok(Field::PossibleTreatment),
1198						b"primaryPrevention" => Ok(Field::PrimaryPrevention),
1199						b"riskFactor" => Ok(Field::RiskFactor),
1200						b"secondaryPrevention" => Ok(Field::SecondaryPrevention),
1201						b"signOrSymptom" => Ok(Field::SignOrSymptom),
1202						b"stage" => Ok(Field::Stage),
1203						b"status" => Ok(Field::Status),
1204						b"typicalTest" => Ok(Field::TypicalTest),
1205						b"code" => Ok(Field::Code),
1206						b"funding" => Ok(Field::Funding),
1207						b"guideline" => Ok(Field::Guideline),
1208						b"legalStatus" => Ok(Field::LegalStatus),
1209						b"medicineSystem" => Ok(Field::MedicineSystem),
1210						b"recognizingAuthority" => Ok(Field::RecognizingAuthority),
1211						b"relevantSpecialty" => Ok(Field::RelevantSpecialty),
1212						b"study" => Ok(Field::Study),
1213						b"additionalType" => Ok(Field::AdditionalType),
1214						b"alternateName" => Ok(Field::AlternateName),
1215						b"description" => Ok(Field::Description),
1216						b"disambiguatingDescription" => Ok(Field::DisambiguatingDescription),
1217						b"identifier" => Ok(Field::Identifier),
1218						b"image" => Ok(Field::Image),
1219						b"mainEntityOfPage" => Ok(Field::MainEntityOfPage),
1220						b"name" => Ok(Field::Name),
1221						b"potentialAction" => Ok(Field::PotentialAction),
1222						b"sameAs" => Ok(Field::SameAs),
1223						b"subjectOf" => Ok(Field::SubjectOf),
1224						b"url" => Ok(Field::Url),
1225						b"id" | b"type" => Ok(Field::Ignore),
1226						_ => {
1227							let value = &String::from_utf8_lossy(value);
1228							Err(de::Error::unknown_field(value, FIELDS))
1229						}
1230					}
1231				}
1232			}
1233			impl<'de> Deserialize<'de> for Field {
1234				fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1235				where
1236					D: Deserializer<'de>,
1237				{
1238					deserializer.deserialize_identifier(FieldVisitor)
1239				}
1240			}
1241			struct ClassVisitor;
1242			impl<'de> Visitor<'de> for ClassVisitor {
1243				type Value = MedicalSign;
1244				fn expecting(&self, formatter: &mut Formatter) -> fmt::Result {
1245					formatter.write_str("schema.org schema MedicalSign")
1246				}
1247				fn visit_map<A>(self, mut map: A) -> Result<Self::Value, A::Error>
1248				where
1249					A: de::MapAccess<'de>,
1250				{
1251					let mut r#identifying_exam_property = None;
1252					let mut r#identifying_test_property = None;
1253					let mut r#associated_anatomy_property = None;
1254					let mut r#differential_diagnosis_property = None;
1255					let mut r#drug_property = None;
1256					let mut r#epidemiology_property = None;
1257					let mut r#expected_prognosis_property = None;
1258					let mut r#natural_progression_property = None;
1259					let mut r#pathophysiology_property = None;
1260					let mut r#possible_complication_property = None;
1261					let mut r#possible_treatment_property = None;
1262					let mut r#primary_prevention_property = None;
1263					let mut r#risk_factor_property = None;
1264					let mut r#secondary_prevention_property = None;
1265					let mut r#sign_or_symptom_property = None;
1266					let mut r#stage_property = None;
1267					let mut r#status_property = None;
1268					let mut r#typical_test_property = None;
1269					let mut r#code_property = None;
1270					let mut r#funding_property = None;
1271					let mut r#guideline_property = None;
1272					let mut r#legal_status_property = None;
1273					let mut r#medicine_system_property = None;
1274					let mut r#recognizing_authority_property = None;
1275					let mut r#relevant_specialty_property = None;
1276					let mut r#study_property = None;
1277					let mut r#additional_type_property = None;
1278					let mut r#alternate_name_property = None;
1279					let mut r#description_property = None;
1280					let mut r#disambiguating_description_property = None;
1281					let mut r#identifier_property = None;
1282					let mut r#image_property = None;
1283					let mut r#main_entity_of_page_property = None;
1284					let mut r#name_property = None;
1285					let mut r#potential_action_property = None;
1286					let mut r#same_as_property = None;
1287					let mut r#subject_of_property = None;
1288					let mut r#url_property = None;
1289					while let Some(key) = map.next_key::<Field>()? {
1290						match key {
1291							Field::IdentifyingExam => {
1292								if r#identifying_exam_property.is_some() {
1293									return Err(<A::Error as de::Error>::duplicate_field(
1294										"identifyingExam",
1295									));
1296								}
1297								r#identifying_exam_property = Some({
1298									struct DeserializeWith(Vec<IdentifyingExamProperty>);
1299									impl<'de> Deserialize<'de> for DeserializeWith {
1300										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1301										where
1302											D: Deserializer<'de>,
1303										{
1304											Ok(DeserializeWith(serde_with::As::<
1305												serde_with::OneOrMany<serde_with::Same>,
1306											>::deserialize(deserializer)?))
1307										}
1308									}
1309									match map.next_value::<DeserializeWith>() {
1310										Ok(deserialize_with) => deserialize_with.0,
1311										Err(err) => {
1312											return Err(err);
1313										}
1314									}
1315								});
1316							}
1317							Field::IdentifyingTest => {
1318								if r#identifying_test_property.is_some() {
1319									return Err(<A::Error as de::Error>::duplicate_field(
1320										"identifyingTest",
1321									));
1322								}
1323								r#identifying_test_property = Some({
1324									struct DeserializeWith(Vec<IdentifyingTestProperty>);
1325									impl<'de> Deserialize<'de> for DeserializeWith {
1326										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1327										where
1328											D: Deserializer<'de>,
1329										{
1330											Ok(DeserializeWith(serde_with::As::<
1331												serde_with::OneOrMany<serde_with::Same>,
1332											>::deserialize(deserializer)?))
1333										}
1334									}
1335									match map.next_value::<DeserializeWith>() {
1336										Ok(deserialize_with) => deserialize_with.0,
1337										Err(err) => {
1338											return Err(err);
1339										}
1340									}
1341								});
1342							}
1343							Field::AssociatedAnatomy => {
1344								if r#associated_anatomy_property.is_some() {
1345									return Err(<A::Error as de::Error>::duplicate_field(
1346										"associatedAnatomy",
1347									));
1348								}
1349								r#associated_anatomy_property = Some({
1350									struct DeserializeWith(Vec<AssociatedAnatomyProperty>);
1351									impl<'de> Deserialize<'de> for DeserializeWith {
1352										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1353										where
1354											D: Deserializer<'de>,
1355										{
1356											Ok(DeserializeWith(serde_with::As::<
1357												serde_with::OneOrMany<serde_with::Same>,
1358											>::deserialize(deserializer)?))
1359										}
1360									}
1361									match map.next_value::<DeserializeWith>() {
1362										Ok(deserialize_with) => deserialize_with.0,
1363										Err(err) => {
1364											return Err(err);
1365										}
1366									}
1367								});
1368							}
1369							Field::DifferentialDiagnosis => {
1370								if r#differential_diagnosis_property.is_some() {
1371									return Err(<A::Error as de::Error>::duplicate_field(
1372										"differentialDiagnosis",
1373									));
1374								}
1375								r#differential_diagnosis_property = Some({
1376									struct DeserializeWith(Vec<DifferentialDiagnosisProperty>);
1377									impl<'de> Deserialize<'de> for DeserializeWith {
1378										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1379										where
1380											D: Deserializer<'de>,
1381										{
1382											Ok(DeserializeWith(serde_with::As::<
1383												serde_with::OneOrMany<serde_with::Same>,
1384											>::deserialize(deserializer)?))
1385										}
1386									}
1387									match map.next_value::<DeserializeWith>() {
1388										Ok(deserialize_with) => deserialize_with.0,
1389										Err(err) => {
1390											return Err(err);
1391										}
1392									}
1393								});
1394							}
1395							Field::Drug => {
1396								if r#drug_property.is_some() {
1397									return Err(<A::Error as de::Error>::duplicate_field("drug"));
1398								}
1399								r#drug_property = Some({
1400									struct DeserializeWith(Vec<DrugProperty>);
1401									impl<'de> Deserialize<'de> for DeserializeWith {
1402										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1403										where
1404											D: Deserializer<'de>,
1405										{
1406											Ok(DeserializeWith(serde_with::As::<
1407												serde_with::OneOrMany<serde_with::Same>,
1408											>::deserialize(deserializer)?))
1409										}
1410									}
1411									match map.next_value::<DeserializeWith>() {
1412										Ok(deserialize_with) => deserialize_with.0,
1413										Err(err) => {
1414											return Err(err);
1415										}
1416									}
1417								});
1418							}
1419							Field::Epidemiology => {
1420								if r#epidemiology_property.is_some() {
1421									return Err(<A::Error as de::Error>::duplicate_field(
1422										"epidemiology",
1423									));
1424								}
1425								r#epidemiology_property = Some({
1426									struct DeserializeWith(Vec<EpidemiologyProperty>);
1427									impl<'de> Deserialize<'de> for DeserializeWith {
1428										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1429										where
1430											D: Deserializer<'de>,
1431										{
1432											Ok(DeserializeWith(serde_with::As::<
1433												serde_with::OneOrMany<serde_with::Same>,
1434											>::deserialize(deserializer)?))
1435										}
1436									}
1437									match map.next_value::<DeserializeWith>() {
1438										Ok(deserialize_with) => deserialize_with.0,
1439										Err(err) => {
1440											return Err(err);
1441										}
1442									}
1443								});
1444							}
1445							Field::ExpectedPrognosis => {
1446								if r#expected_prognosis_property.is_some() {
1447									return Err(<A::Error as de::Error>::duplicate_field(
1448										"expectedPrognosis",
1449									));
1450								}
1451								r#expected_prognosis_property = Some({
1452									struct DeserializeWith(Vec<ExpectedPrognosisProperty>);
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::NaturalProgression => {
1472								if r#natural_progression_property.is_some() {
1473									return Err(<A::Error as de::Error>::duplicate_field(
1474										"naturalProgression",
1475									));
1476								}
1477								r#natural_progression_property = Some({
1478									struct DeserializeWith(Vec<NaturalProgressionProperty>);
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::Pathophysiology => {
1498								if r#pathophysiology_property.is_some() {
1499									return Err(<A::Error as de::Error>::duplicate_field(
1500										"pathophysiology",
1501									));
1502								}
1503								r#pathophysiology_property = Some({
1504									struct DeserializeWith(Vec<PathophysiologyProperty>);
1505									impl<'de> Deserialize<'de> for DeserializeWith {
1506										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1507										where
1508											D: Deserializer<'de>,
1509										{
1510											Ok(DeserializeWith(serde_with::As::<
1511												serde_with::OneOrMany<serde_with::Same>,
1512											>::deserialize(deserializer)?))
1513										}
1514									}
1515									match map.next_value::<DeserializeWith>() {
1516										Ok(deserialize_with) => deserialize_with.0,
1517										Err(err) => {
1518											return Err(err);
1519										}
1520									}
1521								});
1522							}
1523							Field::PossibleComplication => {
1524								if r#possible_complication_property.is_some() {
1525									return Err(<A::Error as de::Error>::duplicate_field(
1526										"possibleComplication",
1527									));
1528								}
1529								r#possible_complication_property = Some({
1530									struct DeserializeWith(Vec<PossibleComplicationProperty>);
1531									impl<'de> Deserialize<'de> for DeserializeWith {
1532										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1533										where
1534											D: Deserializer<'de>,
1535										{
1536											Ok(DeserializeWith(serde_with::As::<
1537												serde_with::OneOrMany<serde_with::Same>,
1538											>::deserialize(deserializer)?))
1539										}
1540									}
1541									match map.next_value::<DeserializeWith>() {
1542										Ok(deserialize_with) => deserialize_with.0,
1543										Err(err) => {
1544											return Err(err);
1545										}
1546									}
1547								});
1548							}
1549							Field::PossibleTreatment => {
1550								if r#possible_treatment_property.is_some() {
1551									return Err(<A::Error as de::Error>::duplicate_field(
1552										"possibleTreatment",
1553									));
1554								}
1555								r#possible_treatment_property = Some({
1556									struct DeserializeWith(Vec<PossibleTreatmentProperty>);
1557									impl<'de> Deserialize<'de> for DeserializeWith {
1558										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1559										where
1560											D: Deserializer<'de>,
1561										{
1562											Ok(DeserializeWith(serde_with::As::<
1563												serde_with::OneOrMany<serde_with::Same>,
1564											>::deserialize(deserializer)?))
1565										}
1566									}
1567									match map.next_value::<DeserializeWith>() {
1568										Ok(deserialize_with) => deserialize_with.0,
1569										Err(err) => {
1570											return Err(err);
1571										}
1572									}
1573								});
1574							}
1575							Field::PrimaryPrevention => {
1576								if r#primary_prevention_property.is_some() {
1577									return Err(<A::Error as de::Error>::duplicate_field(
1578										"primaryPrevention",
1579									));
1580								}
1581								r#primary_prevention_property = Some({
1582									struct DeserializeWith(Vec<PrimaryPreventionProperty>);
1583									impl<'de> Deserialize<'de> for DeserializeWith {
1584										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1585										where
1586											D: Deserializer<'de>,
1587										{
1588											Ok(DeserializeWith(serde_with::As::<
1589												serde_with::OneOrMany<serde_with::Same>,
1590											>::deserialize(deserializer)?))
1591										}
1592									}
1593									match map.next_value::<DeserializeWith>() {
1594										Ok(deserialize_with) => deserialize_with.0,
1595										Err(err) => {
1596											return Err(err);
1597										}
1598									}
1599								});
1600							}
1601							Field::RiskFactor => {
1602								if r#risk_factor_property.is_some() {
1603									return Err(<A::Error as de::Error>::duplicate_field(
1604										"riskFactor",
1605									));
1606								}
1607								r#risk_factor_property = Some({
1608									struct DeserializeWith(Vec<RiskFactorProperty>);
1609									impl<'de> Deserialize<'de> for DeserializeWith {
1610										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1611										where
1612											D: Deserializer<'de>,
1613										{
1614											Ok(DeserializeWith(serde_with::As::<
1615												serde_with::OneOrMany<serde_with::Same>,
1616											>::deserialize(deserializer)?))
1617										}
1618									}
1619									match map.next_value::<DeserializeWith>() {
1620										Ok(deserialize_with) => deserialize_with.0,
1621										Err(err) => {
1622											return Err(err);
1623										}
1624									}
1625								});
1626							}
1627							Field::SecondaryPrevention => {
1628								if r#secondary_prevention_property.is_some() {
1629									return Err(<A::Error as de::Error>::duplicate_field(
1630										"secondaryPrevention",
1631									));
1632								}
1633								r#secondary_prevention_property = Some({
1634									struct DeserializeWith(Vec<SecondaryPreventionProperty>);
1635									impl<'de> Deserialize<'de> for DeserializeWith {
1636										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1637										where
1638											D: Deserializer<'de>,
1639										{
1640											Ok(DeserializeWith(serde_with::As::<
1641												serde_with::OneOrMany<serde_with::Same>,
1642											>::deserialize(deserializer)?))
1643										}
1644									}
1645									match map.next_value::<DeserializeWith>() {
1646										Ok(deserialize_with) => deserialize_with.0,
1647										Err(err) => {
1648											return Err(err);
1649										}
1650									}
1651								});
1652							}
1653							Field::SignOrSymptom => {
1654								if r#sign_or_symptom_property.is_some() {
1655									return Err(<A::Error as de::Error>::duplicate_field(
1656										"signOrSymptom",
1657									));
1658								}
1659								r#sign_or_symptom_property = Some({
1660									struct DeserializeWith(Vec<SignOrSymptomProperty>);
1661									impl<'de> Deserialize<'de> for DeserializeWith {
1662										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1663										where
1664											D: Deserializer<'de>,
1665										{
1666											Ok(DeserializeWith(serde_with::As::<
1667												serde_with::OneOrMany<serde_with::Same>,
1668											>::deserialize(deserializer)?))
1669										}
1670									}
1671									match map.next_value::<DeserializeWith>() {
1672										Ok(deserialize_with) => deserialize_with.0,
1673										Err(err) => {
1674											return Err(err);
1675										}
1676									}
1677								});
1678							}
1679							Field::Stage => {
1680								if r#stage_property.is_some() {
1681									return Err(<A::Error as de::Error>::duplicate_field("stage"));
1682								}
1683								r#stage_property = Some({
1684									struct DeserializeWith(Vec<StageProperty>);
1685									impl<'de> Deserialize<'de> for DeserializeWith {
1686										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1687										where
1688											D: Deserializer<'de>,
1689										{
1690											Ok(DeserializeWith(serde_with::As::<
1691												serde_with::OneOrMany<serde_with::Same>,
1692											>::deserialize(deserializer)?))
1693										}
1694									}
1695									match map.next_value::<DeserializeWith>() {
1696										Ok(deserialize_with) => deserialize_with.0,
1697										Err(err) => {
1698											return Err(err);
1699										}
1700									}
1701								});
1702							}
1703							Field::Status => {
1704								if r#status_property.is_some() {
1705									return Err(<A::Error as de::Error>::duplicate_field("status"));
1706								}
1707								r#status_property = Some({
1708									struct DeserializeWith(Vec<StatusProperty>);
1709									impl<'de> Deserialize<'de> for DeserializeWith {
1710										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1711										where
1712											D: Deserializer<'de>,
1713										{
1714											Ok(DeserializeWith(serde_with::As::<
1715												serde_with::OneOrMany<serde_with::Same>,
1716											>::deserialize(deserializer)?))
1717										}
1718									}
1719									match map.next_value::<DeserializeWith>() {
1720										Ok(deserialize_with) => deserialize_with.0,
1721										Err(err) => {
1722											return Err(err);
1723										}
1724									}
1725								});
1726							}
1727							Field::TypicalTest => {
1728								if r#typical_test_property.is_some() {
1729									return Err(<A::Error as de::Error>::duplicate_field(
1730										"typicalTest",
1731									));
1732								}
1733								r#typical_test_property = Some({
1734									struct DeserializeWith(Vec<TypicalTestProperty>);
1735									impl<'de> Deserialize<'de> for DeserializeWith {
1736										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1737										where
1738											D: Deserializer<'de>,
1739										{
1740											Ok(DeserializeWith(serde_with::As::<
1741												serde_with::OneOrMany<serde_with::Same>,
1742											>::deserialize(deserializer)?))
1743										}
1744									}
1745									match map.next_value::<DeserializeWith>() {
1746										Ok(deserialize_with) => deserialize_with.0,
1747										Err(err) => {
1748											return Err(err);
1749										}
1750									}
1751								});
1752							}
1753							Field::Code => {
1754								if r#code_property.is_some() {
1755									return Err(<A::Error as de::Error>::duplicate_field("code"));
1756								}
1757								r#code_property = Some({
1758									struct DeserializeWith(Vec<CodeProperty>);
1759									impl<'de> Deserialize<'de> for DeserializeWith {
1760										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1761										where
1762											D: Deserializer<'de>,
1763										{
1764											Ok(DeserializeWith(serde_with::As::<
1765												serde_with::OneOrMany<serde_with::Same>,
1766											>::deserialize(deserializer)?))
1767										}
1768									}
1769									match map.next_value::<DeserializeWith>() {
1770										Ok(deserialize_with) => deserialize_with.0,
1771										Err(err) => {
1772											return Err(err);
1773										}
1774									}
1775								});
1776							}
1777							Field::Funding => {
1778								if r#funding_property.is_some() {
1779									return Err(<A::Error as de::Error>::duplicate_field(
1780										"funding",
1781									));
1782								}
1783								r#funding_property = Some({
1784									struct DeserializeWith(Vec<FundingProperty>);
1785									impl<'de> Deserialize<'de> for DeserializeWith {
1786										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1787										where
1788											D: Deserializer<'de>,
1789										{
1790											Ok(DeserializeWith(serde_with::As::<
1791												serde_with::OneOrMany<serde_with::Same>,
1792											>::deserialize(deserializer)?))
1793										}
1794									}
1795									match map.next_value::<DeserializeWith>() {
1796										Ok(deserialize_with) => deserialize_with.0,
1797										Err(err) => {
1798											return Err(err);
1799										}
1800									}
1801								});
1802							}
1803							Field::Guideline => {
1804								if r#guideline_property.is_some() {
1805									return Err(<A::Error as de::Error>::duplicate_field(
1806										"guideline",
1807									));
1808								}
1809								r#guideline_property = Some({
1810									struct DeserializeWith(Vec<GuidelineProperty>);
1811									impl<'de> Deserialize<'de> for DeserializeWith {
1812										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1813										where
1814											D: Deserializer<'de>,
1815										{
1816											Ok(DeserializeWith(serde_with::As::<
1817												serde_with::OneOrMany<serde_with::Same>,
1818											>::deserialize(deserializer)?))
1819										}
1820									}
1821									match map.next_value::<DeserializeWith>() {
1822										Ok(deserialize_with) => deserialize_with.0,
1823										Err(err) => {
1824											return Err(err);
1825										}
1826									}
1827								});
1828							}
1829							Field::LegalStatus => {
1830								if r#legal_status_property.is_some() {
1831									return Err(<A::Error as de::Error>::duplicate_field(
1832										"legalStatus",
1833									));
1834								}
1835								r#legal_status_property = Some({
1836									struct DeserializeWith(Vec<LegalStatusProperty>);
1837									impl<'de> Deserialize<'de> for DeserializeWith {
1838										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1839										where
1840											D: Deserializer<'de>,
1841										{
1842											Ok(DeserializeWith(serde_with::As::<
1843												serde_with::OneOrMany<serde_with::Same>,
1844											>::deserialize(deserializer)?))
1845										}
1846									}
1847									match map.next_value::<DeserializeWith>() {
1848										Ok(deserialize_with) => deserialize_with.0,
1849										Err(err) => {
1850											return Err(err);
1851										}
1852									}
1853								});
1854							}
1855							Field::MedicineSystem => {
1856								if r#medicine_system_property.is_some() {
1857									return Err(<A::Error as de::Error>::duplicate_field(
1858										"medicineSystem",
1859									));
1860								}
1861								r#medicine_system_property = Some({
1862									struct DeserializeWith(Vec<MedicineSystemProperty>);
1863									impl<'de> Deserialize<'de> for DeserializeWith {
1864										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1865										where
1866											D: Deserializer<'de>,
1867										{
1868											Ok(DeserializeWith(serde_with::As::<
1869												serde_with::OneOrMany<serde_with::Same>,
1870											>::deserialize(deserializer)?))
1871										}
1872									}
1873									match map.next_value::<DeserializeWith>() {
1874										Ok(deserialize_with) => deserialize_with.0,
1875										Err(err) => {
1876											return Err(err);
1877										}
1878									}
1879								});
1880							}
1881							Field::RecognizingAuthority => {
1882								if r#recognizing_authority_property.is_some() {
1883									return Err(<A::Error as de::Error>::duplicate_field(
1884										"recognizingAuthority",
1885									));
1886								}
1887								r#recognizing_authority_property = Some({
1888									struct DeserializeWith(Vec<RecognizingAuthorityProperty>);
1889									impl<'de> Deserialize<'de> for DeserializeWith {
1890										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1891										where
1892											D: Deserializer<'de>,
1893										{
1894											Ok(DeserializeWith(serde_with::As::<
1895												serde_with::OneOrMany<serde_with::Same>,
1896											>::deserialize(deserializer)?))
1897										}
1898									}
1899									match map.next_value::<DeserializeWith>() {
1900										Ok(deserialize_with) => deserialize_with.0,
1901										Err(err) => {
1902											return Err(err);
1903										}
1904									}
1905								});
1906							}
1907							Field::RelevantSpecialty => {
1908								if r#relevant_specialty_property.is_some() {
1909									return Err(<A::Error as de::Error>::duplicate_field(
1910										"relevantSpecialty",
1911									));
1912								}
1913								r#relevant_specialty_property = Some({
1914									struct DeserializeWith(Vec<RelevantSpecialtyProperty>);
1915									impl<'de> Deserialize<'de> for DeserializeWith {
1916										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1917										where
1918											D: Deserializer<'de>,
1919										{
1920											Ok(DeserializeWith(serde_with::As::<
1921												serde_with::OneOrMany<serde_with::Same>,
1922											>::deserialize(deserializer)?))
1923										}
1924									}
1925									match map.next_value::<DeserializeWith>() {
1926										Ok(deserialize_with) => deserialize_with.0,
1927										Err(err) => {
1928											return Err(err);
1929										}
1930									}
1931								});
1932							}
1933							Field::Study => {
1934								if r#study_property.is_some() {
1935									return Err(<A::Error as de::Error>::duplicate_field("study"));
1936								}
1937								r#study_property = Some({
1938									struct DeserializeWith(Vec<StudyProperty>);
1939									impl<'de> Deserialize<'de> for DeserializeWith {
1940										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1941										where
1942											D: Deserializer<'de>,
1943										{
1944											Ok(DeserializeWith(serde_with::As::<
1945												serde_with::OneOrMany<serde_with::Same>,
1946											>::deserialize(deserializer)?))
1947										}
1948									}
1949									match map.next_value::<DeserializeWith>() {
1950										Ok(deserialize_with) => deserialize_with.0,
1951										Err(err) => {
1952											return Err(err);
1953										}
1954									}
1955								});
1956							}
1957							Field::AdditionalType => {
1958								if r#additional_type_property.is_some() {
1959									return Err(<A::Error as de::Error>::duplicate_field(
1960										"additionalType",
1961									));
1962								}
1963								r#additional_type_property = Some({
1964									struct DeserializeWith(Vec<AdditionalTypeProperty>);
1965									impl<'de> Deserialize<'de> for DeserializeWith {
1966										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1967										where
1968											D: Deserializer<'de>,
1969										{
1970											Ok(DeserializeWith(serde_with::As::<
1971												serde_with::OneOrMany<serde_with::Same>,
1972											>::deserialize(deserializer)?))
1973										}
1974									}
1975									match map.next_value::<DeserializeWith>() {
1976										Ok(deserialize_with) => deserialize_with.0,
1977										Err(err) => {
1978											return Err(err);
1979										}
1980									}
1981								});
1982							}
1983							Field::AlternateName => {
1984								if r#alternate_name_property.is_some() {
1985									return Err(<A::Error as de::Error>::duplicate_field(
1986										"alternateName",
1987									));
1988								}
1989								r#alternate_name_property = Some({
1990									struct DeserializeWith(Vec<AlternateNameProperty>);
1991									impl<'de> Deserialize<'de> for DeserializeWith {
1992										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1993										where
1994											D: Deserializer<'de>,
1995										{
1996											Ok(DeserializeWith(serde_with::As::<
1997												serde_with::OneOrMany<serde_with::Same>,
1998											>::deserialize(deserializer)?))
1999										}
2000									}
2001									match map.next_value::<DeserializeWith>() {
2002										Ok(deserialize_with) => deserialize_with.0,
2003										Err(err) => {
2004											return Err(err);
2005										}
2006									}
2007								});
2008							}
2009							Field::Description => {
2010								if r#description_property.is_some() {
2011									return Err(<A::Error as de::Error>::duplicate_field(
2012										"description",
2013									));
2014								}
2015								r#description_property = Some({
2016									struct DeserializeWith(Vec<DescriptionProperty>);
2017									impl<'de> Deserialize<'de> for DeserializeWith {
2018										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
2019										where
2020											D: Deserializer<'de>,
2021										{
2022											Ok(DeserializeWith(serde_with::As::<
2023												serde_with::OneOrMany<serde_with::Same>,
2024											>::deserialize(deserializer)?))
2025										}
2026									}
2027									match map.next_value::<DeserializeWith>() {
2028										Ok(deserialize_with) => deserialize_with.0,
2029										Err(err) => {
2030											return Err(err);
2031										}
2032									}
2033								});
2034							}
2035							Field::DisambiguatingDescription => {
2036								if r#disambiguating_description_property.is_some() {
2037									return Err(<A::Error as de::Error>::duplicate_field(
2038										"disambiguatingDescription",
2039									));
2040								}
2041								r#disambiguating_description_property = Some({
2042									struct DeserializeWith(Vec<DisambiguatingDescriptionProperty>);
2043									impl<'de> Deserialize<'de> for DeserializeWith {
2044										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
2045										where
2046											D: Deserializer<'de>,
2047										{
2048											Ok(DeserializeWith(serde_with::As::<
2049												serde_with::OneOrMany<serde_with::Same>,
2050											>::deserialize(deserializer)?))
2051										}
2052									}
2053									match map.next_value::<DeserializeWith>() {
2054										Ok(deserialize_with) => deserialize_with.0,
2055										Err(err) => {
2056											return Err(err);
2057										}
2058									}
2059								});
2060							}
2061							Field::Identifier => {
2062								if r#identifier_property.is_some() {
2063									return Err(<A::Error as de::Error>::duplicate_field(
2064										"identifier",
2065									));
2066								}
2067								r#identifier_property = Some({
2068									struct DeserializeWith(Vec<IdentifierProperty>);
2069									impl<'de> Deserialize<'de> for DeserializeWith {
2070										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
2071										where
2072											D: Deserializer<'de>,
2073										{
2074											Ok(DeserializeWith(serde_with::As::<
2075												serde_with::OneOrMany<serde_with::Same>,
2076											>::deserialize(deserializer)?))
2077										}
2078									}
2079									match map.next_value::<DeserializeWith>() {
2080										Ok(deserialize_with) => deserialize_with.0,
2081										Err(err) => {
2082											return Err(err);
2083										}
2084									}
2085								});
2086							}
2087							Field::Image => {
2088								if r#image_property.is_some() {
2089									return Err(<A::Error as de::Error>::duplicate_field("image"));
2090								}
2091								r#image_property = Some({
2092									struct DeserializeWith(Vec<ImageProperty>);
2093									impl<'de> Deserialize<'de> for DeserializeWith {
2094										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
2095										where
2096											D: Deserializer<'de>,
2097										{
2098											Ok(DeserializeWith(serde_with::As::<
2099												serde_with::OneOrMany<serde_with::Same>,
2100											>::deserialize(deserializer)?))
2101										}
2102									}
2103									match map.next_value::<DeserializeWith>() {
2104										Ok(deserialize_with) => deserialize_with.0,
2105										Err(err) => {
2106											return Err(err);
2107										}
2108									}
2109								});
2110							}
2111							Field::MainEntityOfPage => {
2112								if r#main_entity_of_page_property.is_some() {
2113									return Err(<A::Error as de::Error>::duplicate_field(
2114										"mainEntityOfPage",
2115									));
2116								}
2117								r#main_entity_of_page_property = Some({
2118									struct DeserializeWith(Vec<MainEntityOfPageProperty>);
2119									impl<'de> Deserialize<'de> for DeserializeWith {
2120										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
2121										where
2122											D: Deserializer<'de>,
2123										{
2124											Ok(DeserializeWith(serde_with::As::<
2125												serde_with::OneOrMany<serde_with::Same>,
2126											>::deserialize(deserializer)?))
2127										}
2128									}
2129									match map.next_value::<DeserializeWith>() {
2130										Ok(deserialize_with) => deserialize_with.0,
2131										Err(err) => {
2132											return Err(err);
2133										}
2134									}
2135								});
2136							}
2137							Field::Name => {
2138								if r#name_property.is_some() {
2139									return Err(<A::Error as de::Error>::duplicate_field("name"));
2140								}
2141								r#name_property = Some({
2142									struct DeserializeWith(Vec<NameProperty>);
2143									impl<'de> Deserialize<'de> for DeserializeWith {
2144										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
2145										where
2146											D: Deserializer<'de>,
2147										{
2148											Ok(DeserializeWith(serde_with::As::<
2149												serde_with::OneOrMany<serde_with::Same>,
2150											>::deserialize(deserializer)?))
2151										}
2152									}
2153									match map.next_value::<DeserializeWith>() {
2154										Ok(deserialize_with) => deserialize_with.0,
2155										Err(err) => {
2156											return Err(err);
2157										}
2158									}
2159								});
2160							}
2161							Field::PotentialAction => {
2162								if r#potential_action_property.is_some() {
2163									return Err(<A::Error as de::Error>::duplicate_field(
2164										"potentialAction",
2165									));
2166								}
2167								r#potential_action_property = Some({
2168									struct DeserializeWith(Vec<PotentialActionProperty>);
2169									impl<'de> Deserialize<'de> for DeserializeWith {
2170										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
2171										where
2172											D: Deserializer<'de>,
2173										{
2174											Ok(DeserializeWith(serde_with::As::<
2175												serde_with::OneOrMany<serde_with::Same>,
2176											>::deserialize(deserializer)?))
2177										}
2178									}
2179									match map.next_value::<DeserializeWith>() {
2180										Ok(deserialize_with) => deserialize_with.0,
2181										Err(err) => {
2182											return Err(err);
2183										}
2184									}
2185								});
2186							}
2187							Field::SameAs => {
2188								if r#same_as_property.is_some() {
2189									return Err(<A::Error as de::Error>::duplicate_field("sameAs"));
2190								}
2191								r#same_as_property = Some({
2192									struct DeserializeWith(Vec<SameAsProperty>);
2193									impl<'de> Deserialize<'de> for DeserializeWith {
2194										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
2195										where
2196											D: Deserializer<'de>,
2197										{
2198											Ok(DeserializeWith(serde_with::As::<
2199												serde_with::OneOrMany<serde_with::Same>,
2200											>::deserialize(deserializer)?))
2201										}
2202									}
2203									match map.next_value::<DeserializeWith>() {
2204										Ok(deserialize_with) => deserialize_with.0,
2205										Err(err) => {
2206											return Err(err);
2207										}
2208									}
2209								});
2210							}
2211							Field::SubjectOf => {
2212								if r#subject_of_property.is_some() {
2213									return Err(<A::Error as de::Error>::duplicate_field(
2214										"subjectOf",
2215									));
2216								}
2217								r#subject_of_property = Some({
2218									struct DeserializeWith(Vec<SubjectOfProperty>);
2219									impl<'de> Deserialize<'de> for DeserializeWith {
2220										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
2221										where
2222											D: Deserializer<'de>,
2223										{
2224											Ok(DeserializeWith(serde_with::As::<
2225												serde_with::OneOrMany<serde_with::Same>,
2226											>::deserialize(deserializer)?))
2227										}
2228									}
2229									match map.next_value::<DeserializeWith>() {
2230										Ok(deserialize_with) => deserialize_with.0,
2231										Err(err) => {
2232											return Err(err);
2233										}
2234									}
2235								});
2236							}
2237							Field::Url => {
2238								if r#url_property.is_some() {
2239									return Err(<A::Error as de::Error>::duplicate_field("url"));
2240								}
2241								r#url_property = Some({
2242									struct DeserializeWith(Vec<UrlProperty>);
2243									impl<'de> Deserialize<'de> for DeserializeWith {
2244										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
2245										where
2246											D: Deserializer<'de>,
2247										{
2248											Ok(DeserializeWith(serde_with::As::<
2249												serde_with::OneOrMany<serde_with::Same>,
2250											>::deserialize(deserializer)?))
2251										}
2252									}
2253									match map.next_value::<DeserializeWith>() {
2254										Ok(deserialize_with) => deserialize_with.0,
2255										Err(err) => {
2256											return Err(err);
2257										}
2258									}
2259								});
2260							}
2261							Field::Ignore => {
2262								let _ = map.next_value::<de::IgnoredAny>()?;
2263							}
2264						}
2265					}
2266					Ok(MedicalSign {
2267						r#identifying_exam: r#identifying_exam_property.unwrap_or_default(),
2268						r#identifying_test: r#identifying_test_property.unwrap_or_default(),
2269						r#associated_anatomy: r#associated_anatomy_property.unwrap_or_default(),
2270						r#differential_diagnosis: r#differential_diagnosis_property
2271							.unwrap_or_default(),
2272						r#drug: r#drug_property.unwrap_or_default(),
2273						r#epidemiology: r#epidemiology_property.unwrap_or_default(),
2274						r#expected_prognosis: r#expected_prognosis_property.unwrap_or_default(),
2275						r#natural_progression: r#natural_progression_property.unwrap_or_default(),
2276						r#pathophysiology: r#pathophysiology_property.unwrap_or_default(),
2277						r#possible_complication: r#possible_complication_property
2278							.unwrap_or_default(),
2279						r#possible_treatment: r#possible_treatment_property.unwrap_or_default(),
2280						r#primary_prevention: r#primary_prevention_property.unwrap_or_default(),
2281						r#risk_factor: r#risk_factor_property.unwrap_or_default(),
2282						r#secondary_prevention: r#secondary_prevention_property.unwrap_or_default(),
2283						r#sign_or_symptom: r#sign_or_symptom_property.unwrap_or_default(),
2284						r#stage: r#stage_property.unwrap_or_default(),
2285						r#status: r#status_property.unwrap_or_default(),
2286						r#typical_test: r#typical_test_property.unwrap_or_default(),
2287						r#code: r#code_property.unwrap_or_default(),
2288						r#funding: r#funding_property.unwrap_or_default(),
2289						r#guideline: r#guideline_property.unwrap_or_default(),
2290						r#legal_status: r#legal_status_property.unwrap_or_default(),
2291						r#medicine_system: r#medicine_system_property.unwrap_or_default(),
2292						r#recognizing_authority: r#recognizing_authority_property
2293							.unwrap_or_default(),
2294						r#relevant_specialty: r#relevant_specialty_property.unwrap_or_default(),
2295						r#study: r#study_property.unwrap_or_default(),
2296						r#additional_type: r#additional_type_property.unwrap_or_default(),
2297						r#alternate_name: r#alternate_name_property.unwrap_or_default(),
2298						r#description: r#description_property.unwrap_or_default(),
2299						r#disambiguating_description: r#disambiguating_description_property
2300							.unwrap_or_default(),
2301						r#identifier: r#identifier_property.unwrap_or_default(),
2302						r#image: r#image_property.unwrap_or_default(),
2303						r#main_entity_of_page: r#main_entity_of_page_property.unwrap_or_default(),
2304						r#name: r#name_property.unwrap_or_default(),
2305						r#potential_action: r#potential_action_property.unwrap_or_default(),
2306						r#same_as: r#same_as_property.unwrap_or_default(),
2307						r#subject_of: r#subject_of_property.unwrap_or_default(),
2308						r#url: r#url_property.unwrap_or_default(),
2309					})
2310				}
2311			}
2312			const FIELDS: &[&str] = &[
2313				"identifyingExam",
2314				"identifyingTest",
2315				"associatedAnatomy",
2316				"differentialDiagnosis",
2317				"drug",
2318				"epidemiology",
2319				"expectedPrognosis",
2320				"naturalProgression",
2321				"pathophysiology",
2322				"possibleComplication",
2323				"possibleTreatment",
2324				"primaryPrevention",
2325				"riskFactor",
2326				"secondaryPrevention",
2327				"signOrSymptom",
2328				"stage",
2329				"status",
2330				"typicalTest",
2331				"code",
2332				"funding",
2333				"guideline",
2334				"legalStatus",
2335				"medicineSystem",
2336				"recognizingAuthority",
2337				"relevantSpecialty",
2338				"study",
2339				"additionalType",
2340				"alternateName",
2341				"description",
2342				"disambiguatingDescription",
2343				"identifier",
2344				"image",
2345				"mainEntityOfPage",
2346				"name",
2347				"potentialAction",
2348				"sameAs",
2349				"subjectOf",
2350				"url",
2351			];
2352			deserializer.deserialize_struct("MedicalSign", FIELDS, ClassVisitor)
2353		}
2354	}
2355}