use crate::*;
use serde_with::{serde_as, OneOrMany};
pub type DrugWarningFieldEnum = String;
pub type DrugGtinFieldEnum = String;
pub type DrugAsinFieldEnum = String;
pub type DrugAdditionalTypeFieldEnum = String;
#[serde_as]
#[derive(Debug, serde::Deserialize)]
#[cfg_attr(feature = "uniffi", derive(uniffi::Record))]
pub struct Drug {
#[serde(rename = "@context")]
pub context: String,
#[serde(rename = "drugClass")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub drug_class: Vec<DrugClass>,
#[serde(rename = "relatedDrug")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub related_drug: Vec<Drug>,
#[serde(rename = "alcoholWarning")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub alcohol_warning: Vec<String>,
#[serde(rename = "breastfeedingWarning")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub breastfeeding_warning: Vec<String>,
#[serde(rename = "dosageForm")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub dosage_form: Vec<String>,
#[serde(rename = "isAvailableGenerically")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub is_available_generically: Vec<String>,
#[serde(rename = "includedInHealthInsurancePlan")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub included_in_health_insurance_plan: Vec<HealthInsurancePlan>,
#[serde(rename = "legalStatus")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub legal_status: Vec<DrugLegalStatusFieldEnum>,
#[serde(rename = "drugUnit")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub drug_unit: Vec<String>,
#[serde(rename = "overdosage")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub overdosage: Vec<String>,
#[serde(rename = "prescriptionStatus")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub prescription_status: Vec<DrugPrescriptionStatusFieldEnum>,
#[serde(rename = "nonProprietaryName")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub non_proprietary_name: Vec<String>,
#[serde(rename = "isProprietary")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub is_proprietary: Vec<String>,
#[serde(rename = "labelDetails")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub label_details: Vec<String>,
#[serde(rename = "mechanismOfAction")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub mechanism_of_action: Vec<String>,
#[serde(rename = "rxcui")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub rxcui: Vec<String>,
#[serde(rename = "activeIngredient")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub active_ingredient: Vec<String>,
#[serde(rename = "doseSchedule")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub dose_schedule: Vec<DoseSchedule>,
#[serde(rename = "pregnancyWarning")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub pregnancy_warning: Vec<String>,
#[serde(rename = "warning")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub warning: Vec<DrugWarningFieldEnum>,
#[serde(rename = "proprietaryName")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub proprietary_name: Vec<String>,
#[serde(rename = "maximumIntake")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub maximum_intake: Vec<MaximumDoseSchedule>,
#[serde(rename = "administrationRoute")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub administration_route: Vec<String>,
#[serde(rename = "pregnancyCategory")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub pregnancy_category: Vec<DrugPregnancyCategoryEnum>,
#[serde(rename = "availableStrength")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub available_strength: Vec<DrugStrength>,
#[serde(rename = "clincalPharmacology")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub clincal_pharmacology: Vec<String>,
#[serde(rename = "foodWarning")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub food_warning: Vec<String>,
#[serde(rename = "prescribingInfo")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub prescribing_info: Vec<String>,
#[serde(rename = "clinicalPharmacology")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub clinical_pharmacology: Vec<String>,
#[serde(rename = "interactingDrug")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub interacting_drug: Vec<Drug>,
#[serde(rename = "productID")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub product_id: Vec<String>,
#[serde(rename = "aggregateRating")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub aggregate_rating: Vec<AggregateRating>,
#[serde(rename = "hasCertification")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub has_certification: Vec<Certification>,
#[serde(rename = "isSimilarTo")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub is_similar_to: Vec<DrugIsSimilarToFieldEnum>,
#[serde(rename = "colorSwatch")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub color_swatch: Vec<DrugColorSwatchFieldEnum>,
#[serde(rename = "productionDate")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub production_date: Vec<String>,
#[serde(rename = "countryOfAssembly")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub country_of_assembly: Vec<String>,
#[serde(rename = "countryOfOrigin")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub country_of_origin: Vec<Country>,
#[serde(rename = "sku")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub sku: Vec<String>,
#[serde(rename = "hasMerchantReturnPolicy")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub has_merchant_return_policy: Vec<MerchantReturnPolicy>,
#[serde(rename = "weight")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub weight: Vec<DrugWeightFieldEnum>,
#[serde(rename = "mpn")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub mpn: Vec<String>,
#[serde(rename = "hasGS1DigitalLink")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub has_gs1_digital_link: Vec<String>,
#[serde(rename = "model")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub model: Vec<DrugModelFieldEnum>,
#[serde(rename = "isRelatedTo")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub is_related_to: Vec<DrugIsRelatedToFieldEnum>,
#[serde(rename = "reviews")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub reviews: Vec<Review>,
#[serde(rename = "gtin12")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub gtin12: Vec<String>,
#[serde(rename = "pattern")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub pattern: Vec<DrugPatternFieldEnum>,
#[serde(rename = "offers")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub offers: Vec<DrugOffersFieldEnum>,
#[serde(rename = "keywords")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub keywords: Vec<DrugKeywordsFieldEnum>,
#[serde(rename = "negativeNotes")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub negative_notes: Vec<DrugNegativeNotesFieldEnum>,
#[serde(rename = "gtin13")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub gtin13: Vec<String>,
#[serde(rename = "hasMeasurement")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub has_measurement: Vec<QuantitativeValue>,
#[serde(rename = "gtin")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub gtin: Vec<DrugGtinFieldEnum>,
#[serde(rename = "funding")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub funding: Vec<Grant>,
#[serde(rename = "isConsumableFor")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub is_consumable_for: Vec<Product>,
#[serde(rename = "mobileUrl")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub mobile_url: Vec<String>,
#[serde(rename = "category")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub category: Vec<DrugCategoryFieldEnum>,
#[serde(rename = "asin")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub asin: Vec<DrugAsinFieldEnum>,
#[serde(rename = "color")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub color: Vec<String>,
#[serde(rename = "countryOfLastProcessing")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub country_of_last_processing: Vec<String>,
#[serde(rename = "logo")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub logo: Vec<DrugLogoFieldEnum>,
#[serde(rename = "award")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub award: Vec<String>,
#[serde(rename = "isFamilyFriendly")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub is_family_friendly: Vec<String>,
#[serde(rename = "releaseDate")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub release_date: Vec<String>,
#[serde(rename = "brand")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub brand: Vec<DrugBrandFieldEnum>,
#[serde(rename = "inProductGroupWithID")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub in_product_group_with_id: Vec<String>,
#[serde(rename = "manufacturer")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub manufacturer: Vec<Organization>,
#[serde(rename = "awards")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub awards: Vec<String>,
#[serde(rename = "width")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub width: Vec<DrugWidthFieldEnum>,
#[serde(rename = "hasAdultConsideration")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub has_adult_consideration: Vec<AdultOrientedEnumerationEnum>,
#[serde(rename = "audience")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub audience: Vec<Audience>,
#[serde(rename = "material")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub material: Vec<DrugMaterialFieldEnum>,
#[serde(rename = "additionalProperty")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub additional_property: Vec<PropertyValue>,
#[serde(rename = "slogan")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub slogan: Vec<String>,
#[serde(rename = "depth")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub depth: Vec<DrugDepthFieldEnum>,
#[serde(rename = "review")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub review: Vec<Review>,
#[serde(rename = "itemCondition")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub item_condition: Vec<OfferItemConditionEnum>,
#[serde(rename = "nsn")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub nsn: Vec<String>,
#[serde(rename = "positiveNotes")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub positive_notes: Vec<DrugPositiveNotesFieldEnum>,
#[serde(rename = "size")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub size: Vec<DrugSizeFieldEnum>,
#[serde(rename = "hasEnergyConsumptionDetails")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub has_energy_consumption_details: Vec<EnergyConsumptionDetails>,
#[serde(rename = "gtin14")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub gtin14: Vec<String>,
#[serde(rename = "height")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub height: Vec<DrugHeightFieldEnum>,
#[serde(rename = "purchaseDate")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub purchase_date: Vec<String>,
#[serde(rename = "isVariantOf")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub is_variant_of: Vec<DrugIsVariantOfFieldEnum>,
#[serde(rename = "gtin8")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub gtin8: Vec<String>,
#[serde(rename = "isAccessoryOrSparePartFor")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub is_accessory_or_spare_part_for: Vec<Product>,
#[serde(rename = "name")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub name: Vec<String>,
#[serde(rename = "mainEntityOfPage")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub main_entity_of_page: Vec<DrugMainEntityOfPageFieldEnum>,
#[serde(rename = "url")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub url: Vec<String>,
#[serde(rename = "disambiguatingDescription")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub disambiguating_description: Vec<String>,
#[serde(rename = "identifier")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub identifier: Vec<DrugIdentifierFieldEnum>,
#[serde(rename = "description")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub description: Vec<DrugDescriptionFieldEnum>,
#[serde(rename = "subjectOf")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub subject_of: Vec<DrugSubjectOfFieldEnum>,
#[serde(rename = "alternateName")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub alternate_name: Vec<String>,
#[serde(rename = "additionalType")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub additional_type: Vec<DrugAdditionalTypeFieldEnum>,
#[serde(rename = "potentialAction")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub potential_action: Vec<Action>,
#[serde(rename = "sameAs")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub same_as: Vec<String>,
#[serde(rename = "image")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub image: Vec<DrugImageFieldEnum>,
#[serde(rename = "relevantSpecialty")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub relevant_specialty: Vec<MedicalSpecialtyEnum>,
#[serde(rename = "recognizingAuthority")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub recognizing_authority: Vec<Organization>,
#[serde(rename = "medicineSystem")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub medicine_system: Vec<MedicineSystemEnum>,
#[serde(rename = "guideline")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub guideline: Vec<MedicalGuideline>,
#[serde(rename = "study")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub study: Vec<MedicalStudy>,
#[serde(rename = "code")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub code: Vec<MedicalCode>,
}