use crate::prelude::*;
#[derive(Resource, Debug, Clone, Default)]
#[fhir(base="DomainResource")]
pub struct Requirements {
#[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="url", min="0", max="1", summary=true, modifier=false, choice="")]
pub url: Option<UriDt>,
#[fhir(name="identifier", min="0", max="*", summary=true, modifier=false, choice="")]
pub identifier: Option<Vec<Identifier>>,
#[fhir(name="version", min="0", max="1", summary=true, modifier=false, choice="")]
pub version: Option<StringDt>,
#[fhir(name="versionAlgorithm", min="0", max="1", summary=true, modifier=false, choice="")]
pub version_algorithm: Option<Coding>,
#[fhir(name="name", min="0", max="1", summary=true, modifier=false, choice="")]
pub name: Option<StringDt>,
#[fhir(name="title", min="0", max="1", summary=true, modifier=false, choice="")]
pub title: Option<StringDt>,
#[fhir(name="status", min="1", max="1", summary=true, modifier=true)]
pub status: Option<CodeDt>,
#[fhir(name="experimental", min="0", max="1", summary=true, modifier=false, choice="")]
pub experimental: Option<BooleanDt>,
#[fhir(name="date", min="0", max="1", summary=true, modifier=false, choice="")]
pub date: Option<DateTimeDt>,
#[fhir(name="publisher", min="0", max="1", summary=true, modifier=false, choice="")]
pub publisher: Option<StringDt>,
#[fhir(name="contact", min="0", max="*", summary=true, modifier=false, choice="")]
pub contact: Option<Vec<ContactDetail>>,
#[fhir(name="description", min="0", max="1", summary=false, modifier=false, choice="")]
pub description: Option<MarkdownDt>,
#[fhir(name="useContext", min="0", max="*", summary=true, modifier=false, choice="")]
pub use_context: Option<Vec<UsageContext>>,
#[fhir(name="jurisdiction", min="0", max="*", summary=true, modifier=false, choice="")]
pub jurisdiction: Option<Vec<CodeableConcept>>,
#[fhir(name="purpose", min="0", max="1", summary=false, modifier=false, choice="")]
pub purpose: Option<MarkdownDt>,
#[fhir(name="copyright", min="0", max="1", summary=false, modifier=false, choice="")]
pub copyright: Option<MarkdownDt>,
#[fhir(name="copyrightLabel", min="0", max="1", summary=false, modifier=false, choice="")]
pub copyright_label: Option<StringDt>,
#[fhir(name="derivedFrom", min="0", max="*", summary=true, modifier=false, choice="")]
pub derived_from: Option<Vec<CanonicalDt>>,
#[fhir(name="reference", min="0", max="*", summary=false, modifier=false, choice="")]
pub reference: Option<Vec<UrlDt>>,
#[fhir(name="actor", min="0", max="*", summary=false, modifier=false, choice="")]
pub actor: Option<Vec<CanonicalDt>>,
#[fhir(name="statement", min="0", max="*", summary=false, modifier=false, choice="")]
pub statement: Option<Vec<RequirementsStatementBackboneElement>>,
}
#[derive(BackboneElement, Debug, Clone, Default)]
pub struct RequirementsStatementBackboneElement {
#[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="key", min="1", max="1", summary=false, modifier=false, choice="")]
pub key: Option<IdDt>,
#[fhir(name="label", min="0", max="1", summary=false, modifier=false, choice="")]
pub label: Option<StringDt>,
#[fhir(name="conformance", min="0", max="*", summary=false, modifier=false, choice="")]
pub conformance: Option<Vec<CodeDt>>,
#[fhir(name="conditionality", min="0", max="1", summary=false, modifier=false, choice="")]
pub conditionality: Option<BooleanDt>,
#[fhir(name="requirement", min="1", max="1", summary=false, modifier=false, choice="")]
pub requirement: Option<MarkdownDt>,
#[fhir(name="derivedFrom", min="0", max="1", summary=false, modifier=false, choice="")]
pub derived_from: Option<StringDt>,
#[fhir(name="parent", min="0", max="1", summary=false, modifier=false, choice="")]
pub parent: Option<StringDt>,
#[fhir(name="satisfiedBy", min="0", max="*", summary=false, modifier=false, choice="")]
pub satisfied_by: Option<Vec<UrlDt>>,
#[fhir(name="reference", min="0", max="*", summary=false, modifier=false, choice="")]
pub reference: Option<Vec<UrlDt>>,
#[fhir(name="source", min="0", max="*", summary=false, modifier=false, choice="")]
pub source: Option<Vec<Reference>>,
}