use crate::prelude::*;
#[derive(Resource, Debug, Clone, Default)]
#[fhir(base="DomainResource")]
pub struct Location {
#[fhir(name="id", min="0", max="1", summary=true, modifier=false, choice="")]
pub id: Option<Id>,
#[fhir(name="meta", min="0", max="1", summary=true, modifier=false, choice="")]
pub meta: Option<Meta>,
#[fhir(name="implicitRules", min="0", max="1", summary=true, modifier=true)]
pub implicit_rules: Option<UriDt>,
#[fhir(name="language", min="0", max="1", summary=false, modifier=false, choice="")]
pub language: Option<CodeDt>,
#[fhir(name="text", min="0", max="1", summary=false, modifier=false, choice="")]
pub text: Option<Narrative>,
#[fhir(name="contained", min="0", max="*", summary=false, modifier=false, choice="")]
pub contained: Option<Vec<AnyResource>>,
#[fhir(name="extension", min="0", max="*", summary=false, modifier=false, choice="")]
pub extension: Option<Vec<Extension>>,
#[fhir(name="modifierExtension", min="0", max="*", summary=true, modifier=true)]
pub modifier_extension: Option<Vec<Extension>>,
#[fhir(name="identifier", min="0", max="*", summary=true, modifier=false, choice="")]
pub identifier: Option<Vec<Identifier>>,
#[fhir(name="status", min="0", max="1", summary=true, modifier=true)]
pub status: Option<CodeDt>,
#[fhir(name="operationalStatus", min="0", max="1", summary=true, modifier=false, choice="")]
pub operational_status: Option<Coding>,
#[fhir(name="name", min="0", max="1", summary=true, modifier=false, choice="")]
pub name: Option<StringDt>,
#[fhir(name="alias", min="0", max="*", summary=false, modifier=false, choice="")]
pub alias: Option<Vec<StringDt>>,
#[fhir(name="description", min="0", max="1", summary=true, modifier=false, choice="")]
pub description: Option<MarkdownDt>,
#[fhir(name="mode", min="0", max="1", summary=true, modifier=false, choice="")]
pub mode: Option<CodeDt>,
#[fhir(name="type", min="0", max="*", summary=true, modifier=false, choice="")]
pub type_: Option<Vec<CodeableConcept>>,
#[fhir(name="contact", min="0", max="*", summary=false, modifier=false, choice="")]
pub contact: Option<Vec<ExtendedContactDetail>>,
#[fhir(name="address", min="0", max="1", summary=false, modifier=false, choice="")]
pub address: Option<Address>,
#[fhir(name="form", min="0", max="1", summary=true, modifier=false, choice="")]
pub form: Option<CodeableConcept>,
#[fhir(name="position", min="0", max="1", summary=false, modifier=false, choice="")]
pub position: Option<LocationPositionBackboneElement>,
#[fhir(name="managingOrganization", min="0", max="1", summary=true, modifier=false, choice="")]
pub managing_organization: Option<Reference>,
#[fhir(name="partOf", min="0", max="1", summary=false, modifier=false, choice="")]
pub part_of: Option<Reference>,
#[fhir(name="characteristic", min="0", max="*", summary=false, modifier=false, choice="")]
pub characteristic: Option<Vec<CodeableConcept>>,
#[fhir(name="hoursOfOperation", min="0", max="*", summary=false, modifier=false, choice="")]
pub hours_of_operation: Option<Vec<Availability>>,
#[fhir(name="virtualService", min="0", max="*", summary=false, modifier=false, choice="")]
pub virtual_service: Option<Vec<VirtualServiceDetail>>,
#[fhir(name="endpoint", min="0", max="*", summary=false, modifier=false, choice="")]
pub endpoint: Option<Vec<Reference>>,
}
#[derive(BackboneElement, Debug, Clone, Default)]
pub struct LocationPositionBackboneElement {
#[fhir(name="id", min="0", max="1", summary=false, modifier=false, choice="")]
pub id: Option<String>,
#[fhir(name="extension", min="0", max="*", summary=false, modifier=false, choice="")]
pub extension: Option<Vec<Extension>>,
#[fhir(name="modifierExtension", min="0", max="*", summary=true, modifier=true)]
pub modifier_extension: Option<Vec<Extension>>,
#[fhir(name="longitude", min="1", max="1", summary=false, modifier=false, choice="")]
pub longitude: Option<DecimalDt>,
#[fhir(name="latitude", min="1", max="1", summary=false, modifier=false, choice="")]
pub latitude: Option<DecimalDt>,
#[fhir(name="altitude", min="0", max="1", summary=false, modifier=false, choice="")]
pub altitude: Option<DecimalDt>,
}