Skip to main content

haste_fhir_model/r4/generated/
resources.rs

1#![allow(non_snake_case)]
2use self::super::terminology;
3#[doc = r" DO NOT EDIT THIS FILE. It is auto-generated by the FHIR Rust code generator."]
4use self::super::types::*;
5use haste_fhir_serialization_json;
6use haste_reflect::{derive::Reflect, MetaValue};
7use std::io::Write;
8use thiserror::Error;
9#[derive(
10    Clone,
11    Reflect,
12    Debug,
13    Default,
14    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
15    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
16)]
17#[fhir_serialize_type = "complex"]
18#[doc = "Registered client for the OIDC provider."]
19pub struct IdentityProviderOidcClient {
20    #[primitive]
21    #[doc = "Registered clients id."]
22    pub clientId: Box<FHIRString>,
23    #[primitive]
24    #[doc = "Registered clients secret."]
25    pub secret: Option<Box<FHIRString>>,
26}
27#[derive(
28    Clone,
29    Reflect,
30    Debug,
31    Default,
32    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
33    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
34)]
35#[fhir_serialize_type = "complex"]
36#[doc = "PKCE Configuration"]
37pub struct IdentityProviderOidcPkce {
38    #[primitive]
39    #[doc = "PKCE code challenge method."]
40    pub code_challenge_method: Option<Box<terminology::IdentityProviderPkceChallengeMethod>>,
41    #[primitive]
42    #[doc = "PKCE enabled."]
43    pub enabled: Option<Box<FHIRBoolean>>,
44}
45#[derive(
46    Clone,
47    Reflect,
48    Debug,
49    Default,
50    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
51    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
52)]
53#[fhir_serialize_type = "complex"]
54#[doc = "OIDC connection configuration for the identity provider."]
55pub struct IdentityProviderOidc {
56    #[primitive]
57    #[doc = "OIDC authorization endpoint."]
58    pub authorization_endpoint: Box<FHIRString>,
59    #[primitive]
60    #[doc = "OIDC token endpoint."]
61    pub token_endpoint: Box<FHIRString>,
62    #[primitive]
63    #[doc = "The OIDC user info endpoint."]
64    pub userinfo_endpoint: Option<Box<FHIRString>>,
65    #[primitive]
66    #[doc = "If included will verify id token based on this jwks keys."]
67    pub jwks_uri: Option<Box<FHIRString>>,
68    #[primitive]
69    #[doc = "Scopes to send to the OIDC provider."]
70    pub scopes: Option<Vec<Box<FHIRString>>>,
71    #[doc = "Registered client for the OIDC provider."]
72    pub client: IdentityProviderOidcClient,
73    #[doc = "PKCE Configuration"]
74    pub pkce: Option<IdentityProviderOidcPkce>,
75}
76#[derive(
77    Clone,
78    Reflect,
79    Debug,
80    Default,
81    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
82    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
83)]
84#[fhir_serialize_type = "resource"]
85#[doc = "External identity provider configuration."]
86pub struct IdentityProvider {
87    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
88    pub id: Option<String>,
89    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
90    pub meta: Option<Box<Meta>>,
91    #[primitive]
92    #[doc = "The name of the external identity provider."]
93    pub name: Box<FHIRString>,
94    #[primitive]
95    #[doc = "The status of the identity provider."]
96    pub status: Box<terminology::IdentityProviderStatus>,
97    #[primitive]
98    #[doc = "Method for connecting to external identity provider."]
99    pub accessType: Box<terminology::IdentityProviderAccessType>,
100    #[doc = "OIDC connection configuration for the identity provider."]
101    pub oidc: Option<IdentityProviderOidc>,
102}
103#[derive(
104    Clone,
105    Reflect,
106    Debug,
107    Default,
108    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
109    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
110)]
111#[fhir_serialize_type = "resource"]
112#[doc = ""]
113pub struct Membership {
114    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
115    pub id: Option<String>,
116    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
117    pub meta: Option<Box<Meta>>,
118    # [reference (targets = ["Patient" , "Practitioner" , "RelatedPerson" , "Person"])]
119    #[doc = ""]
120    pub link: Option<Box<Reference>>,
121    # [reference (targets = ["User"])]
122    #[doc = ""]
123    pub user: Box<Reference>,
124}
125#[derive(
126    Clone,
127    Reflect,
128    Debug,
129    Default,
130    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
131    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
132)]
133#[fhir_serialize_type = "resource"]
134#[doc = ""]
135pub struct Project {
136    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
137    pub id: Option<String>,
138    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
139    pub meta: Option<Box<Meta>>,
140    #[primitive]
141    #[doc = ""]
142    pub name: Box<FHIRString>,
143    #[primitive]
144    #[doc = ""]
145    pub fhirVersion: Box<terminology::SupportedFhirVersion>,
146    #[cardinality(max = 3usize)]
147    # [reference (targets = ["IdentityProvider"])]
148    #[doc = ""]
149    pub identityProvider: Option<Vec<Box<Reference>>>,
150}
151#[derive(
152    Clone,
153    Reflect,
154    Debug,
155    Default,
156    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
157    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
158)]
159#[fhir_serialize_type = "complex"]
160#[doc = "The operation to retrieve the attribute."]
161pub struct AccessPolicyV2AttributeOperation {
162    #[rename_field = "type"]
163    #[primitive]
164    #[doc = "The operation to retrieve the attribute."]
165    pub type_: Box<terminology::AccessPolicyAttributeOperationTypes>,
166    #[doc = "The operation to retrieve the attribute."]
167    pub path: Option<Box<Expression>>,
168    #[doc = "The operation to retrieve the attribute."]
169    pub params: Option<Box<Expression>>,
170}
171#[derive(
172    Clone,
173    Reflect,
174    Debug,
175    Default,
176    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
177    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
178)]
179#[fhir_serialize_type = "complex"]
180#[doc = "Attributes to use for the policy evaluation."]
181pub struct AccessPolicyV2Attribute {
182    #[primitive]
183    #[doc = "The id of the attribute referenced using %attributeId in expressions."]
184    pub attributeId: Box<FHIRId>,
185    #[doc = "The operation to retrieve the attribute."]
186    pub operation: Option<AccessPolicyV2AttributeOperation>,
187}
188#[derive(
189    Clone,
190    Reflect,
191    Debug,
192    Default,
193    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
194    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
195)]
196#[fhir_serialize_type = "complex"]
197#[doc = ""]
198pub struct AccessPolicyV2RuleTarget {
199    #[doc = ""]
200    pub expression: Box<Expression>,
201}
202#[derive(
203    Clone,
204    Reflect,
205    Debug,
206    Default,
207    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
208    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
209)]
210#[fhir_serialize_type = "complex"]
211#[doc = ""]
212pub struct AccessPolicyV2RuleCondition {
213    #[doc = ""]
214    pub expression: Box<Expression>,
215}
216#[derive(
217    Clone,
218    Reflect,
219    Debug,
220    Default,
221    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
222    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
223)]
224#[fhir_serialize_type = "complex"]
225#[doc = "The rules that govern how the access policy is applied."]
226pub struct AccessPolicyV2Rule {
227    #[primitive]
228    #[doc = "Rule identifier"]
229    pub name: Box<FHIRString>,
230    #[primitive]
231    #[doc = "Rule description"]
232    pub description: Option<Box<FHIRString>>,
233    #[primitive]
234    #[doc = "Rule combination behavior for children elements."]
235    pub combineBehavior: Option<Box<terminology::AccessPolicyv2CombineBehavior>>,
236    #[primitive]
237    #[doc = ""]
238    pub effect: Option<Box<terminology::AccessPolicyRuleEffect>>,
239    #[doc = ""]
240    pub target: Option<AccessPolicyV2RuleTarget>,
241    #[doc = ""]
242    pub condition: Option<AccessPolicyV2RuleCondition>,
243    #[doc = "Nested rules to evaluate."]
244    pub rule: Option<Vec<AccessPolicyV2Rule>>,
245}
246#[derive(
247    Clone,
248    Reflect,
249    Debug,
250    Default,
251    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
252    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
253)]
254#[fhir_serialize_type = "complex"]
255#[doc = "Who the access policy applies to."]
256pub struct AccessPolicyV2Target {
257    # [reference (targets = ["ClientApplication" , "Membership" , "OperationDefinition"])]
258    #[doc = "Who the access policy applies to."]
259    pub link: Box<Reference>,
260}
261#[derive(
262    Clone,
263    Reflect,
264    Debug,
265    Default,
266    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
267    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
268)]
269#[fhir_serialize_type = "resource"]
270#[doc = "A set of rules that govern how a system resource is accessed and used."]
271pub struct AccessPolicyV2 {
272    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
273    pub id: Option<String>,
274    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
275    pub meta: Option<Box<Meta>>,
276    #[primitive]
277    #[doc = "The name of the access policy."]
278    pub name: Box<FHIRString>,
279    #[primitive]
280    #[doc = "Description of the access policy."]
281    pub description: Option<Box<FHIRString>>,
282    #[primitive]
283    #[doc = "The type of evaluation that is performed to determine if access is granted or denied."]
284    pub engine: Box<terminology::AccessPolicyv2Engine>,
285    #[cardinality(max = 15usize)]
286    #[doc = "Attributes to use for the policy evaluation."]
287    pub attribute: Option<Vec<AccessPolicyV2Attribute>>,
288    #[doc = "The rules that govern how the access policy is applied."]
289    pub rule: Option<Vec<AccessPolicyV2Rule>>,
290    #[doc = "Who the access policy applies to."]
291    pub target: Option<Vec<AccessPolicyV2Target>>,
292}
293#[derive(
294    Clone,
295    Reflect,
296    Debug,
297    Default,
298    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
299    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
300)]
301#[fhir_serialize_type = "resource"]
302#[doc = ""]
303pub struct ClientApplication {
304    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
305    pub id: Option<String>,
306    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
307    pub meta: Option<Box<Meta>>,
308    #[primitive]
309    #[doc = ""]
310    pub name: Box<FHIRString>,
311    #[primitive]
312    #[doc = ""]
313    pub description: Option<Box<FHIRString>>,
314    #[primitive]
315    #[cardinality(min = 1usize)]
316    #[doc = "The grant type for this client application."]
317    pub grantType: Vec<Box<terminology::ClientapplicationGrantType>>,
318    #[primitive]
319    #[doc = ""]
320    pub responseTypes: Box<terminology::ClientapplicationResponseTypes>,
321    #[primitive]
322    #[doc = "For client credentials (or other confidential authentication methods), the client secret."]
323    pub secret: Option<Box<FHIRString>>,
324    #[primitive]
325    #[cardinality(max = 5usize)]
326    #[doc = "Array of redirection URI strings for use in redirect-based flows such as the authorization code and implicit flows.  As required by Section 2 of OAuth 2.0 [RFC6749], clients using flows with redirection MUST register their redirection URI values. Authorization servers that support dynamic registration for redirect-based flows MUST implement support for this metadata value."]
327    pub redirectUri: Option<Vec<Box<FHIRString>>>,
328    #[primitive]
329    #[doc = ""]
330    pub uri: Option<Box<FHIRUri>>,
331    #[primitive]
332    #[doc = ""]
333    pub logoUri: Option<Box<FHIRUri>>,
334    #[primitive]
335    #[doc = ""]
336    pub scope: Option<Box<FHIRString>>,
337    #[doc = ""]
338    pub contact: Option<Box<ContactPoint>>,
339    #[primitive]
340    #[doc = ""]
341    pub tosUri: Option<Box<FHIRUri>>,
342    #[primitive]
343    #[doc = ""]
344    pub policyUri: Option<Box<FHIRUri>>,
345}
346#[derive(
347    Clone,
348    Reflect,
349    Debug,
350    Default,
351    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
352    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
353)]
354#[fhir_serialize_type = "resource"]
355#[doc = ""]
356pub struct User {
357    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
358    pub id: Option<String>,
359    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
360    pub meta: Option<Box<Meta>>,
361    #[primitive]
362    #[doc = ""]
363    pub email: Option<Box<FHIRString>>,
364    #[primitive]
365    #[doc = ""]
366    pub emailVerified: Option<Box<FHIRBoolean>>,
367    #[doc = ""]
368    pub name: Option<Box<HumanName>>,
369    #[primitive]
370    #[doc = ""]
371    pub role: Box<terminology::UserRole>,
372    # [reference (targets = ["IdentityProvider"])]
373    #[doc = ""]
374    pub federated: Option<Box<Reference>>,
375}
376#[derive(
377    Clone,
378    Reflect,
379    Debug,
380    Default,
381    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
382    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
383)]
384#[fhir_serialize_type = "complex"]
385#[doc = "The party(s) that are responsible for covering the payment of this account, and what order should they be applied to the account."]
386pub struct AccountCoverage {
387    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
388    pub id: Option<String>,
389    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
390    pub extension: Option<Vec<Box<Extension>>>,
391    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
392    pub modifierExtension: Option<Vec<Box<Extension>>>,
393    # [reference (targets = ["Coverage"])]
394    #[doc = "The party(s) that contribute to payment (or part of) of the charges applied to this account (including self-pay).\n\nA coverage may only be responsible for specific types of charges, and the sequence of the coverages in the account could be important when processing billing."]
395    pub coverage: Box<Reference>,
396    #[primitive]
397    #[doc = "The priority of the coverage in the context of this account."]
398    pub priority: Option<Box<FHIRPositiveInt>>,
399}
400#[derive(
401    Clone,
402    Reflect,
403    Debug,
404    Default,
405    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
406    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
407)]
408#[fhir_serialize_type = "complex"]
409#[doc = "The parties responsible for balancing the account if other payment options fall short."]
410pub struct AccountGuarantor {
411    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
412    pub id: Option<String>,
413    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
414    pub extension: Option<Vec<Box<Extension>>>,
415    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
416    pub modifierExtension: Option<Vec<Box<Extension>>>,
417    # [reference (targets = ["Patient" , "RelatedPerson" , "Organization"])]
418    #[doc = "The entity who is responsible."]
419    pub party: Box<Reference>,
420    #[primitive]
421    #[doc = "A guarantor may be placed on credit hold or otherwise have their role temporarily suspended."]
422    pub onHold: Option<Box<FHIRBoolean>>,
423    #[doc = "The timeframe during which the guarantor accepts responsibility for the account."]
424    pub period: Option<Box<Period>>,
425}
426#[derive(
427    Clone,
428    Reflect,
429    Debug,
430    Default,
431    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
432    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
433)]
434#[fhir_serialize_type = "resource"]
435#[doc = "A financial tool for tracking value accrued for a particular purpose.  In the healthcare field, used to track charges for a patient, cost centers, etc."]
436pub struct Account {
437    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
438    pub id: Option<String>,
439    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
440    pub meta: Option<Box<Meta>>,
441    #[primitive]
442    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
443    pub implicitRules: Option<Box<FHIRUri>>,
444    #[primitive]
445    #[doc = "The base language in which the resource is written."]
446    pub language: Option<Box<FHIRCode>>,
447    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
448    pub text: Option<Box<Narrative>>,
449    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
450    pub contained: Option<Vec<Box<Resource>>>,
451    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
452    pub extension: Option<Vec<Box<Extension>>>,
453    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
454    pub modifierExtension: Option<Vec<Box<Extension>>>,
455    #[rename_field = "identifier"]
456    #[doc = "Unique identifier used to reference the account.  Might or might not be intended for human use (e.g. credit card number)."]
457    pub identifier_: Option<Vec<Box<Identifier>>>,
458    #[primitive]
459    #[doc = "Indicates whether the account is presently used/usable or not."]
460    pub status: Box<terminology::AccountStatus>,
461    #[rename_field = "type"]
462    #[doc = "Categorizes the account for reporting and searching purposes."]
463    pub type_: Option<Box<CodeableConcept>>,
464    #[primitive]
465    #[doc = "Name used for the account when displaying it to humans in reports, etc."]
466    pub name: Option<Box<FHIRString>>,
467    # [reference (targets = ["Patient" , "Device" , "Practitioner" , "PractitionerRole" , "Location" , "HealthcareService" , "Organization"])]
468    #[doc = "Identifies the entity which incurs the expenses. While the immediate recipients of services or goods might be entities related to the subject, the expenses were ultimately incurred by the subject of the Account."]
469    pub subject: Option<Vec<Box<Reference>>>,
470    #[doc = "The date range of services associated with this account."]
471    pub servicePeriod: Option<Box<Period>>,
472    #[doc = "The party(s) that are responsible for covering the payment of this account, and what order should they be applied to the account."]
473    pub coverage: Option<Vec<AccountCoverage>>,
474    # [reference (targets = ["Organization"])]
475    #[doc = "Indicates the service area, hospital, department, etc. with responsibility for managing the Account."]
476    pub owner: Option<Box<Reference>>,
477    #[primitive]
478    #[doc = "Provides additional information about what the account tracks and how it is used."]
479    pub description: Option<Box<FHIRString>>,
480    #[doc = "The parties responsible for balancing the account if other payment options fall short."]
481    pub guarantor: Option<Vec<AccountGuarantor>>,
482    # [reference (targets = ["Account"])]
483    #[doc = "Reference to a parent Account."]
484    pub partOf: Option<Box<Reference>>,
485}
486#[derive(
487    Clone,
488    Reflect,
489    Debug,
490    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
491    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
492)]
493#[fhir_serialize_type = "typechoice"]
494#[type_choice_field_name = "subject"]
495pub enum ActivityDefinitionSubjectTypeChoice {
496    CodeableConcept(Box<CodeableConcept>),
497    # [reference (targets = ["Group"])]
498    Reference(Box<Reference>),
499}
500impl Default for ActivityDefinitionSubjectTypeChoice {
501    fn default() -> Self {
502        ActivityDefinitionSubjectTypeChoice::CodeableConcept(Box::new(Default::default()))
503    }
504}
505#[derive(
506    Clone,
507    Reflect,
508    Debug,
509    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
510    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
511)]
512#[fhir_serialize_type = "typechoice"]
513#[type_choice_field_name = "timing"]
514pub enum ActivityDefinitionTimingTypeChoice {
515    Timing(Box<Timing>),
516    DateTime(Box<FHIRDateTime>),
517    Age(Box<Age>),
518    Period(Box<Period>),
519    Range(Box<Range>),
520    Duration(Box<Duration>),
521}
522impl Default for ActivityDefinitionTimingTypeChoice {
523    fn default() -> Self {
524        ActivityDefinitionTimingTypeChoice::Timing(Box::new(Default::default()))
525    }
526}
527#[derive(
528    Clone,
529    Reflect,
530    Debug,
531    Default,
532    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
533    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
534)]
535#[fhir_serialize_type = "complex"]
536#[doc = "Indicates who should participate in performing the action described."]
537pub struct ActivityDefinitionParticipant {
538    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
539    pub id: Option<String>,
540    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
541    pub extension: Option<Vec<Box<Extension>>>,
542    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
543    pub modifierExtension: Option<Vec<Box<Extension>>>,
544    #[rename_field = "type"]
545    #[primitive]
546    #[doc = "The type of participant in the action."]
547    pub type_: Box<terminology::ActionParticipantType>,
548    #[doc = "The role the participant should play in performing the described action."]
549    pub role: Option<Box<CodeableConcept>>,
550}
551#[derive(
552    Clone,
553    Reflect,
554    Debug,
555    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
556    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
557)]
558#[fhir_serialize_type = "typechoice"]
559#[type_choice_field_name = "product"]
560pub enum ActivityDefinitionProductTypeChoice {
561    # [reference (targets = ["Medication" , "Substance"])]
562    Reference(Box<Reference>),
563    CodeableConcept(Box<CodeableConcept>),
564}
565impl Default for ActivityDefinitionProductTypeChoice {
566    fn default() -> Self {
567        ActivityDefinitionProductTypeChoice::Reference(Box::new(Default::default()))
568    }
569}
570#[derive(
571    Clone,
572    Reflect,
573    Debug,
574    Default,
575    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
576    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
577)]
578#[fhir_serialize_type = "complex"]
579#[doc = "Dynamic values that will be evaluated to produce values for elements of the resulting resource. For example, if the dosage of a medication must be computed based on the patient's weight, a dynamic value would be used to specify an expression that calculated the weight, and the path on the request resource that would contain the result."]
580pub struct ActivityDefinitionDynamicValue {
581    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
582    pub id: Option<String>,
583    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
584    pub extension: Option<Vec<Box<Extension>>>,
585    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
586    pub modifierExtension: Option<Vec<Box<Extension>>>,
587    #[primitive]
588    #[doc = "The path to the element to be customized. This is the path on the resource that will hold the result of the calculation defined by the expression. The specified path SHALL be a FHIRPath resolveable on the specified target type of the ActivityDefinition, and SHALL consist only of identifiers, constant indexers, and a restricted subset of functions. The path is allowed to contain qualifiers (.) to traverse sub-elements, as well as indexers ([x]) to traverse multiple-cardinality sub-elements (see the [Simple FHIRPath Profile](fhirpath.html#simple) for full details)."]
589    pub path: Box<FHIRString>,
590    #[doc = "An expression specifying the value of the customized element."]
591    pub expression: Box<Expression>,
592}
593#[derive(
594    Clone,
595    Reflect,
596    Debug,
597    Default,
598    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
599    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
600)]
601#[fhir_serialize_type = "resource"]
602#[doc = "This resource allows for the definition of some activity to be performed, independent of a particular patient, practitioner, or other performance context."]
603pub struct ActivityDefinition {
604    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
605    pub id: Option<String>,
606    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
607    pub meta: Option<Box<Meta>>,
608    #[primitive]
609    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
610    pub implicitRules: Option<Box<FHIRUri>>,
611    #[primitive]
612    #[doc = "The base language in which the resource is written."]
613    pub language: Option<Box<FHIRCode>>,
614    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
615    pub text: Option<Box<Narrative>>,
616    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
617    pub contained: Option<Vec<Box<Resource>>>,
618    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
619    pub extension: Option<Vec<Box<Extension>>>,
620    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
621    pub modifierExtension: Option<Vec<Box<Extension>>>,
622    #[primitive]
623    #[doc = "An absolute URI that is used to identify this activity definition when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this activity definition is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the activity definition is stored on different servers."]
624    pub url: Option<Box<FHIRUri>>,
625    #[rename_field = "identifier"]
626    #[doc = "A formal identifier that is used to identify this activity definition when it is represented in other formats, or referenced in a specification, model, design or an instance."]
627    pub identifier_: Option<Vec<Box<Identifier>>>,
628    #[primitive]
629    #[doc = "The identifier that is used to identify this version of the activity definition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the activity definition author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence. To provide a version consistent with the Decision Support Service specification, use the format Major.Minor.Revision (e.g. 1.0.0). For more information on versioning knowledge assets, refer to the Decision Support Service specification. Note that a version is required for non-experimental active assets."]
630    pub version: Option<Box<FHIRString>>,
631    #[primitive]
632    #[doc = "A natural language name identifying the activity definition. This name should be usable as an identifier for the module by machine processing applications such as code generation."]
633    pub name: Option<Box<FHIRString>>,
634    #[primitive]
635    #[doc = "A short, descriptive, user-friendly title for the activity definition."]
636    pub title: Option<Box<FHIRString>>,
637    #[primitive]
638    #[doc = "An explanatory or alternate title for the activity definition giving additional information about its content."]
639    pub subtitle: Option<Box<FHIRString>>,
640    #[primitive]
641    #[doc = "The status of this activity definition. Enables tracking the life-cycle of the content."]
642    pub status: Box<terminology::PublicationStatus>,
643    #[primitive]
644    #[doc = "A Boolean value to indicate that this activity definition is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage."]
645    pub experimental: Option<Box<FHIRBoolean>>,
646    # [type_choice_variants (complex = ["subjectCodeableConcept" , "subjectReference"] , primitive = [])]
647    #[doc = "A code or group definition that describes the intended subject of the activity being defined."]
648    pub subject: Option<ActivityDefinitionSubjectTypeChoice>,
649    #[primitive]
650    #[doc = "The date  (and optionally time) when the activity definition was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the activity definition changes."]
651    pub date: Option<Box<FHIRDateTime>>,
652    #[primitive]
653    #[doc = "The name of the organization or individual that published the activity definition."]
654    pub publisher: Option<Box<FHIRString>>,
655    #[doc = "Contact details to assist a user in finding and communicating with the publisher."]
656    pub contact: Option<Vec<Box<ContactDetail>>>,
657    #[primitive]
658    #[doc = "A free text natural language description of the activity definition from a consumer's perspective."]
659    pub description: Option<Box<FHIRMarkdown>>,
660    #[doc = "The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate activity definition instances."]
661    pub useContext: Option<Vec<Box<UsageContext>>>,
662    #[doc = "A legal or geographic region in which the activity definition is intended to be used."]
663    pub jurisdiction: Option<Vec<Box<CodeableConcept>>>,
664    #[primitive]
665    #[doc = "Explanation of why this activity definition is needed and why it has been designed as it has."]
666    pub purpose: Option<Box<FHIRMarkdown>>,
667    #[primitive]
668    #[doc = "A detailed description of how the activity definition is used from a clinical perspective."]
669    pub usage: Option<Box<FHIRString>>,
670    #[primitive]
671    #[doc = "A copyright statement relating to the activity definition and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the activity definition."]
672    pub copyright: Option<Box<FHIRMarkdown>>,
673    #[primitive]
674    #[doc = "The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage."]
675    pub approvalDate: Option<Box<FHIRDate>>,
676    #[primitive]
677    #[doc = "The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date."]
678    pub lastReviewDate: Option<Box<FHIRDate>>,
679    #[doc = "The period during which the activity definition content was or is planned to be in active use."]
680    pub effectivePeriod: Option<Box<Period>>,
681    #[doc = "Descriptive topics related to the content of the activity. Topics provide a high-level categorization of the activity that can be useful for filtering and searching."]
682    pub topic: Option<Vec<Box<CodeableConcept>>>,
683    #[doc = "An individiual or organization primarily involved in the creation and maintenance of the content."]
684    pub author: Option<Vec<Box<ContactDetail>>>,
685    #[doc = "An individual or organization primarily responsible for internal coherence of the content."]
686    pub editor: Option<Vec<Box<ContactDetail>>>,
687    #[doc = "An individual or organization primarily responsible for review of some aspect of the content."]
688    pub reviewer: Option<Vec<Box<ContactDetail>>>,
689    #[doc = "An individual or organization responsible for officially endorsing the content for use in some setting."]
690    pub endorser: Option<Vec<Box<ContactDetail>>>,
691    #[doc = "Related artifacts such as additional documentation, justification, or bibliographic references."]
692    pub relatedArtifact: Option<Vec<Box<RelatedArtifact>>>,
693    #[primitive]
694    #[doc = "A reference to a Library resource containing any formal logic used by the activity definition."]
695    pub library: Option<Vec<Box<FHIRCanonical>>>,
696    #[primitive]
697    #[doc = "A description of the kind of resource the activity definition is representing. For example, a MedicationRequest, a ServiceRequest, or a CommunicationRequest. Typically, but not always, this is a Request resource."]
698    pub kind: Option<Box<terminology::RequestResourceTypes>>,
699    #[primitive]
700    #[doc = "A profile to which the target of the activity definition is expected to conform."]
701    pub profile: Option<Box<FHIRCanonical>>,
702    #[doc = "Detailed description of the type of activity; e.g. What lab test, what procedure, what kind of encounter."]
703    pub code: Option<Box<CodeableConcept>>,
704    #[primitive]
705    #[doc = "Indicates the level of authority/intentionality associated with the activity and where the request should fit into the workflow chain."]
706    pub intent: Option<Box<terminology::RequestIntent>>,
707    #[primitive]
708    #[doc = "Indicates how quickly the activity  should be addressed with respect to other requests."]
709    pub priority: Option<Box<terminology::RequestPriority>>,
710    #[primitive]
711    #[doc = "Set this to true if the definition is to indicate that a particular activity should NOT be performed. If true, this element should be interpreted to reinforce a negative coding. For example NPO as a code with a doNotPerform of true would still indicate to NOT perform the action."]
712    pub doNotPerform: Option<Box<FHIRBoolean>>,
713    # [type_choice_variants (complex = ["timingTiming" , "timingAge" , "timingPeriod" , "timingRange" , "timingDuration"] , primitive = ["timingDateTime"])]
714    #[doc = "The period, timing or frequency upon which the described activity is to occur."]
715    pub timing: Option<ActivityDefinitionTimingTypeChoice>,
716    # [reference (targets = ["Location"])]
717    #[doc = "Identifies the facility where the activity will occur; e.g. home, hospital, specific clinic, etc."]
718    pub location: Option<Box<Reference>>,
719    #[doc = "Indicates who should participate in performing the action described."]
720    pub participant: Option<Vec<ActivityDefinitionParticipant>>,
721    # [type_choice_variants (complex = ["productReference" , "productCodeableConcept"] , primitive = [])]
722    #[doc = "Identifies the food, drug or other product being consumed or supplied in the activity."]
723    pub product: Option<ActivityDefinitionProductTypeChoice>,
724    #[doc = "Identifies the quantity expected to be consumed at once (per dose, per meal, etc.)."]
725    pub quantity: Option<Box<Quantity>>,
726    #[doc = "Provides detailed dosage instructions in the same way that they are described for MedicationRequest resources."]
727    pub dosage: Option<Vec<Box<Dosage>>>,
728    #[doc = "Indicates the sites on the subject's body where the procedure should be performed (I.e. the target sites)."]
729    pub bodySite: Option<Vec<Box<CodeableConcept>>>,
730    # [reference (targets = ["SpecimenDefinition"])]
731    #[doc = "Defines specimen requirements for the action to be performed, such as required specimens for a lab test."]
732    pub specimenRequirement: Option<Vec<Box<Reference>>>,
733    # [reference (targets = ["ObservationDefinition"])]
734    #[doc = "Defines observation requirements for the action to be performed, such as body weight or surface area."]
735    pub observationRequirement: Option<Vec<Box<Reference>>>,
736    # [reference (targets = ["ObservationDefinition"])]
737    #[doc = "Defines the observations that are expected to be produced by the action."]
738    pub observationResultRequirement: Option<Vec<Box<Reference>>>,
739    #[primitive]
740    #[doc = "A reference to a StructureMap resource that defines a transform that can be executed to produce the intent resource using the ActivityDefinition instance as the input."]
741    pub transform: Option<Box<FHIRCanonical>>,
742    #[doc = "Dynamic values that will be evaluated to produce values for elements of the resulting resource. For example, if the dosage of a medication must be computed based on the patient's weight, a dynamic value would be used to specify an expression that calculated the weight, and the path on the request resource that would contain the result."]
743    pub dynamicValue: Option<Vec<ActivityDefinitionDynamicValue>>,
744}
745#[derive(
746    Clone,
747    Reflect,
748    Debug,
749    Default,
750    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
751    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
752)]
753#[fhir_serialize_type = "complex"]
754#[doc = "Information on the possible cause of the event."]
755pub struct AdverseEventSuspectEntityCausality {
756    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
757    pub id: Option<String>,
758    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
759    pub extension: Option<Vec<Box<Extension>>>,
760    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
761    pub modifierExtension: Option<Vec<Box<Extension>>>,
762    #[doc = "Assessment of if the entity caused the event."]
763    pub assessment: Option<Box<CodeableConcept>>,
764    #[primitive]
765    #[doc = "AdverseEvent.suspectEntity.causalityProductRelatedness."]
766    pub productRelatedness: Option<Box<FHIRString>>,
767    # [reference (targets = ["Practitioner" , "PractitionerRole"])]
768    #[doc = "AdverseEvent.suspectEntity.causalityAuthor."]
769    pub author: Option<Box<Reference>>,
770    #[doc = "ProbabilityScale | Bayesian | Checklist."]
771    pub method: Option<Box<CodeableConcept>>,
772}
773#[derive(
774    Clone,
775    Reflect,
776    Debug,
777    Default,
778    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
779    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
780)]
781#[fhir_serialize_type = "complex"]
782#[doc = "Describes the entity that is suspected to have caused the adverse event."]
783pub struct AdverseEventSuspectEntity {
784    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
785    pub id: Option<String>,
786    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
787    pub extension: Option<Vec<Box<Extension>>>,
788    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
789    pub modifierExtension: Option<Vec<Box<Extension>>>,
790    # [reference (targets = ["Immunization" , "Procedure" , "Substance" , "Medication" , "MedicationAdministration" , "MedicationStatement" , "Device"])]
791    #[doc = "Identifies the actual instance of what caused the adverse event.  May be a substance, medication, medication administration, medication statement or a device."]
792    pub instance: Box<Reference>,
793    #[doc = "Information on the possible cause of the event."]
794    pub causality: Option<Vec<AdverseEventSuspectEntityCausality>>,
795}
796#[derive(
797    Clone,
798    Reflect,
799    Debug,
800    Default,
801    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
802    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
803)]
804#[fhir_serialize_type = "resource"]
805#[doc = "Actual or  potential/avoided event causing unintended physical injury resulting from or contributed to by medical care, a research study or other healthcare setting factors that requires additional monitoring, treatment, or hospitalization, or that results in death."]
806pub struct AdverseEvent {
807    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
808    pub id: Option<String>,
809    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
810    pub meta: Option<Box<Meta>>,
811    #[primitive]
812    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
813    pub implicitRules: Option<Box<FHIRUri>>,
814    #[primitive]
815    #[doc = "The base language in which the resource is written."]
816    pub language: Option<Box<FHIRCode>>,
817    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
818    pub text: Option<Box<Narrative>>,
819    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
820    pub contained: Option<Vec<Box<Resource>>>,
821    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
822    pub extension: Option<Vec<Box<Extension>>>,
823    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
824    pub modifierExtension: Option<Vec<Box<Extension>>>,
825    #[rename_field = "identifier"]
826    #[doc = "Business identifiers assigned to this adverse event by the performer or other systems which remain constant as the resource is updated and propagates from server to server."]
827    pub identifier_: Option<Box<Identifier>>,
828    #[primitive]
829    #[doc = "Whether the event actually happened, or just had the potential to. Note that this is independent of whether anyone was affected or harmed or how severely."]
830    pub actuality: Box<terminology::AdverseEventActuality>,
831    #[doc = "The overall type of event, intended for search and filtering purposes."]
832    pub category: Option<Vec<Box<CodeableConcept>>>,
833    #[doc = "This element defines the specific type of event that occurred or that was prevented from occurring."]
834    pub event: Option<Box<CodeableConcept>>,
835    # [reference (targets = ["Patient" , "Group" , "Practitioner" , "RelatedPerson"])]
836    #[doc = "This subject or group impacted by the event."]
837    pub subject: Box<Reference>,
838    # [reference (targets = ["Encounter"])]
839    #[doc = "The Encounter during which AdverseEvent was created or to which the creation of this record is tightly associated."]
840    pub encounter: Option<Box<Reference>>,
841    #[primitive]
842    #[doc = "The date (and perhaps time) when the adverse event occurred."]
843    pub date: Option<Box<FHIRDateTime>>,
844    #[primitive]
845    #[doc = "Estimated or actual date the AdverseEvent began, in the opinion of the reporter."]
846    pub detected: Option<Box<FHIRDateTime>>,
847    #[primitive]
848    #[doc = "The date on which the existence of the AdverseEvent was first recorded."]
849    pub recordedDate: Option<Box<FHIRDateTime>>,
850    # [reference (targets = ["Condition"])]
851    #[doc = "Includes information about the reaction that occurred as a result of exposure to a substance (for example, a drug or a chemical)."]
852    pub resultingCondition: Option<Vec<Box<Reference>>>,
853    # [reference (targets = ["Location"])]
854    #[doc = "The information about where the adverse event occurred."]
855    pub location: Option<Box<Reference>>,
856    #[doc = "Assessment whether this event was of real importance."]
857    pub seriousness: Option<Box<CodeableConcept>>,
858    #[doc = "Describes the severity of the adverse event, in relation to the subject. Contrast to AdverseEvent.seriousness - a severe rash might not be serious, but a mild heart problem is."]
859    pub severity: Option<Box<CodeableConcept>>,
860    #[doc = "Describes the type of outcome from the adverse event."]
861    pub outcome: Option<Box<CodeableConcept>>,
862    # [reference (targets = ["Patient" , "Practitioner" , "PractitionerRole" , "RelatedPerson"])]
863    #[doc = "Information on who recorded the adverse event.  May be the patient or a practitioner."]
864    pub recorder: Option<Box<Reference>>,
865    # [reference (targets = ["Practitioner" , "PractitionerRole" , "Device"])]
866    #[doc = "Parties that may or should contribute or have contributed information to the adverse event, which can consist of one or more activities.  Such information includes information leading to the decision to perform the activity and how to perform the activity (e.g. consultant), information that the activity itself seeks to reveal (e.g. informant of clinical history), or information about what activity was performed (e.g. informant witness)."]
867    pub contributor: Option<Vec<Box<Reference>>>,
868    #[doc = "Describes the entity that is suspected to have caused the adverse event."]
869    pub suspectEntity: Option<Vec<AdverseEventSuspectEntity>>,
870    # [reference (targets = ["Condition" , "Observation" , "AllergyIntolerance" , "FamilyMemberHistory" , "Immunization" , "Procedure" , "Media" , "DocumentReference"])]
871    #[doc = "AdverseEvent.subjectMedicalHistory."]
872    pub subjectMedicalHistory: Option<Vec<Box<Reference>>>,
873    # [reference (targets = ["DocumentReference"])]
874    #[doc = "AdverseEvent.referenceDocument."]
875    pub referenceDocument: Option<Vec<Box<Reference>>>,
876    # [reference (targets = ["ResearchStudy"])]
877    #[doc = "AdverseEvent.study."]
878    pub study: Option<Vec<Box<Reference>>>,
879}
880#[derive(
881    Clone,
882    Reflect,
883    Debug,
884    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
885    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
886)]
887#[fhir_serialize_type = "typechoice"]
888#[type_choice_field_name = "onset"]
889pub enum AllergyIntoleranceOnsetTypeChoice {
890    DateTime(Box<FHIRDateTime>),
891    Age(Box<Age>),
892    Period(Box<Period>),
893    Range(Box<Range>),
894    String(Box<FHIRString>),
895}
896impl Default for AllergyIntoleranceOnsetTypeChoice {
897    fn default() -> Self {
898        AllergyIntoleranceOnsetTypeChoice::DateTime(Box::new(Default::default()))
899    }
900}
901#[derive(
902    Clone,
903    Reflect,
904    Debug,
905    Default,
906    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
907    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
908)]
909#[fhir_serialize_type = "complex"]
910#[doc = "Details about each adverse reaction event linked to exposure to the identified substance."]
911pub struct AllergyIntoleranceReaction {
912    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
913    pub id: Option<String>,
914    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
915    pub extension: Option<Vec<Box<Extension>>>,
916    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
917    pub modifierExtension: Option<Vec<Box<Extension>>>,
918    #[doc = "Identification of the specific substance (or pharmaceutical product) considered to be responsible for the Adverse Reaction event. Note: the substance for a specific reaction may be different from the substance identified as the cause of the risk, but it must be consistent with it. For instance, it may be a more specific substance (e.g. a brand medication) or a composite product that includes the identified substance. It must be clinically safe to only process the 'code' and ignore the 'reaction.substance'.  If a receiving system is unable to confirm that AllergyIntolerance.reaction.substance falls within the semantic scope of AllergyIntolerance.code, then the receiving system should ignore AllergyIntolerance.reaction.substance."]
919    pub substance: Option<Box<CodeableConcept>>,
920    #[cardinality(min = 1usize)]
921    #[doc = "Clinical symptoms and/or signs that are observed or associated with the adverse reaction event."]
922    pub manifestation: Vec<Box<CodeableConcept>>,
923    #[primitive]
924    #[doc = "Text description about the reaction as a whole, including details of the manifestation if required."]
925    pub description: Option<Box<FHIRString>>,
926    #[primitive]
927    #[doc = "Record of the date and/or time of the onset of the Reaction."]
928    pub onset: Option<Box<FHIRDateTime>>,
929    #[primitive]
930    #[doc = "Clinical assessment of the severity of the reaction event as a whole, potentially considering multiple different manifestations."]
931    pub severity: Option<Box<terminology::ReactionEventSeverity>>,
932    #[doc = "Identification of the route by which the subject was exposed to the substance."]
933    pub exposureRoute: Option<Box<CodeableConcept>>,
934    #[doc = "Additional text about the adverse reaction event not captured in other fields."]
935    pub note: Option<Vec<Box<Annotation>>>,
936}
937#[derive(
938    Clone,
939    Reflect,
940    Debug,
941    Default,
942    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
943    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
944)]
945#[fhir_serialize_type = "resource"]
946#[doc = "Risk of harmful or undesirable, physiological response which is unique to an individual and associated with exposure to a substance."]
947pub struct AllergyIntolerance {
948    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
949    pub id: Option<String>,
950    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
951    pub meta: Option<Box<Meta>>,
952    #[primitive]
953    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
954    pub implicitRules: Option<Box<FHIRUri>>,
955    #[primitive]
956    #[doc = "The base language in which the resource is written."]
957    pub language: Option<Box<FHIRCode>>,
958    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
959    pub text: Option<Box<Narrative>>,
960    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
961    pub contained: Option<Vec<Box<Resource>>>,
962    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
963    pub extension: Option<Vec<Box<Extension>>>,
964    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
965    pub modifierExtension: Option<Vec<Box<Extension>>>,
966    #[rename_field = "identifier"]
967    #[doc = "Business identifiers assigned to this AllergyIntolerance by the performer or other systems which remain constant as the resource is updated and propagates from server to server."]
968    pub identifier_: Option<Vec<Box<Identifier>>>,
969    #[doc = "The clinical status of the allergy or intolerance."]
970    pub clinicalStatus: Option<Box<CodeableConcept>>,
971    #[doc = "Assertion about certainty associated with the propensity, or potential risk, of a reaction to the identified substance (including pharmaceutical product)."]
972    pub verificationStatus: Option<Box<CodeableConcept>>,
973    #[rename_field = "type"]
974    #[primitive]
975    #[doc = "Identification of the underlying physiological mechanism for the reaction risk."]
976    pub type_: Option<Box<terminology::AllergyIntoleranceType>>,
977    #[primitive]
978    #[doc = "Category of the identified substance."]
979    pub category: Option<Vec<Box<terminology::AllergyIntoleranceCategory>>>,
980    #[primitive]
981    #[doc = "Estimate of the potential clinical harm, or seriousness, of the reaction to the identified substance."]
982    pub criticality: Option<Box<terminology::AllergyIntoleranceCriticality>>,
983    #[doc = "Code for an allergy or intolerance statement (either a positive or a negated/excluded statement).  This may be a code for a substance or pharmaceutical product that is considered to be responsible for the adverse reaction risk (e.g., \"Latex\"), an allergy or intolerance condition (e.g., \"Latex allergy\"), or a negated/excluded code for a specific substance or class (e.g., \"No latex allergy\") or a general or categorical negated statement (e.g.,  \"No known allergy\", \"No known drug allergies\").  Note: the substance for a specific reaction may be different from the substance identified as the cause of the risk, but it must be consistent with it. For instance, it may be a more specific substance (e.g. a brand medication) or a composite product that includes the identified substance. It must be clinically safe to only process the 'code' and ignore the 'reaction.substance'.  If a receiving system is unable to confirm that AllergyIntolerance.reaction.substance falls within the semantic scope of AllergyIntolerance.code, then the receiving system should ignore AllergyIntolerance.reaction.substance."]
984    pub code: Option<Box<CodeableConcept>>,
985    # [reference (targets = ["Patient"])]
986    #[doc = "The patient who has the allergy or intolerance."]
987    pub patient: Box<Reference>,
988    # [reference (targets = ["Encounter"])]
989    #[doc = "The encounter when the allergy or intolerance was asserted."]
990    pub encounter: Option<Box<Reference>>,
991    # [type_choice_variants (complex = ["onsetAge" , "onsetPeriod" , "onsetRange"] , primitive = ["onsetDateTime" , "onsetString"])]
992    #[doc = "Estimated or actual date,  date-time, or age when allergy or intolerance was identified."]
993    pub onset: Option<AllergyIntoleranceOnsetTypeChoice>,
994    #[primitive]
995    #[doc = "The recordedDate represents when this particular AllergyIntolerance record was created in the system, which is often a system-generated date."]
996    pub recordedDate: Option<Box<FHIRDateTime>>,
997    # [reference (targets = ["Practitioner" , "PractitionerRole" , "Patient" , "RelatedPerson"])]
998    #[doc = "Individual who recorded the record and takes responsibility for its content."]
999    pub recorder: Option<Box<Reference>>,
1000    # [reference (targets = ["Patient" , "RelatedPerson" , "Practitioner" , "PractitionerRole"])]
1001    #[doc = "The source of the information about the allergy that is recorded."]
1002    pub asserter: Option<Box<Reference>>,
1003    #[primitive]
1004    #[doc = "Represents the date and/or time of the last known occurrence of a reaction event."]
1005    pub lastOccurrence: Option<Box<FHIRDateTime>>,
1006    #[doc = "Additional narrative about the propensity for the Adverse Reaction, not captured in other fields."]
1007    pub note: Option<Vec<Box<Annotation>>>,
1008    #[doc = "Details about each adverse reaction event linked to exposure to the identified substance."]
1009    pub reaction: Option<Vec<AllergyIntoleranceReaction>>,
1010}
1011#[derive(
1012    Clone,
1013    Reflect,
1014    Debug,
1015    Default,
1016    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
1017    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
1018)]
1019#[fhir_serialize_type = "complex"]
1020#[doc = "List of participants involved in the appointment."]
1021pub struct AppointmentParticipant {
1022    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
1023    pub id: Option<String>,
1024    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
1025    pub extension: Option<Vec<Box<Extension>>>,
1026    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
1027    pub modifierExtension: Option<Vec<Box<Extension>>>,
1028    #[rename_field = "type"]
1029    #[doc = "Role of participant in the appointment."]
1030    pub type_: Option<Vec<Box<CodeableConcept>>>,
1031    # [reference (targets = ["Patient" , "Practitioner" , "PractitionerRole" , "RelatedPerson" , "Device" , "HealthcareService" , "Location"])]
1032    #[doc = "A Person, Location/HealthcareService or Device that is participating in the appointment."]
1033    pub actor: Option<Box<Reference>>,
1034    #[primitive]
1035    #[doc = "Whether this participant is required to be present at the meeting. This covers a use-case where two doctors need to meet to discuss the results for a specific patient, and the patient is not required to be present."]
1036    pub required: Option<Box<terminology::Participantrequired>>,
1037    #[primitive]
1038    #[doc = "Participation status of the actor."]
1039    pub status: Box<terminology::Participationstatus>,
1040    #[doc = "Participation period of the actor."]
1041    pub period: Option<Box<Period>>,
1042}
1043#[derive(
1044    Clone,
1045    Reflect,
1046    Debug,
1047    Default,
1048    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
1049    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
1050)]
1051#[fhir_serialize_type = "resource"]
1052#[doc = "A booking of a healthcare event among patient(s), practitioner(s), related person(s) and/or device(s) for a specific date/time. This may result in one or more Encounter(s)."]
1053pub struct Appointment {
1054    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
1055    pub id: Option<String>,
1056    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
1057    pub meta: Option<Box<Meta>>,
1058    #[primitive]
1059    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
1060    pub implicitRules: Option<Box<FHIRUri>>,
1061    #[primitive]
1062    #[doc = "The base language in which the resource is written."]
1063    pub language: Option<Box<FHIRCode>>,
1064    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
1065    pub text: Option<Box<Narrative>>,
1066    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
1067    pub contained: Option<Vec<Box<Resource>>>,
1068    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
1069    pub extension: Option<Vec<Box<Extension>>>,
1070    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
1071    pub modifierExtension: Option<Vec<Box<Extension>>>,
1072    #[rename_field = "identifier"]
1073    #[doc = "This records identifiers associated with this appointment concern that are defined by business processes and/or used to refer to it when a direct URL reference to the resource itself is not appropriate (e.g. in CDA documents, or in written / printed documentation)."]
1074    pub identifier_: Option<Vec<Box<Identifier>>>,
1075    #[primitive]
1076    #[doc = "The overall status of the Appointment. Each of the participants has their own participation status which indicates their involvement in the process, however this status indicates the shared status."]
1077    pub status: Box<terminology::Appointmentstatus>,
1078    #[doc = "The coded reason for the appointment being cancelled. This is often used in reporting/billing/futher processing to determine if further actions are required, or specific fees apply."]
1079    pub cancelationReason: Option<Box<CodeableConcept>>,
1080    #[doc = "A broad categorization of the service that is to be performed during this appointment."]
1081    pub serviceCategory: Option<Vec<Box<CodeableConcept>>>,
1082    #[doc = "The specific service that is to be performed during this appointment."]
1083    pub serviceType: Option<Vec<Box<CodeableConcept>>>,
1084    #[doc = "The specialty of a practitioner that would be required to perform the service requested in this appointment."]
1085    pub specialty: Option<Vec<Box<CodeableConcept>>>,
1086    #[doc = "The style of appointment or patient that has been booked in the slot (not service type)."]
1087    pub appointmentType: Option<Box<CodeableConcept>>,
1088    #[doc = "The coded reason that this appointment is being scheduled. This is more clinical than administrative."]
1089    pub reasonCode: Option<Vec<Box<CodeableConcept>>>,
1090    # [reference (targets = ["Condition" , "Procedure" , "Observation" , "ImmunizationRecommendation"])]
1091    #[doc = "Reason the appointment has been scheduled to take place, as specified using information from another resource. When the patient arrives and the encounter begins it may be used as the admission diagnosis. The indication will typically be a Condition (with other resources referenced in the evidence.detail), or a Procedure."]
1092    pub reasonReference: Option<Vec<Box<Reference>>>,
1093    #[primitive]
1094    #[doc = "The priority of the appointment. Can be used to make informed decisions if needing to re-prioritize appointments. (The iCal Standard specifies 0 as undefined, 1 as highest, 9 as lowest priority)."]
1095    pub priority: Option<Box<FHIRUnsignedInt>>,
1096    #[primitive]
1097    #[doc = "The brief description of the appointment as would be shown on a subject line in a meeting request, or appointment list. Detailed or expanded information should be put in the comment field."]
1098    pub description: Option<Box<FHIRString>>,
1099    # [reference (targets = ["Resource"])]
1100    #[doc = "Additional information to support the appointment provided when making the appointment."]
1101    pub supportingInformation: Option<Vec<Box<Reference>>>,
1102    #[primitive]
1103    #[doc = "Date/Time that the appointment is to take place."]
1104    pub start: Option<Box<FHIRInstant>>,
1105    #[primitive]
1106    #[doc = "Date/Time that the appointment is to conclude."]
1107    pub end: Option<Box<FHIRInstant>>,
1108    #[primitive]
1109    #[doc = "Number of minutes that the appointment is to take. This can be less than the duration between the start and end times.  For example, where the actual time of appointment is only an estimate or if a 30 minute appointment is being requested, but any time would work.  Also, if there is, for example, a planned 15 minute break in the middle of a long appointment, the duration may be 15 minutes less than the difference between the start and end."]
1110    pub minutesDuration: Option<Box<FHIRPositiveInt>>,
1111    # [reference (targets = ["Slot"])]
1112    #[doc = "The slots from the participants' schedules that will be filled by the appointment."]
1113    pub slot: Option<Vec<Box<Reference>>>,
1114    #[primitive]
1115    #[doc = "The date that this appointment was initially created. This could be different to the meta.lastModified value on the initial entry, as this could have been before the resource was created on the FHIR server, and should remain unchanged over the lifespan of the appointment."]
1116    pub created: Option<Box<FHIRDateTime>>,
1117    #[primitive]
1118    #[doc = "Additional comments about the appointment."]
1119    pub comment: Option<Box<FHIRString>>,
1120    #[primitive]
1121    #[doc = "While Appointment.comment contains information for internal use, Appointment.patientInstructions is used to capture patient facing information about the Appointment (e.g. please bring your referral or fast from 8pm night before)."]
1122    pub patientInstruction: Option<Box<FHIRString>>,
1123    # [reference (targets = ["ServiceRequest"])]
1124    #[doc = "The service request this appointment is allocated to assess (e.g. incoming referral or procedure request)."]
1125    pub basedOn: Option<Vec<Box<Reference>>>,
1126    #[cardinality(min = 1usize)]
1127    #[doc = "List of participants involved in the appointment."]
1128    pub participant: Vec<AppointmentParticipant>,
1129    #[doc = "A set of date ranges (potentially including times) that the appointment is preferred to be scheduled within.\n\nThe duration (usually in minutes) could also be provided to indicate the length of the appointment to fill and populate the start/end times for the actual allocated time. However, in other situations the duration may be calculated by the scheduling system."]
1130    pub requestedPeriod: Option<Vec<Box<Period>>>,
1131}
1132#[derive(
1133    Clone,
1134    Reflect,
1135    Debug,
1136    Default,
1137    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
1138    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
1139)]
1140#[fhir_serialize_type = "resource"]
1141#[doc = "A reply to an appointment request for a patient and/or practitioner(s), such as a confirmation or rejection."]
1142pub struct AppointmentResponse {
1143    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
1144    pub id: Option<String>,
1145    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
1146    pub meta: Option<Box<Meta>>,
1147    #[primitive]
1148    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
1149    pub implicitRules: Option<Box<FHIRUri>>,
1150    #[primitive]
1151    #[doc = "The base language in which the resource is written."]
1152    pub language: Option<Box<FHIRCode>>,
1153    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
1154    pub text: Option<Box<Narrative>>,
1155    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
1156    pub contained: Option<Vec<Box<Resource>>>,
1157    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
1158    pub extension: Option<Vec<Box<Extension>>>,
1159    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
1160    pub modifierExtension: Option<Vec<Box<Extension>>>,
1161    #[rename_field = "identifier"]
1162    #[doc = "This records identifiers associated with this appointment response concern that are defined by business processes and/ or used to refer to it when a direct URL reference to the resource itself is not appropriate."]
1163    pub identifier_: Option<Vec<Box<Identifier>>>,
1164    # [reference (targets = ["Appointment"])]
1165    #[doc = "Appointment that this response is replying to."]
1166    pub appointment: Box<Reference>,
1167    #[primitive]
1168    #[doc = "Date/Time that the appointment is to take place, or requested new start time."]
1169    pub start: Option<Box<FHIRInstant>>,
1170    #[primitive]
1171    #[doc = "This may be either the same as the appointment request to confirm the details of the appointment, or alternately a new time to request a re-negotiation of the end time."]
1172    pub end: Option<Box<FHIRInstant>>,
1173    #[doc = "Role of participant in the appointment."]
1174    pub participantType: Option<Vec<Box<CodeableConcept>>>,
1175    # [reference (targets = ["Patient" , "Practitioner" , "PractitionerRole" , "RelatedPerson" , "Device" , "HealthcareService" , "Location"])]
1176    #[doc = "A Person, Location, HealthcareService, or Device that is participating in the appointment."]
1177    pub actor: Option<Box<Reference>>,
1178    #[primitive]
1179    #[doc = "Participation status of the participant. When the status is declined or tentative if the start/end times are different to the appointment, then these times should be interpreted as a requested time change. When the status is accepted, the times can either be the time of the appointment (as a confirmation of the time) or can be empty."]
1180    pub participantStatus: Box<terminology::Participationstatus>,
1181    #[primitive]
1182    #[doc = "Additional comments about the appointment."]
1183    pub comment: Option<Box<FHIRString>>,
1184}
1185#[derive(
1186    Clone,
1187    Reflect,
1188    Debug,
1189    Default,
1190    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
1191    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
1192)]
1193#[fhir_serialize_type = "complex"]
1194#[doc = "Logical network location for application activity, if the activity has a network location."]
1195pub struct AuditEventAgentNetwork {
1196    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
1197    pub id: Option<String>,
1198    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
1199    pub extension: Option<Vec<Box<Extension>>>,
1200    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
1201    pub modifierExtension: Option<Vec<Box<Extension>>>,
1202    #[primitive]
1203    #[doc = "An identifier for the network access point of the user device for the audit event."]
1204    pub address: Option<Box<FHIRString>>,
1205    #[rename_field = "type"]
1206    #[primitive]
1207    #[doc = "An identifier for the type of network access point that originated the audit event."]
1208    pub type_: Option<Box<terminology::NetworkType>>,
1209}
1210#[derive(
1211    Clone,
1212    Reflect,
1213    Debug,
1214    Default,
1215    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
1216    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
1217)]
1218#[fhir_serialize_type = "complex"]
1219#[doc = "An actor taking an active role in the event or activity that is logged."]
1220pub struct AuditEventAgent {
1221    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
1222    pub id: Option<String>,
1223    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
1224    pub extension: Option<Vec<Box<Extension>>>,
1225    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
1226    pub modifierExtension: Option<Vec<Box<Extension>>>,
1227    #[rename_field = "type"]
1228    #[doc = "Specification of the participation type the user plays when performing the event."]
1229    pub type_: Option<Box<CodeableConcept>>,
1230    #[doc = "The security role that the user was acting under, that come from local codes defined by the access control security system (e.g. RBAC, ABAC) used in the local context."]
1231    pub role: Option<Vec<Box<CodeableConcept>>>,
1232    # [reference (targets = ["PractitionerRole" , "Practitioner" , "Organization" , "Device" , "Patient" , "RelatedPerson"])]
1233    #[doc = "Reference to who this agent is that was involved in the event."]
1234    pub who: Option<Box<Reference>>,
1235    #[primitive]
1236    #[doc = "Alternative agent Identifier. For a human, this should be a user identifier text string from authentication system. This identifier would be one known to a common authentication system (e.g. single sign-on), if available."]
1237    pub altId: Option<Box<FHIRString>>,
1238    #[primitive]
1239    #[doc = "Human-meaningful name for the agent."]
1240    pub name: Option<Box<FHIRString>>,
1241    #[primitive]
1242    #[doc = "Indicator that the user is or is not the requestor, or initiator, for the event being audited."]
1243    pub requestor: Box<FHIRBoolean>,
1244    # [reference (targets = ["Location"])]
1245    #[doc = "Where the event occurred."]
1246    pub location: Option<Box<Reference>>,
1247    #[primitive]
1248    #[doc = "The policy or plan that authorized the activity being recorded. Typically, a single activity may have multiple applicable policies, such as patient consent, guarantor funding, etc. The policy would also indicate the security token used."]
1249    pub policy: Option<Vec<Box<FHIRUri>>>,
1250    #[doc = "Type of media involved. Used when the event is about exporting/importing onto media."]
1251    pub media: Option<Box<Coding>>,
1252    #[doc = "Logical network location for application activity, if the activity has a network location."]
1253    pub network: Option<AuditEventAgentNetwork>,
1254    #[doc = "The reason (purpose of use), specific to this agent, that was used during the event being recorded."]
1255    pub purposeOfUse: Option<Vec<Box<CodeableConcept>>>,
1256}
1257#[derive(
1258    Clone,
1259    Reflect,
1260    Debug,
1261    Default,
1262    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
1263    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
1264)]
1265#[fhir_serialize_type = "complex"]
1266#[doc = "The system that is reporting the event."]
1267pub struct AuditEventSource {
1268    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
1269    pub id: Option<String>,
1270    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
1271    pub extension: Option<Vec<Box<Extension>>>,
1272    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
1273    pub modifierExtension: Option<Vec<Box<Extension>>>,
1274    #[primitive]
1275    #[doc = "Logical source location within the healthcare enterprise network.  For example, a hospital or other provider location within a multi-entity provider group."]
1276    pub site: Option<Box<FHIRString>>,
1277    # [reference (targets = ["PractitionerRole" , "Practitioner" , "Organization" , "Device" , "Patient" , "RelatedPerson"])]
1278    #[doc = "Identifier of the source where the event was detected."]
1279    pub observer: Box<Reference>,
1280    #[rename_field = "type"]
1281    #[doc = "Code specifying the type of source where event originated."]
1282    pub type_: Option<Vec<Box<Coding>>>,
1283}
1284#[derive(
1285    Clone,
1286    Reflect,
1287    Debug,
1288    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
1289    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
1290)]
1291#[fhir_serialize_type = "typechoice"]
1292#[type_choice_field_name = "value"]
1293pub enum AuditEventEntityDetailValueTypeChoice {
1294    String(Box<FHIRString>),
1295    Base64Binary(Box<FHIRBase64Binary>),
1296}
1297impl Default for AuditEventEntityDetailValueTypeChoice {
1298    fn default() -> Self {
1299        AuditEventEntityDetailValueTypeChoice::String(Box::new(Default::default()))
1300    }
1301}
1302#[derive(
1303    Clone,
1304    Reflect,
1305    Debug,
1306    Default,
1307    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
1308    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
1309)]
1310#[fhir_serialize_type = "complex"]
1311#[doc = "Tagged value pairs for conveying additional information about the entity."]
1312pub struct AuditEventEntityDetail {
1313    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
1314    pub id: Option<String>,
1315    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
1316    pub extension: Option<Vec<Box<Extension>>>,
1317    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
1318    pub modifierExtension: Option<Vec<Box<Extension>>>,
1319    #[rename_field = "type"]
1320    #[primitive]
1321    #[doc = "The type of extra detail provided in the value."]
1322    pub type_: Box<FHIRString>,
1323    # [type_choice_variants (complex = [] , primitive = ["valueString" , "valueBase64Binary"])]
1324    #[doc = "The  value of the extra detail."]
1325    pub value: AuditEventEntityDetailValueTypeChoice,
1326}
1327#[derive(
1328    Clone,
1329    Reflect,
1330    Debug,
1331    Default,
1332    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
1333    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
1334)]
1335#[fhir_serialize_type = "complex"]
1336#[doc = "Specific instances of data or objects that have been accessed."]
1337pub struct AuditEventEntity {
1338    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
1339    pub id: Option<String>,
1340    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
1341    pub extension: Option<Vec<Box<Extension>>>,
1342    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
1343    pub modifierExtension: Option<Vec<Box<Extension>>>,
1344    # [reference (targets = ["Resource"])]
1345    #[doc = "Identifies a specific instance of the entity. The reference should be version specific."]
1346    pub what: Option<Box<Reference>>,
1347    #[rename_field = "type"]
1348    #[doc = "The type of the object that was involved in this audit event."]
1349    pub type_: Option<Box<Coding>>,
1350    #[doc = "Code representing the role the entity played in the event being audited."]
1351    pub role: Option<Box<Coding>>,
1352    #[doc = "Identifier for the data life-cycle stage for the entity."]
1353    pub lifecycle: Option<Box<Coding>>,
1354    #[doc = "Security labels for the identified entity."]
1355    pub securityLabel: Option<Vec<Box<Coding>>>,
1356    #[primitive]
1357    #[doc = "A name of the entity in the audit event."]
1358    pub name: Option<Box<FHIRString>>,
1359    #[primitive]
1360    #[doc = "Text that describes the entity in more detail."]
1361    pub description: Option<Box<FHIRString>>,
1362    #[primitive]
1363    #[doc = "The query parameters for a query-type entities."]
1364    pub query: Option<Box<FHIRBase64Binary>>,
1365    #[doc = "Tagged value pairs for conveying additional information about the entity."]
1366    pub detail: Option<Vec<AuditEventEntityDetail>>,
1367}
1368#[derive(
1369    Clone,
1370    Reflect,
1371    Debug,
1372    Default,
1373    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
1374    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
1375)]
1376#[fhir_serialize_type = "resource"]
1377#[doc = "A record of an event made for purposes of maintaining a security log. Typical uses include detection of intrusion attempts and monitoring for inappropriate usage."]
1378pub struct AuditEvent {
1379    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
1380    pub id: Option<String>,
1381    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
1382    pub meta: Option<Box<Meta>>,
1383    #[primitive]
1384    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
1385    pub implicitRules: Option<Box<FHIRUri>>,
1386    #[primitive]
1387    #[doc = "The base language in which the resource is written."]
1388    pub language: Option<Box<FHIRCode>>,
1389    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
1390    pub text: Option<Box<Narrative>>,
1391    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
1392    pub contained: Option<Vec<Box<Resource>>>,
1393    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
1394    pub extension: Option<Vec<Box<Extension>>>,
1395    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
1396    pub modifierExtension: Option<Vec<Box<Extension>>>,
1397    #[rename_field = "type"]
1398    #[doc = "Identifier for a family of the event.  For example, a menu item, program, rule, policy, function code, application name or URL. It identifies the performed function."]
1399    pub type_: Box<Coding>,
1400    #[doc = "Identifier for the category of event."]
1401    pub subtype: Option<Vec<Box<Coding>>>,
1402    #[primitive]
1403    #[doc = "Indicator for type of action performed during the event that generated the audit."]
1404    pub action: Option<Box<terminology::AuditEventAction>>,
1405    #[doc = "The period during which the activity occurred."]
1406    pub period: Option<Box<Period>>,
1407    #[primitive]
1408    #[doc = "The time when the event was recorded."]
1409    pub recorded: Box<FHIRInstant>,
1410    #[primitive]
1411    #[doc = "Indicates whether the event succeeded or failed."]
1412    pub outcome: Option<Box<terminology::AuditEventOutcome>>,
1413    #[primitive]
1414    #[doc = "A free text description of the outcome of the event."]
1415    pub outcomeDesc: Option<Box<FHIRString>>,
1416    #[doc = "The purposeOfUse (reason) that was used during the event being recorded."]
1417    pub purposeOfEvent: Option<Vec<Box<CodeableConcept>>>,
1418    #[cardinality(min = 1usize)]
1419    #[doc = "An actor taking an active role in the event or activity that is logged."]
1420    pub agent: Vec<AuditEventAgent>,
1421    #[doc = "The system that is reporting the event."]
1422    pub source: AuditEventSource,
1423    #[doc = "Specific instances of data or objects that have been accessed."]
1424    pub entity: Option<Vec<AuditEventEntity>>,
1425}
1426#[derive(
1427    Clone,
1428    Reflect,
1429    Debug,
1430    Default,
1431    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
1432    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
1433)]
1434#[fhir_serialize_type = "resource"]
1435#[doc = "Basic is used for handling concepts not yet defined in FHIR, narrative-only resources that don't map to an existing resource, and custom resources not appropriate for inclusion in the FHIR specification."]
1436pub struct Basic {
1437    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
1438    pub id: Option<String>,
1439    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
1440    pub meta: Option<Box<Meta>>,
1441    #[primitive]
1442    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
1443    pub implicitRules: Option<Box<FHIRUri>>,
1444    #[primitive]
1445    #[doc = "The base language in which the resource is written."]
1446    pub language: Option<Box<FHIRCode>>,
1447    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
1448    pub text: Option<Box<Narrative>>,
1449    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
1450    pub contained: Option<Vec<Box<Resource>>>,
1451    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
1452    pub extension: Option<Vec<Box<Extension>>>,
1453    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
1454    pub modifierExtension: Option<Vec<Box<Extension>>>,
1455    #[rename_field = "identifier"]
1456    #[doc = "Identifier assigned to the resource for business purposes, outside the context of FHIR."]
1457    pub identifier_: Option<Vec<Box<Identifier>>>,
1458    #[doc = "Identifies the 'type' of resource - equivalent to the resource name for other resources."]
1459    pub code: Box<CodeableConcept>,
1460    # [reference (targets = ["Resource"])]
1461    #[doc = "Identifies the patient, practitioner, device or any other resource that is the \"focus\" of this resource."]
1462    pub subject: Option<Box<Reference>>,
1463    #[primitive]
1464    #[doc = "Identifies when the resource was first created."]
1465    pub created: Option<Box<FHIRDate>>,
1466    # [reference (targets = ["Practitioner" , "PractitionerRole" , "Patient" , "RelatedPerson" , "Organization"])]
1467    #[doc = "Indicates who was responsible for creating the resource instance."]
1468    pub author: Option<Box<Reference>>,
1469}
1470#[derive(
1471    Clone,
1472    Reflect,
1473    Debug,
1474    Default,
1475    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
1476    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
1477)]
1478#[fhir_serialize_type = "resource"]
1479#[doc = "A resource that represents the data of a single raw artifact as digital content accessible in its native format.  A Binary resource can contain any content, whether text, image, pdf, zip archive, etc."]
1480pub struct Binary {
1481    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
1482    pub id: Option<String>,
1483    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
1484    pub meta: Option<Box<Meta>>,
1485    #[primitive]
1486    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
1487    pub implicitRules: Option<Box<FHIRUri>>,
1488    #[primitive]
1489    #[doc = "The base language in which the resource is written."]
1490    pub language: Option<Box<FHIRCode>>,
1491    #[primitive]
1492    #[doc = "MimeType of the binary content represented as a standard MimeType (BCP 13)."]
1493    pub contentType: Box<FHIRCode>,
1494    # [reference (targets = ["Resource"])]
1495    #[doc = "This element identifies another resource that can be used as a proxy of the security sensitivity to use when deciding and enforcing access control rules for the Binary resource. Given that the Binary resource contains very few elements that can be used to determine the sensitivity of the data and relationships to individuals, the referenced resource stands in as a proxy equivalent for this purpose. This referenced resource may be related to the Binary (e.g. Media, DocumentReference), or may be some non-related Resource purely as a security proxy. E.g. to identify that the binary resource relates to a patient, and access should only be granted to applications that have access to the patient."]
1496    pub securityContext: Option<Box<Reference>>,
1497    #[primitive]
1498    #[doc = "The actual content, base64 encoded."]
1499    pub data: Option<Box<FHIRBase64Binary>>,
1500}
1501#[derive(
1502    Clone,
1503    Reflect,
1504    Debug,
1505    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
1506    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
1507)]
1508#[fhir_serialize_type = "typechoice"]
1509#[type_choice_field_name = "collected"]
1510pub enum BiologicallyDerivedProductCollectionCollectedTypeChoice {
1511    DateTime(Box<FHIRDateTime>),
1512    Period(Box<Period>),
1513}
1514impl Default for BiologicallyDerivedProductCollectionCollectedTypeChoice {
1515    fn default() -> Self {
1516        BiologicallyDerivedProductCollectionCollectedTypeChoice::DateTime(Box::new(
1517            Default::default(),
1518        ))
1519    }
1520}
1521#[derive(
1522    Clone,
1523    Reflect,
1524    Debug,
1525    Default,
1526    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
1527    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
1528)]
1529#[fhir_serialize_type = "complex"]
1530#[doc = "How this product was collected."]
1531pub struct BiologicallyDerivedProductCollection {
1532    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
1533    pub id: Option<String>,
1534    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
1535    pub extension: Option<Vec<Box<Extension>>>,
1536    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
1537    pub modifierExtension: Option<Vec<Box<Extension>>>,
1538    # [reference (targets = ["Practitioner" , "PractitionerRole"])]
1539    #[doc = "Healthcare professional who is performing the collection."]
1540    pub collector: Option<Box<Reference>>,
1541    # [reference (targets = ["Patient" , "Organization"])]
1542    #[doc = "The patient or entity, such as a hospital or vendor in the case of a processed/manipulated/manufactured product, providing the product."]
1543    pub source: Option<Box<Reference>>,
1544    # [type_choice_variants (complex = ["collectedPeriod"] , primitive = ["collectedDateTime"])]
1545    #[doc = "Time of product collection."]
1546    pub collected: Option<BiologicallyDerivedProductCollectionCollectedTypeChoice>,
1547}
1548#[derive(
1549    Clone,
1550    Reflect,
1551    Debug,
1552    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
1553    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
1554)]
1555#[fhir_serialize_type = "typechoice"]
1556#[type_choice_field_name = "time"]
1557pub enum BiologicallyDerivedProductProcessingTimeTypeChoice {
1558    DateTime(Box<FHIRDateTime>),
1559    Period(Box<Period>),
1560}
1561impl Default for BiologicallyDerivedProductProcessingTimeTypeChoice {
1562    fn default() -> Self {
1563        BiologicallyDerivedProductProcessingTimeTypeChoice::DateTime(Box::new(Default::default()))
1564    }
1565}
1566#[derive(
1567    Clone,
1568    Reflect,
1569    Debug,
1570    Default,
1571    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
1572    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
1573)]
1574#[fhir_serialize_type = "complex"]
1575#[doc = "Any processing of the product during collection that does not change the fundamental nature of the product. For example adding anti-coagulants during the collection of Peripheral Blood Stem Cells."]
1576pub struct BiologicallyDerivedProductProcessing {
1577    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
1578    pub id: Option<String>,
1579    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
1580    pub extension: Option<Vec<Box<Extension>>>,
1581    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
1582    pub modifierExtension: Option<Vec<Box<Extension>>>,
1583    #[primitive]
1584    #[doc = "Description of of processing."]
1585    pub description: Option<Box<FHIRString>>,
1586    #[doc = "Procesing code."]
1587    pub procedure: Option<Box<CodeableConcept>>,
1588    # [reference (targets = ["Substance"])]
1589    #[doc = "Substance added during processing."]
1590    pub additive: Option<Box<Reference>>,
1591    # [type_choice_variants (complex = ["timePeriod"] , primitive = ["timeDateTime"])]
1592    #[doc = "Time of processing."]
1593    pub time: Option<BiologicallyDerivedProductProcessingTimeTypeChoice>,
1594}
1595#[derive(
1596    Clone,
1597    Reflect,
1598    Debug,
1599    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
1600    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
1601)]
1602#[fhir_serialize_type = "typechoice"]
1603#[type_choice_field_name = "time"]
1604pub enum BiologicallyDerivedProductManipulationTimeTypeChoice {
1605    DateTime(Box<FHIRDateTime>),
1606    Period(Box<Period>),
1607}
1608impl Default for BiologicallyDerivedProductManipulationTimeTypeChoice {
1609    fn default() -> Self {
1610        BiologicallyDerivedProductManipulationTimeTypeChoice::DateTime(Box::new(Default::default()))
1611    }
1612}
1613#[derive(
1614    Clone,
1615    Reflect,
1616    Debug,
1617    Default,
1618    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
1619    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
1620)]
1621#[fhir_serialize_type = "complex"]
1622#[doc = "Any manipulation of product post-collection that is intended to alter the product.  For example a buffy-coat enrichment or CD8 reduction of Peripheral Blood Stem Cells to make it more suitable for infusion."]
1623pub struct BiologicallyDerivedProductManipulation {
1624    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
1625    pub id: Option<String>,
1626    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
1627    pub extension: Option<Vec<Box<Extension>>>,
1628    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
1629    pub modifierExtension: Option<Vec<Box<Extension>>>,
1630    #[primitive]
1631    #[doc = "Description of manipulation."]
1632    pub description: Option<Box<FHIRString>>,
1633    # [type_choice_variants (complex = ["timePeriod"] , primitive = ["timeDateTime"])]
1634    #[doc = "Time of manipulation."]
1635    pub time: Option<BiologicallyDerivedProductManipulationTimeTypeChoice>,
1636}
1637#[derive(
1638    Clone,
1639    Reflect,
1640    Debug,
1641    Default,
1642    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
1643    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
1644)]
1645#[fhir_serialize_type = "complex"]
1646#[doc = "Product storage."]
1647pub struct BiologicallyDerivedProductStorage {
1648    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
1649    pub id: Option<String>,
1650    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
1651    pub extension: Option<Vec<Box<Extension>>>,
1652    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
1653    pub modifierExtension: Option<Vec<Box<Extension>>>,
1654    #[primitive]
1655    #[doc = "Description of storage."]
1656    pub description: Option<Box<FHIRString>>,
1657    #[primitive]
1658    #[doc = "Storage temperature."]
1659    pub temperature: Option<Box<FHIRDecimal>>,
1660    #[primitive]
1661    #[doc = "Temperature scale used."]
1662    pub scale: Option<Box<terminology::ProductStorageScale>>,
1663    #[doc = "Storage timeperiod."]
1664    pub duration: Option<Box<Period>>,
1665}
1666#[derive(
1667    Clone,
1668    Reflect,
1669    Debug,
1670    Default,
1671    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
1672    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
1673)]
1674#[fhir_serialize_type = "resource"]
1675#[doc = "A material substance originating from a biological entity intended to be transplanted or infused\ninto another (possibly the same) biological entity."]
1676pub struct BiologicallyDerivedProduct {
1677    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
1678    pub id: Option<String>,
1679    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
1680    pub meta: Option<Box<Meta>>,
1681    #[primitive]
1682    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
1683    pub implicitRules: Option<Box<FHIRUri>>,
1684    #[primitive]
1685    #[doc = "The base language in which the resource is written."]
1686    pub language: Option<Box<FHIRCode>>,
1687    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
1688    pub text: Option<Box<Narrative>>,
1689    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
1690    pub contained: Option<Vec<Box<Resource>>>,
1691    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
1692    pub extension: Option<Vec<Box<Extension>>>,
1693    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
1694    pub modifierExtension: Option<Vec<Box<Extension>>>,
1695    #[rename_field = "identifier"]
1696    #[doc = "This records identifiers associated with this biologically derived product instance that are defined by business processes and/or used to refer to it when a direct URL reference to the resource itself is not appropriate (e.g. in CDA documents, or in written / printed documentation)."]
1697    pub identifier_: Option<Vec<Box<Identifier>>>,
1698    #[primitive]
1699    #[doc = "Broad category of this product."]
1700    pub productCategory: Option<Box<terminology::ProductCategory>>,
1701    #[doc = "A code that identifies the kind of this biologically derived product (SNOMED Ctcode)."]
1702    pub productCode: Option<Box<CodeableConcept>>,
1703    #[primitive]
1704    #[doc = "Whether the product is currently available."]
1705    pub status: Option<Box<terminology::ProductStatus>>,
1706    # [reference (targets = ["ServiceRequest"])]
1707    #[doc = "Procedure request to obtain this biologically derived product."]
1708    pub request: Option<Vec<Box<Reference>>>,
1709    #[primitive]
1710    #[doc = "Number of discrete units within this product."]
1711    pub quantity: Option<Box<FHIRInteger>>,
1712    # [reference (targets = ["BiologicallyDerivedProduct"])]
1713    #[doc = "Parent product (if any)."]
1714    pub parent: Option<Vec<Box<Reference>>>,
1715    #[doc = "How this product was collected."]
1716    pub collection: Option<BiologicallyDerivedProductCollection>,
1717    #[doc = "Any processing of the product during collection that does not change the fundamental nature of the product. For example adding anti-coagulants during the collection of Peripheral Blood Stem Cells."]
1718    pub processing: Option<Vec<BiologicallyDerivedProductProcessing>>,
1719    #[doc = "Any manipulation of product post-collection that is intended to alter the product.  For example a buffy-coat enrichment or CD8 reduction of Peripheral Blood Stem Cells to make it more suitable for infusion."]
1720    pub manipulation: Option<BiologicallyDerivedProductManipulation>,
1721    #[doc = "Product storage."]
1722    pub storage: Option<Vec<BiologicallyDerivedProductStorage>>,
1723}
1724#[derive(
1725    Clone,
1726    Reflect,
1727    Debug,
1728    Default,
1729    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
1730    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
1731)]
1732#[fhir_serialize_type = "resource"]
1733#[doc = "Record details about an anatomical structure.  This resource may be used when a coded concept does not provide the necessary detail needed for the use case."]
1734pub struct BodyStructure {
1735    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
1736    pub id: Option<String>,
1737    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
1738    pub meta: Option<Box<Meta>>,
1739    #[primitive]
1740    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
1741    pub implicitRules: Option<Box<FHIRUri>>,
1742    #[primitive]
1743    #[doc = "The base language in which the resource is written."]
1744    pub language: Option<Box<FHIRCode>>,
1745    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
1746    pub text: Option<Box<Narrative>>,
1747    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
1748    pub contained: Option<Vec<Box<Resource>>>,
1749    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
1750    pub extension: Option<Vec<Box<Extension>>>,
1751    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
1752    pub modifierExtension: Option<Vec<Box<Extension>>>,
1753    #[rename_field = "identifier"]
1754    #[doc = "Identifier for this instance of the anatomical structure."]
1755    pub identifier_: Option<Vec<Box<Identifier>>>,
1756    #[primitive]
1757    #[doc = "Whether this body site is in active use."]
1758    pub active: Option<Box<FHIRBoolean>>,
1759    #[doc = "The kind of structure being represented by the body structure at `BodyStructure.location`.  This can define both normal and abnormal morphologies."]
1760    pub morphology: Option<Box<CodeableConcept>>,
1761    #[doc = "The anatomical location or region of the specimen, lesion, or body structure."]
1762    pub location: Option<Box<CodeableConcept>>,
1763    #[doc = "Qualifier to refine the anatomical location.  These include qualifiers for laterality, relative location, directionality, number, and plane."]
1764    pub locationQualifier: Option<Vec<Box<CodeableConcept>>>,
1765    #[primitive]
1766    #[doc = "A summary, characterization or explanation of the body structure."]
1767    pub description: Option<Box<FHIRString>>,
1768    #[doc = "Image or images used to identify a location."]
1769    pub image: Option<Vec<Box<Attachment>>>,
1770    # [reference (targets = ["Patient"])]
1771    #[doc = "The person to which the body site belongs."]
1772    pub patient: Box<Reference>,
1773}
1774#[derive(
1775    Clone,
1776    Reflect,
1777    Debug,
1778    Default,
1779    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
1780    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
1781)]
1782#[fhir_serialize_type = "complex"]
1783#[doc = "A series of links that provide context to this bundle."]
1784pub struct BundleLink {
1785    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
1786    pub id: Option<String>,
1787    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
1788    pub extension: Option<Vec<Box<Extension>>>,
1789    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
1790    pub modifierExtension: Option<Vec<Box<Extension>>>,
1791    #[primitive]
1792    #[doc = "A name which details the functional use for this link - see [http://www.iana.org/assignments/link-relations/link-relations.xhtml#link-relations-1](http://www.iana.org/assignments/link-relations/link-relations.xhtml#link-relations-1)."]
1793    pub relation: Box<FHIRString>,
1794    #[primitive]
1795    #[doc = "The reference details for the link."]
1796    pub url: Box<FHIRUri>,
1797}
1798#[derive(
1799    Clone,
1800    Reflect,
1801    Debug,
1802    Default,
1803    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
1804    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
1805)]
1806#[fhir_serialize_type = "complex"]
1807#[doc = "Information about the search process that lead to the creation of this entry."]
1808pub struct BundleEntrySearch {
1809    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
1810    pub id: Option<String>,
1811    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
1812    pub extension: Option<Vec<Box<Extension>>>,
1813    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
1814    pub modifierExtension: Option<Vec<Box<Extension>>>,
1815    #[primitive]
1816    #[doc = "Why this entry is in the result set - whether it's included as a match or because of an _include requirement, or to convey information or warning information about the search process."]
1817    pub mode: Option<Box<terminology::SearchEntryMode>>,
1818    #[primitive]
1819    #[doc = "When searching, the server's search ranking score for the entry."]
1820    pub score: Option<Box<FHIRDecimal>>,
1821}
1822#[derive(
1823    Clone,
1824    Reflect,
1825    Debug,
1826    Default,
1827    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
1828    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
1829)]
1830#[fhir_serialize_type = "complex"]
1831#[doc = "Additional information about how this entry should be processed as part of a transaction or batch.  For history, it shows how the entry was processed to create the version contained in the entry."]
1832pub struct BundleEntryRequest {
1833    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
1834    pub id: Option<String>,
1835    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
1836    pub extension: Option<Vec<Box<Extension>>>,
1837    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
1838    pub modifierExtension: Option<Vec<Box<Extension>>>,
1839    #[primitive]
1840    #[doc = "In a transaction or batch, this is the HTTP action to be executed for this entry. In a history bundle, this indicates the HTTP action that occurred."]
1841    pub method: Box<terminology::HttpVerb>,
1842    #[primitive]
1843    #[doc = "The URL for this entry, relative to the root (the address to which the request is posted)."]
1844    pub url: Box<FHIRUri>,
1845    #[primitive]
1846    #[doc = "If the ETag values match, return a 304 Not Modified status. See the API documentation for [\"Conditional Read\"](http.html#cread)."]
1847    pub ifNoneMatch: Option<Box<FHIRString>>,
1848    #[primitive]
1849    #[doc = "Only perform the operation if the last updated date matches. See the API documentation for [\"Conditional Read\"](http.html#cread)."]
1850    pub ifModifiedSince: Option<Box<FHIRInstant>>,
1851    #[primitive]
1852    #[doc = "Only perform the operation if the Etag value matches. For more information, see the API section [\"Managing Resource Contention\"](http.html#concurrency)."]
1853    pub ifMatch: Option<Box<FHIRString>>,
1854    #[primitive]
1855    #[doc = "Instruct the server not to perform the create if a specified resource already exists. For further information, see the API documentation for [\"Conditional Create\"](http.html#ccreate). This is just the query portion of the URL - what follows the \"?\" (not including the \"?\")."]
1856    pub ifNoneExist: Option<Box<FHIRString>>,
1857}
1858#[derive(
1859    Clone,
1860    Reflect,
1861    Debug,
1862    Default,
1863    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
1864    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
1865)]
1866#[fhir_serialize_type = "complex"]
1867#[doc = "Indicates the results of processing the corresponding 'request' entry in the batch or transaction being responded to or what the results of an operation where when returning history."]
1868pub struct BundleEntryResponse {
1869    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
1870    pub id: Option<String>,
1871    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
1872    pub extension: Option<Vec<Box<Extension>>>,
1873    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
1874    pub modifierExtension: Option<Vec<Box<Extension>>>,
1875    #[primitive]
1876    #[doc = "The status code returned by processing this entry. The status SHALL start with a 3 digit HTTP code (e.g. 404) and may contain the standard HTTP description associated with the status code."]
1877    pub status: Box<FHIRString>,
1878    #[primitive]
1879    #[doc = "The location header created by processing this operation, populated if the operation returns a location."]
1880    pub location: Option<Box<FHIRUri>>,
1881    #[primitive]
1882    #[doc = "The Etag for the resource, if the operation for the entry produced a versioned resource (see [Resource Metadata and Versioning](http.html#versioning) and [Managing Resource Contention](http.html#concurrency))."]
1883    pub etag: Option<Box<FHIRString>>,
1884    #[primitive]
1885    #[doc = "The date/time that the resource was modified on the server."]
1886    pub lastModified: Option<Box<FHIRInstant>>,
1887    #[doc = "An OperationOutcome containing hints and warnings produced as part of processing this entry in a batch or transaction."]
1888    pub outcome: Option<Box<Resource>>,
1889}
1890#[derive(
1891    Clone,
1892    Reflect,
1893    Debug,
1894    Default,
1895    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
1896    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
1897)]
1898#[fhir_serialize_type = "complex"]
1899#[doc = "An entry in a bundle resource - will either contain a resource or information about a resource (transactions and history only)."]
1900pub struct BundleEntry {
1901    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
1902    pub id: Option<String>,
1903    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
1904    pub extension: Option<Vec<Box<Extension>>>,
1905    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
1906    pub modifierExtension: Option<Vec<Box<Extension>>>,
1907    #[doc = "A series of links that provide context to this entry."]
1908    pub link: Option<Vec<BundleLink>>,
1909    #[primitive]
1910    #[doc = "The Absolute URL for the resource.  The fullUrl SHALL NOT disagree with the id in the resource - i.e. if the fullUrl is not a urn:uuid, the URL shall be version-independent URL consistent with the Resource.id. The fullUrl is a version independent reference to the resource. The fullUrl element SHALL have a value except that: \n* fullUrl can be empty on a POST (although it does not need to when specifying a temporary id for reference in the bundle)\n* Results from operations might involve resources that are not identified."]
1911    pub fullUrl: Option<Box<FHIRUri>>,
1912    #[doc = "The Resource for the entry. The purpose/meaning of the resource is determined by the Bundle.type."]
1913    pub resource: Option<Box<Resource>>,
1914    #[doc = "Information about the search process that lead to the creation of this entry."]
1915    pub search: Option<BundleEntrySearch>,
1916    #[doc = "Additional information about how this entry should be processed as part of a transaction or batch.  For history, it shows how the entry was processed to create the version contained in the entry."]
1917    pub request: Option<BundleEntryRequest>,
1918    #[doc = "Indicates the results of processing the corresponding 'request' entry in the batch or transaction being responded to or what the results of an operation where when returning history."]
1919    pub response: Option<BundleEntryResponse>,
1920}
1921#[derive(
1922    Clone,
1923    Reflect,
1924    Debug,
1925    Default,
1926    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
1927    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
1928)]
1929#[fhir_serialize_type = "resource"]
1930#[doc = "A container for a collection of resources."]
1931pub struct Bundle {
1932    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
1933    pub id: Option<String>,
1934    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
1935    pub meta: Option<Box<Meta>>,
1936    #[primitive]
1937    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
1938    pub implicitRules: Option<Box<FHIRUri>>,
1939    #[primitive]
1940    #[doc = "The base language in which the resource is written."]
1941    pub language: Option<Box<FHIRCode>>,
1942    #[rename_field = "identifier"]
1943    #[doc = "A persistent identifier for the bundle that won't change as a bundle is copied from server to server."]
1944    pub identifier_: Option<Box<Identifier>>,
1945    #[rename_field = "type"]
1946    #[primitive]
1947    #[doc = "Indicates the purpose of this bundle - how it is intended to be used."]
1948    pub type_: Box<terminology::BundleType>,
1949    #[primitive]
1950    #[doc = "The date/time that the bundle was assembled - i.e. when the resources were placed in the bundle."]
1951    pub timestamp: Option<Box<FHIRInstant>>,
1952    #[primitive]
1953    #[doc = "If a set of search matches, this is the total number of entries of type 'match' across all pages in the search.  It does not include search.mode = 'include' or 'outcome' entries and it does not provide a count of the number of entries in the Bundle."]
1954    pub total: Option<Box<FHIRUnsignedInt>>,
1955    #[doc = "A series of links that provide context to this bundle."]
1956    pub link: Option<Vec<BundleLink>>,
1957    #[doc = "An entry in a bundle resource - will either contain a resource or information about a resource (transactions and history only)."]
1958    pub entry: Option<Vec<BundleEntry>>,
1959    #[doc = "Digital Signature - base64 encoded. XML-DSig or a JWT."]
1960    pub signature: Option<Box<Signature>>,
1961}
1962#[derive(
1963    Clone,
1964    Reflect,
1965    Debug,
1966    Default,
1967    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
1968    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
1969)]
1970#[fhir_serialize_type = "complex"]
1971#[doc = "Software that is covered by this capability statement.  It is used when the capability statement describes the capabilities of a particular software version, independent of an installation."]
1972pub struct CapabilityStatementSoftware {
1973    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
1974    pub id: Option<String>,
1975    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
1976    pub extension: Option<Vec<Box<Extension>>>,
1977    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
1978    pub modifierExtension: Option<Vec<Box<Extension>>>,
1979    #[primitive]
1980    #[doc = "Name the software is known by."]
1981    pub name: Box<FHIRString>,
1982    #[primitive]
1983    #[doc = "The version identifier for the software covered by this statement."]
1984    pub version: Option<Box<FHIRString>>,
1985    #[primitive]
1986    #[doc = "Date this version of the software was released."]
1987    pub releaseDate: Option<Box<FHIRDateTime>>,
1988}
1989#[derive(
1990    Clone,
1991    Reflect,
1992    Debug,
1993    Default,
1994    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
1995    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
1996)]
1997#[fhir_serialize_type = "complex"]
1998#[doc = "Identifies a specific implementation instance that is described by the capability statement - i.e. a particular installation, rather than the capabilities of a software program."]
1999pub struct CapabilityStatementImplementation {
2000    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
2001    pub id: Option<String>,
2002    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
2003    pub extension: Option<Vec<Box<Extension>>>,
2004    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
2005    pub modifierExtension: Option<Vec<Box<Extension>>>,
2006    #[primitive]
2007    #[doc = "Information about the specific installation that this capability statement relates to."]
2008    pub description: Box<FHIRString>,
2009    #[primitive]
2010    #[doc = "An absolute base URL for the implementation.  This forms the base for REST interfaces as well as the mailbox and document interfaces."]
2011    pub url: Option<Box<FHIRUrl>>,
2012    # [reference (targets = ["Organization"])]
2013    #[doc = "The organization responsible for the management of the instance and oversight of the data on the server at the specified URL."]
2014    pub custodian: Option<Box<Reference>>,
2015}
2016#[derive(
2017    Clone,
2018    Reflect,
2019    Debug,
2020    Default,
2021    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
2022    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
2023)]
2024#[fhir_serialize_type = "complex"]
2025#[doc = "Information about security implementation from an interface perspective - what a client needs to know."]
2026pub struct CapabilityStatementRestSecurity {
2027    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
2028    pub id: Option<String>,
2029    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
2030    pub extension: Option<Vec<Box<Extension>>>,
2031    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
2032    pub modifierExtension: Option<Vec<Box<Extension>>>,
2033    #[primitive]
2034    #[doc = "Server adds CORS headers when responding to requests - this enables Javascript applications to use the server."]
2035    pub cors: Option<Box<FHIRBoolean>>,
2036    #[doc = "Types of security services that are supported/required by the system."]
2037    pub service: Option<Vec<Box<CodeableConcept>>>,
2038    #[primitive]
2039    #[doc = "General description of how security works."]
2040    pub description: Option<Box<FHIRMarkdown>>,
2041}
2042#[derive(
2043    Clone,
2044    Reflect,
2045    Debug,
2046    Default,
2047    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
2048    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
2049)]
2050#[fhir_serialize_type = "complex"]
2051#[doc = "Identifies a restful operation supported by the solution."]
2052pub struct CapabilityStatementRestResourceInteraction {
2053    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
2054    pub id: Option<String>,
2055    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
2056    pub extension: Option<Vec<Box<Extension>>>,
2057    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
2058    pub modifierExtension: Option<Vec<Box<Extension>>>,
2059    #[primitive]
2060    #[doc = "Coded identifier of the operation, supported by the system resource."]
2061    pub code: Box<terminology::TypeRestfulInteraction>,
2062    #[primitive]
2063    #[doc = "Guidance specific to the implementation of this operation, such as 'delete is a logical delete' or 'updates are only allowed with version id' or 'creates permitted from pre-authorized certificates only'."]
2064    pub documentation: Option<Box<FHIRMarkdown>>,
2065}
2066#[derive(
2067    Clone,
2068    Reflect,
2069    Debug,
2070    Default,
2071    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
2072    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
2073)]
2074#[fhir_serialize_type = "complex"]
2075#[doc = "Search parameters for implementations to support and/or make use of - either references to ones defined in the specification, or additional ones defined for/by the implementation."]
2076pub struct CapabilityStatementRestResourceSearchParam {
2077    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
2078    pub id: Option<String>,
2079    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
2080    pub extension: Option<Vec<Box<Extension>>>,
2081    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
2082    pub modifierExtension: Option<Vec<Box<Extension>>>,
2083    #[primitive]
2084    #[doc = "The name of the search parameter used in the interface."]
2085    pub name: Box<FHIRString>,
2086    #[primitive]
2087    #[doc = "An absolute URI that is a formal reference to where this parameter was first defined, so that a client can be confident of the meaning of the search parameter (a reference to [SearchParameter.url](searchparameter-definitions.html#SearchParameter.url)). This element SHALL be populated if the search parameter refers to a SearchParameter defined by the FHIR core specification or externally defined IGs."]
2088    pub definition: Option<Box<FHIRCanonical>>,
2089    #[rename_field = "type"]
2090    #[primitive]
2091    #[doc = "The type of value a search parameter refers to, and how the content is interpreted."]
2092    pub type_: Box<terminology::SearchParamType>,
2093    #[primitive]
2094    #[doc = "This allows documentation of any distinct behaviors about how the search parameter is used.  For example, text matching algorithms."]
2095    pub documentation: Option<Box<FHIRMarkdown>>,
2096}
2097#[derive(
2098    Clone,
2099    Reflect,
2100    Debug,
2101    Default,
2102    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
2103    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
2104)]
2105#[fhir_serialize_type = "complex"]
2106#[doc = "Definition of an operation or a named query together with its parameters and their meaning and type. Consult the definition of the operation for details about how to invoke the operation, and the parameters."]
2107pub struct CapabilityStatementRestResourceOperation {
2108    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
2109    pub id: Option<String>,
2110    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
2111    pub extension: Option<Vec<Box<Extension>>>,
2112    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
2113    pub modifierExtension: Option<Vec<Box<Extension>>>,
2114    #[primitive]
2115    #[doc = "The name of the operation or query. For an operation, this is the name  prefixed with $ and used in the URL. For a query, this is the name used in the _query parameter when the query is called."]
2116    pub name: Box<FHIRString>,
2117    #[primitive]
2118    #[doc = "Where the formal definition can be found. If a server references the base definition of an Operation (i.e. from the specification itself such as ```http://hl7.org/fhir/OperationDefinition/ValueSet-expand```), that means it supports the full capabilities of the operation - e.g. both GET and POST invocation.  If it only supports a subset, it must define its own custom [OperationDefinition](operationdefinition.html#) with a 'base' of the original OperationDefinition.  The custom definition would describe the specific subset of functionality supported."]
2119    pub definition: Box<FHIRCanonical>,
2120    #[primitive]
2121    #[doc = "Documentation that describes anything special about the operation behavior, possibly detailing different behavior for system, type and instance-level invocation of the operation."]
2122    pub documentation: Option<Box<FHIRMarkdown>>,
2123}
2124#[derive(
2125    Clone,
2126    Reflect,
2127    Debug,
2128    Default,
2129    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
2130    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
2131)]
2132#[fhir_serialize_type = "complex"]
2133#[doc = "A specification of the restful capabilities of the solution for a specific resource type."]
2134pub struct CapabilityStatementRestResource {
2135    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
2136    pub id: Option<String>,
2137    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
2138    pub extension: Option<Vec<Box<Extension>>>,
2139    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
2140    pub modifierExtension: Option<Vec<Box<Extension>>>,
2141    #[rename_field = "type"]
2142    #[primitive]
2143    #[doc = "A type of resource exposed via the restful interface."]
2144    pub type_: Box<terminology::ResourceTypes>,
2145    #[primitive]
2146    #[doc = "A specification of the profile that describes the solution's overall support for the resource, including any constraints on cardinality, bindings, lengths or other limitations. See further discussion in [Using Profiles](profiling.html#profile-uses)."]
2147    pub profile: Option<Box<FHIRCanonical>>,
2148    #[primitive]
2149    #[doc = "A list of profiles that represent different use cases supported by the system. For a server, \"supported by the system\" means the system hosts/produces a set of resources that are conformant to a particular profile, and allows clients that use its services to search using this profile and to find appropriate data. For a client, it means the system will search by this profile and process data according to the guidance implicit in the profile. See further discussion in [Using Profiles](profiling.html#profile-uses)."]
2150    pub supportedProfile: Option<Vec<Box<FHIRCanonical>>>,
2151    #[primitive]
2152    #[doc = "Additional information about the resource type used by the system."]
2153    pub documentation: Option<Box<FHIRMarkdown>>,
2154    #[doc = "Identifies a restful operation supported by the solution."]
2155    pub interaction: Option<Vec<CapabilityStatementRestResourceInteraction>>,
2156    #[primitive]
2157    #[doc = "This field is set to no-version to specify that the system does not support (server) or use (client) versioning for this resource type. If this has some other value, the server must at least correctly track and populate the versionId meta-property on resources. If the value is 'versioned-update', then the server supports all the versioning features, including using e-tags for version integrity in the API."]
2158    pub versioning: Option<Box<terminology::VersioningPolicy>>,
2159    #[primitive]
2160    #[doc = "A flag for whether the server is able to return past versions as part of the vRead operation."]
2161    pub readHistory: Option<Box<FHIRBoolean>>,
2162    #[primitive]
2163    #[doc = "A flag to indicate that the server allows or needs to allow the client to create new identities on the server (that is, the client PUTs to a location where there is no existing resource). Allowing this operation means that the server allows the client to create new identities on the server."]
2164    pub updateCreate: Option<Box<FHIRBoolean>>,
2165    #[primitive]
2166    #[doc = "A flag that indicates that the server supports conditional create."]
2167    pub conditionalCreate: Option<Box<FHIRBoolean>>,
2168    #[primitive]
2169    #[doc = "A code that indicates how the server supports conditional read."]
2170    pub conditionalRead: Option<Box<terminology::ConditionalReadStatus>>,
2171    #[primitive]
2172    #[doc = "A flag that indicates that the server supports conditional update."]
2173    pub conditionalUpdate: Option<Box<FHIRBoolean>>,
2174    #[primitive]
2175    #[doc = "A code that indicates how the server supports conditional delete."]
2176    pub conditionalDelete: Option<Box<terminology::ConditionalDeleteStatus>>,
2177    #[primitive]
2178    #[doc = "A set of flags that defines how references are supported."]
2179    pub referencePolicy: Option<Vec<Box<terminology::ReferenceHandlingPolicy>>>,
2180    #[primitive]
2181    #[doc = "A list of _include values supported by the server."]
2182    pub searchInclude: Option<Vec<Box<FHIRString>>>,
2183    #[primitive]
2184    #[doc = "A list of _revinclude (reverse include) values supported by the server."]
2185    pub searchRevInclude: Option<Vec<Box<FHIRString>>>,
2186    #[doc = "Search parameters for implementations to support and/or make use of - either references to ones defined in the specification, or additional ones defined for/by the implementation."]
2187    pub searchParam: Option<Vec<CapabilityStatementRestResourceSearchParam>>,
2188    #[doc = "Definition of an operation or a named query together with its parameters and their meaning and type. Consult the definition of the operation for details about how to invoke the operation, and the parameters."]
2189    pub operation: Option<Vec<CapabilityStatementRestResourceOperation>>,
2190}
2191#[derive(
2192    Clone,
2193    Reflect,
2194    Debug,
2195    Default,
2196    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
2197    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
2198)]
2199#[fhir_serialize_type = "complex"]
2200#[doc = "A specification of restful operations supported by the system."]
2201pub struct CapabilityStatementRestInteraction {
2202    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
2203    pub id: Option<String>,
2204    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
2205    pub extension: Option<Vec<Box<Extension>>>,
2206    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
2207    pub modifierExtension: Option<Vec<Box<Extension>>>,
2208    #[primitive]
2209    #[doc = "A coded identifier of the operation, supported by the system."]
2210    pub code: Box<terminology::SystemRestfulInteraction>,
2211    #[primitive]
2212    #[doc = "Guidance specific to the implementation of this operation, such as limitations on the kind of transactions allowed, or information about system wide search is implemented."]
2213    pub documentation: Option<Box<FHIRMarkdown>>,
2214}
2215#[derive(
2216    Clone,
2217    Reflect,
2218    Debug,
2219    Default,
2220    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
2221    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
2222)]
2223#[fhir_serialize_type = "complex"]
2224#[doc = "A definition of the restful capabilities of the solution, if any."]
2225pub struct CapabilityStatementRest {
2226    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
2227    pub id: Option<String>,
2228    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
2229    pub extension: Option<Vec<Box<Extension>>>,
2230    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
2231    pub modifierExtension: Option<Vec<Box<Extension>>>,
2232    #[primitive]
2233    #[doc = "Identifies whether this portion of the statement is describing the ability to initiate or receive restful operations."]
2234    pub mode: Box<terminology::RestfulCapabilityMode>,
2235    #[primitive]
2236    #[doc = "Information about the system's restful capabilities that apply across all applications, such as security."]
2237    pub documentation: Option<Box<FHIRMarkdown>>,
2238    #[doc = "Information about security implementation from an interface perspective - what a client needs to know."]
2239    pub security: Option<CapabilityStatementRestSecurity>,
2240    #[doc = "A specification of the restful capabilities of the solution for a specific resource type."]
2241    pub resource: Option<Vec<CapabilityStatementRestResource>>,
2242    #[doc = "A specification of restful operations supported by the system."]
2243    pub interaction: Option<Vec<CapabilityStatementRestInteraction>>,
2244    #[doc = "Search parameters that are supported for searching all resources for implementations to support and/or make use of - either references to ones defined in the specification, or additional ones defined for/by the implementation."]
2245    pub searchParam: Option<Vec<CapabilityStatementRestResourceSearchParam>>,
2246    #[doc = "Definition of an operation or a named query together with its parameters and their meaning and type."]
2247    pub operation: Option<Vec<CapabilityStatementRestResourceOperation>>,
2248    #[primitive]
2249    #[doc = "An absolute URI which is a reference to the definition of a compartment that the system supports. The reference is to a CompartmentDefinition resource by its canonical URL ."]
2250    pub compartment: Option<Vec<Box<FHIRCanonical>>>,
2251}
2252#[derive(
2253    Clone,
2254    Reflect,
2255    Debug,
2256    Default,
2257    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
2258    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
2259)]
2260#[fhir_serialize_type = "complex"]
2261#[doc = "An endpoint (network accessible address) to which messages and/or replies are to be sent."]
2262pub struct CapabilityStatementMessagingEndpoint {
2263    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
2264    pub id: Option<String>,
2265    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
2266    pub extension: Option<Vec<Box<Extension>>>,
2267    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
2268    pub modifierExtension: Option<Vec<Box<Extension>>>,
2269    #[doc = "A list of the messaging transport protocol(s) identifiers, supported by this endpoint."]
2270    pub protocol: Box<Coding>,
2271    #[primitive]
2272    #[doc = "The network address of the endpoint. For solutions that do not use network addresses for routing, it can be just an identifier."]
2273    pub address: Box<FHIRUrl>,
2274}
2275#[derive(
2276    Clone,
2277    Reflect,
2278    Debug,
2279    Default,
2280    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
2281    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
2282)]
2283#[fhir_serialize_type = "complex"]
2284#[doc = "References to message definitions for messages this system can send or receive."]
2285pub struct CapabilityStatementMessagingSupportedMessage {
2286    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
2287    pub id: Option<String>,
2288    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
2289    pub extension: Option<Vec<Box<Extension>>>,
2290    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
2291    pub modifierExtension: Option<Vec<Box<Extension>>>,
2292    #[primitive]
2293    #[doc = "The mode of this event declaration - whether application is sender or receiver."]
2294    pub mode: Box<terminology::EventCapabilityMode>,
2295    #[primitive]
2296    #[doc = "Points to a message definition that identifies the messaging event, message structure, allowed responses, etc."]
2297    pub definition: Box<FHIRCanonical>,
2298}
2299#[derive(
2300    Clone,
2301    Reflect,
2302    Debug,
2303    Default,
2304    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
2305    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
2306)]
2307#[fhir_serialize_type = "complex"]
2308#[doc = "A description of the messaging capabilities of the solution."]
2309pub struct CapabilityStatementMessaging {
2310    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
2311    pub id: Option<String>,
2312    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
2313    pub extension: Option<Vec<Box<Extension>>>,
2314    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
2315    pub modifierExtension: Option<Vec<Box<Extension>>>,
2316    #[doc = "An endpoint (network accessible address) to which messages and/or replies are to be sent."]
2317    pub endpoint: Option<Vec<CapabilityStatementMessagingEndpoint>>,
2318    #[primitive]
2319    #[doc = "Length if the receiver's reliable messaging cache in minutes (if a receiver) or how long the cache length on the receiver should be (if a sender)."]
2320    pub reliableCache: Option<Box<FHIRUnsignedInt>>,
2321    #[primitive]
2322    #[doc = "Documentation about the system's messaging capabilities for this endpoint not otherwise documented by the capability statement.  For example, the process for becoming an authorized messaging exchange partner."]
2323    pub documentation: Option<Box<FHIRMarkdown>>,
2324    #[doc = "References to message definitions for messages this system can send or receive."]
2325    pub supportedMessage: Option<Vec<CapabilityStatementMessagingSupportedMessage>>,
2326}
2327#[derive(
2328    Clone,
2329    Reflect,
2330    Debug,
2331    Default,
2332    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
2333    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
2334)]
2335#[fhir_serialize_type = "complex"]
2336#[doc = "A document definition."]
2337pub struct CapabilityStatementDocument {
2338    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
2339    pub id: Option<String>,
2340    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
2341    pub extension: Option<Vec<Box<Extension>>>,
2342    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
2343    pub modifierExtension: Option<Vec<Box<Extension>>>,
2344    #[primitive]
2345    #[doc = "Mode of this document declaration - whether an application is a producer or consumer."]
2346    pub mode: Box<terminology::DocumentMode>,
2347    #[primitive]
2348    #[doc = "A description of how the application supports or uses the specified document profile.  For example, when documents are created, what action is taken with consumed documents, etc."]
2349    pub documentation: Option<Box<FHIRMarkdown>>,
2350    #[primitive]
2351    #[doc = "A profile on the document Bundle that constrains which resources are present, and their contents."]
2352    pub profile: Box<FHIRCanonical>,
2353}
2354#[derive(
2355    Clone,
2356    Reflect,
2357    Debug,
2358    Default,
2359    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
2360    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
2361)]
2362#[fhir_serialize_type = "resource"]
2363#[doc = "A Capability Statement documents a set of capabilities (behaviors) of a FHIR Server for a particular version of FHIR that may be used as a statement of actual server functionality or a statement of required or desired server implementation."]
2364pub struct CapabilityStatement {
2365    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
2366    pub id: Option<String>,
2367    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
2368    pub meta: Option<Box<Meta>>,
2369    #[primitive]
2370    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
2371    pub implicitRules: Option<Box<FHIRUri>>,
2372    #[primitive]
2373    #[doc = "The base language in which the resource is written."]
2374    pub language: Option<Box<FHIRCode>>,
2375    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
2376    pub text: Option<Box<Narrative>>,
2377    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
2378    pub contained: Option<Vec<Box<Resource>>>,
2379    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
2380    pub extension: Option<Vec<Box<Extension>>>,
2381    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
2382    pub modifierExtension: Option<Vec<Box<Extension>>>,
2383    #[primitive]
2384    #[doc = "An absolute URI that is used to identify this capability statement when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this capability statement is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the capability statement is stored on different servers."]
2385    pub url: Option<Box<FHIRUri>>,
2386    #[primitive]
2387    #[doc = "The identifier that is used to identify this version of the capability statement when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the capability statement author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence."]
2388    pub version: Option<Box<FHIRString>>,
2389    #[primitive]
2390    #[doc = "A natural language name identifying the capability statement. This name should be usable as an identifier for the module by machine processing applications such as code generation."]
2391    pub name: Option<Box<FHIRString>>,
2392    #[primitive]
2393    #[doc = "A short, descriptive, user-friendly title for the capability statement."]
2394    pub title: Option<Box<FHIRString>>,
2395    #[primitive]
2396    #[doc = "The status of this capability statement. Enables tracking the life-cycle of the content."]
2397    pub status: Box<terminology::PublicationStatus>,
2398    #[primitive]
2399    #[doc = "A Boolean value to indicate that this capability statement is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage."]
2400    pub experimental: Option<Box<FHIRBoolean>>,
2401    #[primitive]
2402    #[doc = "The date  (and optionally time) when the capability statement was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the capability statement changes."]
2403    pub date: Box<FHIRDateTime>,
2404    #[primitive]
2405    #[doc = "The name of the organization or individual that published the capability statement."]
2406    pub publisher: Option<Box<FHIRString>>,
2407    #[doc = "Contact details to assist a user in finding and communicating with the publisher."]
2408    pub contact: Option<Vec<Box<ContactDetail>>>,
2409    #[primitive]
2410    #[doc = "A free text natural language description of the capability statement from a consumer's perspective. Typically, this is used when the capability statement describes a desired rather than an actual solution, for example as a formal expression of requirements as part of an RFP."]
2411    pub description: Option<Box<FHIRMarkdown>>,
2412    #[doc = "The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate capability statement instances."]
2413    pub useContext: Option<Vec<Box<UsageContext>>>,
2414    #[doc = "A legal or geographic region in which the capability statement is intended to be used."]
2415    pub jurisdiction: Option<Vec<Box<CodeableConcept>>>,
2416    #[primitive]
2417    #[doc = "Explanation of why this capability statement is needed and why it has been designed as it has."]
2418    pub purpose: Option<Box<FHIRMarkdown>>,
2419    #[primitive]
2420    #[doc = "A copyright statement relating to the capability statement and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the capability statement."]
2421    pub copyright: Option<Box<FHIRMarkdown>>,
2422    #[primitive]
2423    #[doc = "The way that this statement is intended to be used, to describe an actual running instance of software, a particular product (kind, not instance of software) or a class of implementation (e.g. a desired purchase)."]
2424    pub kind: Box<terminology::CapabilityStatementKind>,
2425    #[primitive]
2426    #[doc = "Reference to a canonical URL of another CapabilityStatement that this software implements. This capability statement is a published API description that corresponds to a business service. The server may actually implement a subset of the capability statement it claims to implement, so the capability statement must specify the full capability details."]
2427    pub instantiates: Option<Vec<Box<FHIRCanonical>>>,
2428    #[primitive]
2429    #[doc = "Reference to a canonical URL of another CapabilityStatement that this software adds to. The capability statement automatically includes everything in the other statement, and it is not duplicated, though the server may repeat the same resources, interactions and operations to add additional details to them."]
2430    pub imports: Option<Vec<Box<FHIRCanonical>>>,
2431    #[doc = "Software that is covered by this capability statement.  It is used when the capability statement describes the capabilities of a particular software version, independent of an installation."]
2432    pub software: Option<CapabilityStatementSoftware>,
2433    #[doc = "Identifies a specific implementation instance that is described by the capability statement - i.e. a particular installation, rather than the capabilities of a software program."]
2434    pub implementation: Option<CapabilityStatementImplementation>,
2435    #[primitive]
2436    #[doc = "The version of the FHIR specification that this CapabilityStatement describes (which SHALL be the same as the FHIR version of the CapabilityStatement itself). There is no default value."]
2437    pub fhirVersion: Box<terminology::FHIRVersion>,
2438    #[primitive]
2439    #[cardinality(min = 1usize)]
2440    #[doc = "A list of the formats supported by this implementation using their content types."]
2441    pub format: Vec<Box<FHIRCode>>,
2442    #[primitive]
2443    #[doc = "A list of the patch formats supported by this implementation using their content types."]
2444    pub patchFormat: Option<Vec<Box<FHIRCode>>>,
2445    #[primitive]
2446    #[doc = "A list of implementation guides that the server does (or should) support in their entirety."]
2447    pub implementationGuide: Option<Vec<Box<FHIRCanonical>>>,
2448    #[doc = "A definition of the restful capabilities of the solution, if any."]
2449    pub rest: Option<Vec<CapabilityStatementRest>>,
2450    #[doc = "A description of the messaging capabilities of the solution."]
2451    pub messaging: Option<Vec<CapabilityStatementMessaging>>,
2452    #[doc = "A document definition."]
2453    pub document: Option<Vec<CapabilityStatementDocument>>,
2454}
2455#[derive(
2456    Clone,
2457    Reflect,
2458    Debug,
2459    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
2460    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
2461)]
2462#[fhir_serialize_type = "typechoice"]
2463#[type_choice_field_name = "scheduled"]
2464pub enum CarePlanActivityDetailScheduledTypeChoice {
2465    Timing(Box<Timing>),
2466    Period(Box<Period>),
2467    String(Box<FHIRString>),
2468}
2469impl Default for CarePlanActivityDetailScheduledTypeChoice {
2470    fn default() -> Self {
2471        CarePlanActivityDetailScheduledTypeChoice::Timing(Box::new(Default::default()))
2472    }
2473}
2474#[derive(
2475    Clone,
2476    Reflect,
2477    Debug,
2478    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
2479    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
2480)]
2481#[fhir_serialize_type = "typechoice"]
2482#[type_choice_field_name = "product"]
2483pub enum CarePlanActivityDetailProductTypeChoice {
2484    CodeableConcept(Box<CodeableConcept>),
2485    # [reference (targets = ["Medication" , "Substance"])]
2486    Reference(Box<Reference>),
2487}
2488impl Default for CarePlanActivityDetailProductTypeChoice {
2489    fn default() -> Self {
2490        CarePlanActivityDetailProductTypeChoice::CodeableConcept(Box::new(Default::default()))
2491    }
2492}
2493#[derive(
2494    Clone,
2495    Reflect,
2496    Debug,
2497    Default,
2498    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
2499    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
2500)]
2501#[fhir_serialize_type = "complex"]
2502#[doc = "A simple summary of a planned activity suitable for a general care plan system (e.g. form driven) that doesn't know about specific resources such as procedure etc."]
2503pub struct CarePlanActivityDetail {
2504    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
2505    pub id: Option<String>,
2506    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
2507    pub extension: Option<Vec<Box<Extension>>>,
2508    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
2509    pub modifierExtension: Option<Vec<Box<Extension>>>,
2510    #[primitive]
2511    #[doc = "A description of the kind of resource the in-line definition of a care plan activity is representing.  The CarePlan.activity.detail is an in-line definition when a resource is not referenced using CarePlan.activity.reference.  For example, a MedicationRequest, a ServiceRequest, or a CommunicationRequest."]
2512    pub kind: Option<Box<terminology::CarePlanActivityKind>>,
2513    #[primitive]
2514    #[doc = "The URL pointing to a FHIR-defined protocol, guideline, questionnaire or other definition that is adhered to in whole or in part by this CarePlan activity."]
2515    pub instantiatesCanonical: Option<Vec<Box<FHIRCanonical>>>,
2516    #[primitive]
2517    #[doc = "The URL pointing to an externally maintained protocol, guideline, questionnaire or other definition that is adhered to in whole or in part by this CarePlan activity."]
2518    pub instantiatesUri: Option<Vec<Box<FHIRUri>>>,
2519    #[doc = "Detailed description of the type of planned activity; e.g. what lab test, what procedure, what kind of encounter."]
2520    pub code: Option<Box<CodeableConcept>>,
2521    #[doc = "Provides the rationale that drove the inclusion of this particular activity as part of the plan or the reason why the activity was prohibited."]
2522    pub reasonCode: Option<Vec<Box<CodeableConcept>>>,
2523    # [reference (targets = ["Condition" , "Observation" , "DiagnosticReport" , "DocumentReference"])]
2524    #[doc = "Indicates another resource, such as the health condition(s), whose existence justifies this request and drove the inclusion of this particular activity as part of the plan."]
2525    pub reasonReference: Option<Vec<Box<Reference>>>,
2526    # [reference (targets = ["Goal"])]
2527    #[doc = "Internal reference that identifies the goals that this activity is intended to contribute towards meeting."]
2528    pub goal: Option<Vec<Box<Reference>>>,
2529    #[primitive]
2530    #[doc = "Identifies what progress is being made for the specific activity."]
2531    pub status: Box<terminology::CarePlanActivityStatus>,
2532    #[doc = "Provides reason why the activity isn't yet started, is on hold, was cancelled, etc."]
2533    pub statusReason: Option<Box<CodeableConcept>>,
2534    #[primitive]
2535    #[doc = "If true, indicates that the described activity is one that must NOT be engaged in when following the plan.  If false, or missing, indicates that the described activity is one that should be engaged in when following the plan."]
2536    pub doNotPerform: Option<Box<FHIRBoolean>>,
2537    # [type_choice_variants (complex = ["scheduledTiming" , "scheduledPeriod"] , primitive = ["scheduledString"])]
2538    #[doc = "The period, timing or frequency upon which the described activity is to occur."]
2539    pub scheduled: Option<CarePlanActivityDetailScheduledTypeChoice>,
2540    # [reference (targets = ["Location"])]
2541    #[doc = "Identifies the facility where the activity will occur; e.g. home, hospital, specific clinic, etc."]
2542    pub location: Option<Box<Reference>>,
2543    # [reference (targets = ["Practitioner" , "PractitionerRole" , "Organization" , "RelatedPerson" , "Patient" , "CareTeam" , "HealthcareService" , "Device"])]
2544    #[doc = "Identifies who's expected to be involved in the activity."]
2545    pub performer: Option<Vec<Box<Reference>>>,
2546    # [type_choice_variants (complex = ["productCodeableConcept" , "productReference"] , primitive = [])]
2547    #[doc = "Identifies the food, drug or other product to be consumed or supplied in the activity."]
2548    pub product: Option<CarePlanActivityDetailProductTypeChoice>,
2549    #[doc = "Identifies the quantity expected to be consumed in a given day."]
2550    pub dailyAmount: Option<Box<Quantity>>,
2551    #[doc = "Identifies the quantity expected to be supplied, administered or consumed by the subject."]
2552    pub quantity: Option<Box<Quantity>>,
2553    #[primitive]
2554    #[doc = "This provides a textual description of constraints on the intended activity occurrence, including relation to other activities.  It may also include objectives, pre-conditions and end-conditions.  Finally, it may convey specifics about the activity such as body site, method, route, etc."]
2555    pub description: Option<Box<FHIRString>>,
2556}
2557#[derive(
2558    Clone,
2559    Reflect,
2560    Debug,
2561    Default,
2562    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
2563    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
2564)]
2565#[fhir_serialize_type = "complex"]
2566#[doc = "Identifies a planned action to occur as part of the plan.  For example, a medication to be used, lab tests to perform, self-monitoring, education, etc."]
2567pub struct CarePlanActivity {
2568    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
2569    pub id: Option<String>,
2570    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
2571    pub extension: Option<Vec<Box<Extension>>>,
2572    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
2573    pub modifierExtension: Option<Vec<Box<Extension>>>,
2574    #[doc = "Identifies the outcome at the point when the status of the activity is assessed.  For example, the outcome of an education activity could be patient understands (or not)."]
2575    pub outcomeCodeableConcept: Option<Vec<Box<CodeableConcept>>>,
2576    # [reference (targets = ["Resource"])]
2577    #[doc = "Details of the outcome or action resulting from the activity.  The reference to an \"event\" resource, such as Procedure or Encounter or Observation, is the result/outcome of the activity itself.  The activity can be conveyed using CarePlan.activity.detail OR using the CarePlan.activity.reference (a reference to a “request” resource)."]
2578    pub outcomeReference: Option<Vec<Box<Reference>>>,
2579    #[doc = "Notes about the adherence/status/progress of the activity."]
2580    pub progress: Option<Vec<Box<Annotation>>>,
2581    # [reference (targets = ["Appointment" , "CommunicationRequest" , "DeviceRequest" , "MedicationRequest" , "NutritionOrder" , "Task" , "ServiceRequest" , "VisionPrescription" , "RequestGroup"])]
2582    #[doc = "The details of the proposed activity represented in a specific resource."]
2583    pub reference: Option<Box<Reference>>,
2584    #[doc = "A simple summary of a planned activity suitable for a general care plan system (e.g. form driven) that doesn't know about specific resources such as procedure etc."]
2585    pub detail: Option<CarePlanActivityDetail>,
2586}
2587#[derive(
2588    Clone,
2589    Reflect,
2590    Debug,
2591    Default,
2592    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
2593    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
2594)]
2595#[fhir_serialize_type = "resource"]
2596#[doc = "Describes the intention of how one or more practitioners intend to deliver care for a particular patient, group or community for a period of time, possibly limited to care for a specific condition or set of conditions."]
2597pub struct CarePlan {
2598    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
2599    pub id: Option<String>,
2600    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
2601    pub meta: Option<Box<Meta>>,
2602    #[primitive]
2603    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
2604    pub implicitRules: Option<Box<FHIRUri>>,
2605    #[primitive]
2606    #[doc = "The base language in which the resource is written."]
2607    pub language: Option<Box<FHIRCode>>,
2608    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
2609    pub text: Option<Box<Narrative>>,
2610    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
2611    pub contained: Option<Vec<Box<Resource>>>,
2612    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
2613    pub extension: Option<Vec<Box<Extension>>>,
2614    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
2615    pub modifierExtension: Option<Vec<Box<Extension>>>,
2616    #[rename_field = "identifier"]
2617    #[doc = "Business identifiers assigned to this care plan by the performer or other systems which remain constant as the resource is updated and propagates from server to server."]
2618    pub identifier_: Option<Vec<Box<Identifier>>>,
2619    #[primitive]
2620    #[doc = "The URL pointing to a FHIR-defined protocol, guideline, questionnaire or other definition that is adhered to in whole or in part by this CarePlan."]
2621    pub instantiatesCanonical: Option<Vec<Box<FHIRCanonical>>>,
2622    #[primitive]
2623    #[doc = "The URL pointing to an externally maintained protocol, guideline, questionnaire or other definition that is adhered to in whole or in part by this CarePlan."]
2624    pub instantiatesUri: Option<Vec<Box<FHIRUri>>>,
2625    # [reference (targets = ["CarePlan"])]
2626    #[doc = "A care plan that is fulfilled in whole or in part by this care plan."]
2627    pub basedOn: Option<Vec<Box<Reference>>>,
2628    # [reference (targets = ["CarePlan"])]
2629    #[doc = "Completed or terminated care plan whose function is taken by this new care plan."]
2630    pub replaces: Option<Vec<Box<Reference>>>,
2631    # [reference (targets = ["CarePlan"])]
2632    #[doc = "A larger care plan of which this particular care plan is a component or step."]
2633    pub partOf: Option<Vec<Box<Reference>>>,
2634    #[primitive]
2635    #[doc = "Indicates whether the plan is currently being acted upon, represents future intentions or is now a historical record."]
2636    pub status: Box<terminology::RequestStatus>,
2637    #[primitive]
2638    #[doc = "Indicates the level of authority/intentionality associated with the care plan and where the care plan fits into the workflow chain."]
2639    pub intent: Box<terminology::CarePlanIntent>,
2640    #[doc = "Identifies what \"kind\" of plan this is to support differentiation between multiple co-existing plans; e.g. \"Home health\", \"psychiatric\", \"asthma\", \"disease management\", \"wellness plan\", etc."]
2641    pub category: Option<Vec<Box<CodeableConcept>>>,
2642    #[primitive]
2643    #[doc = "Human-friendly name for the care plan."]
2644    pub title: Option<Box<FHIRString>>,
2645    #[primitive]
2646    #[doc = "A description of the scope and nature of the plan."]
2647    pub description: Option<Box<FHIRString>>,
2648    # [reference (targets = ["Patient" , "Group"])]
2649    #[doc = "Identifies the patient or group whose intended care is described by the plan."]
2650    pub subject: Box<Reference>,
2651    # [reference (targets = ["Encounter"])]
2652    #[doc = "The Encounter during which this CarePlan was created or to which the creation of this record is tightly associated."]
2653    pub encounter: Option<Box<Reference>>,
2654    #[doc = "Indicates when the plan did (or is intended to) come into effect and end."]
2655    pub period: Option<Box<Period>>,
2656    #[primitive]
2657    #[doc = "Represents when this particular CarePlan record was created in the system, which is often a system-generated date."]
2658    pub created: Option<Box<FHIRDateTime>>,
2659    # [reference (targets = ["Patient" , "Practitioner" , "PractitionerRole" , "Device" , "RelatedPerson" , "Organization" , "CareTeam"])]
2660    #[doc = "When populated, the author is responsible for the care plan.  The care plan is attributed to the author."]
2661    pub author: Option<Box<Reference>>,
2662    # [reference (targets = ["Patient" , "Practitioner" , "PractitionerRole" , "Device" , "RelatedPerson" , "Organization" , "CareTeam"])]
2663    #[doc = "Identifies the individual(s) or organization who provided the contents of the care plan."]
2664    pub contributor: Option<Vec<Box<Reference>>>,
2665    # [reference (targets = ["CareTeam"])]
2666    #[doc = "Identifies all people and organizations who are expected to be involved in the care envisioned by this plan."]
2667    pub careTeam: Option<Vec<Box<Reference>>>,
2668    # [reference (targets = ["Condition"])]
2669    #[doc = "Identifies the conditions/problems/concerns/diagnoses/etc. whose management and/or mitigation are handled by this plan."]
2670    pub addresses: Option<Vec<Box<Reference>>>,
2671    # [reference (targets = ["Resource"])]
2672    #[doc = "Identifies portions of the patient's record that specifically influenced the formation of the plan.  These might include comorbidities, recent procedures, limitations, recent assessments, etc."]
2673    pub supportingInfo: Option<Vec<Box<Reference>>>,
2674    # [reference (targets = ["Goal"])]
2675    #[doc = "Describes the intended objective(s) of carrying out the care plan."]
2676    pub goal: Option<Vec<Box<Reference>>>,
2677    #[doc = "Identifies a planned action to occur as part of the plan.  For example, a medication to be used, lab tests to perform, self-monitoring, education, etc."]
2678    pub activity: Option<Vec<CarePlanActivity>>,
2679    #[doc = "General notes about the care plan not covered elsewhere."]
2680    pub note: Option<Vec<Box<Annotation>>>,
2681}
2682#[derive(
2683    Clone,
2684    Reflect,
2685    Debug,
2686    Default,
2687    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
2688    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
2689)]
2690#[fhir_serialize_type = "complex"]
2691#[doc = "Identifies all people and organizations who are expected to be involved in the care team."]
2692pub struct CareTeamParticipant {
2693    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
2694    pub id: Option<String>,
2695    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
2696    pub extension: Option<Vec<Box<Extension>>>,
2697    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
2698    pub modifierExtension: Option<Vec<Box<Extension>>>,
2699    #[doc = "Indicates specific responsibility of an individual within the care team, such as \"Primary care physician\", \"Trained social worker counselor\", \"Caregiver\", etc."]
2700    pub role: Option<Vec<Box<CodeableConcept>>>,
2701    # [reference (targets = ["Practitioner" , "PractitionerRole" , "RelatedPerson" , "Patient" , "Organization" , "CareTeam"])]
2702    #[doc = "The specific person or organization who is participating/expected to participate in the care team."]
2703    pub member: Option<Box<Reference>>,
2704    # [reference (targets = ["Organization"])]
2705    #[doc = "The organization of the practitioner."]
2706    pub onBehalfOf: Option<Box<Reference>>,
2707    #[doc = "Indicates when the specific member or organization did (or is intended to) come into effect and end."]
2708    pub period: Option<Box<Period>>,
2709}
2710#[derive(
2711    Clone,
2712    Reflect,
2713    Debug,
2714    Default,
2715    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
2716    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
2717)]
2718#[fhir_serialize_type = "resource"]
2719#[doc = "The Care Team includes all the people and organizations who plan to participate in the coordination and delivery of care for a patient."]
2720pub struct CareTeam {
2721    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
2722    pub id: Option<String>,
2723    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
2724    pub meta: Option<Box<Meta>>,
2725    #[primitive]
2726    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
2727    pub implicitRules: Option<Box<FHIRUri>>,
2728    #[primitive]
2729    #[doc = "The base language in which the resource is written."]
2730    pub language: Option<Box<FHIRCode>>,
2731    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
2732    pub text: Option<Box<Narrative>>,
2733    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
2734    pub contained: Option<Vec<Box<Resource>>>,
2735    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
2736    pub extension: Option<Vec<Box<Extension>>>,
2737    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
2738    pub modifierExtension: Option<Vec<Box<Extension>>>,
2739    #[rename_field = "identifier"]
2740    #[doc = "Business identifiers assigned to this care team by the performer or other systems which remain constant as the resource is updated and propagates from server to server."]
2741    pub identifier_: Option<Vec<Box<Identifier>>>,
2742    #[primitive]
2743    #[doc = "Indicates the current state of the care team."]
2744    pub status: Option<Box<terminology::CareTeamStatus>>,
2745    #[doc = "Identifies what kind of team.  This is to support differentiation between multiple co-existing teams, such as care plan team, episode of care team, longitudinal care team."]
2746    pub category: Option<Vec<Box<CodeableConcept>>>,
2747    #[primitive]
2748    #[doc = "A label for human use intended to distinguish like teams.  E.g. the \"red\" vs. \"green\" trauma teams."]
2749    pub name: Option<Box<FHIRString>>,
2750    # [reference (targets = ["Patient" , "Group"])]
2751    #[doc = "Identifies the patient or group whose intended care is handled by the team."]
2752    pub subject: Option<Box<Reference>>,
2753    # [reference (targets = ["Encounter"])]
2754    #[doc = "The Encounter during which this CareTeam was created or to which the creation of this record is tightly associated."]
2755    pub encounter: Option<Box<Reference>>,
2756    #[doc = "Indicates when the team did (or is intended to) come into effect and end."]
2757    pub period: Option<Box<Period>>,
2758    #[doc = "Identifies all people and organizations who are expected to be involved in the care team."]
2759    pub participant: Option<Vec<CareTeamParticipant>>,
2760    #[doc = "Describes why the care team exists."]
2761    pub reasonCode: Option<Vec<Box<CodeableConcept>>>,
2762    # [reference (targets = ["Condition"])]
2763    #[doc = "Condition(s) that this care team addresses."]
2764    pub reasonReference: Option<Vec<Box<Reference>>>,
2765    # [reference (targets = ["Organization"])]
2766    #[doc = "The organization responsible for the care team."]
2767    pub managingOrganization: Option<Vec<Box<Reference>>>,
2768    #[doc = "A central contact detail for the care team (that applies to all members)."]
2769    pub telecom: Option<Vec<Box<ContactPoint>>>,
2770    #[doc = "Comments made about the CareTeam."]
2771    pub note: Option<Vec<Box<Annotation>>>,
2772}
2773#[derive(
2774    Clone,
2775    Reflect,
2776    Debug,
2777    Default,
2778    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
2779    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
2780)]
2781#[fhir_serialize_type = "complex"]
2782#[doc = "Used for example, to point to a substance, or to a device used to administer a medication."]
2783pub struct CatalogEntryRelatedEntry {
2784    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
2785    pub id: Option<String>,
2786    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
2787    pub extension: Option<Vec<Box<Extension>>>,
2788    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
2789    pub modifierExtension: Option<Vec<Box<Extension>>>,
2790    #[primitive]
2791    #[doc = "The type of relation to the related item: child, parent, packageContent, containerPackage, usedIn, uses, requires, etc."]
2792    pub relationtype: Box<terminology::RelationType>,
2793    # [reference (targets = ["CatalogEntry"])]
2794    #[doc = "The reference to the related item."]
2795    pub item: Box<Reference>,
2796}
2797#[derive(
2798    Clone,
2799    Reflect,
2800    Debug,
2801    Default,
2802    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
2803    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
2804)]
2805#[fhir_serialize_type = "resource"]
2806#[doc = "Catalog entries are wrappers that contextualize items included in a catalog."]
2807pub struct CatalogEntry {
2808    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
2809    pub id: Option<String>,
2810    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
2811    pub meta: Option<Box<Meta>>,
2812    #[primitive]
2813    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
2814    pub implicitRules: Option<Box<FHIRUri>>,
2815    #[primitive]
2816    #[doc = "The base language in which the resource is written."]
2817    pub language: Option<Box<FHIRCode>>,
2818    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
2819    pub text: Option<Box<Narrative>>,
2820    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
2821    pub contained: Option<Vec<Box<Resource>>>,
2822    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
2823    pub extension: Option<Vec<Box<Extension>>>,
2824    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
2825    pub modifierExtension: Option<Vec<Box<Extension>>>,
2826    #[rename_field = "identifier"]
2827    #[doc = "Used in supporting different identifiers for the same product, e.g. manufacturer code and retailer code."]
2828    pub identifier_: Option<Vec<Box<Identifier>>>,
2829    #[rename_field = "type"]
2830    #[doc = "The type of item - medication, device, service, protocol or other."]
2831    pub type_: Option<Box<CodeableConcept>>,
2832    #[primitive]
2833    #[doc = "Whether the entry represents an orderable item."]
2834    pub orderable: Box<FHIRBoolean>,
2835    # [reference (targets = ["Medication" , "Device" , "Organization" , "Practitioner" , "PractitionerRole" , "HealthcareService" , "ActivityDefinition" , "PlanDefinition" , "SpecimenDefinition" , "ObservationDefinition" , "Binary"])]
2836    #[doc = "The item in a catalog or definition."]
2837    pub referencedItem: Box<Reference>,
2838    #[doc = "Used in supporting related concepts, e.g. NDC to RxNorm."]
2839    pub additionalIdentifier: Option<Vec<Box<Identifier>>>,
2840    #[doc = "Classes of devices, or ATC for medication."]
2841    pub classification: Option<Vec<Box<CodeableConcept>>>,
2842    #[primitive]
2843    #[doc = "Used to support catalog exchange even for unsupported products, e.g. getting list of medications even if not prescribable."]
2844    pub status: Option<Box<terminology::PublicationStatus>>,
2845    #[doc = "The time period in which this catalog entry is expected to be active."]
2846    pub validityPeriod: Option<Box<Period>>,
2847    #[primitive]
2848    #[doc = "The date until which this catalog entry is expected to be active."]
2849    pub validTo: Option<Box<FHIRDateTime>>,
2850    #[primitive]
2851    #[doc = "Typically date of issue is different from the beginning of the validity. This can be used to see when an item was last updated."]
2852    pub lastUpdated: Option<Box<FHIRDateTime>>,
2853    #[doc = "Used for examplefor Out of Formulary, or any specifics."]
2854    pub additionalCharacteristic: Option<Vec<Box<CodeableConcept>>>,
2855    #[doc = "User for example for ATC classification, or."]
2856    pub additionalClassification: Option<Vec<Box<CodeableConcept>>>,
2857    #[doc = "Used for example, to point to a substance, or to a device used to administer a medication."]
2858    pub relatedEntry: Option<Vec<CatalogEntryRelatedEntry>>,
2859}
2860#[derive(
2861    Clone,
2862    Reflect,
2863    Debug,
2864    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
2865    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
2866)]
2867#[fhir_serialize_type = "typechoice"]
2868#[type_choice_field_name = "occurrence"]
2869pub enum ChargeItemOccurrenceTypeChoice {
2870    DateTime(Box<FHIRDateTime>),
2871    Period(Box<Period>),
2872    Timing(Box<Timing>),
2873}
2874impl Default for ChargeItemOccurrenceTypeChoice {
2875    fn default() -> Self {
2876        ChargeItemOccurrenceTypeChoice::DateTime(Box::new(Default::default()))
2877    }
2878}
2879#[derive(
2880    Clone,
2881    Reflect,
2882    Debug,
2883    Default,
2884    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
2885    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
2886)]
2887#[fhir_serialize_type = "complex"]
2888#[doc = "Indicates who or what performed or participated in the charged service."]
2889pub struct ChargeItemPerformer {
2890    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
2891    pub id: Option<String>,
2892    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
2893    pub extension: Option<Vec<Box<Extension>>>,
2894    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
2895    pub modifierExtension: Option<Vec<Box<Extension>>>,
2896    #[doc = "Describes the type of performance or participation(e.g. primary surgeon, anesthesiologiest, etc.)."]
2897    pub function: Option<Box<CodeableConcept>>,
2898    # [reference (targets = ["Practitioner" , "PractitionerRole" , "Organization" , "CareTeam" , "Patient" , "Device" , "RelatedPerson"])]
2899    #[doc = "The device, practitioner, etc. who performed or participated in the service."]
2900    pub actor: Box<Reference>,
2901}
2902#[derive(
2903    Clone,
2904    Reflect,
2905    Debug,
2906    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
2907    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
2908)]
2909#[fhir_serialize_type = "typechoice"]
2910#[type_choice_field_name = "product"]
2911pub enum ChargeItemProductTypeChoice {
2912    # [reference (targets = ["Device" , "Medication" , "Substance"])]
2913    Reference(Box<Reference>),
2914    CodeableConcept(Box<CodeableConcept>),
2915}
2916impl Default for ChargeItemProductTypeChoice {
2917    fn default() -> Self {
2918        ChargeItemProductTypeChoice::Reference(Box::new(Default::default()))
2919    }
2920}
2921#[derive(
2922    Clone,
2923    Reflect,
2924    Debug,
2925    Default,
2926    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
2927    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
2928)]
2929#[fhir_serialize_type = "resource"]
2930#[doc = "The resource ChargeItem describes the provision of healthcare provider products for a certain patient, therefore referring not only to the product, but containing in addition details of the provision, like date, time, amounts and participating organizations and persons. Main Usage of the ChargeItem is to enable the billing process and internal cost allocation."]
2931pub struct ChargeItem {
2932    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
2933    pub id: Option<String>,
2934    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
2935    pub meta: Option<Box<Meta>>,
2936    #[primitive]
2937    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
2938    pub implicitRules: Option<Box<FHIRUri>>,
2939    #[primitive]
2940    #[doc = "The base language in which the resource is written."]
2941    pub language: Option<Box<FHIRCode>>,
2942    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
2943    pub text: Option<Box<Narrative>>,
2944    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
2945    pub contained: Option<Vec<Box<Resource>>>,
2946    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
2947    pub extension: Option<Vec<Box<Extension>>>,
2948    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
2949    pub modifierExtension: Option<Vec<Box<Extension>>>,
2950    #[rename_field = "identifier"]
2951    #[doc = "Identifiers assigned to this event performer or other systems."]
2952    pub identifier_: Option<Vec<Box<Identifier>>>,
2953    #[primitive]
2954    #[doc = "References the (external) source of pricing information, rules of application for the code this ChargeItem uses."]
2955    pub definitionUri: Option<Vec<Box<FHIRUri>>>,
2956    #[primitive]
2957    #[doc = "References the source of pricing information, rules of application for the code this ChargeItem uses."]
2958    pub definitionCanonical: Option<Vec<Box<FHIRCanonical>>>,
2959    #[primitive]
2960    #[doc = "The current state of the ChargeItem."]
2961    pub status: Box<terminology::ChargeitemStatus>,
2962    # [reference (targets = ["ChargeItem"])]
2963    #[doc = "ChargeItems can be grouped to larger ChargeItems covering the whole set."]
2964    pub partOf: Option<Vec<Box<Reference>>>,
2965    #[doc = "A code that identifies the charge, like a billing code."]
2966    pub code: Box<CodeableConcept>,
2967    # [reference (targets = ["Patient" , "Group"])]
2968    #[doc = "The individual or set of individuals the action is being or was performed on."]
2969    pub subject: Box<Reference>,
2970    # [reference (targets = ["Encounter" , "EpisodeOfCare"])]
2971    #[doc = "The encounter or episode of care that establishes the context for this event."]
2972    pub context: Option<Box<Reference>>,
2973    # [type_choice_variants (complex = ["occurrencePeriod" , "occurrenceTiming"] , primitive = ["occurrenceDateTime"])]
2974    #[doc = "Date/time(s) or duration when the charged service was applied."]
2975    pub occurrence: Option<ChargeItemOccurrenceTypeChoice>,
2976    #[doc = "Indicates who or what performed or participated in the charged service."]
2977    pub performer: Option<Vec<ChargeItemPerformer>>,
2978    # [reference (targets = ["Organization"])]
2979    #[doc = "The organization requesting the service."]
2980    pub performingOrganization: Option<Box<Reference>>,
2981    # [reference (targets = ["Organization"])]
2982    #[doc = "The organization performing the service."]
2983    pub requestingOrganization: Option<Box<Reference>>,
2984    # [reference (targets = ["Organization"])]
2985    #[doc = "The financial cost center permits the tracking of charge attribution."]
2986    pub costCenter: Option<Box<Reference>>,
2987    #[doc = "Quantity of which the charge item has been serviced."]
2988    pub quantity: Option<Box<Quantity>>,
2989    #[doc = "The anatomical location where the related service has been applied."]
2990    pub bodysite: Option<Vec<Box<CodeableConcept>>>,
2991    #[primitive]
2992    #[doc = "Factor overriding the factor determined by the rules associated with the code."]
2993    pub factorOverride: Option<Box<FHIRDecimal>>,
2994    #[doc = "Total price of the charge overriding the list price associated with the code."]
2995    pub priceOverride: Option<Box<Money>>,
2996    #[primitive]
2997    #[doc = "If the list price or the rule-based factor associated with the code is overridden, this attribute can capture a text to indicate the  reason for this action."]
2998    pub overrideReason: Option<Box<FHIRString>>,
2999    # [reference (targets = ["Practitioner" , "PractitionerRole" , "Organization" , "Patient" , "Device" , "RelatedPerson"])]
3000    #[doc = "The device, practitioner, etc. who entered the charge item."]
3001    pub enterer: Option<Box<Reference>>,
3002    #[primitive]
3003    #[doc = "Date the charge item was entered."]
3004    pub enteredDate: Option<Box<FHIRDateTime>>,
3005    #[doc = "Describes why the event occurred in coded or textual form."]
3006    pub reason: Option<Vec<Box<CodeableConcept>>>,
3007    # [reference (targets = ["DiagnosticReport" , "ImagingStudy" , "Immunization" , "MedicationAdministration" , "MedicationDispense" , "Observation" , "Procedure" , "SupplyDelivery"])]
3008    #[doc = "Indicated the rendered service that caused this charge."]
3009    pub service: Option<Vec<Box<Reference>>>,
3010    # [type_choice_variants (complex = ["productReference" , "productCodeableConcept"] , primitive = [])]
3011    #[doc = "Identifies the device, food, drug or other product being charged either by type code or reference to an instance."]
3012    pub product: Option<ChargeItemProductTypeChoice>,
3013    # [reference (targets = ["Account"])]
3014    #[doc = "Account into which this ChargeItems belongs."]
3015    pub account: Option<Vec<Box<Reference>>>,
3016    #[doc = "Comments made about the event by the performer, subject or other participants."]
3017    pub note: Option<Vec<Box<Annotation>>>,
3018    # [reference (targets = ["Resource"])]
3019    #[doc = "Further information supporting this charge."]
3020    pub supportingInformation: Option<Vec<Box<Reference>>>,
3021}
3022#[derive(
3023    Clone,
3024    Reflect,
3025    Debug,
3026    Default,
3027    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
3028    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
3029)]
3030#[fhir_serialize_type = "complex"]
3031#[doc = "Expressions that describe applicability criteria for the billing code."]
3032pub struct ChargeItemDefinitionApplicability {
3033    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
3034    pub id: Option<String>,
3035    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
3036    pub extension: Option<Vec<Box<Extension>>>,
3037    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
3038    pub modifierExtension: Option<Vec<Box<Extension>>>,
3039    #[primitive]
3040    #[doc = "A brief, natural language description of the condition that effectively communicates the intended semantics."]
3041    pub description: Option<Box<FHIRString>>,
3042    #[primitive]
3043    #[doc = "The media type of the language for the expression, e.g. \"text/cql\" for Clinical Query Language expressions or \"text/fhirpath\" for FHIRPath expressions."]
3044    pub language: Option<Box<FHIRString>>,
3045    #[primitive]
3046    #[doc = "An expression that returns true or false, indicating whether the condition is satisfied. When using FHIRPath expressions, the %context environment variable must be replaced at runtime with the ChargeItem resource to which this definition is applied."]
3047    pub expression: Option<Box<FHIRString>>,
3048}
3049#[derive(
3050    Clone,
3051    Reflect,
3052    Debug,
3053    Default,
3054    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
3055    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
3056)]
3057#[fhir_serialize_type = "complex"]
3058#[doc = "The price for a ChargeItem may be calculated as a base price with surcharges/deductions that apply in certain conditions. A ChargeItemDefinition resource that defines the prices, factors and conditions that apply to a billing code is currently under development. The priceComponent element can be used to offer transparency to the recipient of the Invoice of how the prices have been calculated."]
3059pub struct ChargeItemDefinitionPropertyGroupPriceComponent {
3060    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
3061    pub id: Option<String>,
3062    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
3063    pub extension: Option<Vec<Box<Extension>>>,
3064    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
3065    pub modifierExtension: Option<Vec<Box<Extension>>>,
3066    #[rename_field = "type"]
3067    #[primitive]
3068    #[doc = "This code identifies the type of the component."]
3069    pub type_: Box<terminology::InvoicePriceComponentType>,
3070    #[doc = "A code that identifies the component. Codes may be used to differentiate between kinds of taxes, surcharges, discounts etc."]
3071    pub code: Option<Box<CodeableConcept>>,
3072    #[primitive]
3073    #[doc = "The factor that has been applied on the base price for calculating this component."]
3074    pub factor: Option<Box<FHIRDecimal>>,
3075    #[doc = "The amount calculated for this component."]
3076    pub amount: Option<Box<Money>>,
3077}
3078#[derive(
3079    Clone,
3080    Reflect,
3081    Debug,
3082    Default,
3083    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
3084    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
3085)]
3086#[fhir_serialize_type = "complex"]
3087#[doc = "Group of properties which are applicable under the same conditions. If no applicability rules are established for the group, then all properties always apply."]
3088pub struct ChargeItemDefinitionPropertyGroup {
3089    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
3090    pub id: Option<String>,
3091    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
3092    pub extension: Option<Vec<Box<Extension>>>,
3093    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
3094    pub modifierExtension: Option<Vec<Box<Extension>>>,
3095    #[doc = "Expressions that describe applicability criteria for the priceComponent."]
3096    pub applicability: Option<Vec<ChargeItemDefinitionApplicability>>,
3097    #[doc = "The price for a ChargeItem may be calculated as a base price with surcharges/deductions that apply in certain conditions. A ChargeItemDefinition resource that defines the prices, factors and conditions that apply to a billing code is currently under development. The priceComponent element can be used to offer transparency to the recipient of the Invoice of how the prices have been calculated."]
3098    pub priceComponent: Option<Vec<ChargeItemDefinitionPropertyGroupPriceComponent>>,
3099}
3100#[derive(
3101    Clone,
3102    Reflect,
3103    Debug,
3104    Default,
3105    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
3106    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
3107)]
3108#[fhir_serialize_type = "resource"]
3109#[doc = "The ChargeItemDefinition resource provides the properties that apply to the (billing) codes necessary to calculate costs and prices. The properties may differ largely depending on type and realm, therefore this resource gives only a rough structure and requires profiling for each type of billing code system."]
3110pub struct ChargeItemDefinition {
3111    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
3112    pub id: Option<String>,
3113    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
3114    pub meta: Option<Box<Meta>>,
3115    #[primitive]
3116    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
3117    pub implicitRules: Option<Box<FHIRUri>>,
3118    #[primitive]
3119    #[doc = "The base language in which the resource is written."]
3120    pub language: Option<Box<FHIRCode>>,
3121    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
3122    pub text: Option<Box<Narrative>>,
3123    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
3124    pub contained: Option<Vec<Box<Resource>>>,
3125    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
3126    pub extension: Option<Vec<Box<Extension>>>,
3127    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
3128    pub modifierExtension: Option<Vec<Box<Extension>>>,
3129    #[primitive]
3130    #[doc = "An absolute URI that is used to identify this charge item definition when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this charge item definition is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the charge item definition is stored on different servers."]
3131    pub url: Box<FHIRUri>,
3132    #[rename_field = "identifier"]
3133    #[doc = "A formal identifier that is used to identify this charge item definition when it is represented in other formats, or referenced in a specification, model, design or an instance."]
3134    pub identifier_: Option<Vec<Box<Identifier>>>,
3135    #[primitive]
3136    #[doc = "The identifier that is used to identify this version of the charge item definition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the charge item definition author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence. To provide a version consistent with the Decision Support Service specification, use the format Major.Minor.Revision (e.g. 1.0.0). For more information on versioning knowledge assets, refer to the Decision Support Service specification. Note that a version is required for non-experimental active assets."]
3137    pub version: Option<Box<FHIRString>>,
3138    #[primitive]
3139    #[doc = "A short, descriptive, user-friendly title for the charge item definition."]
3140    pub title: Option<Box<FHIRString>>,
3141    #[primitive]
3142    #[doc = "The URL pointing to an externally-defined charge item definition that is adhered to in whole or in part by this definition."]
3143    pub derivedFromUri: Option<Vec<Box<FHIRUri>>>,
3144    #[primitive]
3145    #[doc = "A larger definition of which this particular definition is a component or step."]
3146    pub partOf: Option<Vec<Box<FHIRCanonical>>>,
3147    #[primitive]
3148    #[doc = "As new versions of a protocol or guideline are defined, allows identification of what versions are replaced by a new instance."]
3149    pub replaces: Option<Vec<Box<FHIRCanonical>>>,
3150    #[primitive]
3151    #[doc = "The current state of the ChargeItemDefinition."]
3152    pub status: Box<terminology::PublicationStatus>,
3153    #[primitive]
3154    #[doc = "A Boolean value to indicate that this charge item definition is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage."]
3155    pub experimental: Option<Box<FHIRBoolean>>,
3156    #[primitive]
3157    #[doc = "The date  (and optionally time) when the charge item definition was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the charge item definition changes."]
3158    pub date: Option<Box<FHIRDateTime>>,
3159    #[primitive]
3160    #[doc = "The name of the organization or individual that published the charge item definition."]
3161    pub publisher: Option<Box<FHIRString>>,
3162    #[doc = "Contact details to assist a user in finding and communicating with the publisher."]
3163    pub contact: Option<Vec<Box<ContactDetail>>>,
3164    #[primitive]
3165    #[doc = "A free text natural language description of the charge item definition from a consumer's perspective."]
3166    pub description: Option<Box<FHIRMarkdown>>,
3167    #[doc = "The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate charge item definition instances."]
3168    pub useContext: Option<Vec<Box<UsageContext>>>,
3169    #[doc = "A legal or geographic region in which the charge item definition is intended to be used."]
3170    pub jurisdiction: Option<Vec<Box<CodeableConcept>>>,
3171    #[primitive]
3172    #[doc = "A copyright statement relating to the charge item definition and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the charge item definition."]
3173    pub copyright: Option<Box<FHIRMarkdown>>,
3174    #[primitive]
3175    #[doc = "The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage."]
3176    pub approvalDate: Option<Box<FHIRDate>>,
3177    #[primitive]
3178    #[doc = "The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date."]
3179    pub lastReviewDate: Option<Box<FHIRDate>>,
3180    #[doc = "The period during which the charge item definition content was or is planned to be in active use."]
3181    pub effectivePeriod: Option<Box<Period>>,
3182    #[doc = "The defined billing details in this resource pertain to the given billing code."]
3183    pub code: Option<Box<CodeableConcept>>,
3184    # [reference (targets = ["Medication" , "Substance" , "Device"])]
3185    #[doc = "The defined billing details in this resource pertain to the given product instance(s)."]
3186    pub instance: Option<Vec<Box<Reference>>>,
3187    #[doc = "Expressions that describe applicability criteria for the billing code."]
3188    pub applicability: Option<Vec<ChargeItemDefinitionApplicability>>,
3189    #[doc = "Group of properties which are applicable under the same conditions. If no applicability rules are established for the group, then all properties always apply."]
3190    pub propertyGroup: Option<Vec<ChargeItemDefinitionPropertyGroup>>,
3191}
3192#[derive(
3193    Clone,
3194    Reflect,
3195    Debug,
3196    Default,
3197    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
3198    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
3199)]
3200#[fhir_serialize_type = "complex"]
3201#[doc = "Other claims which are related to this claim such as prior submissions or claims for related services or for the same event."]
3202pub struct ClaimRelated {
3203    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
3204    pub id: Option<String>,
3205    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
3206    pub extension: Option<Vec<Box<Extension>>>,
3207    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
3208    pub modifierExtension: Option<Vec<Box<Extension>>>,
3209    # [reference (targets = ["Claim"])]
3210    #[doc = "Reference to a related claim."]
3211    pub claim: Option<Box<Reference>>,
3212    #[doc = "A code to convey how the claims are related."]
3213    pub relationship: Option<Box<CodeableConcept>>,
3214    #[doc = "An alternate organizational reference to the case or file to which this particular claim pertains."]
3215    pub reference: Option<Box<Identifier>>,
3216}
3217#[derive(
3218    Clone,
3219    Reflect,
3220    Debug,
3221    Default,
3222    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
3223    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
3224)]
3225#[fhir_serialize_type = "complex"]
3226#[doc = "The party to be reimbursed for cost of the products and services according to the terms of the policy."]
3227pub struct ClaimPayee {
3228    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
3229    pub id: Option<String>,
3230    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
3231    pub extension: Option<Vec<Box<Extension>>>,
3232    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
3233    pub modifierExtension: Option<Vec<Box<Extension>>>,
3234    #[rename_field = "type"]
3235    #[doc = "Type of Party to be reimbursed: subscriber, provider, other."]
3236    pub type_: Box<CodeableConcept>,
3237    # [reference (targets = ["Practitioner" , "PractitionerRole" , "Organization" , "Patient" , "RelatedPerson"])]
3238    #[doc = "Reference to the individual or organization to whom any payment will be made."]
3239    pub party: Option<Box<Reference>>,
3240}
3241#[derive(
3242    Clone,
3243    Reflect,
3244    Debug,
3245    Default,
3246    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
3247    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
3248)]
3249#[fhir_serialize_type = "complex"]
3250#[doc = "The members of the team who provided the products and services."]
3251pub struct ClaimCareTeam {
3252    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
3253    pub id: Option<String>,
3254    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
3255    pub extension: Option<Vec<Box<Extension>>>,
3256    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
3257    pub modifierExtension: Option<Vec<Box<Extension>>>,
3258    #[primitive]
3259    #[doc = "A number to uniquely identify care team entries."]
3260    pub sequence: Box<FHIRPositiveInt>,
3261    # [reference (targets = ["Practitioner" , "PractitionerRole" , "Organization"])]
3262    #[doc = "Member of the team who provided the product or service."]
3263    pub provider: Box<Reference>,
3264    #[primitive]
3265    #[doc = "The party who is billing and/or responsible for the claimed products or services."]
3266    pub responsible: Option<Box<FHIRBoolean>>,
3267    #[doc = "The lead, assisting or supervising practitioner and their discipline if a multidisciplinary team."]
3268    pub role: Option<Box<CodeableConcept>>,
3269    #[doc = "The qualification of the practitioner which is applicable for this service."]
3270    pub qualification: Option<Box<CodeableConcept>>,
3271}
3272#[derive(
3273    Clone,
3274    Reflect,
3275    Debug,
3276    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
3277    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
3278)]
3279#[fhir_serialize_type = "typechoice"]
3280#[type_choice_field_name = "timing"]
3281pub enum ClaimSupportingInfoTimingTypeChoice {
3282    Date(Box<FHIRDate>),
3283    Period(Box<Period>),
3284}
3285impl Default for ClaimSupportingInfoTimingTypeChoice {
3286    fn default() -> Self {
3287        ClaimSupportingInfoTimingTypeChoice::Date(Box::new(Default::default()))
3288    }
3289}
3290#[derive(
3291    Clone,
3292    Reflect,
3293    Debug,
3294    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
3295    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
3296)]
3297#[fhir_serialize_type = "typechoice"]
3298#[type_choice_field_name = "value"]
3299pub enum ClaimSupportingInfoValueTypeChoice {
3300    Boolean(Box<FHIRBoolean>),
3301    String(Box<FHIRString>),
3302    Quantity(Box<Quantity>),
3303    Attachment(Box<Attachment>),
3304    # [reference (targets = ["Resource"])]
3305    Reference(Box<Reference>),
3306}
3307impl Default for ClaimSupportingInfoValueTypeChoice {
3308    fn default() -> Self {
3309        ClaimSupportingInfoValueTypeChoice::Boolean(Box::new(Default::default()))
3310    }
3311}
3312#[derive(
3313    Clone,
3314    Reflect,
3315    Debug,
3316    Default,
3317    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
3318    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
3319)]
3320#[fhir_serialize_type = "complex"]
3321#[doc = "Additional information codes regarding exceptions, special considerations, the condition, situation, prior or concurrent issues."]
3322pub struct ClaimSupportingInfo {
3323    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
3324    pub id: Option<String>,
3325    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
3326    pub extension: Option<Vec<Box<Extension>>>,
3327    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
3328    pub modifierExtension: Option<Vec<Box<Extension>>>,
3329    #[primitive]
3330    #[doc = "A number to uniquely identify supporting information entries."]
3331    pub sequence: Box<FHIRPositiveInt>,
3332    #[doc = "The general class of the information supplied: information; exception; accident, employment; onset, etc."]
3333    pub category: Box<CodeableConcept>,
3334    #[doc = "System and code pertaining to the specific information regarding special conditions relating to the setting, treatment or patient  for which care is sought."]
3335    pub code: Option<Box<CodeableConcept>>,
3336    # [type_choice_variants (complex = ["timingPeriod"] , primitive = ["timingDate"])]
3337    #[doc = "The date when or period to which this information refers."]
3338    pub timing: Option<ClaimSupportingInfoTimingTypeChoice>,
3339    # [type_choice_variants (complex = ["valueQuantity" , "valueAttachment" , "valueReference"] , primitive = ["valueBoolean" , "valueString"])]
3340    #[doc = "Additional data or information such as resources, documents, images etc. including references to the data or the actual inclusion of the data."]
3341    pub value: Option<ClaimSupportingInfoValueTypeChoice>,
3342    #[doc = "Provides the reason in the situation where a reason code is required in addition to the content."]
3343    pub reason: Option<Box<CodeableConcept>>,
3344}
3345#[derive(
3346    Clone,
3347    Reflect,
3348    Debug,
3349    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
3350    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
3351)]
3352#[fhir_serialize_type = "typechoice"]
3353#[type_choice_field_name = "diagnosis"]
3354pub enum ClaimDiagnosisDiagnosisTypeChoice {
3355    CodeableConcept(Box<CodeableConcept>),
3356    # [reference (targets = ["Condition"])]
3357    Reference(Box<Reference>),
3358}
3359impl Default for ClaimDiagnosisDiagnosisTypeChoice {
3360    fn default() -> Self {
3361        ClaimDiagnosisDiagnosisTypeChoice::CodeableConcept(Box::new(Default::default()))
3362    }
3363}
3364#[derive(
3365    Clone,
3366    Reflect,
3367    Debug,
3368    Default,
3369    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
3370    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
3371)]
3372#[fhir_serialize_type = "complex"]
3373#[doc = "Information about diagnoses relevant to the claim items."]
3374pub struct ClaimDiagnosis {
3375    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
3376    pub id: Option<String>,
3377    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
3378    pub extension: Option<Vec<Box<Extension>>>,
3379    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
3380    pub modifierExtension: Option<Vec<Box<Extension>>>,
3381    #[primitive]
3382    #[doc = "A number to uniquely identify diagnosis entries."]
3383    pub sequence: Box<FHIRPositiveInt>,
3384    # [type_choice_variants (complex = ["diagnosisCodeableConcept" , "diagnosisReference"] , primitive = [])]
3385    #[doc = "The nature of illness or problem in a coded form or as a reference to an external defined Condition."]
3386    pub diagnosis: ClaimDiagnosisDiagnosisTypeChoice,
3387    #[rename_field = "type"]
3388    #[doc = "When the condition was observed or the relative ranking."]
3389    pub type_: Option<Vec<Box<CodeableConcept>>>,
3390    #[doc = "Indication of whether the diagnosis was present on admission to a facility."]
3391    pub onAdmission: Option<Box<CodeableConcept>>,
3392    #[doc = "A package billing code or bundle code used to group products and services to a particular health condition (such as heart attack) which is based on a predetermined grouping code system."]
3393    pub packageCode: Option<Box<CodeableConcept>>,
3394}
3395#[derive(
3396    Clone,
3397    Reflect,
3398    Debug,
3399    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
3400    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
3401)]
3402#[fhir_serialize_type = "typechoice"]
3403#[type_choice_field_name = "procedure"]
3404pub enum ClaimProcedureProcedureTypeChoice {
3405    CodeableConcept(Box<CodeableConcept>),
3406    # [reference (targets = ["Procedure"])]
3407    Reference(Box<Reference>),
3408}
3409impl Default for ClaimProcedureProcedureTypeChoice {
3410    fn default() -> Self {
3411        ClaimProcedureProcedureTypeChoice::CodeableConcept(Box::new(Default::default()))
3412    }
3413}
3414#[derive(
3415    Clone,
3416    Reflect,
3417    Debug,
3418    Default,
3419    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
3420    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
3421)]
3422#[fhir_serialize_type = "complex"]
3423#[doc = "Procedures performed on the patient relevant to the billing items with the claim."]
3424pub struct ClaimProcedure {
3425    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
3426    pub id: Option<String>,
3427    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
3428    pub extension: Option<Vec<Box<Extension>>>,
3429    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
3430    pub modifierExtension: Option<Vec<Box<Extension>>>,
3431    #[primitive]
3432    #[doc = "A number to uniquely identify procedure entries."]
3433    pub sequence: Box<FHIRPositiveInt>,
3434    #[rename_field = "type"]
3435    #[doc = "When the condition was observed or the relative ranking."]
3436    pub type_: Option<Vec<Box<CodeableConcept>>>,
3437    #[primitive]
3438    #[doc = "Date and optionally time the procedure was performed."]
3439    pub date: Option<Box<FHIRDateTime>>,
3440    # [type_choice_variants (complex = ["procedureCodeableConcept" , "procedureReference"] , primitive = [])]
3441    #[doc = "The code or reference to a Procedure resource which identifies the clinical intervention performed."]
3442    pub procedure: ClaimProcedureProcedureTypeChoice,
3443    # [reference (targets = ["Device"])]
3444    #[doc = "Unique Device Identifiers associated with this line item."]
3445    pub udi: Option<Vec<Box<Reference>>>,
3446}
3447#[derive(
3448    Clone,
3449    Reflect,
3450    Debug,
3451    Default,
3452    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
3453    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
3454)]
3455#[fhir_serialize_type = "complex"]
3456#[doc = "Financial instruments for reimbursement for the health care products and services specified on the claim."]
3457pub struct ClaimInsurance {
3458    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
3459    pub id: Option<String>,
3460    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
3461    pub extension: Option<Vec<Box<Extension>>>,
3462    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
3463    pub modifierExtension: Option<Vec<Box<Extension>>>,
3464    #[primitive]
3465    #[doc = "A number to uniquely identify insurance entries and provide a sequence of coverages to convey coordination of benefit order."]
3466    pub sequence: Box<FHIRPositiveInt>,
3467    #[primitive]
3468    #[doc = "A flag to indicate that this Coverage is to be used for adjudication of this claim when set to true."]
3469    pub focal: Box<FHIRBoolean>,
3470    #[rename_field = "identifier"]
3471    #[doc = "The business identifier to be used when the claim is sent for adjudication against this insurance policy."]
3472    pub identifier_: Option<Box<Identifier>>,
3473    # [reference (targets = ["Coverage"])]
3474    #[doc = "Reference to the insurance card level information contained in the Coverage resource. The coverage issuing insurer will use these details to locate the patient's actual coverage within the insurer's information system."]
3475    pub coverage: Box<Reference>,
3476    #[primitive]
3477    #[doc = "A business agreement number established between the provider and the insurer for special business processing purposes."]
3478    pub businessArrangement: Option<Box<FHIRString>>,
3479    #[primitive]
3480    #[doc = "Reference numbers previously provided by the insurer to the provider to be quoted on subsequent claims containing services or products related to the prior authorization."]
3481    pub preAuthRef: Option<Vec<Box<FHIRString>>>,
3482    # [reference (targets = ["ClaimResponse"])]
3483    #[doc = "The result of the adjudication of the line items for the Coverage specified in this insurance."]
3484    pub claimResponse: Option<Box<Reference>>,
3485}
3486#[derive(
3487    Clone,
3488    Reflect,
3489    Debug,
3490    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
3491    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
3492)]
3493#[fhir_serialize_type = "typechoice"]
3494#[type_choice_field_name = "location"]
3495pub enum ClaimAccidentLocationTypeChoice {
3496    Address(Box<Address>),
3497    # [reference (targets = ["Location"])]
3498    Reference(Box<Reference>),
3499}
3500impl Default for ClaimAccidentLocationTypeChoice {
3501    fn default() -> Self {
3502        ClaimAccidentLocationTypeChoice::Address(Box::new(Default::default()))
3503    }
3504}
3505#[derive(
3506    Clone,
3507    Reflect,
3508    Debug,
3509    Default,
3510    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
3511    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
3512)]
3513#[fhir_serialize_type = "complex"]
3514#[doc = "Details of an accident which resulted in injuries which required the products and services listed in the claim."]
3515pub struct ClaimAccident {
3516    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
3517    pub id: Option<String>,
3518    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
3519    pub extension: Option<Vec<Box<Extension>>>,
3520    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
3521    pub modifierExtension: Option<Vec<Box<Extension>>>,
3522    #[primitive]
3523    #[doc = "Date of an accident event  related to the products and services contained in the claim."]
3524    pub date: Box<FHIRDate>,
3525    #[rename_field = "type"]
3526    #[doc = "The type or context of the accident event for the purposes of selection of potential insurance coverages and determination of coordination between insurers."]
3527    pub type_: Option<Box<CodeableConcept>>,
3528    # [type_choice_variants (complex = ["locationAddress" , "locationReference"] , primitive = [])]
3529    #[doc = "The physical location of the accident event."]
3530    pub location: Option<ClaimAccidentLocationTypeChoice>,
3531}
3532#[derive(
3533    Clone,
3534    Reflect,
3535    Debug,
3536    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
3537    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
3538)]
3539#[fhir_serialize_type = "typechoice"]
3540#[type_choice_field_name = "serviced"]
3541pub enum ClaimItemServicedTypeChoice {
3542    Date(Box<FHIRDate>),
3543    Period(Box<Period>),
3544}
3545impl Default for ClaimItemServicedTypeChoice {
3546    fn default() -> Self {
3547        ClaimItemServicedTypeChoice::Date(Box::new(Default::default()))
3548    }
3549}
3550#[derive(
3551    Clone,
3552    Reflect,
3553    Debug,
3554    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
3555    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
3556)]
3557#[fhir_serialize_type = "typechoice"]
3558#[type_choice_field_name = "location"]
3559pub enum ClaimItemLocationTypeChoice {
3560    CodeableConcept(Box<CodeableConcept>),
3561    Address(Box<Address>),
3562    # [reference (targets = ["Location"])]
3563    Reference(Box<Reference>),
3564}
3565impl Default for ClaimItemLocationTypeChoice {
3566    fn default() -> Self {
3567        ClaimItemLocationTypeChoice::CodeableConcept(Box::new(Default::default()))
3568    }
3569}
3570#[derive(
3571    Clone,
3572    Reflect,
3573    Debug,
3574    Default,
3575    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
3576    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
3577)]
3578#[fhir_serialize_type = "complex"]
3579#[doc = "A claim detail line. Either a simple (a product or service) or a 'group' of sub-details which are simple items."]
3580pub struct ClaimItemDetailSubDetail {
3581    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
3582    pub id: Option<String>,
3583    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
3584    pub extension: Option<Vec<Box<Extension>>>,
3585    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
3586    pub modifierExtension: Option<Vec<Box<Extension>>>,
3587    #[primitive]
3588    #[doc = "A number to uniquely identify item entries."]
3589    pub sequence: Box<FHIRPositiveInt>,
3590    #[doc = "The type of revenue or cost center providing the product and/or service."]
3591    pub revenue: Option<Box<CodeableConcept>>,
3592    #[doc = "Code to identify the general type of benefits under which products and services are provided."]
3593    pub category: Option<Box<CodeableConcept>>,
3594    #[doc = "When the value is a group code then this item collects a set of related claim details, otherwise this contains the product, service, drug or other billing code for the item."]
3595    pub productOrService: Box<CodeableConcept>,
3596    #[doc = "Item typification or modifiers codes to convey additional context for the product or service."]
3597    pub modifier: Option<Vec<Box<CodeableConcept>>>,
3598    #[doc = "Identifies the program under which this may be recovered."]
3599    pub programCode: Option<Vec<Box<CodeableConcept>>>,
3600    #[doc = "The number of repetitions of a service or product."]
3601    pub quantity: Option<Box<Quantity>>,
3602    #[doc = "If the item is not a group then this is the fee for the product or service, otherwise this is the total of the fees for the details of the group."]
3603    pub unitPrice: Option<Box<Money>>,
3604    #[primitive]
3605    #[doc = "A real number that represents a multiplier used in determining the overall value of services delivered and/or goods received. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount."]
3606    pub factor: Option<Box<FHIRDecimal>>,
3607    #[doc = "The quantity times the unit price for an additional service or product or charge."]
3608    pub net: Option<Box<Money>>,
3609    # [reference (targets = ["Device"])]
3610    #[doc = "Unique Device Identifiers associated with this line item."]
3611    pub udi: Option<Vec<Box<Reference>>>,
3612}
3613#[derive(
3614    Clone,
3615    Reflect,
3616    Debug,
3617    Default,
3618    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
3619    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
3620)]
3621#[fhir_serialize_type = "complex"]
3622#[doc = "A claim detail line. Either a simple (a product or service) or a 'group' of sub-details which are simple items."]
3623pub struct ClaimItemDetail {
3624    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
3625    pub id: Option<String>,
3626    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
3627    pub extension: Option<Vec<Box<Extension>>>,
3628    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
3629    pub modifierExtension: Option<Vec<Box<Extension>>>,
3630    #[primitive]
3631    #[doc = "A number to uniquely identify item entries."]
3632    pub sequence: Box<FHIRPositiveInt>,
3633    #[doc = "The type of revenue or cost center providing the product and/or service."]
3634    pub revenue: Option<Box<CodeableConcept>>,
3635    #[doc = "Code to identify the general type of benefits under which products and services are provided."]
3636    pub category: Option<Box<CodeableConcept>>,
3637    #[doc = "When the value is a group code then this item collects a set of related claim details, otherwise this contains the product, service, drug or other billing code for the item."]
3638    pub productOrService: Box<CodeableConcept>,
3639    #[doc = "Item typification or modifiers codes to convey additional context for the product or service."]
3640    pub modifier: Option<Vec<Box<CodeableConcept>>>,
3641    #[doc = "Identifies the program under which this may be recovered."]
3642    pub programCode: Option<Vec<Box<CodeableConcept>>>,
3643    #[doc = "The number of repetitions of a service or product."]
3644    pub quantity: Option<Box<Quantity>>,
3645    #[doc = "If the item is not a group then this is the fee for the product or service, otherwise this is the total of the fees for the details of the group."]
3646    pub unitPrice: Option<Box<Money>>,
3647    #[primitive]
3648    #[doc = "A real number that represents a multiplier used in determining the overall value of services delivered and/or goods received. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount."]
3649    pub factor: Option<Box<FHIRDecimal>>,
3650    #[doc = "The quantity times the unit price for an additional service or product or charge."]
3651    pub net: Option<Box<Money>>,
3652    # [reference (targets = ["Device"])]
3653    #[doc = "Unique Device Identifiers associated with this line item."]
3654    pub udi: Option<Vec<Box<Reference>>>,
3655    #[doc = "A claim detail line. Either a simple (a product or service) or a 'group' of sub-details which are simple items."]
3656    pub subDetail: Option<Vec<ClaimItemDetailSubDetail>>,
3657}
3658#[derive(
3659    Clone,
3660    Reflect,
3661    Debug,
3662    Default,
3663    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
3664    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
3665)]
3666#[fhir_serialize_type = "complex"]
3667#[doc = "A claim line. Either a simple  product or service or a 'group' of details which can each be a simple items or groups of sub-details."]
3668pub struct ClaimItem {
3669    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
3670    pub id: Option<String>,
3671    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
3672    pub extension: Option<Vec<Box<Extension>>>,
3673    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
3674    pub modifierExtension: Option<Vec<Box<Extension>>>,
3675    #[primitive]
3676    #[doc = "A number to uniquely identify item entries."]
3677    pub sequence: Box<FHIRPositiveInt>,
3678    #[primitive]
3679    #[doc = "CareTeam members related to this service or product."]
3680    pub careTeamSequence: Option<Vec<Box<FHIRPositiveInt>>>,
3681    #[primitive]
3682    #[doc = "Diagnosis applicable for this service or product."]
3683    pub diagnosisSequence: Option<Vec<Box<FHIRPositiveInt>>>,
3684    #[primitive]
3685    #[doc = "Procedures applicable for this service or product."]
3686    pub procedureSequence: Option<Vec<Box<FHIRPositiveInt>>>,
3687    #[primitive]
3688    #[doc = "Exceptions, special conditions and supporting information applicable for this service or product."]
3689    pub informationSequence: Option<Vec<Box<FHIRPositiveInt>>>,
3690    #[doc = "The type of revenue or cost center providing the product and/or service."]
3691    pub revenue: Option<Box<CodeableConcept>>,
3692    #[doc = "Code to identify the general type of benefits under which products and services are provided."]
3693    pub category: Option<Box<CodeableConcept>>,
3694    #[doc = "When the value is a group code then this item collects a set of related claim details, otherwise this contains the product, service, drug or other billing code for the item."]
3695    pub productOrService: Box<CodeableConcept>,
3696    #[doc = "Item typification or modifiers codes to convey additional context for the product or service."]
3697    pub modifier: Option<Vec<Box<CodeableConcept>>>,
3698    #[doc = "Identifies the program under which this may be recovered."]
3699    pub programCode: Option<Vec<Box<CodeableConcept>>>,
3700    # [type_choice_variants (complex = ["servicedPeriod"] , primitive = ["servicedDate"])]
3701    #[doc = "The date or dates when the service or product was supplied, performed or completed."]
3702    pub serviced: Option<ClaimItemServicedTypeChoice>,
3703    # [type_choice_variants (complex = ["locationCodeableConcept" , "locationAddress" , "locationReference"] , primitive = [])]
3704    #[doc = "Where the product or service was provided."]
3705    pub location: Option<ClaimItemLocationTypeChoice>,
3706    #[doc = "The number of repetitions of a service or product."]
3707    pub quantity: Option<Box<Quantity>>,
3708    #[doc = "If the item is not a group then this is the fee for the product or service, otherwise this is the total of the fees for the details of the group."]
3709    pub unitPrice: Option<Box<Money>>,
3710    #[primitive]
3711    #[doc = "A real number that represents a multiplier used in determining the overall value of services delivered and/or goods received. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount."]
3712    pub factor: Option<Box<FHIRDecimal>>,
3713    #[doc = "The quantity times the unit price for an additional service or product or charge."]
3714    pub net: Option<Box<Money>>,
3715    # [reference (targets = ["Device"])]
3716    #[doc = "Unique Device Identifiers associated with this line item."]
3717    pub udi: Option<Vec<Box<Reference>>>,
3718    #[doc = "Physical service site on the patient (limb, tooth, etc.)."]
3719    pub bodySite: Option<Box<CodeableConcept>>,
3720    #[doc = "A region or surface of the bodySite, e.g. limb region or tooth surface(s)."]
3721    pub subSite: Option<Vec<Box<CodeableConcept>>>,
3722    # [reference (targets = ["Encounter"])]
3723    #[doc = "The Encounters during which this Claim was created or to which the creation of this record is tightly associated."]
3724    pub encounter: Option<Vec<Box<Reference>>>,
3725    #[doc = "A claim detail line. Either a simple (a product or service) or a 'group' of sub-details which are simple items."]
3726    pub detail: Option<Vec<ClaimItemDetail>>,
3727}
3728#[derive(
3729    Clone,
3730    Reflect,
3731    Debug,
3732    Default,
3733    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
3734    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
3735)]
3736#[fhir_serialize_type = "resource"]
3737#[doc = "A provider issued list of professional services and products which have been provided, or are to be provided, to a patient which is sent to an insurer for reimbursement."]
3738pub struct Claim {
3739    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
3740    pub id: Option<String>,
3741    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
3742    pub meta: Option<Box<Meta>>,
3743    #[primitive]
3744    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
3745    pub implicitRules: Option<Box<FHIRUri>>,
3746    #[primitive]
3747    #[doc = "The base language in which the resource is written."]
3748    pub language: Option<Box<FHIRCode>>,
3749    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
3750    pub text: Option<Box<Narrative>>,
3751    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
3752    pub contained: Option<Vec<Box<Resource>>>,
3753    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
3754    pub extension: Option<Vec<Box<Extension>>>,
3755    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
3756    pub modifierExtension: Option<Vec<Box<Extension>>>,
3757    #[rename_field = "identifier"]
3758    #[doc = "A unique identifier assigned to this claim."]
3759    pub identifier_: Option<Vec<Box<Identifier>>>,
3760    #[primitive]
3761    #[doc = "The status of the resource instance."]
3762    pub status: Box<terminology::FmStatus>,
3763    #[rename_field = "type"]
3764    #[doc = "The category of claim, e.g. oral, pharmacy, vision, institutional, professional."]
3765    pub type_: Box<CodeableConcept>,
3766    #[doc = "A finer grained suite of claim type codes which may convey additional information such as Inpatient vs Outpatient and/or a specialty service."]
3767    pub subType: Option<Box<CodeableConcept>>,
3768    #[rename_field = "use"]
3769    #[primitive]
3770    #[doc = "A code to indicate whether the nature of the request is: to request adjudication of products and services previously rendered; or requesting authorization and adjudication for provision in the future; or requesting the non-binding adjudication of the listed products and services which could be provided in the future."]
3771    pub use_: Box<terminology::ClaimUse>,
3772    # [reference (targets = ["Patient"])]
3773    #[doc = "The party to whom the professional services and/or products have been supplied or are being considered and for whom actual or forecast reimbursement is sought."]
3774    pub patient: Box<Reference>,
3775    #[doc = "The period for which charges are being submitted."]
3776    pub billablePeriod: Option<Box<Period>>,
3777    #[primitive]
3778    #[doc = "The date this resource was created."]
3779    pub created: Box<FHIRDateTime>,
3780    # [reference (targets = ["Practitioner" , "PractitionerRole"])]
3781    #[doc = "Individual who created the claim, predetermination or preauthorization."]
3782    pub enterer: Option<Box<Reference>>,
3783    # [reference (targets = ["Organization"])]
3784    #[doc = "The Insurer who is target of the request."]
3785    pub insurer: Option<Box<Reference>>,
3786    # [reference (targets = ["Practitioner" , "PractitionerRole" , "Organization"])]
3787    #[doc = "The provider which is responsible for the claim, predetermination or preauthorization."]
3788    pub provider: Box<Reference>,
3789    #[doc = "The provider-required urgency of processing the request. Typical values include: stat, routine deferred."]
3790    pub priority: Box<CodeableConcept>,
3791    #[doc = "A code to indicate whether and for whom funds are to be reserved for future claims."]
3792    pub fundsReserve: Option<Box<CodeableConcept>>,
3793    #[doc = "Other claims which are related to this claim such as prior submissions or claims for related services or for the same event."]
3794    pub related: Option<Vec<ClaimRelated>>,
3795    # [reference (targets = ["DeviceRequest" , "MedicationRequest" , "VisionPrescription"])]
3796    #[doc = "Prescription to support the dispensing of pharmacy, device or vision products."]
3797    pub prescription: Option<Box<Reference>>,
3798    # [reference (targets = ["DeviceRequest" , "MedicationRequest" , "VisionPrescription"])]
3799    #[doc = "Original prescription which has been superseded by this prescription to support the dispensing of pharmacy services, medications or products."]
3800    pub originalPrescription: Option<Box<Reference>>,
3801    #[doc = "The party to be reimbursed for cost of the products and services according to the terms of the policy."]
3802    pub payee: Option<ClaimPayee>,
3803    # [reference (targets = ["ServiceRequest"])]
3804    #[doc = "A reference to a referral resource."]
3805    pub referral: Option<Box<Reference>>,
3806    # [reference (targets = ["Location"])]
3807    #[doc = "Facility where the services were provided."]
3808    pub facility: Option<Box<Reference>>,
3809    #[doc = "The members of the team who provided the products and services."]
3810    pub careTeam: Option<Vec<ClaimCareTeam>>,
3811    #[doc = "Additional information codes regarding exceptions, special considerations, the condition, situation, prior or concurrent issues."]
3812    pub supportingInfo: Option<Vec<ClaimSupportingInfo>>,
3813    #[doc = "Information about diagnoses relevant to the claim items."]
3814    pub diagnosis: Option<Vec<ClaimDiagnosis>>,
3815    #[doc = "Procedures performed on the patient relevant to the billing items with the claim."]
3816    pub procedure: Option<Vec<ClaimProcedure>>,
3817    #[cardinality(min = 1usize)]
3818    #[doc = "Financial instruments for reimbursement for the health care products and services specified on the claim."]
3819    pub insurance: Vec<ClaimInsurance>,
3820    #[doc = "Details of an accident which resulted in injuries which required the products and services listed in the claim."]
3821    pub accident: Option<ClaimAccident>,
3822    #[doc = "A claim line. Either a simple  product or service or a 'group' of details which can each be a simple items or groups of sub-details."]
3823    pub item: Option<Vec<ClaimItem>>,
3824    #[doc = "The total value of the all the items in the claim."]
3825    pub total: Option<Box<Money>>,
3826}
3827#[derive(
3828    Clone,
3829    Reflect,
3830    Debug,
3831    Default,
3832    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
3833    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
3834)]
3835#[fhir_serialize_type = "complex"]
3836#[doc = "If this item is a group then the values here are a summary of the adjudication of the detail items. If this item is a simple product or service then this is the result of the adjudication of this item."]
3837pub struct ClaimResponseItemAdjudication {
3838    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
3839    pub id: Option<String>,
3840    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
3841    pub extension: Option<Vec<Box<Extension>>>,
3842    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
3843    pub modifierExtension: Option<Vec<Box<Extension>>>,
3844    #[doc = "A code to indicate the information type of this adjudication record. Information types may include the value submitted, maximum values or percentages allowed or payable under the plan, amounts that: the patient is responsible for in aggregate or pertaining to this item; amounts paid by other coverages; and, the benefit payable for this item."]
3845    pub category: Box<CodeableConcept>,
3846    #[doc = "A code supporting the understanding of the adjudication result and explaining variance from expected amount."]
3847    pub reason: Option<Box<CodeableConcept>>,
3848    #[doc = "Monetary amount associated with the category."]
3849    pub amount: Option<Box<Money>>,
3850    #[primitive]
3851    #[doc = "A non-monetary value associated with the category. Mutually exclusive to the amount element above."]
3852    pub value: Option<Box<FHIRDecimal>>,
3853}
3854#[derive(
3855    Clone,
3856    Reflect,
3857    Debug,
3858    Default,
3859    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
3860    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
3861)]
3862#[fhir_serialize_type = "complex"]
3863#[doc = "A sub-detail adjudication of a simple product or service."]
3864pub struct ClaimResponseItemDetailSubDetail {
3865    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
3866    pub id: Option<String>,
3867    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
3868    pub extension: Option<Vec<Box<Extension>>>,
3869    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
3870    pub modifierExtension: Option<Vec<Box<Extension>>>,
3871    #[primitive]
3872    #[doc = "A number to uniquely reference the claim sub-detail entry."]
3873    pub subDetailSequence: Box<FHIRPositiveInt>,
3874    #[primitive]
3875    #[doc = "The numbers associated with notes below which apply to the adjudication of this item."]
3876    pub noteNumber: Option<Vec<Box<FHIRPositiveInt>>>,
3877    #[doc = "The adjudication results."]
3878    pub adjudication: Option<Vec<ClaimResponseItemAdjudication>>,
3879}
3880#[derive(
3881    Clone,
3882    Reflect,
3883    Debug,
3884    Default,
3885    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
3886    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
3887)]
3888#[fhir_serialize_type = "complex"]
3889#[doc = "A claim detail. Either a simple (a product or service) or a 'group' of sub-details which are simple items."]
3890pub struct ClaimResponseItemDetail {
3891    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
3892    pub id: Option<String>,
3893    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
3894    pub extension: Option<Vec<Box<Extension>>>,
3895    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
3896    pub modifierExtension: Option<Vec<Box<Extension>>>,
3897    #[primitive]
3898    #[doc = "A number to uniquely reference the claim detail entry."]
3899    pub detailSequence: Box<FHIRPositiveInt>,
3900    #[primitive]
3901    #[doc = "The numbers associated with notes below which apply to the adjudication of this item."]
3902    pub noteNumber: Option<Vec<Box<FHIRPositiveInt>>>,
3903    #[cardinality(min = 1usize)]
3904    #[doc = "The adjudication results."]
3905    pub adjudication: Vec<ClaimResponseItemAdjudication>,
3906    #[doc = "A sub-detail adjudication of a simple product or service."]
3907    pub subDetail: Option<Vec<ClaimResponseItemDetailSubDetail>>,
3908}
3909#[derive(
3910    Clone,
3911    Reflect,
3912    Debug,
3913    Default,
3914    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
3915    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
3916)]
3917#[fhir_serialize_type = "complex"]
3918#[doc = "A claim line. Either a simple (a product or service) or a 'group' of details which can also be a simple items or groups of sub-details."]
3919pub struct ClaimResponseItem {
3920    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
3921    pub id: Option<String>,
3922    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
3923    pub extension: Option<Vec<Box<Extension>>>,
3924    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
3925    pub modifierExtension: Option<Vec<Box<Extension>>>,
3926    #[primitive]
3927    #[doc = "A number to uniquely reference the claim item entries."]
3928    pub itemSequence: Box<FHIRPositiveInt>,
3929    #[primitive]
3930    #[doc = "The numbers associated with notes below which apply to the adjudication of this item."]
3931    pub noteNumber: Option<Vec<Box<FHIRPositiveInt>>>,
3932    #[cardinality(min = 1usize)]
3933    #[doc = "If this item is a group then the values here are a summary of the adjudication of the detail items. If this item is a simple product or service then this is the result of the adjudication of this item."]
3934    pub adjudication: Vec<ClaimResponseItemAdjudication>,
3935    #[doc = "A claim detail. Either a simple (a product or service) or a 'group' of sub-details which are simple items."]
3936    pub detail: Option<Vec<ClaimResponseItemDetail>>,
3937}
3938#[derive(
3939    Clone,
3940    Reflect,
3941    Debug,
3942    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
3943    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
3944)]
3945#[fhir_serialize_type = "typechoice"]
3946#[type_choice_field_name = "serviced"]
3947pub enum ClaimResponseAddItemServicedTypeChoice {
3948    Date(Box<FHIRDate>),
3949    Period(Box<Period>),
3950}
3951impl Default for ClaimResponseAddItemServicedTypeChoice {
3952    fn default() -> Self {
3953        ClaimResponseAddItemServicedTypeChoice::Date(Box::new(Default::default()))
3954    }
3955}
3956#[derive(
3957    Clone,
3958    Reflect,
3959    Debug,
3960    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
3961    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
3962)]
3963#[fhir_serialize_type = "typechoice"]
3964#[type_choice_field_name = "location"]
3965pub enum ClaimResponseAddItemLocationTypeChoice {
3966    CodeableConcept(Box<CodeableConcept>),
3967    Address(Box<Address>),
3968    # [reference (targets = ["Location"])]
3969    Reference(Box<Reference>),
3970}
3971impl Default for ClaimResponseAddItemLocationTypeChoice {
3972    fn default() -> Self {
3973        ClaimResponseAddItemLocationTypeChoice::CodeableConcept(Box::new(Default::default()))
3974    }
3975}
3976#[derive(
3977    Clone,
3978    Reflect,
3979    Debug,
3980    Default,
3981    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
3982    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
3983)]
3984#[fhir_serialize_type = "complex"]
3985#[doc = "The third-tier service adjudications for payor added services."]
3986pub struct ClaimResponseAddItemDetailSubDetail {
3987    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
3988    pub id: Option<String>,
3989    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
3990    pub extension: Option<Vec<Box<Extension>>>,
3991    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
3992    pub modifierExtension: Option<Vec<Box<Extension>>>,
3993    #[doc = "When the value is a group code then this item collects a set of related claim details, otherwise this contains the product, service, drug or other billing code for the item."]
3994    pub productOrService: Box<CodeableConcept>,
3995    #[doc = "Item typification or modifiers codes to convey additional context for the product or service."]
3996    pub modifier: Option<Vec<Box<CodeableConcept>>>,
3997    #[doc = "The number of repetitions of a service or product."]
3998    pub quantity: Option<Box<Quantity>>,
3999    #[doc = "If the item is not a group then this is the fee for the product or service, otherwise this is the total of the fees for the details of the group."]
4000    pub unitPrice: Option<Box<Money>>,
4001    #[primitive]
4002    #[doc = "A real number that represents a multiplier used in determining the overall value of services delivered and/or goods received. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount."]
4003    pub factor: Option<Box<FHIRDecimal>>,
4004    #[doc = "The quantity times the unit price for an additional service or product or charge."]
4005    pub net: Option<Box<Money>>,
4006    #[primitive]
4007    #[doc = "The numbers associated with notes below which apply to the adjudication of this item."]
4008    pub noteNumber: Option<Vec<Box<FHIRPositiveInt>>>,
4009    #[cardinality(min = 1usize)]
4010    #[doc = "The adjudication results."]
4011    pub adjudication: Vec<ClaimResponseItemAdjudication>,
4012}
4013#[derive(
4014    Clone,
4015    Reflect,
4016    Debug,
4017    Default,
4018    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
4019    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
4020)]
4021#[fhir_serialize_type = "complex"]
4022#[doc = "The second-tier service adjudications for payor added services."]
4023pub struct ClaimResponseAddItemDetail {
4024    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
4025    pub id: Option<String>,
4026    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
4027    pub extension: Option<Vec<Box<Extension>>>,
4028    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
4029    pub modifierExtension: Option<Vec<Box<Extension>>>,
4030    #[doc = "When the value is a group code then this item collects a set of related claim details, otherwise this contains the product, service, drug or other billing code for the item."]
4031    pub productOrService: Box<CodeableConcept>,
4032    #[doc = "Item typification or modifiers codes to convey additional context for the product or service."]
4033    pub modifier: Option<Vec<Box<CodeableConcept>>>,
4034    #[doc = "The number of repetitions of a service or product."]
4035    pub quantity: Option<Box<Quantity>>,
4036    #[doc = "If the item is not a group then this is the fee for the product or service, otherwise this is the total of the fees for the details of the group."]
4037    pub unitPrice: Option<Box<Money>>,
4038    #[primitive]
4039    #[doc = "A real number that represents a multiplier used in determining the overall value of services delivered and/or goods received. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount."]
4040    pub factor: Option<Box<FHIRDecimal>>,
4041    #[doc = "The quantity times the unit price for an additional service or product or charge."]
4042    pub net: Option<Box<Money>>,
4043    #[primitive]
4044    #[doc = "The numbers associated with notes below which apply to the adjudication of this item."]
4045    pub noteNumber: Option<Vec<Box<FHIRPositiveInt>>>,
4046    #[cardinality(min = 1usize)]
4047    #[doc = "The adjudication results."]
4048    pub adjudication: Vec<ClaimResponseItemAdjudication>,
4049    #[doc = "The third-tier service adjudications for payor added services."]
4050    pub subDetail: Option<Vec<ClaimResponseAddItemDetailSubDetail>>,
4051}
4052#[derive(
4053    Clone,
4054    Reflect,
4055    Debug,
4056    Default,
4057    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
4058    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
4059)]
4060#[fhir_serialize_type = "complex"]
4061#[doc = "The first-tier service adjudications for payor added product or service lines."]
4062pub struct ClaimResponseAddItem {
4063    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
4064    pub id: Option<String>,
4065    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
4066    pub extension: Option<Vec<Box<Extension>>>,
4067    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
4068    pub modifierExtension: Option<Vec<Box<Extension>>>,
4069    #[primitive]
4070    #[doc = "Claim items which this service line is intended to replace."]
4071    pub itemSequence: Option<Vec<Box<FHIRPositiveInt>>>,
4072    #[primitive]
4073    #[doc = "The sequence number of the details within the claim item which this line is intended to replace."]
4074    pub detailSequence: Option<Vec<Box<FHIRPositiveInt>>>,
4075    #[primitive]
4076    #[doc = "The sequence number of the sub-details within the details within the claim item which this line is intended to replace."]
4077    pub subdetailSequence: Option<Vec<Box<FHIRPositiveInt>>>,
4078    # [reference (targets = ["Practitioner" , "PractitionerRole" , "Organization"])]
4079    #[doc = "The providers who are authorized for the services rendered to the patient."]
4080    pub provider: Option<Vec<Box<Reference>>>,
4081    #[doc = "When the value is a group code then this item collects a set of related claim details, otherwise this contains the product, service, drug or other billing code for the item."]
4082    pub productOrService: Box<CodeableConcept>,
4083    #[doc = "Item typification or modifiers codes to convey additional context for the product or service."]
4084    pub modifier: Option<Vec<Box<CodeableConcept>>>,
4085    #[doc = "Identifies the program under which this may be recovered."]
4086    pub programCode: Option<Vec<Box<CodeableConcept>>>,
4087    # [type_choice_variants (complex = ["servicedPeriod"] , primitive = ["servicedDate"])]
4088    #[doc = "The date or dates when the service or product was supplied, performed or completed."]
4089    pub serviced: Option<ClaimResponseAddItemServicedTypeChoice>,
4090    # [type_choice_variants (complex = ["locationCodeableConcept" , "locationAddress" , "locationReference"] , primitive = [])]
4091    #[doc = "Where the product or service was provided."]
4092    pub location: Option<ClaimResponseAddItemLocationTypeChoice>,
4093    #[doc = "The number of repetitions of a service or product."]
4094    pub quantity: Option<Box<Quantity>>,
4095    #[doc = "If the item is not a group then this is the fee for the product or service, otherwise this is the total of the fees for the details of the group."]
4096    pub unitPrice: Option<Box<Money>>,
4097    #[primitive]
4098    #[doc = "A real number that represents a multiplier used in determining the overall value of services delivered and/or goods received. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount."]
4099    pub factor: Option<Box<FHIRDecimal>>,
4100    #[doc = "The quantity times the unit price for an additional service or product or charge."]
4101    pub net: Option<Box<Money>>,
4102    #[doc = "Physical service site on the patient (limb, tooth, etc.)."]
4103    pub bodySite: Option<Box<CodeableConcept>>,
4104    #[doc = "A region or surface of the bodySite, e.g. limb region or tooth surface(s)."]
4105    pub subSite: Option<Vec<Box<CodeableConcept>>>,
4106    #[primitive]
4107    #[doc = "The numbers associated with notes below which apply to the adjudication of this item."]
4108    pub noteNumber: Option<Vec<Box<FHIRPositiveInt>>>,
4109    #[cardinality(min = 1usize)]
4110    #[doc = "The adjudication results."]
4111    pub adjudication: Vec<ClaimResponseItemAdjudication>,
4112    #[doc = "The second-tier service adjudications for payor added services."]
4113    pub detail: Option<Vec<ClaimResponseAddItemDetail>>,
4114}
4115#[derive(
4116    Clone,
4117    Reflect,
4118    Debug,
4119    Default,
4120    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
4121    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
4122)]
4123#[fhir_serialize_type = "complex"]
4124#[doc = "Categorized monetary totals for the adjudication."]
4125pub struct ClaimResponseTotal {
4126    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
4127    pub id: Option<String>,
4128    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
4129    pub extension: Option<Vec<Box<Extension>>>,
4130    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
4131    pub modifierExtension: Option<Vec<Box<Extension>>>,
4132    #[doc = "A code to indicate the information type of this adjudication record. Information types may include: the value submitted, maximum values or percentages allowed or payable under the plan, amounts that the patient is responsible for in aggregate or pertaining to this item, amounts paid by other coverages, and the benefit payable for this item."]
4133    pub category: Box<CodeableConcept>,
4134    #[doc = "Monetary total amount associated with the category."]
4135    pub amount: Box<Money>,
4136}
4137#[derive(
4138    Clone,
4139    Reflect,
4140    Debug,
4141    Default,
4142    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
4143    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
4144)]
4145#[fhir_serialize_type = "complex"]
4146#[doc = "Payment details for the adjudication of the claim."]
4147pub struct ClaimResponsePayment {
4148    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
4149    pub id: Option<String>,
4150    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
4151    pub extension: Option<Vec<Box<Extension>>>,
4152    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
4153    pub modifierExtension: Option<Vec<Box<Extension>>>,
4154    #[rename_field = "type"]
4155    #[doc = "Whether this represents partial or complete payment of the benefits payable."]
4156    pub type_: Box<CodeableConcept>,
4157    #[doc = "Total amount of all adjustments to this payment included in this transaction which are not related to this claim's adjudication."]
4158    pub adjustment: Option<Box<Money>>,
4159    #[doc = "Reason for the payment adjustment."]
4160    pub adjustmentReason: Option<Box<CodeableConcept>>,
4161    #[primitive]
4162    #[doc = "Estimated date the payment will be issued or the actual issue date of payment."]
4163    pub date: Option<Box<FHIRDate>>,
4164    #[doc = "Benefits payable less any payment adjustment."]
4165    pub amount: Box<Money>,
4166    #[rename_field = "identifier"]
4167    #[doc = "Issuer's unique identifier for the payment instrument."]
4168    pub identifier_: Option<Box<Identifier>>,
4169}
4170#[derive(
4171    Clone,
4172    Reflect,
4173    Debug,
4174    Default,
4175    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
4176    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
4177)]
4178#[fhir_serialize_type = "complex"]
4179#[doc = "A note that describes or explains adjudication results in a human readable form."]
4180pub struct ClaimResponseProcessNote {
4181    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
4182    pub id: Option<String>,
4183    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
4184    pub extension: Option<Vec<Box<Extension>>>,
4185    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
4186    pub modifierExtension: Option<Vec<Box<Extension>>>,
4187    #[primitive]
4188    #[doc = "A number to uniquely identify a note entry."]
4189    pub number: Option<Box<FHIRPositiveInt>>,
4190    #[rename_field = "type"]
4191    #[primitive]
4192    #[doc = "The business purpose of the note text."]
4193    pub type_: Option<Box<terminology::NoteType>>,
4194    #[primitive]
4195    #[doc = "The explanation or description associated with the processing."]
4196    pub text: Box<FHIRString>,
4197    #[doc = "A code to define the language used in the text of the note."]
4198    pub language: Option<Box<CodeableConcept>>,
4199}
4200#[derive(
4201    Clone,
4202    Reflect,
4203    Debug,
4204    Default,
4205    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
4206    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
4207)]
4208#[fhir_serialize_type = "complex"]
4209#[doc = "Financial instruments for reimbursement for the health care products and services specified on the claim."]
4210pub struct ClaimResponseInsurance {
4211    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
4212    pub id: Option<String>,
4213    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
4214    pub extension: Option<Vec<Box<Extension>>>,
4215    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
4216    pub modifierExtension: Option<Vec<Box<Extension>>>,
4217    #[primitive]
4218    #[doc = "A number to uniquely identify insurance entries and provide a sequence of coverages to convey coordination of benefit order."]
4219    pub sequence: Box<FHIRPositiveInt>,
4220    #[primitive]
4221    #[doc = "A flag to indicate that this Coverage is to be used for adjudication of this claim when set to true."]
4222    pub focal: Box<FHIRBoolean>,
4223    # [reference (targets = ["Coverage"])]
4224    #[doc = "Reference to the insurance card level information contained in the Coverage resource. The coverage issuing insurer will use these details to locate the patient's actual coverage within the insurer's information system."]
4225    pub coverage: Box<Reference>,
4226    #[primitive]
4227    #[doc = "A business agreement number established between the provider and the insurer for special business processing purposes."]
4228    pub businessArrangement: Option<Box<FHIRString>>,
4229    # [reference (targets = ["ClaimResponse"])]
4230    #[doc = "The result of the adjudication of the line items for the Coverage specified in this insurance."]
4231    pub claimResponse: Option<Box<Reference>>,
4232}
4233#[derive(
4234    Clone,
4235    Reflect,
4236    Debug,
4237    Default,
4238    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
4239    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
4240)]
4241#[fhir_serialize_type = "complex"]
4242#[doc = "Errors encountered during the processing of the adjudication."]
4243pub struct ClaimResponseError {
4244    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
4245    pub id: Option<String>,
4246    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
4247    pub extension: Option<Vec<Box<Extension>>>,
4248    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
4249    pub modifierExtension: Option<Vec<Box<Extension>>>,
4250    #[primitive]
4251    #[doc = "The sequence number of the line item submitted which contains the error. This value is omitted when the error occurs outside of the item structure."]
4252    pub itemSequence: Option<Box<FHIRPositiveInt>>,
4253    #[primitive]
4254    #[doc = "The sequence number of the detail within the line item submitted which contains the error. This value is omitted when the error occurs outside of the item structure."]
4255    pub detailSequence: Option<Box<FHIRPositiveInt>>,
4256    #[primitive]
4257    #[doc = "The sequence number of the sub-detail within the detail within the line item submitted which contains the error. This value is omitted when the error occurs outside of the item structure."]
4258    pub subDetailSequence: Option<Box<FHIRPositiveInt>>,
4259    #[doc = "An error code, from a specified code system, which details why the claim could not be adjudicated."]
4260    pub code: Box<CodeableConcept>,
4261}
4262#[derive(
4263    Clone,
4264    Reflect,
4265    Debug,
4266    Default,
4267    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
4268    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
4269)]
4270#[fhir_serialize_type = "resource"]
4271#[doc = "This resource provides the adjudication details from the processing of a Claim resource."]
4272pub struct ClaimResponse {
4273    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
4274    pub id: Option<String>,
4275    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
4276    pub meta: Option<Box<Meta>>,
4277    #[primitive]
4278    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
4279    pub implicitRules: Option<Box<FHIRUri>>,
4280    #[primitive]
4281    #[doc = "The base language in which the resource is written."]
4282    pub language: Option<Box<FHIRCode>>,
4283    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
4284    pub text: Option<Box<Narrative>>,
4285    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
4286    pub contained: Option<Vec<Box<Resource>>>,
4287    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
4288    pub extension: Option<Vec<Box<Extension>>>,
4289    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
4290    pub modifierExtension: Option<Vec<Box<Extension>>>,
4291    #[rename_field = "identifier"]
4292    #[doc = "A unique identifier assigned to this claim response."]
4293    pub identifier_: Option<Vec<Box<Identifier>>>,
4294    #[primitive]
4295    #[doc = "The status of the resource instance."]
4296    pub status: Box<terminology::FmStatus>,
4297    #[rename_field = "type"]
4298    #[doc = "A finer grained suite of claim type codes which may convey additional information such as Inpatient vs Outpatient and/or a specialty service."]
4299    pub type_: Box<CodeableConcept>,
4300    #[doc = "A finer grained suite of claim type codes which may convey additional information such as Inpatient vs Outpatient and/or a specialty service."]
4301    pub subType: Option<Box<CodeableConcept>>,
4302    #[rename_field = "use"]
4303    #[primitive]
4304    #[doc = "A code to indicate whether the nature of the request is: to request adjudication of products and services previously rendered; or requesting authorization and adjudication for provision in the future; or requesting the non-binding adjudication of the listed products and services which could be provided in the future."]
4305    pub use_: Box<terminology::ClaimUse>,
4306    # [reference (targets = ["Patient"])]
4307    #[doc = "The party to whom the professional services and/or products have been supplied or are being considered and for whom actual for facast reimbursement is sought."]
4308    pub patient: Box<Reference>,
4309    #[primitive]
4310    #[doc = "The date this resource was created."]
4311    pub created: Box<FHIRDateTime>,
4312    # [reference (targets = ["Organization"])]
4313    #[doc = "The party responsible for authorization, adjudication and reimbursement."]
4314    pub insurer: Box<Reference>,
4315    # [reference (targets = ["Practitioner" , "PractitionerRole" , "Organization"])]
4316    #[doc = "The provider which is responsible for the claim, predetermination or preauthorization."]
4317    pub requestor: Option<Box<Reference>>,
4318    # [reference (targets = ["Claim"])]
4319    #[doc = "Original request resource reference."]
4320    pub request: Option<Box<Reference>>,
4321    #[primitive]
4322    #[doc = "The outcome of the claim, predetermination, or preauthorization processing."]
4323    pub outcome: Box<terminology::RemittanceOutcome>,
4324    #[primitive]
4325    #[doc = "A human readable description of the status of the adjudication."]
4326    pub disposition: Option<Box<FHIRString>>,
4327    #[primitive]
4328    #[doc = "Reference from the Insurer which is used in later communications which refers to this adjudication."]
4329    pub preAuthRef: Option<Box<FHIRString>>,
4330    #[doc = "The time frame during which this authorization is effective."]
4331    pub preAuthPeriod: Option<Box<Period>>,
4332    #[doc = "Type of Party to be reimbursed: subscriber, provider, other."]
4333    pub payeeType: Option<Box<CodeableConcept>>,
4334    #[doc = "A claim line. Either a simple (a product or service) or a 'group' of details which can also be a simple items or groups of sub-details."]
4335    pub item: Option<Vec<ClaimResponseItem>>,
4336    #[doc = "The first-tier service adjudications for payor added product or service lines."]
4337    pub addItem: Option<Vec<ClaimResponseAddItem>>,
4338    #[doc = "The adjudication results which are presented at the header level rather than at the line-item or add-item levels."]
4339    pub adjudication: Option<Vec<ClaimResponseItemAdjudication>>,
4340    #[doc = "Categorized monetary totals for the adjudication."]
4341    pub total: Option<Vec<ClaimResponseTotal>>,
4342    #[doc = "Payment details for the adjudication of the claim."]
4343    pub payment: Option<ClaimResponsePayment>,
4344    #[doc = "A code, used only on a response to a preauthorization, to indicate whether the benefits payable have been reserved and for whom."]
4345    pub fundsReserve: Option<Box<CodeableConcept>>,
4346    #[doc = "A code for the form to be used for printing the content."]
4347    pub formCode: Option<Box<CodeableConcept>>,
4348    #[doc = "The actual form, by reference or inclusion, for printing the content or an EOB."]
4349    pub form: Option<Box<Attachment>>,
4350    #[doc = "A note that describes or explains adjudication results in a human readable form."]
4351    pub processNote: Option<Vec<ClaimResponseProcessNote>>,
4352    # [reference (targets = ["CommunicationRequest"])]
4353    #[doc = "Request for additional supporting or authorizing information."]
4354    pub communicationRequest: Option<Vec<Box<Reference>>>,
4355    #[doc = "Financial instruments for reimbursement for the health care products and services specified on the claim."]
4356    pub insurance: Option<Vec<ClaimResponseInsurance>>,
4357    #[doc = "Errors encountered during the processing of the adjudication."]
4358    pub error: Option<Vec<ClaimResponseError>>,
4359}
4360#[derive(
4361    Clone,
4362    Reflect,
4363    Debug,
4364    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
4365    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
4366)]
4367#[fhir_serialize_type = "typechoice"]
4368#[type_choice_field_name = "effective"]
4369pub enum ClinicalImpressionEffectiveTypeChoice {
4370    DateTime(Box<FHIRDateTime>),
4371    Period(Box<Period>),
4372}
4373impl Default for ClinicalImpressionEffectiveTypeChoice {
4374    fn default() -> Self {
4375        ClinicalImpressionEffectiveTypeChoice::DateTime(Box::new(Default::default()))
4376    }
4377}
4378#[derive(
4379    Clone,
4380    Reflect,
4381    Debug,
4382    Default,
4383    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
4384    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
4385)]
4386#[fhir_serialize_type = "complex"]
4387#[doc = "One or more sets of investigations (signs, symptoms, etc.). The actual grouping of investigations varies greatly depending on the type and context of the assessment. These investigations may include data generated during the assessment process, or data previously generated and recorded that is pertinent to the outcomes."]
4388pub struct ClinicalImpressionInvestigation {
4389    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
4390    pub id: Option<String>,
4391    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
4392    pub extension: Option<Vec<Box<Extension>>>,
4393    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
4394    pub modifierExtension: Option<Vec<Box<Extension>>>,
4395    #[doc = "A name/code for the group (\"set\") of investigations. Typically, this will be something like \"signs\", \"symptoms\", \"clinical\", \"diagnostic\", but the list is not constrained, and others such groups such as (exposure|family|travel|nutritional) history may be used."]
4396    pub code: Box<CodeableConcept>,
4397    # [reference (targets = ["Observation" , "QuestionnaireResponse" , "FamilyMemberHistory" , "DiagnosticReport" , "RiskAssessment" , "ImagingStudy" , "Media"])]
4398    #[doc = "A record of a specific investigation that was undertaken."]
4399    pub item: Option<Vec<Box<Reference>>>,
4400}
4401#[derive(
4402    Clone,
4403    Reflect,
4404    Debug,
4405    Default,
4406    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
4407    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
4408)]
4409#[fhir_serialize_type = "complex"]
4410#[doc = "Specific findings or diagnoses that were considered likely or relevant to ongoing treatment."]
4411pub struct ClinicalImpressionFinding {
4412    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
4413    pub id: Option<String>,
4414    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
4415    pub extension: Option<Vec<Box<Extension>>>,
4416    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
4417    pub modifierExtension: Option<Vec<Box<Extension>>>,
4418    #[doc = "Specific text or code for finding or diagnosis, which may include ruled-out or resolved conditions."]
4419    pub itemCodeableConcept: Option<Box<CodeableConcept>>,
4420    # [reference (targets = ["Condition" , "Observation" , "Media"])]
4421    #[doc = "Specific reference for finding or diagnosis, which may include ruled-out or resolved conditions."]
4422    pub itemReference: Option<Box<Reference>>,
4423    #[primitive]
4424    #[doc = "Which investigations support finding or diagnosis."]
4425    pub basis: Option<Box<FHIRString>>,
4426}
4427#[derive(
4428    Clone,
4429    Reflect,
4430    Debug,
4431    Default,
4432    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
4433    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
4434)]
4435#[fhir_serialize_type = "resource"]
4436#[doc = "A record of a clinical assessment performed to determine what problem(s) may affect the patient and before planning the treatments or management strategies that are best to manage a patient's condition. Assessments are often 1:1 with a clinical consultation / encounter,  but this varies greatly depending on the clinical workflow. This resource is called \"ClinicalImpression\" rather than \"ClinicalAssessment\" to avoid confusion with the recording of assessment tools such as Apgar score."]
4437pub struct ClinicalImpression {
4438    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
4439    pub id: Option<String>,
4440    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
4441    pub meta: Option<Box<Meta>>,
4442    #[primitive]
4443    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
4444    pub implicitRules: Option<Box<FHIRUri>>,
4445    #[primitive]
4446    #[doc = "The base language in which the resource is written."]
4447    pub language: Option<Box<FHIRCode>>,
4448    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
4449    pub text: Option<Box<Narrative>>,
4450    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
4451    pub contained: Option<Vec<Box<Resource>>>,
4452    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
4453    pub extension: Option<Vec<Box<Extension>>>,
4454    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
4455    pub modifierExtension: Option<Vec<Box<Extension>>>,
4456    #[rename_field = "identifier"]
4457    #[doc = "Business identifiers assigned to this clinical impression by the performer or other systems which remain constant as the resource is updated and propagates from server to server."]
4458    pub identifier_: Option<Vec<Box<Identifier>>>,
4459    #[primitive]
4460    #[doc = "Identifies the workflow status of the assessment."]
4461    pub status: Box<terminology::ClinicalimpressionStatus>,
4462    #[doc = "Captures the reason for the current state of the ClinicalImpression."]
4463    pub statusReason: Option<Box<CodeableConcept>>,
4464    #[doc = "Categorizes the type of clinical assessment performed."]
4465    pub code: Option<Box<CodeableConcept>>,
4466    #[primitive]
4467    #[doc = "A summary of the context and/or cause of the assessment - why / where it was performed, and what patient events/status prompted it."]
4468    pub description: Option<Box<FHIRString>>,
4469    # [reference (targets = ["Patient" , "Group"])]
4470    #[doc = "The patient or group of individuals assessed as part of this record."]
4471    pub subject: Box<Reference>,
4472    # [reference (targets = ["Encounter"])]
4473    #[doc = "The Encounter during which this ClinicalImpression was created or to which the creation of this record is tightly associated."]
4474    pub encounter: Option<Box<Reference>>,
4475    # [type_choice_variants (complex = ["effectivePeriod"] , primitive = ["effectiveDateTime"])]
4476    #[doc = "The point in time or period over which the subject was assessed."]
4477    pub effective: Option<ClinicalImpressionEffectiveTypeChoice>,
4478    #[primitive]
4479    #[doc = "Indicates when the documentation of the assessment was complete."]
4480    pub date: Option<Box<FHIRDateTime>>,
4481    # [reference (targets = ["Practitioner" , "PractitionerRole"])]
4482    #[doc = "The clinician performing the assessment."]
4483    pub assessor: Option<Box<Reference>>,
4484    # [reference (targets = ["ClinicalImpression"])]
4485    #[doc = "A reference to the last assessment that was conducted on this patient. Assessments are often/usually ongoing in nature; a care provider (practitioner or team) will make new assessments on an ongoing basis as new data arises or the patient's conditions changes."]
4486    pub previous: Option<Box<Reference>>,
4487    # [reference (targets = ["Condition" , "AllergyIntolerance"])]
4488    #[doc = "A list of the relevant problems/conditions for a patient."]
4489    pub problem: Option<Vec<Box<Reference>>>,
4490    #[doc = "One or more sets of investigations (signs, symptoms, etc.). The actual grouping of investigations varies greatly depending on the type and context of the assessment. These investigations may include data generated during the assessment process, or data previously generated and recorded that is pertinent to the outcomes."]
4491    pub investigation: Option<Vec<ClinicalImpressionInvestigation>>,
4492    #[primitive]
4493    #[doc = "Reference to a specific published clinical protocol that was followed during this assessment, and/or that provides evidence in support of the diagnosis."]
4494    pub protocol: Option<Vec<Box<FHIRUri>>>,
4495    #[primitive]
4496    #[doc = "A text summary of the investigations and the diagnosis."]
4497    pub summary: Option<Box<FHIRString>>,
4498    #[doc = "Specific findings or diagnoses that were considered likely or relevant to ongoing treatment."]
4499    pub finding: Option<Vec<ClinicalImpressionFinding>>,
4500    #[doc = "Estimate of likely outcome."]
4501    pub prognosisCodeableConcept: Option<Vec<Box<CodeableConcept>>>,
4502    # [reference (targets = ["RiskAssessment"])]
4503    #[doc = "RiskAssessment expressing likely outcome."]
4504    pub prognosisReference: Option<Vec<Box<Reference>>>,
4505    # [reference (targets = ["Resource"])]
4506    #[doc = "Information supporting the clinical impression."]
4507    pub supportingInfo: Option<Vec<Box<Reference>>>,
4508    #[doc = "Commentary about the impression, typically recorded after the impression itself was made, though supplemental notes by the original author could also appear."]
4509    pub note: Option<Vec<Box<Annotation>>>,
4510}
4511#[derive(
4512    Clone,
4513    Reflect,
4514    Debug,
4515    Default,
4516    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
4517    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
4518)]
4519#[fhir_serialize_type = "complex"]
4520#[doc = "A filter that can be used in a value set compose statement when selecting concepts using a filter."]
4521pub struct CodeSystemFilter {
4522    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
4523    pub id: Option<String>,
4524    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
4525    pub extension: Option<Vec<Box<Extension>>>,
4526    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
4527    pub modifierExtension: Option<Vec<Box<Extension>>>,
4528    #[primitive]
4529    #[doc = "The code that identifies this filter when it is used as a filter in [ValueSet](valueset.html#).compose.include.filter."]
4530    pub code: Box<FHIRCode>,
4531    #[primitive]
4532    #[doc = "A description of how or why the filter is used."]
4533    pub description: Option<Box<FHIRString>>,
4534    #[primitive]
4535    #[cardinality(min = 1usize)]
4536    #[doc = "A list of operators that can be used with the filter."]
4537    pub operator: Vec<Box<terminology::FilterOperator>>,
4538    #[primitive]
4539    #[doc = "A description of what the value for the filter should be."]
4540    pub value: Box<FHIRString>,
4541}
4542#[derive(
4543    Clone,
4544    Reflect,
4545    Debug,
4546    Default,
4547    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
4548    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
4549)]
4550#[fhir_serialize_type = "complex"]
4551#[doc = "A property defines an additional slot through which additional information can be provided about a concept."]
4552pub struct CodeSystemProperty {
4553    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
4554    pub id: Option<String>,
4555    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
4556    pub extension: Option<Vec<Box<Extension>>>,
4557    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
4558    pub modifierExtension: Option<Vec<Box<Extension>>>,
4559    #[primitive]
4560    #[doc = "A code that is used to identify the property. The code is used internally (in CodeSystem.concept.property.code) and also externally, such as in property filters."]
4561    pub code: Box<FHIRCode>,
4562    #[primitive]
4563    #[doc = "Reference to the formal meaning of the property. One possible source of meaning is the [Concept Properties](codesystem-concept-properties.html) code system."]
4564    pub uri: Option<Box<FHIRUri>>,
4565    #[primitive]
4566    #[doc = "A description of the property- why it is defined, and how its value might be used."]
4567    pub description: Option<Box<FHIRString>>,
4568    #[rename_field = "type"]
4569    #[primitive]
4570    #[doc = "The type of the property value. Properties of type \"code\" contain a code defined by the code system (e.g. a reference to another defined concept)."]
4571    pub type_: Box<terminology::ConceptPropertyType>,
4572}
4573#[derive(
4574    Clone,
4575    Reflect,
4576    Debug,
4577    Default,
4578    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
4579    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
4580)]
4581#[fhir_serialize_type = "complex"]
4582#[doc = "Additional representations for the concept - other languages, aliases, specialized purposes, used for particular purposes, etc."]
4583pub struct CodeSystemConceptDesignation {
4584    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
4585    pub id: Option<String>,
4586    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
4587    pub extension: Option<Vec<Box<Extension>>>,
4588    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
4589    pub modifierExtension: Option<Vec<Box<Extension>>>,
4590    #[primitive]
4591    #[doc = "The language this designation is defined for."]
4592    pub language: Option<Box<FHIRCode>>,
4593    #[rename_field = "use"]
4594    #[doc = "A code that details how this designation would be used."]
4595    pub use_: Option<Box<Coding>>,
4596    #[primitive]
4597    #[doc = "The text value for this designation."]
4598    pub value: Box<FHIRString>,
4599}
4600#[derive(
4601    Clone,
4602    Reflect,
4603    Debug,
4604    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
4605    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
4606)]
4607#[fhir_serialize_type = "typechoice"]
4608#[type_choice_field_name = "value"]
4609pub enum CodeSystemConceptPropertyValueTypeChoice {
4610    Code(Box<FHIRCode>),
4611    Coding(Box<Coding>),
4612    String(Box<FHIRString>),
4613    Integer(Box<FHIRInteger>),
4614    Boolean(Box<FHIRBoolean>),
4615    DateTime(Box<FHIRDateTime>),
4616    Decimal(Box<FHIRDecimal>),
4617}
4618impl Default for CodeSystemConceptPropertyValueTypeChoice {
4619    fn default() -> Self {
4620        CodeSystemConceptPropertyValueTypeChoice::Code(Box::new(Default::default()))
4621    }
4622}
4623#[derive(
4624    Clone,
4625    Reflect,
4626    Debug,
4627    Default,
4628    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
4629    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
4630)]
4631#[fhir_serialize_type = "complex"]
4632#[doc = "A property value for this concept."]
4633pub struct CodeSystemConceptProperty {
4634    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
4635    pub id: Option<String>,
4636    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
4637    pub extension: Option<Vec<Box<Extension>>>,
4638    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
4639    pub modifierExtension: Option<Vec<Box<Extension>>>,
4640    #[primitive]
4641    #[doc = "A code that is a reference to CodeSystem.property.code."]
4642    pub code: Box<FHIRCode>,
4643    # [type_choice_variants (complex = ["valueCoding"] , primitive = ["valueCode" , "valueString" , "valueInteger" , "valueBoolean" , "valueDateTime" , "valueDecimal"])]
4644    #[doc = "The value of this property."]
4645    pub value: CodeSystemConceptPropertyValueTypeChoice,
4646}
4647#[derive(
4648    Clone,
4649    Reflect,
4650    Debug,
4651    Default,
4652    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
4653    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
4654)]
4655#[fhir_serialize_type = "complex"]
4656#[doc = "Concepts that are in the code system. The concept definitions are inherently hierarchical, but the definitions must be consulted to determine what the meanings of the hierarchical relationships are."]
4657pub struct CodeSystemConcept {
4658    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
4659    pub id: Option<String>,
4660    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
4661    pub extension: Option<Vec<Box<Extension>>>,
4662    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
4663    pub modifierExtension: Option<Vec<Box<Extension>>>,
4664    #[primitive]
4665    #[doc = "A code - a text symbol - that uniquely identifies the concept within the code system."]
4666    pub code: Box<FHIRCode>,
4667    #[primitive]
4668    #[doc = "A human readable string that is the recommended default way to present this concept to a user."]
4669    pub display: Option<Box<FHIRString>>,
4670    #[primitive]
4671    #[doc = "The formal definition of the concept. The code system resource does not make formal definitions required, because of the prevalence of legacy systems. However, they are highly recommended, as without them there is no formal meaning associated with the concept."]
4672    pub definition: Option<Box<FHIRString>>,
4673    #[doc = "Additional representations for the concept - other languages, aliases, specialized purposes, used for particular purposes, etc."]
4674    pub designation: Option<Vec<CodeSystemConceptDesignation>>,
4675    #[doc = "A property value for this concept."]
4676    pub property: Option<Vec<CodeSystemConceptProperty>>,
4677    #[doc = "Defines children of a concept to produce a hierarchy of concepts. The nature of the relationships is variable (is-a/contains/categorizes) - see hierarchyMeaning."]
4678    pub concept: Option<Vec<CodeSystemConcept>>,
4679}
4680#[derive(
4681    Clone,
4682    Reflect,
4683    Debug,
4684    Default,
4685    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
4686    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
4687)]
4688#[fhir_serialize_type = "resource"]
4689#[doc = "The CodeSystem resource is used to declare the existence of and describe a code system or code system supplement and its key properties, and optionally define a part or all of its content."]
4690pub struct CodeSystem {
4691    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
4692    pub id: Option<String>,
4693    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
4694    pub meta: Option<Box<Meta>>,
4695    #[primitive]
4696    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
4697    pub implicitRules: Option<Box<FHIRUri>>,
4698    #[primitive]
4699    #[doc = "The base language in which the resource is written."]
4700    pub language: Option<Box<FHIRCode>>,
4701    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
4702    pub text: Option<Box<Narrative>>,
4703    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
4704    pub contained: Option<Vec<Box<Resource>>>,
4705    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
4706    pub extension: Option<Vec<Box<Extension>>>,
4707    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
4708    pub modifierExtension: Option<Vec<Box<Extension>>>,
4709    #[primitive]
4710    #[doc = "An absolute URI that is used to identify this code system when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this code system is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the code system is stored on different servers. This is used in [Coding](datatypes.html#Coding).system."]
4711    pub url: Option<Box<FHIRUri>>,
4712    #[rename_field = "identifier"]
4713    #[doc = "A formal identifier that is used to identify this code system when it is represented in other formats, or referenced in a specification, model, design or an instance."]
4714    pub identifier_: Option<Vec<Box<Identifier>>>,
4715    #[primitive]
4716    #[doc = "The identifier that is used to identify this version of the code system when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the code system author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence. This is used in [Coding](datatypes.html#Coding).version."]
4717    pub version: Option<Box<FHIRString>>,
4718    #[primitive]
4719    #[doc = "A natural language name identifying the code system. This name should be usable as an identifier for the module by machine processing applications such as code generation."]
4720    pub name: Option<Box<FHIRString>>,
4721    #[primitive]
4722    #[doc = "A short, descriptive, user-friendly title for the code system."]
4723    pub title: Option<Box<FHIRString>>,
4724    #[primitive]
4725    #[doc = "The date (and optionally time) when the code system resource was created or revised."]
4726    pub status: Box<terminology::PublicationStatus>,
4727    #[primitive]
4728    #[doc = "A Boolean value to indicate that this code system is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage."]
4729    pub experimental: Option<Box<FHIRBoolean>>,
4730    #[primitive]
4731    #[doc = "The date  (and optionally time) when the code system was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the code system changes."]
4732    pub date: Option<Box<FHIRDateTime>>,
4733    #[primitive]
4734    #[doc = "The name of the organization or individual that published the code system."]
4735    pub publisher: Option<Box<FHIRString>>,
4736    #[doc = "Contact details to assist a user in finding and communicating with the publisher."]
4737    pub contact: Option<Vec<Box<ContactDetail>>>,
4738    #[primitive]
4739    #[doc = "A free text natural language description of the code system from a consumer's perspective."]
4740    pub description: Option<Box<FHIRMarkdown>>,
4741    #[doc = "The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate code system instances."]
4742    pub useContext: Option<Vec<Box<UsageContext>>>,
4743    #[doc = "A legal or geographic region in which the code system is intended to be used."]
4744    pub jurisdiction: Option<Vec<Box<CodeableConcept>>>,
4745    #[primitive]
4746    #[doc = "Explanation of why this code system is needed and why it has been designed as it has."]
4747    pub purpose: Option<Box<FHIRMarkdown>>,
4748    #[primitive]
4749    #[doc = "A copyright statement relating to the code system and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the code system."]
4750    pub copyright: Option<Box<FHIRMarkdown>>,
4751    #[primitive]
4752    #[doc = "If code comparison is case sensitive when codes within this system are compared to each other."]
4753    pub caseSensitive: Option<Box<FHIRBoolean>>,
4754    #[primitive]
4755    #[doc = "Canonical reference to the value set that contains the entire code system."]
4756    pub valueSet: Option<Box<FHIRCanonical>>,
4757    #[primitive]
4758    #[doc = "The meaning of the hierarchy of concepts as represented in this resource."]
4759    pub hierarchyMeaning: Option<Box<terminology::CodesystemHierarchyMeaning>>,
4760    #[primitive]
4761    #[doc = "The code system defines a compositional (post-coordination) grammar."]
4762    pub compositional: Option<Box<FHIRBoolean>>,
4763    #[primitive]
4764    #[doc = "This flag is used to signify that the code system does not commit to concept permanence across versions. If true, a version must be specified when referencing this code system."]
4765    pub versionNeeded: Option<Box<FHIRBoolean>>,
4766    #[primitive]
4767    #[doc = "The extent of the content of the code system (the concepts and codes it defines) are represented in this resource instance."]
4768    pub content: Box<terminology::CodesystemContentMode>,
4769    #[primitive]
4770    #[doc = "The canonical URL of the code system that this code system supplement is adding designations and properties to."]
4771    pub supplements: Option<Box<FHIRCanonical>>,
4772    #[primitive]
4773    #[doc = "The total number of concepts defined by the code system. Where the code system has a compositional grammar, the basis of this count is defined by the system steward."]
4774    pub count: Option<Box<FHIRUnsignedInt>>,
4775    #[doc = "A filter that can be used in a value set compose statement when selecting concepts using a filter."]
4776    pub filter: Option<Vec<CodeSystemFilter>>,
4777    #[doc = "A property defines an additional slot through which additional information can be provided about a concept."]
4778    pub property: Option<Vec<CodeSystemProperty>>,
4779    #[doc = "Concepts that are in the code system. The concept definitions are inherently hierarchical, but the definitions must be consulted to determine what the meanings of the hierarchical relationships are."]
4780    pub concept: Option<Vec<CodeSystemConcept>>,
4781}
4782#[derive(
4783    Clone,
4784    Reflect,
4785    Debug,
4786    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
4787    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
4788)]
4789#[fhir_serialize_type = "typechoice"]
4790#[type_choice_field_name = "content"]
4791pub enum CommunicationPayloadContentTypeChoice {
4792    String(Box<FHIRString>),
4793    Attachment(Box<Attachment>),
4794    # [reference (targets = ["Resource"])]
4795    Reference(Box<Reference>),
4796}
4797impl Default for CommunicationPayloadContentTypeChoice {
4798    fn default() -> Self {
4799        CommunicationPayloadContentTypeChoice::String(Box::new(Default::default()))
4800    }
4801}
4802#[derive(
4803    Clone,
4804    Reflect,
4805    Debug,
4806    Default,
4807    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
4808    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
4809)]
4810#[fhir_serialize_type = "complex"]
4811#[doc = "Text, attachment(s), or resource(s) that was communicated to the recipient."]
4812pub struct CommunicationPayload {
4813    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
4814    pub id: Option<String>,
4815    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
4816    pub extension: Option<Vec<Box<Extension>>>,
4817    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
4818    pub modifierExtension: Option<Vec<Box<Extension>>>,
4819    # [type_choice_variants (complex = ["contentAttachment" , "contentReference"] , primitive = ["contentString"])]
4820    #[doc = "A communicated content (or for multi-part communications, one portion of the communication)."]
4821    pub content: CommunicationPayloadContentTypeChoice,
4822}
4823#[derive(
4824    Clone,
4825    Reflect,
4826    Debug,
4827    Default,
4828    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
4829    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
4830)]
4831#[fhir_serialize_type = "resource"]
4832#[doc = "An occurrence of information being transmitted; e.g. an alert that was sent to a responsible provider, a public health agency that was notified about a reportable condition."]
4833pub struct Communication {
4834    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
4835    pub id: Option<String>,
4836    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
4837    pub meta: Option<Box<Meta>>,
4838    #[primitive]
4839    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
4840    pub implicitRules: Option<Box<FHIRUri>>,
4841    #[primitive]
4842    #[doc = "The base language in which the resource is written."]
4843    pub language: Option<Box<FHIRCode>>,
4844    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
4845    pub text: Option<Box<Narrative>>,
4846    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
4847    pub contained: Option<Vec<Box<Resource>>>,
4848    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
4849    pub extension: Option<Vec<Box<Extension>>>,
4850    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
4851    pub modifierExtension: Option<Vec<Box<Extension>>>,
4852    #[rename_field = "identifier"]
4853    #[doc = "Business identifiers assigned to this communication by the performer or other systems which remain constant as the resource is updated and propagates from server to server."]
4854    pub identifier_: Option<Vec<Box<Identifier>>>,
4855    #[primitive]
4856    #[doc = "The URL pointing to a FHIR-defined protocol, guideline, orderset or other definition that is adhered to in whole or in part by this Communication."]
4857    pub instantiatesCanonical: Option<Vec<Box<FHIRCanonical>>>,
4858    #[primitive]
4859    #[doc = "The URL pointing to an externally maintained protocol, guideline, orderset or other definition that is adhered to in whole or in part by this Communication."]
4860    pub instantiatesUri: Option<Vec<Box<FHIRUri>>>,
4861    # [reference (targets = ["Resource"])]
4862    #[doc = "An order, proposal or plan fulfilled in whole or in part by this Communication."]
4863    pub basedOn: Option<Vec<Box<Reference>>>,
4864    # [reference (targets = ["Resource"])]
4865    #[doc = "Part of this action."]
4866    pub partOf: Option<Vec<Box<Reference>>>,
4867    # [reference (targets = ["Communication"])]
4868    #[doc = "Prior communication that this communication is in response to."]
4869    pub inResponseTo: Option<Vec<Box<Reference>>>,
4870    #[primitive]
4871    #[doc = "The status of the transmission."]
4872    pub status: Box<terminology::EventStatus>,
4873    #[doc = "Captures the reason for the current state of the Communication."]
4874    pub statusReason: Option<Box<CodeableConcept>>,
4875    #[doc = "The type of message conveyed such as alert, notification, reminder, instruction, etc."]
4876    pub category: Option<Vec<Box<CodeableConcept>>>,
4877    #[primitive]
4878    #[doc = "Characterizes how quickly the planned or in progress communication must be addressed. Includes concepts such as stat, urgent, routine."]
4879    pub priority: Option<Box<terminology::RequestPriority>>,
4880    #[doc = "A channel that was used for this communication (e.g. email, fax)."]
4881    pub medium: Option<Vec<Box<CodeableConcept>>>,
4882    # [reference (targets = ["Patient" , "Group"])]
4883    #[doc = "The patient or group that was the focus of this communication."]
4884    pub subject: Option<Box<Reference>>,
4885    #[doc = "Description of the purpose/content, similar to a subject line in an email."]
4886    pub topic: Option<Box<CodeableConcept>>,
4887    # [reference (targets = ["Resource"])]
4888    #[doc = "Other resources that pertain to this communication and to which this communication should be associated."]
4889    pub about: Option<Vec<Box<Reference>>>,
4890    # [reference (targets = ["Encounter"])]
4891    #[doc = "The Encounter during which this Communication was created or to which the creation of this record is tightly associated."]
4892    pub encounter: Option<Box<Reference>>,
4893    #[primitive]
4894    #[doc = "The time when this communication was sent."]
4895    pub sent: Option<Box<FHIRDateTime>>,
4896    #[primitive]
4897    #[doc = "The time when this communication arrived at the destination."]
4898    pub received: Option<Box<FHIRDateTime>>,
4899    # [reference (targets = ["Device" , "Organization" , "Patient" , "Practitioner" , "PractitionerRole" , "RelatedPerson" , "Group" , "CareTeam" , "HealthcareService"])]
4900    #[doc = "The entity (e.g. person, organization, clinical information system, care team or device) which was the target of the communication. If receipts need to be tracked by an individual, a separate resource instance will need to be created for each recipient.  Multiple recipient communications are intended where either receipts are not tracked (e.g. a mass mail-out) or a receipt is captured in aggregate (all emails confirmed received by a particular time)."]
4901    pub recipient: Option<Vec<Box<Reference>>>,
4902    # [reference (targets = ["Device" , "Organization" , "Patient" , "Practitioner" , "PractitionerRole" , "RelatedPerson" , "HealthcareService"])]
4903    #[doc = "The entity (e.g. person, organization, clinical information system, or device) which was the source of the communication."]
4904    pub sender: Option<Box<Reference>>,
4905    #[doc = "The reason or justification for the communication."]
4906    pub reasonCode: Option<Vec<Box<CodeableConcept>>>,
4907    # [reference (targets = ["Condition" , "Observation" , "DiagnosticReport" , "DocumentReference"])]
4908    #[doc = "Indicates another resource whose existence justifies this communication."]
4909    pub reasonReference: Option<Vec<Box<Reference>>>,
4910    #[doc = "Text, attachment(s), or resource(s) that was communicated to the recipient."]
4911    pub payload: Option<Vec<CommunicationPayload>>,
4912    #[doc = "Additional notes or commentary about the communication by the sender, receiver or other interested parties."]
4913    pub note: Option<Vec<Box<Annotation>>>,
4914}
4915#[derive(
4916    Clone,
4917    Reflect,
4918    Debug,
4919    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
4920    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
4921)]
4922#[fhir_serialize_type = "typechoice"]
4923#[type_choice_field_name = "content"]
4924pub enum CommunicationRequestPayloadContentTypeChoice {
4925    String(Box<FHIRString>),
4926    Attachment(Box<Attachment>),
4927    # [reference (targets = ["Resource"])]
4928    Reference(Box<Reference>),
4929}
4930impl Default for CommunicationRequestPayloadContentTypeChoice {
4931    fn default() -> Self {
4932        CommunicationRequestPayloadContentTypeChoice::String(Box::new(Default::default()))
4933    }
4934}
4935#[derive(
4936    Clone,
4937    Reflect,
4938    Debug,
4939    Default,
4940    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
4941    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
4942)]
4943#[fhir_serialize_type = "complex"]
4944#[doc = "Text, attachment(s), or resource(s) to be communicated to the recipient."]
4945pub struct CommunicationRequestPayload {
4946    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
4947    pub id: Option<String>,
4948    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
4949    pub extension: Option<Vec<Box<Extension>>>,
4950    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
4951    pub modifierExtension: Option<Vec<Box<Extension>>>,
4952    # [type_choice_variants (complex = ["contentAttachment" , "contentReference"] , primitive = ["contentString"])]
4953    #[doc = "The communicated content (or for multi-part communications, one portion of the communication)."]
4954    pub content: CommunicationRequestPayloadContentTypeChoice,
4955}
4956#[derive(
4957    Clone,
4958    Reflect,
4959    Debug,
4960    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
4961    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
4962)]
4963#[fhir_serialize_type = "typechoice"]
4964#[type_choice_field_name = "occurrence"]
4965pub enum CommunicationRequestOccurrenceTypeChoice {
4966    DateTime(Box<FHIRDateTime>),
4967    Period(Box<Period>),
4968}
4969impl Default for CommunicationRequestOccurrenceTypeChoice {
4970    fn default() -> Self {
4971        CommunicationRequestOccurrenceTypeChoice::DateTime(Box::new(Default::default()))
4972    }
4973}
4974#[derive(
4975    Clone,
4976    Reflect,
4977    Debug,
4978    Default,
4979    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
4980    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
4981)]
4982#[fhir_serialize_type = "resource"]
4983#[doc = "A request to convey information; e.g. the CDS system proposes that an alert be sent to a responsible provider, the CDS system proposes that the public health agency be notified about a reportable condition."]
4984pub struct CommunicationRequest {
4985    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
4986    pub id: Option<String>,
4987    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
4988    pub meta: Option<Box<Meta>>,
4989    #[primitive]
4990    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
4991    pub implicitRules: Option<Box<FHIRUri>>,
4992    #[primitive]
4993    #[doc = "The base language in which the resource is written."]
4994    pub language: Option<Box<FHIRCode>>,
4995    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
4996    pub text: Option<Box<Narrative>>,
4997    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
4998    pub contained: Option<Vec<Box<Resource>>>,
4999    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
5000    pub extension: Option<Vec<Box<Extension>>>,
5001    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
5002    pub modifierExtension: Option<Vec<Box<Extension>>>,
5003    #[rename_field = "identifier"]
5004    #[doc = "Business identifiers assigned to this communication request by the performer or other systems which remain constant as the resource is updated and propagates from server to server."]
5005    pub identifier_: Option<Vec<Box<Identifier>>>,
5006    # [reference (targets = ["Resource"])]
5007    #[doc = "A plan or proposal that is fulfilled in whole or in part by this request."]
5008    pub basedOn: Option<Vec<Box<Reference>>>,
5009    # [reference (targets = ["CommunicationRequest"])]
5010    #[doc = "Completed or terminated request(s) whose function is taken by this new request."]
5011    pub replaces: Option<Vec<Box<Reference>>>,
5012    #[doc = "A shared identifier common to all requests that were authorized more or less simultaneously by a single author, representing the identifier of the requisition, prescription or similar form."]
5013    pub groupIdentifier: Option<Box<Identifier>>,
5014    #[primitive]
5015    #[doc = "The status of the proposal or order."]
5016    pub status: Box<terminology::RequestStatus>,
5017    #[doc = "Captures the reason for the current state of the CommunicationRequest."]
5018    pub statusReason: Option<Box<CodeableConcept>>,
5019    #[doc = "The type of message to be sent such as alert, notification, reminder, instruction, etc."]
5020    pub category: Option<Vec<Box<CodeableConcept>>>,
5021    #[primitive]
5022    #[doc = "Characterizes how quickly the proposed act must be initiated. Includes concepts such as stat, urgent, routine."]
5023    pub priority: Option<Box<terminology::RequestPriority>>,
5024    #[primitive]
5025    #[doc = "If true indicates that the CommunicationRequest is asking for the specified action to *not* occur."]
5026    pub doNotPerform: Option<Box<FHIRBoolean>>,
5027    #[doc = "A channel that was used for this communication (e.g. email, fax)."]
5028    pub medium: Option<Vec<Box<CodeableConcept>>>,
5029    # [reference (targets = ["Patient" , "Group"])]
5030    #[doc = "The patient or group that is the focus of this communication request."]
5031    pub subject: Option<Box<Reference>>,
5032    # [reference (targets = ["Resource"])]
5033    #[doc = "Other resources that pertain to this communication request and to which this communication request should be associated."]
5034    pub about: Option<Vec<Box<Reference>>>,
5035    # [reference (targets = ["Encounter"])]
5036    #[doc = "The Encounter during which this CommunicationRequest was created or to which the creation of this record is tightly associated."]
5037    pub encounter: Option<Box<Reference>>,
5038    #[doc = "Text, attachment(s), or resource(s) to be communicated to the recipient."]
5039    pub payload: Option<Vec<CommunicationRequestPayload>>,
5040    # [type_choice_variants (complex = ["occurrencePeriod"] , primitive = ["occurrenceDateTime"])]
5041    #[doc = "The time when this communication is to occur."]
5042    pub occurrence: Option<CommunicationRequestOccurrenceTypeChoice>,
5043    #[primitive]
5044    #[doc = "For draft requests, indicates the date of initial creation.  For requests with other statuses, indicates the date of activation."]
5045    pub authoredOn: Option<Box<FHIRDateTime>>,
5046    # [reference (targets = ["Practitioner" , "PractitionerRole" , "Organization" , "Patient" , "RelatedPerson" , "Device"])]
5047    #[doc = "The device, individual, or organization who initiated the request and has responsibility for its activation."]
5048    pub requester: Option<Box<Reference>>,
5049    # [reference (targets = ["Device" , "Organization" , "Patient" , "Practitioner" , "PractitionerRole" , "RelatedPerson" , "Group" , "CareTeam" , "HealthcareService"])]
5050    #[doc = "The entity (e.g. person, organization, clinical information system, device, group, or care team) which is the intended target of the communication."]
5051    pub recipient: Option<Vec<Box<Reference>>>,
5052    # [reference (targets = ["Device" , "Organization" , "Patient" , "Practitioner" , "PractitionerRole" , "RelatedPerson" , "HealthcareService"])]
5053    #[doc = "The entity (e.g. person, organization, clinical information system, or device) which is to be the source of the communication."]
5054    pub sender: Option<Box<Reference>>,
5055    #[doc = "Describes why the request is being made in coded or textual form."]
5056    pub reasonCode: Option<Vec<Box<CodeableConcept>>>,
5057    # [reference (targets = ["Condition" , "Observation" , "DiagnosticReport" , "DocumentReference"])]
5058    #[doc = "Indicates another resource whose existence justifies this request."]
5059    pub reasonReference: Option<Vec<Box<Reference>>>,
5060    #[doc = "Comments made about the request by the requester, sender, recipient, subject or other participants."]
5061    pub note: Option<Vec<Box<Annotation>>>,
5062}
5063#[derive(
5064    Clone,
5065    Reflect,
5066    Debug,
5067    Default,
5068    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
5069    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
5070)]
5071#[fhir_serialize_type = "complex"]
5072#[doc = "Information about how a resource is related to the compartment."]
5073pub struct CompartmentDefinitionResource {
5074    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
5075    pub id: Option<String>,
5076    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
5077    pub extension: Option<Vec<Box<Extension>>>,
5078    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
5079    pub modifierExtension: Option<Vec<Box<Extension>>>,
5080    #[primitive]
5081    #[doc = "The name of a resource supported by the server."]
5082    pub code: Box<terminology::ResourceTypes>,
5083    #[primitive]
5084    #[doc = "The name of a search parameter that represents the link to the compartment. More than one may be listed because a resource may be linked to a compartment in more than one way,."]
5085    pub param: Option<Vec<Box<FHIRString>>>,
5086    #[primitive]
5087    #[doc = "Additional documentation about the resource and compartment."]
5088    pub documentation: Option<Box<FHIRString>>,
5089}
5090#[derive(
5091    Clone,
5092    Reflect,
5093    Debug,
5094    Default,
5095    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
5096    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
5097)]
5098#[fhir_serialize_type = "resource"]
5099#[doc = "A compartment definition that defines how resources are accessed on a server."]
5100pub struct CompartmentDefinition {
5101    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
5102    pub id: Option<String>,
5103    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
5104    pub meta: Option<Box<Meta>>,
5105    #[primitive]
5106    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
5107    pub implicitRules: Option<Box<FHIRUri>>,
5108    #[primitive]
5109    #[doc = "The base language in which the resource is written."]
5110    pub language: Option<Box<FHIRCode>>,
5111    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
5112    pub text: Option<Box<Narrative>>,
5113    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
5114    pub contained: Option<Vec<Box<Resource>>>,
5115    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
5116    pub extension: Option<Vec<Box<Extension>>>,
5117    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
5118    pub modifierExtension: Option<Vec<Box<Extension>>>,
5119    #[primitive]
5120    #[doc = "An absolute URI that is used to identify this compartment definition when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this compartment definition is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the compartment definition is stored on different servers."]
5121    pub url: Box<FHIRUri>,
5122    #[primitive]
5123    #[doc = "The identifier that is used to identify this version of the compartment definition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the compartment definition author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence."]
5124    pub version: Option<Box<FHIRString>>,
5125    #[primitive]
5126    #[doc = "A natural language name identifying the compartment definition. This name should be usable as an identifier for the module by machine processing applications such as code generation."]
5127    pub name: Box<FHIRString>,
5128    #[primitive]
5129    #[doc = "The status of this compartment definition. Enables tracking the life-cycle of the content."]
5130    pub status: Box<terminology::PublicationStatus>,
5131    #[primitive]
5132    #[doc = "A Boolean value to indicate that this compartment definition is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage."]
5133    pub experimental: Option<Box<FHIRBoolean>>,
5134    #[primitive]
5135    #[doc = "The date  (and optionally time) when the compartment definition was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the compartment definition changes."]
5136    pub date: Option<Box<FHIRDateTime>>,
5137    #[primitive]
5138    #[doc = "The name of the organization or individual that published the compartment definition."]
5139    pub publisher: Option<Box<FHIRString>>,
5140    #[doc = "Contact details to assist a user in finding and communicating with the publisher."]
5141    pub contact: Option<Vec<Box<ContactDetail>>>,
5142    #[primitive]
5143    #[doc = "A free text natural language description of the compartment definition from a consumer's perspective."]
5144    pub description: Option<Box<FHIRMarkdown>>,
5145    #[doc = "The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate compartment definition instances."]
5146    pub useContext: Option<Vec<Box<UsageContext>>>,
5147    #[primitive]
5148    #[doc = "Explanation of why this compartment definition is needed and why it has been designed as it has."]
5149    pub purpose: Option<Box<FHIRMarkdown>>,
5150    #[primitive]
5151    #[doc = "Which compartment this definition describes."]
5152    pub code: Box<terminology::CompartmentType>,
5153    #[primitive]
5154    #[doc = "Whether the search syntax is supported,."]
5155    pub search: Box<FHIRBoolean>,
5156    #[doc = "Information about how a resource is related to the compartment."]
5157    pub resource: Option<Vec<CompartmentDefinitionResource>>,
5158}
5159#[derive(
5160    Clone,
5161    Reflect,
5162    Debug,
5163    Default,
5164    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
5165    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
5166)]
5167#[fhir_serialize_type = "complex"]
5168#[doc = "A participant who has attested to the accuracy of the composition/document."]
5169pub struct CompositionAttester {
5170    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
5171    pub id: Option<String>,
5172    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
5173    pub extension: Option<Vec<Box<Extension>>>,
5174    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
5175    pub modifierExtension: Option<Vec<Box<Extension>>>,
5176    #[primitive]
5177    #[doc = "The type of attestation the authenticator offers."]
5178    pub mode: Box<terminology::CompositionAttestationMode>,
5179    #[primitive]
5180    #[doc = "When the composition was attested by the party."]
5181    pub time: Option<Box<FHIRDateTime>>,
5182    # [reference (targets = ["Patient" , "RelatedPerson" , "Practitioner" , "PractitionerRole" , "Organization"])]
5183    #[doc = "Who attested the composition in the specified way."]
5184    pub party: Option<Box<Reference>>,
5185}
5186#[derive(
5187    Clone,
5188    Reflect,
5189    Debug,
5190    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
5191    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
5192)]
5193#[fhir_serialize_type = "typechoice"]
5194#[type_choice_field_name = "target"]
5195pub enum CompositionRelatesToTargetTypeChoice {
5196    Identifier(Box<Identifier>),
5197    # [reference (targets = ["Composition"])]
5198    Reference(Box<Reference>),
5199}
5200impl Default for CompositionRelatesToTargetTypeChoice {
5201    fn default() -> Self {
5202        CompositionRelatesToTargetTypeChoice::Identifier(Box::new(Default::default()))
5203    }
5204}
5205#[derive(
5206    Clone,
5207    Reflect,
5208    Debug,
5209    Default,
5210    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
5211    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
5212)]
5213#[fhir_serialize_type = "complex"]
5214#[doc = "Relationships that this composition has with other compositions or documents that already exist."]
5215pub struct CompositionRelatesTo {
5216    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
5217    pub id: Option<String>,
5218    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
5219    pub extension: Option<Vec<Box<Extension>>>,
5220    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
5221    pub modifierExtension: Option<Vec<Box<Extension>>>,
5222    #[primitive]
5223    #[doc = "The type of relationship that this composition has with anther composition or document."]
5224    pub code: Box<terminology::DocumentRelationshipType>,
5225    # [type_choice_variants (complex = ["targetIdentifier" , "targetReference"] , primitive = [])]
5226    #[doc = "The target composition/document of this relationship."]
5227    pub target: CompositionRelatesToTargetTypeChoice,
5228}
5229#[derive(
5230    Clone,
5231    Reflect,
5232    Debug,
5233    Default,
5234    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
5235    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
5236)]
5237#[fhir_serialize_type = "complex"]
5238#[doc = "The clinical service, such as a colonoscopy or an appendectomy, being documented."]
5239pub struct CompositionEvent {
5240    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
5241    pub id: Option<String>,
5242    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
5243    pub extension: Option<Vec<Box<Extension>>>,
5244    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
5245    pub modifierExtension: Option<Vec<Box<Extension>>>,
5246    #[doc = "This list of codes represents the main clinical acts, such as a colonoscopy or an appendectomy, being documented. In some cases, the event is inherent in the typeCode, such as a \"History and Physical Report\" in which the procedure being documented is necessarily a \"History and Physical\" act."]
5247    pub code: Option<Vec<Box<CodeableConcept>>>,
5248    #[doc = "The period of time covered by the documentation. There is no assertion that the documentation is a complete representation for this period, only that it documents events during this time."]
5249    pub period: Option<Box<Period>>,
5250    # [reference (targets = ["Resource"])]
5251    #[doc = "The description and/or reference of the event(s) being documented. For example, this could be used to document such a colonoscopy or an appendectomy."]
5252    pub detail: Option<Vec<Box<Reference>>>,
5253}
5254#[derive(
5255    Clone,
5256    Reflect,
5257    Debug,
5258    Default,
5259    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
5260    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
5261)]
5262#[fhir_serialize_type = "complex"]
5263#[doc = "The root of the sections that make up the composition."]
5264pub struct CompositionSection {
5265    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
5266    pub id: Option<String>,
5267    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
5268    pub extension: Option<Vec<Box<Extension>>>,
5269    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
5270    pub modifierExtension: Option<Vec<Box<Extension>>>,
5271    #[primitive]
5272    #[doc = "The label for this particular section.  This will be part of the rendered content for the document, and is often used to build a table of contents."]
5273    pub title: Option<Box<FHIRString>>,
5274    #[doc = "A code identifying the kind of content contained within the section. This must be consistent with the section title."]
5275    pub code: Option<Box<CodeableConcept>>,
5276    # [reference (targets = ["Practitioner" , "PractitionerRole" , "Device" , "Patient" , "RelatedPerson" , "Organization"])]
5277    #[doc = "Identifies who is responsible for the information in this section, not necessarily who typed it in."]
5278    pub author: Option<Vec<Box<Reference>>>,
5279    # [reference (targets = ["Resource"])]
5280    #[doc = "The actual focus of the section when it is not the subject of the composition, but instead represents something or someone associated with the subject such as (for a patient subject) a spouse, parent, fetus, or donor. If not focus is specified, the focus is assumed to be focus of the parent section, or, for a section in the Composition itself, the subject of the composition. Sections with a focus SHALL only include resources where the logical subject (patient, subject, focus, etc.) matches the section focus, or the resources have no logical subject (few resources)."]
5281    pub focus: Option<Box<Reference>>,
5282    #[doc = "A human-readable narrative that contains the attested content of the section, used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative."]
5283    pub text: Option<Box<Narrative>>,
5284    #[primitive]
5285    #[doc = "How the entry list was prepared - whether it is a working list that is suitable for being maintained on an ongoing basis, or if it represents a snapshot of a list of items from another source, or whether it is a prepared list where items may be marked as added, modified or deleted."]
5286    pub mode: Option<Box<terminology::ListMode>>,
5287    #[doc = "Specifies the order applied to the items in the section entries."]
5288    pub orderedBy: Option<Box<CodeableConcept>>,
5289    # [reference (targets = ["Resource"])]
5290    #[doc = "A reference to the actual resource from which the narrative in the section is derived."]
5291    pub entry: Option<Vec<Box<Reference>>>,
5292    #[doc = "If the section is empty, why the list is empty. An empty section typically has some text explaining the empty reason."]
5293    pub emptyReason: Option<Box<CodeableConcept>>,
5294    #[doc = "A nested sub-section within this section."]
5295    pub section: Option<Vec<CompositionSection>>,
5296}
5297#[derive(
5298    Clone,
5299    Reflect,
5300    Debug,
5301    Default,
5302    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
5303    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
5304)]
5305#[fhir_serialize_type = "resource"]
5306#[doc = "A set of healthcare-related information that is assembled together into a single logical package that provides a single coherent statement of meaning, establishes its own context and that has clinical attestation with regard to who is making the statement. A Composition defines the structure and narrative content necessary for a document. However, a Composition alone does not constitute a document. Rather, the Composition must be the first entry in a Bundle where Bundle.type=document, and any other resources referenced from Composition must be included as subsequent entries in the Bundle (for example Patient, Practitioner, Encounter, etc.)."]
5307pub struct Composition {
5308    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
5309    pub id: Option<String>,
5310    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
5311    pub meta: Option<Box<Meta>>,
5312    #[primitive]
5313    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
5314    pub implicitRules: Option<Box<FHIRUri>>,
5315    #[primitive]
5316    #[doc = "The base language in which the resource is written."]
5317    pub language: Option<Box<FHIRCode>>,
5318    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
5319    pub text: Option<Box<Narrative>>,
5320    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
5321    pub contained: Option<Vec<Box<Resource>>>,
5322    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
5323    pub extension: Option<Vec<Box<Extension>>>,
5324    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
5325    pub modifierExtension: Option<Vec<Box<Extension>>>,
5326    #[rename_field = "identifier"]
5327    #[doc = "A version-independent identifier for the Composition. This identifier stays constant as the composition is changed over time."]
5328    pub identifier_: Option<Box<Identifier>>,
5329    #[primitive]
5330    #[doc = "The workflow/clinical status of this composition. The status is a marker for the clinical standing of the document."]
5331    pub status: Box<terminology::CompositionStatus>,
5332    #[rename_field = "type"]
5333    #[doc = "Specifies the particular kind of composition (e.g. History and Physical, Discharge Summary, Progress Note). This usually equates to the purpose of making the composition."]
5334    pub type_: Box<CodeableConcept>,
5335    #[doc = "A categorization for the type of the composition - helps for indexing and searching. This may be implied by or derived from the code specified in the Composition Type."]
5336    pub category: Option<Vec<Box<CodeableConcept>>>,
5337    # [reference (targets = ["Resource"])]
5338    #[doc = "Who or what the composition is about. The composition can be about a person, (patient or healthcare practitioner), a device (e.g. a machine) or even a group of subjects (such as a document about a herd of livestock, or a set of patients that share a common exposure)."]
5339    pub subject: Option<Box<Reference>>,
5340    # [reference (targets = ["Encounter"])]
5341    #[doc = "Describes the clinical encounter or type of care this documentation is associated with."]
5342    pub encounter: Option<Box<Reference>>,
5343    #[primitive]
5344    #[doc = "The composition editing time, when the composition was last logically changed by the author."]
5345    pub date: Box<FHIRDateTime>,
5346    #[cardinality(min = 1usize)]
5347    # [reference (targets = ["Practitioner" , "PractitionerRole" , "Device" , "Patient" , "RelatedPerson" , "Organization"])]
5348    #[doc = "Identifies who is responsible for the information in the composition, not necessarily who typed it in."]
5349    pub author: Vec<Box<Reference>>,
5350    #[primitive]
5351    #[doc = "Official human-readable label for the composition."]
5352    pub title: Box<FHIRString>,
5353    #[primitive]
5354    #[doc = "The code specifying the level of confidentiality of the Composition."]
5355    pub confidentiality: Option<Box<terminology::V3ConfidentialityClassification>>,
5356    #[doc = "A participant who has attested to the accuracy of the composition/document."]
5357    pub attester: Option<Vec<CompositionAttester>>,
5358    # [reference (targets = ["Organization"])]
5359    #[doc = "Identifies the organization or group who is responsible for ongoing maintenance of and access to the composition/document information."]
5360    pub custodian: Option<Box<Reference>>,
5361    #[doc = "Relationships that this composition has with other compositions or documents that already exist."]
5362    pub relatesTo: Option<Vec<CompositionRelatesTo>>,
5363    #[doc = "The clinical service, such as a colonoscopy or an appendectomy, being documented."]
5364    pub event: Option<Vec<CompositionEvent>>,
5365    #[doc = "The root of the sections that make up the composition."]
5366    pub section: Option<Vec<CompositionSection>>,
5367}
5368#[derive(
5369    Clone,
5370    Reflect,
5371    Debug,
5372    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
5373    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
5374)]
5375#[fhir_serialize_type = "typechoice"]
5376#[type_choice_field_name = "source"]
5377pub enum ConceptMapSourceTypeChoice {
5378    Uri(Box<FHIRUri>),
5379    Canonical(Box<FHIRCanonical>),
5380}
5381impl Default for ConceptMapSourceTypeChoice {
5382    fn default() -> Self {
5383        ConceptMapSourceTypeChoice::Uri(Box::new(Default::default()))
5384    }
5385}
5386#[derive(
5387    Clone,
5388    Reflect,
5389    Debug,
5390    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
5391    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
5392)]
5393#[fhir_serialize_type = "typechoice"]
5394#[type_choice_field_name = "target"]
5395pub enum ConceptMapTargetTypeChoice {
5396    Uri(Box<FHIRUri>),
5397    Canonical(Box<FHIRCanonical>),
5398}
5399impl Default for ConceptMapTargetTypeChoice {
5400    fn default() -> Self {
5401        ConceptMapTargetTypeChoice::Uri(Box::new(Default::default()))
5402    }
5403}
5404#[derive(
5405    Clone,
5406    Reflect,
5407    Debug,
5408    Default,
5409    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
5410    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
5411)]
5412#[fhir_serialize_type = "complex"]
5413#[doc = "A set of additional dependencies for this mapping to hold. This mapping is only applicable if the specified element can be resolved, and it has the specified value."]
5414pub struct ConceptMapGroupElementTargetDependsOn {
5415    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
5416    pub id: Option<String>,
5417    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
5418    pub extension: Option<Vec<Box<Extension>>>,
5419    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
5420    pub modifierExtension: Option<Vec<Box<Extension>>>,
5421    #[primitive]
5422    #[doc = "A reference to an element that holds a coded value that corresponds to a code system property. The idea is that the information model carries an element somewhere that is labeled to correspond with a code system property."]
5423    pub property: Box<FHIRUri>,
5424    #[primitive]
5425    #[doc = "An absolute URI that identifies the code system of the dependency code (if the source/dependency is a value set that crosses code systems)."]
5426    pub system: Option<Box<FHIRCanonical>>,
5427    #[primitive]
5428    #[doc = "Identity (code or path) or the element/item/ValueSet/text that the map depends on / refers to."]
5429    pub value: Box<FHIRString>,
5430    #[primitive]
5431    #[doc = "The display for the code. The display is only provided to help editors when editing the concept map."]
5432    pub display: Option<Box<FHIRString>>,
5433}
5434#[derive(
5435    Clone,
5436    Reflect,
5437    Debug,
5438    Default,
5439    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
5440    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
5441)]
5442#[fhir_serialize_type = "complex"]
5443#[doc = "A concept from the target value set that this concept maps to."]
5444pub struct ConceptMapGroupElementTarget {
5445    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
5446    pub id: Option<String>,
5447    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
5448    pub extension: Option<Vec<Box<Extension>>>,
5449    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
5450    pub modifierExtension: Option<Vec<Box<Extension>>>,
5451    #[primitive]
5452    #[doc = "Identity (code or path) or the element/item that the map refers to."]
5453    pub code: Option<Box<FHIRCode>>,
5454    #[primitive]
5455    #[doc = "The display for the code. The display is only provided to help editors when editing the concept map."]
5456    pub display: Option<Box<FHIRString>>,
5457    #[primitive]
5458    #[doc = "The equivalence between the source and target concepts (counting for the dependencies and products). The equivalence is read from target to source (e.g. the target is 'wider' than the source)."]
5459    pub equivalence: Box<terminology::ConceptMapEquivalence>,
5460    #[primitive]
5461    #[doc = "A description of status/issues in mapping that conveys additional information not represented in  the structured data."]
5462    pub comment: Option<Box<FHIRString>>,
5463    #[doc = "A set of additional dependencies for this mapping to hold. This mapping is only applicable if the specified element can be resolved, and it has the specified value."]
5464    pub dependsOn: Option<Vec<ConceptMapGroupElementTargetDependsOn>>,
5465    #[doc = "A set of additional outcomes from this mapping to other elements. To properly execute this mapping, the specified element must be mapped to some data element or source that is in context. The mapping may still be useful without a place for the additional data elements, but the equivalence cannot be relied on."]
5466    pub product: Option<Vec<ConceptMapGroupElementTargetDependsOn>>,
5467}
5468#[derive(
5469    Clone,
5470    Reflect,
5471    Debug,
5472    Default,
5473    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
5474    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
5475)]
5476#[fhir_serialize_type = "complex"]
5477#[doc = "Mappings for an individual concept in the source to one or more concepts in the target."]
5478pub struct ConceptMapGroupElement {
5479    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
5480    pub id: Option<String>,
5481    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
5482    pub extension: Option<Vec<Box<Extension>>>,
5483    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
5484    pub modifierExtension: Option<Vec<Box<Extension>>>,
5485    #[primitive]
5486    #[doc = "Identity (code or path) or the element/item being mapped."]
5487    pub code: Option<Box<FHIRCode>>,
5488    #[primitive]
5489    #[doc = "The display for the code. The display is only provided to help editors when editing the concept map."]
5490    pub display: Option<Box<FHIRString>>,
5491    #[doc = "A concept from the target value set that this concept maps to."]
5492    pub target: Option<Vec<ConceptMapGroupElementTarget>>,
5493}
5494#[derive(
5495    Clone,
5496    Reflect,
5497    Debug,
5498    Default,
5499    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
5500    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
5501)]
5502#[fhir_serialize_type = "complex"]
5503#[doc = "What to do when there is no mapping for the source concept. \"Unmapped\" does not include codes that are unmatched, and the unmapped element is ignored in a code is specified to have equivalence = unmatched."]
5504pub struct ConceptMapGroupUnmapped {
5505    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
5506    pub id: Option<String>,
5507    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
5508    pub extension: Option<Vec<Box<Extension>>>,
5509    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
5510    pub modifierExtension: Option<Vec<Box<Extension>>>,
5511    #[primitive]
5512    #[doc = "Defines which action to take if there is no match for the source concept in the target system designated for the group. One of 3 actions are possible: use the unmapped code (this is useful when doing a mapping between versions, and only a few codes have changed), use a fixed code (a default code), or alternatively, a reference to a different concept map can be provided (by canonical URL)."]
5513    pub mode: Box<terminology::ConceptmapUnmappedMode>,
5514    #[primitive]
5515    #[doc = "The fixed code to use when the mode = 'fixed'  - all unmapped codes are mapped to a single fixed code."]
5516    pub code: Option<Box<FHIRCode>>,
5517    #[primitive]
5518    #[doc = "The display for the code. The display is only provided to help editors when editing the concept map."]
5519    pub display: Option<Box<FHIRString>>,
5520    #[primitive]
5521    #[doc = "The canonical reference to an additional ConceptMap resource instance to use for mapping if this ConceptMap resource contains no matching mapping for the source concept."]
5522    pub url: Option<Box<FHIRCanonical>>,
5523}
5524#[derive(
5525    Clone,
5526    Reflect,
5527    Debug,
5528    Default,
5529    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
5530    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
5531)]
5532#[fhir_serialize_type = "complex"]
5533#[doc = "A group of mappings that all have the same source and target system."]
5534pub struct ConceptMapGroup {
5535    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
5536    pub id: Option<String>,
5537    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
5538    pub extension: Option<Vec<Box<Extension>>>,
5539    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
5540    pub modifierExtension: Option<Vec<Box<Extension>>>,
5541    #[primitive]
5542    #[doc = "An absolute URI that identifies the source system where the concepts to be mapped are defined."]
5543    pub source: Option<Box<FHIRUri>>,
5544    #[primitive]
5545    #[doc = "The specific version of the code system, as determined by the code system authority."]
5546    pub sourceVersion: Option<Box<FHIRString>>,
5547    #[primitive]
5548    #[doc = "An absolute URI that identifies the target system that the concepts will be mapped to."]
5549    pub target: Option<Box<FHIRUri>>,
5550    #[primitive]
5551    #[doc = "The specific version of the code system, as determined by the code system authority."]
5552    pub targetVersion: Option<Box<FHIRString>>,
5553    #[cardinality(min = 1usize)]
5554    #[doc = "Mappings for an individual concept in the source to one or more concepts in the target."]
5555    pub element: Vec<ConceptMapGroupElement>,
5556    #[doc = "What to do when there is no mapping for the source concept. \"Unmapped\" does not include codes that are unmatched, and the unmapped element is ignored in a code is specified to have equivalence = unmatched."]
5557    pub unmapped: Option<ConceptMapGroupUnmapped>,
5558}
5559#[derive(
5560    Clone,
5561    Reflect,
5562    Debug,
5563    Default,
5564    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
5565    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
5566)]
5567#[fhir_serialize_type = "resource"]
5568#[doc = "A statement of relationships from one set of concepts to one or more other concepts - either concepts in code systems, or data element/data element concepts, or classes in class models."]
5569pub struct ConceptMap {
5570    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
5571    pub id: Option<String>,
5572    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
5573    pub meta: Option<Box<Meta>>,
5574    #[primitive]
5575    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
5576    pub implicitRules: Option<Box<FHIRUri>>,
5577    #[primitive]
5578    #[doc = "The base language in which the resource is written."]
5579    pub language: Option<Box<FHIRCode>>,
5580    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
5581    pub text: Option<Box<Narrative>>,
5582    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
5583    pub contained: Option<Vec<Box<Resource>>>,
5584    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
5585    pub extension: Option<Vec<Box<Extension>>>,
5586    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
5587    pub modifierExtension: Option<Vec<Box<Extension>>>,
5588    #[primitive]
5589    #[doc = "An absolute URI that is used to identify this concept map when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this concept map is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the concept map is stored on different servers."]
5590    pub url: Option<Box<FHIRUri>>,
5591    #[rename_field = "identifier"]
5592    #[doc = "A formal identifier that is used to identify this concept map when it is represented in other formats, or referenced in a specification, model, design or an instance."]
5593    pub identifier_: Option<Box<Identifier>>,
5594    #[primitive]
5595    #[doc = "The identifier that is used to identify this version of the concept map when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the concept map author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence."]
5596    pub version: Option<Box<FHIRString>>,
5597    #[primitive]
5598    #[doc = "A natural language name identifying the concept map. This name should be usable as an identifier for the module by machine processing applications such as code generation."]
5599    pub name: Option<Box<FHIRString>>,
5600    #[primitive]
5601    #[doc = "A short, descriptive, user-friendly title for the concept map."]
5602    pub title: Option<Box<FHIRString>>,
5603    #[primitive]
5604    #[doc = "The status of this concept map. Enables tracking the life-cycle of the content."]
5605    pub status: Box<terminology::PublicationStatus>,
5606    #[primitive]
5607    #[doc = "A Boolean value to indicate that this concept map is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage."]
5608    pub experimental: Option<Box<FHIRBoolean>>,
5609    #[primitive]
5610    #[doc = "The date  (and optionally time) when the concept map was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the concept map changes."]
5611    pub date: Option<Box<FHIRDateTime>>,
5612    #[primitive]
5613    #[doc = "The name of the organization or individual that published the concept map."]
5614    pub publisher: Option<Box<FHIRString>>,
5615    #[doc = "Contact details to assist a user in finding and communicating with the publisher."]
5616    pub contact: Option<Vec<Box<ContactDetail>>>,
5617    #[primitive]
5618    #[doc = "A free text natural language description of the concept map from a consumer's perspective."]
5619    pub description: Option<Box<FHIRMarkdown>>,
5620    #[doc = "The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate concept map instances."]
5621    pub useContext: Option<Vec<Box<UsageContext>>>,
5622    #[doc = "A legal or geographic region in which the concept map is intended to be used."]
5623    pub jurisdiction: Option<Vec<Box<CodeableConcept>>>,
5624    #[primitive]
5625    #[doc = "Explanation of why this concept map is needed and why it has been designed as it has."]
5626    pub purpose: Option<Box<FHIRMarkdown>>,
5627    #[primitive]
5628    #[doc = "A copyright statement relating to the concept map and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the concept map."]
5629    pub copyright: Option<Box<FHIRMarkdown>>,
5630    # [type_choice_variants (complex = [] , primitive = ["sourceUri" , "sourceCanonical"])]
5631    #[doc = "Identifier for the source value set that contains the concepts that are being mapped and provides context for the mappings."]
5632    pub source: Option<ConceptMapSourceTypeChoice>,
5633    # [type_choice_variants (complex = [] , primitive = ["targetUri" , "targetCanonical"])]
5634    #[doc = "The target value set provides context for the mappings. Note that the mapping is made between concepts, not between value sets, but the value set provides important context about how the concept mapping choices are made."]
5635    pub target: Option<ConceptMapTargetTypeChoice>,
5636    #[doc = "A group of mappings that all have the same source and target system."]
5637    pub group: Option<Vec<ConceptMapGroup>>,
5638}
5639#[derive(
5640    Clone,
5641    Reflect,
5642    Debug,
5643    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
5644    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
5645)]
5646#[fhir_serialize_type = "typechoice"]
5647#[type_choice_field_name = "onset"]
5648pub enum ConditionOnsetTypeChoice {
5649    DateTime(Box<FHIRDateTime>),
5650    Age(Box<Age>),
5651    Period(Box<Period>),
5652    Range(Box<Range>),
5653    String(Box<FHIRString>),
5654}
5655impl Default for ConditionOnsetTypeChoice {
5656    fn default() -> Self {
5657        ConditionOnsetTypeChoice::DateTime(Box::new(Default::default()))
5658    }
5659}
5660#[derive(
5661    Clone,
5662    Reflect,
5663    Debug,
5664    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
5665    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
5666)]
5667#[fhir_serialize_type = "typechoice"]
5668#[type_choice_field_name = "abatement"]
5669pub enum ConditionAbatementTypeChoice {
5670    DateTime(Box<FHIRDateTime>),
5671    Age(Box<Age>),
5672    Period(Box<Period>),
5673    Range(Box<Range>),
5674    String(Box<FHIRString>),
5675}
5676impl Default for ConditionAbatementTypeChoice {
5677    fn default() -> Self {
5678        ConditionAbatementTypeChoice::DateTime(Box::new(Default::default()))
5679    }
5680}
5681#[derive(
5682    Clone,
5683    Reflect,
5684    Debug,
5685    Default,
5686    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
5687    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
5688)]
5689#[fhir_serialize_type = "complex"]
5690#[doc = "Clinical stage or grade of a condition. May include formal severity assessments."]
5691pub struct ConditionStage {
5692    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
5693    pub id: Option<String>,
5694    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
5695    pub extension: Option<Vec<Box<Extension>>>,
5696    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
5697    pub modifierExtension: Option<Vec<Box<Extension>>>,
5698    #[doc = "A simple summary of the stage such as \"Stage 3\". The determination of the stage is disease-specific."]
5699    pub summary: Option<Box<CodeableConcept>>,
5700    # [reference (targets = ["ClinicalImpression" , "DiagnosticReport" , "Observation"])]
5701    #[doc = "Reference to a formal record of the evidence on which the staging assessment is based."]
5702    pub assessment: Option<Vec<Box<Reference>>>,
5703    #[rename_field = "type"]
5704    #[doc = "The kind of staging, such as pathological or clinical staging."]
5705    pub type_: Option<Box<CodeableConcept>>,
5706}
5707#[derive(
5708    Clone,
5709    Reflect,
5710    Debug,
5711    Default,
5712    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
5713    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
5714)]
5715#[fhir_serialize_type = "complex"]
5716#[doc = "Supporting evidence / manifestations that are the basis of the Condition's verification status, such as evidence that confirmed or refuted the condition."]
5717pub struct ConditionEvidence {
5718    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
5719    pub id: Option<String>,
5720    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
5721    pub extension: Option<Vec<Box<Extension>>>,
5722    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
5723    pub modifierExtension: Option<Vec<Box<Extension>>>,
5724    #[doc = "A manifestation or symptom that led to the recording of this condition."]
5725    pub code: Option<Vec<Box<CodeableConcept>>>,
5726    # [reference (targets = ["Resource"])]
5727    #[doc = "Links to other relevant information, including pathology reports."]
5728    pub detail: Option<Vec<Box<Reference>>>,
5729}
5730#[derive(
5731    Clone,
5732    Reflect,
5733    Debug,
5734    Default,
5735    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
5736    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
5737)]
5738#[fhir_serialize_type = "resource"]
5739#[doc = "A clinical condition, problem, diagnosis, or other event, situation, issue, or clinical concept that has risen to a level of concern."]
5740pub struct Condition {
5741    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
5742    pub id: Option<String>,
5743    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
5744    pub meta: Option<Box<Meta>>,
5745    #[primitive]
5746    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
5747    pub implicitRules: Option<Box<FHIRUri>>,
5748    #[primitive]
5749    #[doc = "The base language in which the resource is written."]
5750    pub language: Option<Box<FHIRCode>>,
5751    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
5752    pub text: Option<Box<Narrative>>,
5753    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
5754    pub contained: Option<Vec<Box<Resource>>>,
5755    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
5756    pub extension: Option<Vec<Box<Extension>>>,
5757    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
5758    pub modifierExtension: Option<Vec<Box<Extension>>>,
5759    #[rename_field = "identifier"]
5760    #[doc = "Business identifiers assigned to this condition by the performer or other systems which remain constant as the resource is updated and propagates from server to server."]
5761    pub identifier_: Option<Vec<Box<Identifier>>>,
5762    #[doc = "The clinical status of the condition."]
5763    pub clinicalStatus: Option<Box<CodeableConcept>>,
5764    #[doc = "The verification status to support the clinical status of the condition."]
5765    pub verificationStatus: Option<Box<CodeableConcept>>,
5766    #[doc = "A category assigned to the condition."]
5767    pub category: Option<Vec<Box<CodeableConcept>>>,
5768    #[doc = "A subjective assessment of the severity of the condition as evaluated by the clinician."]
5769    pub severity: Option<Box<CodeableConcept>>,
5770    #[doc = "Identification of the condition, problem or diagnosis."]
5771    pub code: Option<Box<CodeableConcept>>,
5772    #[doc = "The anatomical location where this condition manifests itself."]
5773    pub bodySite: Option<Vec<Box<CodeableConcept>>>,
5774    # [reference (targets = ["Patient" , "Group"])]
5775    #[doc = "Indicates the patient or group who the condition record is associated with."]
5776    pub subject: Box<Reference>,
5777    # [reference (targets = ["Encounter"])]
5778    #[doc = "The Encounter during which this Condition was created or to which the creation of this record is tightly associated."]
5779    pub encounter: Option<Box<Reference>>,
5780    # [type_choice_variants (complex = ["onsetAge" , "onsetPeriod" , "onsetRange"] , primitive = ["onsetDateTime" , "onsetString"])]
5781    #[doc = "Estimated or actual date or date-time  the condition began, in the opinion of the clinician."]
5782    pub onset: Option<ConditionOnsetTypeChoice>,
5783    # [type_choice_variants (complex = ["abatementAge" , "abatementPeriod" , "abatementRange"] , primitive = ["abatementDateTime" , "abatementString"])]
5784    #[doc = "The date or estimated date that the condition resolved or went into remission. This is called \"abatement\" because of the many overloaded connotations associated with \"remission\" or \"resolution\" - Conditions are never really resolved, but they can abate."]
5785    pub abatement: Option<ConditionAbatementTypeChoice>,
5786    #[primitive]
5787    #[doc = "The recordedDate represents when this particular Condition record was created in the system, which is often a system-generated date."]
5788    pub recordedDate: Option<Box<FHIRDateTime>>,
5789    # [reference (targets = ["Practitioner" , "PractitionerRole" , "Patient" , "RelatedPerson"])]
5790    #[doc = "Individual who recorded the record and takes responsibility for its content."]
5791    pub recorder: Option<Box<Reference>>,
5792    # [reference (targets = ["Practitioner" , "PractitionerRole" , "Patient" , "RelatedPerson"])]
5793    #[doc = "Individual who is making the condition statement."]
5794    pub asserter: Option<Box<Reference>>,
5795    #[doc = "Clinical stage or grade of a condition. May include formal severity assessments."]
5796    pub stage: Option<Vec<ConditionStage>>,
5797    #[doc = "Supporting evidence / manifestations that are the basis of the Condition's verification status, such as evidence that confirmed or refuted the condition."]
5798    pub evidence: Option<Vec<ConditionEvidence>>,
5799    #[doc = "Additional information about the Condition. This is a general notes/comments entry  for description of the Condition, its diagnosis and prognosis."]
5800    pub note: Option<Vec<Box<Annotation>>>,
5801}
5802#[derive(
5803    Clone,
5804    Reflect,
5805    Debug,
5806    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
5807    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
5808)]
5809#[fhir_serialize_type = "typechoice"]
5810#[type_choice_field_name = "source"]
5811pub enum ConsentSourceTypeChoice {
5812    Attachment(Box<Attachment>),
5813    # [reference (targets = ["Consent" , "DocumentReference" , "Contract" , "QuestionnaireResponse"])]
5814    Reference(Box<Reference>),
5815}
5816impl Default for ConsentSourceTypeChoice {
5817    fn default() -> Self {
5818        ConsentSourceTypeChoice::Attachment(Box::new(Default::default()))
5819    }
5820}
5821#[derive(
5822    Clone,
5823    Reflect,
5824    Debug,
5825    Default,
5826    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
5827    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
5828)]
5829#[fhir_serialize_type = "complex"]
5830#[doc = "The references to the policies that are included in this consent scope. Policies may be organizational, but are often defined jurisdictionally, or in law."]
5831pub struct ConsentPolicy {
5832    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
5833    pub id: Option<String>,
5834    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
5835    pub extension: Option<Vec<Box<Extension>>>,
5836    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
5837    pub modifierExtension: Option<Vec<Box<Extension>>>,
5838    #[primitive]
5839    #[doc = "Entity or Organization having regulatory jurisdiction or accountability for  enforcing policies pertaining to Consent Directives."]
5840    pub authority: Option<Box<FHIRUri>>,
5841    #[primitive]
5842    #[doc = "The references to the policies that are included in this consent scope. Policies may be organizational, but are often defined jurisdictionally, or in law."]
5843    pub uri: Option<Box<FHIRUri>>,
5844}
5845#[derive(
5846    Clone,
5847    Reflect,
5848    Debug,
5849    Default,
5850    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
5851    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
5852)]
5853#[fhir_serialize_type = "complex"]
5854#[doc = "Whether a treatment instruction (e.g. artificial respiration yes or no) was verified with the patient, his/her family or another authorized person."]
5855pub struct ConsentVerification {
5856    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
5857    pub id: Option<String>,
5858    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
5859    pub extension: Option<Vec<Box<Extension>>>,
5860    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
5861    pub modifierExtension: Option<Vec<Box<Extension>>>,
5862    #[primitive]
5863    #[doc = "Has the instruction been verified."]
5864    pub verified: Box<FHIRBoolean>,
5865    # [reference (targets = ["Patient" , "RelatedPerson"])]
5866    #[doc = "Who verified the instruction (Patient, Relative or other Authorized Person)."]
5867    pub verifiedWith: Option<Box<Reference>>,
5868    #[primitive]
5869    #[doc = "Date verification was collected."]
5870    pub verificationDate: Option<Box<FHIRDateTime>>,
5871}
5872#[derive(
5873    Clone,
5874    Reflect,
5875    Debug,
5876    Default,
5877    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
5878    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
5879)]
5880#[fhir_serialize_type = "complex"]
5881#[doc = "Who or what is controlled by this rule. Use group to identify a set of actors by some property they share (e.g. 'admitting officers')."]
5882pub struct ConsentProvisionActor {
5883    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
5884    pub id: Option<String>,
5885    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
5886    pub extension: Option<Vec<Box<Extension>>>,
5887    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
5888    pub modifierExtension: Option<Vec<Box<Extension>>>,
5889    #[doc = "How the individual is involved in the resources content that is described in the exception."]
5890    pub role: Box<CodeableConcept>,
5891    # [reference (targets = ["Device" , "Group" , "CareTeam" , "Organization" , "Patient" , "Practitioner" , "RelatedPerson" , "PractitionerRole"])]
5892    #[doc = "The resource that identifies the actor. To identify actors by type, use group to identify a set of actors by some property they share (e.g. 'admitting officers')."]
5893    pub reference: Box<Reference>,
5894}
5895#[derive(
5896    Clone,
5897    Reflect,
5898    Debug,
5899    Default,
5900    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
5901    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
5902)]
5903#[fhir_serialize_type = "complex"]
5904#[doc = "The resources controlled by this rule if specific resources are referenced."]
5905pub struct ConsentProvisionData {
5906    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
5907    pub id: Option<String>,
5908    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
5909    pub extension: Option<Vec<Box<Extension>>>,
5910    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
5911    pub modifierExtension: Option<Vec<Box<Extension>>>,
5912    #[primitive]
5913    #[doc = "How the resource reference is interpreted when testing consent restrictions."]
5914    pub meaning: Box<terminology::ConsentDataMeaning>,
5915    # [reference (targets = ["Resource"])]
5916    #[doc = "A reference to a specific resource that defines which resources are covered by this consent."]
5917    pub reference: Box<Reference>,
5918}
5919#[derive(
5920    Clone,
5921    Reflect,
5922    Debug,
5923    Default,
5924    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
5925    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
5926)]
5927#[fhir_serialize_type = "complex"]
5928#[doc = "An exception to the base policy of this consent. An exception can be an addition or removal of access permissions."]
5929pub struct ConsentProvision {
5930    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
5931    pub id: Option<String>,
5932    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
5933    pub extension: Option<Vec<Box<Extension>>>,
5934    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
5935    pub modifierExtension: Option<Vec<Box<Extension>>>,
5936    #[rename_field = "type"]
5937    #[primitive]
5938    #[doc = "Action  to take - permit or deny - when the rule conditions are met.  Not permitted in root rule, required in all nested rules."]
5939    pub type_: Option<Box<terminology::ConsentProvisionType>>,
5940    #[doc = "The timeframe in this rule is valid."]
5941    pub period: Option<Box<Period>>,
5942    #[doc = "Who or what is controlled by this rule. Use group to identify a set of actors by some property they share (e.g. 'admitting officers')."]
5943    pub actor: Option<Vec<ConsentProvisionActor>>,
5944    #[doc = "Actions controlled by this Rule."]
5945    pub action: Option<Vec<Box<CodeableConcept>>>,
5946    #[doc = "A security label, comprised of 0..* security label fields (Privacy tags), which define which resources are controlled by this exception."]
5947    pub securityLabel: Option<Vec<Box<Coding>>>,
5948    #[doc = "The context of the activities a user is taking - why the user is accessing the data - that are controlled by this rule."]
5949    pub purpose: Option<Vec<Box<Coding>>>,
5950    #[doc = "The class of information covered by this rule. The type can be a FHIR resource type, a profile on a type, or a CDA document, or some other type that indicates what sort of information the consent relates to."]
5951    pub class: Option<Vec<Box<Coding>>>,
5952    #[doc = "If this code is found in an instance, then the rule applies."]
5953    pub code: Option<Vec<Box<CodeableConcept>>>,
5954    #[doc = "Clinical or Operational Relevant period of time that bounds the data controlled by this rule."]
5955    pub dataPeriod: Option<Box<Period>>,
5956    #[doc = "The resources controlled by this rule if specific resources are referenced."]
5957    pub data: Option<Vec<ConsentProvisionData>>,
5958    #[doc = "Rules which provide exceptions to the base rule or subrules."]
5959    pub provision: Option<Vec<ConsentProvision>>,
5960}
5961#[derive(
5962    Clone,
5963    Reflect,
5964    Debug,
5965    Default,
5966    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
5967    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
5968)]
5969#[fhir_serialize_type = "resource"]
5970#[doc = "A record of a healthcare consumer’s  choices, which permits or denies identified recipient(s) or recipient role(s) to perform one or more actions within a given policy context, for specific purposes and periods of time."]
5971pub struct Consent {
5972    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
5973    pub id: Option<String>,
5974    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
5975    pub meta: Option<Box<Meta>>,
5976    #[primitive]
5977    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
5978    pub implicitRules: Option<Box<FHIRUri>>,
5979    #[primitive]
5980    #[doc = "The base language in which the resource is written."]
5981    pub language: Option<Box<FHIRCode>>,
5982    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
5983    pub text: Option<Box<Narrative>>,
5984    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
5985    pub contained: Option<Vec<Box<Resource>>>,
5986    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
5987    pub extension: Option<Vec<Box<Extension>>>,
5988    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
5989    pub modifierExtension: Option<Vec<Box<Extension>>>,
5990    #[rename_field = "identifier"]
5991    #[doc = "Unique identifier for this copy of the Consent Statement."]
5992    pub identifier_: Option<Vec<Box<Identifier>>>,
5993    #[primitive]
5994    #[doc = "Indicates the current state of this consent."]
5995    pub status: Box<terminology::ConsentStateCodes>,
5996    #[doc = "A selector of the type of consent being presented: ADR, Privacy, Treatment, Research.  This list is now extensible."]
5997    pub scope: Box<CodeableConcept>,
5998    #[cardinality(min = 1usize)]
5999    #[doc = "A classification of the type of consents found in the statement. This element supports indexing and retrieval of consent statements."]
6000    pub category: Vec<Box<CodeableConcept>>,
6001    # [reference (targets = ["Patient"])]
6002    #[doc = "The patient/healthcare consumer to whom this consent applies."]
6003    pub patient: Option<Box<Reference>>,
6004    #[primitive]
6005    #[doc = "When this  Consent was issued / created / indexed."]
6006    pub dateTime: Option<Box<FHIRDateTime>>,
6007    # [reference (targets = ["Organization" , "Patient" , "Practitioner" , "RelatedPerson" , "PractitionerRole"])]
6008    #[doc = "Either the Grantor, which is the entity responsible for granting the rights listed in a Consent Directive or the Grantee, which is the entity responsible for complying with the Consent Directive, including any obligations or limitations on authorizations and enforcement of prohibitions."]
6009    pub performer: Option<Vec<Box<Reference>>>,
6010    # [reference (targets = ["Organization"])]
6011    #[doc = "The organization that manages the consent, and the framework within which it is executed."]
6012    pub organization: Option<Vec<Box<Reference>>>,
6013    # [type_choice_variants (complex = ["sourceAttachment" , "sourceReference"] , primitive = [])]
6014    #[doc = "The source on which this consent statement is based. The source might be a scanned original paper form, or a reference to a consent that links back to such a source, a reference to a document repository (e.g. XDS) that stores the original consent document."]
6015    pub source: Option<ConsentSourceTypeChoice>,
6016    #[doc = "The references to the policies that are included in this consent scope. Policies may be organizational, but are often defined jurisdictionally, or in law."]
6017    pub policy: Option<Vec<ConsentPolicy>>,
6018    #[doc = "A reference to the specific base computable regulation or policy."]
6019    pub policyRule: Option<Box<CodeableConcept>>,
6020    #[doc = "Whether a treatment instruction (e.g. artificial respiration yes or no) was verified with the patient, his/her family or another authorized person."]
6021    pub verification: Option<Vec<ConsentVerification>>,
6022    #[doc = "An exception to the base policy of this consent. An exception can be an addition or removal of access permissions."]
6023    pub provision: Option<ConsentProvision>,
6024}
6025#[derive(
6026    Clone,
6027    Reflect,
6028    Debug,
6029    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
6030    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
6031)]
6032#[fhir_serialize_type = "typechoice"]
6033#[type_choice_field_name = "topic"]
6034pub enum ContractTopicTypeChoice {
6035    CodeableConcept(Box<CodeableConcept>),
6036    # [reference (targets = ["Resource"])]
6037    Reference(Box<Reference>),
6038}
6039impl Default for ContractTopicTypeChoice {
6040    fn default() -> Self {
6041        ContractTopicTypeChoice::CodeableConcept(Box::new(Default::default()))
6042    }
6043}
6044#[derive(
6045    Clone,
6046    Reflect,
6047    Debug,
6048    Default,
6049    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
6050    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
6051)]
6052#[fhir_serialize_type = "complex"]
6053#[doc = "Precusory content developed with a focus and intent of supporting the formation a Contract instance, which may be associated with and transformable into a Contract."]
6054pub struct ContractContentDefinition {
6055    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
6056    pub id: Option<String>,
6057    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
6058    pub extension: Option<Vec<Box<Extension>>>,
6059    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
6060    pub modifierExtension: Option<Vec<Box<Extension>>>,
6061    #[rename_field = "type"]
6062    #[doc = "Precusory content structure and use, i.e., a boilerplate, template, application for a contract such as an insurance policy or benefits under a program, e.g., workers compensation."]
6063    pub type_: Box<CodeableConcept>,
6064    #[doc = "Detailed Precusory content type."]
6065    pub subType: Option<Box<CodeableConcept>>,
6066    # [reference (targets = ["Practitioner" , "PractitionerRole" , "Organization"])]
6067    #[doc = "The  individual or organization that published the Contract precursor content."]
6068    pub publisher: Option<Box<Reference>>,
6069    #[primitive]
6070    #[doc = "The date (and optionally time) when the contract was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the contract changes."]
6071    pub publicationDate: Option<Box<FHIRDateTime>>,
6072    #[primitive]
6073    #[doc = "amended | appended | cancelled | disputed | entered-in-error | executable | executed | negotiable | offered | policy | rejected | renewed | revoked | resolved | terminated."]
6074    pub publicationStatus: Box<terminology::ContractPublicationstatus>,
6075    #[primitive]
6076    #[doc = "A copyright statement relating to Contract precursor content. Copyright statements are generally legal restrictions on the use and publishing of the Contract precursor content."]
6077    pub copyright: Option<Box<FHIRMarkdown>>,
6078}
6079#[derive(
6080    Clone,
6081    Reflect,
6082    Debug,
6083    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
6084    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
6085)]
6086#[fhir_serialize_type = "typechoice"]
6087#[type_choice_field_name = "topic"]
6088pub enum ContractTermTopicTypeChoice {
6089    CodeableConcept(Box<CodeableConcept>),
6090    # [reference (targets = ["Resource"])]
6091    Reference(Box<Reference>),
6092}
6093impl Default for ContractTermTopicTypeChoice {
6094    fn default() -> Self {
6095        ContractTermTopicTypeChoice::CodeableConcept(Box::new(Default::default()))
6096    }
6097}
6098#[derive(
6099    Clone,
6100    Reflect,
6101    Debug,
6102    Default,
6103    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
6104    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
6105)]
6106#[fhir_serialize_type = "complex"]
6107#[doc = "Security labels that protect the handling of information about the term and its elements, which may be specifically identified.."]
6108pub struct ContractTermSecurityLabel {
6109    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
6110    pub id: Option<String>,
6111    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
6112    pub extension: Option<Vec<Box<Extension>>>,
6113    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
6114    pub modifierExtension: Option<Vec<Box<Extension>>>,
6115    #[primitive]
6116    #[doc = "Number used to link this term or term element to the applicable Security Label."]
6117    pub number: Option<Vec<Box<FHIRUnsignedInt>>>,
6118    #[doc = "Security label privacy tag that species the level of confidentiality protection required for this term and/or term elements."]
6119    pub classification: Box<Coding>,
6120    #[doc = "Security label privacy tag that species the applicable privacy and security policies governing this term and/or term elements."]
6121    pub category: Option<Vec<Box<Coding>>>,
6122    #[doc = "Security label privacy tag that species the manner in which term and/or term elements are to be protected."]
6123    pub control: Option<Vec<Box<Coding>>>,
6124}
6125#[derive(
6126    Clone,
6127    Reflect,
6128    Debug,
6129    Default,
6130    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
6131    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
6132)]
6133#[fhir_serialize_type = "complex"]
6134#[doc = "Offer Recipient."]
6135pub struct ContractTermOfferParty {
6136    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
6137    pub id: Option<String>,
6138    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
6139    pub extension: Option<Vec<Box<Extension>>>,
6140    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
6141    pub modifierExtension: Option<Vec<Box<Extension>>>,
6142    #[cardinality(min = 1usize)]
6143    # [reference (targets = ["Patient" , "RelatedPerson" , "Practitioner" , "PractitionerRole" , "Device" , "Group" , "Organization"])]
6144    #[doc = "Participant in the offer."]
6145    pub reference: Vec<Box<Reference>>,
6146    #[doc = "How the party participates in the offer."]
6147    pub role: Box<CodeableConcept>,
6148}
6149#[derive(
6150    Clone,
6151    Reflect,
6152    Debug,
6153    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
6154    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
6155)]
6156#[fhir_serialize_type = "typechoice"]
6157#[type_choice_field_name = "value"]
6158pub enum ContractTermOfferAnswerValueTypeChoice {
6159    Boolean(Box<FHIRBoolean>),
6160    Decimal(Box<FHIRDecimal>),
6161    Integer(Box<FHIRInteger>),
6162    Date(Box<FHIRDate>),
6163    DateTime(Box<FHIRDateTime>),
6164    Time(Box<FHIRTime>),
6165    String(Box<FHIRString>),
6166    Uri(Box<FHIRUri>),
6167    Attachment(Box<Attachment>),
6168    Coding(Box<Coding>),
6169    Quantity(Box<Quantity>),
6170    # [reference (targets = ["Resource"])]
6171    Reference(Box<Reference>),
6172}
6173impl Default for ContractTermOfferAnswerValueTypeChoice {
6174    fn default() -> Self {
6175        ContractTermOfferAnswerValueTypeChoice::Boolean(Box::new(Default::default()))
6176    }
6177}
6178#[derive(
6179    Clone,
6180    Reflect,
6181    Debug,
6182    Default,
6183    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
6184    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
6185)]
6186#[fhir_serialize_type = "complex"]
6187#[doc = "Response to offer text."]
6188pub struct ContractTermOfferAnswer {
6189    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
6190    pub id: Option<String>,
6191    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
6192    pub extension: Option<Vec<Box<Extension>>>,
6193    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
6194    pub modifierExtension: Option<Vec<Box<Extension>>>,
6195    # [type_choice_variants (complex = ["valueAttachment" , "valueCoding" , "valueQuantity" , "valueReference"] , primitive = ["valueBoolean" , "valueDecimal" , "valueInteger" , "valueDate" , "valueDateTime" , "valueTime" , "valueString" , "valueUri"])]
6196    #[doc = "Response to an offer clause or question text,  which enables selection of values to be agreed to, e.g., the period of participation, the date of occupancy of a rental, warrently duration, or whether biospecimen may be used for further research."]
6197    pub value: ContractTermOfferAnswerValueTypeChoice,
6198}
6199#[derive(
6200    Clone,
6201    Reflect,
6202    Debug,
6203    Default,
6204    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
6205    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
6206)]
6207#[fhir_serialize_type = "complex"]
6208#[doc = "The matter of concern in the context of this provision of the agrement."]
6209pub struct ContractTermOffer {
6210    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
6211    pub id: Option<String>,
6212    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
6213    pub extension: Option<Vec<Box<Extension>>>,
6214    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
6215    pub modifierExtension: Option<Vec<Box<Extension>>>,
6216    #[rename_field = "identifier"]
6217    #[doc = "Unique identifier for this particular Contract Provision."]
6218    pub identifier_: Option<Vec<Box<Identifier>>>,
6219    #[doc = "Offer Recipient."]
6220    pub party: Option<Vec<ContractTermOfferParty>>,
6221    # [reference (targets = ["Resource"])]
6222    #[doc = "The owner of an asset has the residual control rights over the asset: the right to decide all usages of the asset in any way not inconsistent with a prior contract, custom, or law (Hart, 1995, p. 30)."]
6223    pub topic: Option<Box<Reference>>,
6224    #[rename_field = "type"]
6225    #[doc = "Type of Contract Provision such as specific requirements, purposes for actions, obligations, prohibitions, e.g. life time maximum benefit."]
6226    pub type_: Option<Box<CodeableConcept>>,
6227    #[doc = "Type of choice made by accepting party with respect to an offer made by an offeror/ grantee."]
6228    pub decision: Option<Box<CodeableConcept>>,
6229    #[doc = "How the decision about a Contract was conveyed."]
6230    pub decisionMode: Option<Vec<Box<CodeableConcept>>>,
6231    #[doc = "Response to offer text."]
6232    pub answer: Option<Vec<ContractTermOfferAnswer>>,
6233    #[primitive]
6234    #[doc = "Human readable form of this Contract Offer."]
6235    pub text: Option<Box<FHIRString>>,
6236    #[primitive]
6237    #[doc = "The id of the clause or question text of the offer in the referenced questionnaire/response."]
6238    pub linkId: Option<Vec<Box<FHIRString>>>,
6239    #[primitive]
6240    #[doc = "Security labels that protects the offer."]
6241    pub securityLabelNumber: Option<Vec<Box<FHIRUnsignedInt>>>,
6242}
6243#[derive(
6244    Clone,
6245    Reflect,
6246    Debug,
6247    Default,
6248    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
6249    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
6250)]
6251#[fhir_serialize_type = "complex"]
6252#[doc = "Circumstance of the asset."]
6253pub struct ContractTermAssetContext {
6254    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
6255    pub id: Option<String>,
6256    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
6257    pub extension: Option<Vec<Box<Extension>>>,
6258    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
6259    pub modifierExtension: Option<Vec<Box<Extension>>>,
6260    # [reference (targets = ["Resource"])]
6261    #[doc = "Asset context reference may include the creator, custodian, or owning Person or Organization (e.g., bank, repository),  location held, e.g., building,  jurisdiction."]
6262    pub reference: Option<Box<Reference>>,
6263    #[doc = "Coded representation of the context generally or of the Referenced entity, such as the asset holder type or location."]
6264    pub code: Option<Vec<Box<CodeableConcept>>>,
6265    #[primitive]
6266    #[doc = "Context description."]
6267    pub text: Option<Box<FHIRString>>,
6268}
6269#[derive(
6270    Clone,
6271    Reflect,
6272    Debug,
6273    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
6274    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
6275)]
6276#[fhir_serialize_type = "typechoice"]
6277#[type_choice_field_name = "entity"]
6278pub enum ContractTermAssetValuedItemEntityTypeChoice {
6279    CodeableConcept(Box<CodeableConcept>),
6280    # [reference (targets = ["Resource"])]
6281    Reference(Box<Reference>),
6282}
6283impl Default for ContractTermAssetValuedItemEntityTypeChoice {
6284    fn default() -> Self {
6285        ContractTermAssetValuedItemEntityTypeChoice::CodeableConcept(Box::new(Default::default()))
6286    }
6287}
6288#[derive(
6289    Clone,
6290    Reflect,
6291    Debug,
6292    Default,
6293    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
6294    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
6295)]
6296#[fhir_serialize_type = "complex"]
6297#[doc = "Contract Valued Item List."]
6298pub struct ContractTermAssetValuedItem {
6299    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
6300    pub id: Option<String>,
6301    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
6302    pub extension: Option<Vec<Box<Extension>>>,
6303    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
6304    pub modifierExtension: Option<Vec<Box<Extension>>>,
6305    # [type_choice_variants (complex = ["entityCodeableConcept" , "entityReference"] , primitive = [])]
6306    #[doc = "Specific type of Contract Valued Item that may be priced."]
6307    pub entity: Option<ContractTermAssetValuedItemEntityTypeChoice>,
6308    #[rename_field = "identifier"]
6309    #[doc = "Identifies a Contract Valued Item instance."]
6310    pub identifier_: Option<Box<Identifier>>,
6311    #[primitive]
6312    #[doc = "Indicates the time during which this Contract ValuedItem information is effective."]
6313    pub effectiveTime: Option<Box<FHIRDateTime>>,
6314    #[doc = "Specifies the units by which the Contract Valued Item is measured or counted, and quantifies the countable or measurable Contract Valued Item instances."]
6315    pub quantity: Option<Box<Quantity>>,
6316    #[doc = "A Contract Valued Item unit valuation measure."]
6317    pub unitPrice: Option<Box<Money>>,
6318    #[primitive]
6319    #[doc = "A real number that represents a multiplier used in determining the overall value of the Contract Valued Item delivered. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount."]
6320    pub factor: Option<Box<FHIRDecimal>>,
6321    #[primitive]
6322    #[doc = "An amount that expresses the weighting (based on difficulty, cost and/or resource intensiveness) associated with the Contract Valued Item delivered. The concept of Points allows for assignment of point values for a Contract Valued Item, such that a monetary amount can be assigned to each point."]
6323    pub points: Option<Box<FHIRDecimal>>,
6324    #[doc = "Expresses the product of the Contract Valued Item unitQuantity and the unitPriceAmt. For example, the formula: unit Quantity * unit Price (Cost per Point) * factor Number  * points = net Amount. Quantity, factor and points are assumed to be 1 if not supplied."]
6325    pub net: Option<Box<Money>>,
6326    #[primitive]
6327    #[doc = "Terms of valuation."]
6328    pub payment: Option<Box<FHIRString>>,
6329    #[primitive]
6330    #[doc = "When payment is due."]
6331    pub paymentDate: Option<Box<FHIRDateTime>>,
6332    # [reference (targets = ["Organization" , "Patient" , "Practitioner" , "PractitionerRole" , "RelatedPerson"])]
6333    #[doc = "Who will make payment."]
6334    pub responsible: Option<Box<Reference>>,
6335    # [reference (targets = ["Organization" , "Patient" , "Practitioner" , "PractitionerRole" , "RelatedPerson"])]
6336    #[doc = "Who will receive payment."]
6337    pub recipient: Option<Box<Reference>>,
6338    #[primitive]
6339    #[doc = "Id  of the clause or question text related to the context of this valuedItem in the referenced form or QuestionnaireResponse."]
6340    pub linkId: Option<Vec<Box<FHIRString>>>,
6341    #[primitive]
6342    #[doc = "A set of security labels that define which terms are controlled by this condition."]
6343    pub securityLabelNumber: Option<Vec<Box<FHIRUnsignedInt>>>,
6344}
6345#[derive(
6346    Clone,
6347    Reflect,
6348    Debug,
6349    Default,
6350    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
6351    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
6352)]
6353#[fhir_serialize_type = "complex"]
6354#[doc = "Contract Term Asset List."]
6355pub struct ContractTermAsset {
6356    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
6357    pub id: Option<String>,
6358    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
6359    pub extension: Option<Vec<Box<Extension>>>,
6360    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
6361    pub modifierExtension: Option<Vec<Box<Extension>>>,
6362    #[doc = "Differentiates the kind of the asset ."]
6363    pub scope: Option<Box<CodeableConcept>>,
6364    #[rename_field = "type"]
6365    #[doc = "Target entity type about which the term may be concerned."]
6366    pub type_: Option<Vec<Box<CodeableConcept>>>,
6367    # [reference (targets = ["Resource"])]
6368    #[doc = "Associated entities."]
6369    pub typeReference: Option<Vec<Box<Reference>>>,
6370    #[doc = "May be a subtype or part of an offered asset."]
6371    pub subtype: Option<Vec<Box<CodeableConcept>>>,
6372    #[doc = "Specifies the applicability of the term to an asset resource instance, and instances it refers to orinstances that refer to it, and/or are owned by the offeree."]
6373    pub relationship: Option<Box<Coding>>,
6374    #[doc = "Circumstance of the asset."]
6375    pub context: Option<Vec<ContractTermAssetContext>>,
6376    #[primitive]
6377    #[doc = "Description of the quality and completeness of the asset that imay be a factor in its valuation."]
6378    pub condition: Option<Box<FHIRString>>,
6379    #[doc = "Type of Asset availability for use or ownership."]
6380    pub periodType: Option<Vec<Box<CodeableConcept>>>,
6381    #[doc = "Asset relevant contractual time period."]
6382    pub period: Option<Vec<Box<Period>>>,
6383    #[doc = "Time period of asset use."]
6384    pub usePeriod: Option<Vec<Box<Period>>>,
6385    #[primitive]
6386    #[doc = "Clause or question text (Prose Object) concerning the asset in a linked form, such as a QuestionnaireResponse used in the formation of the contract."]
6387    pub text: Option<Box<FHIRString>>,
6388    #[primitive]
6389    #[doc = "Id [identifier??] of the clause or question text about the asset in the referenced form or QuestionnaireResponse."]
6390    pub linkId: Option<Vec<Box<FHIRString>>>,
6391    #[doc = "Response to assets."]
6392    pub answer: Option<Vec<ContractTermOfferAnswer>>,
6393    #[primitive]
6394    #[doc = "Security labels that protects the asset."]
6395    pub securityLabelNumber: Option<Vec<Box<FHIRUnsignedInt>>>,
6396    #[doc = "Contract Valued Item List."]
6397    pub valuedItem: Option<Vec<ContractTermAssetValuedItem>>,
6398}
6399#[derive(
6400    Clone,
6401    Reflect,
6402    Debug,
6403    Default,
6404    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
6405    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
6406)]
6407#[fhir_serialize_type = "complex"]
6408#[doc = "Entity of the action."]
6409pub struct ContractTermActionSubject {
6410    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
6411    pub id: Option<String>,
6412    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
6413    pub extension: Option<Vec<Box<Extension>>>,
6414    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
6415    pub modifierExtension: Option<Vec<Box<Extension>>>,
6416    #[cardinality(min = 1usize)]
6417    # [reference (targets = ["Patient" , "RelatedPerson" , "Practitioner" , "PractitionerRole" , "Device" , "Group" , "Organization"])]
6418    #[doc = "The entity the action is performed or not performed on or for."]
6419    pub reference: Vec<Box<Reference>>,
6420    #[doc = "Role type of agent assigned roles in this Contract."]
6421    pub role: Option<Box<CodeableConcept>>,
6422}
6423#[derive(
6424    Clone,
6425    Reflect,
6426    Debug,
6427    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
6428    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
6429)]
6430#[fhir_serialize_type = "typechoice"]
6431#[type_choice_field_name = "occurrence"]
6432pub enum ContractTermActionOccurrenceTypeChoice {
6433    DateTime(Box<FHIRDateTime>),
6434    Period(Box<Period>),
6435    Timing(Box<Timing>),
6436}
6437impl Default for ContractTermActionOccurrenceTypeChoice {
6438    fn default() -> Self {
6439        ContractTermActionOccurrenceTypeChoice::DateTime(Box::new(Default::default()))
6440    }
6441}
6442#[derive(
6443    Clone,
6444    Reflect,
6445    Debug,
6446    Default,
6447    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
6448    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
6449)]
6450#[fhir_serialize_type = "complex"]
6451#[doc = "An actor taking a role in an activity for which it can be assigned some degree of responsibility for the activity taking place."]
6452pub struct ContractTermAction {
6453    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
6454    pub id: Option<String>,
6455    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
6456    pub extension: Option<Vec<Box<Extension>>>,
6457    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
6458    pub modifierExtension: Option<Vec<Box<Extension>>>,
6459    #[primitive]
6460    #[doc = "True if the term prohibits the  action."]
6461    pub doNotPerform: Option<Box<FHIRBoolean>>,
6462    #[rename_field = "type"]
6463    #[doc = "Activity or service obligation to be done or not done, performed or not performed, effectuated or not by this Contract term."]
6464    pub type_: Box<CodeableConcept>,
6465    #[doc = "Entity of the action."]
6466    pub subject: Option<Vec<ContractTermActionSubject>>,
6467    #[doc = "Reason or purpose for the action stipulated by this Contract Provision."]
6468    pub intent: Box<CodeableConcept>,
6469    #[primitive]
6470    #[doc = "Id [identifier??] of the clause or question text related to this action in the referenced form or QuestionnaireResponse."]
6471    pub linkId: Option<Vec<Box<FHIRString>>>,
6472    #[doc = "Current state of the term action."]
6473    pub status: Box<CodeableConcept>,
6474    # [reference (targets = ["Encounter" , "EpisodeOfCare"])]
6475    #[doc = "Encounter or Episode with primary association to specified term activity."]
6476    pub context: Option<Box<Reference>>,
6477    #[primitive]
6478    #[doc = "Id [identifier??] of the clause or question text related to the requester of this action in the referenced form or QuestionnaireResponse."]
6479    pub contextLinkId: Option<Vec<Box<FHIRString>>>,
6480    # [type_choice_variants (complex = ["occurrencePeriod" , "occurrenceTiming"] , primitive = ["occurrenceDateTime"])]
6481    #[doc = "When action happens."]
6482    pub occurrence: Option<ContractTermActionOccurrenceTypeChoice>,
6483    # [reference (targets = ["Patient" , "RelatedPerson" , "Practitioner" , "PractitionerRole" , "Device" , "Group" , "Organization"])]
6484    #[doc = "Who or what initiated the action and has responsibility for its activation."]
6485    pub requester: Option<Vec<Box<Reference>>>,
6486    #[primitive]
6487    #[doc = "Id [identifier??] of the clause or question text related to the requester of this action in the referenced form or QuestionnaireResponse."]
6488    pub requesterLinkId: Option<Vec<Box<FHIRString>>>,
6489    #[doc = "The type of individual that is desired or required to perform or not perform the action."]
6490    pub performerType: Option<Vec<Box<CodeableConcept>>>,
6491    #[doc = "The type of role or competency of an individual desired or required to perform or not perform the action."]
6492    pub performerRole: Option<Box<CodeableConcept>>,
6493    # [reference (targets = ["RelatedPerson" , "Patient" , "Practitioner" , "PractitionerRole" , "CareTeam" , "Device" , "Substance" , "Organization" , "Location"])]
6494    #[doc = "Indicates who or what is being asked to perform (or not perform) the ction."]
6495    pub performer: Option<Box<Reference>>,
6496    #[primitive]
6497    #[doc = "Id [identifier??] of the clause or question text related to the reason type or reference of this  action in the referenced form or QuestionnaireResponse."]
6498    pub performerLinkId: Option<Vec<Box<FHIRString>>>,
6499    #[doc = "Rationale for the action to be performed or not performed. Describes why the action is permitted or prohibited."]
6500    pub reasonCode: Option<Vec<Box<CodeableConcept>>>,
6501    # [reference (targets = ["Condition" , "Observation" , "DiagnosticReport" , "DocumentReference" , "Questionnaire" , "QuestionnaireResponse"])]
6502    #[doc = "Indicates another resource whose existence justifies permitting or not permitting this action."]
6503    pub reasonReference: Option<Vec<Box<Reference>>>,
6504    #[primitive]
6505    #[doc = "Describes why the action is to be performed or not performed in textual form."]
6506    pub reason: Option<Vec<Box<FHIRString>>>,
6507    #[primitive]
6508    #[doc = "Id [identifier??] of the clause or question text related to the reason type or reference of this  action in the referenced form or QuestionnaireResponse."]
6509    pub reasonLinkId: Option<Vec<Box<FHIRString>>>,
6510    #[doc = "Comments made about the term action made by the requester, performer, subject or other participants."]
6511    pub note: Option<Vec<Box<Annotation>>>,
6512    #[primitive]
6513    #[doc = "Security labels that protects the action."]
6514    pub securityLabelNumber: Option<Vec<Box<FHIRUnsignedInt>>>,
6515}
6516#[derive(
6517    Clone,
6518    Reflect,
6519    Debug,
6520    Default,
6521    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
6522    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
6523)]
6524#[fhir_serialize_type = "complex"]
6525#[doc = "One or more Contract Provisions, which may be related and conveyed as a group, and may contain nested groups."]
6526pub struct ContractTerm {
6527    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
6528    pub id: Option<String>,
6529    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
6530    pub extension: Option<Vec<Box<Extension>>>,
6531    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
6532    pub modifierExtension: Option<Vec<Box<Extension>>>,
6533    #[rename_field = "identifier"]
6534    #[doc = "Unique identifier for this particular Contract Provision."]
6535    pub identifier_: Option<Box<Identifier>>,
6536    #[primitive]
6537    #[doc = "When this Contract Provision was issued."]
6538    pub issued: Option<Box<FHIRDateTime>>,
6539    #[doc = "Relevant time or time-period when this Contract Provision is applicable."]
6540    pub applies: Option<Box<Period>>,
6541    # [type_choice_variants (complex = ["topicCodeableConcept" , "topicReference"] , primitive = [])]
6542    #[doc = "The entity that the term applies to."]
6543    pub topic: Option<ContractTermTopicTypeChoice>,
6544    #[rename_field = "type"]
6545    #[doc = "A legal clause or condition contained within a contract that requires one or both parties to perform a particular requirement by some specified time or prevents one or both parties from performing a particular requirement by some specified time."]
6546    pub type_: Option<Box<CodeableConcept>>,
6547    #[doc = "A specialized legal clause or condition based on overarching contract type."]
6548    pub subType: Option<Box<CodeableConcept>>,
6549    #[primitive]
6550    #[doc = "Statement of a provision in a policy or a contract."]
6551    pub text: Option<Box<FHIRString>>,
6552    #[doc = "Security labels that protect the handling of information about the term and its elements, which may be specifically identified.."]
6553    pub securityLabel: Option<Vec<ContractTermSecurityLabel>>,
6554    #[doc = "The matter of concern in the context of this provision of the agrement."]
6555    pub offer: ContractTermOffer,
6556    #[doc = "Contract Term Asset List."]
6557    pub asset: Option<Vec<ContractTermAsset>>,
6558    #[doc = "An actor taking a role in an activity for which it can be assigned some degree of responsibility for the activity taking place."]
6559    pub action: Option<Vec<ContractTermAction>>,
6560    #[doc = "Nested group of Contract Provisions."]
6561    pub group: Option<Vec<ContractTerm>>,
6562}
6563#[derive(
6564    Clone,
6565    Reflect,
6566    Debug,
6567    Default,
6568    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
6569    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
6570)]
6571#[fhir_serialize_type = "complex"]
6572#[doc = "Parties with legal standing in the Contract, including the principal parties, the grantor(s) and grantee(s), which are any person or organization bound by the contract, and any ancillary parties, which facilitate the execution of the contract such as a notary or witness."]
6573pub struct ContractSigner {
6574    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
6575    pub id: Option<String>,
6576    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
6577    pub extension: Option<Vec<Box<Extension>>>,
6578    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
6579    pub modifierExtension: Option<Vec<Box<Extension>>>,
6580    #[rename_field = "type"]
6581    #[doc = "Role of this Contract signer, e.g. notary, grantee."]
6582    pub type_: Box<Coding>,
6583    # [reference (targets = ["Organization" , "Patient" , "Practitioner" , "PractitionerRole" , "RelatedPerson"])]
6584    #[doc = "Party which is a signator to this Contract."]
6585    pub party: Box<Reference>,
6586    #[cardinality(min = 1usize)]
6587    #[doc = "Legally binding Contract DSIG signature contents in Base64."]
6588    pub signature: Vec<Box<Signature>>,
6589}
6590#[derive(
6591    Clone,
6592    Reflect,
6593    Debug,
6594    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
6595    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
6596)]
6597#[fhir_serialize_type = "typechoice"]
6598#[type_choice_field_name = "content"]
6599pub enum ContractFriendlyContentTypeChoice {
6600    Attachment(Box<Attachment>),
6601    # [reference (targets = ["Composition" , "DocumentReference" , "QuestionnaireResponse"])]
6602    Reference(Box<Reference>),
6603}
6604impl Default for ContractFriendlyContentTypeChoice {
6605    fn default() -> Self {
6606        ContractFriendlyContentTypeChoice::Attachment(Box::new(Default::default()))
6607    }
6608}
6609#[derive(
6610    Clone,
6611    Reflect,
6612    Debug,
6613    Default,
6614    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
6615    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
6616)]
6617#[fhir_serialize_type = "complex"]
6618#[doc = "The \"patient friendly language\" versionof the Contract in whole or in parts. \"Patient friendly language\" means the representation of the Contract and Contract Provisions in a manner that is readily accessible and understandable by a layperson in accordance with best practices for communication styles that ensure that those agreeing to or signing the Contract understand the roles, actions, obligations, responsibilities, and implication of the agreement."]
6619pub struct ContractFriendly {
6620    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
6621    pub id: Option<String>,
6622    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
6623    pub extension: Option<Vec<Box<Extension>>>,
6624    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
6625    pub modifierExtension: Option<Vec<Box<Extension>>>,
6626    # [type_choice_variants (complex = ["contentAttachment" , "contentReference"] , primitive = [])]
6627    #[doc = "Human readable rendering of this Contract in a format and representation intended to enhance comprehension and ensure understandability."]
6628    pub content: ContractFriendlyContentTypeChoice,
6629}
6630#[derive(
6631    Clone,
6632    Reflect,
6633    Debug,
6634    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
6635    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
6636)]
6637#[fhir_serialize_type = "typechoice"]
6638#[type_choice_field_name = "content"]
6639pub enum ContractLegalContentTypeChoice {
6640    Attachment(Box<Attachment>),
6641    # [reference (targets = ["Composition" , "DocumentReference" , "QuestionnaireResponse"])]
6642    Reference(Box<Reference>),
6643}
6644impl Default for ContractLegalContentTypeChoice {
6645    fn default() -> Self {
6646        ContractLegalContentTypeChoice::Attachment(Box::new(Default::default()))
6647    }
6648}
6649#[derive(
6650    Clone,
6651    Reflect,
6652    Debug,
6653    Default,
6654    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
6655    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
6656)]
6657#[fhir_serialize_type = "complex"]
6658#[doc = "List of Legal expressions or representations of this Contract."]
6659pub struct ContractLegal {
6660    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
6661    pub id: Option<String>,
6662    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
6663    pub extension: Option<Vec<Box<Extension>>>,
6664    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
6665    pub modifierExtension: Option<Vec<Box<Extension>>>,
6666    # [type_choice_variants (complex = ["contentAttachment" , "contentReference"] , primitive = [])]
6667    #[doc = "Contract legal text in human renderable form."]
6668    pub content: ContractLegalContentTypeChoice,
6669}
6670#[derive(
6671    Clone,
6672    Reflect,
6673    Debug,
6674    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
6675    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
6676)]
6677#[fhir_serialize_type = "typechoice"]
6678#[type_choice_field_name = "content"]
6679pub enum ContractRuleContentTypeChoice {
6680    Attachment(Box<Attachment>),
6681    # [reference (targets = ["DocumentReference"])]
6682    Reference(Box<Reference>),
6683}
6684impl Default for ContractRuleContentTypeChoice {
6685    fn default() -> Self {
6686        ContractRuleContentTypeChoice::Attachment(Box::new(Default::default()))
6687    }
6688}
6689#[derive(
6690    Clone,
6691    Reflect,
6692    Debug,
6693    Default,
6694    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
6695    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
6696)]
6697#[fhir_serialize_type = "complex"]
6698#[doc = "List of Computable Policy Rule Language Representations of this Contract."]
6699pub struct ContractRule {
6700    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
6701    pub id: Option<String>,
6702    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
6703    pub extension: Option<Vec<Box<Extension>>>,
6704    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
6705    pub modifierExtension: Option<Vec<Box<Extension>>>,
6706    # [type_choice_variants (complex = ["contentAttachment" , "contentReference"] , primitive = [])]
6707    #[doc = "Computable Contract conveyed using a policy rule language (e.g. XACML, DKAL, SecPal)."]
6708    pub content: ContractRuleContentTypeChoice,
6709}
6710#[derive(
6711    Clone,
6712    Reflect,
6713    Debug,
6714    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
6715    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
6716)]
6717#[fhir_serialize_type = "typechoice"]
6718#[type_choice_field_name = "legallyBinding"]
6719pub enum ContractLegallyBindingTypeChoice {
6720    Attachment(Box<Attachment>),
6721    # [reference (targets = ["Composition" , "DocumentReference" , "QuestionnaireResponse" , "Contract"])]
6722    Reference(Box<Reference>),
6723}
6724impl Default for ContractLegallyBindingTypeChoice {
6725    fn default() -> Self {
6726        ContractLegallyBindingTypeChoice::Attachment(Box::new(Default::default()))
6727    }
6728}
6729#[derive(
6730    Clone,
6731    Reflect,
6732    Debug,
6733    Default,
6734    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
6735    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
6736)]
6737#[fhir_serialize_type = "resource"]
6738#[doc = "Legally enforceable, formally recorded unilateral or bilateral directive i.e., a policy or agreement."]
6739pub struct Contract {
6740    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
6741    pub id: Option<String>,
6742    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
6743    pub meta: Option<Box<Meta>>,
6744    #[primitive]
6745    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
6746    pub implicitRules: Option<Box<FHIRUri>>,
6747    #[primitive]
6748    #[doc = "The base language in which the resource is written."]
6749    pub language: Option<Box<FHIRCode>>,
6750    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
6751    pub text: Option<Box<Narrative>>,
6752    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
6753    pub contained: Option<Vec<Box<Resource>>>,
6754    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
6755    pub extension: Option<Vec<Box<Extension>>>,
6756    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
6757    pub modifierExtension: Option<Vec<Box<Extension>>>,
6758    #[rename_field = "identifier"]
6759    #[doc = "Unique identifier for this Contract or a derivative that references a Source Contract."]
6760    pub identifier_: Option<Vec<Box<Identifier>>>,
6761    #[primitive]
6762    #[doc = "Canonical identifier for this contract, represented as a URI (globally unique)."]
6763    pub url: Option<Box<FHIRUri>>,
6764    #[primitive]
6765    #[doc = "An edition identifier used for business purposes to label business significant variants."]
6766    pub version: Option<Box<FHIRString>>,
6767    #[primitive]
6768    #[doc = "The status of the resource instance."]
6769    pub status: Option<Box<terminology::ContractStatus>>,
6770    #[doc = "Legal states of the formation of a legal instrument, which is a formally executed written document that can be formally attributed to its author, records and formally expresses a legally enforceable act, process, or contractual duty, obligation, or right, and therefore evidences that act, process, or agreement."]
6771    pub legalState: Option<Box<CodeableConcept>>,
6772    # [reference (targets = ["Contract"])]
6773    #[doc = "The URL pointing to a FHIR-defined Contract Definition that is adhered to in whole or part by this Contract."]
6774    pub instantiatesCanonical: Option<Box<Reference>>,
6775    #[primitive]
6776    #[doc = "The URL pointing to an externally maintained definition that is adhered to in whole or in part by this Contract."]
6777    pub instantiatesUri: Option<Box<FHIRUri>>,
6778    #[doc = "The minimal content derived from the basal information source at a specific stage in its lifecycle."]
6779    pub contentDerivative: Option<Box<CodeableConcept>>,
6780    #[primitive]
6781    #[doc = "When this  Contract was issued."]
6782    pub issued: Option<Box<FHIRDateTime>>,
6783    #[doc = "Relevant time or time-period when this Contract is applicable."]
6784    pub applies: Option<Box<Period>>,
6785    #[doc = "Event resulting in discontinuation or termination of this Contract instance by one or more parties to the contract."]
6786    pub expirationType: Option<Box<CodeableConcept>>,
6787    # [reference (targets = ["Resource"])]
6788    #[doc = "The target entity impacted by or of interest to parties to the agreement."]
6789    pub subject: Option<Vec<Box<Reference>>>,
6790    # [reference (targets = ["Organization"])]
6791    #[doc = "A formally or informally recognized grouping of people, principals, organizations, or jurisdictions formed for the purpose of achieving some form of collective action such as the promulgation, administration and enforcement of contracts and policies."]
6792    pub authority: Option<Vec<Box<Reference>>>,
6793    # [reference (targets = ["Location"])]
6794    #[doc = "Recognized governance framework or system operating with a circumscribed scope in accordance with specified principles, policies, processes or procedures for managing rights, actions, or behaviors of parties or principals relative to resources."]
6795    pub domain: Option<Vec<Box<Reference>>>,
6796    # [reference (targets = ["Location"])]
6797    #[doc = "Sites in which the contract is complied with,  exercised, or in force."]
6798    pub site: Option<Vec<Box<Reference>>>,
6799    #[primitive]
6800    #[doc = "A natural language name identifying this Contract definition, derivative, or instance in any legal state. Provides additional information about its content. This name should be usable as an identifier for the module by machine processing applications such as code generation."]
6801    pub name: Option<Box<FHIRString>>,
6802    #[primitive]
6803    #[doc = "A short, descriptive, user-friendly title for this Contract definition, derivative, or instance in any legal state.t giving additional information about its content."]
6804    pub title: Option<Box<FHIRString>>,
6805    #[primitive]
6806    #[doc = "An explanatory or alternate user-friendly title for this Contract definition, derivative, or instance in any legal state.t giving additional information about its content."]
6807    pub subtitle: Option<Box<FHIRString>>,
6808    #[primitive]
6809    #[doc = "Alternative representation of the title for this Contract definition, derivative, or instance in any legal state., e.g., a domain specific contract number related to legislation."]
6810    pub alias: Option<Vec<Box<FHIRString>>>,
6811    # [reference (targets = ["Patient" , "Practitioner" , "PractitionerRole" , "Organization"])]
6812    #[doc = "The individual or organization that authored the Contract definition, derivative, or instance in any legal state."]
6813    pub author: Option<Box<Reference>>,
6814    #[doc = "A selector of legal concerns for this Contract definition, derivative, or instance in any legal state."]
6815    pub scope: Option<Box<CodeableConcept>>,
6816    # [type_choice_variants (complex = ["topicCodeableConcept" , "topicReference"] , primitive = [])]
6817    #[doc = "Narrows the range of legal concerns to focus on the achievement of specific contractual objectives."]
6818    pub topic: Option<ContractTopicTypeChoice>,
6819    #[rename_field = "type"]
6820    #[doc = "A high-level category for the legal instrument, whether constructed as a Contract definition, derivative, or instance in any legal state.  Provides additional information about its content within the context of the Contract's scope to distinguish the kinds of systems that would be interested in the contract."]
6821    pub type_: Option<Box<CodeableConcept>>,
6822    #[doc = "Sub-category for the Contract that distinguishes the kinds of systems that would be interested in the Contract within the context of the Contract's scope."]
6823    pub subType: Option<Vec<Box<CodeableConcept>>>,
6824    #[doc = "Precusory content developed with a focus and intent of supporting the formation a Contract instance, which may be associated with and transformable into a Contract."]
6825    pub contentDefinition: Option<ContractContentDefinition>,
6826    #[doc = "One or more Contract Provisions, which may be related and conveyed as a group, and may contain nested groups."]
6827    pub term: Option<Vec<ContractTerm>>,
6828    # [reference (targets = ["Resource"])]
6829    #[doc = "Information that may be needed by/relevant to the performer in their execution of this term action."]
6830    pub supportingInfo: Option<Vec<Box<Reference>>>,
6831    # [reference (targets = ["Provenance"])]
6832    #[doc = "Links to Provenance records for past versions of this Contract definition, derivative, or instance, which identify key state transitions or updates that are likely to be relevant to a user looking at the current version of the Contract.  The Provence.entity indicates the target that was changed in the update. http://build.fhir.org/provenance-definitions.html#Provenance.entity."]
6833    pub relevantHistory: Option<Vec<Box<Reference>>>,
6834    #[doc = "Parties with legal standing in the Contract, including the principal parties, the grantor(s) and grantee(s), which are any person or organization bound by the contract, and any ancillary parties, which facilitate the execution of the contract such as a notary or witness."]
6835    pub signer: Option<Vec<ContractSigner>>,
6836    #[doc = "The \"patient friendly language\" versionof the Contract in whole or in parts. \"Patient friendly language\" means the representation of the Contract and Contract Provisions in a manner that is readily accessible and understandable by a layperson in accordance with best practices for communication styles that ensure that those agreeing to or signing the Contract understand the roles, actions, obligations, responsibilities, and implication of the agreement."]
6837    pub friendly: Option<Vec<ContractFriendly>>,
6838    #[doc = "List of Legal expressions or representations of this Contract."]
6839    pub legal: Option<Vec<ContractLegal>>,
6840    #[doc = "List of Computable Policy Rule Language Representations of this Contract."]
6841    pub rule: Option<Vec<ContractRule>>,
6842    # [type_choice_variants (complex = ["legallyBindingAttachment" , "legallyBindingReference"] , primitive = [])]
6843    #[doc = "Legally binding Contract: This is the signed and legally recognized representation of the Contract, which is considered the \"source of truth\" and which would be the basis for legal action related to enforcement of this Contract."]
6844    pub legallyBinding: Option<ContractLegallyBindingTypeChoice>,
6845}
6846#[derive(
6847    Clone,
6848    Reflect,
6849    Debug,
6850    Default,
6851    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
6852    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
6853)]
6854#[fhir_serialize_type = "complex"]
6855#[doc = "A suite of underwriter specific classifiers."]
6856pub struct CoverageClass {
6857    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
6858    pub id: Option<String>,
6859    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
6860    pub extension: Option<Vec<Box<Extension>>>,
6861    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
6862    pub modifierExtension: Option<Vec<Box<Extension>>>,
6863    #[rename_field = "type"]
6864    #[doc = "The type of classification for which an insurer-specific class label or number and optional name is provided, for example may be used to identify a class of coverage or employer group, Policy, Plan."]
6865    pub type_: Box<CodeableConcept>,
6866    #[primitive]
6867    #[doc = "The alphanumeric string value associated with the insurer issued label."]
6868    pub value: Box<FHIRString>,
6869    #[primitive]
6870    #[doc = "A short description for the class."]
6871    pub name: Option<Box<FHIRString>>,
6872}
6873#[derive(
6874    Clone,
6875    Reflect,
6876    Debug,
6877    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
6878    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
6879)]
6880#[fhir_serialize_type = "typechoice"]
6881#[type_choice_field_name = "value"]
6882pub enum CoverageCostToBeneficiaryValueTypeChoice {
6883    Quantity(Box<Quantity>),
6884    Money(Box<Money>),
6885}
6886impl Default for CoverageCostToBeneficiaryValueTypeChoice {
6887    fn default() -> Self {
6888        CoverageCostToBeneficiaryValueTypeChoice::Quantity(Box::new(Default::default()))
6889    }
6890}
6891#[derive(
6892    Clone,
6893    Reflect,
6894    Debug,
6895    Default,
6896    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
6897    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
6898)]
6899#[fhir_serialize_type = "complex"]
6900#[doc = "A suite of codes indicating exceptions or reductions to patient costs and their effective periods."]
6901pub struct CoverageCostToBeneficiaryException {
6902    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
6903    pub id: Option<String>,
6904    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
6905    pub extension: Option<Vec<Box<Extension>>>,
6906    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
6907    pub modifierExtension: Option<Vec<Box<Extension>>>,
6908    #[rename_field = "type"]
6909    #[doc = "The code for the specific exception."]
6910    pub type_: Box<CodeableConcept>,
6911    #[doc = "The timeframe during when the exception is in force."]
6912    pub period: Option<Box<Period>>,
6913}
6914#[derive(
6915    Clone,
6916    Reflect,
6917    Debug,
6918    Default,
6919    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
6920    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
6921)]
6922#[fhir_serialize_type = "complex"]
6923#[doc = "A suite of codes indicating the cost category and associated amount which have been detailed in the policy and may have been  included on the health card."]
6924pub struct CoverageCostToBeneficiary {
6925    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
6926    pub id: Option<String>,
6927    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
6928    pub extension: Option<Vec<Box<Extension>>>,
6929    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
6930    pub modifierExtension: Option<Vec<Box<Extension>>>,
6931    #[rename_field = "type"]
6932    #[doc = "The category of patient centric costs associated with treatment."]
6933    pub type_: Option<Box<CodeableConcept>>,
6934    # [type_choice_variants (complex = ["valueQuantity" , "valueMoney"] , primitive = [])]
6935    #[doc = "The amount due from the patient for the cost category."]
6936    pub value: CoverageCostToBeneficiaryValueTypeChoice,
6937    #[doc = "A suite of codes indicating exceptions or reductions to patient costs and their effective periods."]
6938    pub exception: Option<Vec<CoverageCostToBeneficiaryException>>,
6939}
6940#[derive(
6941    Clone,
6942    Reflect,
6943    Debug,
6944    Default,
6945    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
6946    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
6947)]
6948#[fhir_serialize_type = "resource"]
6949#[doc = "Financial instrument which may be used to reimburse or pay for health care products and services. Includes both insurance and self-payment."]
6950pub struct Coverage {
6951    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
6952    pub id: Option<String>,
6953    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
6954    pub meta: Option<Box<Meta>>,
6955    #[primitive]
6956    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
6957    pub implicitRules: Option<Box<FHIRUri>>,
6958    #[primitive]
6959    #[doc = "The base language in which the resource is written."]
6960    pub language: Option<Box<FHIRCode>>,
6961    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
6962    pub text: Option<Box<Narrative>>,
6963    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
6964    pub contained: Option<Vec<Box<Resource>>>,
6965    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
6966    pub extension: Option<Vec<Box<Extension>>>,
6967    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
6968    pub modifierExtension: Option<Vec<Box<Extension>>>,
6969    #[rename_field = "identifier"]
6970    #[doc = "A unique identifier assigned to this coverage."]
6971    pub identifier_: Option<Vec<Box<Identifier>>>,
6972    #[primitive]
6973    #[doc = "The status of the resource instance."]
6974    pub status: Box<terminology::FmStatus>,
6975    #[rename_field = "type"]
6976    #[doc = "The type of coverage: social program, medical plan, accident coverage (workers compensation, auto), group health or payment by an individual or organization."]
6977    pub type_: Option<Box<CodeableConcept>>,
6978    # [reference (targets = ["Patient" , "RelatedPerson" , "Organization"])]
6979    #[doc = "The party who 'owns' the insurance policy."]
6980    pub policyHolder: Option<Box<Reference>>,
6981    # [reference (targets = ["Patient" , "RelatedPerson"])]
6982    #[doc = "The party who has signed-up for or 'owns' the contractual relationship to the policy or to whom the benefit of the policy for services rendered to them or their family is due."]
6983    pub subscriber: Option<Box<Reference>>,
6984    #[primitive]
6985    #[doc = "The insurer assigned ID for the Subscriber."]
6986    pub subscriberId: Option<Box<FHIRString>>,
6987    # [reference (targets = ["Patient"])]
6988    #[doc = "The party who benefits from the insurance coverage; the patient when products and/or services are provided."]
6989    pub beneficiary: Box<Reference>,
6990    #[primitive]
6991    #[doc = "A unique identifier for a dependent under the coverage."]
6992    pub dependent: Option<Box<FHIRString>>,
6993    #[doc = "The relationship of beneficiary (patient) to the subscriber."]
6994    pub relationship: Option<Box<CodeableConcept>>,
6995    #[doc = "Time period during which the coverage is in force. A missing start date indicates the start date isn't known, a missing end date means the coverage is continuing to be in force."]
6996    pub period: Option<Box<Period>>,
6997    #[cardinality(min = 1usize)]
6998    # [reference (targets = ["Organization" , "Patient" , "RelatedPerson"])]
6999    #[doc = "The program or plan underwriter or payor including both insurance and non-insurance agreements, such as patient-pay agreements."]
7000    pub payor: Vec<Box<Reference>>,
7001    #[doc = "A suite of underwriter specific classifiers."]
7002    pub class: Option<Vec<CoverageClass>>,
7003    #[primitive]
7004    #[doc = "The order of applicability of this coverage relative to other coverages which are currently in force. Note, there may be gaps in the numbering and this does not imply primary, secondary etc. as the specific positioning of coverages depends upon the episode of care."]
7005    pub order: Option<Box<FHIRPositiveInt>>,
7006    #[primitive]
7007    #[doc = "The insurer-specific identifier for the insurer-defined network of providers to which the beneficiary may seek treatment which will be covered at the 'in-network' rate, otherwise 'out of network' terms and conditions apply."]
7008    pub network: Option<Box<FHIRString>>,
7009    #[doc = "A suite of codes indicating the cost category and associated amount which have been detailed in the policy and may have been  included on the health card."]
7010    pub costToBeneficiary: Option<Vec<CoverageCostToBeneficiary>>,
7011    #[primitive]
7012    #[doc = "When 'subrogation=true' this insurance instance has been included not for adjudication but to provide insurers with the details to recover costs."]
7013    pub subrogation: Option<Box<FHIRBoolean>>,
7014    # [reference (targets = ["Contract"])]
7015    #[doc = "The policy(s) which constitute this insurance coverage."]
7016    pub contract: Option<Vec<Box<Reference>>>,
7017}
7018#[derive(
7019    Clone,
7020    Reflect,
7021    Debug,
7022    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
7023    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
7024)]
7025#[fhir_serialize_type = "typechoice"]
7026#[type_choice_field_name = "serviced"]
7027pub enum CoverageEligibilityRequestServicedTypeChoice {
7028    Date(Box<FHIRDate>),
7029    Period(Box<Period>),
7030}
7031impl Default for CoverageEligibilityRequestServicedTypeChoice {
7032    fn default() -> Self {
7033        CoverageEligibilityRequestServicedTypeChoice::Date(Box::new(Default::default()))
7034    }
7035}
7036#[derive(
7037    Clone,
7038    Reflect,
7039    Debug,
7040    Default,
7041    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
7042    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
7043)]
7044#[fhir_serialize_type = "complex"]
7045#[doc = "Additional information codes regarding exceptions, special considerations, the condition, situation, prior or concurrent issues."]
7046pub struct CoverageEligibilityRequestSupportingInfo {
7047    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
7048    pub id: Option<String>,
7049    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
7050    pub extension: Option<Vec<Box<Extension>>>,
7051    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
7052    pub modifierExtension: Option<Vec<Box<Extension>>>,
7053    #[primitive]
7054    #[doc = "A number to uniquely identify supporting information entries."]
7055    pub sequence: Box<FHIRPositiveInt>,
7056    # [reference (targets = ["Resource"])]
7057    #[doc = "Additional data or information such as resources, documents, images etc. including references to the data or the actual inclusion of the data."]
7058    pub information: Box<Reference>,
7059    #[primitive]
7060    #[doc = "The supporting materials are applicable for all detail items, product/servce categories and specific billing codes."]
7061    pub appliesToAll: Option<Box<FHIRBoolean>>,
7062}
7063#[derive(
7064    Clone,
7065    Reflect,
7066    Debug,
7067    Default,
7068    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
7069    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
7070)]
7071#[fhir_serialize_type = "complex"]
7072#[doc = "Financial instruments for reimbursement for the health care products and services."]
7073pub struct CoverageEligibilityRequestInsurance {
7074    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
7075    pub id: Option<String>,
7076    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
7077    pub extension: Option<Vec<Box<Extension>>>,
7078    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
7079    pub modifierExtension: Option<Vec<Box<Extension>>>,
7080    #[primitive]
7081    #[doc = "A flag to indicate that this Coverage is to be used for evaluation of this request when set to true."]
7082    pub focal: Option<Box<FHIRBoolean>>,
7083    # [reference (targets = ["Coverage"])]
7084    #[doc = "Reference to the insurance card level information contained in the Coverage resource. The coverage issuing insurer will use these details to locate the patient's actual coverage within the insurer's information system."]
7085    pub coverage: Box<Reference>,
7086    #[primitive]
7087    #[doc = "A business agreement number established between the provider and the insurer for special business processing purposes."]
7088    pub businessArrangement: Option<Box<FHIRString>>,
7089}
7090#[derive(
7091    Clone,
7092    Reflect,
7093    Debug,
7094    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
7095    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
7096)]
7097#[fhir_serialize_type = "typechoice"]
7098#[type_choice_field_name = "diagnosis"]
7099pub enum CoverageEligibilityRequestItemDiagnosisDiagnosisTypeChoice {
7100    CodeableConcept(Box<CodeableConcept>),
7101    # [reference (targets = ["Condition"])]
7102    Reference(Box<Reference>),
7103}
7104impl Default for CoverageEligibilityRequestItemDiagnosisDiagnosisTypeChoice {
7105    fn default() -> Self {
7106        CoverageEligibilityRequestItemDiagnosisDiagnosisTypeChoice::CodeableConcept(Box::new(
7107            Default::default(),
7108        ))
7109    }
7110}
7111#[derive(
7112    Clone,
7113    Reflect,
7114    Debug,
7115    Default,
7116    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
7117    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
7118)]
7119#[fhir_serialize_type = "complex"]
7120#[doc = "Patient diagnosis for which care is sought."]
7121pub struct CoverageEligibilityRequestItemDiagnosis {
7122    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
7123    pub id: Option<String>,
7124    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
7125    pub extension: Option<Vec<Box<Extension>>>,
7126    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
7127    pub modifierExtension: Option<Vec<Box<Extension>>>,
7128    # [type_choice_variants (complex = ["diagnosisCodeableConcept" , "diagnosisReference"] , primitive = [])]
7129    #[doc = "The nature of illness or problem in a coded form or as a reference to an external defined Condition."]
7130    pub diagnosis: Option<CoverageEligibilityRequestItemDiagnosisDiagnosisTypeChoice>,
7131}
7132#[derive(
7133    Clone,
7134    Reflect,
7135    Debug,
7136    Default,
7137    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
7138    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
7139)]
7140#[fhir_serialize_type = "complex"]
7141#[doc = "Service categories or billable services for which benefit details and/or an authorization prior to service delivery may be required by the payor."]
7142pub struct CoverageEligibilityRequestItem {
7143    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
7144    pub id: Option<String>,
7145    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
7146    pub extension: Option<Vec<Box<Extension>>>,
7147    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
7148    pub modifierExtension: Option<Vec<Box<Extension>>>,
7149    #[primitive]
7150    #[doc = "Exceptions, special conditions and supporting information applicable for this service or product line."]
7151    pub supportingInfoSequence: Option<Vec<Box<FHIRPositiveInt>>>,
7152    #[doc = "Code to identify the general type of benefits under which products and services are provided."]
7153    pub category: Option<Box<CodeableConcept>>,
7154    #[doc = "This contains the product, service, drug or other billing code for the item."]
7155    pub productOrService: Option<Box<CodeableConcept>>,
7156    #[doc = "Item typification or modifiers codes to convey additional context for the product or service."]
7157    pub modifier: Option<Vec<Box<CodeableConcept>>>,
7158    # [reference (targets = ["Practitioner" , "PractitionerRole"])]
7159    #[doc = "The practitioner who is responsible for the product or service to be rendered to the patient."]
7160    pub provider: Option<Box<Reference>>,
7161    #[doc = "The number of repetitions of a service or product."]
7162    pub quantity: Option<Box<Quantity>>,
7163    #[doc = "The amount charged to the patient by the provider for a single unit."]
7164    pub unitPrice: Option<Box<Money>>,
7165    # [reference (targets = ["Location" , "Organization"])]
7166    #[doc = "Facility where the services will be provided."]
7167    pub facility: Option<Box<Reference>>,
7168    #[doc = "Patient diagnosis for which care is sought."]
7169    pub diagnosis: Option<Vec<CoverageEligibilityRequestItemDiagnosis>>,
7170    # [reference (targets = ["Resource"])]
7171    #[doc = "The plan/proposal/order describing the proposed service in detail."]
7172    pub detail: Option<Vec<Box<Reference>>>,
7173}
7174#[derive(
7175    Clone,
7176    Reflect,
7177    Debug,
7178    Default,
7179    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
7180    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
7181)]
7182#[fhir_serialize_type = "resource"]
7183#[doc = "The CoverageEligibilityRequest provides patient and insurance coverage information to an insurer for them to respond, in the form of an CoverageEligibilityResponse, with information regarding whether the stated coverage is valid and in-force and optionally to provide the insurance details of the policy."]
7184pub struct CoverageEligibilityRequest {
7185    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
7186    pub id: Option<String>,
7187    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
7188    pub meta: Option<Box<Meta>>,
7189    #[primitive]
7190    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
7191    pub implicitRules: Option<Box<FHIRUri>>,
7192    #[primitive]
7193    #[doc = "The base language in which the resource is written."]
7194    pub language: Option<Box<FHIRCode>>,
7195    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
7196    pub text: Option<Box<Narrative>>,
7197    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
7198    pub contained: Option<Vec<Box<Resource>>>,
7199    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
7200    pub extension: Option<Vec<Box<Extension>>>,
7201    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
7202    pub modifierExtension: Option<Vec<Box<Extension>>>,
7203    #[rename_field = "identifier"]
7204    #[doc = "A unique identifier assigned to this coverage eligiblity request."]
7205    pub identifier_: Option<Vec<Box<Identifier>>>,
7206    #[primitive]
7207    #[doc = "The status of the resource instance."]
7208    pub status: Box<terminology::FmStatus>,
7209    #[doc = "When the requestor expects the processor to complete processing."]
7210    pub priority: Option<Box<CodeableConcept>>,
7211    #[primitive]
7212    #[cardinality(min = 1usize)]
7213    #[doc = "Code to specify whether requesting: prior authorization requirements for some service categories or billing codes; benefits for coverages specified or discovered; discovery and return of coverages for the patient; and/or validation that the specified coverage is in-force at the date/period specified or 'now' if not specified."]
7214    pub purpose: Vec<Box<terminology::EligibilityrequestPurpose>>,
7215    # [reference (targets = ["Patient"])]
7216    #[doc = "The party who is the beneficiary of the supplied coverage and for whom eligibility is sought."]
7217    pub patient: Box<Reference>,
7218    # [type_choice_variants (complex = ["servicedPeriod"] , primitive = ["servicedDate"])]
7219    #[doc = "The date or dates when the enclosed suite of services were performed or completed."]
7220    pub serviced: Option<CoverageEligibilityRequestServicedTypeChoice>,
7221    #[primitive]
7222    #[doc = "The date when this resource was created."]
7223    pub created: Box<FHIRDateTime>,
7224    # [reference (targets = ["Practitioner" , "PractitionerRole"])]
7225    #[doc = "Person who created the request."]
7226    pub enterer: Option<Box<Reference>>,
7227    # [reference (targets = ["Practitioner" , "PractitionerRole" , "Organization"])]
7228    #[doc = "The provider which is responsible for the request."]
7229    pub provider: Option<Box<Reference>>,
7230    # [reference (targets = ["Organization"])]
7231    #[doc = "The Insurer who issued the coverage in question and is the recipient of the request."]
7232    pub insurer: Box<Reference>,
7233    # [reference (targets = ["Location"])]
7234    #[doc = "Facility where the services are intended to be provided."]
7235    pub facility: Option<Box<Reference>>,
7236    #[doc = "Additional information codes regarding exceptions, special considerations, the condition, situation, prior or concurrent issues."]
7237    pub supportingInfo: Option<Vec<CoverageEligibilityRequestSupportingInfo>>,
7238    #[doc = "Financial instruments for reimbursement for the health care products and services."]
7239    pub insurance: Option<Vec<CoverageEligibilityRequestInsurance>>,
7240    #[doc = "Service categories or billable services for which benefit details and/or an authorization prior to service delivery may be required by the payor."]
7241    pub item: Option<Vec<CoverageEligibilityRequestItem>>,
7242}
7243#[derive(
7244    Clone,
7245    Reflect,
7246    Debug,
7247    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
7248    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
7249)]
7250#[fhir_serialize_type = "typechoice"]
7251#[type_choice_field_name = "serviced"]
7252pub enum CoverageEligibilityResponseServicedTypeChoice {
7253    Date(Box<FHIRDate>),
7254    Period(Box<Period>),
7255}
7256impl Default for CoverageEligibilityResponseServicedTypeChoice {
7257    fn default() -> Self {
7258        CoverageEligibilityResponseServicedTypeChoice::Date(Box::new(Default::default()))
7259    }
7260}
7261#[derive(
7262    Clone,
7263    Reflect,
7264    Debug,
7265    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
7266    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
7267)]
7268#[fhir_serialize_type = "typechoice"]
7269#[type_choice_field_name = "allowed"]
7270pub enum CoverageEligibilityResponseInsuranceItemBenefitAllowedTypeChoice {
7271    UnsignedInt(Box<FHIRUnsignedInt>),
7272    String(Box<FHIRString>),
7273    Money(Box<Money>),
7274}
7275impl Default for CoverageEligibilityResponseInsuranceItemBenefitAllowedTypeChoice {
7276    fn default() -> Self {
7277        CoverageEligibilityResponseInsuranceItemBenefitAllowedTypeChoice::UnsignedInt(Box::new(
7278            Default::default(),
7279        ))
7280    }
7281}
7282#[derive(
7283    Clone,
7284    Reflect,
7285    Debug,
7286    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
7287    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
7288)]
7289#[fhir_serialize_type = "typechoice"]
7290#[type_choice_field_name = "used"]
7291pub enum CoverageEligibilityResponseInsuranceItemBenefitUsedTypeChoice {
7292    UnsignedInt(Box<FHIRUnsignedInt>),
7293    String(Box<FHIRString>),
7294    Money(Box<Money>),
7295}
7296impl Default for CoverageEligibilityResponseInsuranceItemBenefitUsedTypeChoice {
7297    fn default() -> Self {
7298        CoverageEligibilityResponseInsuranceItemBenefitUsedTypeChoice::UnsignedInt(Box::new(
7299            Default::default(),
7300        ))
7301    }
7302}
7303#[derive(
7304    Clone,
7305    Reflect,
7306    Debug,
7307    Default,
7308    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
7309    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
7310)]
7311#[fhir_serialize_type = "complex"]
7312#[doc = "Benefits used to date."]
7313pub struct CoverageEligibilityResponseInsuranceItemBenefit {
7314    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
7315    pub id: Option<String>,
7316    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
7317    pub extension: Option<Vec<Box<Extension>>>,
7318    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
7319    pub modifierExtension: Option<Vec<Box<Extension>>>,
7320    #[rename_field = "type"]
7321    #[doc = "Classification of benefit being provided."]
7322    pub type_: Box<CodeableConcept>,
7323    # [type_choice_variants (complex = ["allowedMoney"] , primitive = ["allowedUnsignedInt" , "allowedString"])]
7324    #[doc = "The quantity of the benefit which is permitted under the coverage."]
7325    pub allowed: Option<CoverageEligibilityResponseInsuranceItemBenefitAllowedTypeChoice>,
7326    # [type_choice_variants (complex = ["usedMoney"] , primitive = ["usedUnsignedInt" , "usedString"])]
7327    #[doc = "The quantity of the benefit which have been consumed to date."]
7328    pub used: Option<CoverageEligibilityResponseInsuranceItemBenefitUsedTypeChoice>,
7329}
7330#[derive(
7331    Clone,
7332    Reflect,
7333    Debug,
7334    Default,
7335    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
7336    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
7337)]
7338#[fhir_serialize_type = "complex"]
7339#[doc = "Benefits and optionally current balances, and authorization details by category or service."]
7340pub struct CoverageEligibilityResponseInsuranceItem {
7341    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
7342    pub id: Option<String>,
7343    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
7344    pub extension: Option<Vec<Box<Extension>>>,
7345    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
7346    pub modifierExtension: Option<Vec<Box<Extension>>>,
7347    #[doc = "Code to identify the general type of benefits under which products and services are provided."]
7348    pub category: Option<Box<CodeableConcept>>,
7349    #[doc = "This contains the product, service, drug or other billing code for the item."]
7350    pub productOrService: Option<Box<CodeableConcept>>,
7351    #[doc = "Item typification or modifiers codes to convey additional context for the product or service."]
7352    pub modifier: Option<Vec<Box<CodeableConcept>>>,
7353    # [reference (targets = ["Practitioner" , "PractitionerRole"])]
7354    #[doc = "The practitioner who is eligible for the provision of the product or service."]
7355    pub provider: Option<Box<Reference>>,
7356    #[primitive]
7357    #[doc = "True if the indicated class of service is excluded from the plan, missing or False indicates the product or service is included in the coverage."]
7358    pub excluded: Option<Box<FHIRBoolean>>,
7359    #[primitive]
7360    #[doc = "A short name or tag for the benefit."]
7361    pub name: Option<Box<FHIRString>>,
7362    #[primitive]
7363    #[doc = "A richer description of the benefit or services covered."]
7364    pub description: Option<Box<FHIRString>>,
7365    #[doc = "Is a flag to indicate whether the benefits refer to in-network providers or out-of-network providers."]
7366    pub network: Option<Box<CodeableConcept>>,
7367    #[doc = "Indicates if the benefits apply to an individual or to the family."]
7368    pub unit: Option<Box<CodeableConcept>>,
7369    #[doc = "The term or period of the values such as 'maximum lifetime benefit' or 'maximum annual visits'."]
7370    pub term: Option<Box<CodeableConcept>>,
7371    #[doc = "Benefits used to date."]
7372    pub benefit: Option<Vec<CoverageEligibilityResponseInsuranceItemBenefit>>,
7373    #[primitive]
7374    #[doc = "A boolean flag indicating whether a preauthorization is required prior to actual service delivery."]
7375    pub authorizationRequired: Option<Box<FHIRBoolean>>,
7376    #[doc = "Codes or comments regarding information or actions associated with the preauthorization."]
7377    pub authorizationSupporting: Option<Vec<Box<CodeableConcept>>>,
7378    #[primitive]
7379    #[doc = "A web location for obtaining requirements or descriptive information regarding the preauthorization."]
7380    pub authorizationUrl: Option<Box<FHIRUri>>,
7381}
7382#[derive(
7383    Clone,
7384    Reflect,
7385    Debug,
7386    Default,
7387    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
7388    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
7389)]
7390#[fhir_serialize_type = "complex"]
7391#[doc = "Financial instruments for reimbursement for the health care products and services."]
7392pub struct CoverageEligibilityResponseInsurance {
7393    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
7394    pub id: Option<String>,
7395    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
7396    pub extension: Option<Vec<Box<Extension>>>,
7397    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
7398    pub modifierExtension: Option<Vec<Box<Extension>>>,
7399    # [reference (targets = ["Coverage"])]
7400    #[doc = "Reference to the insurance card level information contained in the Coverage resource. The coverage issuing insurer will use these details to locate the patient's actual coverage within the insurer's information system."]
7401    pub coverage: Box<Reference>,
7402    #[primitive]
7403    #[doc = "Flag indicating if the coverage provided is inforce currently if no service date(s) specified or for the whole duration of the service dates."]
7404    pub inforce: Option<Box<FHIRBoolean>>,
7405    #[doc = "The term of the benefits documented in this response."]
7406    pub benefitPeriod: Option<Box<Period>>,
7407    #[doc = "Benefits and optionally current balances, and authorization details by category or service."]
7408    pub item: Option<Vec<CoverageEligibilityResponseInsuranceItem>>,
7409}
7410#[derive(
7411    Clone,
7412    Reflect,
7413    Debug,
7414    Default,
7415    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
7416    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
7417)]
7418#[fhir_serialize_type = "complex"]
7419#[doc = "Errors encountered during the processing of the request."]
7420pub struct CoverageEligibilityResponseError {
7421    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
7422    pub id: Option<String>,
7423    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
7424    pub extension: Option<Vec<Box<Extension>>>,
7425    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
7426    pub modifierExtension: Option<Vec<Box<Extension>>>,
7427    #[doc = "An error code,from a specified code system, which details why the eligibility check could not be performed."]
7428    pub code: Box<CodeableConcept>,
7429}
7430#[derive(
7431    Clone,
7432    Reflect,
7433    Debug,
7434    Default,
7435    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
7436    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
7437)]
7438#[fhir_serialize_type = "resource"]
7439#[doc = "This resource provides eligibility and plan details from the processing of an CoverageEligibilityRequest resource."]
7440pub struct CoverageEligibilityResponse {
7441    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
7442    pub id: Option<String>,
7443    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
7444    pub meta: Option<Box<Meta>>,
7445    #[primitive]
7446    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
7447    pub implicitRules: Option<Box<FHIRUri>>,
7448    #[primitive]
7449    #[doc = "The base language in which the resource is written."]
7450    pub language: Option<Box<FHIRCode>>,
7451    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
7452    pub text: Option<Box<Narrative>>,
7453    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
7454    pub contained: Option<Vec<Box<Resource>>>,
7455    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
7456    pub extension: Option<Vec<Box<Extension>>>,
7457    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
7458    pub modifierExtension: Option<Vec<Box<Extension>>>,
7459    #[rename_field = "identifier"]
7460    #[doc = "A unique identifier assigned to this coverage eligiblity request."]
7461    pub identifier_: Option<Vec<Box<Identifier>>>,
7462    #[primitive]
7463    #[doc = "The status of the resource instance."]
7464    pub status: Box<terminology::FmStatus>,
7465    #[primitive]
7466    #[cardinality(min = 1usize)]
7467    #[doc = "Code to specify whether requesting: prior authorization requirements for some service categories or billing codes; benefits for coverages specified or discovered; discovery and return of coverages for the patient; and/or validation that the specified coverage is in-force at the date/period specified or 'now' if not specified."]
7468    pub purpose: Vec<Box<terminology::EligibilityresponsePurpose>>,
7469    # [reference (targets = ["Patient"])]
7470    #[doc = "The party who is the beneficiary of the supplied coverage and for whom eligibility is sought."]
7471    pub patient: Box<Reference>,
7472    # [type_choice_variants (complex = ["servicedPeriod"] , primitive = ["servicedDate"])]
7473    #[doc = "The date or dates when the enclosed suite of services were performed or completed."]
7474    pub serviced: Option<CoverageEligibilityResponseServicedTypeChoice>,
7475    #[primitive]
7476    #[doc = "The date this resource was created."]
7477    pub created: Box<FHIRDateTime>,
7478    # [reference (targets = ["Practitioner" , "PractitionerRole" , "Organization"])]
7479    #[doc = "The provider which is responsible for the request."]
7480    pub requestor: Option<Box<Reference>>,
7481    # [reference (targets = ["CoverageEligibilityRequest"])]
7482    #[doc = "Reference to the original request resource."]
7483    pub request: Box<Reference>,
7484    #[primitive]
7485    #[doc = "The outcome of the request processing."]
7486    pub outcome: Box<terminology::RemittanceOutcome>,
7487    #[primitive]
7488    #[doc = "A human readable description of the status of the adjudication."]
7489    pub disposition: Option<Box<FHIRString>>,
7490    # [reference (targets = ["Organization"])]
7491    #[doc = "The Insurer who issued the coverage in question and is the author of the response."]
7492    pub insurer: Box<Reference>,
7493    #[doc = "Financial instruments for reimbursement for the health care products and services."]
7494    pub insurance: Option<Vec<CoverageEligibilityResponseInsurance>>,
7495    #[primitive]
7496    #[doc = "A reference from the Insurer to which these services pertain to be used on further communication and as proof that the request occurred."]
7497    pub preAuthRef: Option<Box<FHIRString>>,
7498    #[doc = "A code for the form to be used for printing the content."]
7499    pub form: Option<Box<CodeableConcept>>,
7500    #[doc = "Errors encountered during the processing of the request."]
7501    pub error: Option<Vec<CoverageEligibilityResponseError>>,
7502}
7503#[derive(
7504    Clone,
7505    Reflect,
7506    Debug,
7507    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
7508    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
7509)]
7510#[fhir_serialize_type = "typechoice"]
7511#[type_choice_field_name = "identified"]
7512pub enum DetectedIssueIdentifiedTypeChoice {
7513    DateTime(Box<FHIRDateTime>),
7514    Period(Box<Period>),
7515}
7516impl Default for DetectedIssueIdentifiedTypeChoice {
7517    fn default() -> Self {
7518        DetectedIssueIdentifiedTypeChoice::DateTime(Box::new(Default::default()))
7519    }
7520}
7521#[derive(
7522    Clone,
7523    Reflect,
7524    Debug,
7525    Default,
7526    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
7527    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
7528)]
7529#[fhir_serialize_type = "complex"]
7530#[doc = "Supporting evidence or manifestations that provide the basis for identifying the detected issue such as a GuidanceResponse or MeasureReport."]
7531pub struct DetectedIssueEvidence {
7532    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
7533    pub id: Option<String>,
7534    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
7535    pub extension: Option<Vec<Box<Extension>>>,
7536    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
7537    pub modifierExtension: Option<Vec<Box<Extension>>>,
7538    #[doc = "A manifestation that led to the recording of this detected issue."]
7539    pub code: Option<Vec<Box<CodeableConcept>>>,
7540    # [reference (targets = ["Resource"])]
7541    #[doc = "Links to resources that constitute evidence for the detected issue such as a GuidanceResponse or MeasureReport."]
7542    pub detail: Option<Vec<Box<Reference>>>,
7543}
7544#[derive(
7545    Clone,
7546    Reflect,
7547    Debug,
7548    Default,
7549    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
7550    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
7551)]
7552#[fhir_serialize_type = "complex"]
7553#[doc = "Indicates an action that has been taken or is committed to reduce or eliminate the likelihood of the risk identified by the detected issue from manifesting.  Can also reflect an observation of known mitigating factors that may reduce/eliminate the need for any action."]
7554pub struct DetectedIssueMitigation {
7555    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
7556    pub id: Option<String>,
7557    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
7558    pub extension: Option<Vec<Box<Extension>>>,
7559    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
7560    pub modifierExtension: Option<Vec<Box<Extension>>>,
7561    #[doc = "Describes the action that was taken or the observation that was made that reduces/eliminates the risk associated with the identified issue."]
7562    pub action: Box<CodeableConcept>,
7563    #[primitive]
7564    #[doc = "Indicates when the mitigating action was documented."]
7565    pub date: Option<Box<FHIRDateTime>>,
7566    # [reference (targets = ["Practitioner" , "PractitionerRole"])]
7567    #[doc = "Identifies the practitioner who determined the mitigation and takes responsibility for the mitigation step occurring."]
7568    pub author: Option<Box<Reference>>,
7569}
7570#[derive(
7571    Clone,
7572    Reflect,
7573    Debug,
7574    Default,
7575    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
7576    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
7577)]
7578#[fhir_serialize_type = "resource"]
7579#[doc = "Indicates an actual or potential clinical issue with or between one or more active or proposed clinical actions for a patient; e.g. Drug-drug interaction, Ineffective treatment frequency, Procedure-condition conflict, etc."]
7580pub struct DetectedIssue {
7581    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
7582    pub id: Option<String>,
7583    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
7584    pub meta: Option<Box<Meta>>,
7585    #[primitive]
7586    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
7587    pub implicitRules: Option<Box<FHIRUri>>,
7588    #[primitive]
7589    #[doc = "The base language in which the resource is written."]
7590    pub language: Option<Box<FHIRCode>>,
7591    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
7592    pub text: Option<Box<Narrative>>,
7593    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
7594    pub contained: Option<Vec<Box<Resource>>>,
7595    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
7596    pub extension: Option<Vec<Box<Extension>>>,
7597    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
7598    pub modifierExtension: Option<Vec<Box<Extension>>>,
7599    #[rename_field = "identifier"]
7600    #[doc = "Business identifier associated with the detected issue record."]
7601    pub identifier_: Option<Vec<Box<Identifier>>>,
7602    #[primitive]
7603    #[doc = "Indicates the status of the detected issue."]
7604    pub status: Box<terminology::ObservationStatus>,
7605    #[doc = "Identifies the general type of issue identified."]
7606    pub code: Option<Box<CodeableConcept>>,
7607    #[primitive]
7608    #[doc = "Indicates the degree of importance associated with the identified issue based on the potential impact on the patient."]
7609    pub severity: Option<Box<terminology::DetectedissueSeverity>>,
7610    # [reference (targets = ["Patient"])]
7611    #[doc = "Indicates the patient whose record the detected issue is associated with."]
7612    pub patient: Option<Box<Reference>>,
7613    # [type_choice_variants (complex = ["identifiedPeriod"] , primitive = ["identifiedDateTime"])]
7614    #[doc = "The date or period when the detected issue was initially identified."]
7615    pub identified: Option<DetectedIssueIdentifiedTypeChoice>,
7616    # [reference (targets = ["Practitioner" , "PractitionerRole" , "Device"])]
7617    #[doc = "Individual or device responsible for the issue being raised.  For example, a decision support application or a pharmacist conducting a medication review."]
7618    pub author: Option<Box<Reference>>,
7619    # [reference (targets = ["Resource"])]
7620    #[doc = "Indicates the resource representing the current activity or proposed activity that is potentially problematic."]
7621    pub implicated: Option<Vec<Box<Reference>>>,
7622    #[doc = "Supporting evidence or manifestations that provide the basis for identifying the detected issue such as a GuidanceResponse or MeasureReport."]
7623    pub evidence: Option<Vec<DetectedIssueEvidence>>,
7624    #[primitive]
7625    #[doc = "A textual explanation of the detected issue."]
7626    pub detail: Option<Box<FHIRString>>,
7627    #[primitive]
7628    #[doc = "The literature, knowledge-base or similar reference that describes the propensity for the detected issue identified."]
7629    pub reference: Option<Box<FHIRUri>>,
7630    #[doc = "Indicates an action that has been taken or is committed to reduce or eliminate the likelihood of the risk identified by the detected issue from manifesting.  Can also reflect an observation of known mitigating factors that may reduce/eliminate the need for any action."]
7631    pub mitigation: Option<Vec<DetectedIssueMitigation>>,
7632}
7633#[derive(
7634    Clone,
7635    Reflect,
7636    Debug,
7637    Default,
7638    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
7639    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
7640)]
7641#[fhir_serialize_type = "complex"]
7642#[doc = "Unique device identifier (UDI) assigned to device label or package.  Note that the Device may include multiple udiCarriers as it either may include just the udiCarrier for the jurisdiction it is sold, or for multiple jurisdictions it could have been sold."]
7643pub struct DeviceUdiCarrier {
7644    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
7645    pub id: Option<String>,
7646    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
7647    pub extension: Option<Vec<Box<Extension>>>,
7648    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
7649    pub modifierExtension: Option<Vec<Box<Extension>>>,
7650    #[primitive]
7651    #[doc = "The device identifier (DI) is a mandatory, fixed portion of a UDI that identifies the labeler and the specific version or model of a device."]
7652    pub deviceIdentifier: Option<Box<FHIRString>>,
7653    #[primitive]
7654    #[doc = "Organization that is charged with issuing UDIs for devices.  For example, the US FDA issuers include :\n1) GS1: \nhttp://hl7.org/fhir/NamingSystem/gs1-di, \n2) HIBCC:\nhttp://hl7.org/fhir/NamingSystem/hibcc-dI, \n3) ICCBBA for blood containers:\nhttp://hl7.org/fhir/NamingSystem/iccbba-blood-di, \n4) ICCBA for other devices:\nhttp://hl7.org/fhir/NamingSystem/iccbba-other-di."]
7655    pub issuer: Option<Box<FHIRUri>>,
7656    #[primitive]
7657    #[doc = "The identity of the authoritative source for UDI generation within a  jurisdiction.  All UDIs are globally unique within a single namespace with the appropriate repository uri as the system.  For example,  UDIs of devices managed in the U.S. by the FDA, the value is  http://hl7.org/fhir/NamingSystem/fda-udi."]
7658    pub jurisdiction: Option<Box<FHIRUri>>,
7659    #[primitive]
7660    #[doc = "The full UDI carrier of the Automatic Identification and Data Capture (AIDC) technology representation of the barcode string as printed on the packaging of the device - e.g., a barcode or RFID.   Because of limitations on character sets in XML and the need to round-trip JSON data through XML, AIDC Formats *SHALL* be base64 encoded."]
7661    pub carrierAIDC: Option<Box<FHIRBase64Binary>>,
7662    #[primitive]
7663    #[doc = "The full UDI carrier as the human readable form (HRF) representation of the barcode string as printed on the packaging of the device."]
7664    pub carrierHRF: Option<Box<FHIRString>>,
7665    #[primitive]
7666    #[doc = "A coded entry to indicate how the data was entered."]
7667    pub entryType: Option<Box<terminology::UdiEntryType>>,
7668}
7669#[derive(
7670    Clone,
7671    Reflect,
7672    Debug,
7673    Default,
7674    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
7675    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
7676)]
7677#[fhir_serialize_type = "complex"]
7678#[doc = "This represents the manufacturer's name of the device as provided by the device, from a UDI label, or by a person describing the Device.  This typically would be used when a person provides the name(s) or when the device represents one of the names available from DeviceDefinition."]
7679pub struct DeviceDeviceName {
7680    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
7681    pub id: Option<String>,
7682    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
7683    pub extension: Option<Vec<Box<Extension>>>,
7684    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
7685    pub modifierExtension: Option<Vec<Box<Extension>>>,
7686    #[primitive]
7687    #[doc = "The name of the device."]
7688    pub name: Box<FHIRString>,
7689    #[rename_field = "type"]
7690    #[primitive]
7691    #[doc = "The type of deviceName.\nUDILabelName | UserFriendlyName | PatientReportedName | ManufactureDeviceName | ModelName."]
7692    pub type_: Box<terminology::DeviceNametype>,
7693}
7694#[derive(
7695    Clone,
7696    Reflect,
7697    Debug,
7698    Default,
7699    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
7700    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
7701)]
7702#[fhir_serialize_type = "complex"]
7703#[doc = "The capabilities supported on a  device, the standards to which the device conforms for a particular purpose, and used for the communication."]
7704pub struct DeviceSpecialization {
7705    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
7706    pub id: Option<String>,
7707    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
7708    pub extension: Option<Vec<Box<Extension>>>,
7709    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
7710    pub modifierExtension: Option<Vec<Box<Extension>>>,
7711    #[doc = "The standard that is used to operate and communicate."]
7712    pub systemType: Box<CodeableConcept>,
7713    #[primitive]
7714    #[doc = "The version of the standard that is used to operate and communicate."]
7715    pub version: Option<Box<FHIRString>>,
7716}
7717#[derive(
7718    Clone,
7719    Reflect,
7720    Debug,
7721    Default,
7722    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
7723    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
7724)]
7725#[fhir_serialize_type = "complex"]
7726#[doc = "The actual design of the device or software version running on the device."]
7727pub struct DeviceVersion {
7728    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
7729    pub id: Option<String>,
7730    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
7731    pub extension: Option<Vec<Box<Extension>>>,
7732    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
7733    pub modifierExtension: Option<Vec<Box<Extension>>>,
7734    #[rename_field = "type"]
7735    #[doc = "The type of the device version."]
7736    pub type_: Option<Box<CodeableConcept>>,
7737    #[doc = "A single component of the device version."]
7738    pub component: Option<Box<Identifier>>,
7739    #[primitive]
7740    #[doc = "The version text."]
7741    pub value: Box<FHIRString>,
7742}
7743#[derive(
7744    Clone,
7745    Reflect,
7746    Debug,
7747    Default,
7748    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
7749    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
7750)]
7751#[fhir_serialize_type = "complex"]
7752#[doc = "The actual configuration settings of a device as it actually operates, e.g., regulation status, time properties."]
7753pub struct DeviceProperty {
7754    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
7755    pub id: Option<String>,
7756    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
7757    pub extension: Option<Vec<Box<Extension>>>,
7758    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
7759    pub modifierExtension: Option<Vec<Box<Extension>>>,
7760    #[rename_field = "type"]
7761    #[doc = "Code that specifies the property DeviceDefinitionPropetyCode (Extensible)."]
7762    pub type_: Box<CodeableConcept>,
7763    #[doc = "Property value as a quantity."]
7764    pub valueQuantity: Option<Vec<Box<Quantity>>>,
7765    #[doc = "Property value as a code, e.g., NTP4 (synced to NTP)."]
7766    pub valueCode: Option<Vec<Box<CodeableConcept>>>,
7767}
7768#[derive(
7769    Clone,
7770    Reflect,
7771    Debug,
7772    Default,
7773    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
7774    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
7775)]
7776#[fhir_serialize_type = "resource"]
7777#[doc = "A type of a manufactured item that is used in the provision of healthcare without being substantially changed through that activity. The device may be a medical or non-medical device."]
7778pub struct Device {
7779    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
7780    pub id: Option<String>,
7781    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
7782    pub meta: Option<Box<Meta>>,
7783    #[primitive]
7784    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
7785    pub implicitRules: Option<Box<FHIRUri>>,
7786    #[primitive]
7787    #[doc = "The base language in which the resource is written."]
7788    pub language: Option<Box<FHIRCode>>,
7789    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
7790    pub text: Option<Box<Narrative>>,
7791    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
7792    pub contained: Option<Vec<Box<Resource>>>,
7793    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
7794    pub extension: Option<Vec<Box<Extension>>>,
7795    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
7796    pub modifierExtension: Option<Vec<Box<Extension>>>,
7797    #[rename_field = "identifier"]
7798    #[doc = "Unique instance identifiers assigned to a device by manufacturers other organizations or owners."]
7799    pub identifier_: Option<Vec<Box<Identifier>>>,
7800    # [reference (targets = ["DeviceDefinition"])]
7801    #[doc = "The reference to the definition for the device."]
7802    pub definition: Option<Box<Reference>>,
7803    #[doc = "Unique device identifier (UDI) assigned to device label or package.  Note that the Device may include multiple udiCarriers as it either may include just the udiCarrier for the jurisdiction it is sold, or for multiple jurisdictions it could have been sold."]
7804    pub udiCarrier: Option<Vec<DeviceUdiCarrier>>,
7805    #[primitive]
7806    #[doc = "Status of the Device availability."]
7807    pub status: Option<Box<terminology::DeviceStatus>>,
7808    #[doc = "Reason for the dtatus of the Device availability."]
7809    pub statusReason: Option<Vec<Box<CodeableConcept>>>,
7810    #[primitive]
7811    #[doc = "The distinct identification string as required by regulation for a human cell, tissue, or cellular and tissue-based product."]
7812    pub distinctIdentifier: Option<Box<FHIRString>>,
7813    #[primitive]
7814    #[doc = "A name of the manufacturer."]
7815    pub manufacturer: Option<Box<FHIRString>>,
7816    #[primitive]
7817    #[doc = "The date and time when the device was manufactured."]
7818    pub manufactureDate: Option<Box<FHIRDateTime>>,
7819    #[primitive]
7820    #[doc = "The date and time beyond which this device is no longer valid or should not be used (if applicable)."]
7821    pub expirationDate: Option<Box<FHIRDateTime>>,
7822    #[primitive]
7823    #[doc = "Lot number assigned by the manufacturer."]
7824    pub lotNumber: Option<Box<FHIRString>>,
7825    #[primitive]
7826    #[doc = "The serial number assigned by the organization when the device was manufactured."]
7827    pub serialNumber: Option<Box<FHIRString>>,
7828    #[doc = "This represents the manufacturer's name of the device as provided by the device, from a UDI label, or by a person describing the Device.  This typically would be used when a person provides the name(s) or when the device represents one of the names available from DeviceDefinition."]
7829    pub deviceName: Option<Vec<DeviceDeviceName>>,
7830    #[primitive]
7831    #[doc = "The model number for the device."]
7832    pub modelNumber: Option<Box<FHIRString>>,
7833    #[primitive]
7834    #[doc = "The part number of the device."]
7835    pub partNumber: Option<Box<FHIRString>>,
7836    #[rename_field = "type"]
7837    #[doc = "The kind or type of device."]
7838    pub type_: Option<Box<CodeableConcept>>,
7839    #[doc = "The capabilities supported on a  device, the standards to which the device conforms for a particular purpose, and used for the communication."]
7840    pub specialization: Option<Vec<DeviceSpecialization>>,
7841    #[doc = "The actual design of the device or software version running on the device."]
7842    pub version: Option<Vec<DeviceVersion>>,
7843    #[doc = "The actual configuration settings of a device as it actually operates, e.g., regulation status, time properties."]
7844    pub property: Option<Vec<DeviceProperty>>,
7845    # [reference (targets = ["Patient"])]
7846    #[doc = "Patient information, If the device is affixed to a person."]
7847    pub patient: Option<Box<Reference>>,
7848    # [reference (targets = ["Organization"])]
7849    #[doc = "An organization that is responsible for the provision and ongoing maintenance of the device."]
7850    pub owner: Option<Box<Reference>>,
7851    #[doc = "Contact details for an organization or a particular human that is responsible for the device."]
7852    pub contact: Option<Vec<Box<ContactPoint>>>,
7853    # [reference (targets = ["Location"])]
7854    #[doc = "The place where the device can be found."]
7855    pub location: Option<Box<Reference>>,
7856    #[primitive]
7857    #[doc = "A network address on which the device may be contacted directly."]
7858    pub url: Option<Box<FHIRUri>>,
7859    #[doc = "Descriptive information, usage information or implantation information that is not captured in an existing element."]
7860    pub note: Option<Vec<Box<Annotation>>>,
7861    #[doc = "Provides additional safety characteristics about a medical device.  For example devices containing latex."]
7862    pub safety: Option<Vec<Box<CodeableConcept>>>,
7863    # [reference (targets = ["Device"])]
7864    #[doc = "The parent device."]
7865    pub parent: Option<Box<Reference>>,
7866}
7867#[derive(
7868    Clone,
7869    Reflect,
7870    Debug,
7871    Default,
7872    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
7873    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
7874)]
7875#[fhir_serialize_type = "complex"]
7876#[doc = "Unique device identifier (UDI) assigned to device label or package.  Note that the Device may include multiple udiCarriers as it either may include just the udiCarrier for the jurisdiction it is sold, or for multiple jurisdictions it could have been sold."]
7877pub struct DeviceDefinitionUdiDeviceIdentifier {
7878    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
7879    pub id: Option<String>,
7880    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
7881    pub extension: Option<Vec<Box<Extension>>>,
7882    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
7883    pub modifierExtension: Option<Vec<Box<Extension>>>,
7884    #[primitive]
7885    #[doc = "The identifier that is to be associated with every Device that references this DeviceDefintiion for the issuer and jurisdication porvided in the DeviceDefinition.udiDeviceIdentifier."]
7886    pub deviceIdentifier: Box<FHIRString>,
7887    #[primitive]
7888    #[doc = "The organization that assigns the identifier algorithm."]
7889    pub issuer: Box<FHIRUri>,
7890    #[primitive]
7891    #[doc = "The jurisdiction to which the deviceIdentifier applies."]
7892    pub jurisdiction: Box<FHIRUri>,
7893}
7894#[derive(
7895    Clone,
7896    Reflect,
7897    Debug,
7898    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
7899    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
7900)]
7901#[fhir_serialize_type = "typechoice"]
7902#[type_choice_field_name = "manufacturer"]
7903pub enum DeviceDefinitionManufacturerTypeChoice {
7904    String(Box<FHIRString>),
7905    # [reference (targets = ["Organization"])]
7906    Reference(Box<Reference>),
7907}
7908impl Default for DeviceDefinitionManufacturerTypeChoice {
7909    fn default() -> Self {
7910        DeviceDefinitionManufacturerTypeChoice::String(Box::new(Default::default()))
7911    }
7912}
7913#[derive(
7914    Clone,
7915    Reflect,
7916    Debug,
7917    Default,
7918    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
7919    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
7920)]
7921#[fhir_serialize_type = "complex"]
7922#[doc = "A name given to the device to identify it."]
7923pub struct DeviceDefinitionDeviceName {
7924    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
7925    pub id: Option<String>,
7926    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
7927    pub extension: Option<Vec<Box<Extension>>>,
7928    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
7929    pub modifierExtension: Option<Vec<Box<Extension>>>,
7930    #[primitive]
7931    #[doc = "The name of the device."]
7932    pub name: Box<FHIRString>,
7933    #[rename_field = "type"]
7934    #[primitive]
7935    #[doc = "The type of deviceName.\nUDILabelName | UserFriendlyName | PatientReportedName | ManufactureDeviceName | ModelName."]
7936    pub type_: Box<terminology::DeviceNametype>,
7937}
7938#[derive(
7939    Clone,
7940    Reflect,
7941    Debug,
7942    Default,
7943    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
7944    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
7945)]
7946#[fhir_serialize_type = "complex"]
7947#[doc = "The capabilities supported on a  device, the standards to which the device conforms for a particular purpose, and used for the communication."]
7948pub struct DeviceDefinitionSpecialization {
7949    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
7950    pub id: Option<String>,
7951    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
7952    pub extension: Option<Vec<Box<Extension>>>,
7953    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
7954    pub modifierExtension: Option<Vec<Box<Extension>>>,
7955    #[primitive]
7956    #[doc = "The standard that is used to operate and communicate."]
7957    pub systemType: Box<FHIRString>,
7958    #[primitive]
7959    #[doc = "The version of the standard that is used to operate and communicate."]
7960    pub version: Option<Box<FHIRString>>,
7961}
7962#[derive(
7963    Clone,
7964    Reflect,
7965    Debug,
7966    Default,
7967    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
7968    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
7969)]
7970#[fhir_serialize_type = "complex"]
7971#[doc = "Device capabilities."]
7972pub struct DeviceDefinitionCapability {
7973    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
7974    pub id: Option<String>,
7975    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
7976    pub extension: Option<Vec<Box<Extension>>>,
7977    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
7978    pub modifierExtension: Option<Vec<Box<Extension>>>,
7979    #[rename_field = "type"]
7980    #[doc = "Type of capability."]
7981    pub type_: Box<CodeableConcept>,
7982    #[doc = "Description of capability."]
7983    pub description: Option<Vec<Box<CodeableConcept>>>,
7984}
7985#[derive(
7986    Clone,
7987    Reflect,
7988    Debug,
7989    Default,
7990    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
7991    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
7992)]
7993#[fhir_serialize_type = "complex"]
7994#[doc = "The actual configuration settings of a device as it actually operates, e.g., regulation status, time properties."]
7995pub struct DeviceDefinitionProperty {
7996    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
7997    pub id: Option<String>,
7998    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
7999    pub extension: Option<Vec<Box<Extension>>>,
8000    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
8001    pub modifierExtension: Option<Vec<Box<Extension>>>,
8002    #[rename_field = "type"]
8003    #[doc = "Code that specifies the property DeviceDefinitionPropetyCode (Extensible)."]
8004    pub type_: Box<CodeableConcept>,
8005    #[doc = "Property value as a quantity."]
8006    pub valueQuantity: Option<Vec<Box<Quantity>>>,
8007    #[doc = "Property value as a code, e.g., NTP4 (synced to NTP)."]
8008    pub valueCode: Option<Vec<Box<CodeableConcept>>>,
8009}
8010#[derive(
8011    Clone,
8012    Reflect,
8013    Debug,
8014    Default,
8015    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
8016    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
8017)]
8018#[fhir_serialize_type = "complex"]
8019#[doc = "A substance used to create the material(s) of which the device is made."]
8020pub struct DeviceDefinitionMaterial {
8021    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
8022    pub id: Option<String>,
8023    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
8024    pub extension: Option<Vec<Box<Extension>>>,
8025    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
8026    pub modifierExtension: Option<Vec<Box<Extension>>>,
8027    #[doc = "The substance."]
8028    pub substance: Box<CodeableConcept>,
8029    #[primitive]
8030    #[doc = "Indicates an alternative material of the device."]
8031    pub alternate: Option<Box<FHIRBoolean>>,
8032    #[primitive]
8033    #[doc = "Whether the substance is a known or suspected allergen."]
8034    pub allergenicIndicator: Option<Box<FHIRBoolean>>,
8035}
8036#[derive(
8037    Clone,
8038    Reflect,
8039    Debug,
8040    Default,
8041    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
8042    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
8043)]
8044#[fhir_serialize_type = "resource"]
8045#[doc = "The characteristics, operational status and capabilities of a medical-related component of a medical device."]
8046pub struct DeviceDefinition {
8047    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
8048    pub id: Option<String>,
8049    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
8050    pub meta: Option<Box<Meta>>,
8051    #[primitive]
8052    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
8053    pub implicitRules: Option<Box<FHIRUri>>,
8054    #[primitive]
8055    #[doc = "The base language in which the resource is written."]
8056    pub language: Option<Box<FHIRCode>>,
8057    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
8058    pub text: Option<Box<Narrative>>,
8059    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
8060    pub contained: Option<Vec<Box<Resource>>>,
8061    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
8062    pub extension: Option<Vec<Box<Extension>>>,
8063    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
8064    pub modifierExtension: Option<Vec<Box<Extension>>>,
8065    #[rename_field = "identifier"]
8066    #[doc = "Unique instance identifiers assigned to a device by the software, manufacturers, other organizations or owners. For example: handle ID."]
8067    pub identifier_: Option<Vec<Box<Identifier>>>,
8068    #[doc = "Unique device identifier (UDI) assigned to device label or package.  Note that the Device may include multiple udiCarriers as it either may include just the udiCarrier for the jurisdiction it is sold, or for multiple jurisdictions it could have been sold."]
8069    pub udiDeviceIdentifier: Option<Vec<DeviceDefinitionUdiDeviceIdentifier>>,
8070    # [type_choice_variants (complex = ["manufacturerReference"] , primitive = ["manufacturerString"])]
8071    #[doc = "A name of the manufacturer."]
8072    pub manufacturer: Option<DeviceDefinitionManufacturerTypeChoice>,
8073    #[doc = "A name given to the device to identify it."]
8074    pub deviceName: Option<Vec<DeviceDefinitionDeviceName>>,
8075    #[primitive]
8076    #[doc = "The model number for the device."]
8077    pub modelNumber: Option<Box<FHIRString>>,
8078    #[rename_field = "type"]
8079    #[doc = "What kind of device or device system this is."]
8080    pub type_: Option<Box<CodeableConcept>>,
8081    #[doc = "The capabilities supported on a  device, the standards to which the device conforms for a particular purpose, and used for the communication."]
8082    pub specialization: Option<Vec<DeviceDefinitionSpecialization>>,
8083    #[primitive]
8084    #[doc = "The available versions of the device, e.g., software versions."]
8085    pub version: Option<Vec<Box<FHIRString>>>,
8086    #[doc = "Safety characteristics of the device."]
8087    pub safety: Option<Vec<Box<CodeableConcept>>>,
8088    #[doc = "Shelf Life and storage information."]
8089    pub shelfLifeStorage: Option<Vec<Box<ProductShelfLife>>>,
8090    #[doc = "Dimensions, color etc."]
8091    pub physicalCharacteristics: Option<Box<ProdCharacteristic>>,
8092    #[doc = "Language code for the human-readable text strings produced by the device (all supported)."]
8093    pub languageCode: Option<Vec<Box<CodeableConcept>>>,
8094    #[doc = "Device capabilities."]
8095    pub capability: Option<Vec<DeviceDefinitionCapability>>,
8096    #[doc = "The actual configuration settings of a device as it actually operates, e.g., regulation status, time properties."]
8097    pub property: Option<Vec<DeviceDefinitionProperty>>,
8098    # [reference (targets = ["Organization"])]
8099    #[doc = "An organization that is responsible for the provision and ongoing maintenance of the device."]
8100    pub owner: Option<Box<Reference>>,
8101    #[doc = "Contact details for an organization or a particular human that is responsible for the device."]
8102    pub contact: Option<Vec<Box<ContactPoint>>>,
8103    #[primitive]
8104    #[doc = "A network address on which the device may be contacted directly."]
8105    pub url: Option<Box<FHIRUri>>,
8106    #[primitive]
8107    #[doc = "Access to on-line information about the device."]
8108    pub onlineInformation: Option<Box<FHIRUri>>,
8109    #[doc = "Descriptive information, usage information or implantation information that is not captured in an existing element."]
8110    pub note: Option<Vec<Box<Annotation>>>,
8111    #[doc = "The quantity of the device present in the packaging (e.g. the number of devices present in a pack, or the number of devices in the same package of the medicinal product)."]
8112    pub quantity: Option<Box<Quantity>>,
8113    # [reference (targets = ["DeviceDefinition"])]
8114    #[doc = "The parent device it can be part of."]
8115    pub parentDevice: Option<Box<Reference>>,
8116    #[doc = "A substance used to create the material(s) of which the device is made."]
8117    pub material: Option<Vec<DeviceDefinitionMaterial>>,
8118}
8119#[derive(
8120    Clone,
8121    Reflect,
8122    Debug,
8123    Default,
8124    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
8125    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
8126)]
8127#[fhir_serialize_type = "complex"]
8128#[doc = "Describes the calibrations that have been performed or that are required to be performed."]
8129pub struct DeviceMetricCalibration {
8130    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
8131    pub id: Option<String>,
8132    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
8133    pub extension: Option<Vec<Box<Extension>>>,
8134    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
8135    pub modifierExtension: Option<Vec<Box<Extension>>>,
8136    #[rename_field = "type"]
8137    #[primitive]
8138    #[doc = "Describes the type of the calibration method."]
8139    pub type_: Option<Box<terminology::MetricCalibrationType>>,
8140    #[primitive]
8141    #[doc = "Describes the state of the calibration."]
8142    pub state: Option<Box<terminology::MetricCalibrationState>>,
8143    #[primitive]
8144    #[doc = "Describes the time last calibration has been performed."]
8145    pub time: Option<Box<FHIRInstant>>,
8146}
8147#[derive(
8148    Clone,
8149    Reflect,
8150    Debug,
8151    Default,
8152    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
8153    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
8154)]
8155#[fhir_serialize_type = "resource"]
8156#[doc = "Describes a measurement, calculation or setting capability of a medical device."]
8157pub struct DeviceMetric {
8158    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
8159    pub id: Option<String>,
8160    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
8161    pub meta: Option<Box<Meta>>,
8162    #[primitive]
8163    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
8164    pub implicitRules: Option<Box<FHIRUri>>,
8165    #[primitive]
8166    #[doc = "The base language in which the resource is written."]
8167    pub language: Option<Box<FHIRCode>>,
8168    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
8169    pub text: Option<Box<Narrative>>,
8170    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
8171    pub contained: Option<Vec<Box<Resource>>>,
8172    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
8173    pub extension: Option<Vec<Box<Extension>>>,
8174    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
8175    pub modifierExtension: Option<Vec<Box<Extension>>>,
8176    #[rename_field = "identifier"]
8177    #[doc = "Unique instance identifiers assigned to a device by the device or gateway software, manufacturers, other organizations or owners. For example: handle ID."]
8178    pub identifier_: Option<Vec<Box<Identifier>>>,
8179    #[rename_field = "type"]
8180    #[doc = "Describes the type of the metric. For example: Heart Rate, PEEP Setting, etc."]
8181    pub type_: Box<CodeableConcept>,
8182    #[doc = "Describes the unit that an observed value determined for this metric will have. For example: Percent, Seconds, etc."]
8183    pub unit: Option<Box<CodeableConcept>>,
8184    # [reference (targets = ["Device"])]
8185    #[doc = "Describes the link to the  Device that this DeviceMetric belongs to and that contains administrative device information such as manufacturer, serial number, etc."]
8186    pub source: Option<Box<Reference>>,
8187    # [reference (targets = ["Device"])]
8188    #[doc = "Describes the link to the  Device that this DeviceMetric belongs to and that provide information about the location of this DeviceMetric in the containment structure of the parent Device. An example would be a Device that represents a Channel. This reference can be used by a client application to distinguish DeviceMetrics that have the same type, but should be interpreted based on their containment location."]
8189    pub parent: Option<Box<Reference>>,
8190    #[primitive]
8191    #[doc = "Indicates current operational state of the device. For example: On, Off, Standby, etc."]
8192    pub operationalStatus: Option<Box<terminology::MetricOperationalStatus>>,
8193    #[primitive]
8194    #[doc = "Describes the color representation for the metric. This is often used to aid clinicians to track and identify parameter types by color. In practice, consider a Patient Monitor that has ECG/HR and Pleth for example; the parameters are displayed in different characteristic colors, such as HR-blue, BP-green, and PR and SpO2- magenta."]
8195    pub color: Option<Box<terminology::MetricColor>>,
8196    #[primitive]
8197    #[doc = "Indicates the category of the observation generation process. A DeviceMetric can be for example a setting, measurement, or calculation."]
8198    pub category: Box<terminology::MetricCategory>,
8199    #[doc = "Describes the measurement repetition time. This is not necessarily the same as the update period. The measurement repetition time can range from milliseconds up to hours. An example for a measurement repetition time in the range of milliseconds is the sampling rate of an ECG. An example for a measurement repetition time in the range of hours is a NIBP that is triggered automatically every hour. The update period may be different than the measurement repetition time, if the device does not update the published observed value with the same frequency as it was measured."]
8200    pub measurementPeriod: Option<Box<Timing>>,
8201    #[doc = "Describes the calibrations that have been performed or that are required to be performed."]
8202    pub calibration: Option<Vec<DeviceMetricCalibration>>,
8203}
8204#[derive(
8205    Clone,
8206    Reflect,
8207    Debug,
8208    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
8209    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
8210)]
8211#[fhir_serialize_type = "typechoice"]
8212#[type_choice_field_name = "code"]
8213pub enum DeviceRequestCodeTypeChoice {
8214    # [reference (targets = ["Device"])]
8215    Reference(Box<Reference>),
8216    CodeableConcept(Box<CodeableConcept>),
8217}
8218impl Default for DeviceRequestCodeTypeChoice {
8219    fn default() -> Self {
8220        DeviceRequestCodeTypeChoice::Reference(Box::new(Default::default()))
8221    }
8222}
8223#[derive(
8224    Clone,
8225    Reflect,
8226    Debug,
8227    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
8228    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
8229)]
8230#[fhir_serialize_type = "typechoice"]
8231#[type_choice_field_name = "value"]
8232pub enum DeviceRequestParameterValueTypeChoice {
8233    CodeableConcept(Box<CodeableConcept>),
8234    Quantity(Box<Quantity>),
8235    Range(Box<Range>),
8236    Boolean(Box<FHIRBoolean>),
8237}
8238impl Default for DeviceRequestParameterValueTypeChoice {
8239    fn default() -> Self {
8240        DeviceRequestParameterValueTypeChoice::CodeableConcept(Box::new(Default::default()))
8241    }
8242}
8243#[derive(
8244    Clone,
8245    Reflect,
8246    Debug,
8247    Default,
8248    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
8249    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
8250)]
8251#[fhir_serialize_type = "complex"]
8252#[doc = "Specific parameters for the ordered item.  For example, the prism value for lenses."]
8253pub struct DeviceRequestParameter {
8254    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
8255    pub id: Option<String>,
8256    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
8257    pub extension: Option<Vec<Box<Extension>>>,
8258    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
8259    pub modifierExtension: Option<Vec<Box<Extension>>>,
8260    #[doc = "A code or string that identifies the device detail being asserted."]
8261    pub code: Option<Box<CodeableConcept>>,
8262    # [type_choice_variants (complex = ["valueCodeableConcept" , "valueQuantity" , "valueRange"] , primitive = ["valueBoolean"])]
8263    #[doc = "The value of the device detail."]
8264    pub value: Option<DeviceRequestParameterValueTypeChoice>,
8265}
8266#[derive(
8267    Clone,
8268    Reflect,
8269    Debug,
8270    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
8271    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
8272)]
8273#[fhir_serialize_type = "typechoice"]
8274#[type_choice_field_name = "occurrence"]
8275pub enum DeviceRequestOccurrenceTypeChoice {
8276    DateTime(Box<FHIRDateTime>),
8277    Period(Box<Period>),
8278    Timing(Box<Timing>),
8279}
8280impl Default for DeviceRequestOccurrenceTypeChoice {
8281    fn default() -> Self {
8282        DeviceRequestOccurrenceTypeChoice::DateTime(Box::new(Default::default()))
8283    }
8284}
8285#[derive(
8286    Clone,
8287    Reflect,
8288    Debug,
8289    Default,
8290    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
8291    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
8292)]
8293#[fhir_serialize_type = "resource"]
8294#[doc = "Represents a request for a patient to employ a medical device. The device may be an implantable device, or an external assistive device, such as a walker."]
8295pub struct DeviceRequest {
8296    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
8297    pub id: Option<String>,
8298    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
8299    pub meta: Option<Box<Meta>>,
8300    #[primitive]
8301    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
8302    pub implicitRules: Option<Box<FHIRUri>>,
8303    #[primitive]
8304    #[doc = "The base language in which the resource is written."]
8305    pub language: Option<Box<FHIRCode>>,
8306    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
8307    pub text: Option<Box<Narrative>>,
8308    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
8309    pub contained: Option<Vec<Box<Resource>>>,
8310    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
8311    pub extension: Option<Vec<Box<Extension>>>,
8312    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
8313    pub modifierExtension: Option<Vec<Box<Extension>>>,
8314    #[rename_field = "identifier"]
8315    #[doc = "Identifiers assigned to this order by the orderer or by the receiver."]
8316    pub identifier_: Option<Vec<Box<Identifier>>>,
8317    #[primitive]
8318    #[doc = "The URL pointing to a FHIR-defined protocol, guideline, orderset or other definition that is adhered to in whole or in part by this DeviceRequest."]
8319    pub instantiatesCanonical: Option<Vec<Box<FHIRCanonical>>>,
8320    #[primitive]
8321    #[doc = "The URL pointing to an externally maintained protocol, guideline, orderset or other definition that is adhered to in whole or in part by this DeviceRequest."]
8322    pub instantiatesUri: Option<Vec<Box<FHIRUri>>>,
8323    # [reference (targets = ["Resource"])]
8324    #[doc = "Plan/proposal/order fulfilled by this request."]
8325    pub basedOn: Option<Vec<Box<Reference>>>,
8326    # [reference (targets = ["Resource"])]
8327    #[doc = "The request takes the place of the referenced completed or terminated request(s)."]
8328    pub priorRequest: Option<Vec<Box<Reference>>>,
8329    #[doc = "Composite request this is part of."]
8330    pub groupIdentifier: Option<Box<Identifier>>,
8331    #[primitive]
8332    #[doc = "The status of the request."]
8333    pub status: Option<Box<terminology::RequestStatus>>,
8334    #[primitive]
8335    #[doc = "Whether the request is a proposal, plan, an original order or a reflex order."]
8336    pub intent: Box<terminology::RequestIntent>,
8337    #[primitive]
8338    #[doc = "Indicates how quickly the {{title}} should be addressed with respect to other requests."]
8339    pub priority: Option<Box<terminology::RequestPriority>>,
8340    # [type_choice_variants (complex = ["codeReference" , "codeCodeableConcept"] , primitive = [])]
8341    #[doc = "The details of the device to be used."]
8342    pub code: DeviceRequestCodeTypeChoice,
8343    #[doc = "Specific parameters for the ordered item.  For example, the prism value for lenses."]
8344    pub parameter: Option<Vec<DeviceRequestParameter>>,
8345    # [reference (targets = ["Patient" , "Group" , "Location" , "Device"])]
8346    #[doc = "The patient who will use the device."]
8347    pub subject: Box<Reference>,
8348    # [reference (targets = ["Encounter"])]
8349    #[doc = "An encounter that provides additional context in which this request is made."]
8350    pub encounter: Option<Box<Reference>>,
8351    # [type_choice_variants (complex = ["occurrencePeriod" , "occurrenceTiming"] , primitive = ["occurrenceDateTime"])]
8352    #[doc = "The timing schedule for the use of the device. The Schedule data type allows many different expressions, for example. \"Every 8 hours\"; \"Three times a day\"; \"1/2 an hour before breakfast for 10 days from 23-Dec 2011:\"; \"15 Oct 2013, 17 Oct 2013 and 1 Nov 2013\"."]
8353    pub occurrence: Option<DeviceRequestOccurrenceTypeChoice>,
8354    #[primitive]
8355    #[doc = "When the request transitioned to being actionable."]
8356    pub authoredOn: Option<Box<FHIRDateTime>>,
8357    # [reference (targets = ["Device" , "Practitioner" , "PractitionerRole" , "Organization"])]
8358    #[doc = "The individual who initiated the request and has responsibility for its activation."]
8359    pub requester: Option<Box<Reference>>,
8360    #[doc = "Desired type of performer for doing the diagnostic testing."]
8361    pub performerType: Option<Box<CodeableConcept>>,
8362    # [reference (targets = ["Practitioner" , "PractitionerRole" , "Organization" , "CareTeam" , "HealthcareService" , "Patient" , "Device" , "RelatedPerson"])]
8363    #[doc = "The desired performer for doing the diagnostic testing."]
8364    pub performer: Option<Box<Reference>>,
8365    #[doc = "Reason or justification for the use of this device."]
8366    pub reasonCode: Option<Vec<Box<CodeableConcept>>>,
8367    # [reference (targets = ["Condition" , "Observation" , "DiagnosticReport" , "DocumentReference"])]
8368    #[doc = "Reason or justification for the use of this device."]
8369    pub reasonReference: Option<Vec<Box<Reference>>>,
8370    # [reference (targets = ["Coverage" , "ClaimResponse"])]
8371    #[doc = "Insurance plans, coverage extensions, pre-authorizations and/or pre-determinations that may be required for delivering the requested service."]
8372    pub insurance: Option<Vec<Box<Reference>>>,
8373    # [reference (targets = ["Resource"])]
8374    #[doc = "Additional clinical information about the patient that may influence the request fulfilment.  For example, this may include where on the subject's body the device will be used (i.e. the target site)."]
8375    pub supportingInfo: Option<Vec<Box<Reference>>>,
8376    #[doc = "Details about this request that were not represented at all or sufficiently in one of the attributes provided in a class. These may include for example a comment, an instruction, or a note associated with the statement."]
8377    pub note: Option<Vec<Box<Annotation>>>,
8378    # [reference (targets = ["Provenance"])]
8379    #[doc = "Key events in the history of the request."]
8380    pub relevantHistory: Option<Vec<Box<Reference>>>,
8381}
8382#[derive(
8383    Clone,
8384    Reflect,
8385    Debug,
8386    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
8387    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
8388)]
8389#[fhir_serialize_type = "typechoice"]
8390#[type_choice_field_name = "timing"]
8391pub enum DeviceUseStatementTimingTypeChoice {
8392    Timing(Box<Timing>),
8393    Period(Box<Period>),
8394    DateTime(Box<FHIRDateTime>),
8395}
8396impl Default for DeviceUseStatementTimingTypeChoice {
8397    fn default() -> Self {
8398        DeviceUseStatementTimingTypeChoice::Timing(Box::new(Default::default()))
8399    }
8400}
8401#[derive(
8402    Clone,
8403    Reflect,
8404    Debug,
8405    Default,
8406    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
8407    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
8408)]
8409#[fhir_serialize_type = "resource"]
8410#[doc = "A record of a device being used by a patient where the record is the result of a report from the patient or another clinician."]
8411pub struct DeviceUseStatement {
8412    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
8413    pub id: Option<String>,
8414    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
8415    pub meta: Option<Box<Meta>>,
8416    #[primitive]
8417    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
8418    pub implicitRules: Option<Box<FHIRUri>>,
8419    #[primitive]
8420    #[doc = "The base language in which the resource is written."]
8421    pub language: Option<Box<FHIRCode>>,
8422    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
8423    pub text: Option<Box<Narrative>>,
8424    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
8425    pub contained: Option<Vec<Box<Resource>>>,
8426    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
8427    pub extension: Option<Vec<Box<Extension>>>,
8428    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
8429    pub modifierExtension: Option<Vec<Box<Extension>>>,
8430    #[rename_field = "identifier"]
8431    #[doc = "An external identifier for this statement such as an IRI."]
8432    pub identifier_: Option<Vec<Box<Identifier>>>,
8433    # [reference (targets = ["ServiceRequest"])]
8434    #[doc = "A plan, proposal or order that is fulfilled in whole or in part by this DeviceUseStatement."]
8435    pub basedOn: Option<Vec<Box<Reference>>>,
8436    #[primitive]
8437    #[doc = "A code representing the patient or other source's judgment about the state of the device used that this statement is about.  Generally this will be active or completed."]
8438    pub status: Box<terminology::DeviceStatementStatus>,
8439    # [reference (targets = ["Patient" , "Group"])]
8440    #[doc = "The patient who used the device."]
8441    pub subject: Box<Reference>,
8442    # [reference (targets = ["ServiceRequest" , "Procedure" , "Claim" , "Observation" , "QuestionnaireResponse" , "DocumentReference"])]
8443    #[doc = "Allows linking the DeviceUseStatement to the underlying Request, or to other information that supports or is used to derive the DeviceUseStatement."]
8444    pub derivedFrom: Option<Vec<Box<Reference>>>,
8445    # [type_choice_variants (complex = ["timingTiming" , "timingPeriod"] , primitive = ["timingDateTime"])]
8446    #[doc = "How often the device was used."]
8447    pub timing: Option<DeviceUseStatementTimingTypeChoice>,
8448    #[primitive]
8449    #[doc = "The time at which the statement was made/recorded."]
8450    pub recordedOn: Option<Box<FHIRDateTime>>,
8451    # [reference (targets = ["Patient" , "Practitioner" , "PractitionerRole" , "RelatedPerson"])]
8452    #[doc = "Who reported the device was being used by the patient."]
8453    pub source: Option<Box<Reference>>,
8454    # [reference (targets = ["Device"])]
8455    #[doc = "The details of the device used."]
8456    pub device: Box<Reference>,
8457    #[doc = "Reason or justification for the use of the device."]
8458    pub reasonCode: Option<Vec<Box<CodeableConcept>>>,
8459    # [reference (targets = ["Condition" , "Observation" , "DiagnosticReport" , "DocumentReference" , "Media"])]
8460    #[doc = "Indicates another resource whose existence justifies this DeviceUseStatement."]
8461    pub reasonReference: Option<Vec<Box<Reference>>>,
8462    #[doc = "Indicates the anotomic location on the subject's body where the device was used ( i.e. the target)."]
8463    pub bodySite: Option<Box<CodeableConcept>>,
8464    #[doc = "Details about the device statement that were not represented at all or sufficiently in one of the attributes provided in a class. These may include for example a comment, an instruction, or a note associated with the statement."]
8465    pub note: Option<Vec<Box<Annotation>>>,
8466}
8467#[derive(
8468    Clone,
8469    Reflect,
8470    Debug,
8471    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
8472    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
8473)]
8474#[fhir_serialize_type = "typechoice"]
8475#[type_choice_field_name = "effective"]
8476pub enum DiagnosticReportEffectiveTypeChoice {
8477    DateTime(Box<FHIRDateTime>),
8478    Period(Box<Period>),
8479}
8480impl Default for DiagnosticReportEffectiveTypeChoice {
8481    fn default() -> Self {
8482        DiagnosticReportEffectiveTypeChoice::DateTime(Box::new(Default::default()))
8483    }
8484}
8485#[derive(
8486    Clone,
8487    Reflect,
8488    Debug,
8489    Default,
8490    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
8491    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
8492)]
8493#[fhir_serialize_type = "complex"]
8494#[doc = "A list of key images associated with this report. The images are generally created during the diagnostic process, and may be directly of the patient, or of treated specimens (i.e. slides of interest)."]
8495pub struct DiagnosticReportMedia {
8496    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
8497    pub id: Option<String>,
8498    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
8499    pub extension: Option<Vec<Box<Extension>>>,
8500    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
8501    pub modifierExtension: Option<Vec<Box<Extension>>>,
8502    #[primitive]
8503    #[doc = "A comment about the image. Typically, this is used to provide an explanation for why the image is included, or to draw the viewer's attention to important features."]
8504    pub comment: Option<Box<FHIRString>>,
8505    # [reference (targets = ["Media"])]
8506    #[doc = "Reference to the image source."]
8507    pub link: Box<Reference>,
8508}
8509#[derive(
8510    Clone,
8511    Reflect,
8512    Debug,
8513    Default,
8514    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
8515    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
8516)]
8517#[fhir_serialize_type = "resource"]
8518#[doc = "The findings and interpretation of diagnostic  tests performed on patients, groups of patients, devices, and locations, and/or specimens derived from these. The report includes clinical context such as requesting and provider information, and some mix of atomic results, images, textual and coded interpretations, and formatted representation of diagnostic reports."]
8519pub struct DiagnosticReport {
8520    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
8521    pub id: Option<String>,
8522    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
8523    pub meta: Option<Box<Meta>>,
8524    #[primitive]
8525    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
8526    pub implicitRules: Option<Box<FHIRUri>>,
8527    #[primitive]
8528    #[doc = "The base language in which the resource is written."]
8529    pub language: Option<Box<FHIRCode>>,
8530    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
8531    pub text: Option<Box<Narrative>>,
8532    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
8533    pub contained: Option<Vec<Box<Resource>>>,
8534    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
8535    pub extension: Option<Vec<Box<Extension>>>,
8536    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
8537    pub modifierExtension: Option<Vec<Box<Extension>>>,
8538    #[rename_field = "identifier"]
8539    #[doc = "Identifiers assigned to this report by the performer or other systems."]
8540    pub identifier_: Option<Vec<Box<Identifier>>>,
8541    # [reference (targets = ["CarePlan" , "ImmunizationRecommendation" , "MedicationRequest" , "NutritionOrder" , "ServiceRequest"])]
8542    #[doc = "Details concerning a service requested."]
8543    pub basedOn: Option<Vec<Box<Reference>>>,
8544    #[primitive]
8545    #[doc = "The status of the diagnostic report."]
8546    pub status: Box<terminology::DiagnosticReportStatus>,
8547    #[doc = "A code that classifies the clinical discipline, department or diagnostic service that created the report (e.g. cardiology, biochemistry, hematology, MRI). This is used for searching, sorting and display purposes."]
8548    pub category: Option<Vec<Box<CodeableConcept>>>,
8549    #[doc = "A code or name that describes this diagnostic report."]
8550    pub code: Box<CodeableConcept>,
8551    # [reference (targets = ["Patient" , "Group" , "Device" , "Location"])]
8552    #[doc = "The subject of the report. Usually, but not always, this is a patient. However, diagnostic services also perform analyses on specimens collected from a variety of other sources."]
8553    pub subject: Option<Box<Reference>>,
8554    # [reference (targets = ["Encounter"])]
8555    #[doc = "The healthcare event  (e.g. a patient and healthcare provider interaction) which this DiagnosticReport is about."]
8556    pub encounter: Option<Box<Reference>>,
8557    # [type_choice_variants (complex = ["effectivePeriod"] , primitive = ["effectiveDateTime"])]
8558    #[doc = "The time or time-period the observed values are related to. When the subject of the report is a patient, this is usually either the time of the procedure or of specimen collection(s), but very often the source of the date/time is not known, only the date/time itself."]
8559    pub effective: Option<DiagnosticReportEffectiveTypeChoice>,
8560    #[primitive]
8561    #[doc = "The date and time that this version of the report was made available to providers, typically after the report was reviewed and verified."]
8562    pub issued: Option<Box<FHIRInstant>>,
8563    # [reference (targets = ["Practitioner" , "PractitionerRole" , "Organization" , "CareTeam"])]
8564    #[doc = "The diagnostic service that is responsible for issuing the report."]
8565    pub performer: Option<Vec<Box<Reference>>>,
8566    # [reference (targets = ["Practitioner" , "PractitionerRole" , "Organization" , "CareTeam"])]
8567    #[doc = "The practitioner or organization that is responsible for the report's conclusions and interpretations."]
8568    pub resultsInterpreter: Option<Vec<Box<Reference>>>,
8569    # [reference (targets = ["Specimen"])]
8570    #[doc = "Details about the specimens on which this diagnostic report is based."]
8571    pub specimen: Option<Vec<Box<Reference>>>,
8572    # [reference (targets = ["Observation"])]
8573    #[doc = "[Observations](observation.html)  that are part of this diagnostic report."]
8574    pub result: Option<Vec<Box<Reference>>>,
8575    # [reference (targets = ["ImagingStudy"])]
8576    #[doc = "One or more links to full details of any imaging performed during the diagnostic investigation. Typically, this is imaging performed by DICOM enabled modalities, but this is not required. A fully enabled PACS viewer can use this information to provide views of the source images."]
8577    pub imagingStudy: Option<Vec<Box<Reference>>>,
8578    #[doc = "A list of key images associated with this report. The images are generally created during the diagnostic process, and may be directly of the patient, or of treated specimens (i.e. slides of interest)."]
8579    pub media: Option<Vec<DiagnosticReportMedia>>,
8580    #[primitive]
8581    #[doc = "Concise and clinically contextualized summary conclusion (interpretation/impression) of the diagnostic report."]
8582    pub conclusion: Option<Box<FHIRString>>,
8583    #[doc = "One or more codes that represent the summary conclusion (interpretation/impression) of the diagnostic report."]
8584    pub conclusionCode: Option<Vec<Box<CodeableConcept>>>,
8585    #[doc = "Rich text representation of the entire result as issued by the diagnostic service. Multiple formats are allowed but they SHALL be semantically equivalent."]
8586    pub presentedForm: Option<Vec<Box<Attachment>>>,
8587}
8588#[derive(
8589    Clone,
8590    Reflect,
8591    Debug,
8592    Default,
8593    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
8594    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
8595)]
8596#[fhir_serialize_type = "complex"]
8597#[doc = "Related identifiers or resources associated with the DocumentManifest."]
8598pub struct DocumentManifestRelated {
8599    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
8600    pub id: Option<String>,
8601    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
8602    pub extension: Option<Vec<Box<Extension>>>,
8603    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
8604    pub modifierExtension: Option<Vec<Box<Extension>>>,
8605    #[rename_field = "identifier"]
8606    #[doc = "Related identifier to this DocumentManifest.  For example, Order numbers, accession numbers, XDW workflow numbers."]
8607    pub identifier_: Option<Box<Identifier>>,
8608    #[rename_field = "ref"]
8609    # [reference (targets = ["Resource"])]
8610    #[doc = "Related Resource to this DocumentManifest. For example, Order, ServiceRequest,  Procedure, EligibilityRequest, etc."]
8611    pub ref_: Option<Box<Reference>>,
8612}
8613#[derive(
8614    Clone,
8615    Reflect,
8616    Debug,
8617    Default,
8618    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
8619    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
8620)]
8621#[fhir_serialize_type = "resource"]
8622#[doc = "A collection of documents compiled for a purpose together with metadata that applies to the collection."]
8623pub struct DocumentManifest {
8624    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
8625    pub id: Option<String>,
8626    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
8627    pub meta: Option<Box<Meta>>,
8628    #[primitive]
8629    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
8630    pub implicitRules: Option<Box<FHIRUri>>,
8631    #[primitive]
8632    #[doc = "The base language in which the resource is written."]
8633    pub language: Option<Box<FHIRCode>>,
8634    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
8635    pub text: Option<Box<Narrative>>,
8636    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
8637    pub contained: Option<Vec<Box<Resource>>>,
8638    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
8639    pub extension: Option<Vec<Box<Extension>>>,
8640    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
8641    pub modifierExtension: Option<Vec<Box<Extension>>>,
8642    #[doc = "A single identifier that uniquely identifies this manifest. Principally used to refer to the manifest in non-FHIR contexts."]
8643    pub masterIdentifier: Option<Box<Identifier>>,
8644    #[rename_field = "identifier"]
8645    #[doc = "Other identifiers associated with the document manifest, including version independent  identifiers."]
8646    pub identifier_: Option<Vec<Box<Identifier>>>,
8647    #[primitive]
8648    #[doc = "The status of this document manifest."]
8649    pub status: Box<terminology::DocumentReferenceStatus>,
8650    #[rename_field = "type"]
8651    #[doc = "The code specifying the type of clinical activity that resulted in placing the associated content into the DocumentManifest."]
8652    pub type_: Option<Box<CodeableConcept>>,
8653    # [reference (targets = ["Patient" , "Practitioner" , "Group" , "Device"])]
8654    #[doc = "Who or what the set of documents is about. The documents can be about a person, (patient or healthcare practitioner), a device (i.e. machine) or even a group of subjects (such as a document about a herd of farm animals, or a set of patients that share a common exposure). If the documents cross more than one subject, then more than one subject is allowed here (unusual use case)."]
8655    pub subject: Option<Box<Reference>>,
8656    #[primitive]
8657    #[doc = "When the document manifest was created for submission to the server (not necessarily the same thing as the actual resource last modified time, since it may be modified, replicated, etc.)."]
8658    pub created: Option<Box<FHIRDateTime>>,
8659    # [reference (targets = ["Practitioner" , "PractitionerRole" , "Organization" , "Device" , "Patient" , "RelatedPerson"])]
8660    #[doc = "Identifies who is the author of the manifest. Manifest author is not necessarly the author of the references included."]
8661    pub author: Option<Vec<Box<Reference>>>,
8662    # [reference (targets = ["Patient" , "Practitioner" , "PractitionerRole" , "RelatedPerson" , "Organization"])]
8663    #[doc = "A patient, practitioner, or organization for which this set of documents is intended."]
8664    pub recipient: Option<Vec<Box<Reference>>>,
8665    #[primitive]
8666    #[doc = "Identifies the source system, application, or software that produced the document manifest."]
8667    pub source: Option<Box<FHIRUri>>,
8668    #[primitive]
8669    #[doc = "Human-readable description of the source document. This is sometimes known as the \"title\"."]
8670    pub description: Option<Box<FHIRString>>,
8671    #[cardinality(min = 1usize)]
8672    # [reference (targets = ["Resource"])]
8673    #[doc = "The list of Resources that consist of the parts of this manifest."]
8674    pub content: Vec<Box<Reference>>,
8675    #[doc = "Related identifiers or resources associated with the DocumentManifest."]
8676    pub related: Option<Vec<DocumentManifestRelated>>,
8677}
8678#[derive(
8679    Clone,
8680    Reflect,
8681    Debug,
8682    Default,
8683    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
8684    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
8685)]
8686#[fhir_serialize_type = "complex"]
8687#[doc = "Relationships that this document has with other document references that already exist."]
8688pub struct DocumentReferenceRelatesTo {
8689    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
8690    pub id: Option<String>,
8691    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
8692    pub extension: Option<Vec<Box<Extension>>>,
8693    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
8694    pub modifierExtension: Option<Vec<Box<Extension>>>,
8695    #[primitive]
8696    #[doc = "The type of relationship that this document has with anther document."]
8697    pub code: Box<terminology::DocumentRelationshipType>,
8698    # [reference (targets = ["DocumentReference"])]
8699    #[doc = "The target document of this relationship."]
8700    pub target: Box<Reference>,
8701}
8702#[derive(
8703    Clone,
8704    Reflect,
8705    Debug,
8706    Default,
8707    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
8708    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
8709)]
8710#[fhir_serialize_type = "complex"]
8711#[doc = "The document and format referenced. There may be multiple content element repetitions, each with a different format."]
8712pub struct DocumentReferenceContent {
8713    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
8714    pub id: Option<String>,
8715    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
8716    pub extension: Option<Vec<Box<Extension>>>,
8717    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
8718    pub modifierExtension: Option<Vec<Box<Extension>>>,
8719    #[doc = "The document or URL of the document along with critical metadata to prove content has integrity."]
8720    pub attachment: Box<Attachment>,
8721    #[doc = "An identifier of the document encoding, structure, and template that the document conforms to beyond the base format indicated in the mimeType."]
8722    pub format: Option<Box<Coding>>,
8723}
8724#[derive(
8725    Clone,
8726    Reflect,
8727    Debug,
8728    Default,
8729    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
8730    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
8731)]
8732#[fhir_serialize_type = "complex"]
8733#[doc = "The clinical context in which the document was prepared."]
8734pub struct DocumentReferenceContext {
8735    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
8736    pub id: Option<String>,
8737    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
8738    pub extension: Option<Vec<Box<Extension>>>,
8739    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
8740    pub modifierExtension: Option<Vec<Box<Extension>>>,
8741    # [reference (targets = ["Encounter" , "EpisodeOfCare"])]
8742    #[doc = "Describes the clinical encounter or type of care that the document content is associated with."]
8743    pub encounter: Option<Vec<Box<Reference>>>,
8744    #[doc = "This list of codes represents the main clinical acts, such as a colonoscopy or an appendectomy, being documented. In some cases, the event is inherent in the type Code, such as a \"History and Physical Report\" in which the procedure being documented is necessarily a \"History and Physical\" act."]
8745    pub event: Option<Vec<Box<CodeableConcept>>>,
8746    #[doc = "The time period over which the service that is described by the document was provided."]
8747    pub period: Option<Box<Period>>,
8748    #[doc = "The kind of facility where the patient was seen."]
8749    pub facilityType: Option<Box<CodeableConcept>>,
8750    #[doc = "This property may convey specifics about the practice setting where the content was created, often reflecting the clinical specialty."]
8751    pub practiceSetting: Option<Box<CodeableConcept>>,
8752    # [reference (targets = ["Patient"])]
8753    #[doc = "The Patient Information as known when the document was published. May be a reference to a version specific, or contained."]
8754    pub sourcePatientInfo: Option<Box<Reference>>,
8755    # [reference (targets = ["Resource"])]
8756    #[doc = "Related identifiers or resources associated with the DocumentReference."]
8757    pub related: Option<Vec<Box<Reference>>>,
8758}
8759#[derive(
8760    Clone,
8761    Reflect,
8762    Debug,
8763    Default,
8764    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
8765    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
8766)]
8767#[fhir_serialize_type = "resource"]
8768#[doc = "A reference to a document of any kind for any purpose. Provides metadata about the document so that the document can be discovered and managed. The scope of a document is any seralized object with a mime-type, so includes formal patient centric documents (CDA), cliical notes, scanned paper, and non-patient specific documents like policy text."]
8769pub struct DocumentReference {
8770    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
8771    pub id: Option<String>,
8772    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
8773    pub meta: Option<Box<Meta>>,
8774    #[primitive]
8775    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
8776    pub implicitRules: Option<Box<FHIRUri>>,
8777    #[primitive]
8778    #[doc = "The base language in which the resource is written."]
8779    pub language: Option<Box<FHIRCode>>,
8780    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
8781    pub text: Option<Box<Narrative>>,
8782    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
8783    pub contained: Option<Vec<Box<Resource>>>,
8784    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
8785    pub extension: Option<Vec<Box<Extension>>>,
8786    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
8787    pub modifierExtension: Option<Vec<Box<Extension>>>,
8788    #[doc = "Document identifier as assigned by the source of the document. This identifier is specific to this version of the document. This unique identifier may be used elsewhere to identify this version of the document."]
8789    pub masterIdentifier: Option<Box<Identifier>>,
8790    #[rename_field = "identifier"]
8791    #[doc = "Other identifiers associated with the document, including version independent identifiers."]
8792    pub identifier_: Option<Vec<Box<Identifier>>>,
8793    #[primitive]
8794    #[doc = "The status of this document reference."]
8795    pub status: Box<terminology::DocumentReferenceStatus>,
8796    #[primitive]
8797    #[doc = "The status of the underlying document."]
8798    pub docStatus: Option<Box<terminology::CompositionStatus>>,
8799    #[rename_field = "type"]
8800    #[doc = "Specifies the particular kind of document referenced  (e.g. History and Physical, Discharge Summary, Progress Note). This usually equates to the purpose of making the document referenced."]
8801    pub type_: Option<Box<CodeableConcept>>,
8802    #[doc = "A categorization for the type of document referenced - helps for indexing and searching. This may be implied by or derived from the code specified in the DocumentReference.type."]
8803    pub category: Option<Vec<Box<CodeableConcept>>>,
8804    # [reference (targets = ["Patient" , "Practitioner" , "Group" , "Device"])]
8805    #[doc = "Who or what the document is about. The document can be about a person, (patient or healthcare practitioner), a device (e.g. a machine) or even a group of subjects (such as a document about a herd of farm animals, or a set of patients that share a common exposure)."]
8806    pub subject: Option<Box<Reference>>,
8807    #[primitive]
8808    #[doc = "When the document reference was created."]
8809    pub date: Option<Box<FHIRInstant>>,
8810    # [reference (targets = ["Practitioner" , "PractitionerRole" , "Organization" , "Device" , "Patient" , "RelatedPerson"])]
8811    #[doc = "Identifies who is responsible for adding the information to the document."]
8812    pub author: Option<Vec<Box<Reference>>>,
8813    # [reference (targets = ["Practitioner" , "PractitionerRole" , "Organization"])]
8814    #[doc = "Which person or organization authenticates that this document is valid."]
8815    pub authenticator: Option<Box<Reference>>,
8816    # [reference (targets = ["Organization"])]
8817    #[doc = "Identifies the organization or group who is responsible for ongoing maintenance of and access to the document."]
8818    pub custodian: Option<Box<Reference>>,
8819    #[doc = "Relationships that this document has with other document references that already exist."]
8820    pub relatesTo: Option<Vec<DocumentReferenceRelatesTo>>,
8821    #[primitive]
8822    #[doc = "Human-readable description of the source document."]
8823    pub description: Option<Box<FHIRString>>,
8824    #[doc = "A set of Security-Tag codes specifying the level of privacy/security of the Document. Note that DocumentReference.meta.security contains the security labels of the \"reference\" to the document, while DocumentReference.securityLabel contains a snapshot of the security labels on the document the reference refers to."]
8825    pub securityLabel: Option<Vec<Box<CodeableConcept>>>,
8826    #[cardinality(min = 1usize)]
8827    #[doc = "The document and format referenced. There may be multiple content element repetitions, each with a different format."]
8828    pub content: Vec<DocumentReferenceContent>,
8829    #[doc = "The clinical context in which the document was prepared."]
8830    pub context: Option<DocumentReferenceContext>,
8831}
8832#[derive(
8833    Clone,
8834    Reflect,
8835    Debug,
8836    Default,
8837    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
8838    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
8839)]
8840#[fhir_serialize_type = "complex"]
8841#[doc = "A description of the size of the sample involved in the synthesis."]
8842pub struct EffectEvidenceSynthesisSampleSize {
8843    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
8844    pub id: Option<String>,
8845    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
8846    pub extension: Option<Vec<Box<Extension>>>,
8847    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
8848    pub modifierExtension: Option<Vec<Box<Extension>>>,
8849    #[primitive]
8850    #[doc = "Human-readable summary of sample size."]
8851    pub description: Option<Box<FHIRString>>,
8852    #[primitive]
8853    #[doc = "Number of studies included in this evidence synthesis."]
8854    pub numberOfStudies: Option<Box<FHIRInteger>>,
8855    #[primitive]
8856    #[doc = "Number of participants included in this evidence synthesis."]
8857    pub numberOfParticipants: Option<Box<FHIRInteger>>,
8858}
8859#[derive(
8860    Clone,
8861    Reflect,
8862    Debug,
8863    Default,
8864    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
8865    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
8866)]
8867#[fhir_serialize_type = "complex"]
8868#[doc = "A description of the results for each exposure considered in the effect estimate."]
8869pub struct EffectEvidenceSynthesisResultsByExposure {
8870    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
8871    pub id: Option<String>,
8872    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
8873    pub extension: Option<Vec<Box<Extension>>>,
8874    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
8875    pub modifierExtension: Option<Vec<Box<Extension>>>,
8876    #[primitive]
8877    #[doc = "Human-readable summary of results by exposure state."]
8878    pub description: Option<Box<FHIRString>>,
8879    #[primitive]
8880    #[doc = "Whether these results are for the exposure state or alternative exposure state."]
8881    pub exposureState: Option<Box<terminology::ExposureState>>,
8882    #[doc = "Used to define variant exposure states such as low-risk state."]
8883    pub variantState: Option<Box<CodeableConcept>>,
8884    # [reference (targets = ["RiskEvidenceSynthesis"])]
8885    #[doc = "Reference to a RiskEvidenceSynthesis resource."]
8886    pub riskEvidenceSynthesis: Box<Reference>,
8887}
8888#[derive(
8889    Clone,
8890    Reflect,
8891    Debug,
8892    Default,
8893    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
8894    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
8895)]
8896#[fhir_serialize_type = "complex"]
8897#[doc = "A description of the precision of the estimate for the effect."]
8898pub struct EffectEvidenceSynthesisEffectEstimatePrecisionEstimate {
8899    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
8900    pub id: Option<String>,
8901    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
8902    pub extension: Option<Vec<Box<Extension>>>,
8903    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
8904    pub modifierExtension: Option<Vec<Box<Extension>>>,
8905    #[rename_field = "type"]
8906    #[doc = "Examples include confidence interval and interquartile range."]
8907    pub type_: Option<Box<CodeableConcept>>,
8908    #[primitive]
8909    #[doc = "Use 95 for a 95% confidence interval."]
8910    pub level: Option<Box<FHIRDecimal>>,
8911    #[primitive]
8912    #[doc = "Lower bound of confidence interval."]
8913    pub from: Option<Box<FHIRDecimal>>,
8914    #[primitive]
8915    #[doc = "Upper bound of confidence interval."]
8916    pub to: Option<Box<FHIRDecimal>>,
8917}
8918#[derive(
8919    Clone,
8920    Reflect,
8921    Debug,
8922    Default,
8923    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
8924    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
8925)]
8926#[fhir_serialize_type = "complex"]
8927#[doc = "The estimated effect of the exposure variant."]
8928pub struct EffectEvidenceSynthesisEffectEstimate {
8929    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
8930    pub id: Option<String>,
8931    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
8932    pub extension: Option<Vec<Box<Extension>>>,
8933    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
8934    pub modifierExtension: Option<Vec<Box<Extension>>>,
8935    #[primitive]
8936    #[doc = "Human-readable summary of effect estimate."]
8937    pub description: Option<Box<FHIRString>>,
8938    #[rename_field = "type"]
8939    #[doc = "Examples include relative risk and mean difference."]
8940    pub type_: Option<Box<CodeableConcept>>,
8941    #[doc = "Used to define variant exposure states such as low-risk state."]
8942    pub variantState: Option<Box<CodeableConcept>>,
8943    #[primitive]
8944    #[doc = "The point estimate of the effect estimate."]
8945    pub value: Option<Box<FHIRDecimal>>,
8946    #[doc = "Specifies the UCUM unit for the outcome."]
8947    pub unitOfMeasure: Option<Box<CodeableConcept>>,
8948    #[doc = "A description of the precision of the estimate for the effect."]
8949    pub precisionEstimate: Option<Vec<EffectEvidenceSynthesisEffectEstimatePrecisionEstimate>>,
8950}
8951#[derive(
8952    Clone,
8953    Reflect,
8954    Debug,
8955    Default,
8956    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
8957    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
8958)]
8959#[fhir_serialize_type = "complex"]
8960#[doc = "A description of a component of the overall certainty."]
8961pub struct EffectEvidenceSynthesisCertaintyCertaintySubcomponent {
8962    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
8963    pub id: Option<String>,
8964    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
8965    pub extension: Option<Vec<Box<Extension>>>,
8966    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
8967    pub modifierExtension: Option<Vec<Box<Extension>>>,
8968    #[rename_field = "type"]
8969    #[doc = "Type of subcomponent of certainty rating."]
8970    pub type_: Option<Box<CodeableConcept>>,
8971    #[doc = "A rating of a subcomponent of rating certainty."]
8972    pub rating: Option<Vec<Box<CodeableConcept>>>,
8973    #[doc = "A human-readable string to clarify or explain concepts about the resource."]
8974    pub note: Option<Vec<Box<Annotation>>>,
8975}
8976#[derive(
8977    Clone,
8978    Reflect,
8979    Debug,
8980    Default,
8981    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
8982    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
8983)]
8984#[fhir_serialize_type = "complex"]
8985#[doc = "A description of the certainty of the effect estimate."]
8986pub struct EffectEvidenceSynthesisCertainty {
8987    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
8988    pub id: Option<String>,
8989    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
8990    pub extension: Option<Vec<Box<Extension>>>,
8991    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
8992    pub modifierExtension: Option<Vec<Box<Extension>>>,
8993    #[doc = "A rating of the certainty of the effect estimate."]
8994    pub rating: Option<Vec<Box<CodeableConcept>>>,
8995    #[doc = "A human-readable string to clarify or explain concepts about the resource."]
8996    pub note: Option<Vec<Box<Annotation>>>,
8997    #[doc = "A description of a component of the overall certainty."]
8998    pub certaintySubcomponent: Option<Vec<EffectEvidenceSynthesisCertaintyCertaintySubcomponent>>,
8999}
9000#[derive(
9001    Clone,
9002    Reflect,
9003    Debug,
9004    Default,
9005    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
9006    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
9007)]
9008#[fhir_serialize_type = "resource"]
9009#[doc = "The EffectEvidenceSynthesis resource describes the difference in an outcome between exposures states in a population where the effect estimate is derived from a combination of research studies."]
9010pub struct EffectEvidenceSynthesis {
9011    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
9012    pub id: Option<String>,
9013    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
9014    pub meta: Option<Box<Meta>>,
9015    #[primitive]
9016    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
9017    pub implicitRules: Option<Box<FHIRUri>>,
9018    #[primitive]
9019    #[doc = "The base language in which the resource is written."]
9020    pub language: Option<Box<FHIRCode>>,
9021    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
9022    pub text: Option<Box<Narrative>>,
9023    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
9024    pub contained: Option<Vec<Box<Resource>>>,
9025    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
9026    pub extension: Option<Vec<Box<Extension>>>,
9027    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
9028    pub modifierExtension: Option<Vec<Box<Extension>>>,
9029    #[primitive]
9030    #[doc = "An absolute URI that is used to identify this effect evidence synthesis when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this effect evidence synthesis is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the effect evidence synthesis is stored on different servers."]
9031    pub url: Option<Box<FHIRUri>>,
9032    #[rename_field = "identifier"]
9033    #[doc = "A formal identifier that is used to identify this effect evidence synthesis when it is represented in other formats, or referenced in a specification, model, design or an instance."]
9034    pub identifier_: Option<Vec<Box<Identifier>>>,
9035    #[primitive]
9036    #[doc = "The identifier that is used to identify this version of the effect evidence synthesis when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the effect evidence synthesis author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence."]
9037    pub version: Option<Box<FHIRString>>,
9038    #[primitive]
9039    #[doc = "A natural language name identifying the effect evidence synthesis. This name should be usable as an identifier for the module by machine processing applications such as code generation."]
9040    pub name: Option<Box<FHIRString>>,
9041    #[primitive]
9042    #[doc = "A short, descriptive, user-friendly title for the effect evidence synthesis."]
9043    pub title: Option<Box<FHIRString>>,
9044    #[primitive]
9045    #[doc = "The status of this effect evidence synthesis. Enables tracking the life-cycle of the content."]
9046    pub status: Box<terminology::PublicationStatus>,
9047    #[primitive]
9048    #[doc = "The date  (and optionally time) when the effect evidence synthesis was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the effect evidence synthesis changes."]
9049    pub date: Option<Box<FHIRDateTime>>,
9050    #[primitive]
9051    #[doc = "The name of the organization or individual that published the effect evidence synthesis."]
9052    pub publisher: Option<Box<FHIRString>>,
9053    #[doc = "Contact details to assist a user in finding and communicating with the publisher."]
9054    pub contact: Option<Vec<Box<ContactDetail>>>,
9055    #[primitive]
9056    #[doc = "A free text natural language description of the effect evidence synthesis from a consumer's perspective."]
9057    pub description: Option<Box<FHIRMarkdown>>,
9058    #[doc = "A human-readable string to clarify or explain concepts about the resource."]
9059    pub note: Option<Vec<Box<Annotation>>>,
9060    #[doc = "The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate effect evidence synthesis instances."]
9061    pub useContext: Option<Vec<Box<UsageContext>>>,
9062    #[doc = "A legal or geographic region in which the effect evidence synthesis is intended to be used."]
9063    pub jurisdiction: Option<Vec<Box<CodeableConcept>>>,
9064    #[primitive]
9065    #[doc = "A copyright statement relating to the effect evidence synthesis and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the effect evidence synthesis."]
9066    pub copyright: Option<Box<FHIRMarkdown>>,
9067    #[primitive]
9068    #[doc = "The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage."]
9069    pub approvalDate: Option<Box<FHIRDate>>,
9070    #[primitive]
9071    #[doc = "The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date."]
9072    pub lastReviewDate: Option<Box<FHIRDate>>,
9073    #[doc = "The period during which the effect evidence synthesis content was or is planned to be in active use."]
9074    pub effectivePeriod: Option<Box<Period>>,
9075    #[doc = "Descriptive topics related to the content of the EffectEvidenceSynthesis. Topics provide a high-level categorization grouping types of EffectEvidenceSynthesiss that can be useful for filtering and searching."]
9076    pub topic: Option<Vec<Box<CodeableConcept>>>,
9077    #[doc = "An individiual or organization primarily involved in the creation and maintenance of the content."]
9078    pub author: Option<Vec<Box<ContactDetail>>>,
9079    #[doc = "An individual or organization primarily responsible for internal coherence of the content."]
9080    pub editor: Option<Vec<Box<ContactDetail>>>,
9081    #[doc = "An individual or organization primarily responsible for review of some aspect of the content."]
9082    pub reviewer: Option<Vec<Box<ContactDetail>>>,
9083    #[doc = "An individual or organization responsible for officially endorsing the content for use in some setting."]
9084    pub endorser: Option<Vec<Box<ContactDetail>>>,
9085    #[doc = "Related artifacts such as additional documentation, justification, or bibliographic references."]
9086    pub relatedArtifact: Option<Vec<Box<RelatedArtifact>>>,
9087    #[doc = "Type of synthesis eg meta-analysis."]
9088    pub synthesisType: Option<Box<CodeableConcept>>,
9089    #[doc = "Type of study eg randomized trial."]
9090    pub studyType: Option<Box<CodeableConcept>>,
9091    # [reference (targets = ["EvidenceVariable"])]
9092    #[doc = "A reference to a EvidenceVariable resource that defines the population for the research."]
9093    pub population: Box<Reference>,
9094    # [reference (targets = ["EvidenceVariable"])]
9095    #[doc = "A reference to a EvidenceVariable resource that defines the exposure for the research."]
9096    pub exposure: Box<Reference>,
9097    # [reference (targets = ["EvidenceVariable"])]
9098    #[doc = "A reference to a EvidenceVariable resource that defines the comparison exposure for the research."]
9099    pub exposureAlternative: Box<Reference>,
9100    # [reference (targets = ["EvidenceVariable"])]
9101    #[doc = "A reference to a EvidenceVariable resomece that defines the outcome for the research."]
9102    pub outcome: Box<Reference>,
9103    #[doc = "A description of the size of the sample involved in the synthesis."]
9104    pub sampleSize: Option<EffectEvidenceSynthesisSampleSize>,
9105    #[doc = "A description of the results for each exposure considered in the effect estimate."]
9106    pub resultsByExposure: Option<Vec<EffectEvidenceSynthesisResultsByExposure>>,
9107    #[doc = "The estimated effect of the exposure variant."]
9108    pub effectEstimate: Option<Vec<EffectEvidenceSynthesisEffectEstimate>>,
9109    #[doc = "A description of the certainty of the effect estimate."]
9110    pub certainty: Option<Vec<EffectEvidenceSynthesisCertainty>>,
9111}
9112#[derive(
9113    Clone,
9114    Reflect,
9115    Debug,
9116    Default,
9117    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
9118    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
9119)]
9120#[fhir_serialize_type = "complex"]
9121#[doc = "The status history permits the encounter resource to contain the status history without needing to read through the historical versions of the resource, or even have the server store them."]
9122pub struct EncounterStatusHistory {
9123    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
9124    pub id: Option<String>,
9125    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
9126    pub extension: Option<Vec<Box<Extension>>>,
9127    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
9128    pub modifierExtension: Option<Vec<Box<Extension>>>,
9129    #[primitive]
9130    #[doc = "planned | arrived | triaged | in-progress | onleave | finished | cancelled +."]
9131    pub status: Box<terminology::EncounterStatus>,
9132    #[doc = "The time that the episode was in the specified status."]
9133    pub period: Box<Period>,
9134}
9135#[derive(
9136    Clone,
9137    Reflect,
9138    Debug,
9139    Default,
9140    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
9141    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
9142)]
9143#[fhir_serialize_type = "complex"]
9144#[doc = "The class history permits the tracking of the encounters transitions without needing to go  through the resource history.  This would be used for a case where an admission starts of as an emergency encounter, then transitions into an inpatient scenario. Doing this and not restarting a new encounter ensures that any lab/diagnostic results can more easily follow the patient and not require re-processing and not get lost or cancelled during a kind of discharge from emergency to inpatient."]
9145pub struct EncounterClassHistory {
9146    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
9147    pub id: Option<String>,
9148    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
9149    pub extension: Option<Vec<Box<Extension>>>,
9150    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
9151    pub modifierExtension: Option<Vec<Box<Extension>>>,
9152    #[doc = "inpatient | outpatient | ambulatory | emergency +."]
9153    pub class: Box<Coding>,
9154    #[doc = "The time that the episode was in the specified class."]
9155    pub period: Box<Period>,
9156}
9157#[derive(
9158    Clone,
9159    Reflect,
9160    Debug,
9161    Default,
9162    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
9163    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
9164)]
9165#[fhir_serialize_type = "complex"]
9166#[doc = "The list of people responsible for providing the service."]
9167pub struct EncounterParticipant {
9168    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
9169    pub id: Option<String>,
9170    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
9171    pub extension: Option<Vec<Box<Extension>>>,
9172    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
9173    pub modifierExtension: Option<Vec<Box<Extension>>>,
9174    #[rename_field = "type"]
9175    #[doc = "Role of participant in encounter."]
9176    pub type_: Option<Vec<Box<CodeableConcept>>>,
9177    #[doc = "The period of time that the specified participant participated in the encounter. These can overlap or be sub-sets of the overall encounter's period."]
9178    pub period: Option<Box<Period>>,
9179    # [reference (targets = ["Practitioner" , "PractitionerRole" , "RelatedPerson"])]
9180    #[doc = "Persons involved in the encounter other than the patient."]
9181    pub individual: Option<Box<Reference>>,
9182}
9183#[derive(
9184    Clone,
9185    Reflect,
9186    Debug,
9187    Default,
9188    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
9189    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
9190)]
9191#[fhir_serialize_type = "complex"]
9192#[doc = "The list of diagnosis relevant to this encounter."]
9193pub struct EncounterDiagnosis {
9194    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
9195    pub id: Option<String>,
9196    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
9197    pub extension: Option<Vec<Box<Extension>>>,
9198    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
9199    pub modifierExtension: Option<Vec<Box<Extension>>>,
9200    # [reference (targets = ["Condition" , "Procedure"])]
9201    #[doc = "Reason the encounter takes place, as specified using information from another resource. For admissions, this is the admission diagnosis. The indication will typically be a Condition (with other resources referenced in the evidence.detail), or a Procedure."]
9202    pub condition: Box<Reference>,
9203    #[rename_field = "use"]
9204    #[doc = "Role that this diagnosis has within the encounter (e.g. admission, billing, discharge …)."]
9205    pub use_: Option<Box<CodeableConcept>>,
9206    #[primitive]
9207    #[doc = "Ranking of the diagnosis (for each role type)."]
9208    pub rank: Option<Box<FHIRPositiveInt>>,
9209}
9210#[derive(
9211    Clone,
9212    Reflect,
9213    Debug,
9214    Default,
9215    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
9216    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
9217)]
9218#[fhir_serialize_type = "complex"]
9219#[doc = "Details about the admission to a healthcare service."]
9220pub struct EncounterHospitalization {
9221    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
9222    pub id: Option<String>,
9223    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
9224    pub extension: Option<Vec<Box<Extension>>>,
9225    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
9226    pub modifierExtension: Option<Vec<Box<Extension>>>,
9227    #[doc = "Pre-admission identifier."]
9228    pub preAdmissionIdentifier: Option<Box<Identifier>>,
9229    # [reference (targets = ["Location" , "Organization"])]
9230    #[doc = "The location/organization from which the patient came before admission."]
9231    pub origin: Option<Box<Reference>>,
9232    #[doc = "From where patient was admitted (physician referral, transfer)."]
9233    pub admitSource: Option<Box<CodeableConcept>>,
9234    #[doc = "Whether this hospitalization is a readmission and why if known."]
9235    pub reAdmission: Option<Box<CodeableConcept>>,
9236    #[doc = "Diet preferences reported by the patient."]
9237    pub dietPreference: Option<Vec<Box<CodeableConcept>>>,
9238    #[doc = "Special courtesies (VIP, board member)."]
9239    pub specialCourtesy: Option<Vec<Box<CodeableConcept>>>,
9240    #[doc = "Any special requests that have been made for this hospitalization encounter, such as the provision of specific equipment or other things."]
9241    pub specialArrangement: Option<Vec<Box<CodeableConcept>>>,
9242    # [reference (targets = ["Location" , "Organization"])]
9243    #[doc = "Location/organization to which the patient is discharged."]
9244    pub destination: Option<Box<Reference>>,
9245    #[doc = "Category or kind of location after discharge."]
9246    pub dischargeDisposition: Option<Box<CodeableConcept>>,
9247}
9248#[derive(
9249    Clone,
9250    Reflect,
9251    Debug,
9252    Default,
9253    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
9254    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
9255)]
9256#[fhir_serialize_type = "complex"]
9257#[doc = "List of locations where  the patient has been during this encounter."]
9258pub struct EncounterLocation {
9259    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
9260    pub id: Option<String>,
9261    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
9262    pub extension: Option<Vec<Box<Extension>>>,
9263    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
9264    pub modifierExtension: Option<Vec<Box<Extension>>>,
9265    # [reference (targets = ["Location"])]
9266    #[doc = "The location where the encounter takes place."]
9267    pub location: Box<Reference>,
9268    #[primitive]
9269    #[doc = "The status of the participants' presence at the specified location during the period specified. If the participant is no longer at the location, then the period will have an end date/time."]
9270    pub status: Option<Box<terminology::EncounterLocationStatus>>,
9271    #[doc = "This will be used to specify the required levels (bed/ward/room/etc.) desired to be recorded to simplify either messaging or query."]
9272    pub physicalType: Option<Box<CodeableConcept>>,
9273    #[doc = "Time period during which the patient was present at the location."]
9274    pub period: Option<Box<Period>>,
9275}
9276#[derive(
9277    Clone,
9278    Reflect,
9279    Debug,
9280    Default,
9281    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
9282    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
9283)]
9284#[fhir_serialize_type = "resource"]
9285#[doc = "An interaction between a patient and healthcare provider(s) for the purpose of providing healthcare service(s) or assessing the health status of a patient."]
9286pub struct Encounter {
9287    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
9288    pub id: Option<String>,
9289    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
9290    pub meta: Option<Box<Meta>>,
9291    #[primitive]
9292    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
9293    pub implicitRules: Option<Box<FHIRUri>>,
9294    #[primitive]
9295    #[doc = "The base language in which the resource is written."]
9296    pub language: Option<Box<FHIRCode>>,
9297    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
9298    pub text: Option<Box<Narrative>>,
9299    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
9300    pub contained: Option<Vec<Box<Resource>>>,
9301    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
9302    pub extension: Option<Vec<Box<Extension>>>,
9303    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
9304    pub modifierExtension: Option<Vec<Box<Extension>>>,
9305    #[rename_field = "identifier"]
9306    #[doc = "Identifier(s) by which this encounter is known."]
9307    pub identifier_: Option<Vec<Box<Identifier>>>,
9308    #[primitive]
9309    #[doc = "planned | arrived | triaged | in-progress | onleave | finished | cancelled +."]
9310    pub status: Box<terminology::EncounterStatus>,
9311    #[doc = "The status history permits the encounter resource to contain the status history without needing to read through the historical versions of the resource, or even have the server store them."]
9312    pub statusHistory: Option<Vec<EncounterStatusHistory>>,
9313    #[doc = "Concepts representing classification of patient encounter such as ambulatory (outpatient), inpatient, emergency, home health or others due to local variations."]
9314    pub class: Box<Coding>,
9315    #[doc = "The class history permits the tracking of the encounters transitions without needing to go  through the resource history.  This would be used for a case where an admission starts of as an emergency encounter, then transitions into an inpatient scenario. Doing this and not restarting a new encounter ensures that any lab/diagnostic results can more easily follow the patient and not require re-processing and not get lost or cancelled during a kind of discharge from emergency to inpatient."]
9316    pub classHistory: Option<Vec<EncounterClassHistory>>,
9317    #[rename_field = "type"]
9318    #[doc = "Specific type of encounter (e.g. e-mail consultation, surgical day-care, skilled nursing, rehabilitation)."]
9319    pub type_: Option<Vec<Box<CodeableConcept>>>,
9320    #[doc = "Broad categorization of the service that is to be provided (e.g. cardiology)."]
9321    pub serviceType: Option<Box<CodeableConcept>>,
9322    #[doc = "Indicates the urgency of the encounter."]
9323    pub priority: Option<Box<CodeableConcept>>,
9324    # [reference (targets = ["Patient" , "Group"])]
9325    #[doc = "The patient or group present at the encounter."]
9326    pub subject: Option<Box<Reference>>,
9327    # [reference (targets = ["EpisodeOfCare"])]
9328    #[doc = "Where a specific encounter should be classified as a part of a specific episode(s) of care this field should be used. This association can facilitate grouping of related encounters together for a specific purpose, such as government reporting, issue tracking, association via a common problem.  The association is recorded on the encounter as these are typically created after the episode of care and grouped on entry rather than editing the episode of care to append another encounter to it (the episode of care could span years)."]
9329    pub episodeOfCare: Option<Vec<Box<Reference>>>,
9330    # [reference (targets = ["ServiceRequest"])]
9331    #[doc = "The request this encounter satisfies (e.g. incoming referral or procedure request)."]
9332    pub basedOn: Option<Vec<Box<Reference>>>,
9333    #[doc = "The list of people responsible for providing the service."]
9334    pub participant: Option<Vec<EncounterParticipant>>,
9335    # [reference (targets = ["Appointment"])]
9336    #[doc = "The appointment that scheduled this encounter."]
9337    pub appointment: Option<Vec<Box<Reference>>>,
9338    #[doc = "The start and end time of the encounter."]
9339    pub period: Option<Box<Period>>,
9340    #[doc = "Quantity of time the encounter lasted. This excludes the time during leaves of absence."]
9341    pub length: Option<Box<Duration>>,
9342    #[doc = "Reason the encounter takes place, expressed as a code. For admissions, this can be used for a coded admission diagnosis."]
9343    pub reasonCode: Option<Vec<Box<CodeableConcept>>>,
9344    # [reference (targets = ["Condition" , "Procedure" , "Observation" , "ImmunizationRecommendation"])]
9345    #[doc = "Reason the encounter takes place, expressed as a code. For admissions, this can be used for a coded admission diagnosis."]
9346    pub reasonReference: Option<Vec<Box<Reference>>>,
9347    #[doc = "The list of diagnosis relevant to this encounter."]
9348    pub diagnosis: Option<Vec<EncounterDiagnosis>>,
9349    # [reference (targets = ["Account"])]
9350    #[doc = "The set of accounts that may be used for billing for this Encounter."]
9351    pub account: Option<Vec<Box<Reference>>>,
9352    #[doc = "Details about the admission to a healthcare service."]
9353    pub hospitalization: Option<EncounterHospitalization>,
9354    #[doc = "List of locations where  the patient has been during this encounter."]
9355    pub location: Option<Vec<EncounterLocation>>,
9356    # [reference (targets = ["Organization"])]
9357    #[doc = "The organization that is primarily responsible for this Encounter's services. This MAY be the same as the organization on the Patient record, however it could be different, such as if the actor performing the services was from an external organization (which may be billed seperately) for an external consultation.  Refer to the example bundle showing an abbreviated set of Encounters for a colonoscopy."]
9358    pub serviceProvider: Option<Box<Reference>>,
9359    # [reference (targets = ["Encounter"])]
9360    #[doc = "Another Encounter of which this encounter is a part of (administratively or in time)."]
9361    pub partOf: Option<Box<Reference>>,
9362}
9363#[derive(
9364    Clone,
9365    Reflect,
9366    Debug,
9367    Default,
9368    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
9369    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
9370)]
9371#[fhir_serialize_type = "resource"]
9372#[doc = "The technical details of an endpoint that can be used for electronic services, such as for web services providing XDS.b or a REST endpoint for another FHIR server. This may include any security context information."]
9373pub struct Endpoint {
9374    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
9375    pub id: Option<String>,
9376    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
9377    pub meta: Option<Box<Meta>>,
9378    #[primitive]
9379    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
9380    pub implicitRules: Option<Box<FHIRUri>>,
9381    #[primitive]
9382    #[doc = "The base language in which the resource is written."]
9383    pub language: Option<Box<FHIRCode>>,
9384    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
9385    pub text: Option<Box<Narrative>>,
9386    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
9387    pub contained: Option<Vec<Box<Resource>>>,
9388    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
9389    pub extension: Option<Vec<Box<Extension>>>,
9390    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
9391    pub modifierExtension: Option<Vec<Box<Extension>>>,
9392    #[rename_field = "identifier"]
9393    #[doc = "Identifier for the organization that is used to identify the endpoint across multiple disparate systems."]
9394    pub identifier_: Option<Vec<Box<Identifier>>>,
9395    #[primitive]
9396    #[doc = "active | suspended | error | off | test."]
9397    pub status: Box<terminology::EndpointStatus>,
9398    #[doc = "A coded value that represents the technical details of the usage of this endpoint, such as what WSDLs should be used in what way. (e.g. XDS.b/DICOM/cds-hook)."]
9399    pub connectionType: Box<Coding>,
9400    #[primitive]
9401    #[doc = "A friendly name that this endpoint can be referred to with."]
9402    pub name: Option<Box<FHIRString>>,
9403    # [reference (targets = ["Organization"])]
9404    #[doc = "The organization that manages this endpoint (even if technically another organization is hosting this in the cloud, it is the organization associated with the data)."]
9405    pub managingOrganization: Option<Box<Reference>>,
9406    #[doc = "Contact details for a human to contact about the subscription. The primary use of this for system administrator troubleshooting."]
9407    pub contact: Option<Vec<Box<ContactPoint>>>,
9408    #[doc = "The interval during which the endpoint is expected to be operational."]
9409    pub period: Option<Box<Period>>,
9410    #[cardinality(min = 1usize)]
9411    #[doc = "The payload type describes the acceptable content that can be communicated on the endpoint."]
9412    pub payloadType: Vec<Box<CodeableConcept>>,
9413    #[primitive]
9414    #[doc = "The mime type to send the payload in - e.g. application/fhir+xml, application/fhir+json. If the mime type is not specified, then the sender could send any content (including no content depending on the connectionType)."]
9415    pub payloadMimeType: Option<Vec<Box<FHIRCode>>>,
9416    #[primitive]
9417    #[doc = "The uri that describes the actual end-point to connect to."]
9418    pub address: Box<FHIRUrl>,
9419    #[primitive]
9420    #[doc = "Additional headers / information to send as part of the notification."]
9421    pub header: Option<Vec<Box<FHIRString>>>,
9422}
9423#[derive(
9424    Clone,
9425    Reflect,
9426    Debug,
9427    Default,
9428    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
9429    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
9430)]
9431#[fhir_serialize_type = "resource"]
9432#[doc = "This resource provides the insurance enrollment details to the insurer regarding a specified coverage."]
9433pub struct EnrollmentRequest {
9434    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
9435    pub id: Option<String>,
9436    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
9437    pub meta: Option<Box<Meta>>,
9438    #[primitive]
9439    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
9440    pub implicitRules: Option<Box<FHIRUri>>,
9441    #[primitive]
9442    #[doc = "The base language in which the resource is written."]
9443    pub language: Option<Box<FHIRCode>>,
9444    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
9445    pub text: Option<Box<Narrative>>,
9446    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
9447    pub contained: Option<Vec<Box<Resource>>>,
9448    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
9449    pub extension: Option<Vec<Box<Extension>>>,
9450    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
9451    pub modifierExtension: Option<Vec<Box<Extension>>>,
9452    #[rename_field = "identifier"]
9453    #[doc = "The Response business identifier."]
9454    pub identifier_: Option<Vec<Box<Identifier>>>,
9455    #[primitive]
9456    #[doc = "The status of the resource instance."]
9457    pub status: Option<Box<terminology::FmStatus>>,
9458    #[primitive]
9459    #[doc = "The date when this resource was created."]
9460    pub created: Option<Box<FHIRDateTime>>,
9461    # [reference (targets = ["Organization"])]
9462    #[doc = "The Insurer who is target  of the request."]
9463    pub insurer: Option<Box<Reference>>,
9464    # [reference (targets = ["Practitioner" , "PractitionerRole" , "Organization"])]
9465    #[doc = "The practitioner who is responsible for the services rendered to the patient."]
9466    pub provider: Option<Box<Reference>>,
9467    # [reference (targets = ["Patient"])]
9468    #[doc = "Patient Resource."]
9469    pub candidate: Option<Box<Reference>>,
9470    # [reference (targets = ["Coverage"])]
9471    #[doc = "Reference to the program or plan identification, underwriter or payor."]
9472    pub coverage: Option<Box<Reference>>,
9473}
9474#[derive(
9475    Clone,
9476    Reflect,
9477    Debug,
9478    Default,
9479    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
9480    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
9481)]
9482#[fhir_serialize_type = "resource"]
9483#[doc = "This resource provides enrollment and plan details from the processing of an EnrollmentRequest resource."]
9484pub struct EnrollmentResponse {
9485    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
9486    pub id: Option<String>,
9487    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
9488    pub meta: Option<Box<Meta>>,
9489    #[primitive]
9490    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
9491    pub implicitRules: Option<Box<FHIRUri>>,
9492    #[primitive]
9493    #[doc = "The base language in which the resource is written."]
9494    pub language: Option<Box<FHIRCode>>,
9495    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
9496    pub text: Option<Box<Narrative>>,
9497    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
9498    pub contained: Option<Vec<Box<Resource>>>,
9499    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
9500    pub extension: Option<Vec<Box<Extension>>>,
9501    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
9502    pub modifierExtension: Option<Vec<Box<Extension>>>,
9503    #[rename_field = "identifier"]
9504    #[doc = "The Response business identifier."]
9505    pub identifier_: Option<Vec<Box<Identifier>>>,
9506    #[primitive]
9507    #[doc = "The status of the resource instance."]
9508    pub status: Option<Box<terminology::FmStatus>>,
9509    # [reference (targets = ["EnrollmentRequest"])]
9510    #[doc = "Original request resource reference."]
9511    pub request: Option<Box<Reference>>,
9512    #[primitive]
9513    #[doc = "Processing status: error, complete."]
9514    pub outcome: Option<Box<terminology::RemittanceOutcome>>,
9515    #[primitive]
9516    #[doc = "A description of the status of the adjudication."]
9517    pub disposition: Option<Box<FHIRString>>,
9518    #[primitive]
9519    #[doc = "The date when the enclosed suite of services were performed or completed."]
9520    pub created: Option<Box<FHIRDateTime>>,
9521    # [reference (targets = ["Organization"])]
9522    #[doc = "The Insurer who produced this adjudicated response."]
9523    pub organization: Option<Box<Reference>>,
9524    # [reference (targets = ["Practitioner" , "PractitionerRole" , "Organization"])]
9525    #[doc = "The practitioner who is responsible for the services rendered to the patient."]
9526    pub requestProvider: Option<Box<Reference>>,
9527}
9528#[derive(
9529    Clone,
9530    Reflect,
9531    Debug,
9532    Default,
9533    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
9534    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
9535)]
9536#[fhir_serialize_type = "complex"]
9537#[doc = "The history of statuses that the EpisodeOfCare has been through (without requiring processing the history of the resource)."]
9538pub struct EpisodeOfCareStatusHistory {
9539    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
9540    pub id: Option<String>,
9541    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
9542    pub extension: Option<Vec<Box<Extension>>>,
9543    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
9544    pub modifierExtension: Option<Vec<Box<Extension>>>,
9545    #[primitive]
9546    #[doc = "planned | waitlist | active | onhold | finished | cancelled."]
9547    pub status: Box<terminology::EpisodeOfCareStatus>,
9548    #[doc = "The period during this EpisodeOfCare that the specific status applied."]
9549    pub period: Box<Period>,
9550}
9551#[derive(
9552    Clone,
9553    Reflect,
9554    Debug,
9555    Default,
9556    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
9557    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
9558)]
9559#[fhir_serialize_type = "complex"]
9560#[doc = "The list of diagnosis relevant to this episode of care."]
9561pub struct EpisodeOfCareDiagnosis {
9562    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
9563    pub id: Option<String>,
9564    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
9565    pub extension: Option<Vec<Box<Extension>>>,
9566    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
9567    pub modifierExtension: Option<Vec<Box<Extension>>>,
9568    # [reference (targets = ["Condition"])]
9569    #[doc = "A list of conditions/problems/diagnoses that this episode of care is intended to be providing care for."]
9570    pub condition: Box<Reference>,
9571    #[doc = "Role that this diagnosis has within the episode of care (e.g. admission, billing, discharge …)."]
9572    pub role: Option<Box<CodeableConcept>>,
9573    #[primitive]
9574    #[doc = "Ranking of the diagnosis (for each role type)."]
9575    pub rank: Option<Box<FHIRPositiveInt>>,
9576}
9577#[derive(
9578    Clone,
9579    Reflect,
9580    Debug,
9581    Default,
9582    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
9583    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
9584)]
9585#[fhir_serialize_type = "resource"]
9586#[doc = "An association between a patient and an organization / healthcare provider(s) during which time encounters may occur. The managing organization assumes a level of responsibility for the patient during this time."]
9587pub struct EpisodeOfCare {
9588    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
9589    pub id: Option<String>,
9590    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
9591    pub meta: Option<Box<Meta>>,
9592    #[primitive]
9593    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
9594    pub implicitRules: Option<Box<FHIRUri>>,
9595    #[primitive]
9596    #[doc = "The base language in which the resource is written."]
9597    pub language: Option<Box<FHIRCode>>,
9598    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
9599    pub text: Option<Box<Narrative>>,
9600    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
9601    pub contained: Option<Vec<Box<Resource>>>,
9602    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
9603    pub extension: Option<Vec<Box<Extension>>>,
9604    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
9605    pub modifierExtension: Option<Vec<Box<Extension>>>,
9606    #[rename_field = "identifier"]
9607    #[doc = "The EpisodeOfCare may be known by different identifiers for different contexts of use, such as when an external agency is tracking the Episode for funding purposes."]
9608    pub identifier_: Option<Vec<Box<Identifier>>>,
9609    #[primitive]
9610    #[doc = "planned | waitlist | active | onhold | finished | cancelled."]
9611    pub status: Box<terminology::EpisodeOfCareStatus>,
9612    #[doc = "The history of statuses that the EpisodeOfCare has been through (without requiring processing the history of the resource)."]
9613    pub statusHistory: Option<Vec<EpisodeOfCareStatusHistory>>,
9614    #[rename_field = "type"]
9615    #[doc = "A classification of the type of episode of care; e.g. specialist referral, disease management, type of funded care."]
9616    pub type_: Option<Vec<Box<CodeableConcept>>>,
9617    #[doc = "The list of diagnosis relevant to this episode of care."]
9618    pub diagnosis: Option<Vec<EpisodeOfCareDiagnosis>>,
9619    # [reference (targets = ["Patient"])]
9620    #[doc = "The patient who is the focus of this episode of care."]
9621    pub patient: Box<Reference>,
9622    # [reference (targets = ["Organization"])]
9623    #[doc = "The organization that has assumed the specific responsibilities for the specified duration."]
9624    pub managingOrganization: Option<Box<Reference>>,
9625    #[doc = "The interval during which the managing organization assumes the defined responsibility."]
9626    pub period: Option<Box<Period>>,
9627    # [reference (targets = ["ServiceRequest"])]
9628    #[doc = "Referral Request(s) that are fulfilled by this EpisodeOfCare, incoming referrals."]
9629    pub referralRequest: Option<Vec<Box<Reference>>>,
9630    # [reference (targets = ["Practitioner" , "PractitionerRole"])]
9631    #[doc = "The practitioner that is the care manager/care coordinator for this patient."]
9632    pub careManager: Option<Box<Reference>>,
9633    # [reference (targets = ["CareTeam"])]
9634    #[doc = "The list of practitioners that may be facilitating this episode of care for specific purposes."]
9635    pub team: Option<Vec<Box<Reference>>>,
9636    # [reference (targets = ["Account"])]
9637    #[doc = "The set of accounts that may be used for billing for this EpisodeOfCare."]
9638    pub account: Option<Vec<Box<Reference>>>,
9639}
9640#[derive(
9641    Clone,
9642    Reflect,
9643    Debug,
9644    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
9645    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
9646)]
9647#[fhir_serialize_type = "typechoice"]
9648#[type_choice_field_name = "subject"]
9649pub enum EventDefinitionSubjectTypeChoice {
9650    CodeableConcept(Box<CodeableConcept>),
9651    # [reference (targets = ["Group"])]
9652    Reference(Box<Reference>),
9653}
9654impl Default for EventDefinitionSubjectTypeChoice {
9655    fn default() -> Self {
9656        EventDefinitionSubjectTypeChoice::CodeableConcept(Box::new(Default::default()))
9657    }
9658}
9659#[derive(
9660    Clone,
9661    Reflect,
9662    Debug,
9663    Default,
9664    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
9665    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
9666)]
9667#[fhir_serialize_type = "resource"]
9668#[doc = "The EventDefinition resource provides a reusable description of when a particular event can occur."]
9669pub struct EventDefinition {
9670    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
9671    pub id: Option<String>,
9672    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
9673    pub meta: Option<Box<Meta>>,
9674    #[primitive]
9675    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
9676    pub implicitRules: Option<Box<FHIRUri>>,
9677    #[primitive]
9678    #[doc = "The base language in which the resource is written."]
9679    pub language: Option<Box<FHIRCode>>,
9680    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
9681    pub text: Option<Box<Narrative>>,
9682    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
9683    pub contained: Option<Vec<Box<Resource>>>,
9684    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
9685    pub extension: Option<Vec<Box<Extension>>>,
9686    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
9687    pub modifierExtension: Option<Vec<Box<Extension>>>,
9688    #[primitive]
9689    #[doc = "An absolute URI that is used to identify this event definition when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this event definition is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the event definition is stored on different servers."]
9690    pub url: Option<Box<FHIRUri>>,
9691    #[rename_field = "identifier"]
9692    #[doc = "A formal identifier that is used to identify this event definition when it is represented in other formats, or referenced in a specification, model, design or an instance."]
9693    pub identifier_: Option<Vec<Box<Identifier>>>,
9694    #[primitive]
9695    #[doc = "The identifier that is used to identify this version of the event definition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the event definition author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence."]
9696    pub version: Option<Box<FHIRString>>,
9697    #[primitive]
9698    #[doc = "A natural language name identifying the event definition. This name should be usable as an identifier for the module by machine processing applications such as code generation."]
9699    pub name: Option<Box<FHIRString>>,
9700    #[primitive]
9701    #[doc = "A short, descriptive, user-friendly title for the event definition."]
9702    pub title: Option<Box<FHIRString>>,
9703    #[primitive]
9704    #[doc = "An explanatory or alternate title for the event definition giving additional information about its content."]
9705    pub subtitle: Option<Box<FHIRString>>,
9706    #[primitive]
9707    #[doc = "The status of this event definition. Enables tracking the life-cycle of the content."]
9708    pub status: Box<terminology::PublicationStatus>,
9709    #[primitive]
9710    #[doc = "A Boolean value to indicate that this event definition is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage."]
9711    pub experimental: Option<Box<FHIRBoolean>>,
9712    # [type_choice_variants (complex = ["subjectCodeableConcept" , "subjectReference"] , primitive = [])]
9713    #[doc = "A code or group definition that describes the intended subject of the event definition."]
9714    pub subject: Option<EventDefinitionSubjectTypeChoice>,
9715    #[primitive]
9716    #[doc = "The date  (and optionally time) when the event definition was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the event definition changes."]
9717    pub date: Option<Box<FHIRDateTime>>,
9718    #[primitive]
9719    #[doc = "The name of the organization or individual that published the event definition."]
9720    pub publisher: Option<Box<FHIRString>>,
9721    #[doc = "Contact details to assist a user in finding and communicating with the publisher."]
9722    pub contact: Option<Vec<Box<ContactDetail>>>,
9723    #[primitive]
9724    #[doc = "A free text natural language description of the event definition from a consumer's perspective."]
9725    pub description: Option<Box<FHIRMarkdown>>,
9726    #[doc = "The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate event definition instances."]
9727    pub useContext: Option<Vec<Box<UsageContext>>>,
9728    #[doc = "A legal or geographic region in which the event definition is intended to be used."]
9729    pub jurisdiction: Option<Vec<Box<CodeableConcept>>>,
9730    #[primitive]
9731    #[doc = "Explanation of why this event definition is needed and why it has been designed as it has."]
9732    pub purpose: Option<Box<FHIRMarkdown>>,
9733    #[primitive]
9734    #[doc = "A detailed description of how the event definition is used from a clinical perspective."]
9735    pub usage: Option<Box<FHIRString>>,
9736    #[primitive]
9737    #[doc = "A copyright statement relating to the event definition and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the event definition."]
9738    pub copyright: Option<Box<FHIRMarkdown>>,
9739    #[primitive]
9740    #[doc = "The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage."]
9741    pub approvalDate: Option<Box<FHIRDate>>,
9742    #[primitive]
9743    #[doc = "The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date."]
9744    pub lastReviewDate: Option<Box<FHIRDate>>,
9745    #[doc = "The period during which the event definition content was or is planned to be in active use."]
9746    pub effectivePeriod: Option<Box<Period>>,
9747    #[doc = "Descriptive topics related to the module. Topics provide a high-level categorization of the module that can be useful for filtering and searching."]
9748    pub topic: Option<Vec<Box<CodeableConcept>>>,
9749    #[doc = "An individiual or organization primarily involved in the creation and maintenance of the content."]
9750    pub author: Option<Vec<Box<ContactDetail>>>,
9751    #[doc = "An individual or organization primarily responsible for internal coherence of the content."]
9752    pub editor: Option<Vec<Box<ContactDetail>>>,
9753    #[doc = "An individual or organization primarily responsible for review of some aspect of the content."]
9754    pub reviewer: Option<Vec<Box<ContactDetail>>>,
9755    #[doc = "An individual or organization responsible for officially endorsing the content for use in some setting."]
9756    pub endorser: Option<Vec<Box<ContactDetail>>>,
9757    #[doc = "Related resources such as additional documentation, justification, or bibliographic references."]
9758    pub relatedArtifact: Option<Vec<Box<RelatedArtifact>>>,
9759    #[cardinality(min = 1usize)]
9760    #[doc = "The trigger element defines when the event occurs. If more than one trigger condition is specified, the event fires whenever any one of the trigger conditions is met."]
9761    pub trigger: Vec<Box<TriggerDefinition>>,
9762}
9763#[derive(
9764    Clone,
9765    Reflect,
9766    Debug,
9767    Default,
9768    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
9769    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
9770)]
9771#[fhir_serialize_type = "resource"]
9772#[doc = "The Evidence resource describes the conditional state (population and any exposures being compared within the population) and outcome (if specified) that the knowledge (evidence, assertion, recommendation) is about."]
9773pub struct Evidence {
9774    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
9775    pub id: Option<String>,
9776    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
9777    pub meta: Option<Box<Meta>>,
9778    #[primitive]
9779    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
9780    pub implicitRules: Option<Box<FHIRUri>>,
9781    #[primitive]
9782    #[doc = "The base language in which the resource is written."]
9783    pub language: Option<Box<FHIRCode>>,
9784    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
9785    pub text: Option<Box<Narrative>>,
9786    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
9787    pub contained: Option<Vec<Box<Resource>>>,
9788    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
9789    pub extension: Option<Vec<Box<Extension>>>,
9790    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
9791    pub modifierExtension: Option<Vec<Box<Extension>>>,
9792    #[primitive]
9793    #[doc = "An absolute URI that is used to identify this evidence when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this evidence is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the evidence is stored on different servers."]
9794    pub url: Option<Box<FHIRUri>>,
9795    #[rename_field = "identifier"]
9796    #[doc = "A formal identifier that is used to identify this evidence when it is represented in other formats, or referenced in a specification, model, design or an instance."]
9797    pub identifier_: Option<Vec<Box<Identifier>>>,
9798    #[primitive]
9799    #[doc = "The identifier that is used to identify this version of the evidence when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the evidence author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence. To provide a version consistent with the Decision Support Service specification, use the format Major.Minor.Revision (e.g. 1.0.0). For more information on versioning knowledge assets, refer to the Decision Support Service specification. Note that a version is required for non-experimental active artifacts."]
9800    pub version: Option<Box<FHIRString>>,
9801    #[primitive]
9802    #[doc = "A natural language name identifying the evidence. This name should be usable as an identifier for the module by machine processing applications such as code generation."]
9803    pub name: Option<Box<FHIRString>>,
9804    #[primitive]
9805    #[doc = "A short, descriptive, user-friendly title for the evidence."]
9806    pub title: Option<Box<FHIRString>>,
9807    #[primitive]
9808    #[doc = "The short title provides an alternate title for use in informal descriptive contexts where the full, formal title is not necessary."]
9809    pub shortTitle: Option<Box<FHIRString>>,
9810    #[primitive]
9811    #[doc = "An explanatory or alternate title for the Evidence giving additional information about its content."]
9812    pub subtitle: Option<Box<FHIRString>>,
9813    #[primitive]
9814    #[doc = "The status of this evidence. Enables tracking the life-cycle of the content."]
9815    pub status: Box<terminology::PublicationStatus>,
9816    #[primitive]
9817    #[doc = "The date  (and optionally time) when the evidence was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the evidence changes."]
9818    pub date: Option<Box<FHIRDateTime>>,
9819    #[primitive]
9820    #[doc = "The name of the organization or individual that published the evidence."]
9821    pub publisher: Option<Box<FHIRString>>,
9822    #[doc = "Contact details to assist a user in finding and communicating with the publisher."]
9823    pub contact: Option<Vec<Box<ContactDetail>>>,
9824    #[primitive]
9825    #[doc = "A free text natural language description of the evidence from a consumer's perspective."]
9826    pub description: Option<Box<FHIRMarkdown>>,
9827    #[doc = "A human-readable string to clarify or explain concepts about the resource."]
9828    pub note: Option<Vec<Box<Annotation>>>,
9829    #[doc = "The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate evidence instances."]
9830    pub useContext: Option<Vec<Box<UsageContext>>>,
9831    #[doc = "A legal or geographic region in which the evidence is intended to be used."]
9832    pub jurisdiction: Option<Vec<Box<CodeableConcept>>>,
9833    #[primitive]
9834    #[doc = "A copyright statement relating to the evidence and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the evidence."]
9835    pub copyright: Option<Box<FHIRMarkdown>>,
9836    #[primitive]
9837    #[doc = "The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage."]
9838    pub approvalDate: Option<Box<FHIRDate>>,
9839    #[primitive]
9840    #[doc = "The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date."]
9841    pub lastReviewDate: Option<Box<FHIRDate>>,
9842    #[doc = "The period during which the evidence content was or is planned to be in active use."]
9843    pub effectivePeriod: Option<Box<Period>>,
9844    #[doc = "Descriptive topics related to the content of the Evidence. Topics provide a high-level categorization grouping types of Evidences that can be useful for filtering and searching."]
9845    pub topic: Option<Vec<Box<CodeableConcept>>>,
9846    #[doc = "An individiual or organization primarily involved in the creation and maintenance of the content."]
9847    pub author: Option<Vec<Box<ContactDetail>>>,
9848    #[doc = "An individual or organization primarily responsible for internal coherence of the content."]
9849    pub editor: Option<Vec<Box<ContactDetail>>>,
9850    #[doc = "An individual or organization primarily responsible for review of some aspect of the content."]
9851    pub reviewer: Option<Vec<Box<ContactDetail>>>,
9852    #[doc = "An individual or organization responsible for officially endorsing the content for use in some setting."]
9853    pub endorser: Option<Vec<Box<ContactDetail>>>,
9854    #[doc = "Related artifacts such as additional documentation, justification, or bibliographic references."]
9855    pub relatedArtifact: Option<Vec<Box<RelatedArtifact>>>,
9856    # [reference (targets = ["EvidenceVariable"])]
9857    #[doc = "A reference to a EvidenceVariable resource that defines the population for the research."]
9858    pub exposureBackground: Box<Reference>,
9859    # [reference (targets = ["EvidenceVariable"])]
9860    #[doc = "A reference to a EvidenceVariable resource that defines the exposure for the research."]
9861    pub exposureVariant: Option<Vec<Box<Reference>>>,
9862    # [reference (targets = ["EvidenceVariable"])]
9863    #[doc = "A reference to a EvidenceVariable resomece that defines the outcome for the research."]
9864    pub outcome: Option<Vec<Box<Reference>>>,
9865}
9866#[derive(
9867    Clone,
9868    Reflect,
9869    Debug,
9870    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
9871    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
9872)]
9873#[fhir_serialize_type = "typechoice"]
9874#[type_choice_field_name = "definition"]
9875pub enum EvidenceVariableCharacteristicDefinitionTypeChoice {
9876    # [reference (targets = ["Group"])]
9877    Reference(Box<Reference>),
9878    Canonical(Box<FHIRCanonical>),
9879    CodeableConcept(Box<CodeableConcept>),
9880    Expression(Box<Expression>),
9881    DataRequirement(Box<DataRequirement>),
9882    TriggerDefinition(Box<TriggerDefinition>),
9883}
9884impl Default for EvidenceVariableCharacteristicDefinitionTypeChoice {
9885    fn default() -> Self {
9886        EvidenceVariableCharacteristicDefinitionTypeChoice::Reference(Box::new(Default::default()))
9887    }
9888}
9889#[derive(
9890    Clone,
9891    Reflect,
9892    Debug,
9893    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
9894    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
9895)]
9896#[fhir_serialize_type = "typechoice"]
9897#[type_choice_field_name = "participantEffective"]
9898pub enum EvidenceVariableCharacteristicParticipantEffectiveTypeChoice {
9899    DateTime(Box<FHIRDateTime>),
9900    Period(Box<Period>),
9901    Duration(Box<Duration>),
9902    Timing(Box<Timing>),
9903}
9904impl Default for EvidenceVariableCharacteristicParticipantEffectiveTypeChoice {
9905    fn default() -> Self {
9906        EvidenceVariableCharacteristicParticipantEffectiveTypeChoice::DateTime(Box::new(
9907            Default::default(),
9908        ))
9909    }
9910}
9911#[derive(
9912    Clone,
9913    Reflect,
9914    Debug,
9915    Default,
9916    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
9917    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
9918)]
9919#[fhir_serialize_type = "complex"]
9920#[doc = "A characteristic that defines the members of the evidence element. Multiple characteristics are applied with \"and\" semantics."]
9921pub struct EvidenceVariableCharacteristic {
9922    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
9923    pub id: Option<String>,
9924    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
9925    pub extension: Option<Vec<Box<Extension>>>,
9926    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
9927    pub modifierExtension: Option<Vec<Box<Extension>>>,
9928    #[primitive]
9929    #[doc = "A short, natural language description of the characteristic that could be used to communicate the criteria to an end-user."]
9930    pub description: Option<Box<FHIRString>>,
9931    # [type_choice_variants (complex = ["definitionReference" , "definitionCodeableConcept" , "definitionExpression" , "definitionDataRequirement" , "definitionTriggerDefinition"] , primitive = ["definitionCanonical"])]
9932    #[doc = "Define members of the evidence element using Codes (such as condition, medication, or observation), Expressions ( using an expression language such as FHIRPath or CQL) or DataRequirements (such as Diabetes diagnosis onset in the last year)."]
9933    pub definition: EvidenceVariableCharacteristicDefinitionTypeChoice,
9934    #[doc = "Use UsageContext to define the members of the population, such as Age Ranges, Genders, Settings."]
9935    pub usageContext: Option<Vec<Box<UsageContext>>>,
9936    #[primitive]
9937    #[doc = "When true, members with this characteristic are excluded from the element."]
9938    pub exclude: Option<Box<FHIRBoolean>>,
9939    # [type_choice_variants (complex = ["participantEffectivePeriod" , "participantEffectiveDuration" , "participantEffectiveTiming"] , primitive = ["participantEffectiveDateTime"])]
9940    #[doc = "Indicates what effective period the study covers."]
9941    pub participantEffective: Option<EvidenceVariableCharacteristicParticipantEffectiveTypeChoice>,
9942    #[doc = "Indicates duration from the participant's study entry."]
9943    pub timeFromStart: Option<Box<Duration>>,
9944    #[primitive]
9945    #[doc = "Indicates how elements are aggregated within the study effective period."]
9946    pub groupMeasure: Option<Box<terminology::GroupMeasure>>,
9947}
9948#[derive(
9949    Clone,
9950    Reflect,
9951    Debug,
9952    Default,
9953    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
9954    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
9955)]
9956#[fhir_serialize_type = "resource"]
9957#[doc = "The EvidenceVariable resource describes a \"PICO\" element that knowledge (evidence, assertion, recommendation) is about."]
9958pub struct EvidenceVariable {
9959    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
9960    pub id: Option<String>,
9961    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
9962    pub meta: Option<Box<Meta>>,
9963    #[primitive]
9964    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
9965    pub implicitRules: Option<Box<FHIRUri>>,
9966    #[primitive]
9967    #[doc = "The base language in which the resource is written."]
9968    pub language: Option<Box<FHIRCode>>,
9969    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
9970    pub text: Option<Box<Narrative>>,
9971    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
9972    pub contained: Option<Vec<Box<Resource>>>,
9973    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
9974    pub extension: Option<Vec<Box<Extension>>>,
9975    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
9976    pub modifierExtension: Option<Vec<Box<Extension>>>,
9977    #[primitive]
9978    #[doc = "An absolute URI that is used to identify this evidence variable when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this evidence variable is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the evidence variable is stored on different servers."]
9979    pub url: Option<Box<FHIRUri>>,
9980    #[rename_field = "identifier"]
9981    #[doc = "A formal identifier that is used to identify this evidence variable when it is represented in other formats, or referenced in a specification, model, design or an instance."]
9982    pub identifier_: Option<Vec<Box<Identifier>>>,
9983    #[primitive]
9984    #[doc = "The identifier that is used to identify this version of the evidence variable when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the evidence variable author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence. To provide a version consistent with the Decision Support Service specification, use the format Major.Minor.Revision (e.g. 1.0.0). For more information on versioning knowledge assets, refer to the Decision Support Service specification. Note that a version is required for non-experimental active artifacts."]
9985    pub version: Option<Box<FHIRString>>,
9986    #[primitive]
9987    #[doc = "A natural language name identifying the evidence variable. This name should be usable as an identifier for the module by machine processing applications such as code generation."]
9988    pub name: Option<Box<FHIRString>>,
9989    #[primitive]
9990    #[doc = "A short, descriptive, user-friendly title for the evidence variable."]
9991    pub title: Option<Box<FHIRString>>,
9992    #[primitive]
9993    #[doc = "The short title provides an alternate title for use in informal descriptive contexts where the full, formal title is not necessary."]
9994    pub shortTitle: Option<Box<FHIRString>>,
9995    #[primitive]
9996    #[doc = "An explanatory or alternate title for the EvidenceVariable giving additional information about its content."]
9997    pub subtitle: Option<Box<FHIRString>>,
9998    #[primitive]
9999    #[doc = "The status of this evidence variable. Enables tracking the life-cycle of the content."]
10000    pub status: Box<terminology::PublicationStatus>,
10001    #[primitive]
10002    #[doc = "The date  (and optionally time) when the evidence variable was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the evidence variable changes."]
10003    pub date: Option<Box<FHIRDateTime>>,
10004    #[primitive]
10005    #[doc = "The name of the organization or individual that published the evidence variable."]
10006    pub publisher: Option<Box<FHIRString>>,
10007    #[doc = "Contact details to assist a user in finding and communicating with the publisher."]
10008    pub contact: Option<Vec<Box<ContactDetail>>>,
10009    #[primitive]
10010    #[doc = "A free text natural language description of the evidence variable from a consumer's perspective."]
10011    pub description: Option<Box<FHIRMarkdown>>,
10012    #[doc = "A human-readable string to clarify or explain concepts about the resource."]
10013    pub note: Option<Vec<Box<Annotation>>>,
10014    #[doc = "The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate evidence variable instances."]
10015    pub useContext: Option<Vec<Box<UsageContext>>>,
10016    #[doc = "A legal or geographic region in which the evidence variable is intended to be used."]
10017    pub jurisdiction: Option<Vec<Box<CodeableConcept>>>,
10018    #[primitive]
10019    #[doc = "A copyright statement relating to the evidence variable and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the evidence variable."]
10020    pub copyright: Option<Box<FHIRMarkdown>>,
10021    #[primitive]
10022    #[doc = "The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage."]
10023    pub approvalDate: Option<Box<FHIRDate>>,
10024    #[primitive]
10025    #[doc = "The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date."]
10026    pub lastReviewDate: Option<Box<FHIRDate>>,
10027    #[doc = "The period during which the evidence variable content was or is planned to be in active use."]
10028    pub effectivePeriod: Option<Box<Period>>,
10029    #[doc = "Descriptive topics related to the content of the EvidenceVariable. Topics provide a high-level categorization grouping types of EvidenceVariables that can be useful for filtering and searching."]
10030    pub topic: Option<Vec<Box<CodeableConcept>>>,
10031    #[doc = "An individiual or organization primarily involved in the creation and maintenance of the content."]
10032    pub author: Option<Vec<Box<ContactDetail>>>,
10033    #[doc = "An individual or organization primarily responsible for internal coherence of the content."]
10034    pub editor: Option<Vec<Box<ContactDetail>>>,
10035    #[doc = "An individual or organization primarily responsible for review of some aspect of the content."]
10036    pub reviewer: Option<Vec<Box<ContactDetail>>>,
10037    #[doc = "An individual or organization responsible for officially endorsing the content for use in some setting."]
10038    pub endorser: Option<Vec<Box<ContactDetail>>>,
10039    #[doc = "Related artifacts such as additional documentation, justification, or bibliographic references."]
10040    pub relatedArtifact: Option<Vec<Box<RelatedArtifact>>>,
10041    #[rename_field = "type"]
10042    #[primitive]
10043    #[doc = "The type of evidence element, a population, an exposure, or an outcome."]
10044    pub type_: Option<Box<terminology::VariableType>>,
10045    #[cardinality(min = 1usize)]
10046    #[doc = "A characteristic that defines the members of the evidence element. Multiple characteristics are applied with \"and\" semantics."]
10047    pub characteristic: Vec<EvidenceVariableCharacteristic>,
10048}
10049#[derive(
10050    Clone,
10051    Reflect,
10052    Debug,
10053    Default,
10054    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
10055    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
10056)]
10057#[fhir_serialize_type = "complex"]
10058#[doc = "Actor participating in the resource."]
10059pub struct ExampleScenarioActor {
10060    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
10061    pub id: Option<String>,
10062    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
10063    pub extension: Option<Vec<Box<Extension>>>,
10064    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
10065    pub modifierExtension: Option<Vec<Box<Extension>>>,
10066    #[primitive]
10067    #[doc = "ID or acronym of actor."]
10068    pub actorId: Box<FHIRString>,
10069    #[rename_field = "type"]
10070    #[primitive]
10071    #[doc = "The type of actor - person or system."]
10072    pub type_: Box<terminology::ExamplescenarioActorType>,
10073    #[primitive]
10074    #[doc = "The name of the actor as shown in the page."]
10075    pub name: Option<Box<FHIRString>>,
10076    #[primitive]
10077    #[doc = "The description of the actor."]
10078    pub description: Option<Box<FHIRMarkdown>>,
10079}
10080#[derive(
10081    Clone,
10082    Reflect,
10083    Debug,
10084    Default,
10085    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
10086    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
10087)]
10088#[fhir_serialize_type = "complex"]
10089#[doc = "A specific version of the resource."]
10090pub struct ExampleScenarioInstanceVersion {
10091    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
10092    pub id: Option<String>,
10093    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
10094    pub extension: Option<Vec<Box<Extension>>>,
10095    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
10096    pub modifierExtension: Option<Vec<Box<Extension>>>,
10097    #[primitive]
10098    #[doc = "The identifier of a specific version of a resource."]
10099    pub versionId: Box<FHIRString>,
10100    #[primitive]
10101    #[doc = "The description of the resource version."]
10102    pub description: Box<FHIRMarkdown>,
10103}
10104#[derive(
10105    Clone,
10106    Reflect,
10107    Debug,
10108    Default,
10109    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
10110    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
10111)]
10112#[fhir_serialize_type = "complex"]
10113#[doc = "Resources contained in the instance (e.g. the observations contained in a bundle)."]
10114pub struct ExampleScenarioInstanceContainedInstance {
10115    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
10116    pub id: Option<String>,
10117    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
10118    pub extension: Option<Vec<Box<Extension>>>,
10119    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
10120    pub modifierExtension: Option<Vec<Box<Extension>>>,
10121    #[primitive]
10122    #[doc = "Each resource contained in the instance."]
10123    pub resourceId: Box<FHIRString>,
10124    #[primitive]
10125    #[doc = "A specific version of a resource contained in the instance."]
10126    pub versionId: Option<Box<FHIRString>>,
10127}
10128#[derive(
10129    Clone,
10130    Reflect,
10131    Debug,
10132    Default,
10133    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
10134    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
10135)]
10136#[fhir_serialize_type = "complex"]
10137#[doc = "Each resource and each version that is present in the workflow."]
10138pub struct ExampleScenarioInstance {
10139    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
10140    pub id: Option<String>,
10141    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
10142    pub extension: Option<Vec<Box<Extension>>>,
10143    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
10144    pub modifierExtension: Option<Vec<Box<Extension>>>,
10145    #[primitive]
10146    #[doc = "The id of the resource for referencing."]
10147    pub resourceId: Box<FHIRString>,
10148    #[primitive]
10149    #[doc = "The type of the resource."]
10150    pub resourceType: Box<terminology::ResourceTypes>,
10151    #[primitive]
10152    #[doc = "A short name for the resource instance."]
10153    pub name: Option<Box<FHIRString>>,
10154    #[primitive]
10155    #[doc = "Human-friendly description of the resource instance."]
10156    pub description: Option<Box<FHIRMarkdown>>,
10157    #[doc = "A specific version of the resource."]
10158    pub version: Option<Vec<ExampleScenarioInstanceVersion>>,
10159    #[doc = "Resources contained in the instance (e.g. the observations contained in a bundle)."]
10160    pub containedInstance: Option<Vec<ExampleScenarioInstanceContainedInstance>>,
10161}
10162#[derive(
10163    Clone,
10164    Reflect,
10165    Debug,
10166    Default,
10167    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
10168    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
10169)]
10170#[fhir_serialize_type = "complex"]
10171#[doc = "Each interaction or action."]
10172pub struct ExampleScenarioProcessStepOperation {
10173    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
10174    pub id: Option<String>,
10175    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
10176    pub extension: Option<Vec<Box<Extension>>>,
10177    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
10178    pub modifierExtension: Option<Vec<Box<Extension>>>,
10179    #[primitive]
10180    #[doc = "The sequential number of the interaction, e.g. 1.2.5."]
10181    pub number: Box<FHIRString>,
10182    #[rename_field = "type"]
10183    #[primitive]
10184    #[doc = "The type of operation - CRUD."]
10185    pub type_: Option<Box<FHIRString>>,
10186    #[primitive]
10187    #[doc = "The human-friendly name of the interaction."]
10188    pub name: Option<Box<FHIRString>>,
10189    #[primitive]
10190    #[doc = "Who starts the transaction."]
10191    pub initiator: Option<Box<FHIRString>>,
10192    #[primitive]
10193    #[doc = "Who receives the transaction."]
10194    pub receiver: Option<Box<FHIRString>>,
10195    #[primitive]
10196    #[doc = "A comment to be inserted in the diagram."]
10197    pub description: Option<Box<FHIRMarkdown>>,
10198    #[primitive]
10199    #[doc = "Whether the initiator is deactivated right after the transaction."]
10200    pub initiatorActive: Option<Box<FHIRBoolean>>,
10201    #[primitive]
10202    #[doc = "Whether the receiver is deactivated right after the transaction."]
10203    pub receiverActive: Option<Box<FHIRBoolean>>,
10204    #[doc = "Each resource instance used by the initiator."]
10205    pub request: Option<ExampleScenarioInstanceContainedInstance>,
10206    #[doc = "Each resource instance used by the responder."]
10207    pub response: Option<ExampleScenarioInstanceContainedInstance>,
10208}
10209#[derive(
10210    Clone,
10211    Reflect,
10212    Debug,
10213    Default,
10214    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
10215    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
10216)]
10217#[fhir_serialize_type = "complex"]
10218#[doc = "Indicates an alternative step that can be taken instead of the operations on the base step in exceptional/atypical circumstances."]
10219pub struct ExampleScenarioProcessStepAlternative {
10220    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
10221    pub id: Option<String>,
10222    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
10223    pub extension: Option<Vec<Box<Extension>>>,
10224    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
10225    pub modifierExtension: Option<Vec<Box<Extension>>>,
10226    #[primitive]
10227    #[doc = "The label to display for the alternative that gives a sense of the circumstance in which the alternative should be invoked."]
10228    pub title: Box<FHIRString>,
10229    #[primitive]
10230    #[doc = "A human-readable description of the alternative explaining when the alternative should occur rather than the base step."]
10231    pub description: Option<Box<FHIRMarkdown>>,
10232    #[doc = "What happens in each alternative option."]
10233    pub step: Option<Vec<ExampleScenarioProcessStep>>,
10234}
10235#[derive(
10236    Clone,
10237    Reflect,
10238    Debug,
10239    Default,
10240    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
10241    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
10242)]
10243#[fhir_serialize_type = "complex"]
10244#[doc = "Each step of the process."]
10245pub struct ExampleScenarioProcessStep {
10246    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
10247    pub id: Option<String>,
10248    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
10249    pub extension: Option<Vec<Box<Extension>>>,
10250    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
10251    pub modifierExtension: Option<Vec<Box<Extension>>>,
10252    #[doc = "Nested process."]
10253    pub process: Option<Vec<ExampleScenarioProcess>>,
10254    #[primitive]
10255    #[doc = "If there is a pause in the flow."]
10256    pub pause: Option<Box<FHIRBoolean>>,
10257    #[doc = "Each interaction or action."]
10258    pub operation: Option<ExampleScenarioProcessStepOperation>,
10259    #[doc = "Indicates an alternative step that can be taken instead of the operations on the base step in exceptional/atypical circumstances."]
10260    pub alternative: Option<Vec<ExampleScenarioProcessStepAlternative>>,
10261}
10262#[derive(
10263    Clone,
10264    Reflect,
10265    Debug,
10266    Default,
10267    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
10268    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
10269)]
10270#[fhir_serialize_type = "complex"]
10271#[doc = "Each major process - a group of operations."]
10272pub struct ExampleScenarioProcess {
10273    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
10274    pub id: Option<String>,
10275    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
10276    pub extension: Option<Vec<Box<Extension>>>,
10277    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
10278    pub modifierExtension: Option<Vec<Box<Extension>>>,
10279    #[primitive]
10280    #[doc = "The diagram title of the group of operations."]
10281    pub title: Box<FHIRString>,
10282    #[primitive]
10283    #[doc = "A longer description of the group of operations."]
10284    pub description: Option<Box<FHIRMarkdown>>,
10285    #[primitive]
10286    #[doc = "Description of initial status before the process starts."]
10287    pub preConditions: Option<Box<FHIRMarkdown>>,
10288    #[primitive]
10289    #[doc = "Description of final status after the process ends."]
10290    pub postConditions: Option<Box<FHIRMarkdown>>,
10291    #[doc = "Each step of the process."]
10292    pub step: Option<Vec<ExampleScenarioProcessStep>>,
10293}
10294#[derive(
10295    Clone,
10296    Reflect,
10297    Debug,
10298    Default,
10299    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
10300    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
10301)]
10302#[fhir_serialize_type = "resource"]
10303#[doc = "Example of workflow instance."]
10304pub struct ExampleScenario {
10305    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
10306    pub id: Option<String>,
10307    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
10308    pub meta: Option<Box<Meta>>,
10309    #[primitive]
10310    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
10311    pub implicitRules: Option<Box<FHIRUri>>,
10312    #[primitive]
10313    #[doc = "The base language in which the resource is written."]
10314    pub language: Option<Box<FHIRCode>>,
10315    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
10316    pub text: Option<Box<Narrative>>,
10317    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
10318    pub contained: Option<Vec<Box<Resource>>>,
10319    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
10320    pub extension: Option<Vec<Box<Extension>>>,
10321    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
10322    pub modifierExtension: Option<Vec<Box<Extension>>>,
10323    #[primitive]
10324    #[doc = "An absolute URI that is used to identify this example scenario when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this example scenario is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the example scenario is stored on different servers."]
10325    pub url: Option<Box<FHIRUri>>,
10326    #[rename_field = "identifier"]
10327    #[doc = "A formal identifier that is used to identify this example scenario when it is represented in other formats, or referenced in a specification, model, design or an instance."]
10328    pub identifier_: Option<Vec<Box<Identifier>>>,
10329    #[primitive]
10330    #[doc = "The identifier that is used to identify this version of the example scenario when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the example scenario author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence."]
10331    pub version: Option<Box<FHIRString>>,
10332    #[primitive]
10333    #[doc = "A natural language name identifying the example scenario. This name should be usable as an identifier for the module by machine processing applications such as code generation."]
10334    pub name: Option<Box<FHIRString>>,
10335    #[primitive]
10336    #[doc = "The status of this example scenario. Enables tracking the life-cycle of the content."]
10337    pub status: Box<terminology::PublicationStatus>,
10338    #[primitive]
10339    #[doc = "A Boolean value to indicate that this example scenario is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage."]
10340    pub experimental: Option<Box<FHIRBoolean>>,
10341    #[primitive]
10342    #[doc = "The date  (and optionally time) when the example scenario was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the example scenario changes. (e.g. the 'content logical definition')."]
10343    pub date: Option<Box<FHIRDateTime>>,
10344    #[primitive]
10345    #[doc = "The name of the organization or individual that published the example scenario."]
10346    pub publisher: Option<Box<FHIRString>>,
10347    #[doc = "Contact details to assist a user in finding and communicating with the publisher."]
10348    pub contact: Option<Vec<Box<ContactDetail>>>,
10349    #[doc = "The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate example scenario instances."]
10350    pub useContext: Option<Vec<Box<UsageContext>>>,
10351    #[doc = "A legal or geographic region in which the example scenario is intended to be used."]
10352    pub jurisdiction: Option<Vec<Box<CodeableConcept>>>,
10353    #[primitive]
10354    #[doc = "A copyright statement relating to the example scenario and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the example scenario."]
10355    pub copyright: Option<Box<FHIRMarkdown>>,
10356    #[primitive]
10357    #[doc = "What the example scenario resource is created for. This should not be used to show the business purpose of the scenario itself, but the purpose of documenting a scenario."]
10358    pub purpose: Option<Box<FHIRMarkdown>>,
10359    #[doc = "Actor participating in the resource."]
10360    pub actor: Option<Vec<ExampleScenarioActor>>,
10361    #[doc = "Each resource and each version that is present in the workflow."]
10362    pub instance: Option<Vec<ExampleScenarioInstance>>,
10363    #[doc = "Each major process - a group of operations."]
10364    pub process: Option<Vec<ExampleScenarioProcess>>,
10365    #[primitive]
10366    #[doc = "Another nested workflow."]
10367    pub workflow: Option<Vec<Box<FHIRCanonical>>>,
10368}
10369#[derive(
10370    Clone,
10371    Reflect,
10372    Debug,
10373    Default,
10374    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
10375    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
10376)]
10377#[fhir_serialize_type = "complex"]
10378#[doc = "Other claims which are related to this claim such as prior submissions or claims for related services or for the same event."]
10379pub struct ExplanationOfBenefitRelated {
10380    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
10381    pub id: Option<String>,
10382    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
10383    pub extension: Option<Vec<Box<Extension>>>,
10384    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
10385    pub modifierExtension: Option<Vec<Box<Extension>>>,
10386    # [reference (targets = ["Claim"])]
10387    #[doc = "Reference to a related claim."]
10388    pub claim: Option<Box<Reference>>,
10389    #[doc = "A code to convey how the claims are related."]
10390    pub relationship: Option<Box<CodeableConcept>>,
10391    #[doc = "An alternate organizational reference to the case or file to which this particular claim pertains."]
10392    pub reference: Option<Box<Identifier>>,
10393}
10394#[derive(
10395    Clone,
10396    Reflect,
10397    Debug,
10398    Default,
10399    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
10400    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
10401)]
10402#[fhir_serialize_type = "complex"]
10403#[doc = "The party to be reimbursed for cost of the products and services according to the terms of the policy."]
10404pub struct ExplanationOfBenefitPayee {
10405    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
10406    pub id: Option<String>,
10407    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
10408    pub extension: Option<Vec<Box<Extension>>>,
10409    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
10410    pub modifierExtension: Option<Vec<Box<Extension>>>,
10411    #[rename_field = "type"]
10412    #[doc = "Type of Party to be reimbursed: Subscriber, provider, other."]
10413    pub type_: Option<Box<CodeableConcept>>,
10414    # [reference (targets = ["Practitioner" , "PractitionerRole" , "Organization" , "Patient" , "RelatedPerson"])]
10415    #[doc = "Reference to the individual or organization to whom any payment will be made."]
10416    pub party: Option<Box<Reference>>,
10417}
10418#[derive(
10419    Clone,
10420    Reflect,
10421    Debug,
10422    Default,
10423    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
10424    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
10425)]
10426#[fhir_serialize_type = "complex"]
10427#[doc = "The members of the team who provided the products and services."]
10428pub struct ExplanationOfBenefitCareTeam {
10429    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
10430    pub id: Option<String>,
10431    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
10432    pub extension: Option<Vec<Box<Extension>>>,
10433    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
10434    pub modifierExtension: Option<Vec<Box<Extension>>>,
10435    #[primitive]
10436    #[doc = "A number to uniquely identify care team entries."]
10437    pub sequence: Box<FHIRPositiveInt>,
10438    # [reference (targets = ["Practitioner" , "PractitionerRole" , "Organization"])]
10439    #[doc = "Member of the team who provided the product or service."]
10440    pub provider: Box<Reference>,
10441    #[primitive]
10442    #[doc = "The party who is billing and/or responsible for the claimed products or services."]
10443    pub responsible: Option<Box<FHIRBoolean>>,
10444    #[doc = "The lead, assisting or supervising practitioner and their discipline if a multidisciplinary team."]
10445    pub role: Option<Box<CodeableConcept>>,
10446    #[doc = "The qualification of the practitioner which is applicable for this service."]
10447    pub qualification: Option<Box<CodeableConcept>>,
10448}
10449#[derive(
10450    Clone,
10451    Reflect,
10452    Debug,
10453    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
10454    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
10455)]
10456#[fhir_serialize_type = "typechoice"]
10457#[type_choice_field_name = "timing"]
10458pub enum ExplanationOfBenefitSupportingInfoTimingTypeChoice {
10459    Date(Box<FHIRDate>),
10460    Period(Box<Period>),
10461}
10462impl Default for ExplanationOfBenefitSupportingInfoTimingTypeChoice {
10463    fn default() -> Self {
10464        ExplanationOfBenefitSupportingInfoTimingTypeChoice::Date(Box::new(Default::default()))
10465    }
10466}
10467#[derive(
10468    Clone,
10469    Reflect,
10470    Debug,
10471    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
10472    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
10473)]
10474#[fhir_serialize_type = "typechoice"]
10475#[type_choice_field_name = "value"]
10476pub enum ExplanationOfBenefitSupportingInfoValueTypeChoice {
10477    Boolean(Box<FHIRBoolean>),
10478    String(Box<FHIRString>),
10479    Quantity(Box<Quantity>),
10480    Attachment(Box<Attachment>),
10481    # [reference (targets = ["Resource"])]
10482    Reference(Box<Reference>),
10483}
10484impl Default for ExplanationOfBenefitSupportingInfoValueTypeChoice {
10485    fn default() -> Self {
10486        ExplanationOfBenefitSupportingInfoValueTypeChoice::Boolean(Box::new(Default::default()))
10487    }
10488}
10489#[derive(
10490    Clone,
10491    Reflect,
10492    Debug,
10493    Default,
10494    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
10495    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
10496)]
10497#[fhir_serialize_type = "complex"]
10498#[doc = "Additional information codes regarding exceptions, special considerations, the condition, situation, prior or concurrent issues."]
10499pub struct ExplanationOfBenefitSupportingInfo {
10500    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
10501    pub id: Option<String>,
10502    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
10503    pub extension: Option<Vec<Box<Extension>>>,
10504    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
10505    pub modifierExtension: Option<Vec<Box<Extension>>>,
10506    #[primitive]
10507    #[doc = "A number to uniquely identify supporting information entries."]
10508    pub sequence: Box<FHIRPositiveInt>,
10509    #[doc = "The general class of the information supplied: information; exception; accident, employment; onset, etc."]
10510    pub category: Box<CodeableConcept>,
10511    #[doc = "System and code pertaining to the specific information regarding special conditions relating to the setting, treatment or patient  for which care is sought."]
10512    pub code: Option<Box<CodeableConcept>>,
10513    # [type_choice_variants (complex = ["timingPeriod"] , primitive = ["timingDate"])]
10514    #[doc = "The date when or period to which this information refers."]
10515    pub timing: Option<ExplanationOfBenefitSupportingInfoTimingTypeChoice>,
10516    # [type_choice_variants (complex = ["valueQuantity" , "valueAttachment" , "valueReference"] , primitive = ["valueBoolean" , "valueString"])]
10517    #[doc = "Additional data or information such as resources, documents, images etc. including references to the data or the actual inclusion of the data."]
10518    pub value: Option<ExplanationOfBenefitSupportingInfoValueTypeChoice>,
10519    #[doc = "Provides the reason in the situation where a reason code is required in addition to the content."]
10520    pub reason: Option<Box<Coding>>,
10521}
10522#[derive(
10523    Clone,
10524    Reflect,
10525    Debug,
10526    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
10527    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
10528)]
10529#[fhir_serialize_type = "typechoice"]
10530#[type_choice_field_name = "diagnosis"]
10531pub enum ExplanationOfBenefitDiagnosisDiagnosisTypeChoice {
10532    CodeableConcept(Box<CodeableConcept>),
10533    # [reference (targets = ["Condition"])]
10534    Reference(Box<Reference>),
10535}
10536impl Default for ExplanationOfBenefitDiagnosisDiagnosisTypeChoice {
10537    fn default() -> Self {
10538        ExplanationOfBenefitDiagnosisDiagnosisTypeChoice::CodeableConcept(Box::new(
10539            Default::default(),
10540        ))
10541    }
10542}
10543#[derive(
10544    Clone,
10545    Reflect,
10546    Debug,
10547    Default,
10548    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
10549    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
10550)]
10551#[fhir_serialize_type = "complex"]
10552#[doc = "Information about diagnoses relevant to the claim items."]
10553pub struct ExplanationOfBenefitDiagnosis {
10554    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
10555    pub id: Option<String>,
10556    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
10557    pub extension: Option<Vec<Box<Extension>>>,
10558    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
10559    pub modifierExtension: Option<Vec<Box<Extension>>>,
10560    #[primitive]
10561    #[doc = "A number to uniquely identify diagnosis entries."]
10562    pub sequence: Box<FHIRPositiveInt>,
10563    # [type_choice_variants (complex = ["diagnosisCodeableConcept" , "diagnosisReference"] , primitive = [])]
10564    #[doc = "The nature of illness or problem in a coded form or as a reference to an external defined Condition."]
10565    pub diagnosis: ExplanationOfBenefitDiagnosisDiagnosisTypeChoice,
10566    #[rename_field = "type"]
10567    #[doc = "When the condition was observed or the relative ranking."]
10568    pub type_: Option<Vec<Box<CodeableConcept>>>,
10569    #[doc = "Indication of whether the diagnosis was present on admission to a facility."]
10570    pub onAdmission: Option<Box<CodeableConcept>>,
10571    #[doc = "A package billing code or bundle code used to group products and services to a particular health condition (such as heart attack) which is based on a predetermined grouping code system."]
10572    pub packageCode: Option<Box<CodeableConcept>>,
10573}
10574#[derive(
10575    Clone,
10576    Reflect,
10577    Debug,
10578    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
10579    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
10580)]
10581#[fhir_serialize_type = "typechoice"]
10582#[type_choice_field_name = "procedure"]
10583pub enum ExplanationOfBenefitProcedureProcedureTypeChoice {
10584    CodeableConcept(Box<CodeableConcept>),
10585    # [reference (targets = ["Procedure"])]
10586    Reference(Box<Reference>),
10587}
10588impl Default for ExplanationOfBenefitProcedureProcedureTypeChoice {
10589    fn default() -> Self {
10590        ExplanationOfBenefitProcedureProcedureTypeChoice::CodeableConcept(Box::new(
10591            Default::default(),
10592        ))
10593    }
10594}
10595#[derive(
10596    Clone,
10597    Reflect,
10598    Debug,
10599    Default,
10600    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
10601    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
10602)]
10603#[fhir_serialize_type = "complex"]
10604#[doc = "Procedures performed on the patient relevant to the billing items with the claim."]
10605pub struct ExplanationOfBenefitProcedure {
10606    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
10607    pub id: Option<String>,
10608    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
10609    pub extension: Option<Vec<Box<Extension>>>,
10610    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
10611    pub modifierExtension: Option<Vec<Box<Extension>>>,
10612    #[primitive]
10613    #[doc = "A number to uniquely identify procedure entries."]
10614    pub sequence: Box<FHIRPositiveInt>,
10615    #[rename_field = "type"]
10616    #[doc = "When the condition was observed or the relative ranking."]
10617    pub type_: Option<Vec<Box<CodeableConcept>>>,
10618    #[primitive]
10619    #[doc = "Date and optionally time the procedure was performed."]
10620    pub date: Option<Box<FHIRDateTime>>,
10621    # [type_choice_variants (complex = ["procedureCodeableConcept" , "procedureReference"] , primitive = [])]
10622    #[doc = "The code or reference to a Procedure resource which identifies the clinical intervention performed."]
10623    pub procedure: ExplanationOfBenefitProcedureProcedureTypeChoice,
10624    # [reference (targets = ["Device"])]
10625    #[doc = "Unique Device Identifiers associated with this line item."]
10626    pub udi: Option<Vec<Box<Reference>>>,
10627}
10628#[derive(
10629    Clone,
10630    Reflect,
10631    Debug,
10632    Default,
10633    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
10634    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
10635)]
10636#[fhir_serialize_type = "complex"]
10637#[doc = "Financial instruments for reimbursement for the health care products and services specified on the claim."]
10638pub struct ExplanationOfBenefitInsurance {
10639    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
10640    pub id: Option<String>,
10641    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
10642    pub extension: Option<Vec<Box<Extension>>>,
10643    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
10644    pub modifierExtension: Option<Vec<Box<Extension>>>,
10645    #[primitive]
10646    #[doc = "A flag to indicate that this Coverage is to be used for adjudication of this claim when set to true."]
10647    pub focal: Box<FHIRBoolean>,
10648    # [reference (targets = ["Coverage"])]
10649    #[doc = "Reference to the insurance card level information contained in the Coverage resource. The coverage issuing insurer will use these details to locate the patient's actual coverage within the insurer's information system."]
10650    pub coverage: Box<Reference>,
10651    #[primitive]
10652    #[doc = "Reference numbers previously provided by the insurer to the provider to be quoted on subsequent claims containing services or products related to the prior authorization."]
10653    pub preAuthRef: Option<Vec<Box<FHIRString>>>,
10654}
10655#[derive(
10656    Clone,
10657    Reflect,
10658    Debug,
10659    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
10660    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
10661)]
10662#[fhir_serialize_type = "typechoice"]
10663#[type_choice_field_name = "location"]
10664pub enum ExplanationOfBenefitAccidentLocationTypeChoice {
10665    Address(Box<Address>),
10666    # [reference (targets = ["Location"])]
10667    Reference(Box<Reference>),
10668}
10669impl Default for ExplanationOfBenefitAccidentLocationTypeChoice {
10670    fn default() -> Self {
10671        ExplanationOfBenefitAccidentLocationTypeChoice::Address(Box::new(Default::default()))
10672    }
10673}
10674#[derive(
10675    Clone,
10676    Reflect,
10677    Debug,
10678    Default,
10679    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
10680    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
10681)]
10682#[fhir_serialize_type = "complex"]
10683#[doc = "Details of a accident which resulted in injuries which required the products and services listed in the claim."]
10684pub struct ExplanationOfBenefitAccident {
10685    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
10686    pub id: Option<String>,
10687    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
10688    pub extension: Option<Vec<Box<Extension>>>,
10689    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
10690    pub modifierExtension: Option<Vec<Box<Extension>>>,
10691    #[primitive]
10692    #[doc = "Date of an accident event  related to the products and services contained in the claim."]
10693    pub date: Option<Box<FHIRDate>>,
10694    #[rename_field = "type"]
10695    #[doc = "The type or context of the accident event for the purposes of selection of potential insurance coverages and determination of coordination between insurers."]
10696    pub type_: Option<Box<CodeableConcept>>,
10697    # [type_choice_variants (complex = ["locationAddress" , "locationReference"] , primitive = [])]
10698    #[doc = "The physical location of the accident event."]
10699    pub location: Option<ExplanationOfBenefitAccidentLocationTypeChoice>,
10700}
10701#[derive(
10702    Clone,
10703    Reflect,
10704    Debug,
10705    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
10706    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
10707)]
10708#[fhir_serialize_type = "typechoice"]
10709#[type_choice_field_name = "serviced"]
10710pub enum ExplanationOfBenefitItemServicedTypeChoice {
10711    Date(Box<FHIRDate>),
10712    Period(Box<Period>),
10713}
10714impl Default for ExplanationOfBenefitItemServicedTypeChoice {
10715    fn default() -> Self {
10716        ExplanationOfBenefitItemServicedTypeChoice::Date(Box::new(Default::default()))
10717    }
10718}
10719#[derive(
10720    Clone,
10721    Reflect,
10722    Debug,
10723    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
10724    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
10725)]
10726#[fhir_serialize_type = "typechoice"]
10727#[type_choice_field_name = "location"]
10728pub enum ExplanationOfBenefitItemLocationTypeChoice {
10729    CodeableConcept(Box<CodeableConcept>),
10730    Address(Box<Address>),
10731    # [reference (targets = ["Location"])]
10732    Reference(Box<Reference>),
10733}
10734impl Default for ExplanationOfBenefitItemLocationTypeChoice {
10735    fn default() -> Self {
10736        ExplanationOfBenefitItemLocationTypeChoice::CodeableConcept(Box::new(Default::default()))
10737    }
10738}
10739#[derive(
10740    Clone,
10741    Reflect,
10742    Debug,
10743    Default,
10744    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
10745    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
10746)]
10747#[fhir_serialize_type = "complex"]
10748#[doc = "If this item is a group then the values here are a summary of the adjudication of the detail items. If this item is a simple product or service then this is the result of the adjudication of this item."]
10749pub struct ExplanationOfBenefitItemAdjudication {
10750    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
10751    pub id: Option<String>,
10752    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
10753    pub extension: Option<Vec<Box<Extension>>>,
10754    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
10755    pub modifierExtension: Option<Vec<Box<Extension>>>,
10756    #[doc = "A code to indicate the information type of this adjudication record. Information types may include: the value submitted, maximum values or percentages allowed or payable under the plan, amounts that the patient is responsible for in-aggregate or pertaining to this item, amounts paid by other coverages, and the benefit payable for this item."]
10757    pub category: Box<CodeableConcept>,
10758    #[doc = "A code supporting the understanding of the adjudication result and explaining variance from expected amount."]
10759    pub reason: Option<Box<CodeableConcept>>,
10760    #[doc = "Monetary amount associated with the category."]
10761    pub amount: Option<Box<Money>>,
10762    #[primitive]
10763    #[doc = "A non-monetary value associated with the category. Mutually exclusive to the amount element above."]
10764    pub value: Option<Box<FHIRDecimal>>,
10765}
10766#[derive(
10767    Clone,
10768    Reflect,
10769    Debug,
10770    Default,
10771    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
10772    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
10773)]
10774#[fhir_serialize_type = "complex"]
10775#[doc = "Third-tier of goods and services."]
10776pub struct ExplanationOfBenefitItemDetailSubDetail {
10777    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
10778    pub id: Option<String>,
10779    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
10780    pub extension: Option<Vec<Box<Extension>>>,
10781    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
10782    pub modifierExtension: Option<Vec<Box<Extension>>>,
10783    #[primitive]
10784    #[doc = "A claim detail line. Either a simple (a product or service) or a 'group' of sub-details which are simple items."]
10785    pub sequence: Box<FHIRPositiveInt>,
10786    #[doc = "The type of revenue or cost center providing the product and/or service."]
10787    pub revenue: Option<Box<CodeableConcept>>,
10788    #[doc = "Code to identify the general type of benefits under which products and services are provided."]
10789    pub category: Option<Box<CodeableConcept>>,
10790    #[doc = "When the value is a group code then this item collects a set of related claim details, otherwise this contains the product, service, drug or other billing code for the item."]
10791    pub productOrService: Box<CodeableConcept>,
10792    #[doc = "Item typification or modifiers codes to convey additional context for the product or service."]
10793    pub modifier: Option<Vec<Box<CodeableConcept>>>,
10794    #[doc = "Identifies the program under which this may be recovered."]
10795    pub programCode: Option<Vec<Box<CodeableConcept>>>,
10796    #[doc = "The number of repetitions of a service or product."]
10797    pub quantity: Option<Box<Quantity>>,
10798    #[doc = "If the item is not a group then this is the fee for the product or service, otherwise this is the total of the fees for the details of the group."]
10799    pub unitPrice: Option<Box<Money>>,
10800    #[primitive]
10801    #[doc = "A real number that represents a multiplier used in determining the overall value of services delivered and/or goods received. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount."]
10802    pub factor: Option<Box<FHIRDecimal>>,
10803    #[doc = "The quantity times the unit price for an additional service or product or charge."]
10804    pub net: Option<Box<Money>>,
10805    # [reference (targets = ["Device"])]
10806    #[doc = "Unique Device Identifiers associated with this line item."]
10807    pub udi: Option<Vec<Box<Reference>>>,
10808    #[primitive]
10809    #[doc = "The numbers associated with notes below which apply to the adjudication of this item."]
10810    pub noteNumber: Option<Vec<Box<FHIRPositiveInt>>>,
10811    #[doc = "The adjudication results."]
10812    pub adjudication: Option<Vec<ExplanationOfBenefitItemAdjudication>>,
10813}
10814#[derive(
10815    Clone,
10816    Reflect,
10817    Debug,
10818    Default,
10819    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
10820    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
10821)]
10822#[fhir_serialize_type = "complex"]
10823#[doc = "Second-tier of goods and services."]
10824pub struct ExplanationOfBenefitItemDetail {
10825    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
10826    pub id: Option<String>,
10827    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
10828    pub extension: Option<Vec<Box<Extension>>>,
10829    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
10830    pub modifierExtension: Option<Vec<Box<Extension>>>,
10831    #[primitive]
10832    #[doc = "A claim detail line. Either a simple (a product or service) or a 'group' of sub-details which are simple items."]
10833    pub sequence: Box<FHIRPositiveInt>,
10834    #[doc = "The type of revenue or cost center providing the product and/or service."]
10835    pub revenue: Option<Box<CodeableConcept>>,
10836    #[doc = "Code to identify the general type of benefits under which products and services are provided."]
10837    pub category: Option<Box<CodeableConcept>>,
10838    #[doc = "When the value is a group code then this item collects a set of related claim details, otherwise this contains the product, service, drug or other billing code for the item."]
10839    pub productOrService: Box<CodeableConcept>,
10840    #[doc = "Item typification or modifiers codes to convey additional context for the product or service."]
10841    pub modifier: Option<Vec<Box<CodeableConcept>>>,
10842    #[doc = "Identifies the program under which this may be recovered."]
10843    pub programCode: Option<Vec<Box<CodeableConcept>>>,
10844    #[doc = "The number of repetitions of a service or product."]
10845    pub quantity: Option<Box<Quantity>>,
10846    #[doc = "If the item is not a group then this is the fee for the product or service, otherwise this is the total of the fees for the details of the group."]
10847    pub unitPrice: Option<Box<Money>>,
10848    #[primitive]
10849    #[doc = "A real number that represents a multiplier used in determining the overall value of services delivered and/or goods received. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount."]
10850    pub factor: Option<Box<FHIRDecimal>>,
10851    #[doc = "The quantity times the unit price for an additional service or product or charge."]
10852    pub net: Option<Box<Money>>,
10853    # [reference (targets = ["Device"])]
10854    #[doc = "Unique Device Identifiers associated with this line item."]
10855    pub udi: Option<Vec<Box<Reference>>>,
10856    #[primitive]
10857    #[doc = "The numbers associated with notes below which apply to the adjudication of this item."]
10858    pub noteNumber: Option<Vec<Box<FHIRPositiveInt>>>,
10859    #[doc = "The adjudication results."]
10860    pub adjudication: Option<Vec<ExplanationOfBenefitItemAdjudication>>,
10861    #[doc = "Third-tier of goods and services."]
10862    pub subDetail: Option<Vec<ExplanationOfBenefitItemDetailSubDetail>>,
10863}
10864#[derive(
10865    Clone,
10866    Reflect,
10867    Debug,
10868    Default,
10869    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
10870    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
10871)]
10872#[fhir_serialize_type = "complex"]
10873#[doc = "A claim line. Either a simple (a product or service) or a 'group' of details which can also be a simple items or groups of sub-details."]
10874pub struct ExplanationOfBenefitItem {
10875    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
10876    pub id: Option<String>,
10877    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
10878    pub extension: Option<Vec<Box<Extension>>>,
10879    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
10880    pub modifierExtension: Option<Vec<Box<Extension>>>,
10881    #[primitive]
10882    #[doc = "A number to uniquely identify item entries."]
10883    pub sequence: Box<FHIRPositiveInt>,
10884    #[primitive]
10885    #[doc = "Care team members related to this service or product."]
10886    pub careTeamSequence: Option<Vec<Box<FHIRPositiveInt>>>,
10887    #[primitive]
10888    #[doc = "Diagnoses applicable for this service or product."]
10889    pub diagnosisSequence: Option<Vec<Box<FHIRPositiveInt>>>,
10890    #[primitive]
10891    #[doc = "Procedures applicable for this service or product."]
10892    pub procedureSequence: Option<Vec<Box<FHIRPositiveInt>>>,
10893    #[primitive]
10894    #[doc = "Exceptions, special conditions and supporting information applicable for this service or product."]
10895    pub informationSequence: Option<Vec<Box<FHIRPositiveInt>>>,
10896    #[doc = "The type of revenue or cost center providing the product and/or service."]
10897    pub revenue: Option<Box<CodeableConcept>>,
10898    #[doc = "Code to identify the general type of benefits under which products and services are provided."]
10899    pub category: Option<Box<CodeableConcept>>,
10900    #[doc = "When the value is a group code then this item collects a set of related claim details, otherwise this contains the product, service, drug or other billing code for the item."]
10901    pub productOrService: Box<CodeableConcept>,
10902    #[doc = "Item typification or modifiers codes to convey additional context for the product or service."]
10903    pub modifier: Option<Vec<Box<CodeableConcept>>>,
10904    #[doc = "Identifies the program under which this may be recovered."]
10905    pub programCode: Option<Vec<Box<CodeableConcept>>>,
10906    # [type_choice_variants (complex = ["servicedPeriod"] , primitive = ["servicedDate"])]
10907    #[doc = "The date or dates when the service or product was supplied, performed or completed."]
10908    pub serviced: Option<ExplanationOfBenefitItemServicedTypeChoice>,
10909    # [type_choice_variants (complex = ["locationCodeableConcept" , "locationAddress" , "locationReference"] , primitive = [])]
10910    #[doc = "Where the product or service was provided."]
10911    pub location: Option<ExplanationOfBenefitItemLocationTypeChoice>,
10912    #[doc = "The number of repetitions of a service or product."]
10913    pub quantity: Option<Box<Quantity>>,
10914    #[doc = "If the item is not a group then this is the fee for the product or service, otherwise this is the total of the fees for the details of the group."]
10915    pub unitPrice: Option<Box<Money>>,
10916    #[primitive]
10917    #[doc = "A real number that represents a multiplier used in determining the overall value of services delivered and/or goods received. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount."]
10918    pub factor: Option<Box<FHIRDecimal>>,
10919    #[doc = "The quantity times the unit price for an additional service or product or charge."]
10920    pub net: Option<Box<Money>>,
10921    # [reference (targets = ["Device"])]
10922    #[doc = "Unique Device Identifiers associated with this line item."]
10923    pub udi: Option<Vec<Box<Reference>>>,
10924    #[doc = "Physical service site on the patient (limb, tooth, etc.)."]
10925    pub bodySite: Option<Box<CodeableConcept>>,
10926    #[doc = "A region or surface of the bodySite, e.g. limb region or tooth surface(s)."]
10927    pub subSite: Option<Vec<Box<CodeableConcept>>>,
10928    # [reference (targets = ["Encounter"])]
10929    #[doc = "A billed item may include goods or services provided in multiple encounters."]
10930    pub encounter: Option<Vec<Box<Reference>>>,
10931    #[primitive]
10932    #[doc = "The numbers associated with notes below which apply to the adjudication of this item."]
10933    pub noteNumber: Option<Vec<Box<FHIRPositiveInt>>>,
10934    #[doc = "If this item is a group then the values here are a summary of the adjudication of the detail items. If this item is a simple product or service then this is the result of the adjudication of this item."]
10935    pub adjudication: Option<Vec<ExplanationOfBenefitItemAdjudication>>,
10936    #[doc = "Second-tier of goods and services."]
10937    pub detail: Option<Vec<ExplanationOfBenefitItemDetail>>,
10938}
10939#[derive(
10940    Clone,
10941    Reflect,
10942    Debug,
10943    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
10944    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
10945)]
10946#[fhir_serialize_type = "typechoice"]
10947#[type_choice_field_name = "serviced"]
10948pub enum ExplanationOfBenefitAddItemServicedTypeChoice {
10949    Date(Box<FHIRDate>),
10950    Period(Box<Period>),
10951}
10952impl Default for ExplanationOfBenefitAddItemServicedTypeChoice {
10953    fn default() -> Self {
10954        ExplanationOfBenefitAddItemServicedTypeChoice::Date(Box::new(Default::default()))
10955    }
10956}
10957#[derive(
10958    Clone,
10959    Reflect,
10960    Debug,
10961    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
10962    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
10963)]
10964#[fhir_serialize_type = "typechoice"]
10965#[type_choice_field_name = "location"]
10966pub enum ExplanationOfBenefitAddItemLocationTypeChoice {
10967    CodeableConcept(Box<CodeableConcept>),
10968    Address(Box<Address>),
10969    # [reference (targets = ["Location"])]
10970    Reference(Box<Reference>),
10971}
10972impl Default for ExplanationOfBenefitAddItemLocationTypeChoice {
10973    fn default() -> Self {
10974        ExplanationOfBenefitAddItemLocationTypeChoice::CodeableConcept(Box::new(Default::default()))
10975    }
10976}
10977#[derive(
10978    Clone,
10979    Reflect,
10980    Debug,
10981    Default,
10982    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
10983    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
10984)]
10985#[fhir_serialize_type = "complex"]
10986#[doc = "The third-tier service adjudications for payor added services."]
10987pub struct ExplanationOfBenefitAddItemDetailSubDetail {
10988    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
10989    pub id: Option<String>,
10990    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
10991    pub extension: Option<Vec<Box<Extension>>>,
10992    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
10993    pub modifierExtension: Option<Vec<Box<Extension>>>,
10994    #[doc = "When the value is a group code then this item collects a set of related claim details, otherwise this contains the product, service, drug or other billing code for the item."]
10995    pub productOrService: Box<CodeableConcept>,
10996    #[doc = "Item typification or modifiers codes to convey additional context for the product or service."]
10997    pub modifier: Option<Vec<Box<CodeableConcept>>>,
10998    #[doc = "The number of repetitions of a service or product."]
10999    pub quantity: Option<Box<Quantity>>,
11000    #[doc = "If the item is not a group then this is the fee for the product or service, otherwise this is the total of the fees for the details of the group."]
11001    pub unitPrice: Option<Box<Money>>,
11002    #[primitive]
11003    #[doc = "A real number that represents a multiplier used in determining the overall value of services delivered and/or goods received. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount."]
11004    pub factor: Option<Box<FHIRDecimal>>,
11005    #[doc = "The quantity times the unit price for an additional service or product or charge."]
11006    pub net: Option<Box<Money>>,
11007    #[primitive]
11008    #[doc = "The numbers associated with notes below which apply to the adjudication of this item."]
11009    pub noteNumber: Option<Vec<Box<FHIRPositiveInt>>>,
11010    #[doc = "The adjudication results."]
11011    pub adjudication: Option<Vec<ExplanationOfBenefitItemAdjudication>>,
11012}
11013#[derive(
11014    Clone,
11015    Reflect,
11016    Debug,
11017    Default,
11018    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
11019    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
11020)]
11021#[fhir_serialize_type = "complex"]
11022#[doc = "The second-tier service adjudications for payor added services."]
11023pub struct ExplanationOfBenefitAddItemDetail {
11024    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
11025    pub id: Option<String>,
11026    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
11027    pub extension: Option<Vec<Box<Extension>>>,
11028    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
11029    pub modifierExtension: Option<Vec<Box<Extension>>>,
11030    #[doc = "When the value is a group code then this item collects a set of related claim details, otherwise this contains the product, service, drug or other billing code for the item."]
11031    pub productOrService: Box<CodeableConcept>,
11032    #[doc = "Item typification or modifiers codes to convey additional context for the product or service."]
11033    pub modifier: Option<Vec<Box<CodeableConcept>>>,
11034    #[doc = "The number of repetitions of a service or product."]
11035    pub quantity: Option<Box<Quantity>>,
11036    #[doc = "If the item is not a group then this is the fee for the product or service, otherwise this is the total of the fees for the details of the group."]
11037    pub unitPrice: Option<Box<Money>>,
11038    #[primitive]
11039    #[doc = "A real number that represents a multiplier used in determining the overall value of services delivered and/or goods received. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount."]
11040    pub factor: Option<Box<FHIRDecimal>>,
11041    #[doc = "The quantity times the unit price for an additional service or product or charge."]
11042    pub net: Option<Box<Money>>,
11043    #[primitive]
11044    #[doc = "The numbers associated with notes below which apply to the adjudication of this item."]
11045    pub noteNumber: Option<Vec<Box<FHIRPositiveInt>>>,
11046    #[doc = "The adjudication results."]
11047    pub adjudication: Option<Vec<ExplanationOfBenefitItemAdjudication>>,
11048    #[doc = "The third-tier service adjudications for payor added services."]
11049    pub subDetail: Option<Vec<ExplanationOfBenefitAddItemDetailSubDetail>>,
11050}
11051#[derive(
11052    Clone,
11053    Reflect,
11054    Debug,
11055    Default,
11056    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
11057    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
11058)]
11059#[fhir_serialize_type = "complex"]
11060#[doc = "The first-tier service adjudications for payor added product or service lines."]
11061pub struct ExplanationOfBenefitAddItem {
11062    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
11063    pub id: Option<String>,
11064    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
11065    pub extension: Option<Vec<Box<Extension>>>,
11066    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
11067    pub modifierExtension: Option<Vec<Box<Extension>>>,
11068    #[primitive]
11069    #[doc = "Claim items which this service line is intended to replace."]
11070    pub itemSequence: Option<Vec<Box<FHIRPositiveInt>>>,
11071    #[primitive]
11072    #[doc = "The sequence number of the details within the claim item which this line is intended to replace."]
11073    pub detailSequence: Option<Vec<Box<FHIRPositiveInt>>>,
11074    #[primitive]
11075    #[doc = "The sequence number of the sub-details woithin the details within the claim item which this line is intended to replace."]
11076    pub subDetailSequence: Option<Vec<Box<FHIRPositiveInt>>>,
11077    # [reference (targets = ["Practitioner" , "PractitionerRole" , "Organization"])]
11078    #[doc = "The providers who are authorized for the services rendered to the patient."]
11079    pub provider: Option<Vec<Box<Reference>>>,
11080    #[doc = "When the value is a group code then this item collects a set of related claim details, otherwise this contains the product, service, drug or other billing code for the item."]
11081    pub productOrService: Box<CodeableConcept>,
11082    #[doc = "Item typification or modifiers codes to convey additional context for the product or service."]
11083    pub modifier: Option<Vec<Box<CodeableConcept>>>,
11084    #[doc = "Identifies the program under which this may be recovered."]
11085    pub programCode: Option<Vec<Box<CodeableConcept>>>,
11086    # [type_choice_variants (complex = ["servicedPeriod"] , primitive = ["servicedDate"])]
11087    #[doc = "The date or dates when the service or product was supplied, performed or completed."]
11088    pub serviced: Option<ExplanationOfBenefitAddItemServicedTypeChoice>,
11089    # [type_choice_variants (complex = ["locationCodeableConcept" , "locationAddress" , "locationReference"] , primitive = [])]
11090    #[doc = "Where the product or service was provided."]
11091    pub location: Option<ExplanationOfBenefitAddItemLocationTypeChoice>,
11092    #[doc = "The number of repetitions of a service or product."]
11093    pub quantity: Option<Box<Quantity>>,
11094    #[doc = "If the item is not a group then this is the fee for the product or service, otherwise this is the total of the fees for the details of the group."]
11095    pub unitPrice: Option<Box<Money>>,
11096    #[primitive]
11097    #[doc = "A real number that represents a multiplier used in determining the overall value of services delivered and/or goods received. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount."]
11098    pub factor: Option<Box<FHIRDecimal>>,
11099    #[doc = "The quantity times the unit price for an additional service or product or charge."]
11100    pub net: Option<Box<Money>>,
11101    #[doc = "Physical service site on the patient (limb, tooth, etc.)."]
11102    pub bodySite: Option<Box<CodeableConcept>>,
11103    #[doc = "A region or surface of the bodySite, e.g. limb region or tooth surface(s)."]
11104    pub subSite: Option<Vec<Box<CodeableConcept>>>,
11105    #[primitive]
11106    #[doc = "The numbers associated with notes below which apply to the adjudication of this item."]
11107    pub noteNumber: Option<Vec<Box<FHIRPositiveInt>>>,
11108    #[doc = "The adjudication results."]
11109    pub adjudication: Option<Vec<ExplanationOfBenefitItemAdjudication>>,
11110    #[doc = "The second-tier service adjudications for payor added services."]
11111    pub detail: Option<Vec<ExplanationOfBenefitAddItemDetail>>,
11112}
11113#[derive(
11114    Clone,
11115    Reflect,
11116    Debug,
11117    Default,
11118    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
11119    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
11120)]
11121#[fhir_serialize_type = "complex"]
11122#[doc = "Categorized monetary totals for the adjudication."]
11123pub struct ExplanationOfBenefitTotal {
11124    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
11125    pub id: Option<String>,
11126    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
11127    pub extension: Option<Vec<Box<Extension>>>,
11128    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
11129    pub modifierExtension: Option<Vec<Box<Extension>>>,
11130    #[doc = "A code to indicate the information type of this adjudication record. Information types may include: the value submitted, maximum values or percentages allowed or payable under the plan, amounts that the patient is responsible for in aggregate or pertaining to this item, amounts paid by other coverages, and the benefit payable for this item."]
11131    pub category: Box<CodeableConcept>,
11132    #[doc = "Monetary total amount associated with the category."]
11133    pub amount: Box<Money>,
11134}
11135#[derive(
11136    Clone,
11137    Reflect,
11138    Debug,
11139    Default,
11140    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
11141    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
11142)]
11143#[fhir_serialize_type = "complex"]
11144#[doc = "Payment details for the adjudication of the claim."]
11145pub struct ExplanationOfBenefitPayment {
11146    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
11147    pub id: Option<String>,
11148    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
11149    pub extension: Option<Vec<Box<Extension>>>,
11150    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
11151    pub modifierExtension: Option<Vec<Box<Extension>>>,
11152    #[rename_field = "type"]
11153    #[doc = "Whether this represents partial or complete payment of the benefits payable."]
11154    pub type_: Option<Box<CodeableConcept>>,
11155    #[doc = "Total amount of all adjustments to this payment included in this transaction which are not related to this claim's adjudication."]
11156    pub adjustment: Option<Box<Money>>,
11157    #[doc = "Reason for the payment adjustment."]
11158    pub adjustmentReason: Option<Box<CodeableConcept>>,
11159    #[primitive]
11160    #[doc = "Estimated date the payment will be issued or the actual issue date of payment."]
11161    pub date: Option<Box<FHIRDate>>,
11162    #[doc = "Benefits payable less any payment adjustment."]
11163    pub amount: Option<Box<Money>>,
11164    #[rename_field = "identifier"]
11165    #[doc = "Issuer's unique identifier for the payment instrument."]
11166    pub identifier_: Option<Box<Identifier>>,
11167}
11168#[derive(
11169    Clone,
11170    Reflect,
11171    Debug,
11172    Default,
11173    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
11174    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
11175)]
11176#[fhir_serialize_type = "complex"]
11177#[doc = "A note that describes or explains adjudication results in a human readable form."]
11178pub struct ExplanationOfBenefitProcessNote {
11179    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
11180    pub id: Option<String>,
11181    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
11182    pub extension: Option<Vec<Box<Extension>>>,
11183    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
11184    pub modifierExtension: Option<Vec<Box<Extension>>>,
11185    #[primitive]
11186    #[doc = "A number to uniquely identify a note entry."]
11187    pub number: Option<Box<FHIRPositiveInt>>,
11188    #[rename_field = "type"]
11189    #[primitive]
11190    #[doc = "The business purpose of the note text."]
11191    pub type_: Option<Box<terminology::NoteType>>,
11192    #[primitive]
11193    #[doc = "The explanation or description associated with the processing."]
11194    pub text: Option<Box<FHIRString>>,
11195    #[doc = "A code to define the language used in the text of the note."]
11196    pub language: Option<Box<CodeableConcept>>,
11197}
11198#[derive(
11199    Clone,
11200    Reflect,
11201    Debug,
11202    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
11203    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
11204)]
11205#[fhir_serialize_type = "typechoice"]
11206#[type_choice_field_name = "allowed"]
11207pub enum ExplanationOfBenefitBenefitBalanceFinancialAllowedTypeChoice {
11208    UnsignedInt(Box<FHIRUnsignedInt>),
11209    String(Box<FHIRString>),
11210    Money(Box<Money>),
11211}
11212impl Default for ExplanationOfBenefitBenefitBalanceFinancialAllowedTypeChoice {
11213    fn default() -> Self {
11214        ExplanationOfBenefitBenefitBalanceFinancialAllowedTypeChoice::UnsignedInt(Box::new(
11215            Default::default(),
11216        ))
11217    }
11218}
11219#[derive(
11220    Clone,
11221    Reflect,
11222    Debug,
11223    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
11224    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
11225)]
11226#[fhir_serialize_type = "typechoice"]
11227#[type_choice_field_name = "used"]
11228pub enum ExplanationOfBenefitBenefitBalanceFinancialUsedTypeChoice {
11229    UnsignedInt(Box<FHIRUnsignedInt>),
11230    Money(Box<Money>),
11231}
11232impl Default for ExplanationOfBenefitBenefitBalanceFinancialUsedTypeChoice {
11233    fn default() -> Self {
11234        ExplanationOfBenefitBenefitBalanceFinancialUsedTypeChoice::UnsignedInt(Box::new(
11235            Default::default(),
11236        ))
11237    }
11238}
11239#[derive(
11240    Clone,
11241    Reflect,
11242    Debug,
11243    Default,
11244    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
11245    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
11246)]
11247#[fhir_serialize_type = "complex"]
11248#[doc = "Benefits Used to date."]
11249pub struct ExplanationOfBenefitBenefitBalanceFinancial {
11250    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
11251    pub id: Option<String>,
11252    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
11253    pub extension: Option<Vec<Box<Extension>>>,
11254    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
11255    pub modifierExtension: Option<Vec<Box<Extension>>>,
11256    #[rename_field = "type"]
11257    #[doc = "Classification of benefit being provided."]
11258    pub type_: Box<CodeableConcept>,
11259    # [type_choice_variants (complex = ["allowedMoney"] , primitive = ["allowedUnsignedInt" , "allowedString"])]
11260    #[doc = "The quantity of the benefit which is permitted under the coverage."]
11261    pub allowed: Option<ExplanationOfBenefitBenefitBalanceFinancialAllowedTypeChoice>,
11262    # [type_choice_variants (complex = ["usedMoney"] , primitive = ["usedUnsignedInt"])]
11263    #[doc = "The quantity of the benefit which have been consumed to date."]
11264    pub used: Option<ExplanationOfBenefitBenefitBalanceFinancialUsedTypeChoice>,
11265}
11266#[derive(
11267    Clone,
11268    Reflect,
11269    Debug,
11270    Default,
11271    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
11272    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
11273)]
11274#[fhir_serialize_type = "complex"]
11275#[doc = "Balance by Benefit Category."]
11276pub struct ExplanationOfBenefitBenefitBalance {
11277    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
11278    pub id: Option<String>,
11279    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
11280    pub extension: Option<Vec<Box<Extension>>>,
11281    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
11282    pub modifierExtension: Option<Vec<Box<Extension>>>,
11283    #[doc = "Code to identify the general type of benefits under which products and services are provided."]
11284    pub category: Box<CodeableConcept>,
11285    #[primitive]
11286    #[doc = "True if the indicated class of service is excluded from the plan, missing or False indicates the product or service is included in the coverage."]
11287    pub excluded: Option<Box<FHIRBoolean>>,
11288    #[primitive]
11289    #[doc = "A short name or tag for the benefit."]
11290    pub name: Option<Box<FHIRString>>,
11291    #[primitive]
11292    #[doc = "A richer description of the benefit or services covered."]
11293    pub description: Option<Box<FHIRString>>,
11294    #[doc = "Is a flag to indicate whether the benefits refer to in-network providers or out-of-network providers."]
11295    pub network: Option<Box<CodeableConcept>>,
11296    #[doc = "Indicates if the benefits apply to an individual or to the family."]
11297    pub unit: Option<Box<CodeableConcept>>,
11298    #[doc = "The term or period of the values such as 'maximum lifetime benefit' or 'maximum annual visits'."]
11299    pub term: Option<Box<CodeableConcept>>,
11300    #[doc = "Benefits Used to date."]
11301    pub financial: Option<Vec<ExplanationOfBenefitBenefitBalanceFinancial>>,
11302}
11303#[derive(
11304    Clone,
11305    Reflect,
11306    Debug,
11307    Default,
11308    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
11309    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
11310)]
11311#[fhir_serialize_type = "resource"]
11312#[doc = "This resource provides: the claim details; adjudication details from the processing of a Claim; and optionally account balance information, for informing the subscriber of the benefits provided."]
11313pub struct ExplanationOfBenefit {
11314    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
11315    pub id: Option<String>,
11316    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
11317    pub meta: Option<Box<Meta>>,
11318    #[primitive]
11319    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
11320    pub implicitRules: Option<Box<FHIRUri>>,
11321    #[primitive]
11322    #[doc = "The base language in which the resource is written."]
11323    pub language: Option<Box<FHIRCode>>,
11324    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
11325    pub text: Option<Box<Narrative>>,
11326    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
11327    pub contained: Option<Vec<Box<Resource>>>,
11328    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
11329    pub extension: Option<Vec<Box<Extension>>>,
11330    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
11331    pub modifierExtension: Option<Vec<Box<Extension>>>,
11332    #[rename_field = "identifier"]
11333    #[doc = "A unique identifier assigned to this explanation of benefit."]
11334    pub identifier_: Option<Vec<Box<Identifier>>>,
11335    #[primitive]
11336    #[doc = "The status of the resource instance."]
11337    pub status: Box<terminology::ExplanationofbenefitStatus>,
11338    #[rename_field = "type"]
11339    #[doc = "The category of claim, e.g. oral, pharmacy, vision, institutional, professional."]
11340    pub type_: Box<CodeableConcept>,
11341    #[doc = "A finer grained suite of claim type codes which may convey additional information such as Inpatient vs Outpatient and/or a specialty service."]
11342    pub subType: Option<Box<CodeableConcept>>,
11343    #[rename_field = "use"]
11344    #[primitive]
11345    #[doc = "A code to indicate whether the nature of the request is: to request adjudication of products and services previously rendered; or requesting authorization and adjudication for provision in the future; or requesting the non-binding adjudication of the listed products and services which could be provided in the future."]
11346    pub use_: Box<terminology::ClaimUse>,
11347    # [reference (targets = ["Patient"])]
11348    #[doc = "The party to whom the professional services and/or products have been supplied or are being considered and for whom actual for forecast reimbursement is sought."]
11349    pub patient: Box<Reference>,
11350    #[doc = "The period for which charges are being submitted."]
11351    pub billablePeriod: Option<Box<Period>>,
11352    #[primitive]
11353    #[doc = "The date this resource was created."]
11354    pub created: Box<FHIRDateTime>,
11355    # [reference (targets = ["Practitioner" , "PractitionerRole"])]
11356    #[doc = "Individual who created the claim, predetermination or preauthorization."]
11357    pub enterer: Option<Box<Reference>>,
11358    # [reference (targets = ["Organization"])]
11359    #[doc = "The party responsible for authorization, adjudication and reimbursement."]
11360    pub insurer: Box<Reference>,
11361    # [reference (targets = ["Practitioner" , "PractitionerRole" , "Organization"])]
11362    #[doc = "The provider which is responsible for the claim, predetermination or preauthorization."]
11363    pub provider: Box<Reference>,
11364    #[doc = "The provider-required urgency of processing the request. Typical values include: stat, routine deferred."]
11365    pub priority: Option<Box<CodeableConcept>>,
11366    #[doc = "A code to indicate whether and for whom funds are to be reserved for future claims."]
11367    pub fundsReserveRequested: Option<Box<CodeableConcept>>,
11368    #[doc = "A code, used only on a response to a preauthorization, to indicate whether the benefits payable have been reserved and for whom."]
11369    pub fundsReserve: Option<Box<CodeableConcept>>,
11370    #[doc = "Other claims which are related to this claim such as prior submissions or claims for related services or for the same event."]
11371    pub related: Option<Vec<ExplanationOfBenefitRelated>>,
11372    # [reference (targets = ["MedicationRequest" , "VisionPrescription"])]
11373    #[doc = "Prescription to support the dispensing of pharmacy, device or vision products."]
11374    pub prescription: Option<Box<Reference>>,
11375    # [reference (targets = ["MedicationRequest"])]
11376    #[doc = "Original prescription which has been superseded by this prescription to support the dispensing of pharmacy services, medications or products."]
11377    pub originalPrescription: Option<Box<Reference>>,
11378    #[doc = "The party to be reimbursed for cost of the products and services according to the terms of the policy."]
11379    pub payee: Option<ExplanationOfBenefitPayee>,
11380    # [reference (targets = ["ServiceRequest"])]
11381    #[doc = "A reference to a referral resource."]
11382    pub referral: Option<Box<Reference>>,
11383    # [reference (targets = ["Location"])]
11384    #[doc = "Facility where the services were provided."]
11385    pub facility: Option<Box<Reference>>,
11386    # [reference (targets = ["Claim"])]
11387    #[doc = "The business identifier for the instance of the adjudication request: claim predetermination or preauthorization."]
11388    pub claim: Option<Box<Reference>>,
11389    # [reference (targets = ["ClaimResponse"])]
11390    #[doc = "The business identifier for the instance of the adjudication response: claim, predetermination or preauthorization response."]
11391    pub claimResponse: Option<Box<Reference>>,
11392    #[primitive]
11393    #[doc = "The outcome of the claim, predetermination, or preauthorization processing."]
11394    pub outcome: Box<terminology::RemittanceOutcome>,
11395    #[primitive]
11396    #[doc = "A human readable description of the status of the adjudication."]
11397    pub disposition: Option<Box<FHIRString>>,
11398    #[primitive]
11399    #[doc = "Reference from the Insurer which is used in later communications which refers to this adjudication."]
11400    pub preAuthRef: Option<Vec<Box<FHIRString>>>,
11401    #[doc = "The timeframe during which the supplied preauthorization reference may be quoted on claims to obtain the adjudication as provided."]
11402    pub preAuthRefPeriod: Option<Vec<Box<Period>>>,
11403    #[doc = "The members of the team who provided the products and services."]
11404    pub careTeam: Option<Vec<ExplanationOfBenefitCareTeam>>,
11405    #[doc = "Additional information codes regarding exceptions, special considerations, the condition, situation, prior or concurrent issues."]
11406    pub supportingInfo: Option<Vec<ExplanationOfBenefitSupportingInfo>>,
11407    #[doc = "Information about diagnoses relevant to the claim items."]
11408    pub diagnosis: Option<Vec<ExplanationOfBenefitDiagnosis>>,
11409    #[doc = "Procedures performed on the patient relevant to the billing items with the claim."]
11410    pub procedure: Option<Vec<ExplanationOfBenefitProcedure>>,
11411    #[primitive]
11412    #[doc = "This indicates the relative order of a series of EOBs related to different coverages for the same suite of services."]
11413    pub precedence: Option<Box<FHIRPositiveInt>>,
11414    #[cardinality(min = 1usize)]
11415    #[doc = "Financial instruments for reimbursement for the health care products and services specified on the claim."]
11416    pub insurance: Vec<ExplanationOfBenefitInsurance>,
11417    #[doc = "Details of a accident which resulted in injuries which required the products and services listed in the claim."]
11418    pub accident: Option<ExplanationOfBenefitAccident>,
11419    #[doc = "A claim line. Either a simple (a product or service) or a 'group' of details which can also be a simple items or groups of sub-details."]
11420    pub item: Option<Vec<ExplanationOfBenefitItem>>,
11421    #[doc = "The first-tier service adjudications for payor added product or service lines."]
11422    pub addItem: Option<Vec<ExplanationOfBenefitAddItem>>,
11423    #[doc = "The adjudication results which are presented at the header level rather than at the line-item or add-item levels."]
11424    pub adjudication: Option<Vec<ExplanationOfBenefitItemAdjudication>>,
11425    #[doc = "Categorized monetary totals for the adjudication."]
11426    pub total: Option<Vec<ExplanationOfBenefitTotal>>,
11427    #[doc = "Payment details for the adjudication of the claim."]
11428    pub payment: Option<ExplanationOfBenefitPayment>,
11429    #[doc = "A code for the form to be used for printing the content."]
11430    pub formCode: Option<Box<CodeableConcept>>,
11431    #[doc = "The actual form, by reference or inclusion, for printing the content or an EOB."]
11432    pub form: Option<Box<Attachment>>,
11433    #[doc = "A note that describes or explains adjudication results in a human readable form."]
11434    pub processNote: Option<Vec<ExplanationOfBenefitProcessNote>>,
11435    #[doc = "The term of the benefits documented in this response."]
11436    pub benefitPeriod: Option<Box<Period>>,
11437    #[doc = "Balance by Benefit Category."]
11438    pub benefitBalance: Option<Vec<ExplanationOfBenefitBenefitBalance>>,
11439}
11440#[derive(
11441    Clone,
11442    Reflect,
11443    Debug,
11444    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
11445    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
11446)]
11447#[fhir_serialize_type = "typechoice"]
11448#[type_choice_field_name = "born"]
11449pub enum FamilyMemberHistoryBornTypeChoice {
11450    Period(Box<Period>),
11451    Date(Box<FHIRDate>),
11452    String(Box<FHIRString>),
11453}
11454impl Default for FamilyMemberHistoryBornTypeChoice {
11455    fn default() -> Self {
11456        FamilyMemberHistoryBornTypeChoice::Period(Box::new(Default::default()))
11457    }
11458}
11459#[derive(
11460    Clone,
11461    Reflect,
11462    Debug,
11463    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
11464    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
11465)]
11466#[fhir_serialize_type = "typechoice"]
11467#[type_choice_field_name = "age"]
11468pub enum FamilyMemberHistoryAgeTypeChoice {
11469    Age(Box<Age>),
11470    Range(Box<Range>),
11471    String(Box<FHIRString>),
11472}
11473impl Default for FamilyMemberHistoryAgeTypeChoice {
11474    fn default() -> Self {
11475        FamilyMemberHistoryAgeTypeChoice::Age(Box::new(Default::default()))
11476    }
11477}
11478#[derive(
11479    Clone,
11480    Reflect,
11481    Debug,
11482    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
11483    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
11484)]
11485#[fhir_serialize_type = "typechoice"]
11486#[type_choice_field_name = "deceased"]
11487pub enum FamilyMemberHistoryDeceasedTypeChoice {
11488    Boolean(Box<FHIRBoolean>),
11489    Age(Box<Age>),
11490    Range(Box<Range>),
11491    Date(Box<FHIRDate>),
11492    String(Box<FHIRString>),
11493}
11494impl Default for FamilyMemberHistoryDeceasedTypeChoice {
11495    fn default() -> Self {
11496        FamilyMemberHistoryDeceasedTypeChoice::Boolean(Box::new(Default::default()))
11497    }
11498}
11499#[derive(
11500    Clone,
11501    Reflect,
11502    Debug,
11503    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
11504    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
11505)]
11506#[fhir_serialize_type = "typechoice"]
11507#[type_choice_field_name = "onset"]
11508pub enum FamilyMemberHistoryConditionOnsetTypeChoice {
11509    Age(Box<Age>),
11510    Range(Box<Range>),
11511    Period(Box<Period>),
11512    String(Box<FHIRString>),
11513}
11514impl Default for FamilyMemberHistoryConditionOnsetTypeChoice {
11515    fn default() -> Self {
11516        FamilyMemberHistoryConditionOnsetTypeChoice::Age(Box::new(Default::default()))
11517    }
11518}
11519#[derive(
11520    Clone,
11521    Reflect,
11522    Debug,
11523    Default,
11524    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
11525    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
11526)]
11527#[fhir_serialize_type = "complex"]
11528#[doc = "The significant Conditions (or condition) that the family member had. This is a repeating section to allow a system to represent more than one condition per resource, though there is nothing stopping multiple resources - one per condition."]
11529pub struct FamilyMemberHistoryCondition {
11530    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
11531    pub id: Option<String>,
11532    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
11533    pub extension: Option<Vec<Box<Extension>>>,
11534    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
11535    pub modifierExtension: Option<Vec<Box<Extension>>>,
11536    #[doc = "The actual condition specified. Could be a coded condition (like MI or Diabetes) or a less specific string like 'cancer' depending on how much is known about the condition and the capabilities of the creating system."]
11537    pub code: Box<CodeableConcept>,
11538    #[doc = "Indicates what happened following the condition.  If the condition resulted in death, deceased date is captured on the relation."]
11539    pub outcome: Option<Box<CodeableConcept>>,
11540    #[primitive]
11541    #[doc = "This condition contributed to the cause of death of the related person. If contributedToDeath is not populated, then it is unknown."]
11542    pub contributedToDeath: Option<Box<FHIRBoolean>>,
11543    # [type_choice_variants (complex = ["onsetAge" , "onsetRange" , "onsetPeriod"] , primitive = ["onsetString"])]
11544    #[doc = "Either the age of onset, range of approximate age or descriptive string can be recorded.  For conditions with multiple occurrences, this describes the first known occurrence."]
11545    pub onset: Option<FamilyMemberHistoryConditionOnsetTypeChoice>,
11546    #[doc = "An area where general notes can be placed about this specific condition."]
11547    pub note: Option<Vec<Box<Annotation>>>,
11548}
11549#[derive(
11550    Clone,
11551    Reflect,
11552    Debug,
11553    Default,
11554    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
11555    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
11556)]
11557#[fhir_serialize_type = "resource"]
11558#[doc = "Significant health conditions for a person related to the patient relevant in the context of care for the patient."]
11559pub struct FamilyMemberHistory {
11560    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
11561    pub id: Option<String>,
11562    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
11563    pub meta: Option<Box<Meta>>,
11564    #[primitive]
11565    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
11566    pub implicitRules: Option<Box<FHIRUri>>,
11567    #[primitive]
11568    #[doc = "The base language in which the resource is written."]
11569    pub language: Option<Box<FHIRCode>>,
11570    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
11571    pub text: Option<Box<Narrative>>,
11572    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
11573    pub contained: Option<Vec<Box<Resource>>>,
11574    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
11575    pub extension: Option<Vec<Box<Extension>>>,
11576    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
11577    pub modifierExtension: Option<Vec<Box<Extension>>>,
11578    #[rename_field = "identifier"]
11579    #[doc = "Business identifiers assigned to this family member history by the performer or other systems which remain constant as the resource is updated and propagates from server to server."]
11580    pub identifier_: Option<Vec<Box<Identifier>>>,
11581    #[primitive]
11582    #[doc = "The URL pointing to a FHIR-defined protocol, guideline, orderset or other definition that is adhered to in whole or in part by this FamilyMemberHistory."]
11583    pub instantiatesCanonical: Option<Vec<Box<FHIRCanonical>>>,
11584    #[primitive]
11585    #[doc = "The URL pointing to an externally maintained protocol, guideline, orderset or other definition that is adhered to in whole or in part by this FamilyMemberHistory."]
11586    pub instantiatesUri: Option<Vec<Box<FHIRUri>>>,
11587    #[primitive]
11588    #[doc = "A code specifying the status of the record of the family history of a specific family member."]
11589    pub status: Box<terminology::HistoryStatus>,
11590    #[doc = "Describes why the family member's history is not available."]
11591    pub dataAbsentReason: Option<Box<CodeableConcept>>,
11592    # [reference (targets = ["Patient"])]
11593    #[doc = "The person who this history concerns."]
11594    pub patient: Box<Reference>,
11595    #[primitive]
11596    #[doc = "The date (and possibly time) when the family member history was recorded or last updated."]
11597    pub date: Option<Box<FHIRDateTime>>,
11598    #[primitive]
11599    #[doc = "This will either be a name or a description; e.g. \"Aunt Susan\", \"my cousin with the red hair\"."]
11600    pub name: Option<Box<FHIRString>>,
11601    #[doc = "The type of relationship this person has to the patient (father, mother, brother etc.)."]
11602    pub relationship: Box<CodeableConcept>,
11603    #[doc = "The birth sex of the family member."]
11604    pub sex: Option<Box<CodeableConcept>>,
11605    # [type_choice_variants (complex = ["bornPeriod"] , primitive = ["bornDate" , "bornString"])]
11606    #[doc = "The actual or approximate date of birth of the relative."]
11607    pub born: Option<FamilyMemberHistoryBornTypeChoice>,
11608    # [type_choice_variants (complex = ["ageAge" , "ageRange"] , primitive = ["ageString"])]
11609    #[doc = "The age of the relative at the time the family member history is recorded."]
11610    pub age: Option<FamilyMemberHistoryAgeTypeChoice>,
11611    #[primitive]
11612    #[doc = "If true, indicates that the age value specified is an estimated value."]
11613    pub estimatedAge: Option<Box<FHIRBoolean>>,
11614    # [type_choice_variants (complex = ["deceasedAge" , "deceasedRange"] , primitive = ["deceasedBoolean" , "deceasedDate" , "deceasedString"])]
11615    #[doc = "Deceased flag or the actual or approximate age of the relative at the time of death for the family member history record."]
11616    pub deceased: Option<FamilyMemberHistoryDeceasedTypeChoice>,
11617    #[doc = "Describes why the family member history occurred in coded or textual form."]
11618    pub reasonCode: Option<Vec<Box<CodeableConcept>>>,
11619    # [reference (targets = ["Condition" , "Observation" , "AllergyIntolerance" , "QuestionnaireResponse" , "DiagnosticReport" , "DocumentReference"])]
11620    #[doc = "Indicates a Condition, Observation, AllergyIntolerance, or QuestionnaireResponse that justifies this family member history event."]
11621    pub reasonReference: Option<Vec<Box<Reference>>>,
11622    #[doc = "This property allows a non condition-specific note to the made about the related person. Ideally, the note would be in the condition property, but this is not always possible."]
11623    pub note: Option<Vec<Box<Annotation>>>,
11624    #[doc = "The significant Conditions (or condition) that the family member had. This is a repeating section to allow a system to represent more than one condition per resource, though there is nothing stopping multiple resources - one per condition."]
11625    pub condition: Option<Vec<FamilyMemberHistoryCondition>>,
11626}
11627#[derive(
11628    Clone,
11629    Reflect,
11630    Debug,
11631    Default,
11632    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
11633    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
11634)]
11635#[fhir_serialize_type = "resource"]
11636#[doc = "Prospective warnings of potential issues when providing care to the patient."]
11637pub struct Flag {
11638    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
11639    pub id: Option<String>,
11640    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
11641    pub meta: Option<Box<Meta>>,
11642    #[primitive]
11643    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
11644    pub implicitRules: Option<Box<FHIRUri>>,
11645    #[primitive]
11646    #[doc = "The base language in which the resource is written."]
11647    pub language: Option<Box<FHIRCode>>,
11648    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
11649    pub text: Option<Box<Narrative>>,
11650    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
11651    pub contained: Option<Vec<Box<Resource>>>,
11652    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
11653    pub extension: Option<Vec<Box<Extension>>>,
11654    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
11655    pub modifierExtension: Option<Vec<Box<Extension>>>,
11656    #[rename_field = "identifier"]
11657    #[doc = "Business identifiers assigned to this flag by the performer or other systems which remain constant as the resource is updated and propagates from server to server."]
11658    pub identifier_: Option<Vec<Box<Identifier>>>,
11659    #[primitive]
11660    #[doc = "Supports basic workflow."]
11661    pub status: Box<terminology::FlagStatus>,
11662    #[doc = "Allows a flag to be divided into different categories like clinical, administrative etc. Intended to be used as a means of filtering which flags are displayed to particular user or in a given context."]
11663    pub category: Option<Vec<Box<CodeableConcept>>>,
11664    #[doc = "The coded value or textual component of the flag to display to the user."]
11665    pub code: Box<CodeableConcept>,
11666    # [reference (targets = ["Patient" , "Location" , "Group" , "Organization" , "Practitioner" , "PlanDefinition" , "Medication" , "Procedure"])]
11667    #[doc = "The patient, location, group, organization, or practitioner etc. this is about record this flag is associated with."]
11668    pub subject: Box<Reference>,
11669    #[doc = "The period of time from the activation of the flag to inactivation of the flag. If the flag is active, the end of the period should be unspecified."]
11670    pub period: Option<Box<Period>>,
11671    # [reference (targets = ["Encounter"])]
11672    #[doc = "This alert is only relevant during the encounter."]
11673    pub encounter: Option<Box<Reference>>,
11674    # [reference (targets = ["Device" , "Organization" , "Patient" , "Practitioner" , "PractitionerRole"])]
11675    #[doc = "The person, organization or device that created the flag."]
11676    pub author: Option<Box<Reference>>,
11677}
11678#[derive(
11679    Clone,
11680    Reflect,
11681    Debug,
11682    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
11683    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
11684)]
11685#[fhir_serialize_type = "typechoice"]
11686#[type_choice_field_name = "start"]
11687pub enum GoalStartTypeChoice {
11688    Date(Box<FHIRDate>),
11689    CodeableConcept(Box<CodeableConcept>),
11690}
11691impl Default for GoalStartTypeChoice {
11692    fn default() -> Self {
11693        GoalStartTypeChoice::Date(Box::new(Default::default()))
11694    }
11695}
11696#[derive(
11697    Clone,
11698    Reflect,
11699    Debug,
11700    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
11701    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
11702)]
11703#[fhir_serialize_type = "typechoice"]
11704#[type_choice_field_name = "detail"]
11705pub enum GoalTargetDetailTypeChoice {
11706    Quantity(Box<Quantity>),
11707    Range(Box<Range>),
11708    CodeableConcept(Box<CodeableConcept>),
11709    String(Box<FHIRString>),
11710    Boolean(Box<FHIRBoolean>),
11711    Integer(Box<FHIRInteger>),
11712    Ratio(Box<Ratio>),
11713}
11714impl Default for GoalTargetDetailTypeChoice {
11715    fn default() -> Self {
11716        GoalTargetDetailTypeChoice::Quantity(Box::new(Default::default()))
11717    }
11718}
11719#[derive(
11720    Clone,
11721    Reflect,
11722    Debug,
11723    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
11724    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
11725)]
11726#[fhir_serialize_type = "typechoice"]
11727#[type_choice_field_name = "due"]
11728pub enum GoalTargetDueTypeChoice {
11729    Date(Box<FHIRDate>),
11730    Duration(Box<Duration>),
11731}
11732impl Default for GoalTargetDueTypeChoice {
11733    fn default() -> Self {
11734        GoalTargetDueTypeChoice::Date(Box::new(Default::default()))
11735    }
11736}
11737#[derive(
11738    Clone,
11739    Reflect,
11740    Debug,
11741    Default,
11742    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
11743    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
11744)]
11745#[fhir_serialize_type = "complex"]
11746#[doc = "Indicates what should be done by when."]
11747pub struct GoalTarget {
11748    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
11749    pub id: Option<String>,
11750    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
11751    pub extension: Option<Vec<Box<Extension>>>,
11752    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
11753    pub modifierExtension: Option<Vec<Box<Extension>>>,
11754    #[doc = "The parameter whose value is being tracked, e.g. body weight, blood pressure, or hemoglobin A1c level."]
11755    pub measure: Option<Box<CodeableConcept>>,
11756    # [type_choice_variants (complex = ["detailQuantity" , "detailRange" , "detailCodeableConcept" , "detailRatio"] , primitive = ["detailString" , "detailBoolean" , "detailInteger"])]
11757    #[doc = "The target value of the focus to be achieved to signify the fulfillment of the goal, e.g. 150 pounds, 7.0%. Either the high or low or both values of the range can be specified. When a low value is missing, it indicates that the goal is achieved at any focus value at or below the high value. Similarly, if the high value is missing, it indicates that the goal is achieved at any focus value at or above the low value."]
11758    pub detail: Option<GoalTargetDetailTypeChoice>,
11759    # [type_choice_variants (complex = ["dueDuration"] , primitive = ["dueDate"])]
11760    #[doc = "Indicates either the date or the duration after start by which the goal should be met."]
11761    pub due: Option<GoalTargetDueTypeChoice>,
11762}
11763#[derive(
11764    Clone,
11765    Reflect,
11766    Debug,
11767    Default,
11768    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
11769    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
11770)]
11771#[fhir_serialize_type = "resource"]
11772#[doc = "Describes the intended objective(s) for a patient, group or organization care, for example, weight loss, restoring an activity of daily living, obtaining herd immunity via immunization, meeting a process improvement objective, etc."]
11773pub struct Goal {
11774    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
11775    pub id: Option<String>,
11776    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
11777    pub meta: Option<Box<Meta>>,
11778    #[primitive]
11779    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
11780    pub implicitRules: Option<Box<FHIRUri>>,
11781    #[primitive]
11782    #[doc = "The base language in which the resource is written."]
11783    pub language: Option<Box<FHIRCode>>,
11784    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
11785    pub text: Option<Box<Narrative>>,
11786    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
11787    pub contained: Option<Vec<Box<Resource>>>,
11788    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
11789    pub extension: Option<Vec<Box<Extension>>>,
11790    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
11791    pub modifierExtension: Option<Vec<Box<Extension>>>,
11792    #[rename_field = "identifier"]
11793    #[doc = "Business identifiers assigned to this goal by the performer or other systems which remain constant as the resource is updated and propagates from server to server."]
11794    pub identifier_: Option<Vec<Box<Identifier>>>,
11795    #[primitive]
11796    #[doc = "The state of the goal throughout its lifecycle."]
11797    pub lifecycleStatus: Box<terminology::GoalStatus>,
11798    #[doc = "Describes the progression, or lack thereof, towards the goal against the target."]
11799    pub achievementStatus: Option<Box<CodeableConcept>>,
11800    #[doc = "Indicates a category the goal falls within."]
11801    pub category: Option<Vec<Box<CodeableConcept>>>,
11802    #[doc = "Identifies the mutually agreed level of importance associated with reaching/sustaining the goal."]
11803    pub priority: Option<Box<CodeableConcept>>,
11804    #[doc = "Human-readable and/or coded description of a specific desired objective of care, such as \"control blood pressure\" or \"negotiate an obstacle course\" or \"dance with child at wedding\"."]
11805    pub description: Box<CodeableConcept>,
11806    # [reference (targets = ["Patient" , "Group" , "Organization"])]
11807    #[doc = "Identifies the patient, group or organization for whom the goal is being established."]
11808    pub subject: Box<Reference>,
11809    # [type_choice_variants (complex = ["startCodeableConcept"] , primitive = ["startDate"])]
11810    #[doc = "The date or event after which the goal should begin being pursued."]
11811    pub start: Option<GoalStartTypeChoice>,
11812    #[doc = "Indicates what should be done by when."]
11813    pub target: Option<Vec<GoalTarget>>,
11814    #[primitive]
11815    #[doc = "Identifies when the current status.  I.e. When initially created, when achieved, when cancelled, etc."]
11816    pub statusDate: Option<Box<FHIRDate>>,
11817    #[primitive]
11818    #[doc = "Captures the reason for the current status."]
11819    pub statusReason: Option<Box<FHIRString>>,
11820    # [reference (targets = ["Patient" , "Practitioner" , "PractitionerRole" , "RelatedPerson"])]
11821    #[doc = "Indicates whose goal this is - patient goal, practitioner goal, etc."]
11822    pub expressedBy: Option<Box<Reference>>,
11823    # [reference (targets = ["Condition" , "Observation" , "MedicationStatement" , "NutritionOrder" , "ServiceRequest" , "RiskAssessment"])]
11824    #[doc = "The identified conditions and other health record elements that are intended to be addressed by the goal."]
11825    pub addresses: Option<Vec<Box<Reference>>>,
11826    #[doc = "Any comments related to the goal."]
11827    pub note: Option<Vec<Box<Annotation>>>,
11828    #[doc = "Identifies the change (or lack of change) at the point when the status of the goal is assessed."]
11829    pub outcomeCode: Option<Vec<Box<CodeableConcept>>>,
11830    # [reference (targets = ["Observation"])]
11831    #[doc = "Details of what's changed (or not changed)."]
11832    pub outcomeReference: Option<Vec<Box<Reference>>>,
11833}
11834#[derive(
11835    Clone,
11836    Reflect,
11837    Debug,
11838    Default,
11839    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
11840    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
11841)]
11842#[fhir_serialize_type = "complex"]
11843#[doc = "Compartment Consistency Rules."]
11844pub struct GraphDefinitionLinkTargetCompartment {
11845    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
11846    pub id: Option<String>,
11847    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
11848    pub extension: Option<Vec<Box<Extension>>>,
11849    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
11850    pub modifierExtension: Option<Vec<Box<Extension>>>,
11851    #[rename_field = "use"]
11852    #[primitive]
11853    #[doc = "Defines how the compartment rule is used - whether it it is used to test whether resources are subject to the rule, or whether it is a rule that must be followed."]
11854    pub use_: Box<terminology::GraphCompartmentUse>,
11855    #[primitive]
11856    #[doc = "Identifies the compartment."]
11857    pub code: Box<terminology::CompartmentType>,
11858    #[primitive]
11859    #[doc = "identical | matching | different | no-rule | custom."]
11860    pub rule: Box<terminology::GraphCompartmentRule>,
11861    #[primitive]
11862    #[doc = "Custom rule, as a FHIRPath expression."]
11863    pub expression: Option<Box<FHIRString>>,
11864    #[primitive]
11865    #[doc = "Documentation for FHIRPath expression."]
11866    pub description: Option<Box<FHIRString>>,
11867}
11868#[derive(
11869    Clone,
11870    Reflect,
11871    Debug,
11872    Default,
11873    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
11874    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
11875)]
11876#[fhir_serialize_type = "complex"]
11877#[doc = "Potential target for the link."]
11878pub struct GraphDefinitionLinkTarget {
11879    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
11880    pub id: Option<String>,
11881    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
11882    pub extension: Option<Vec<Box<Extension>>>,
11883    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
11884    pub modifierExtension: Option<Vec<Box<Extension>>>,
11885    #[rename_field = "type"]
11886    #[primitive]
11887    #[doc = "Type of resource this link refers to."]
11888    pub type_: Box<terminology::ResourceTypes>,
11889    #[primitive]
11890    #[doc = "A set of parameters to look up."]
11891    pub params: Option<Box<FHIRString>>,
11892    #[primitive]
11893    #[doc = "Profile for the target resource."]
11894    pub profile: Option<Box<FHIRCanonical>>,
11895    #[doc = "Compartment Consistency Rules."]
11896    pub compartment: Option<Vec<GraphDefinitionLinkTargetCompartment>>,
11897    #[doc = "Additional links from target resource."]
11898    pub link: Option<Vec<GraphDefinitionLink>>,
11899}
11900#[derive(
11901    Clone,
11902    Reflect,
11903    Debug,
11904    Default,
11905    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
11906    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
11907)]
11908#[fhir_serialize_type = "complex"]
11909#[doc = "Links this graph makes rules about."]
11910pub struct GraphDefinitionLink {
11911    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
11912    pub id: Option<String>,
11913    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
11914    pub extension: Option<Vec<Box<Extension>>>,
11915    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
11916    pub modifierExtension: Option<Vec<Box<Extension>>>,
11917    #[primitive]
11918    #[doc = "A FHIR expression that identifies one of FHIR References to other resources."]
11919    pub path: Option<Box<FHIRString>>,
11920    #[primitive]
11921    #[doc = "Which slice (if profiled)."]
11922    pub sliceName: Option<Box<FHIRString>>,
11923    #[primitive]
11924    #[doc = "Minimum occurrences for this link."]
11925    pub min: Option<Box<FHIRInteger>>,
11926    #[primitive]
11927    #[doc = "Maximum occurrences for this link."]
11928    pub max: Option<Box<FHIRString>>,
11929    #[primitive]
11930    #[doc = "Information about why this link is of interest in this graph definition."]
11931    pub description: Option<Box<FHIRString>>,
11932    #[doc = "Potential target for the link."]
11933    pub target: Option<Vec<GraphDefinitionLinkTarget>>,
11934}
11935#[derive(
11936    Clone,
11937    Reflect,
11938    Debug,
11939    Default,
11940    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
11941    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
11942)]
11943#[fhir_serialize_type = "resource"]
11944#[doc = "A formal computable definition of a graph of resources - that is, a coherent set of resources that form a graph by following references. The Graph Definition resource defines a set and makes rules about the set."]
11945pub struct GraphDefinition {
11946    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
11947    pub id: Option<String>,
11948    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
11949    pub meta: Option<Box<Meta>>,
11950    #[primitive]
11951    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
11952    pub implicitRules: Option<Box<FHIRUri>>,
11953    #[primitive]
11954    #[doc = "The base language in which the resource is written."]
11955    pub language: Option<Box<FHIRCode>>,
11956    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
11957    pub text: Option<Box<Narrative>>,
11958    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
11959    pub contained: Option<Vec<Box<Resource>>>,
11960    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
11961    pub extension: Option<Vec<Box<Extension>>>,
11962    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
11963    pub modifierExtension: Option<Vec<Box<Extension>>>,
11964    #[primitive]
11965    #[doc = "An absolute URI that is used to identify this graph definition when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this graph definition is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the graph definition is stored on different servers."]
11966    pub url: Option<Box<FHIRUri>>,
11967    #[primitive]
11968    #[doc = "The identifier that is used to identify this version of the graph definition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the graph definition author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence."]
11969    pub version: Option<Box<FHIRString>>,
11970    #[primitive]
11971    #[doc = "A natural language name identifying the graph definition. This name should be usable as an identifier for the module by machine processing applications such as code generation."]
11972    pub name: Box<FHIRString>,
11973    #[primitive]
11974    #[doc = "The status of this graph definition. Enables tracking the life-cycle of the content."]
11975    pub status: Box<terminology::PublicationStatus>,
11976    #[primitive]
11977    #[doc = "A Boolean value to indicate that this graph definition is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage."]
11978    pub experimental: Option<Box<FHIRBoolean>>,
11979    #[primitive]
11980    #[doc = "The date  (and optionally time) when the graph definition was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the graph definition changes."]
11981    pub date: Option<Box<FHIRDateTime>>,
11982    #[primitive]
11983    #[doc = "The name of the organization or individual that published the graph definition."]
11984    pub publisher: Option<Box<FHIRString>>,
11985    #[doc = "Contact details to assist a user in finding and communicating with the publisher."]
11986    pub contact: Option<Vec<Box<ContactDetail>>>,
11987    #[primitive]
11988    #[doc = "A free text natural language description of the graph definition from a consumer's perspective."]
11989    pub description: Option<Box<FHIRMarkdown>>,
11990    #[doc = "The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate graph definition instances."]
11991    pub useContext: Option<Vec<Box<UsageContext>>>,
11992    #[doc = "A legal or geographic region in which the graph definition is intended to be used."]
11993    pub jurisdiction: Option<Vec<Box<CodeableConcept>>>,
11994    #[primitive]
11995    #[doc = "Explanation of why this graph definition is needed and why it has been designed as it has."]
11996    pub purpose: Option<Box<FHIRMarkdown>>,
11997    #[primitive]
11998    #[doc = "The type of FHIR resource at which instances of this graph start."]
11999    pub start: Box<terminology::ResourceTypes>,
12000    #[primitive]
12001    #[doc = "The profile that describes the use of the base resource."]
12002    pub profile: Option<Box<FHIRCanonical>>,
12003    #[doc = "Links this graph makes rules about."]
12004    pub link: Option<Vec<GraphDefinitionLink>>,
12005}
12006#[derive(
12007    Clone,
12008    Reflect,
12009    Debug,
12010    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
12011    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
12012)]
12013#[fhir_serialize_type = "typechoice"]
12014#[type_choice_field_name = "value"]
12015pub enum GroupCharacteristicValueTypeChoice {
12016    CodeableConcept(Box<CodeableConcept>),
12017    Boolean(Box<FHIRBoolean>),
12018    Quantity(Box<Quantity>),
12019    Range(Box<Range>),
12020    Reference(Box<Reference>),
12021}
12022impl Default for GroupCharacteristicValueTypeChoice {
12023    fn default() -> Self {
12024        GroupCharacteristicValueTypeChoice::CodeableConcept(Box::new(Default::default()))
12025    }
12026}
12027#[derive(
12028    Clone,
12029    Reflect,
12030    Debug,
12031    Default,
12032    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
12033    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
12034)]
12035#[fhir_serialize_type = "complex"]
12036#[doc = "Identifies traits whose presence r absence is shared by members of the group."]
12037pub struct GroupCharacteristic {
12038    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
12039    pub id: Option<String>,
12040    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
12041    pub extension: Option<Vec<Box<Extension>>>,
12042    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
12043    pub modifierExtension: Option<Vec<Box<Extension>>>,
12044    #[doc = "A code that identifies the kind of trait being asserted."]
12045    pub code: Box<CodeableConcept>,
12046    # [type_choice_variants (complex = ["valueCodeableConcept" , "valueQuantity" , "valueRange" , "valueReference"] , primitive = ["valueBoolean"])]
12047    #[doc = "The value of the trait that holds (or does not hold - see 'exclude') for members of the group."]
12048    pub value: GroupCharacteristicValueTypeChoice,
12049    #[primitive]
12050    #[doc = "If true, indicates the characteristic is one that is NOT held by members of the group."]
12051    pub exclude: Box<FHIRBoolean>,
12052    #[doc = "The period over which the characteristic is tested; e.g. the patient had an operation during the month of June."]
12053    pub period: Option<Box<Period>>,
12054}
12055#[derive(
12056    Clone,
12057    Reflect,
12058    Debug,
12059    Default,
12060    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
12061    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
12062)]
12063#[fhir_serialize_type = "complex"]
12064#[doc = "Identifies the resource instances that are members of the group."]
12065pub struct GroupMember {
12066    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
12067    pub id: Option<String>,
12068    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
12069    pub extension: Option<Vec<Box<Extension>>>,
12070    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
12071    pub modifierExtension: Option<Vec<Box<Extension>>>,
12072    # [reference (targets = ["Patient" , "Practitioner" , "PractitionerRole" , "Device" , "Medication" , "Substance" , "Group"])]
12073    #[doc = "A reference to the entity that is a member of the group. Must be consistent with Group.type. If the entity is another group, then the type must be the same."]
12074    pub entity: Box<Reference>,
12075    #[doc = "The period that the member was in the group, if known."]
12076    pub period: Option<Box<Period>>,
12077    #[primitive]
12078    #[doc = "A flag to indicate that the member is no longer in the group, but previously may have been a member."]
12079    pub inactive: Option<Box<FHIRBoolean>>,
12080}
12081#[derive(
12082    Clone,
12083    Reflect,
12084    Debug,
12085    Default,
12086    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
12087    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
12088)]
12089#[fhir_serialize_type = "resource"]
12090#[doc = "Represents a defined collection of entities that may be discussed or acted upon collectively but which are not expected to act collectively, and are not formally or legally recognized; i.e. a collection of entities that isn't an Organization."]
12091pub struct Group {
12092    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
12093    pub id: Option<String>,
12094    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
12095    pub meta: Option<Box<Meta>>,
12096    #[primitive]
12097    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
12098    pub implicitRules: Option<Box<FHIRUri>>,
12099    #[primitive]
12100    #[doc = "The base language in which the resource is written."]
12101    pub language: Option<Box<FHIRCode>>,
12102    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
12103    pub text: Option<Box<Narrative>>,
12104    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
12105    pub contained: Option<Vec<Box<Resource>>>,
12106    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
12107    pub extension: Option<Vec<Box<Extension>>>,
12108    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
12109    pub modifierExtension: Option<Vec<Box<Extension>>>,
12110    #[rename_field = "identifier"]
12111    #[doc = "A unique business identifier for this group."]
12112    pub identifier_: Option<Vec<Box<Identifier>>>,
12113    #[primitive]
12114    #[doc = "Indicates whether the record for the group is available for use or is merely being retained for historical purposes."]
12115    pub active: Option<Box<FHIRBoolean>>,
12116    #[rename_field = "type"]
12117    #[primitive]
12118    #[doc = "Identifies the broad classification of the kind of resources the group includes."]
12119    pub type_: Box<terminology::GroupType>,
12120    #[primitive]
12121    #[doc = "If true, indicates that the resource refers to a specific group of real individuals.  If false, the group defines a set of intended individuals."]
12122    pub actual: Box<FHIRBoolean>,
12123    #[doc = "Provides a specific type of resource the group includes; e.g. \"cow\", \"syringe\", etc."]
12124    pub code: Option<Box<CodeableConcept>>,
12125    #[primitive]
12126    #[doc = "A label assigned to the group for human identification and communication."]
12127    pub name: Option<Box<FHIRString>>,
12128    #[primitive]
12129    #[doc = "A count of the number of resource instances that are part of the group."]
12130    pub quantity: Option<Box<FHIRUnsignedInt>>,
12131    # [reference (targets = ["Organization" , "RelatedPerson" , "Practitioner" , "PractitionerRole"])]
12132    #[doc = "Entity responsible for defining and maintaining Group characteristics and/or registered members."]
12133    pub managingEntity: Option<Box<Reference>>,
12134    #[doc = "Identifies traits whose presence r absence is shared by members of the group."]
12135    pub characteristic: Option<Vec<GroupCharacteristic>>,
12136    #[doc = "Identifies the resource instances that are members of the group."]
12137    pub member: Option<Vec<GroupMember>>,
12138}
12139#[derive(
12140    Clone,
12141    Reflect,
12142    Debug,
12143    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
12144    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
12145)]
12146#[fhir_serialize_type = "typechoice"]
12147#[type_choice_field_name = "module"]
12148pub enum GuidanceResponseModuleTypeChoice {
12149    Uri(Box<FHIRUri>),
12150    Canonical(Box<FHIRCanonical>),
12151    CodeableConcept(Box<CodeableConcept>),
12152}
12153impl Default for GuidanceResponseModuleTypeChoice {
12154    fn default() -> Self {
12155        GuidanceResponseModuleTypeChoice::Uri(Box::new(Default::default()))
12156    }
12157}
12158#[derive(
12159    Clone,
12160    Reflect,
12161    Debug,
12162    Default,
12163    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
12164    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
12165)]
12166#[fhir_serialize_type = "resource"]
12167#[doc = "A guidance response is the formal response to a guidance request, including any output parameters returned by the evaluation, as well as the description of any proposed actions to be taken."]
12168pub struct GuidanceResponse {
12169    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
12170    pub id: Option<String>,
12171    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
12172    pub meta: Option<Box<Meta>>,
12173    #[primitive]
12174    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
12175    pub implicitRules: Option<Box<FHIRUri>>,
12176    #[primitive]
12177    #[doc = "The base language in which the resource is written."]
12178    pub language: Option<Box<FHIRCode>>,
12179    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
12180    pub text: Option<Box<Narrative>>,
12181    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
12182    pub contained: Option<Vec<Box<Resource>>>,
12183    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
12184    pub extension: Option<Vec<Box<Extension>>>,
12185    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
12186    pub modifierExtension: Option<Vec<Box<Extension>>>,
12187    #[doc = "The identifier of the request associated with this response. If an identifier was given as part of the request, it will be reproduced here to enable the requester to more easily identify the response in a multi-request scenario."]
12188    pub requestIdentifier: Option<Box<Identifier>>,
12189    #[rename_field = "identifier"]
12190    #[doc = "Allows a service to provide  unique, business identifiers for the response."]
12191    pub identifier_: Option<Vec<Box<Identifier>>>,
12192    # [type_choice_variants (complex = ["moduleCodeableConcept"] , primitive = ["moduleUri" , "moduleCanonical"])]
12193    #[doc = "An identifier, CodeableConcept or canonical reference to the guidance that was requested."]
12194    pub module: GuidanceResponseModuleTypeChoice,
12195    #[primitive]
12196    #[doc = "The status of the response. If the evaluation is completed successfully, the status will indicate success. However, in order to complete the evaluation, the engine may require more information. In this case, the status will be data-required, and the response will contain a description of the additional required information. If the evaluation completed successfully, but the engine determines that a potentially more accurate response could be provided if more data was available, the status will be data-requested, and the response will contain a description of the additional requested information."]
12197    pub status: Box<terminology::GuidanceResponseStatus>,
12198    # [reference (targets = ["Patient" , "Group"])]
12199    #[doc = "The patient for which the request was processed."]
12200    pub subject: Option<Box<Reference>>,
12201    # [reference (targets = ["Encounter"])]
12202    #[doc = "The encounter during which this response was created or to which the creation of this record is tightly associated."]
12203    pub encounter: Option<Box<Reference>>,
12204    #[primitive]
12205    #[doc = "Indicates when the guidance response was processed."]
12206    pub occurrenceDateTime: Option<Box<FHIRDateTime>>,
12207    # [reference (targets = ["Device"])]
12208    #[doc = "Provides a reference to the device that performed the guidance."]
12209    pub performer: Option<Box<Reference>>,
12210    #[doc = "Describes the reason for the guidance response in coded or textual form."]
12211    pub reasonCode: Option<Vec<Box<CodeableConcept>>>,
12212    # [reference (targets = ["Condition" , "Observation" , "DiagnosticReport" , "DocumentReference"])]
12213    #[doc = "Indicates the reason the request was initiated. This is typically provided as a parameter to the evaluation and echoed by the service, although for some use cases, such as subscription- or event-based scenarios, it may provide an indication of the cause for the response."]
12214    pub reasonReference: Option<Vec<Box<Reference>>>,
12215    #[doc = "Provides a mechanism to communicate additional information about the response."]
12216    pub note: Option<Vec<Box<Annotation>>>,
12217    # [reference (targets = ["OperationOutcome"])]
12218    #[doc = "Messages resulting from the evaluation of the artifact or artifacts. As part of evaluating the request, the engine may produce informational or warning messages. These messages will be provided by this element."]
12219    pub evaluationMessage: Option<Vec<Box<Reference>>>,
12220    # [reference (targets = ["Parameters"])]
12221    #[doc = "The output parameters of the evaluation, if any. Many modules will result in the return of specific resources such as procedure or communication requests that are returned as part of the operation result. However, modules may define specific outputs that would be returned as the result of the evaluation, and these would be returned in this element."]
12222    pub outputParameters: Option<Box<Reference>>,
12223    # [reference (targets = ["CarePlan" , "RequestGroup"])]
12224    #[doc = "The actions, if any, produced by the evaluation of the artifact."]
12225    pub result: Option<Box<Reference>>,
12226    #[doc = "If the evaluation could not be completed due to lack of information, or additional information would potentially result in a more accurate response, this element will a description of the data required in order to proceed with the evaluation. A subsequent request to the service should include this data."]
12227    pub dataRequirement: Option<Vec<Box<DataRequirement>>>,
12228}
12229#[derive(
12230    Clone,
12231    Reflect,
12232    Debug,
12233    Default,
12234    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
12235    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
12236)]
12237#[fhir_serialize_type = "complex"]
12238#[doc = "Does this service have specific eligibility requirements that need to be met in order to use the service?"]
12239pub struct HealthcareServiceEligibility {
12240    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
12241    pub id: Option<String>,
12242    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
12243    pub extension: Option<Vec<Box<Extension>>>,
12244    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
12245    pub modifierExtension: Option<Vec<Box<Extension>>>,
12246    #[doc = "Coded value for the eligibility."]
12247    pub code: Option<Box<CodeableConcept>>,
12248    #[primitive]
12249    #[doc = "Describes the eligibility conditions for the service."]
12250    pub comment: Option<Box<FHIRMarkdown>>,
12251}
12252#[derive(
12253    Clone,
12254    Reflect,
12255    Debug,
12256    Default,
12257    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
12258    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
12259)]
12260#[fhir_serialize_type = "complex"]
12261#[doc = "A collection of times that the Service Site is available."]
12262pub struct HealthcareServiceAvailableTime {
12263    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
12264    pub id: Option<String>,
12265    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
12266    pub extension: Option<Vec<Box<Extension>>>,
12267    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
12268    pub modifierExtension: Option<Vec<Box<Extension>>>,
12269    #[primitive]
12270    #[doc = "Indicates which days of the week are available between the start and end Times."]
12271    pub daysOfWeek: Option<Vec<Box<terminology::DaysOfWeek>>>,
12272    #[primitive]
12273    #[doc = "Is this always available? (hence times are irrelevant) e.g. 24 hour service."]
12274    pub allDay: Option<Box<FHIRBoolean>>,
12275    #[primitive]
12276    #[doc = "The opening time of day. Note: If the AllDay flag is set, then this time is ignored."]
12277    pub availableStartTime: Option<Box<FHIRTime>>,
12278    #[primitive]
12279    #[doc = "The closing time of day. Note: If the AllDay flag is set, then this time is ignored."]
12280    pub availableEndTime: Option<Box<FHIRTime>>,
12281}
12282#[derive(
12283    Clone,
12284    Reflect,
12285    Debug,
12286    Default,
12287    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
12288    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
12289)]
12290#[fhir_serialize_type = "complex"]
12291#[doc = "The HealthcareService is not available during this period of time due to the provided reason."]
12292pub struct HealthcareServiceNotAvailable {
12293    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
12294    pub id: Option<String>,
12295    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
12296    pub extension: Option<Vec<Box<Extension>>>,
12297    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
12298    pub modifierExtension: Option<Vec<Box<Extension>>>,
12299    #[primitive]
12300    #[doc = "The reason that can be presented to the user as to why this time is not available."]
12301    pub description: Box<FHIRString>,
12302    #[doc = "Service is not available (seasonally or for a public holiday) from this date."]
12303    pub during: Option<Box<Period>>,
12304}
12305#[derive(
12306    Clone,
12307    Reflect,
12308    Debug,
12309    Default,
12310    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
12311    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
12312)]
12313#[fhir_serialize_type = "resource"]
12314#[doc = "The details of a healthcare service available at a location."]
12315pub struct HealthcareService {
12316    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
12317    pub id: Option<String>,
12318    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
12319    pub meta: Option<Box<Meta>>,
12320    #[primitive]
12321    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
12322    pub implicitRules: Option<Box<FHIRUri>>,
12323    #[primitive]
12324    #[doc = "The base language in which the resource is written."]
12325    pub language: Option<Box<FHIRCode>>,
12326    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
12327    pub text: Option<Box<Narrative>>,
12328    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
12329    pub contained: Option<Vec<Box<Resource>>>,
12330    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
12331    pub extension: Option<Vec<Box<Extension>>>,
12332    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
12333    pub modifierExtension: Option<Vec<Box<Extension>>>,
12334    #[rename_field = "identifier"]
12335    #[doc = "External identifiers for this item."]
12336    pub identifier_: Option<Vec<Box<Identifier>>>,
12337    #[primitive]
12338    #[doc = "This flag is used to mark the record to not be used. This is not used when a center is closed for maintenance, or for holidays, the notAvailable period is to be used for this."]
12339    pub active: Option<Box<FHIRBoolean>>,
12340    # [reference (targets = ["Organization"])]
12341    #[doc = "The organization that provides this healthcare service."]
12342    pub providedBy: Option<Box<Reference>>,
12343    #[doc = "Identifies the broad category of service being performed or delivered."]
12344    pub category: Option<Vec<Box<CodeableConcept>>>,
12345    #[rename_field = "type"]
12346    #[doc = "The specific type of service that may be delivered or performed."]
12347    pub type_: Option<Vec<Box<CodeableConcept>>>,
12348    #[doc = "Collection of specialties handled by the service site. This is more of a medical term."]
12349    pub specialty: Option<Vec<Box<CodeableConcept>>>,
12350    # [reference (targets = ["Location"])]
12351    #[doc = "The location(s) where this healthcare service may be provided."]
12352    pub location: Option<Vec<Box<Reference>>>,
12353    #[primitive]
12354    #[doc = "Further description of the service as it would be presented to a consumer while searching."]
12355    pub name: Option<Box<FHIRString>>,
12356    #[primitive]
12357    #[doc = "Any additional description of the service and/or any specific issues not covered by the other attributes, which can be displayed as further detail under the serviceName."]
12358    pub comment: Option<Box<FHIRString>>,
12359    #[primitive]
12360    #[doc = "Extra details about the service that can't be placed in the other fields."]
12361    pub extraDetails: Option<Box<FHIRMarkdown>>,
12362    #[doc = "If there is a photo/symbol associated with this HealthcareService, it may be included here to facilitate quick identification of the service in a list."]
12363    pub photo: Option<Box<Attachment>>,
12364    #[doc = "List of contacts related to this specific healthcare service."]
12365    pub telecom: Option<Vec<Box<ContactPoint>>>,
12366    # [reference (targets = ["Location"])]
12367    #[doc = "The location(s) that this service is available to (not where the service is provided)."]
12368    pub coverageArea: Option<Vec<Box<Reference>>>,
12369    #[doc = "The code(s) that detail the conditions under which the healthcare service is available/offered."]
12370    pub serviceProvisionCode: Option<Vec<Box<CodeableConcept>>>,
12371    #[doc = "Does this service have specific eligibility requirements that need to be met in order to use the service?"]
12372    pub eligibility: Option<Vec<HealthcareServiceEligibility>>,
12373    #[doc = "Programs that this service is applicable to."]
12374    pub program: Option<Vec<Box<CodeableConcept>>>,
12375    #[doc = "Collection of characteristics (attributes)."]
12376    pub characteristic: Option<Vec<Box<CodeableConcept>>>,
12377    #[doc = "Some services are specifically made available in multiple languages, this property permits a directory to declare the languages this is offered in. Typically this is only provided where a service operates in communities with mixed languages used."]
12378    pub communication: Option<Vec<Box<CodeableConcept>>>,
12379    #[doc = "Ways that the service accepts referrals, if this is not provided then it is implied that no referral is required."]
12380    pub referralMethod: Option<Vec<Box<CodeableConcept>>>,
12381    #[primitive]
12382    #[doc = "Indicates whether or not a prospective consumer will require an appointment for a particular service at a site to be provided by the Organization. Indicates if an appointment is required for access to this service."]
12383    pub appointmentRequired: Option<Box<FHIRBoolean>>,
12384    #[doc = "A collection of times that the Service Site is available."]
12385    pub availableTime: Option<Vec<HealthcareServiceAvailableTime>>,
12386    #[doc = "The HealthcareService is not available during this period of time due to the provided reason."]
12387    pub notAvailable: Option<Vec<HealthcareServiceNotAvailable>>,
12388    #[primitive]
12389    #[doc = "A description of site availability exceptions, e.g. public holiday availability. Succinctly describing all possible exceptions to normal site availability as details in the available Times and not available Times."]
12390    pub availabilityExceptions: Option<Box<FHIRString>>,
12391    # [reference (targets = ["Endpoint"])]
12392    #[doc = "Technical endpoints providing access to services operated for the specific healthcare services defined at this resource."]
12393    pub endpoint: Option<Vec<Box<Reference>>>,
12394}
12395#[derive(
12396    Clone,
12397    Reflect,
12398    Debug,
12399    Default,
12400    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
12401    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
12402)]
12403#[fhir_serialize_type = "complex"]
12404#[doc = "Indicates who or what performed the series and how they were involved."]
12405pub struct ImagingStudySeriesPerformer {
12406    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
12407    pub id: Option<String>,
12408    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
12409    pub extension: Option<Vec<Box<Extension>>>,
12410    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
12411    pub modifierExtension: Option<Vec<Box<Extension>>>,
12412    #[doc = "Distinguishes the type of involvement of the performer in the series."]
12413    pub function: Option<Box<CodeableConcept>>,
12414    # [reference (targets = ["Practitioner" , "PractitionerRole" , "Organization" , "CareTeam" , "Patient" , "Device" , "RelatedPerson"])]
12415    #[doc = "Indicates who or what performed the series."]
12416    pub actor: Box<Reference>,
12417}
12418#[derive(
12419    Clone,
12420    Reflect,
12421    Debug,
12422    Default,
12423    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
12424    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
12425)]
12426#[fhir_serialize_type = "complex"]
12427#[doc = "A single SOP instance within the series, e.g. an image, or presentation state."]
12428pub struct ImagingStudySeriesInstance {
12429    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
12430    pub id: Option<String>,
12431    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
12432    pub extension: Option<Vec<Box<Extension>>>,
12433    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
12434    pub modifierExtension: Option<Vec<Box<Extension>>>,
12435    #[primitive]
12436    #[doc = "The DICOM SOP Instance UID for this image or other DICOM content."]
12437    pub uid: Box<FHIRId>,
12438    #[doc = "DICOM instance  type."]
12439    pub sopClass: Box<Coding>,
12440    #[primitive]
12441    #[doc = "The number of instance in the series."]
12442    pub number: Option<Box<FHIRUnsignedInt>>,
12443    #[primitive]
12444    #[doc = "The description of the instance."]
12445    pub title: Option<Box<FHIRString>>,
12446}
12447#[derive(
12448    Clone,
12449    Reflect,
12450    Debug,
12451    Default,
12452    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
12453    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
12454)]
12455#[fhir_serialize_type = "complex"]
12456#[doc = "Each study has one or more series of images or other content."]
12457pub struct ImagingStudySeries {
12458    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
12459    pub id: Option<String>,
12460    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
12461    pub extension: Option<Vec<Box<Extension>>>,
12462    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
12463    pub modifierExtension: Option<Vec<Box<Extension>>>,
12464    #[primitive]
12465    #[doc = "The DICOM Series Instance UID for the series."]
12466    pub uid: Box<FHIRId>,
12467    #[primitive]
12468    #[doc = "The numeric identifier of this series in the study."]
12469    pub number: Option<Box<FHIRUnsignedInt>>,
12470    #[doc = "The modality of this series sequence."]
12471    pub modality: Box<Coding>,
12472    #[primitive]
12473    #[doc = "A description of the series."]
12474    pub description: Option<Box<FHIRString>>,
12475    #[primitive]
12476    #[doc = "Number of SOP Instances in the Study. The value given may be larger than the number of instance elements this resource contains due to resource availability, security, or other factors. This element should be present if any instance elements are present."]
12477    pub numberOfInstances: Option<Box<FHIRUnsignedInt>>,
12478    # [reference (targets = ["Endpoint"])]
12479    #[doc = "The network service providing access (e.g., query, view, or retrieval) for this series. See implementation notes for information about using DICOM endpoints. A series-level endpoint, if present, has precedence over a study-level endpoint with the same Endpoint.connectionType."]
12480    pub endpoint: Option<Vec<Box<Reference>>>,
12481    #[doc = "The anatomic structures examined. See DICOM Part 16 Annex L (http://dicom.nema.org/medical/dicom/current/output/chtml/part16/chapter_L.html) for DICOM to SNOMED-CT mappings. The bodySite may indicate the laterality of body part imaged; if so, it shall be consistent with any content of ImagingStudy.series.laterality."]
12482    pub bodySite: Option<Box<Coding>>,
12483    #[doc = "The laterality of the (possibly paired) anatomic structures examined. E.g., the left knee, both lungs, or unpaired abdomen. If present, shall be consistent with any laterality information indicated in ImagingStudy.series.bodySite."]
12484    pub laterality: Option<Box<Coding>>,
12485    # [reference (targets = ["Specimen"])]
12486    #[doc = "The specimen imaged, e.g., for whole slide imaging of a biopsy."]
12487    pub specimen: Option<Vec<Box<Reference>>>,
12488    #[primitive]
12489    #[doc = "The date and time the series was started."]
12490    pub started: Option<Box<FHIRDateTime>>,
12491    #[doc = "Indicates who or what performed the series and how they were involved."]
12492    pub performer: Option<Vec<ImagingStudySeriesPerformer>>,
12493    #[doc = "A single SOP instance within the series, e.g. an image, or presentation state."]
12494    pub instance: Option<Vec<ImagingStudySeriesInstance>>,
12495}
12496#[derive(
12497    Clone,
12498    Reflect,
12499    Debug,
12500    Default,
12501    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
12502    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
12503)]
12504#[fhir_serialize_type = "resource"]
12505#[doc = "Representation of the content produced in a DICOM imaging study. A study comprises a set of series, each of which includes a set of Service-Object Pair Instances (SOP Instances - images or other data) acquired or produced in a common context.  A series is of only one modality (e.g. X-ray, CT, MR, ultrasound), but a study may have multiple series of different modalities."]
12506pub struct ImagingStudy {
12507    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
12508    pub id: Option<String>,
12509    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
12510    pub meta: Option<Box<Meta>>,
12511    #[primitive]
12512    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
12513    pub implicitRules: Option<Box<FHIRUri>>,
12514    #[primitive]
12515    #[doc = "The base language in which the resource is written."]
12516    pub language: Option<Box<FHIRCode>>,
12517    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
12518    pub text: Option<Box<Narrative>>,
12519    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
12520    pub contained: Option<Vec<Box<Resource>>>,
12521    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
12522    pub extension: Option<Vec<Box<Extension>>>,
12523    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
12524    pub modifierExtension: Option<Vec<Box<Extension>>>,
12525    #[rename_field = "identifier"]
12526    #[doc = "Identifiers for the ImagingStudy such as DICOM Study Instance UID, and Accession Number."]
12527    pub identifier_: Option<Vec<Box<Identifier>>>,
12528    #[primitive]
12529    #[doc = "The current state of the ImagingStudy."]
12530    pub status: Box<terminology::ImagingstudyStatus>,
12531    #[doc = "A list of all the series.modality values that are actual acquisition modalities, i.e. those in the DICOM Context Group 29 (value set OID 1.2.840.10008.6.1.19)."]
12532    pub modality: Option<Vec<Box<Coding>>>,
12533    # [reference (targets = ["Patient" , "Device" , "Group"])]
12534    #[doc = "The subject, typically a patient, of the imaging study."]
12535    pub subject: Box<Reference>,
12536    # [reference (targets = ["Encounter"])]
12537    #[doc = "The healthcare event (e.g. a patient and healthcare provider interaction) during which this ImagingStudy is made."]
12538    pub encounter: Option<Box<Reference>>,
12539    #[primitive]
12540    #[doc = "Date and time the study started."]
12541    pub started: Option<Box<FHIRDateTime>>,
12542    # [reference (targets = ["CarePlan" , "ServiceRequest" , "Appointment" , "AppointmentResponse" , "Task"])]
12543    #[doc = "A list of the diagnostic requests that resulted in this imaging study being performed."]
12544    pub basedOn: Option<Vec<Box<Reference>>>,
12545    # [reference (targets = ["Practitioner" , "PractitionerRole"])]
12546    #[doc = "The requesting/referring physician."]
12547    pub referrer: Option<Box<Reference>>,
12548    # [reference (targets = ["Practitioner" , "PractitionerRole"])]
12549    #[doc = "Who read the study and interpreted the images or other content."]
12550    pub interpreter: Option<Vec<Box<Reference>>>,
12551    # [reference (targets = ["Endpoint"])]
12552    #[doc = "The network service providing access (e.g., query, view, or retrieval) for the study. See implementation notes for information about using DICOM endpoints. A study-level endpoint applies to each series in the study, unless overridden by a series-level endpoint with the same Endpoint.connectionType."]
12553    pub endpoint: Option<Vec<Box<Reference>>>,
12554    #[primitive]
12555    #[doc = "Number of Series in the Study. This value given may be larger than the number of series elements this Resource contains due to resource availability, security, or other factors. This element should be present if any series elements are present."]
12556    pub numberOfSeries: Option<Box<FHIRUnsignedInt>>,
12557    #[primitive]
12558    #[doc = "Number of SOP Instances in Study. This value given may be larger than the number of instance elements this resource contains due to resource availability, security, or other factors. This element should be present if any instance elements are present."]
12559    pub numberOfInstances: Option<Box<FHIRUnsignedInt>>,
12560    # [reference (targets = ["Procedure"])]
12561    #[doc = "The procedure which this ImagingStudy was part of."]
12562    pub procedureReference: Option<Box<Reference>>,
12563    #[doc = "The code for the performed procedure type."]
12564    pub procedureCode: Option<Vec<Box<CodeableConcept>>>,
12565    # [reference (targets = ["Location"])]
12566    #[doc = "The principal physical location where the ImagingStudy was performed."]
12567    pub location: Option<Box<Reference>>,
12568    #[doc = "Description of clinical condition indicating why the ImagingStudy was requested."]
12569    pub reasonCode: Option<Vec<Box<CodeableConcept>>>,
12570    # [reference (targets = ["Condition" , "Observation" , "Media" , "DiagnosticReport" , "DocumentReference"])]
12571    #[doc = "Indicates another resource whose existence justifies this Study."]
12572    pub reasonReference: Option<Vec<Box<Reference>>>,
12573    #[doc = "Per the recommended DICOM mapping, this element is derived from the Study Description attribute (0008,1030). Observations or findings about the imaging study should be recorded in another resource, e.g. Observation, and not in this element."]
12574    pub note: Option<Vec<Box<Annotation>>>,
12575    #[primitive]
12576    #[doc = "The Imaging Manager description of the study. Institution-generated description or classification of the Study (component) performed."]
12577    pub description: Option<Box<FHIRString>>,
12578    #[doc = "Each study has one or more series of images or other content."]
12579    pub series: Option<Vec<ImagingStudySeries>>,
12580}
12581#[derive(
12582    Clone,
12583    Reflect,
12584    Debug,
12585    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
12586    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
12587)]
12588#[fhir_serialize_type = "typechoice"]
12589#[type_choice_field_name = "occurrence"]
12590pub enum ImmunizationOccurrenceTypeChoice {
12591    DateTime(Box<FHIRDateTime>),
12592    String(Box<FHIRString>),
12593}
12594impl Default for ImmunizationOccurrenceTypeChoice {
12595    fn default() -> Self {
12596        ImmunizationOccurrenceTypeChoice::DateTime(Box::new(Default::default()))
12597    }
12598}
12599#[derive(
12600    Clone,
12601    Reflect,
12602    Debug,
12603    Default,
12604    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
12605    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
12606)]
12607#[fhir_serialize_type = "complex"]
12608#[doc = "Indicates who performed the immunization event."]
12609pub struct ImmunizationPerformer {
12610    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
12611    pub id: Option<String>,
12612    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
12613    pub extension: Option<Vec<Box<Extension>>>,
12614    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
12615    pub modifierExtension: Option<Vec<Box<Extension>>>,
12616    #[doc = "Describes the type of performance (e.g. ordering provider, administering provider, etc.)."]
12617    pub function: Option<Box<CodeableConcept>>,
12618    # [reference (targets = ["Practitioner" , "PractitionerRole" , "Organization"])]
12619    #[doc = "The practitioner or organization who performed the action."]
12620    pub actor: Box<Reference>,
12621}
12622#[derive(
12623    Clone,
12624    Reflect,
12625    Debug,
12626    Default,
12627    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
12628    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
12629)]
12630#[fhir_serialize_type = "complex"]
12631#[doc = "Educational material presented to the patient (or guardian) at the time of vaccine administration."]
12632pub struct ImmunizationEducation {
12633    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
12634    pub id: Option<String>,
12635    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
12636    pub extension: Option<Vec<Box<Extension>>>,
12637    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
12638    pub modifierExtension: Option<Vec<Box<Extension>>>,
12639    #[primitive]
12640    #[doc = "Identifier of the material presented to the patient."]
12641    pub documentType: Option<Box<FHIRString>>,
12642    #[primitive]
12643    #[doc = "Reference pointer to the educational material given to the patient if the information was on line."]
12644    pub reference: Option<Box<FHIRUri>>,
12645    #[primitive]
12646    #[doc = "Date the educational material was published."]
12647    pub publicationDate: Option<Box<FHIRDateTime>>,
12648    #[primitive]
12649    #[doc = "Date the educational material was given to the patient."]
12650    pub presentationDate: Option<Box<FHIRDateTime>>,
12651}
12652#[derive(
12653    Clone,
12654    Reflect,
12655    Debug,
12656    Default,
12657    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
12658    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
12659)]
12660#[fhir_serialize_type = "complex"]
12661#[doc = "Categorical data indicating that an adverse event is associated in time to an immunization."]
12662pub struct ImmunizationReaction {
12663    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
12664    pub id: Option<String>,
12665    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
12666    pub extension: Option<Vec<Box<Extension>>>,
12667    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
12668    pub modifierExtension: Option<Vec<Box<Extension>>>,
12669    #[primitive]
12670    #[doc = "Date of reaction to the immunization."]
12671    pub date: Option<Box<FHIRDateTime>>,
12672    # [reference (targets = ["Observation"])]
12673    #[doc = "Details of the reaction."]
12674    pub detail: Option<Box<Reference>>,
12675    #[primitive]
12676    #[doc = "Self-reported indicator."]
12677    pub reported: Option<Box<FHIRBoolean>>,
12678}
12679#[derive(
12680    Clone,
12681    Reflect,
12682    Debug,
12683    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
12684    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
12685)]
12686#[fhir_serialize_type = "typechoice"]
12687#[type_choice_field_name = "doseNumber"]
12688pub enum ImmunizationProtocolAppliedDoseNumberTypeChoice {
12689    PositiveInt(Box<FHIRPositiveInt>),
12690    String(Box<FHIRString>),
12691}
12692impl Default for ImmunizationProtocolAppliedDoseNumberTypeChoice {
12693    fn default() -> Self {
12694        ImmunizationProtocolAppliedDoseNumberTypeChoice::PositiveInt(Box::new(Default::default()))
12695    }
12696}
12697#[derive(
12698    Clone,
12699    Reflect,
12700    Debug,
12701    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
12702    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
12703)]
12704#[fhir_serialize_type = "typechoice"]
12705#[type_choice_field_name = "seriesDoses"]
12706pub enum ImmunizationProtocolAppliedSeriesDosesTypeChoice {
12707    PositiveInt(Box<FHIRPositiveInt>),
12708    String(Box<FHIRString>),
12709}
12710impl Default for ImmunizationProtocolAppliedSeriesDosesTypeChoice {
12711    fn default() -> Self {
12712        ImmunizationProtocolAppliedSeriesDosesTypeChoice::PositiveInt(Box::new(Default::default()))
12713    }
12714}
12715#[derive(
12716    Clone,
12717    Reflect,
12718    Debug,
12719    Default,
12720    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
12721    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
12722)]
12723#[fhir_serialize_type = "complex"]
12724#[doc = "The protocol (set of recommendations) being followed by the provider who administered the dose."]
12725pub struct ImmunizationProtocolApplied {
12726    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
12727    pub id: Option<String>,
12728    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
12729    pub extension: Option<Vec<Box<Extension>>>,
12730    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
12731    pub modifierExtension: Option<Vec<Box<Extension>>>,
12732    #[primitive]
12733    #[doc = "One possible path to achieve presumed immunity against a disease - within the context of an authority."]
12734    pub series: Option<Box<FHIRString>>,
12735    # [reference (targets = ["Organization"])]
12736    #[doc = "Indicates the authority who published the protocol (e.g. ACIP) that is being followed."]
12737    pub authority: Option<Box<Reference>>,
12738    #[doc = "The vaccine preventable disease the dose is being administered against."]
12739    pub targetDisease: Option<Vec<Box<CodeableConcept>>>,
12740    # [type_choice_variants (complex = [] , primitive = ["doseNumberPositiveInt" , "doseNumberString"])]
12741    #[doc = "Nominal position in a series."]
12742    pub doseNumber: ImmunizationProtocolAppliedDoseNumberTypeChoice,
12743    # [type_choice_variants (complex = [] , primitive = ["seriesDosesPositiveInt" , "seriesDosesString"])]
12744    #[doc = "The recommended number of doses to achieve immunity."]
12745    pub seriesDoses: Option<ImmunizationProtocolAppliedSeriesDosesTypeChoice>,
12746}
12747#[derive(
12748    Clone,
12749    Reflect,
12750    Debug,
12751    Default,
12752    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
12753    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
12754)]
12755#[fhir_serialize_type = "resource"]
12756#[doc = "Describes the event of a patient being administered a vaccine or a record of an immunization as reported by a patient, a clinician or another party."]
12757pub struct Immunization {
12758    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
12759    pub id: Option<String>,
12760    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
12761    pub meta: Option<Box<Meta>>,
12762    #[primitive]
12763    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
12764    pub implicitRules: Option<Box<FHIRUri>>,
12765    #[primitive]
12766    #[doc = "The base language in which the resource is written."]
12767    pub language: Option<Box<FHIRCode>>,
12768    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
12769    pub text: Option<Box<Narrative>>,
12770    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
12771    pub contained: Option<Vec<Box<Resource>>>,
12772    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
12773    pub extension: Option<Vec<Box<Extension>>>,
12774    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
12775    pub modifierExtension: Option<Vec<Box<Extension>>>,
12776    #[rename_field = "identifier"]
12777    #[doc = "A unique identifier assigned to this immunization record."]
12778    pub identifier_: Option<Vec<Box<Identifier>>>,
12779    #[primitive]
12780    #[doc = "Indicates the current status of the immunization event."]
12781    pub status: Box<terminology::ImmunizationStatus>,
12782    #[doc = "Indicates the reason the immunization event was not performed."]
12783    pub statusReason: Option<Box<CodeableConcept>>,
12784    #[doc = "Vaccine that was administered or was to be administered."]
12785    pub vaccineCode: Box<CodeableConcept>,
12786    # [reference (targets = ["Patient"])]
12787    #[doc = "The patient who either received or did not receive the immunization."]
12788    pub patient: Box<Reference>,
12789    # [reference (targets = ["Encounter"])]
12790    #[doc = "The visit or admission or other contact between patient and health care provider the immunization was performed as part of."]
12791    pub encounter: Option<Box<Reference>>,
12792    # [type_choice_variants (complex = [] , primitive = ["occurrenceDateTime" , "occurrenceString"])]
12793    #[doc = "Date vaccine administered or was to be administered."]
12794    pub occurrence: ImmunizationOccurrenceTypeChoice,
12795    #[primitive]
12796    #[doc = "The date the occurrence of the immunization was first captured in the record - potentially significantly after the occurrence of the event."]
12797    pub recorded: Option<Box<FHIRDateTime>>,
12798    #[primitive]
12799    #[doc = "An indication that the content of the record is based on information from the person who administered the vaccine. This reflects the context under which the data was originally recorded."]
12800    pub primarySource: Option<Box<FHIRBoolean>>,
12801    #[doc = "The source of the data when the report of the immunization event is not based on information from the person who administered the vaccine."]
12802    pub reportOrigin: Option<Box<CodeableConcept>>,
12803    # [reference (targets = ["Location"])]
12804    #[doc = "The service delivery location where the vaccine administration occurred."]
12805    pub location: Option<Box<Reference>>,
12806    # [reference (targets = ["Organization"])]
12807    #[doc = "Name of vaccine manufacturer."]
12808    pub manufacturer: Option<Box<Reference>>,
12809    #[primitive]
12810    #[doc = "Lot number of the  vaccine product."]
12811    pub lotNumber: Option<Box<FHIRString>>,
12812    #[primitive]
12813    #[doc = "Date vaccine batch expires."]
12814    pub expirationDate: Option<Box<FHIRDate>>,
12815    #[doc = "Body site where vaccine was administered."]
12816    pub site: Option<Box<CodeableConcept>>,
12817    #[doc = "The path by which the vaccine product is taken into the body."]
12818    pub route: Option<Box<CodeableConcept>>,
12819    #[doc = "The quantity of vaccine product that was administered."]
12820    pub doseQuantity: Option<Box<Quantity>>,
12821    #[doc = "Indicates who performed the immunization event."]
12822    pub performer: Option<Vec<ImmunizationPerformer>>,
12823    #[doc = "Extra information about the immunization that is not conveyed by the other attributes."]
12824    pub note: Option<Vec<Box<Annotation>>>,
12825    #[doc = "Reasons why the vaccine was administered."]
12826    pub reasonCode: Option<Vec<Box<CodeableConcept>>>,
12827    # [reference (targets = ["Condition" , "Observation" , "DiagnosticReport"])]
12828    #[doc = "Condition, Observation or DiagnosticReport that supports why the immunization was administered."]
12829    pub reasonReference: Option<Vec<Box<Reference>>>,
12830    #[primitive]
12831    #[doc = "Indication if a dose is considered to be subpotent. By default, a dose should be considered to be potent."]
12832    pub isSubpotent: Option<Box<FHIRBoolean>>,
12833    #[doc = "Reason why a dose is considered to be subpotent."]
12834    pub subpotentReason: Option<Vec<Box<CodeableConcept>>>,
12835    #[doc = "Educational material presented to the patient (or guardian) at the time of vaccine administration."]
12836    pub education: Option<Vec<ImmunizationEducation>>,
12837    #[doc = "Indicates a patient's eligibility for a funding program."]
12838    pub programEligibility: Option<Vec<Box<CodeableConcept>>>,
12839    #[doc = "Indicates the source of the vaccine actually administered. This may be different than the patient eligibility (e.g. the patient may be eligible for a publically purchased vaccine but due to inventory issues, vaccine purchased with private funds was actually administered)."]
12840    pub fundingSource: Option<Box<CodeableConcept>>,
12841    #[doc = "Categorical data indicating that an adverse event is associated in time to an immunization."]
12842    pub reaction: Option<Vec<ImmunizationReaction>>,
12843    #[doc = "The protocol (set of recommendations) being followed by the provider who administered the dose."]
12844    pub protocolApplied: Option<Vec<ImmunizationProtocolApplied>>,
12845}
12846#[derive(
12847    Clone,
12848    Reflect,
12849    Debug,
12850    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
12851    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
12852)]
12853#[fhir_serialize_type = "typechoice"]
12854#[type_choice_field_name = "doseNumber"]
12855pub enum ImmunizationEvaluationDoseNumberTypeChoice {
12856    PositiveInt(Box<FHIRPositiveInt>),
12857    String(Box<FHIRString>),
12858}
12859impl Default for ImmunizationEvaluationDoseNumberTypeChoice {
12860    fn default() -> Self {
12861        ImmunizationEvaluationDoseNumberTypeChoice::PositiveInt(Box::new(Default::default()))
12862    }
12863}
12864#[derive(
12865    Clone,
12866    Reflect,
12867    Debug,
12868    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
12869    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
12870)]
12871#[fhir_serialize_type = "typechoice"]
12872#[type_choice_field_name = "seriesDoses"]
12873pub enum ImmunizationEvaluationSeriesDosesTypeChoice {
12874    PositiveInt(Box<FHIRPositiveInt>),
12875    String(Box<FHIRString>),
12876}
12877impl Default for ImmunizationEvaluationSeriesDosesTypeChoice {
12878    fn default() -> Self {
12879        ImmunizationEvaluationSeriesDosesTypeChoice::PositiveInt(Box::new(Default::default()))
12880    }
12881}
12882#[derive(
12883    Clone,
12884    Reflect,
12885    Debug,
12886    Default,
12887    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
12888    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
12889)]
12890#[fhir_serialize_type = "resource"]
12891#[doc = "Describes a comparison of an immunization event against published recommendations to determine if the administration is \"valid\" in relation to those  recommendations."]
12892pub struct ImmunizationEvaluation {
12893    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
12894    pub id: Option<String>,
12895    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
12896    pub meta: Option<Box<Meta>>,
12897    #[primitive]
12898    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
12899    pub implicitRules: Option<Box<FHIRUri>>,
12900    #[primitive]
12901    #[doc = "The base language in which the resource is written."]
12902    pub language: Option<Box<FHIRCode>>,
12903    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
12904    pub text: Option<Box<Narrative>>,
12905    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
12906    pub contained: Option<Vec<Box<Resource>>>,
12907    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
12908    pub extension: Option<Vec<Box<Extension>>>,
12909    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
12910    pub modifierExtension: Option<Vec<Box<Extension>>>,
12911    #[rename_field = "identifier"]
12912    #[doc = "A unique identifier assigned to this immunization evaluation record."]
12913    pub identifier_: Option<Vec<Box<Identifier>>>,
12914    #[primitive]
12915    #[doc = "Indicates the current status of the evaluation of the vaccination administration event."]
12916    pub status: Box<terminology::ImmunizationEvaluationStatus>,
12917    # [reference (targets = ["Patient"])]
12918    #[doc = "The individual for whom the evaluation is being done."]
12919    pub patient: Box<Reference>,
12920    #[primitive]
12921    #[doc = "The date the evaluation of the vaccine administration event was performed."]
12922    pub date: Option<Box<FHIRDateTime>>,
12923    # [reference (targets = ["Organization"])]
12924    #[doc = "Indicates the authority who published the protocol (e.g. ACIP)."]
12925    pub authority: Option<Box<Reference>>,
12926    #[doc = "The vaccine preventable disease the dose is being evaluated against."]
12927    pub targetDisease: Box<CodeableConcept>,
12928    # [reference (targets = ["Immunization"])]
12929    #[doc = "The vaccine administration event being evaluated."]
12930    pub immunizationEvent: Box<Reference>,
12931    #[doc = "Indicates if the dose is valid or not valid with respect to the published recommendations."]
12932    pub doseStatus: Box<CodeableConcept>,
12933    #[doc = "Provides an explanation as to why the vaccine administration event is valid or not relative to the published recommendations."]
12934    pub doseStatusReason: Option<Vec<Box<CodeableConcept>>>,
12935    #[primitive]
12936    #[doc = "Additional information about the evaluation."]
12937    pub description: Option<Box<FHIRString>>,
12938    #[primitive]
12939    #[doc = "One possible path to achieve presumed immunity against a disease - within the context of an authority."]
12940    pub series: Option<Box<FHIRString>>,
12941    # [type_choice_variants (complex = [] , primitive = ["doseNumberPositiveInt" , "doseNumberString"])]
12942    #[doc = "Nominal position in a series."]
12943    pub doseNumber: Option<ImmunizationEvaluationDoseNumberTypeChoice>,
12944    # [type_choice_variants (complex = [] , primitive = ["seriesDosesPositiveInt" , "seriesDosesString"])]
12945    #[doc = "The recommended number of doses to achieve immunity."]
12946    pub seriesDoses: Option<ImmunizationEvaluationSeriesDosesTypeChoice>,
12947}
12948#[derive(
12949    Clone,
12950    Reflect,
12951    Debug,
12952    Default,
12953    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
12954    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
12955)]
12956#[fhir_serialize_type = "complex"]
12957#[doc = "Vaccine date recommendations.  For example, earliest date to administer, latest date to administer, etc."]
12958pub struct ImmunizationRecommendationRecommendationDateCriterion {
12959    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
12960    pub id: Option<String>,
12961    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
12962    pub extension: Option<Vec<Box<Extension>>>,
12963    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
12964    pub modifierExtension: Option<Vec<Box<Extension>>>,
12965    #[doc = "Date classification of recommendation.  For example, earliest date to give, latest date to give, etc."]
12966    pub code: Box<CodeableConcept>,
12967    #[primitive]
12968    #[doc = "The date whose meaning is specified by dateCriterion.code."]
12969    pub value: Box<FHIRDateTime>,
12970}
12971#[derive(
12972    Clone,
12973    Reflect,
12974    Debug,
12975    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
12976    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
12977)]
12978#[fhir_serialize_type = "typechoice"]
12979#[type_choice_field_name = "doseNumber"]
12980pub enum ImmunizationRecommendationRecommendationDoseNumberTypeChoice {
12981    PositiveInt(Box<FHIRPositiveInt>),
12982    String(Box<FHIRString>),
12983}
12984impl Default for ImmunizationRecommendationRecommendationDoseNumberTypeChoice {
12985    fn default() -> Self {
12986        ImmunizationRecommendationRecommendationDoseNumberTypeChoice::PositiveInt(Box::new(
12987            Default::default(),
12988        ))
12989    }
12990}
12991#[derive(
12992    Clone,
12993    Reflect,
12994    Debug,
12995    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
12996    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
12997)]
12998#[fhir_serialize_type = "typechoice"]
12999#[type_choice_field_name = "seriesDoses"]
13000pub enum ImmunizationRecommendationRecommendationSeriesDosesTypeChoice {
13001    PositiveInt(Box<FHIRPositiveInt>),
13002    String(Box<FHIRString>),
13003}
13004impl Default for ImmunizationRecommendationRecommendationSeriesDosesTypeChoice {
13005    fn default() -> Self {
13006        ImmunizationRecommendationRecommendationSeriesDosesTypeChoice::PositiveInt(Box::new(
13007            Default::default(),
13008        ))
13009    }
13010}
13011#[derive(
13012    Clone,
13013    Reflect,
13014    Debug,
13015    Default,
13016    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
13017    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
13018)]
13019#[fhir_serialize_type = "complex"]
13020#[doc = "Vaccine administration recommendations."]
13021pub struct ImmunizationRecommendationRecommendation {
13022    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
13023    pub id: Option<String>,
13024    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
13025    pub extension: Option<Vec<Box<Extension>>>,
13026    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
13027    pub modifierExtension: Option<Vec<Box<Extension>>>,
13028    #[doc = "Vaccine(s) or vaccine group that pertain to the recommendation."]
13029    pub vaccineCode: Option<Vec<Box<CodeableConcept>>>,
13030    #[doc = "The targeted disease for the recommendation."]
13031    pub targetDisease: Option<Box<CodeableConcept>>,
13032    #[doc = "Vaccine(s) which should not be used to fulfill the recommendation."]
13033    pub contraindicatedVaccineCode: Option<Vec<Box<CodeableConcept>>>,
13034    #[doc = "Indicates the patient status with respect to the path to immunity for the target disease."]
13035    pub forecastStatus: Box<CodeableConcept>,
13036    #[doc = "The reason for the assigned forecast status."]
13037    pub forecastReason: Option<Vec<Box<CodeableConcept>>>,
13038    #[doc = "Vaccine date recommendations.  For example, earliest date to administer, latest date to administer, etc."]
13039    pub dateCriterion: Option<Vec<ImmunizationRecommendationRecommendationDateCriterion>>,
13040    #[primitive]
13041    #[doc = "Contains the description about the protocol under which the vaccine was administered."]
13042    pub description: Option<Box<FHIRString>>,
13043    #[primitive]
13044    #[doc = "One possible path to achieve presumed immunity against a disease - within the context of an authority."]
13045    pub series: Option<Box<FHIRString>>,
13046    # [type_choice_variants (complex = [] , primitive = ["doseNumberPositiveInt" , "doseNumberString"])]
13047    #[doc = "Nominal position of the recommended dose in a series (e.g. dose 2 is the next recommended dose)."]
13048    pub doseNumber: Option<ImmunizationRecommendationRecommendationDoseNumberTypeChoice>,
13049    # [type_choice_variants (complex = [] , primitive = ["seriesDosesPositiveInt" , "seriesDosesString"])]
13050    #[doc = "The recommended number of doses to achieve immunity."]
13051    pub seriesDoses: Option<ImmunizationRecommendationRecommendationSeriesDosesTypeChoice>,
13052    # [reference (targets = ["Immunization" , "ImmunizationEvaluation"])]
13053    #[doc = "Immunization event history and/or evaluation that supports the status and recommendation."]
13054    pub supportingImmunization: Option<Vec<Box<Reference>>>,
13055    # [reference (targets = ["Resource"])]
13056    #[doc = "Patient Information that supports the status and recommendation.  This includes patient observations, adverse reactions and allergy/intolerance information."]
13057    pub supportingPatientInformation: Option<Vec<Box<Reference>>>,
13058}
13059#[derive(
13060    Clone,
13061    Reflect,
13062    Debug,
13063    Default,
13064    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
13065    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
13066)]
13067#[fhir_serialize_type = "resource"]
13068#[doc = "A patient's point-in-time set of recommendations (i.e. forecasting) according to a published schedule with optional supporting justification."]
13069pub struct ImmunizationRecommendation {
13070    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
13071    pub id: Option<String>,
13072    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
13073    pub meta: Option<Box<Meta>>,
13074    #[primitive]
13075    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
13076    pub implicitRules: Option<Box<FHIRUri>>,
13077    #[primitive]
13078    #[doc = "The base language in which the resource is written."]
13079    pub language: Option<Box<FHIRCode>>,
13080    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
13081    pub text: Option<Box<Narrative>>,
13082    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
13083    pub contained: Option<Vec<Box<Resource>>>,
13084    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
13085    pub extension: Option<Vec<Box<Extension>>>,
13086    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
13087    pub modifierExtension: Option<Vec<Box<Extension>>>,
13088    #[rename_field = "identifier"]
13089    #[doc = "A unique identifier assigned to this particular recommendation record."]
13090    pub identifier_: Option<Vec<Box<Identifier>>>,
13091    # [reference (targets = ["Patient"])]
13092    #[doc = "The patient the recommendation(s) are for."]
13093    pub patient: Box<Reference>,
13094    #[primitive]
13095    #[doc = "The date the immunization recommendation(s) were created."]
13096    pub date: Box<FHIRDateTime>,
13097    # [reference (targets = ["Organization"])]
13098    #[doc = "Indicates the authority who published the protocol (e.g. ACIP)."]
13099    pub authority: Option<Box<Reference>>,
13100    #[cardinality(min = 1usize)]
13101    #[doc = "Vaccine administration recommendations."]
13102    pub recommendation: Vec<ImmunizationRecommendationRecommendation>,
13103}
13104#[derive(
13105    Clone,
13106    Reflect,
13107    Debug,
13108    Default,
13109    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
13110    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
13111)]
13112#[fhir_serialize_type = "complex"]
13113#[doc = "Another implementation guide that this implementation depends on. Typically, an implementation guide uses value sets, profiles etc.defined in other implementation guides."]
13114pub struct ImplementationGuideDependsOn {
13115    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
13116    pub id: Option<String>,
13117    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
13118    pub extension: Option<Vec<Box<Extension>>>,
13119    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
13120    pub modifierExtension: Option<Vec<Box<Extension>>>,
13121    #[primitive]
13122    #[doc = "A canonical reference to the Implementation guide for the dependency."]
13123    pub uri: Box<FHIRCanonical>,
13124    #[primitive]
13125    #[doc = "The NPM package name for the Implementation Guide that this IG depends on."]
13126    pub packageId: Option<Box<FHIRId>>,
13127    #[primitive]
13128    #[doc = "The version of the IG that is depended on, when the correct version is required to understand the IG correctly."]
13129    pub version: Option<Box<FHIRString>>,
13130}
13131#[derive(
13132    Clone,
13133    Reflect,
13134    Debug,
13135    Default,
13136    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
13137    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
13138)]
13139#[fhir_serialize_type = "complex"]
13140#[doc = "A set of profiles that all resources covered by this implementation guide must conform to."]
13141pub struct ImplementationGuideGlobal {
13142    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
13143    pub id: Option<String>,
13144    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
13145    pub extension: Option<Vec<Box<Extension>>>,
13146    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
13147    pub modifierExtension: Option<Vec<Box<Extension>>>,
13148    #[rename_field = "type"]
13149    #[primitive]
13150    #[doc = "The type of resource that all instances must conform to."]
13151    pub type_: Box<terminology::ResourceTypes>,
13152    #[primitive]
13153    #[doc = "A reference to the profile that all instances must conform to."]
13154    pub profile: Box<FHIRCanonical>,
13155}
13156#[derive(
13157    Clone,
13158    Reflect,
13159    Debug,
13160    Default,
13161    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
13162    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
13163)]
13164#[fhir_serialize_type = "complex"]
13165#[doc = "A logical group of resources. Logical groups can be used when building pages."]
13166pub struct ImplementationGuideDefinitionGrouping {
13167    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
13168    pub id: Option<String>,
13169    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
13170    pub extension: Option<Vec<Box<Extension>>>,
13171    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
13172    pub modifierExtension: Option<Vec<Box<Extension>>>,
13173    #[primitive]
13174    #[doc = "The human-readable title to display for the package of resources when rendering the implementation guide."]
13175    pub name: Box<FHIRString>,
13176    #[primitive]
13177    #[doc = "Human readable text describing the package."]
13178    pub description: Option<Box<FHIRString>>,
13179}
13180#[derive(
13181    Clone,
13182    Reflect,
13183    Debug,
13184    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
13185    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
13186)]
13187#[fhir_serialize_type = "typechoice"]
13188#[type_choice_field_name = "example"]
13189pub enum ImplementationGuideDefinitionResourceExampleTypeChoice {
13190    Boolean(Box<FHIRBoolean>),
13191    Canonical(Box<FHIRCanonical>),
13192}
13193impl Default for ImplementationGuideDefinitionResourceExampleTypeChoice {
13194    fn default() -> Self {
13195        ImplementationGuideDefinitionResourceExampleTypeChoice::Boolean(
13196            Box::new(Default::default()),
13197        )
13198    }
13199}
13200#[derive(
13201    Clone,
13202    Reflect,
13203    Debug,
13204    Default,
13205    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
13206    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
13207)]
13208#[fhir_serialize_type = "complex"]
13209#[doc = "A resource that is part of the implementation guide. Conformance resources (value set, structure definition, capability statements etc.) are obvious candidates for inclusion, but any kind of resource can be included as an example resource."]
13210pub struct ImplementationGuideDefinitionResource {
13211    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
13212    pub id: Option<String>,
13213    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
13214    pub extension: Option<Vec<Box<Extension>>>,
13215    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
13216    pub modifierExtension: Option<Vec<Box<Extension>>>,
13217    # [reference (targets = ["Resource"])]
13218    #[doc = "Where this resource is found."]
13219    pub reference: Box<Reference>,
13220    #[primitive]
13221    #[doc = "Indicates the FHIR Version(s) this artifact is intended to apply to. If no versions are specified, the resource is assumed to apply to all the versions stated in ImplementationGuide.fhirVersion."]
13222    pub fhirVersion: Option<Vec<Box<terminology::FHIRVersion>>>,
13223    #[primitive]
13224    #[doc = "A human assigned name for the resource. All resources SHOULD have a name, but the name may be extracted from the resource (e.g. ValueSet.name)."]
13225    pub name: Option<Box<FHIRString>>,
13226    #[primitive]
13227    #[doc = "A description of the reason that a resource has been included in the implementation guide."]
13228    pub description: Option<Box<FHIRString>>,
13229    # [type_choice_variants (complex = [] , primitive = ["exampleBoolean" , "exampleCanonical"])]
13230    #[doc = "If true or a reference, indicates the resource is an example instance.  If a reference is present, indicates that the example is an example of the specified profile."]
13231    pub example: Option<ImplementationGuideDefinitionResourceExampleTypeChoice>,
13232    #[primitive]
13233    #[doc = "Reference to the id of the grouping this resource appears in."]
13234    pub groupingId: Option<Box<FHIRId>>,
13235}
13236#[derive(
13237    Clone,
13238    Reflect,
13239    Debug,
13240    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
13241    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
13242)]
13243#[fhir_serialize_type = "typechoice"]
13244#[type_choice_field_name = "name"]
13245pub enum ImplementationGuideDefinitionPageNameTypeChoice {
13246    Url(Box<FHIRUrl>),
13247    # [reference (targets = ["Binary"])]
13248    Reference(Box<Reference>),
13249}
13250impl Default for ImplementationGuideDefinitionPageNameTypeChoice {
13251    fn default() -> Self {
13252        ImplementationGuideDefinitionPageNameTypeChoice::Url(Box::new(Default::default()))
13253    }
13254}
13255#[derive(
13256    Clone,
13257    Reflect,
13258    Debug,
13259    Default,
13260    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
13261    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
13262)]
13263#[fhir_serialize_type = "complex"]
13264#[doc = "A page / section in the implementation guide. The root page is the implementation guide home page."]
13265pub struct ImplementationGuideDefinitionPage {
13266    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
13267    pub id: Option<String>,
13268    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
13269    pub extension: Option<Vec<Box<Extension>>>,
13270    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
13271    pub modifierExtension: Option<Vec<Box<Extension>>>,
13272    # [type_choice_variants (complex = ["nameReference"] , primitive = ["nameUrl"])]
13273    #[doc = "The source address for the page."]
13274    pub name: ImplementationGuideDefinitionPageNameTypeChoice,
13275    #[primitive]
13276    #[doc = "A short title used to represent this page in navigational structures such as table of contents, bread crumbs, etc."]
13277    pub title: Box<FHIRString>,
13278    #[primitive]
13279    #[doc = "A code that indicates how the page is generated."]
13280    pub generation: Box<terminology::GuidePageGeneration>,
13281    #[doc = "Nested Pages/Sections under this page."]
13282    pub page: Option<Vec<ImplementationGuideDefinitionPage>>,
13283}
13284#[derive(
13285    Clone,
13286    Reflect,
13287    Debug,
13288    Default,
13289    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
13290    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
13291)]
13292#[fhir_serialize_type = "complex"]
13293#[doc = "Defines how IG is built by tools."]
13294pub struct ImplementationGuideDefinitionParameter {
13295    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
13296    pub id: Option<String>,
13297    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
13298    pub extension: Option<Vec<Box<Extension>>>,
13299    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
13300    pub modifierExtension: Option<Vec<Box<Extension>>>,
13301    #[primitive]
13302    #[doc = "apply | path-resource | path-pages | path-tx-cache | expansion-parameter | rule-broken-links | generate-xml | generate-json | generate-turtle | html-template."]
13303    pub code: Box<terminology::GuideParameterCode>,
13304    #[primitive]
13305    #[doc = "Value for named type."]
13306    pub value: Box<FHIRString>,
13307}
13308#[derive(
13309    Clone,
13310    Reflect,
13311    Debug,
13312    Default,
13313    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
13314    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
13315)]
13316#[fhir_serialize_type = "complex"]
13317#[doc = "A template for building resources."]
13318pub struct ImplementationGuideDefinitionTemplate {
13319    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
13320    pub id: Option<String>,
13321    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
13322    pub extension: Option<Vec<Box<Extension>>>,
13323    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
13324    pub modifierExtension: Option<Vec<Box<Extension>>>,
13325    #[primitive]
13326    #[doc = "Type of template specified."]
13327    pub code: Box<FHIRCode>,
13328    #[primitive]
13329    #[doc = "The source location for the template."]
13330    pub source: Box<FHIRString>,
13331    #[primitive]
13332    #[doc = "The scope in which the template applies."]
13333    pub scope: Option<Box<FHIRString>>,
13334}
13335#[derive(
13336    Clone,
13337    Reflect,
13338    Debug,
13339    Default,
13340    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
13341    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
13342)]
13343#[fhir_serialize_type = "complex"]
13344#[doc = "The information needed by an IG publisher tool to publish the whole implementation guide."]
13345pub struct ImplementationGuideDefinition {
13346    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
13347    pub id: Option<String>,
13348    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
13349    pub extension: Option<Vec<Box<Extension>>>,
13350    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
13351    pub modifierExtension: Option<Vec<Box<Extension>>>,
13352    #[doc = "A logical group of resources. Logical groups can be used when building pages."]
13353    pub grouping: Option<Vec<ImplementationGuideDefinitionGrouping>>,
13354    #[cardinality(min = 1usize)]
13355    #[doc = "A resource that is part of the implementation guide. Conformance resources (value set, structure definition, capability statements etc.) are obvious candidates for inclusion, but any kind of resource can be included as an example resource."]
13356    pub resource: Vec<ImplementationGuideDefinitionResource>,
13357    #[doc = "A page / section in the implementation guide. The root page is the implementation guide home page."]
13358    pub page: Option<ImplementationGuideDefinitionPage>,
13359    #[doc = "Defines how IG is built by tools."]
13360    pub parameter: Option<Vec<ImplementationGuideDefinitionParameter>>,
13361    #[doc = "A template for building resources."]
13362    pub template: Option<Vec<ImplementationGuideDefinitionTemplate>>,
13363}
13364#[derive(
13365    Clone,
13366    Reflect,
13367    Debug,
13368    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
13369    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
13370)]
13371#[fhir_serialize_type = "typechoice"]
13372#[type_choice_field_name = "example"]
13373pub enum ImplementationGuideManifestResourceExampleTypeChoice {
13374    Boolean(Box<FHIRBoolean>),
13375    Canonical(Box<FHIRCanonical>),
13376}
13377impl Default for ImplementationGuideManifestResourceExampleTypeChoice {
13378    fn default() -> Self {
13379        ImplementationGuideManifestResourceExampleTypeChoice::Boolean(Box::new(Default::default()))
13380    }
13381}
13382#[derive(
13383    Clone,
13384    Reflect,
13385    Debug,
13386    Default,
13387    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
13388    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
13389)]
13390#[fhir_serialize_type = "complex"]
13391#[doc = "A resource that is part of the implementation guide. Conformance resources (value set, structure definition, capability statements etc.) are obvious candidates for inclusion, but any kind of resource can be included as an example resource."]
13392pub struct ImplementationGuideManifestResource {
13393    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
13394    pub id: Option<String>,
13395    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
13396    pub extension: Option<Vec<Box<Extension>>>,
13397    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
13398    pub modifierExtension: Option<Vec<Box<Extension>>>,
13399    # [reference (targets = ["Resource"])]
13400    #[doc = "Where this resource is found."]
13401    pub reference: Box<Reference>,
13402    # [type_choice_variants (complex = [] , primitive = ["exampleBoolean" , "exampleCanonical"])]
13403    #[doc = "If true or a reference, indicates the resource is an example instance.  If a reference is present, indicates that the example is an example of the specified profile."]
13404    pub example: Option<ImplementationGuideManifestResourceExampleTypeChoice>,
13405    #[primitive]
13406    #[doc = "The relative path for primary page for this resource within the IG."]
13407    pub relativePath: Option<Box<FHIRUrl>>,
13408}
13409#[derive(
13410    Clone,
13411    Reflect,
13412    Debug,
13413    Default,
13414    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
13415    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
13416)]
13417#[fhir_serialize_type = "complex"]
13418#[doc = "Information about a page within the IG."]
13419pub struct ImplementationGuideManifestPage {
13420    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
13421    pub id: Option<String>,
13422    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
13423    pub extension: Option<Vec<Box<Extension>>>,
13424    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
13425    pub modifierExtension: Option<Vec<Box<Extension>>>,
13426    #[primitive]
13427    #[doc = "Relative path to the page."]
13428    pub name: Box<FHIRString>,
13429    #[primitive]
13430    #[doc = "Label for the page intended for human display."]
13431    pub title: Option<Box<FHIRString>>,
13432    #[primitive]
13433    #[doc = "The name of an anchor available on the page."]
13434    pub anchor: Option<Vec<Box<FHIRString>>>,
13435}
13436#[derive(
13437    Clone,
13438    Reflect,
13439    Debug,
13440    Default,
13441    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
13442    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
13443)]
13444#[fhir_serialize_type = "complex"]
13445#[doc = "Information about an assembled implementation guide, created by the publication tooling."]
13446pub struct ImplementationGuideManifest {
13447    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
13448    pub id: Option<String>,
13449    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
13450    pub extension: Option<Vec<Box<Extension>>>,
13451    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
13452    pub modifierExtension: Option<Vec<Box<Extension>>>,
13453    #[primitive]
13454    #[doc = "A pointer to official web page, PDF or other rendering of the implementation guide."]
13455    pub rendering: Option<Box<FHIRUrl>>,
13456    #[cardinality(min = 1usize)]
13457    #[doc = "A resource that is part of the implementation guide. Conformance resources (value set, structure definition, capability statements etc.) are obvious candidates for inclusion, but any kind of resource can be included as an example resource."]
13458    pub resource: Vec<ImplementationGuideManifestResource>,
13459    #[doc = "Information about a page within the IG."]
13460    pub page: Option<Vec<ImplementationGuideManifestPage>>,
13461    #[primitive]
13462    #[doc = "Indicates a relative path to an image that exists within the IG."]
13463    pub image: Option<Vec<Box<FHIRString>>>,
13464    #[primitive]
13465    #[doc = "Indicates the relative path of an additional non-page, non-image file that is part of the IG - e.g. zip, jar and similar files that could be the target of a hyperlink in a derived IG."]
13466    pub other: Option<Vec<Box<FHIRString>>>,
13467}
13468#[derive(
13469    Clone,
13470    Reflect,
13471    Debug,
13472    Default,
13473    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
13474    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
13475)]
13476#[fhir_serialize_type = "resource"]
13477#[doc = "A set of rules of how a particular interoperability or standards problem is solved - typically through the use of FHIR resources. This resource is used to gather all the parts of an implementation guide into a logical whole and to publish a computable definition of all the parts."]
13478pub struct ImplementationGuide {
13479    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
13480    pub id: Option<String>,
13481    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
13482    pub meta: Option<Box<Meta>>,
13483    #[primitive]
13484    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
13485    pub implicitRules: Option<Box<FHIRUri>>,
13486    #[primitive]
13487    #[doc = "The base language in which the resource is written."]
13488    pub language: Option<Box<FHIRCode>>,
13489    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
13490    pub text: Option<Box<Narrative>>,
13491    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
13492    pub contained: Option<Vec<Box<Resource>>>,
13493    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
13494    pub extension: Option<Vec<Box<Extension>>>,
13495    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
13496    pub modifierExtension: Option<Vec<Box<Extension>>>,
13497    #[primitive]
13498    #[doc = "An absolute URI that is used to identify this implementation guide when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this implementation guide is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the implementation guide is stored on different servers."]
13499    pub url: Box<FHIRUri>,
13500    #[primitive]
13501    #[doc = "The identifier that is used to identify this version of the implementation guide when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the implementation guide author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence."]
13502    pub version: Option<Box<FHIRString>>,
13503    #[primitive]
13504    #[doc = "A natural language name identifying the implementation guide. This name should be usable as an identifier for the module by machine processing applications such as code generation."]
13505    pub name: Box<FHIRString>,
13506    #[primitive]
13507    #[doc = "A short, descriptive, user-friendly title for the implementation guide."]
13508    pub title: Option<Box<FHIRString>>,
13509    #[primitive]
13510    #[doc = "The status of this implementation guide. Enables tracking the life-cycle of the content."]
13511    pub status: Box<terminology::PublicationStatus>,
13512    #[primitive]
13513    #[doc = "A Boolean value to indicate that this implementation guide is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage."]
13514    pub experimental: Option<Box<FHIRBoolean>>,
13515    #[primitive]
13516    #[doc = "The date  (and optionally time) when the implementation guide was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the implementation guide changes."]
13517    pub date: Option<Box<FHIRDateTime>>,
13518    #[primitive]
13519    #[doc = "The name of the organization or individual that published the implementation guide."]
13520    pub publisher: Option<Box<FHIRString>>,
13521    #[doc = "Contact details to assist a user in finding and communicating with the publisher."]
13522    pub contact: Option<Vec<Box<ContactDetail>>>,
13523    #[primitive]
13524    #[doc = "A free text natural language description of the implementation guide from a consumer's perspective."]
13525    pub description: Option<Box<FHIRMarkdown>>,
13526    #[doc = "The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate implementation guide instances."]
13527    pub useContext: Option<Vec<Box<UsageContext>>>,
13528    #[doc = "A legal or geographic region in which the implementation guide is intended to be used."]
13529    pub jurisdiction: Option<Vec<Box<CodeableConcept>>>,
13530    #[primitive]
13531    #[doc = "A copyright statement relating to the implementation guide and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the implementation guide."]
13532    pub copyright: Option<Box<FHIRMarkdown>>,
13533    #[primitive]
13534    #[doc = "The NPM package name for this Implementation Guide, used in the NPM package distribution, which is the primary mechanism by which FHIR based tooling manages IG dependencies. This value must be globally unique, and should be assigned with care."]
13535    pub packageId: Box<FHIRId>,
13536    #[primitive]
13537    #[doc = "The license that applies to this Implementation Guide, using an SPDX license code, or 'not-open-source'."]
13538    pub license: Option<Box<terminology::SpdxLicense>>,
13539    #[primitive]
13540    #[cardinality(min = 1usize)]
13541    #[doc = "The version(s) of the FHIR specification that this ImplementationGuide targets - e.g. describes how to use. The value of this element is the formal version of the specification, without the revision number, e.g. [publication].[major].[minor], which is 4.0.1. for this version."]
13542    pub fhirVersion: Vec<Box<terminology::FHIRVersion>>,
13543    #[doc = "Another implementation guide that this implementation depends on. Typically, an implementation guide uses value sets, profiles etc.defined in other implementation guides."]
13544    pub dependsOn: Option<Vec<ImplementationGuideDependsOn>>,
13545    #[doc = "A set of profiles that all resources covered by this implementation guide must conform to."]
13546    pub global: Option<Vec<ImplementationGuideGlobal>>,
13547    #[doc = "The information needed by an IG publisher tool to publish the whole implementation guide."]
13548    pub definition: Option<ImplementationGuideDefinition>,
13549    #[doc = "Information about an assembled implementation guide, created by the publication tooling."]
13550    pub manifest: Option<ImplementationGuideManifest>,
13551}
13552#[derive(
13553    Clone,
13554    Reflect,
13555    Debug,
13556    Default,
13557    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
13558    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
13559)]
13560#[fhir_serialize_type = "complex"]
13561#[doc = "The contact for the health insurance product for a certain purpose."]
13562pub struct InsurancePlanContact {
13563    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
13564    pub id: Option<String>,
13565    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
13566    pub extension: Option<Vec<Box<Extension>>>,
13567    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
13568    pub modifierExtension: Option<Vec<Box<Extension>>>,
13569    #[doc = "Indicates a purpose for which the contact can be reached."]
13570    pub purpose: Option<Box<CodeableConcept>>,
13571    #[doc = "A name associated with the contact."]
13572    pub name: Option<Box<HumanName>>,
13573    #[doc = "A contact detail (e.g. a telephone number or an email address) by which the party may be contacted."]
13574    pub telecom: Option<Vec<Box<ContactPoint>>>,
13575    #[doc = "Visiting or postal addresses for the contact."]
13576    pub address: Option<Box<Address>>,
13577}
13578#[derive(
13579    Clone,
13580    Reflect,
13581    Debug,
13582    Default,
13583    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
13584    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
13585)]
13586#[fhir_serialize_type = "complex"]
13587#[doc = "The specific limits on the benefit."]
13588pub struct InsurancePlanCoverageBenefitLimit {
13589    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
13590    pub id: Option<String>,
13591    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
13592    pub extension: Option<Vec<Box<Extension>>>,
13593    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
13594    pub modifierExtension: Option<Vec<Box<Extension>>>,
13595    #[doc = "The maximum amount of a service item a plan will pay for a covered benefit.  For examples. wellness visits, or eyeglasses."]
13596    pub value: Option<Box<Quantity>>,
13597    #[doc = "The specific limit on the benefit."]
13598    pub code: Option<Box<CodeableConcept>>,
13599}
13600#[derive(
13601    Clone,
13602    Reflect,
13603    Debug,
13604    Default,
13605    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
13606    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
13607)]
13608#[fhir_serialize_type = "complex"]
13609#[doc = "Specific benefits under this type of coverage."]
13610pub struct InsurancePlanCoverageBenefit {
13611    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
13612    pub id: Option<String>,
13613    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
13614    pub extension: Option<Vec<Box<Extension>>>,
13615    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
13616    pub modifierExtension: Option<Vec<Box<Extension>>>,
13617    #[rename_field = "type"]
13618    #[doc = "Type of benefit (primary care; speciality care; inpatient; outpatient)."]
13619    pub type_: Box<CodeableConcept>,
13620    #[primitive]
13621    #[doc = "The referral requirements to have access/coverage for this benefit."]
13622    pub requirement: Option<Box<FHIRString>>,
13623    #[doc = "The specific limits on the benefit."]
13624    pub limit: Option<Vec<InsurancePlanCoverageBenefitLimit>>,
13625}
13626#[derive(
13627    Clone,
13628    Reflect,
13629    Debug,
13630    Default,
13631    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
13632    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
13633)]
13634#[fhir_serialize_type = "complex"]
13635#[doc = "Details about the coverage offered by the insurance product."]
13636pub struct InsurancePlanCoverage {
13637    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
13638    pub id: Option<String>,
13639    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
13640    pub extension: Option<Vec<Box<Extension>>>,
13641    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
13642    pub modifierExtension: Option<Vec<Box<Extension>>>,
13643    #[rename_field = "type"]
13644    #[doc = "Type of coverage  (Medical; Dental; Mental Health; Substance Abuse; Vision; Drug; Short Term; Long Term Care; Hospice; Home Health)."]
13645    pub type_: Box<CodeableConcept>,
13646    # [reference (targets = ["Organization"])]
13647    #[doc = "Reference to the network that providing the type of coverage."]
13648    pub network: Option<Vec<Box<Reference>>>,
13649    #[cardinality(min = 1usize)]
13650    #[doc = "Specific benefits under this type of coverage."]
13651    pub benefit: Vec<InsurancePlanCoverageBenefit>,
13652}
13653#[derive(
13654    Clone,
13655    Reflect,
13656    Debug,
13657    Default,
13658    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
13659    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
13660)]
13661#[fhir_serialize_type = "complex"]
13662#[doc = "Overall costs associated with the plan."]
13663pub struct InsurancePlanPlanGeneralCost {
13664    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
13665    pub id: Option<String>,
13666    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
13667    pub extension: Option<Vec<Box<Extension>>>,
13668    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
13669    pub modifierExtension: Option<Vec<Box<Extension>>>,
13670    #[rename_field = "type"]
13671    #[doc = "Type of cost."]
13672    pub type_: Option<Box<CodeableConcept>>,
13673    #[primitive]
13674    #[doc = "Number of participants enrolled in the plan."]
13675    pub groupSize: Option<Box<FHIRPositiveInt>>,
13676    #[doc = "Value of the cost."]
13677    pub cost: Option<Box<Money>>,
13678    #[primitive]
13679    #[doc = "Additional information about the general costs associated with this plan."]
13680    pub comment: Option<Box<FHIRString>>,
13681}
13682#[derive(
13683    Clone,
13684    Reflect,
13685    Debug,
13686    Default,
13687    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
13688    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
13689)]
13690#[fhir_serialize_type = "complex"]
13691#[doc = "List of the costs associated with a specific benefit."]
13692pub struct InsurancePlanPlanSpecificCostBenefitCost {
13693    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
13694    pub id: Option<String>,
13695    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
13696    pub extension: Option<Vec<Box<Extension>>>,
13697    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
13698    pub modifierExtension: Option<Vec<Box<Extension>>>,
13699    #[rename_field = "type"]
13700    #[doc = "Type of cost (copay; individual cap; family cap; coinsurance; deductible)."]
13701    pub type_: Box<CodeableConcept>,
13702    #[doc = "Whether the cost applies to in-network or out-of-network providers (in-network; out-of-network; other)."]
13703    pub applicability: Option<Box<CodeableConcept>>,
13704    #[doc = "Additional information about the cost, such as information about funding sources (e.g. HSA, HRA, FSA, RRA)."]
13705    pub qualifiers: Option<Vec<Box<CodeableConcept>>>,
13706    #[doc = "The actual cost value. (some of the costs may be represented as percentages rather than currency, e.g. 10% coinsurance)."]
13707    pub value: Option<Box<Quantity>>,
13708}
13709#[derive(
13710    Clone,
13711    Reflect,
13712    Debug,
13713    Default,
13714    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
13715    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
13716)]
13717#[fhir_serialize_type = "complex"]
13718#[doc = "List of the specific benefits under this category of benefit."]
13719pub struct InsurancePlanPlanSpecificCostBenefit {
13720    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
13721    pub id: Option<String>,
13722    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
13723    pub extension: Option<Vec<Box<Extension>>>,
13724    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
13725    pub modifierExtension: Option<Vec<Box<Extension>>>,
13726    #[rename_field = "type"]
13727    #[doc = "Type of specific benefit (preventative; primary care office visit; speciality office visit; hospitalization; emergency room; urgent care)."]
13728    pub type_: Box<CodeableConcept>,
13729    #[doc = "List of the costs associated with a specific benefit."]
13730    pub cost: Option<Vec<InsurancePlanPlanSpecificCostBenefitCost>>,
13731}
13732#[derive(
13733    Clone,
13734    Reflect,
13735    Debug,
13736    Default,
13737    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
13738    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
13739)]
13740#[fhir_serialize_type = "complex"]
13741#[doc = "Costs associated with the coverage provided by the product."]
13742pub struct InsurancePlanPlanSpecificCost {
13743    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
13744    pub id: Option<String>,
13745    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
13746    pub extension: Option<Vec<Box<Extension>>>,
13747    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
13748    pub modifierExtension: Option<Vec<Box<Extension>>>,
13749    #[doc = "General category of benefit (Medical; Dental; Vision; Drug; Mental Health; Substance Abuse; Hospice, Home Health)."]
13750    pub category: Box<CodeableConcept>,
13751    #[doc = "List of the specific benefits under this category of benefit."]
13752    pub benefit: Option<Vec<InsurancePlanPlanSpecificCostBenefit>>,
13753}
13754#[derive(
13755    Clone,
13756    Reflect,
13757    Debug,
13758    Default,
13759    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
13760    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
13761)]
13762#[fhir_serialize_type = "complex"]
13763#[doc = "Details about an insurance plan."]
13764pub struct InsurancePlanPlan {
13765    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
13766    pub id: Option<String>,
13767    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
13768    pub extension: Option<Vec<Box<Extension>>>,
13769    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
13770    pub modifierExtension: Option<Vec<Box<Extension>>>,
13771    #[rename_field = "identifier"]
13772    #[doc = "Business identifiers assigned to this health insurance plan which remain constant as the resource is updated and propagates from server to server."]
13773    pub identifier_: Option<Vec<Box<Identifier>>>,
13774    #[rename_field = "type"]
13775    #[doc = "Type of plan. For example, \"Platinum\" or \"High Deductable\"."]
13776    pub type_: Option<Box<CodeableConcept>>,
13777    # [reference (targets = ["Location"])]
13778    #[doc = "The geographic region in which a health insurance plan's benefits apply."]
13779    pub coverageArea: Option<Vec<Box<Reference>>>,
13780    # [reference (targets = ["Organization"])]
13781    #[doc = "Reference to the network that providing the type of coverage."]
13782    pub network: Option<Vec<Box<Reference>>>,
13783    #[doc = "Overall costs associated with the plan."]
13784    pub generalCost: Option<Vec<InsurancePlanPlanGeneralCost>>,
13785    #[doc = "Costs associated with the coverage provided by the product."]
13786    pub specificCost: Option<Vec<InsurancePlanPlanSpecificCost>>,
13787}
13788#[derive(
13789    Clone,
13790    Reflect,
13791    Debug,
13792    Default,
13793    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
13794    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
13795)]
13796#[fhir_serialize_type = "resource"]
13797#[doc = "Details of a Health Insurance product/plan provided by an organization."]
13798pub struct InsurancePlan {
13799    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
13800    pub id: Option<String>,
13801    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
13802    pub meta: Option<Box<Meta>>,
13803    #[primitive]
13804    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
13805    pub implicitRules: Option<Box<FHIRUri>>,
13806    #[primitive]
13807    #[doc = "The base language in which the resource is written."]
13808    pub language: Option<Box<FHIRCode>>,
13809    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
13810    pub text: Option<Box<Narrative>>,
13811    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
13812    pub contained: Option<Vec<Box<Resource>>>,
13813    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
13814    pub extension: Option<Vec<Box<Extension>>>,
13815    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
13816    pub modifierExtension: Option<Vec<Box<Extension>>>,
13817    #[rename_field = "identifier"]
13818    #[doc = "Business identifiers assigned to this health insurance product which remain constant as the resource is updated and propagates from server to server."]
13819    pub identifier_: Option<Vec<Box<Identifier>>>,
13820    #[primitive]
13821    #[doc = "The current state of the health insurance product."]
13822    pub status: Option<Box<terminology::PublicationStatus>>,
13823    #[rename_field = "type"]
13824    #[doc = "The kind of health insurance product."]
13825    pub type_: Option<Vec<Box<CodeableConcept>>>,
13826    #[primitive]
13827    #[doc = "Official name of the health insurance product as designated by the owner."]
13828    pub name: Option<Box<FHIRString>>,
13829    #[primitive]
13830    #[doc = "A list of alternate names that the product is known as, or was known as in the past."]
13831    pub alias: Option<Vec<Box<FHIRString>>>,
13832    #[doc = "The period of time that the health insurance product is available."]
13833    pub period: Option<Box<Period>>,
13834    # [reference (targets = ["Organization"])]
13835    #[doc = "The entity that is providing  the health insurance product and underwriting the risk.  This is typically an insurance carriers, other third-party payers, or health plan sponsors comonly referred to as 'payers'."]
13836    pub ownedBy: Option<Box<Reference>>,
13837    # [reference (targets = ["Organization"])]
13838    #[doc = "An organization which administer other services such as underwriting, customer service and/or claims processing on behalf of the health insurance product owner."]
13839    pub administeredBy: Option<Box<Reference>>,
13840    # [reference (targets = ["Location"])]
13841    #[doc = "The geographic region in which a health insurance product's benefits apply."]
13842    pub coverageArea: Option<Vec<Box<Reference>>>,
13843    #[doc = "The contact for the health insurance product for a certain purpose."]
13844    pub contact: Option<Vec<InsurancePlanContact>>,
13845    # [reference (targets = ["Endpoint"])]
13846    #[doc = "The technical endpoints providing access to services operated for the health insurance product."]
13847    pub endpoint: Option<Vec<Box<Reference>>>,
13848    # [reference (targets = ["Organization"])]
13849    #[doc = "Reference to the network included in the health insurance product."]
13850    pub network: Option<Vec<Box<Reference>>>,
13851    #[doc = "Details about the coverage offered by the insurance product."]
13852    pub coverage: Option<Vec<InsurancePlanCoverage>>,
13853    #[doc = "Details about an insurance plan."]
13854    pub plan: Option<Vec<InsurancePlanPlan>>,
13855}
13856#[derive(
13857    Clone,
13858    Reflect,
13859    Debug,
13860    Default,
13861    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
13862    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
13863)]
13864#[fhir_serialize_type = "complex"]
13865#[doc = "Indicates who or what performed or participated in the charged service."]
13866pub struct InvoiceParticipant {
13867    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
13868    pub id: Option<String>,
13869    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
13870    pub extension: Option<Vec<Box<Extension>>>,
13871    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
13872    pub modifierExtension: Option<Vec<Box<Extension>>>,
13873    #[doc = "Describes the type of involvement (e.g. transcriptionist, creator etc.). If the invoice has been created automatically, the Participant may be a billing engine or another kind of device."]
13874    pub role: Option<Box<CodeableConcept>>,
13875    # [reference (targets = ["Practitioner" , "Organization" , "Patient" , "PractitionerRole" , "Device" , "RelatedPerson"])]
13876    #[doc = "The device, practitioner, etc. who performed or participated in the service."]
13877    pub actor: Box<Reference>,
13878}
13879#[derive(
13880    Clone,
13881    Reflect,
13882    Debug,
13883    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
13884    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
13885)]
13886#[fhir_serialize_type = "typechoice"]
13887#[type_choice_field_name = "chargeItem"]
13888pub enum InvoiceLineItemChargeItemTypeChoice {
13889    # [reference (targets = ["ChargeItem"])]
13890    Reference(Box<Reference>),
13891    CodeableConcept(Box<CodeableConcept>),
13892}
13893impl Default for InvoiceLineItemChargeItemTypeChoice {
13894    fn default() -> Self {
13895        InvoiceLineItemChargeItemTypeChoice::Reference(Box::new(Default::default()))
13896    }
13897}
13898#[derive(
13899    Clone,
13900    Reflect,
13901    Debug,
13902    Default,
13903    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
13904    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
13905)]
13906#[fhir_serialize_type = "complex"]
13907#[doc = "The price for a ChargeItem may be calculated as a base price with surcharges/deductions that apply in certain conditions. A ChargeItemDefinition resource that defines the prices, factors and conditions that apply to a billing code is currently under development. The priceComponent element can be used to offer transparency to the recipient of the Invoice as to how the prices have been calculated."]
13908pub struct InvoiceLineItemPriceComponent {
13909    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
13910    pub id: Option<String>,
13911    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
13912    pub extension: Option<Vec<Box<Extension>>>,
13913    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
13914    pub modifierExtension: Option<Vec<Box<Extension>>>,
13915    #[rename_field = "type"]
13916    #[primitive]
13917    #[doc = "This code identifies the type of the component."]
13918    pub type_: Box<terminology::InvoicePriceComponentType>,
13919    #[doc = "A code that identifies the component. Codes may be used to differentiate between kinds of taxes, surcharges, discounts etc."]
13920    pub code: Option<Box<CodeableConcept>>,
13921    #[primitive]
13922    #[doc = "The factor that has been applied on the base price for calculating this component."]
13923    pub factor: Option<Box<FHIRDecimal>>,
13924    #[doc = "The amount calculated for this component."]
13925    pub amount: Option<Box<Money>>,
13926}
13927#[derive(
13928    Clone,
13929    Reflect,
13930    Debug,
13931    Default,
13932    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
13933    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
13934)]
13935#[fhir_serialize_type = "complex"]
13936#[doc = "Each line item represents one charge for goods and services rendered. Details such as date, code and amount are found in the referenced ChargeItem resource."]
13937pub struct InvoiceLineItem {
13938    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
13939    pub id: Option<String>,
13940    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
13941    pub extension: Option<Vec<Box<Extension>>>,
13942    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
13943    pub modifierExtension: Option<Vec<Box<Extension>>>,
13944    #[primitive]
13945    #[doc = "Sequence in which the items appear on the invoice."]
13946    pub sequence: Option<Box<FHIRPositiveInt>>,
13947    # [type_choice_variants (complex = ["chargeItemReference" , "chargeItemCodeableConcept"] , primitive = [])]
13948    #[doc = "The ChargeItem contains information such as the billing code, date, amount etc. If no further details are required for the lineItem, inline billing codes can be added using the CodeableConcept data type instead of the Reference."]
13949    pub chargeItem: InvoiceLineItemChargeItemTypeChoice,
13950    #[doc = "The price for a ChargeItem may be calculated as a base price with surcharges/deductions that apply in certain conditions. A ChargeItemDefinition resource that defines the prices, factors and conditions that apply to a billing code is currently under development. The priceComponent element can be used to offer transparency to the recipient of the Invoice as to how the prices have been calculated."]
13951    pub priceComponent: Option<Vec<InvoiceLineItemPriceComponent>>,
13952}
13953#[derive(
13954    Clone,
13955    Reflect,
13956    Debug,
13957    Default,
13958    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
13959    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
13960)]
13961#[fhir_serialize_type = "resource"]
13962#[doc = "Invoice containing collected ChargeItems from an Account with calculated individual and total price for Billing purpose."]
13963pub struct Invoice {
13964    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
13965    pub id: Option<String>,
13966    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
13967    pub meta: Option<Box<Meta>>,
13968    #[primitive]
13969    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
13970    pub implicitRules: Option<Box<FHIRUri>>,
13971    #[primitive]
13972    #[doc = "The base language in which the resource is written."]
13973    pub language: Option<Box<FHIRCode>>,
13974    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
13975    pub text: Option<Box<Narrative>>,
13976    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
13977    pub contained: Option<Vec<Box<Resource>>>,
13978    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
13979    pub extension: Option<Vec<Box<Extension>>>,
13980    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
13981    pub modifierExtension: Option<Vec<Box<Extension>>>,
13982    #[rename_field = "identifier"]
13983    #[doc = "Identifier of this Invoice, often used for reference in correspondence about this invoice or for tracking of payments."]
13984    pub identifier_: Option<Vec<Box<Identifier>>>,
13985    #[primitive]
13986    #[doc = "The current state of the Invoice."]
13987    pub status: Box<terminology::InvoiceStatus>,
13988    #[primitive]
13989    #[doc = "In case of Invoice cancellation a reason must be given (entered in error, superseded by corrected invoice etc.)."]
13990    pub cancelledReason: Option<Box<FHIRString>>,
13991    #[rename_field = "type"]
13992    #[doc = "Type of Invoice depending on domain, realm an usage (e.g. internal/external, dental, preliminary)."]
13993    pub type_: Option<Box<CodeableConcept>>,
13994    # [reference (targets = ["Patient" , "Group"])]
13995    #[doc = "The individual or set of individuals receiving the goods and services billed in this invoice."]
13996    pub subject: Option<Box<Reference>>,
13997    # [reference (targets = ["Organization" , "Patient" , "RelatedPerson"])]
13998    #[doc = "The individual or Organization responsible for balancing of this invoice."]
13999    pub recipient: Option<Box<Reference>>,
14000    #[primitive]
14001    #[doc = "Date/time(s) of when this Invoice was posted."]
14002    pub date: Option<Box<FHIRDateTime>>,
14003    #[doc = "Indicates who or what performed or participated in the charged service."]
14004    pub participant: Option<Vec<InvoiceParticipant>>,
14005    # [reference (targets = ["Organization"])]
14006    #[doc = "The organizationissuing the Invoice."]
14007    pub issuer: Option<Box<Reference>>,
14008    # [reference (targets = ["Account"])]
14009    #[doc = "Account which is supposed to be balanced with this Invoice."]
14010    pub account: Option<Box<Reference>>,
14011    #[doc = "Each line item represents one charge for goods and services rendered. Details such as date, code and amount are found in the referenced ChargeItem resource."]
14012    pub lineItem: Option<Vec<InvoiceLineItem>>,
14013    #[doc = "The total amount for the Invoice may be calculated as the sum of the line items with surcharges/deductions that apply in certain conditions.  The priceComponent element can be used to offer transparency to the recipient of the Invoice of how the total price was calculated."]
14014    pub totalPriceComponent: Option<Vec<InvoiceLineItemPriceComponent>>,
14015    #[doc = "Invoice total , taxes excluded."]
14016    pub totalNet: Option<Box<Money>>,
14017    #[doc = "Invoice total, tax included."]
14018    pub totalGross: Option<Box<Money>>,
14019    #[primitive]
14020    #[doc = "Payment details such as banking details, period of payment, deductibles, methods of payment."]
14021    pub paymentTerms: Option<Box<FHIRMarkdown>>,
14022    #[doc = "Comments made about the invoice by the issuer, subject, or other participants."]
14023    pub note: Option<Vec<Box<Annotation>>>,
14024}
14025#[derive(
14026    Clone,
14027    Reflect,
14028    Debug,
14029    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
14030    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
14031)]
14032#[fhir_serialize_type = "typechoice"]
14033#[type_choice_field_name = "subject"]
14034pub enum LibrarySubjectTypeChoice {
14035    CodeableConcept(Box<CodeableConcept>),
14036    # [reference (targets = ["Group"])]
14037    Reference(Box<Reference>),
14038}
14039impl Default for LibrarySubjectTypeChoice {
14040    fn default() -> Self {
14041        LibrarySubjectTypeChoice::CodeableConcept(Box::new(Default::default()))
14042    }
14043}
14044#[derive(
14045    Clone,
14046    Reflect,
14047    Debug,
14048    Default,
14049    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
14050    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
14051)]
14052#[fhir_serialize_type = "resource"]
14053#[doc = "The Library resource is a general-purpose container for knowledge asset definitions. It can be used to describe and expose existing knowledge assets such as logic libraries and information model descriptions, as well as to describe a collection of knowledge assets."]
14054pub struct Library {
14055    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
14056    pub id: Option<String>,
14057    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
14058    pub meta: Option<Box<Meta>>,
14059    #[primitive]
14060    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
14061    pub implicitRules: Option<Box<FHIRUri>>,
14062    #[primitive]
14063    #[doc = "The base language in which the resource is written."]
14064    pub language: Option<Box<FHIRCode>>,
14065    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
14066    pub text: Option<Box<Narrative>>,
14067    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
14068    pub contained: Option<Vec<Box<Resource>>>,
14069    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
14070    pub extension: Option<Vec<Box<Extension>>>,
14071    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
14072    pub modifierExtension: Option<Vec<Box<Extension>>>,
14073    #[primitive]
14074    #[doc = "An absolute URI that is used to identify this library when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this library is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the library is stored on different servers."]
14075    pub url: Option<Box<FHIRUri>>,
14076    #[rename_field = "identifier"]
14077    #[doc = "A formal identifier that is used to identify this library when it is represented in other formats, or referenced in a specification, model, design or an instance. e.g. CMS or NQF identifiers for a measure artifact. Note that at least one identifier is required for non-experimental active artifacts."]
14078    pub identifier_: Option<Vec<Box<Identifier>>>,
14079    #[primitive]
14080    #[doc = "The identifier that is used to identify this version of the library when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the library author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence. To provide a version consistent with the Decision Support Service specification, use the format Major.Minor.Revision (e.g. 1.0.0). For more information on versioning knowledge assets, refer to the Decision Support Service specification. Note that a version is required for non-experimental active artifacts."]
14081    pub version: Option<Box<FHIRString>>,
14082    #[primitive]
14083    #[doc = "A natural language name identifying the library. This name should be usable as an identifier for the module by machine processing applications such as code generation."]
14084    pub name: Option<Box<FHIRString>>,
14085    #[primitive]
14086    #[doc = "A short, descriptive, user-friendly title for the library."]
14087    pub title: Option<Box<FHIRString>>,
14088    #[primitive]
14089    #[doc = "An explanatory or alternate title for the library giving additional information about its content."]
14090    pub subtitle: Option<Box<FHIRString>>,
14091    #[primitive]
14092    #[doc = "The status of this library. Enables tracking the life-cycle of the content."]
14093    pub status: Box<terminology::PublicationStatus>,
14094    #[primitive]
14095    #[doc = "A Boolean value to indicate that this library is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage."]
14096    pub experimental: Option<Box<FHIRBoolean>>,
14097    #[rename_field = "type"]
14098    #[doc = "Identifies the type of library such as a Logic Library, Model Definition, Asset Collection, or Module Definition."]
14099    pub type_: Box<CodeableConcept>,
14100    # [type_choice_variants (complex = ["subjectCodeableConcept" , "subjectReference"] , primitive = [])]
14101    #[doc = "A code or group definition that describes the intended subject of the contents of the library."]
14102    pub subject: Option<LibrarySubjectTypeChoice>,
14103    #[primitive]
14104    #[doc = "The date  (and optionally time) when the library was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the library changes."]
14105    pub date: Option<Box<FHIRDateTime>>,
14106    #[primitive]
14107    #[doc = "The name of the organization or individual that published the library."]
14108    pub publisher: Option<Box<FHIRString>>,
14109    #[doc = "Contact details to assist a user in finding and communicating with the publisher."]
14110    pub contact: Option<Vec<Box<ContactDetail>>>,
14111    #[primitive]
14112    #[doc = "A free text natural language description of the library from a consumer's perspective."]
14113    pub description: Option<Box<FHIRMarkdown>>,
14114    #[doc = "The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate library instances."]
14115    pub useContext: Option<Vec<Box<UsageContext>>>,
14116    #[doc = "A legal or geographic region in which the library is intended to be used."]
14117    pub jurisdiction: Option<Vec<Box<CodeableConcept>>>,
14118    #[primitive]
14119    #[doc = "Explanation of why this library is needed and why it has been designed as it has."]
14120    pub purpose: Option<Box<FHIRMarkdown>>,
14121    #[primitive]
14122    #[doc = "A detailed description of how the library is used from a clinical perspective."]
14123    pub usage: Option<Box<FHIRString>>,
14124    #[primitive]
14125    #[doc = "A copyright statement relating to the library and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the library."]
14126    pub copyright: Option<Box<FHIRMarkdown>>,
14127    #[primitive]
14128    #[doc = "The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage."]
14129    pub approvalDate: Option<Box<FHIRDate>>,
14130    #[primitive]
14131    #[doc = "The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date."]
14132    pub lastReviewDate: Option<Box<FHIRDate>>,
14133    #[doc = "The period during which the library content was or is planned to be in active use."]
14134    pub effectivePeriod: Option<Box<Period>>,
14135    #[doc = "Descriptive topics related to the content of the library. Topics provide a high-level categorization of the library that can be useful for filtering and searching."]
14136    pub topic: Option<Vec<Box<CodeableConcept>>>,
14137    #[doc = "An individiual or organization primarily involved in the creation and maintenance of the content."]
14138    pub author: Option<Vec<Box<ContactDetail>>>,
14139    #[doc = "An individual or organization primarily responsible for internal coherence of the content."]
14140    pub editor: Option<Vec<Box<ContactDetail>>>,
14141    #[doc = "An individual or organization primarily responsible for review of some aspect of the content."]
14142    pub reviewer: Option<Vec<Box<ContactDetail>>>,
14143    #[doc = "An individual or organization responsible for officially endorsing the content for use in some setting."]
14144    pub endorser: Option<Vec<Box<ContactDetail>>>,
14145    #[doc = "Related artifacts such as additional documentation, justification, or bibliographic references."]
14146    pub relatedArtifact: Option<Vec<Box<RelatedArtifact>>>,
14147    #[doc = "The parameter element defines parameters used by the library."]
14148    pub parameter: Option<Vec<Box<ParameterDefinition>>>,
14149    #[doc = "Describes a set of data that must be provided in order to be able to successfully perform the computations defined by the library."]
14150    pub dataRequirement: Option<Vec<Box<DataRequirement>>>,
14151    #[doc = "The content of the library as an Attachment. The content may be a reference to a url, or may be directly embedded as a base-64 string. Either way, the contentType of the attachment determines how to interpret the content."]
14152    pub content: Option<Vec<Box<Attachment>>>,
14153}
14154#[derive(
14155    Clone,
14156    Reflect,
14157    Debug,
14158    Default,
14159    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
14160    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
14161)]
14162#[fhir_serialize_type = "complex"]
14163#[doc = "Identifies which record considered as the reference to the same real-world occurrence as well as how the items should be evaluated within the collection of linked items."]
14164pub struct LinkageItem {
14165    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
14166    pub id: Option<String>,
14167    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
14168    pub extension: Option<Vec<Box<Extension>>>,
14169    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
14170    pub modifierExtension: Option<Vec<Box<Extension>>>,
14171    #[rename_field = "type"]
14172    #[primitive]
14173    #[doc = "Distinguishes which item is \"source of truth\" (if any) and which items are no longer considered to be current representations."]
14174    pub type_: Box<terminology::LinkageType>,
14175    # [reference (targets = ["Resource"])]
14176    #[doc = "The resource instance being linked as part of the group."]
14177    pub resource: Box<Reference>,
14178}
14179#[derive(
14180    Clone,
14181    Reflect,
14182    Debug,
14183    Default,
14184    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
14185    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
14186)]
14187#[fhir_serialize_type = "resource"]
14188#[doc = "Identifies two or more records (resource instances) that refer to the same real-world \"occurrence\"."]
14189pub struct Linkage {
14190    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
14191    pub id: Option<String>,
14192    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
14193    pub meta: Option<Box<Meta>>,
14194    #[primitive]
14195    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
14196    pub implicitRules: Option<Box<FHIRUri>>,
14197    #[primitive]
14198    #[doc = "The base language in which the resource is written."]
14199    pub language: Option<Box<FHIRCode>>,
14200    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
14201    pub text: Option<Box<Narrative>>,
14202    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
14203    pub contained: Option<Vec<Box<Resource>>>,
14204    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
14205    pub extension: Option<Vec<Box<Extension>>>,
14206    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
14207    pub modifierExtension: Option<Vec<Box<Extension>>>,
14208    #[primitive]
14209    #[doc = "Indicates whether the asserted set of linkages are considered to be \"in effect\"."]
14210    pub active: Option<Box<FHIRBoolean>>,
14211    # [reference (targets = ["Practitioner" , "PractitionerRole" , "Organization"])]
14212    #[doc = "Identifies the user or organization responsible for asserting the linkages as well as the user or organization who establishes the context in which the nature of each linkage is evaluated."]
14213    pub author: Option<Box<Reference>>,
14214    #[cardinality(min = 1usize)]
14215    #[doc = "Identifies which record considered as the reference to the same real-world occurrence as well as how the items should be evaluated within the collection of linked items."]
14216    pub item: Vec<LinkageItem>,
14217}
14218#[derive(
14219    Clone,
14220    Reflect,
14221    Debug,
14222    Default,
14223    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
14224    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
14225)]
14226#[fhir_serialize_type = "complex"]
14227#[doc = "Entries in this list."]
14228pub struct ListEntry {
14229    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
14230    pub id: Option<String>,
14231    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
14232    pub extension: Option<Vec<Box<Extension>>>,
14233    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
14234    pub modifierExtension: Option<Vec<Box<Extension>>>,
14235    #[doc = "The flag allows the system constructing the list to indicate the role and significance of the item in the list."]
14236    pub flag: Option<Box<CodeableConcept>>,
14237    #[primitive]
14238    #[doc = "True if this item is marked as deleted in the list."]
14239    pub deleted: Option<Box<FHIRBoolean>>,
14240    #[primitive]
14241    #[doc = "When this item was added to the list."]
14242    pub date: Option<Box<FHIRDateTime>>,
14243    # [reference (targets = ["Resource"])]
14244    #[doc = "A reference to the actual resource from which data was derived."]
14245    pub item: Box<Reference>,
14246}
14247#[derive(
14248    Clone,
14249    Reflect,
14250    Debug,
14251    Default,
14252    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
14253    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
14254)]
14255#[fhir_serialize_type = "resource"]
14256#[doc = "A list is a curated collection of resources."]
14257pub struct List {
14258    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
14259    pub id: Option<String>,
14260    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
14261    pub meta: Option<Box<Meta>>,
14262    #[primitive]
14263    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
14264    pub implicitRules: Option<Box<FHIRUri>>,
14265    #[primitive]
14266    #[doc = "The base language in which the resource is written."]
14267    pub language: Option<Box<FHIRCode>>,
14268    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
14269    pub text: Option<Box<Narrative>>,
14270    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
14271    pub contained: Option<Vec<Box<Resource>>>,
14272    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
14273    pub extension: Option<Vec<Box<Extension>>>,
14274    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
14275    pub modifierExtension: Option<Vec<Box<Extension>>>,
14276    #[rename_field = "identifier"]
14277    #[doc = "Identifier for the List assigned for business purposes outside the context of FHIR."]
14278    pub identifier_: Option<Vec<Box<Identifier>>>,
14279    #[primitive]
14280    #[doc = "Indicates the current state of this list."]
14281    pub status: Box<terminology::ListStatus>,
14282    #[primitive]
14283    #[doc = "How this list was prepared - whether it is a working list that is suitable for being maintained on an ongoing basis, or if it represents a snapshot of a list of items from another source, or whether it is a prepared list where items may be marked as added, modified or deleted."]
14284    pub mode: Box<terminology::ListMode>,
14285    #[primitive]
14286    #[doc = "A label for the list assigned by the author."]
14287    pub title: Option<Box<FHIRString>>,
14288    #[doc = "This code defines the purpose of the list - why it was created."]
14289    pub code: Option<Box<CodeableConcept>>,
14290    # [reference (targets = ["Patient" , "Group" , "Device" , "Location"])]
14291    #[doc = "The common subject (or patient) of the resources that are in the list if there is one."]
14292    pub subject: Option<Box<Reference>>,
14293    # [reference (targets = ["Encounter"])]
14294    #[doc = "The encounter that is the context in which this list was created."]
14295    pub encounter: Option<Box<Reference>>,
14296    #[primitive]
14297    #[doc = "The date that the list was prepared."]
14298    pub date: Option<Box<FHIRDateTime>>,
14299    # [reference (targets = ["Practitioner" , "PractitionerRole" , "Patient" , "Device"])]
14300    #[doc = "The entity responsible for deciding what the contents of the list were. Where the list was created by a human, this is the same as the author of the list."]
14301    pub source: Option<Box<Reference>>,
14302    #[doc = "What order applies to the items in the list."]
14303    pub orderedBy: Option<Box<CodeableConcept>>,
14304    #[doc = "Comments that apply to the overall list."]
14305    pub note: Option<Vec<Box<Annotation>>>,
14306    #[doc = "Entries in this list."]
14307    pub entry: Option<Vec<ListEntry>>,
14308    #[doc = "If the list is empty, why the list is empty."]
14309    pub emptyReason: Option<Box<CodeableConcept>>,
14310}
14311#[derive(
14312    Clone,
14313    Reflect,
14314    Debug,
14315    Default,
14316    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
14317    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
14318)]
14319#[fhir_serialize_type = "complex"]
14320#[doc = "The absolute geographic location of the Location, expressed using the WGS84 datum (This is the same co-ordinate system used in KML)."]
14321pub struct LocationPosition {
14322    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
14323    pub id: Option<String>,
14324    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
14325    pub extension: Option<Vec<Box<Extension>>>,
14326    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
14327    pub modifierExtension: Option<Vec<Box<Extension>>>,
14328    #[primitive]
14329    #[doc = "Longitude. The value domain and the interpretation are the same as for the text of the longitude element in KML (see notes below)."]
14330    pub longitude: Box<FHIRDecimal>,
14331    #[primitive]
14332    #[doc = "Latitude. The value domain and the interpretation are the same as for the text of the latitude element in KML (see notes below)."]
14333    pub latitude: Box<FHIRDecimal>,
14334    #[primitive]
14335    #[doc = "Altitude. The value domain and the interpretation are the same as for the text of the altitude element in KML (see notes below)."]
14336    pub altitude: Option<Box<FHIRDecimal>>,
14337}
14338#[derive(
14339    Clone,
14340    Reflect,
14341    Debug,
14342    Default,
14343    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
14344    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
14345)]
14346#[fhir_serialize_type = "complex"]
14347#[doc = "What days/times during a week is this location usually open."]
14348pub struct LocationHoursOfOperation {
14349    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
14350    pub id: Option<String>,
14351    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
14352    pub extension: Option<Vec<Box<Extension>>>,
14353    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
14354    pub modifierExtension: Option<Vec<Box<Extension>>>,
14355    #[primitive]
14356    #[doc = "Indicates which days of the week are available between the start and end Times."]
14357    pub daysOfWeek: Option<Vec<Box<terminology::DaysOfWeek>>>,
14358    #[primitive]
14359    #[doc = "The Location is open all day."]
14360    pub allDay: Option<Box<FHIRBoolean>>,
14361    #[primitive]
14362    #[doc = "Time that the Location opens."]
14363    pub openingTime: Option<Box<FHIRTime>>,
14364    #[primitive]
14365    #[doc = "Time that the Location closes."]
14366    pub closingTime: Option<Box<FHIRTime>>,
14367}
14368#[derive(
14369    Clone,
14370    Reflect,
14371    Debug,
14372    Default,
14373    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
14374    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
14375)]
14376#[fhir_serialize_type = "resource"]
14377#[doc = "Details and position information for a physical place where services are provided and resources and participants may be stored, found, contained, or accommodated."]
14378pub struct Location {
14379    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
14380    pub id: Option<String>,
14381    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
14382    pub meta: Option<Box<Meta>>,
14383    #[primitive]
14384    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
14385    pub implicitRules: Option<Box<FHIRUri>>,
14386    #[primitive]
14387    #[doc = "The base language in which the resource is written."]
14388    pub language: Option<Box<FHIRCode>>,
14389    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
14390    pub text: Option<Box<Narrative>>,
14391    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
14392    pub contained: Option<Vec<Box<Resource>>>,
14393    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
14394    pub extension: Option<Vec<Box<Extension>>>,
14395    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
14396    pub modifierExtension: Option<Vec<Box<Extension>>>,
14397    #[rename_field = "identifier"]
14398    #[doc = "Unique code or number identifying the location to its users."]
14399    pub identifier_: Option<Vec<Box<Identifier>>>,
14400    #[primitive]
14401    #[doc = "The status property covers the general availability of the resource, not the current value which may be covered by the operationStatus, or by a schedule/slots if they are configured for the location."]
14402    pub status: Option<Box<terminology::LocationStatus>>,
14403    #[doc = "The operational status covers operation values most relevant to beds (but can also apply to rooms/units/chairs/etc. such as an isolation unit/dialysis chair). This typically covers concepts such as contamination, housekeeping, and other activities like maintenance."]
14404    pub operationalStatus: Option<Box<Coding>>,
14405    #[primitive]
14406    #[doc = "Name of the location as used by humans. Does not need to be unique."]
14407    pub name: Option<Box<FHIRString>>,
14408    #[primitive]
14409    #[doc = "A list of alternate names that the location is known as, or was known as, in the past."]
14410    pub alias: Option<Vec<Box<FHIRString>>>,
14411    #[primitive]
14412    #[doc = "Description of the Location, which helps in finding or referencing the place."]
14413    pub description: Option<Box<FHIRString>>,
14414    #[primitive]
14415    #[doc = "Indicates whether a resource instance represents a specific location or a class of locations."]
14416    pub mode: Option<Box<terminology::LocationMode>>,
14417    #[rename_field = "type"]
14418    #[doc = "Indicates the type of function performed at the location."]
14419    pub type_: Option<Vec<Box<CodeableConcept>>>,
14420    #[doc = "The contact details of communication devices available at the location. This can include phone numbers, fax numbers, mobile numbers, email addresses and web sites."]
14421    pub telecom: Option<Vec<Box<ContactPoint>>>,
14422    #[doc = "Physical location."]
14423    pub address: Option<Box<Address>>,
14424    #[doc = "Physical form of the location, e.g. building, room, vehicle, road."]
14425    pub physicalType: Option<Box<CodeableConcept>>,
14426    #[doc = "The absolute geographic location of the Location, expressed using the WGS84 datum (This is the same co-ordinate system used in KML)."]
14427    pub position: Option<LocationPosition>,
14428    # [reference (targets = ["Organization"])]
14429    #[doc = "The organization responsible for the provisioning and upkeep of the location."]
14430    pub managingOrganization: Option<Box<Reference>>,
14431    # [reference (targets = ["Location"])]
14432    #[doc = "Another Location of which this Location is physically a part of."]
14433    pub partOf: Option<Box<Reference>>,
14434    #[doc = "What days/times during a week is this location usually open."]
14435    pub hoursOfOperation: Option<Vec<LocationHoursOfOperation>>,
14436    #[primitive]
14437    #[doc = "A description of when the locations opening ours are different to normal, e.g. public holiday availability. Succinctly describing all possible exceptions to normal site availability as detailed in the opening hours Times."]
14438    pub availabilityExceptions: Option<Box<FHIRString>>,
14439    # [reference (targets = ["Endpoint"])]
14440    #[doc = "Technical endpoints providing access to services operated for the location."]
14441    pub endpoint: Option<Vec<Box<Reference>>>,
14442}
14443#[derive(
14444    Clone,
14445    Reflect,
14446    Debug,
14447    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
14448    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
14449)]
14450#[fhir_serialize_type = "typechoice"]
14451#[type_choice_field_name = "subject"]
14452pub enum MeasureSubjectTypeChoice {
14453    CodeableConcept(Box<CodeableConcept>),
14454    # [reference (targets = ["Group"])]
14455    Reference(Box<Reference>),
14456}
14457impl Default for MeasureSubjectTypeChoice {
14458    fn default() -> Self {
14459        MeasureSubjectTypeChoice::CodeableConcept(Box::new(Default::default()))
14460    }
14461}
14462#[derive(
14463    Clone,
14464    Reflect,
14465    Debug,
14466    Default,
14467    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
14468    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
14469)]
14470#[fhir_serialize_type = "complex"]
14471#[doc = "A population criteria for the measure."]
14472pub struct MeasureGroupPopulation {
14473    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
14474    pub id: Option<String>,
14475    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
14476    pub extension: Option<Vec<Box<Extension>>>,
14477    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
14478    pub modifierExtension: Option<Vec<Box<Extension>>>,
14479    #[doc = "The type of population criteria."]
14480    pub code: Option<Box<CodeableConcept>>,
14481    #[primitive]
14482    #[doc = "The human readable description of this population criteria."]
14483    pub description: Option<Box<FHIRString>>,
14484    #[doc = "An expression that specifies the criteria for the population, typically the name of an expression in a library."]
14485    pub criteria: Box<Expression>,
14486}
14487#[derive(
14488    Clone,
14489    Reflect,
14490    Debug,
14491    Default,
14492    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
14493    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
14494)]
14495#[fhir_serialize_type = "complex"]
14496#[doc = "A component of the stratifier criteria for the measure report, specified as either the name of a valid CQL expression defined within a referenced library or a valid FHIR Resource Path."]
14497pub struct MeasureGroupStratifierComponent {
14498    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
14499    pub id: Option<String>,
14500    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
14501    pub extension: Option<Vec<Box<Extension>>>,
14502    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
14503    pub modifierExtension: Option<Vec<Box<Extension>>>,
14504    #[doc = "Indicates a meaning for the stratifier component. This can be as simple as a unique identifier, or it can establish meaning in a broader context by drawing from a terminology, allowing stratifiers to be correlated across measures."]
14505    pub code: Option<Box<CodeableConcept>>,
14506    #[primitive]
14507    #[doc = "The human readable description of this stratifier criteria component."]
14508    pub description: Option<Box<FHIRString>>,
14509    #[doc = "An expression that specifies the criteria for this component of the stratifier. This is typically the name of an expression defined within a referenced library, but it may also be a path to a stratifier element."]
14510    pub criteria: Box<Expression>,
14511}
14512#[derive(
14513    Clone,
14514    Reflect,
14515    Debug,
14516    Default,
14517    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
14518    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
14519)]
14520#[fhir_serialize_type = "complex"]
14521#[doc = "The stratifier criteria for the measure report, specified as either the name of a valid CQL expression defined within a referenced library or a valid FHIR Resource Path."]
14522pub struct MeasureGroupStratifier {
14523    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
14524    pub id: Option<String>,
14525    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
14526    pub extension: Option<Vec<Box<Extension>>>,
14527    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
14528    pub modifierExtension: Option<Vec<Box<Extension>>>,
14529    #[doc = "Indicates a meaning for the stratifier. This can be as simple as a unique identifier, or it can establish meaning in a broader context by drawing from a terminology, allowing stratifiers to be correlated across measures."]
14530    pub code: Option<Box<CodeableConcept>>,
14531    #[primitive]
14532    #[doc = "The human readable description of this stratifier criteria."]
14533    pub description: Option<Box<FHIRString>>,
14534    #[doc = "An expression that specifies the criteria for the stratifier. This is typically the name of an expression defined within a referenced library, but it may also be a path to a stratifier element."]
14535    pub criteria: Option<Box<Expression>>,
14536    #[doc = "A component of the stratifier criteria for the measure report, specified as either the name of a valid CQL expression defined within a referenced library or a valid FHIR Resource Path."]
14537    pub component: Option<Vec<MeasureGroupStratifierComponent>>,
14538}
14539#[derive(
14540    Clone,
14541    Reflect,
14542    Debug,
14543    Default,
14544    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
14545    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
14546)]
14547#[fhir_serialize_type = "complex"]
14548#[doc = "A group of population criteria for the measure."]
14549pub struct MeasureGroup {
14550    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
14551    pub id: Option<String>,
14552    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
14553    pub extension: Option<Vec<Box<Extension>>>,
14554    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
14555    pub modifierExtension: Option<Vec<Box<Extension>>>,
14556    #[doc = "Indicates a meaning for the group. This can be as simple as a unique identifier, or it can establish meaning in a broader context by drawing from a terminology, allowing groups to be correlated across measures."]
14557    pub code: Option<Box<CodeableConcept>>,
14558    #[primitive]
14559    #[doc = "The human readable description of this population group."]
14560    pub description: Option<Box<FHIRString>>,
14561    #[doc = "A population criteria for the measure."]
14562    pub population: Option<Vec<MeasureGroupPopulation>>,
14563    #[doc = "The stratifier criteria for the measure report, specified as either the name of a valid CQL expression defined within a referenced library or a valid FHIR Resource Path."]
14564    pub stratifier: Option<Vec<MeasureGroupStratifier>>,
14565}
14566#[derive(
14567    Clone,
14568    Reflect,
14569    Debug,
14570    Default,
14571    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
14572    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
14573)]
14574#[fhir_serialize_type = "complex"]
14575#[doc = "The supplemental data criteria for the measure report, specified as either the name of a valid CQL expression within a referenced library, or a valid FHIR Resource Path."]
14576pub struct MeasureSupplementalData {
14577    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
14578    pub id: Option<String>,
14579    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
14580    pub extension: Option<Vec<Box<Extension>>>,
14581    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
14582    pub modifierExtension: Option<Vec<Box<Extension>>>,
14583    #[doc = "Indicates a meaning for the supplemental data. This can be as simple as a unique identifier, or it can establish meaning in a broader context by drawing from a terminology, allowing supplemental data to be correlated across measures."]
14584    pub code: Option<Box<CodeableConcept>>,
14585    #[doc = "An indicator of the intended usage for the supplemental data element. Supplemental data indicates the data is additional information requested to augment the measure information. Risk adjustment factor indicates the data is additional information used to calculate risk adjustment factors when applying a risk model to the measure calculation."]
14586    pub usage: Option<Vec<Box<CodeableConcept>>>,
14587    #[primitive]
14588    #[doc = "The human readable description of this supplemental data."]
14589    pub description: Option<Box<FHIRString>>,
14590    #[doc = "The criteria for the supplemental data. This is typically the name of a valid expression defined within a referenced library, but it may also be a path to a specific data element. The criteria defines the data to be returned for this element."]
14591    pub criteria: Box<Expression>,
14592}
14593#[derive(
14594    Clone,
14595    Reflect,
14596    Debug,
14597    Default,
14598    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
14599    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
14600)]
14601#[fhir_serialize_type = "resource"]
14602#[doc = "The Measure resource provides the definition of a quality measure."]
14603pub struct Measure {
14604    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
14605    pub id: Option<String>,
14606    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
14607    pub meta: Option<Box<Meta>>,
14608    #[primitive]
14609    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
14610    pub implicitRules: Option<Box<FHIRUri>>,
14611    #[primitive]
14612    #[doc = "The base language in which the resource is written."]
14613    pub language: Option<Box<FHIRCode>>,
14614    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
14615    pub text: Option<Box<Narrative>>,
14616    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
14617    pub contained: Option<Vec<Box<Resource>>>,
14618    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
14619    pub extension: Option<Vec<Box<Extension>>>,
14620    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
14621    pub modifierExtension: Option<Vec<Box<Extension>>>,
14622    #[primitive]
14623    #[doc = "An absolute URI that is used to identify this measure when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this measure is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the measure is stored on different servers."]
14624    pub url: Option<Box<FHIRUri>>,
14625    #[rename_field = "identifier"]
14626    #[doc = "A formal identifier that is used to identify this measure when it is represented in other formats, or referenced in a specification, model, design or an instance."]
14627    pub identifier_: Option<Vec<Box<Identifier>>>,
14628    #[primitive]
14629    #[doc = "The identifier that is used to identify this version of the measure when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the measure author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence. To provide a version consistent with the Decision Support Service specification, use the format Major.Minor.Revision (e.g. 1.0.0). For more information on versioning knowledge assets, refer to the Decision Support Service specification. Note that a version is required for non-experimental active artifacts."]
14630    pub version: Option<Box<FHIRString>>,
14631    #[primitive]
14632    #[doc = "A natural language name identifying the measure. This name should be usable as an identifier for the module by machine processing applications such as code generation."]
14633    pub name: Option<Box<FHIRString>>,
14634    #[primitive]
14635    #[doc = "A short, descriptive, user-friendly title for the measure."]
14636    pub title: Option<Box<FHIRString>>,
14637    #[primitive]
14638    #[doc = "An explanatory or alternate title for the measure giving additional information about its content."]
14639    pub subtitle: Option<Box<FHIRString>>,
14640    #[primitive]
14641    #[doc = "The status of this measure. Enables tracking the life-cycle of the content."]
14642    pub status: Box<terminology::PublicationStatus>,
14643    #[primitive]
14644    #[doc = "A Boolean value to indicate that this measure is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage."]
14645    pub experimental: Option<Box<FHIRBoolean>>,
14646    # [type_choice_variants (complex = ["subjectCodeableConcept" , "subjectReference"] , primitive = [])]
14647    #[doc = "The intended subjects for the measure. If this element is not provided, a Patient subject is assumed, but the subject of the measure can be anything."]
14648    pub subject: Option<MeasureSubjectTypeChoice>,
14649    #[primitive]
14650    #[doc = "The date  (and optionally time) when the measure was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the measure changes."]
14651    pub date: Option<Box<FHIRDateTime>>,
14652    #[primitive]
14653    #[doc = "The name of the organization or individual that published the measure."]
14654    pub publisher: Option<Box<FHIRString>>,
14655    #[doc = "Contact details to assist a user in finding and communicating with the publisher."]
14656    pub contact: Option<Vec<Box<ContactDetail>>>,
14657    #[primitive]
14658    #[doc = "A free text natural language description of the measure from a consumer's perspective."]
14659    pub description: Option<Box<FHIRMarkdown>>,
14660    #[doc = "The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate measure instances."]
14661    pub useContext: Option<Vec<Box<UsageContext>>>,
14662    #[doc = "A legal or geographic region in which the measure is intended to be used."]
14663    pub jurisdiction: Option<Vec<Box<CodeableConcept>>>,
14664    #[primitive]
14665    #[doc = "Explanation of why this measure is needed and why it has been designed as it has."]
14666    pub purpose: Option<Box<FHIRMarkdown>>,
14667    #[primitive]
14668    #[doc = "A detailed description, from a clinical perspective, of how the measure is used."]
14669    pub usage: Option<Box<FHIRString>>,
14670    #[primitive]
14671    #[doc = "A copyright statement relating to the measure and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the measure."]
14672    pub copyright: Option<Box<FHIRMarkdown>>,
14673    #[primitive]
14674    #[doc = "The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage."]
14675    pub approvalDate: Option<Box<FHIRDate>>,
14676    #[primitive]
14677    #[doc = "The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date."]
14678    pub lastReviewDate: Option<Box<FHIRDate>>,
14679    #[doc = "The period during which the measure content was or is planned to be in active use."]
14680    pub effectivePeriod: Option<Box<Period>>,
14681    #[doc = "Descriptive topics related to the content of the measure. Topics provide a high-level categorization grouping types of measures that can be useful for filtering and searching."]
14682    pub topic: Option<Vec<Box<CodeableConcept>>>,
14683    #[doc = "An individiual or organization primarily involved in the creation and maintenance of the content."]
14684    pub author: Option<Vec<Box<ContactDetail>>>,
14685    #[doc = "An individual or organization primarily responsible for internal coherence of the content."]
14686    pub editor: Option<Vec<Box<ContactDetail>>>,
14687    #[doc = "An individual or organization primarily responsible for review of some aspect of the content."]
14688    pub reviewer: Option<Vec<Box<ContactDetail>>>,
14689    #[doc = "An individual or organization responsible for officially endorsing the content for use in some setting."]
14690    pub endorser: Option<Vec<Box<ContactDetail>>>,
14691    #[doc = "Related artifacts such as additional documentation, justification, or bibliographic references."]
14692    pub relatedArtifact: Option<Vec<Box<RelatedArtifact>>>,
14693    #[primitive]
14694    #[doc = "A reference to a Library resource containing the formal logic used by the measure."]
14695    pub library: Option<Vec<Box<FHIRCanonical>>>,
14696    #[primitive]
14697    #[doc = "Notices and disclaimers regarding the use of the measure or related to intellectual property (such as code systems) referenced by the measure."]
14698    pub disclaimer: Option<Box<FHIRMarkdown>>,
14699    #[doc = "Indicates how the calculation is performed for the measure, including proportion, ratio, continuous-variable, and cohort. The value set is extensible, allowing additional measure scoring types to be represented."]
14700    pub scoring: Option<Box<CodeableConcept>>,
14701    #[doc = "If this is a composite measure, the scoring method used to combine the component measures to determine the composite score."]
14702    pub compositeScoring: Option<Box<CodeableConcept>>,
14703    #[rename_field = "type"]
14704    #[doc = "Indicates whether the measure is used to examine a process, an outcome over time, a patient-reported outcome, or a structure measure such as utilization."]
14705    pub type_: Option<Vec<Box<CodeableConcept>>>,
14706    #[primitive]
14707    #[doc = "A description of the risk adjustment factors that may impact the resulting score for the measure and how they may be accounted for when computing and reporting measure results."]
14708    pub riskAdjustment: Option<Box<FHIRString>>,
14709    #[primitive]
14710    #[doc = "Describes how to combine the information calculated, based on logic in each of several populations, into one summarized result."]
14711    pub rateAggregation: Option<Box<FHIRString>>,
14712    #[primitive]
14713    #[doc = "Provides a succinct statement of the need for the measure. Usually includes statements pertaining to importance criterion: impact, gap in care, and evidence."]
14714    pub rationale: Option<Box<FHIRMarkdown>>,
14715    #[primitive]
14716    #[doc = "Provides a summary of relevant clinical guidelines or other clinical recommendations supporting the measure."]
14717    pub clinicalRecommendationStatement: Option<Box<FHIRMarkdown>>,
14718    #[doc = "Information on whether an increase or decrease in score is the preferred result (e.g., a higher score indicates better quality OR a lower score indicates better quality OR quality is within a range)."]
14719    pub improvementNotation: Option<Box<CodeableConcept>>,
14720    #[primitive]
14721    #[doc = "Provides a description of an individual term used within the measure."]
14722    pub definition: Option<Vec<Box<FHIRMarkdown>>>,
14723    #[primitive]
14724    #[doc = "Additional guidance for the measure including how it can be used in a clinical context, and the intent of the measure."]
14725    pub guidance: Option<Box<FHIRMarkdown>>,
14726    #[doc = "A group of population criteria for the measure."]
14727    pub group: Option<Vec<MeasureGroup>>,
14728    #[doc = "The supplemental data criteria for the measure report, specified as either the name of a valid CQL expression within a referenced library, or a valid FHIR Resource Path."]
14729    pub supplementalData: Option<Vec<MeasureSupplementalData>>,
14730}
14731#[derive(
14732    Clone,
14733    Reflect,
14734    Debug,
14735    Default,
14736    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
14737    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
14738)]
14739#[fhir_serialize_type = "complex"]
14740#[doc = "The populations that make up the population group, one for each type of population appropriate for the measure."]
14741pub struct MeasureReportGroupPopulation {
14742    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
14743    pub id: Option<String>,
14744    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
14745    pub extension: Option<Vec<Box<Extension>>>,
14746    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
14747    pub modifierExtension: Option<Vec<Box<Extension>>>,
14748    #[doc = "The type of the population."]
14749    pub code: Option<Box<CodeableConcept>>,
14750    #[primitive]
14751    #[doc = "The number of members of the population."]
14752    pub count: Option<Box<FHIRInteger>>,
14753    # [reference (targets = ["List"])]
14754    #[doc = "This element refers to a List of subject level MeasureReport resources, one for each subject in this population."]
14755    pub subjectResults: Option<Box<Reference>>,
14756}
14757#[derive(
14758    Clone,
14759    Reflect,
14760    Debug,
14761    Default,
14762    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
14763    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
14764)]
14765#[fhir_serialize_type = "complex"]
14766#[doc = "A stratifier component value."]
14767pub struct MeasureReportGroupStratifierStratumComponent {
14768    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
14769    pub id: Option<String>,
14770    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
14771    pub extension: Option<Vec<Box<Extension>>>,
14772    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
14773    pub modifierExtension: Option<Vec<Box<Extension>>>,
14774    #[doc = "The code for the stratum component value."]
14775    pub code: Box<CodeableConcept>,
14776    #[doc = "The stratum component value."]
14777    pub value: Box<CodeableConcept>,
14778}
14779#[derive(
14780    Clone,
14781    Reflect,
14782    Debug,
14783    Default,
14784    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
14785    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
14786)]
14787#[fhir_serialize_type = "complex"]
14788#[doc = "The populations that make up the stratum, one for each type of population appropriate to the measure."]
14789pub struct MeasureReportGroupStratifierStratumPopulation {
14790    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
14791    pub id: Option<String>,
14792    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
14793    pub extension: Option<Vec<Box<Extension>>>,
14794    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
14795    pub modifierExtension: Option<Vec<Box<Extension>>>,
14796    #[doc = "The type of the population."]
14797    pub code: Option<Box<CodeableConcept>>,
14798    #[primitive]
14799    #[doc = "The number of members of the population in this stratum."]
14800    pub count: Option<Box<FHIRInteger>>,
14801    # [reference (targets = ["List"])]
14802    #[doc = "This element refers to a List of subject level MeasureReport resources, one for each subject in this population in this stratum."]
14803    pub subjectResults: Option<Box<Reference>>,
14804}
14805#[derive(
14806    Clone,
14807    Reflect,
14808    Debug,
14809    Default,
14810    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
14811    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
14812)]
14813#[fhir_serialize_type = "complex"]
14814#[doc = "This element contains the results for a single stratum within the stratifier. For example, when stratifying on administrative gender, there will be four strata, one for each possible gender value."]
14815pub struct MeasureReportGroupStratifierStratum {
14816    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
14817    pub id: Option<String>,
14818    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
14819    pub extension: Option<Vec<Box<Extension>>>,
14820    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
14821    pub modifierExtension: Option<Vec<Box<Extension>>>,
14822    #[doc = "The value for this stratum, expressed as a CodeableConcept. When defining stratifiers on complex values, the value must be rendered such that the value for each stratum within the stratifier is unique."]
14823    pub value: Option<Box<CodeableConcept>>,
14824    #[doc = "A stratifier component value."]
14825    pub component: Option<Vec<MeasureReportGroupStratifierStratumComponent>>,
14826    #[doc = "The populations that make up the stratum, one for each type of population appropriate to the measure."]
14827    pub population: Option<Vec<MeasureReportGroupStratifierStratumPopulation>>,
14828    #[doc = "The measure score for this stratum, calculated as appropriate for the measure type and scoring method, and based on only the members of this stratum."]
14829    pub measureScore: Option<Box<Quantity>>,
14830}
14831#[derive(
14832    Clone,
14833    Reflect,
14834    Debug,
14835    Default,
14836    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
14837    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
14838)]
14839#[fhir_serialize_type = "complex"]
14840#[doc = "When a measure includes multiple stratifiers, there will be a stratifier group for each stratifier defined by the measure."]
14841pub struct MeasureReportGroupStratifier {
14842    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
14843    pub id: Option<String>,
14844    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
14845    pub extension: Option<Vec<Box<Extension>>>,
14846    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
14847    pub modifierExtension: Option<Vec<Box<Extension>>>,
14848    #[doc = "The meaning of this stratifier, as defined in the measure definition."]
14849    pub code: Option<Vec<Box<CodeableConcept>>>,
14850    #[doc = "This element contains the results for a single stratum within the stratifier. For example, when stratifying on administrative gender, there will be four strata, one for each possible gender value."]
14851    pub stratum: Option<Vec<MeasureReportGroupStratifierStratum>>,
14852}
14853#[derive(
14854    Clone,
14855    Reflect,
14856    Debug,
14857    Default,
14858    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
14859    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
14860)]
14861#[fhir_serialize_type = "complex"]
14862#[doc = "The results of the calculation, one for each population group in the measure."]
14863pub struct MeasureReportGroup {
14864    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
14865    pub id: Option<String>,
14866    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
14867    pub extension: Option<Vec<Box<Extension>>>,
14868    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
14869    pub modifierExtension: Option<Vec<Box<Extension>>>,
14870    #[doc = "The meaning of the population group as defined in the measure definition."]
14871    pub code: Option<Box<CodeableConcept>>,
14872    #[doc = "The populations that make up the population group, one for each type of population appropriate for the measure."]
14873    pub population: Option<Vec<MeasureReportGroupPopulation>>,
14874    #[doc = "The measure score for this population group, calculated as appropriate for the measure type and scoring method, and based on the contents of the populations defined in the group."]
14875    pub measureScore: Option<Box<Quantity>>,
14876    #[doc = "When a measure includes multiple stratifiers, there will be a stratifier group for each stratifier defined by the measure."]
14877    pub stratifier: Option<Vec<MeasureReportGroupStratifier>>,
14878}
14879#[derive(
14880    Clone,
14881    Reflect,
14882    Debug,
14883    Default,
14884    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
14885    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
14886)]
14887#[fhir_serialize_type = "resource"]
14888#[doc = "The MeasureReport resource contains the results of the calculation of a measure; and optionally a reference to the resources involved in that calculation."]
14889pub struct MeasureReport {
14890    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
14891    pub id: Option<String>,
14892    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
14893    pub meta: Option<Box<Meta>>,
14894    #[primitive]
14895    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
14896    pub implicitRules: Option<Box<FHIRUri>>,
14897    #[primitive]
14898    #[doc = "The base language in which the resource is written."]
14899    pub language: Option<Box<FHIRCode>>,
14900    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
14901    pub text: Option<Box<Narrative>>,
14902    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
14903    pub contained: Option<Vec<Box<Resource>>>,
14904    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
14905    pub extension: Option<Vec<Box<Extension>>>,
14906    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
14907    pub modifierExtension: Option<Vec<Box<Extension>>>,
14908    #[rename_field = "identifier"]
14909    #[doc = "A formal identifier that is used to identify this MeasureReport when it is represented in other formats or referenced in a specification, model, design or an instance."]
14910    pub identifier_: Option<Vec<Box<Identifier>>>,
14911    #[primitive]
14912    #[doc = "The MeasureReport status. No data will be available until the MeasureReport status is complete."]
14913    pub status: Box<terminology::MeasureReportStatus>,
14914    #[rename_field = "type"]
14915    #[primitive]
14916    #[doc = "The type of measure report. This may be an individual report, which provides the score for the measure for an individual member of the population; a subject-listing, which returns the list of members that meet the various criteria in the measure; a summary report, which returns a population count for each of the criteria in the measure; or a data-collection, which enables the MeasureReport to be used to exchange the data-of-interest for a quality measure."]
14917    pub type_: Box<terminology::MeasureReportType>,
14918    #[primitive]
14919    #[doc = "A reference to the Measure that was calculated to produce this report."]
14920    pub measure: Box<FHIRCanonical>,
14921    # [reference (targets = ["Patient" , "Practitioner" , "PractitionerRole" , "Location" , "Device" , "RelatedPerson" , "Group"])]
14922    #[doc = "Optional subject identifying the individual or individuals the report is for."]
14923    pub subject: Option<Box<Reference>>,
14924    #[primitive]
14925    #[doc = "The date this measure report was generated."]
14926    pub date: Option<Box<FHIRDateTime>>,
14927    # [reference (targets = ["Practitioner" , "PractitionerRole" , "Location" , "Organization"])]
14928    #[doc = "The individual, location, or organization that is reporting the data."]
14929    pub reporter: Option<Box<Reference>>,
14930    #[doc = "The reporting period for which the report was calculated."]
14931    pub period: Box<Period>,
14932    #[doc = "Whether improvement in the measure is noted by an increase or decrease in the measure score."]
14933    pub improvementNotation: Option<Box<CodeableConcept>>,
14934    #[doc = "The results of the calculation, one for each population group in the measure."]
14935    pub group: Option<Vec<MeasureReportGroup>>,
14936    # [reference (targets = ["Resource"])]
14937    #[doc = "A reference to a Bundle containing the Resources that were used in the calculation of this measure."]
14938    pub evaluatedResource: Option<Vec<Box<Reference>>>,
14939}
14940#[derive(
14941    Clone,
14942    Reflect,
14943    Debug,
14944    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
14945    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
14946)]
14947#[fhir_serialize_type = "typechoice"]
14948#[type_choice_field_name = "created"]
14949pub enum MediaCreatedTypeChoice {
14950    DateTime(Box<FHIRDateTime>),
14951    Period(Box<Period>),
14952}
14953impl Default for MediaCreatedTypeChoice {
14954    fn default() -> Self {
14955        MediaCreatedTypeChoice::DateTime(Box::new(Default::default()))
14956    }
14957}
14958#[derive(
14959    Clone,
14960    Reflect,
14961    Debug,
14962    Default,
14963    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
14964    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
14965)]
14966#[fhir_serialize_type = "resource"]
14967#[doc = "A photo, video, or audio recording acquired or used in healthcare. The actual content may be inline or provided by direct reference."]
14968pub struct Media {
14969    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
14970    pub id: Option<String>,
14971    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
14972    pub meta: Option<Box<Meta>>,
14973    #[primitive]
14974    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
14975    pub implicitRules: Option<Box<FHIRUri>>,
14976    #[primitive]
14977    #[doc = "The base language in which the resource is written."]
14978    pub language: Option<Box<FHIRCode>>,
14979    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
14980    pub text: Option<Box<Narrative>>,
14981    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
14982    pub contained: Option<Vec<Box<Resource>>>,
14983    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
14984    pub extension: Option<Vec<Box<Extension>>>,
14985    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
14986    pub modifierExtension: Option<Vec<Box<Extension>>>,
14987    #[rename_field = "identifier"]
14988    #[doc = "Identifiers associated with the image - these may include identifiers for the image itself, identifiers for the context of its collection (e.g. series ids) and context ids such as accession numbers or other workflow identifiers."]
14989    pub identifier_: Option<Vec<Box<Identifier>>>,
14990    # [reference (targets = ["ServiceRequest" , "CarePlan"])]
14991    #[doc = "A procedure that is fulfilled in whole or in part by the creation of this media."]
14992    pub basedOn: Option<Vec<Box<Reference>>>,
14993    # [reference (targets = ["Resource"])]
14994    #[doc = "A larger event of which this particular event is a component or step."]
14995    pub partOf: Option<Vec<Box<Reference>>>,
14996    #[primitive]
14997    #[doc = "The current state of the {{title}}."]
14998    pub status: Box<terminology::EventStatus>,
14999    #[rename_field = "type"]
15000    #[doc = "A code that classifies whether the media is an image, video or audio recording or some other media category."]
15001    pub type_: Option<Box<CodeableConcept>>,
15002    #[doc = "Details of the type of the media - usually, how it was acquired (what type of device). If images sourced from a DICOM system, are wrapped in a Media resource, then this is the modality."]
15003    pub modality: Option<Box<CodeableConcept>>,
15004    #[doc = "The name of the imaging view e.g. Lateral or Antero-posterior (AP)."]
15005    pub view: Option<Box<CodeableConcept>>,
15006    # [reference (targets = ["Patient" , "Practitioner" , "PractitionerRole" , "Group" , "Device" , "Specimen" , "Location"])]
15007    #[doc = "Who/What this Media is a record of."]
15008    pub subject: Option<Box<Reference>>,
15009    # [reference (targets = ["Encounter"])]
15010    #[doc = "The encounter that establishes the context for this media."]
15011    pub encounter: Option<Box<Reference>>,
15012    # [type_choice_variants (complex = ["createdPeriod"] , primitive = ["createdDateTime"])]
15013    #[doc = "The date and time(s) at which the media was collected."]
15014    pub created: Option<MediaCreatedTypeChoice>,
15015    #[primitive]
15016    #[doc = "The date and time this version of the media was made available to providers, typically after having been reviewed."]
15017    pub issued: Option<Box<FHIRInstant>>,
15018    # [reference (targets = ["Practitioner" , "PractitionerRole" , "Organization" , "CareTeam" , "Patient" , "Device" , "RelatedPerson"])]
15019    #[doc = "The person who administered the collection of the image."]
15020    pub operator: Option<Box<Reference>>,
15021    #[doc = "Describes why the event occurred in coded or textual form."]
15022    pub reasonCode: Option<Vec<Box<CodeableConcept>>>,
15023    #[doc = "Indicates the site on the subject's body where the observation was made (i.e. the target site)."]
15024    pub bodySite: Option<Box<CodeableConcept>>,
15025    #[primitive]
15026    #[doc = "The name of the device / manufacturer of the device  that was used to make the recording."]
15027    pub deviceName: Option<Box<FHIRString>>,
15028    # [reference (targets = ["Device" , "DeviceMetric" , "Device"])]
15029    #[doc = "The device used to collect the media."]
15030    pub device: Option<Box<Reference>>,
15031    #[primitive]
15032    #[doc = "Height of the image in pixels (photo/video)."]
15033    pub height: Option<Box<FHIRPositiveInt>>,
15034    #[primitive]
15035    #[doc = "Width of the image in pixels (photo/video)."]
15036    pub width: Option<Box<FHIRPositiveInt>>,
15037    #[primitive]
15038    #[doc = "The number of frames in a photo. This is used with a multi-page fax, or an imaging acquisition context that takes multiple slices in a single image, or an animated gif. If there is more than one frame, this SHALL have a value in order to alert interface software that a multi-frame capable rendering widget is required."]
15039    pub frames: Option<Box<FHIRPositiveInt>>,
15040    #[primitive]
15041    #[doc = "The duration of the recording in seconds - for audio and video."]
15042    pub duration: Option<Box<FHIRDecimal>>,
15043    #[doc = "The actual content of the media - inline or by direct reference to the media source file."]
15044    pub content: Box<Attachment>,
15045    #[doc = "Comments made about the media by the performer, subject or other participants."]
15046    pub note: Option<Vec<Box<Annotation>>>,
15047}
15048#[derive(
15049    Clone,
15050    Reflect,
15051    Debug,
15052    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
15053    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
15054)]
15055#[fhir_serialize_type = "typechoice"]
15056#[type_choice_field_name = "item"]
15057pub enum MedicationIngredientItemTypeChoice {
15058    CodeableConcept(Box<CodeableConcept>),
15059    # [reference (targets = ["Substance" , "Medication"])]
15060    Reference(Box<Reference>),
15061}
15062impl Default for MedicationIngredientItemTypeChoice {
15063    fn default() -> Self {
15064        MedicationIngredientItemTypeChoice::CodeableConcept(Box::new(Default::default()))
15065    }
15066}
15067#[derive(
15068    Clone,
15069    Reflect,
15070    Debug,
15071    Default,
15072    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
15073    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
15074)]
15075#[fhir_serialize_type = "complex"]
15076#[doc = "Identifies a particular constituent of interest in the product."]
15077pub struct MedicationIngredient {
15078    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
15079    pub id: Option<String>,
15080    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
15081    pub extension: Option<Vec<Box<Extension>>>,
15082    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
15083    pub modifierExtension: Option<Vec<Box<Extension>>>,
15084    # [type_choice_variants (complex = ["itemCodeableConcept" , "itemReference"] , primitive = [])]
15085    #[doc = "The actual ingredient - either a substance (simple ingredient) or another medication of a medication."]
15086    pub item: MedicationIngredientItemTypeChoice,
15087    #[primitive]
15088    #[doc = "Indication of whether this ingredient affects the therapeutic action of the drug."]
15089    pub isActive: Option<Box<FHIRBoolean>>,
15090    #[doc = "Specifies how many (or how much) of the items there are in this Medication.  For example, 250 mg per tablet.  This is expressed as a ratio where the numerator is 250mg and the denominator is 1 tablet."]
15091    pub strength: Option<Box<Ratio>>,
15092}
15093#[derive(
15094    Clone,
15095    Reflect,
15096    Debug,
15097    Default,
15098    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
15099    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
15100)]
15101#[fhir_serialize_type = "complex"]
15102#[doc = "Information that only applies to packages (not products)."]
15103pub struct MedicationBatch {
15104    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
15105    pub id: Option<String>,
15106    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
15107    pub extension: Option<Vec<Box<Extension>>>,
15108    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
15109    pub modifierExtension: Option<Vec<Box<Extension>>>,
15110    #[primitive]
15111    #[doc = "The assigned lot number of a batch of the specified product."]
15112    pub lotNumber: Option<Box<FHIRString>>,
15113    #[primitive]
15114    #[doc = "When this specific batch of product will expire."]
15115    pub expirationDate: Option<Box<FHIRDateTime>>,
15116}
15117#[derive(
15118    Clone,
15119    Reflect,
15120    Debug,
15121    Default,
15122    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
15123    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
15124)]
15125#[fhir_serialize_type = "resource"]
15126#[doc = "This resource is primarily used for the identification and definition of a medication for the purposes of prescribing, dispensing, and administering a medication as well as for making statements about medication use."]
15127pub struct Medication {
15128    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
15129    pub id: Option<String>,
15130    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
15131    pub meta: Option<Box<Meta>>,
15132    #[primitive]
15133    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
15134    pub implicitRules: Option<Box<FHIRUri>>,
15135    #[primitive]
15136    #[doc = "The base language in which the resource is written."]
15137    pub language: Option<Box<FHIRCode>>,
15138    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
15139    pub text: Option<Box<Narrative>>,
15140    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
15141    pub contained: Option<Vec<Box<Resource>>>,
15142    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
15143    pub extension: Option<Vec<Box<Extension>>>,
15144    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
15145    pub modifierExtension: Option<Vec<Box<Extension>>>,
15146    #[rename_field = "identifier"]
15147    #[doc = "Business identifier for this medication."]
15148    pub identifier_: Option<Vec<Box<Identifier>>>,
15149    #[doc = "A code (or set of codes) that specify this medication, or a textual description if no code is available. Usage note: This could be a standard medication code such as a code from RxNorm, SNOMED CT, IDMP etc. It could also be a national or local formulary code, optionally with translations to other code systems."]
15150    pub code: Option<Box<CodeableConcept>>,
15151    #[primitive]
15152    #[doc = "A code to indicate if the medication is in active use."]
15153    pub status: Option<Box<terminology::MedicationStatus>>,
15154    # [reference (targets = ["Organization"])]
15155    #[doc = "Describes the details of the manufacturer of the medication product.  This is not intended to represent the distributor of a medication product."]
15156    pub manufacturer: Option<Box<Reference>>,
15157    #[doc = "Describes the form of the item.  Powder; tablets; capsule."]
15158    pub form: Option<Box<CodeableConcept>>,
15159    #[doc = "Specific amount of the drug in the packaged product.  For example, when specifying a product that has the same strength (For example, Insulin glargine 100 unit per mL solution for injection), this attribute provides additional clarification of the package amount (For example, 3 mL, 10mL, etc.)."]
15160    pub amount: Option<Box<Ratio>>,
15161    #[doc = "Identifies a particular constituent of interest in the product."]
15162    pub ingredient: Option<Vec<MedicationIngredient>>,
15163    #[doc = "Information that only applies to packages (not products)."]
15164    pub batch: Option<MedicationBatch>,
15165}
15166#[derive(
15167    Clone,
15168    Reflect,
15169    Debug,
15170    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
15171    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
15172)]
15173#[fhir_serialize_type = "typechoice"]
15174#[type_choice_field_name = "medication"]
15175pub enum MedicationAdministrationMedicationTypeChoice {
15176    CodeableConcept(Box<CodeableConcept>),
15177    # [reference (targets = ["Medication"])]
15178    Reference(Box<Reference>),
15179}
15180impl Default for MedicationAdministrationMedicationTypeChoice {
15181    fn default() -> Self {
15182        MedicationAdministrationMedicationTypeChoice::CodeableConcept(Box::new(Default::default()))
15183    }
15184}
15185#[derive(
15186    Clone,
15187    Reflect,
15188    Debug,
15189    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
15190    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
15191)]
15192#[fhir_serialize_type = "typechoice"]
15193#[type_choice_field_name = "effective"]
15194pub enum MedicationAdministrationEffectiveTypeChoice {
15195    DateTime(Box<FHIRDateTime>),
15196    Period(Box<Period>),
15197}
15198impl Default for MedicationAdministrationEffectiveTypeChoice {
15199    fn default() -> Self {
15200        MedicationAdministrationEffectiveTypeChoice::DateTime(Box::new(Default::default()))
15201    }
15202}
15203#[derive(
15204    Clone,
15205    Reflect,
15206    Debug,
15207    Default,
15208    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
15209    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
15210)]
15211#[fhir_serialize_type = "complex"]
15212#[doc = "Indicates who or what performed the medication administration and how they were involved."]
15213pub struct MedicationAdministrationPerformer {
15214    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
15215    pub id: Option<String>,
15216    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
15217    pub extension: Option<Vec<Box<Extension>>>,
15218    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
15219    pub modifierExtension: Option<Vec<Box<Extension>>>,
15220    #[doc = "Distinguishes the type of involvement of the performer in the medication administration."]
15221    pub function: Option<Box<CodeableConcept>>,
15222    # [reference (targets = ["Practitioner" , "PractitionerRole" , "Patient" , "RelatedPerson" , "Device"])]
15223    #[doc = "Indicates who or what performed the medication administration."]
15224    pub actor: Box<Reference>,
15225}
15226#[derive(
15227    Clone,
15228    Reflect,
15229    Debug,
15230    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
15231    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
15232)]
15233#[fhir_serialize_type = "typechoice"]
15234#[type_choice_field_name = "rate"]
15235pub enum MedicationAdministrationDosageRateTypeChoice {
15236    Ratio(Box<Ratio>),
15237    Quantity(Box<Quantity>),
15238}
15239impl Default for MedicationAdministrationDosageRateTypeChoice {
15240    fn default() -> Self {
15241        MedicationAdministrationDosageRateTypeChoice::Ratio(Box::new(Default::default()))
15242    }
15243}
15244#[derive(
15245    Clone,
15246    Reflect,
15247    Debug,
15248    Default,
15249    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
15250    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
15251)]
15252#[fhir_serialize_type = "complex"]
15253#[doc = "Describes the medication dosage information details e.g. dose, rate, site, route, etc."]
15254pub struct MedicationAdministrationDosage {
15255    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
15256    pub id: Option<String>,
15257    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
15258    pub extension: Option<Vec<Box<Extension>>>,
15259    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
15260    pub modifierExtension: Option<Vec<Box<Extension>>>,
15261    #[primitive]
15262    #[doc = "Free text dosage can be used for cases where the dosage administered is too complex to code. When coded dosage is present, the free text dosage may still be present for display to humans.\r\rThe dosage instructions should reflect the dosage of the medication that was administered."]
15263    pub text: Option<Box<FHIRString>>,
15264    #[doc = "A coded specification of the anatomic site where the medication first entered the body.  For example, \"left arm\"."]
15265    pub site: Option<Box<CodeableConcept>>,
15266    #[doc = "A code specifying the route or physiological path of administration of a therapeutic agent into or onto the patient.  For example, topical, intravenous, etc."]
15267    pub route: Option<Box<CodeableConcept>>,
15268    #[doc = "A coded value indicating the method by which the medication is intended to be or was introduced into or on the body.  This attribute will most often NOT be populated.  It is most commonly used for injections.  For example, Slow Push, Deep IV."]
15269    pub method: Option<Box<CodeableConcept>>,
15270    #[doc = "The amount of the medication given at one administration event.   Use this value when the administration is essentially an instantaneous event such as a swallowing a tablet or giving an injection."]
15271    pub dose: Option<Box<Quantity>>,
15272    # [type_choice_variants (complex = ["rateRatio" , "rateQuantity"] , primitive = [])]
15273    #[doc = "Identifies the speed with which the medication was or will be introduced into the patient.  Typically, the rate for an infusion e.g. 100 ml per 1 hour or 100 ml/hr.  May also be expressed as a rate per unit of time, e.g. 500 ml per 2 hours.  Other examples:  200 mcg/min or 200 mcg/1 minute; 1 liter/8 hours."]
15274    pub rate: Option<MedicationAdministrationDosageRateTypeChoice>,
15275}
15276#[derive(
15277    Clone,
15278    Reflect,
15279    Debug,
15280    Default,
15281    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
15282    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
15283)]
15284#[fhir_serialize_type = "resource"]
15285#[doc = "Describes the event of a patient consuming or otherwise being administered a medication.  This may be as simple as swallowing a tablet or it may be a long running infusion.  Related resources tie this event to the authorizing prescription, and the specific encounter between patient and health care practitioner."]
15286pub struct MedicationAdministration {
15287    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
15288    pub id: Option<String>,
15289    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
15290    pub meta: Option<Box<Meta>>,
15291    #[primitive]
15292    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
15293    pub implicitRules: Option<Box<FHIRUri>>,
15294    #[primitive]
15295    #[doc = "The base language in which the resource is written."]
15296    pub language: Option<Box<FHIRCode>>,
15297    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
15298    pub text: Option<Box<Narrative>>,
15299    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
15300    pub contained: Option<Vec<Box<Resource>>>,
15301    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
15302    pub extension: Option<Vec<Box<Extension>>>,
15303    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
15304    pub modifierExtension: Option<Vec<Box<Extension>>>,
15305    #[rename_field = "identifier"]
15306    #[doc = "Identifiers associated with this Medication Administration that are defined by business processes and/or used to refer to it when a direct URL reference to the resource itself is not appropriate. They are business identifiers assigned to this resource by the performer or other systems and remain constant as the resource is updated and propagates from server to server."]
15307    pub identifier_: Option<Vec<Box<Identifier>>>,
15308    #[primitive]
15309    #[doc = "A protocol, guideline, orderset, or other definition that was adhered to in whole or in part by this event."]
15310    pub instantiates: Option<Vec<Box<FHIRUri>>>,
15311    # [reference (targets = ["MedicationAdministration" , "Procedure"])]
15312    #[doc = "A larger event of which this particular event is a component or step."]
15313    pub partOf: Option<Vec<Box<Reference>>>,
15314    #[primitive]
15315    #[doc = "Will generally be set to show that the administration has been completed.  For some long running administrations such as infusions, it is possible for an administration to be started but not completed or it may be paused while some other process is under way."]
15316    pub status: Box<terminology::MedicationAdminStatus>,
15317    #[doc = "A code indicating why the administration was not performed."]
15318    pub statusReason: Option<Vec<Box<CodeableConcept>>>,
15319    #[doc = "Indicates where the medication is expected to be consumed or administered."]
15320    pub category: Option<Box<CodeableConcept>>,
15321    # [type_choice_variants (complex = ["medicationCodeableConcept" , "medicationReference"] , primitive = [])]
15322    #[doc = "Identifies the medication that was administered. This is either a link to a resource representing the details of the medication or a simple attribute carrying a code that identifies the medication from a known list of medications."]
15323    pub medication: MedicationAdministrationMedicationTypeChoice,
15324    # [reference (targets = ["Patient" , "Group"])]
15325    #[doc = "The person or animal or group receiving the medication."]
15326    pub subject: Box<Reference>,
15327    # [reference (targets = ["Encounter" , "EpisodeOfCare"])]
15328    #[doc = "The visit, admission, or other contact between patient and health care provider during which the medication administration was performed."]
15329    pub context: Option<Box<Reference>>,
15330    # [reference (targets = ["Resource"])]
15331    #[doc = "Additional information (for example, patient height and weight) that supports the administration of the medication."]
15332    pub supportingInformation: Option<Vec<Box<Reference>>>,
15333    # [type_choice_variants (complex = ["effectivePeriod"] , primitive = ["effectiveDateTime"])]
15334    #[doc = "A specific date/time or interval of time during which the administration took place (or did not take place, when the 'notGiven' attribute is true). For many administrations, such as swallowing a tablet the use of dateTime is more appropriate."]
15335    pub effective: MedicationAdministrationEffectiveTypeChoice,
15336    #[doc = "Indicates who or what performed the medication administration and how they were involved."]
15337    pub performer: Option<Vec<MedicationAdministrationPerformer>>,
15338    #[doc = "A code indicating why the medication was given."]
15339    pub reasonCode: Option<Vec<Box<CodeableConcept>>>,
15340    # [reference (targets = ["Condition" , "Observation" , "DiagnosticReport"])]
15341    #[doc = "Condition or observation that supports why the medication was administered."]
15342    pub reasonReference: Option<Vec<Box<Reference>>>,
15343    # [reference (targets = ["MedicationRequest"])]
15344    #[doc = "The original request, instruction or authority to perform the administration."]
15345    pub request: Option<Box<Reference>>,
15346    # [reference (targets = ["Device"])]
15347    #[doc = "The device used in administering the medication to the patient.  For example, a particular infusion pump."]
15348    pub device: Option<Vec<Box<Reference>>>,
15349    #[doc = "Extra information about the medication administration that is not conveyed by the other attributes."]
15350    pub note: Option<Vec<Box<Annotation>>>,
15351    #[doc = "Describes the medication dosage information details e.g. dose, rate, site, route, etc."]
15352    pub dosage: Option<MedicationAdministrationDosage>,
15353    # [reference (targets = ["Provenance"])]
15354    #[doc = "A summary of the events of interest that have occurred, such as when the administration was verified."]
15355    pub eventHistory: Option<Vec<Box<Reference>>>,
15356}
15357#[derive(
15358    Clone,
15359    Reflect,
15360    Debug,
15361    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
15362    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
15363)]
15364#[fhir_serialize_type = "typechoice"]
15365#[type_choice_field_name = "statusReason"]
15366pub enum MedicationDispenseStatusReasonTypeChoice {
15367    CodeableConcept(Box<CodeableConcept>),
15368    # [reference (targets = ["DetectedIssue"])]
15369    Reference(Box<Reference>),
15370}
15371impl Default for MedicationDispenseStatusReasonTypeChoice {
15372    fn default() -> Self {
15373        MedicationDispenseStatusReasonTypeChoice::CodeableConcept(Box::new(Default::default()))
15374    }
15375}
15376#[derive(
15377    Clone,
15378    Reflect,
15379    Debug,
15380    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
15381    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
15382)]
15383#[fhir_serialize_type = "typechoice"]
15384#[type_choice_field_name = "medication"]
15385pub enum MedicationDispenseMedicationTypeChoice {
15386    CodeableConcept(Box<CodeableConcept>),
15387    # [reference (targets = ["Medication"])]
15388    Reference(Box<Reference>),
15389}
15390impl Default for MedicationDispenseMedicationTypeChoice {
15391    fn default() -> Self {
15392        MedicationDispenseMedicationTypeChoice::CodeableConcept(Box::new(Default::default()))
15393    }
15394}
15395#[derive(
15396    Clone,
15397    Reflect,
15398    Debug,
15399    Default,
15400    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
15401    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
15402)]
15403#[fhir_serialize_type = "complex"]
15404#[doc = "Indicates who or what performed the event."]
15405pub struct MedicationDispensePerformer {
15406    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
15407    pub id: Option<String>,
15408    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
15409    pub extension: Option<Vec<Box<Extension>>>,
15410    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
15411    pub modifierExtension: Option<Vec<Box<Extension>>>,
15412    #[doc = "Distinguishes the type of performer in the dispense.  For example, date enterer, packager, final checker."]
15413    pub function: Option<Box<CodeableConcept>>,
15414    # [reference (targets = ["Practitioner" , "PractitionerRole" , "Organization" , "Patient" , "Device" , "RelatedPerson"])]
15415    #[doc = "The device, practitioner, etc. who performed the action.  It should be assumed that the actor is the dispenser of the medication."]
15416    pub actor: Box<Reference>,
15417}
15418#[derive(
15419    Clone,
15420    Reflect,
15421    Debug,
15422    Default,
15423    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
15424    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
15425)]
15426#[fhir_serialize_type = "complex"]
15427#[doc = "Indicates whether or not substitution was made as part of the dispense.  In some cases, substitution will be expected but does not happen, in other cases substitution is not expected but does happen.  This block explains what substitution did or did not happen and why.  If nothing is specified, substitution was not done."]
15428pub struct MedicationDispenseSubstitution {
15429    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
15430    pub id: Option<String>,
15431    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
15432    pub extension: Option<Vec<Box<Extension>>>,
15433    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
15434    pub modifierExtension: Option<Vec<Box<Extension>>>,
15435    #[primitive]
15436    #[doc = "True if the dispenser dispensed a different drug or product from what was prescribed."]
15437    pub wasSubstituted: Box<FHIRBoolean>,
15438    #[rename_field = "type"]
15439    #[doc = "A code signifying whether a different drug was dispensed from what was prescribed."]
15440    pub type_: Option<Box<CodeableConcept>>,
15441    #[doc = "Indicates the reason for the substitution (or lack of substitution) from what was prescribed."]
15442    pub reason: Option<Vec<Box<CodeableConcept>>>,
15443    # [reference (targets = ["Practitioner" , "PractitionerRole"])]
15444    #[doc = "The person or organization that has primary responsibility for the substitution."]
15445    pub responsibleParty: Option<Vec<Box<Reference>>>,
15446}
15447#[derive(
15448    Clone,
15449    Reflect,
15450    Debug,
15451    Default,
15452    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
15453    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
15454)]
15455#[fhir_serialize_type = "resource"]
15456#[doc = "Indicates that a medication product is to be or has been dispensed for a named person/patient.  This includes a description of the medication product (supply) provided and the instructions for administering the medication.  The medication dispense is the result of a pharmacy system responding to a medication order."]
15457pub struct MedicationDispense {
15458    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
15459    pub id: Option<String>,
15460    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
15461    pub meta: Option<Box<Meta>>,
15462    #[primitive]
15463    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
15464    pub implicitRules: Option<Box<FHIRUri>>,
15465    #[primitive]
15466    #[doc = "The base language in which the resource is written."]
15467    pub language: Option<Box<FHIRCode>>,
15468    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
15469    pub text: Option<Box<Narrative>>,
15470    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
15471    pub contained: Option<Vec<Box<Resource>>>,
15472    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
15473    pub extension: Option<Vec<Box<Extension>>>,
15474    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
15475    pub modifierExtension: Option<Vec<Box<Extension>>>,
15476    #[rename_field = "identifier"]
15477    #[doc = "Identifiers associated with this Medication Dispense that are defined by business processes and/or used to refer to it when a direct URL reference to the resource itself is not appropriate. They are business identifiers assigned to this resource by the performer or other systems and remain constant as the resource is updated and propagates from server to server."]
15478    pub identifier_: Option<Vec<Box<Identifier>>>,
15479    # [reference (targets = ["Procedure"])]
15480    #[doc = "The procedure that trigger the dispense."]
15481    pub partOf: Option<Vec<Box<Reference>>>,
15482    #[primitive]
15483    #[doc = "A code specifying the state of the set of dispense events."]
15484    pub status: Box<terminology::MedicationdispenseStatus>,
15485    # [type_choice_variants (complex = ["statusReasonCodeableConcept" , "statusReasonReference"] , primitive = [])]
15486    #[doc = "Indicates the reason why a dispense was not performed."]
15487    pub statusReason: Option<MedicationDispenseStatusReasonTypeChoice>,
15488    #[doc = "Indicates the type of medication dispense (for example, where the medication is expected to be consumed or administered (i.e. inpatient or outpatient))."]
15489    pub category: Option<Box<CodeableConcept>>,
15490    # [type_choice_variants (complex = ["medicationCodeableConcept" , "medicationReference"] , primitive = [])]
15491    #[doc = "Identifies the medication being administered. This is either a link to a resource representing the details of the medication or a simple attribute carrying a code that identifies the medication from a known list of medications."]
15492    pub medication: MedicationDispenseMedicationTypeChoice,
15493    # [reference (targets = ["Patient" , "Group"])]
15494    #[doc = "A link to a resource representing the person or the group to whom the medication will be given."]
15495    pub subject: Option<Box<Reference>>,
15496    # [reference (targets = ["Encounter" , "EpisodeOfCare"])]
15497    #[doc = "The encounter or episode of care that establishes the context for this event."]
15498    pub context: Option<Box<Reference>>,
15499    # [reference (targets = ["Resource"])]
15500    #[doc = "Additional information that supports the medication being dispensed."]
15501    pub supportingInformation: Option<Vec<Box<Reference>>>,
15502    #[doc = "Indicates who or what performed the event."]
15503    pub performer: Option<Vec<MedicationDispensePerformer>>,
15504    # [reference (targets = ["Location"])]
15505    #[doc = "The principal physical location where the dispense was performed."]
15506    pub location: Option<Box<Reference>>,
15507    # [reference (targets = ["MedicationRequest"])]
15508    #[doc = "Indicates the medication order that is being dispensed against."]
15509    pub authorizingPrescription: Option<Vec<Box<Reference>>>,
15510    #[rename_field = "type"]
15511    #[doc = "Indicates the type of dispensing event that is performed. For example, Trial Fill, Completion of Trial, Partial Fill, Emergency Fill, Samples, etc."]
15512    pub type_: Option<Box<CodeableConcept>>,
15513    #[doc = "The amount of medication that has been dispensed. Includes unit of measure."]
15514    pub quantity: Option<Box<Quantity>>,
15515    #[doc = "The amount of medication expressed as a timing amount."]
15516    pub daysSupply: Option<Box<Quantity>>,
15517    #[primitive]
15518    #[doc = "The time when the dispensed product was packaged and reviewed."]
15519    pub whenPrepared: Option<Box<FHIRDateTime>>,
15520    #[primitive]
15521    #[doc = "The time the dispensed product was provided to the patient or their representative."]
15522    pub whenHandedOver: Option<Box<FHIRDateTime>>,
15523    # [reference (targets = ["Location"])]
15524    #[doc = "Identification of the facility/location where the medication was shipped to, as part of the dispense event."]
15525    pub destination: Option<Box<Reference>>,
15526    # [reference (targets = ["Patient" , "Practitioner"])]
15527    #[doc = "Identifies the person who picked up the medication.  This will usually be a patient or their caregiver, but some cases exist where it can be a healthcare professional."]
15528    pub receiver: Option<Vec<Box<Reference>>>,
15529    #[doc = "Extra information about the dispense that could not be conveyed in the other attributes."]
15530    pub note: Option<Vec<Box<Annotation>>>,
15531    #[doc = "Indicates how the medication is to be used by the patient."]
15532    pub dosageInstruction: Option<Vec<Box<Dosage>>>,
15533    #[doc = "Indicates whether or not substitution was made as part of the dispense.  In some cases, substitution will be expected but does not happen, in other cases substitution is not expected but does happen.  This block explains what substitution did or did not happen and why.  If nothing is specified, substitution was not done."]
15534    pub substitution: Option<MedicationDispenseSubstitution>,
15535    # [reference (targets = ["DetectedIssue"])]
15536    #[doc = "Indicates an actual or potential clinical issue with or between one or more active or proposed clinical actions for a patient; e.g. drug-drug interaction, duplicate therapy, dosage alert etc."]
15537    pub detectedIssue: Option<Vec<Box<Reference>>>,
15538    # [reference (targets = ["Provenance"])]
15539    #[doc = "A summary of the events of interest that have occurred, such as when the dispense was verified."]
15540    pub eventHistory: Option<Vec<Box<Reference>>>,
15541}
15542#[derive(
15543    Clone,
15544    Reflect,
15545    Debug,
15546    Default,
15547    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
15548    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
15549)]
15550#[fhir_serialize_type = "complex"]
15551#[doc = "Associated or related knowledge about a medication."]
15552pub struct MedicationKnowledgeRelatedMedicationKnowledge {
15553    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
15554    pub id: Option<String>,
15555    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
15556    pub extension: Option<Vec<Box<Extension>>>,
15557    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
15558    pub modifierExtension: Option<Vec<Box<Extension>>>,
15559    #[rename_field = "type"]
15560    #[doc = "The category of the associated medication knowledge reference."]
15561    pub type_: Box<CodeableConcept>,
15562    #[cardinality(min = 1usize)]
15563    # [reference (targets = ["MedicationKnowledge"])]
15564    #[doc = "Associated documentation about the associated medication knowledge."]
15565    pub reference: Vec<Box<Reference>>,
15566}
15567#[derive(
15568    Clone,
15569    Reflect,
15570    Debug,
15571    Default,
15572    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
15573    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
15574)]
15575#[fhir_serialize_type = "complex"]
15576#[doc = "Associated documentation about the medication."]
15577pub struct MedicationKnowledgeMonograph {
15578    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
15579    pub id: Option<String>,
15580    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
15581    pub extension: Option<Vec<Box<Extension>>>,
15582    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
15583    pub modifierExtension: Option<Vec<Box<Extension>>>,
15584    #[rename_field = "type"]
15585    #[doc = "The category of documentation about the medication. (e.g. professional monograph, patient education monograph)."]
15586    pub type_: Option<Box<CodeableConcept>>,
15587    # [reference (targets = ["DocumentReference" , "Media"])]
15588    #[doc = "Associated documentation about the medication."]
15589    pub source: Option<Box<Reference>>,
15590}
15591#[derive(
15592    Clone,
15593    Reflect,
15594    Debug,
15595    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
15596    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
15597)]
15598#[fhir_serialize_type = "typechoice"]
15599#[type_choice_field_name = "item"]
15600pub enum MedicationKnowledgeIngredientItemTypeChoice {
15601    CodeableConcept(Box<CodeableConcept>),
15602    # [reference (targets = ["Substance"])]
15603    Reference(Box<Reference>),
15604}
15605impl Default for MedicationKnowledgeIngredientItemTypeChoice {
15606    fn default() -> Self {
15607        MedicationKnowledgeIngredientItemTypeChoice::CodeableConcept(Box::new(Default::default()))
15608    }
15609}
15610#[derive(
15611    Clone,
15612    Reflect,
15613    Debug,
15614    Default,
15615    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
15616    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
15617)]
15618#[fhir_serialize_type = "complex"]
15619#[doc = "Identifies a particular constituent of interest in the product."]
15620pub struct MedicationKnowledgeIngredient {
15621    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
15622    pub id: Option<String>,
15623    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
15624    pub extension: Option<Vec<Box<Extension>>>,
15625    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
15626    pub modifierExtension: Option<Vec<Box<Extension>>>,
15627    # [type_choice_variants (complex = ["itemCodeableConcept" , "itemReference"] , primitive = [])]
15628    #[doc = "The actual ingredient - either a substance (simple ingredient) or another medication."]
15629    pub item: MedicationKnowledgeIngredientItemTypeChoice,
15630    #[primitive]
15631    #[doc = "Indication of whether this ingredient affects the therapeutic action of the drug."]
15632    pub isActive: Option<Box<FHIRBoolean>>,
15633    #[doc = "Specifies how many (or how much) of the items there are in this Medication.  For example, 250 mg per tablet.  This is expressed as a ratio where the numerator is 250mg and the denominator is 1 tablet."]
15634    pub strength: Option<Box<Ratio>>,
15635}
15636#[derive(
15637    Clone,
15638    Reflect,
15639    Debug,
15640    Default,
15641    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
15642    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
15643)]
15644#[fhir_serialize_type = "complex"]
15645#[doc = "The price of the medication."]
15646pub struct MedicationKnowledgeCost {
15647    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
15648    pub id: Option<String>,
15649    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
15650    pub extension: Option<Vec<Box<Extension>>>,
15651    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
15652    pub modifierExtension: Option<Vec<Box<Extension>>>,
15653    #[rename_field = "type"]
15654    #[doc = "The category of the cost information.  For example, manufacturers' cost, patient cost, claim reimbursement cost, actual acquisition cost."]
15655    pub type_: Box<CodeableConcept>,
15656    #[primitive]
15657    #[doc = "The source or owner that assigns the price to the medication."]
15658    pub source: Option<Box<FHIRString>>,
15659    #[doc = "The price of the medication."]
15660    pub cost: Box<Money>,
15661}
15662#[derive(
15663    Clone,
15664    Reflect,
15665    Debug,
15666    Default,
15667    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
15668    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
15669)]
15670#[fhir_serialize_type = "complex"]
15671#[doc = "The program under which the medication is reviewed."]
15672pub struct MedicationKnowledgeMonitoringProgram {
15673    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
15674    pub id: Option<String>,
15675    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
15676    pub extension: Option<Vec<Box<Extension>>>,
15677    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
15678    pub modifierExtension: Option<Vec<Box<Extension>>>,
15679    #[rename_field = "type"]
15680    #[doc = "Type of program under which the medication is monitored."]
15681    pub type_: Option<Box<CodeableConcept>>,
15682    #[primitive]
15683    #[doc = "Name of the reviewing program."]
15684    pub name: Option<Box<FHIRString>>,
15685}
15686#[derive(
15687    Clone,
15688    Reflect,
15689    Debug,
15690    Default,
15691    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
15692    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
15693)]
15694#[fhir_serialize_type = "complex"]
15695#[doc = "Dosage for the medication for the specific guidelines."]
15696pub struct MedicationKnowledgeAdministrationGuidelinesDosage {
15697    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
15698    pub id: Option<String>,
15699    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
15700    pub extension: Option<Vec<Box<Extension>>>,
15701    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
15702    pub modifierExtension: Option<Vec<Box<Extension>>>,
15703    #[rename_field = "type"]
15704    #[doc = "The type of dosage (for example, prophylaxis, maintenance, therapeutic, etc.)."]
15705    pub type_: Box<CodeableConcept>,
15706    #[cardinality(min = 1usize)]
15707    #[doc = "Dosage for the medication for the specific guidelines."]
15708    pub dosage: Vec<Box<Dosage>>,
15709}
15710#[derive(
15711    Clone,
15712    Reflect,
15713    Debug,
15714    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
15715    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
15716)]
15717#[fhir_serialize_type = "typechoice"]
15718#[type_choice_field_name = "indication"]
15719pub enum MedicationKnowledgeAdministrationGuidelinesIndicationTypeChoice {
15720    CodeableConcept(Box<CodeableConcept>),
15721    # [reference (targets = ["ObservationDefinition"])]
15722    Reference(Box<Reference>),
15723}
15724impl Default for MedicationKnowledgeAdministrationGuidelinesIndicationTypeChoice {
15725    fn default() -> Self {
15726        MedicationKnowledgeAdministrationGuidelinesIndicationTypeChoice::CodeableConcept(Box::new(
15727            Default::default(),
15728        ))
15729    }
15730}
15731#[derive(
15732    Clone,
15733    Reflect,
15734    Debug,
15735    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
15736    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
15737)]
15738#[fhir_serialize_type = "typechoice"]
15739#[type_choice_field_name = "characteristic"]
15740pub enum MedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsCharacteristicTypeChoice {
15741    CodeableConcept(Box<CodeableConcept>),
15742    Quantity(Box<Quantity>),
15743}
15744impl Default
15745    for MedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsCharacteristicTypeChoice
15746{
15747    fn default() -> Self {
15748        MedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsCharacteristicTypeChoice :: CodeableConcept (Box :: new (Default :: default ()))
15749    }
15750}
15751#[derive(
15752    Clone,
15753    Reflect,
15754    Debug,
15755    Default,
15756    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
15757    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
15758)]
15759#[fhir_serialize_type = "complex"]
15760#[doc = "Characteristics of the patient that are relevant to the administration guidelines (for example, height, weight, gender, etc.)."]
15761pub struct MedicationKnowledgeAdministrationGuidelinesPatientCharacteristics {
15762    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
15763    pub id: Option<String>,
15764    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
15765    pub extension: Option<Vec<Box<Extension>>>,
15766    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
15767    pub modifierExtension: Option<Vec<Box<Extension>>>,
15768    # [type_choice_variants (complex = ["characteristicCodeableConcept" , "characteristicQuantity"] , primitive = [])]
15769    #[doc = "Specific characteristic that is relevant to the administration guideline (e.g. height, weight, gender)."]
15770    pub characteristic:
15771        MedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsCharacteristicTypeChoice,
15772    #[primitive]
15773    #[doc = "The specific characteristic (e.g. height, weight, gender, etc.)."]
15774    pub value: Option<Vec<Box<FHIRString>>>,
15775}
15776#[derive(
15777    Clone,
15778    Reflect,
15779    Debug,
15780    Default,
15781    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
15782    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
15783)]
15784#[fhir_serialize_type = "complex"]
15785#[doc = "Guidelines for the administration of the medication."]
15786pub struct MedicationKnowledgeAdministrationGuidelines {
15787    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
15788    pub id: Option<String>,
15789    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
15790    pub extension: Option<Vec<Box<Extension>>>,
15791    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
15792    pub modifierExtension: Option<Vec<Box<Extension>>>,
15793    #[doc = "Dosage for the medication for the specific guidelines."]
15794    pub dosage: Option<Vec<MedicationKnowledgeAdministrationGuidelinesDosage>>,
15795    # [type_choice_variants (complex = ["indicationCodeableConcept" , "indicationReference"] , primitive = [])]
15796    #[doc = "Indication for use that apply to the specific administration guidelines."]
15797    pub indication: Option<MedicationKnowledgeAdministrationGuidelinesIndicationTypeChoice>,
15798    #[doc = "Characteristics of the patient that are relevant to the administration guidelines (for example, height, weight, gender, etc.)."]
15799    pub patientCharacteristics:
15800        Option<Vec<MedicationKnowledgeAdministrationGuidelinesPatientCharacteristics>>,
15801}
15802#[derive(
15803    Clone,
15804    Reflect,
15805    Debug,
15806    Default,
15807    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
15808    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
15809)]
15810#[fhir_serialize_type = "complex"]
15811#[doc = "Categorization of the medication within a formulary or classification system."]
15812pub struct MedicationKnowledgeMedicineClassification {
15813    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
15814    pub id: Option<String>,
15815    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
15816    pub extension: Option<Vec<Box<Extension>>>,
15817    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
15818    pub modifierExtension: Option<Vec<Box<Extension>>>,
15819    #[rename_field = "type"]
15820    #[doc = "The type of category for the medication (for example, therapeutic classification, therapeutic sub-classification)."]
15821    pub type_: Box<CodeableConcept>,
15822    #[doc = "Specific category assigned to the medication (e.g. anti-infective, anti-hypertensive, antibiotic, etc.)."]
15823    pub classification: Option<Vec<Box<CodeableConcept>>>,
15824}
15825#[derive(
15826    Clone,
15827    Reflect,
15828    Debug,
15829    Default,
15830    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
15831    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
15832)]
15833#[fhir_serialize_type = "complex"]
15834#[doc = "Information that only applies to packages (not products)."]
15835pub struct MedicationKnowledgePackaging {
15836    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
15837    pub id: Option<String>,
15838    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
15839    pub extension: Option<Vec<Box<Extension>>>,
15840    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
15841    pub modifierExtension: Option<Vec<Box<Extension>>>,
15842    #[rename_field = "type"]
15843    #[doc = "A code that defines the specific type of packaging that the medication can be found in (e.g. blister sleeve, tube, bottle)."]
15844    pub type_: Option<Box<CodeableConcept>>,
15845    #[doc = "The number of product units the package would contain if fully loaded."]
15846    pub quantity: Option<Box<Quantity>>,
15847}
15848#[derive(
15849    Clone,
15850    Reflect,
15851    Debug,
15852    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
15853    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
15854)]
15855#[fhir_serialize_type = "typechoice"]
15856#[type_choice_field_name = "value"]
15857pub enum MedicationKnowledgeDrugCharacteristicValueTypeChoice {
15858    CodeableConcept(Box<CodeableConcept>),
15859    String(Box<FHIRString>),
15860    Quantity(Box<Quantity>),
15861    Base64Binary(Box<FHIRBase64Binary>),
15862}
15863impl Default for MedicationKnowledgeDrugCharacteristicValueTypeChoice {
15864    fn default() -> Self {
15865        MedicationKnowledgeDrugCharacteristicValueTypeChoice::CodeableConcept(Box::new(
15866            Default::default(),
15867        ))
15868    }
15869}
15870#[derive(
15871    Clone,
15872    Reflect,
15873    Debug,
15874    Default,
15875    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
15876    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
15877)]
15878#[fhir_serialize_type = "complex"]
15879#[doc = "Specifies descriptive properties of the medicine, such as color, shape, imprints, etc."]
15880pub struct MedicationKnowledgeDrugCharacteristic {
15881    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
15882    pub id: Option<String>,
15883    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
15884    pub extension: Option<Vec<Box<Extension>>>,
15885    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
15886    pub modifierExtension: Option<Vec<Box<Extension>>>,
15887    #[rename_field = "type"]
15888    #[doc = "A code specifying which characteristic of the medicine is being described (for example, colour, shape, imprint)."]
15889    pub type_: Option<Box<CodeableConcept>>,
15890    # [type_choice_variants (complex = ["valueCodeableConcept" , "valueQuantity"] , primitive = ["valueString" , "valueBase64Binary"])]
15891    #[doc = "Description of the characteristic."]
15892    pub value: Option<MedicationKnowledgeDrugCharacteristicValueTypeChoice>,
15893}
15894#[derive(
15895    Clone,
15896    Reflect,
15897    Debug,
15898    Default,
15899    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
15900    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
15901)]
15902#[fhir_serialize_type = "complex"]
15903#[doc = "Specifies if changes are allowed when dispensing a medication from a regulatory perspective."]
15904pub struct MedicationKnowledgeRegulatorySubstitution {
15905    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
15906    pub id: Option<String>,
15907    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
15908    pub extension: Option<Vec<Box<Extension>>>,
15909    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
15910    pub modifierExtension: Option<Vec<Box<Extension>>>,
15911    #[rename_field = "type"]
15912    #[doc = "Specifies the type of substitution allowed."]
15913    pub type_: Box<CodeableConcept>,
15914    #[primitive]
15915    #[doc = "Specifies if regulation allows for changes in the medication when dispensing."]
15916    pub allowed: Box<FHIRBoolean>,
15917}
15918#[derive(
15919    Clone,
15920    Reflect,
15921    Debug,
15922    Default,
15923    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
15924    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
15925)]
15926#[fhir_serialize_type = "complex"]
15927#[doc = "Specifies the schedule of a medication in jurisdiction."]
15928pub struct MedicationKnowledgeRegulatorySchedule {
15929    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
15930    pub id: Option<String>,
15931    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
15932    pub extension: Option<Vec<Box<Extension>>>,
15933    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
15934    pub modifierExtension: Option<Vec<Box<Extension>>>,
15935    #[doc = "Specifies the specific drug schedule."]
15936    pub schedule: Box<CodeableConcept>,
15937}
15938#[derive(
15939    Clone,
15940    Reflect,
15941    Debug,
15942    Default,
15943    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
15944    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
15945)]
15946#[fhir_serialize_type = "complex"]
15947#[doc = "The maximum number of units of the medication that can be dispensed in a period."]
15948pub struct MedicationKnowledgeRegulatoryMaxDispense {
15949    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
15950    pub id: Option<String>,
15951    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
15952    pub extension: Option<Vec<Box<Extension>>>,
15953    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
15954    pub modifierExtension: Option<Vec<Box<Extension>>>,
15955    #[doc = "The maximum number of units of the medication that can be dispensed."]
15956    pub quantity: Box<Quantity>,
15957    #[doc = "The period that applies to the maximum number of units."]
15958    pub period: Option<Box<Duration>>,
15959}
15960#[derive(
15961    Clone,
15962    Reflect,
15963    Debug,
15964    Default,
15965    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
15966    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
15967)]
15968#[fhir_serialize_type = "complex"]
15969#[doc = "Regulatory information about a medication."]
15970pub struct MedicationKnowledgeRegulatory {
15971    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
15972    pub id: Option<String>,
15973    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
15974    pub extension: Option<Vec<Box<Extension>>>,
15975    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
15976    pub modifierExtension: Option<Vec<Box<Extension>>>,
15977    # [reference (targets = ["Organization"])]
15978    #[doc = "The authority that is specifying the regulations."]
15979    pub regulatoryAuthority: Box<Reference>,
15980    #[doc = "Specifies if changes are allowed when dispensing a medication from a regulatory perspective."]
15981    pub substitution: Option<Vec<MedicationKnowledgeRegulatorySubstitution>>,
15982    #[doc = "Specifies the schedule of a medication in jurisdiction."]
15983    pub schedule: Option<Vec<MedicationKnowledgeRegulatorySchedule>>,
15984    #[doc = "The maximum number of units of the medication that can be dispensed in a period."]
15985    pub maxDispense: Option<MedicationKnowledgeRegulatoryMaxDispense>,
15986}
15987#[derive(
15988    Clone,
15989    Reflect,
15990    Debug,
15991    Default,
15992    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
15993    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
15994)]
15995#[fhir_serialize_type = "complex"]
15996#[doc = "The time course of drug absorption, distribution, metabolism and excretion of a medication from the body."]
15997pub struct MedicationKnowledgeKinetics {
15998    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
15999    pub id: Option<String>,
16000    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
16001    pub extension: Option<Vec<Box<Extension>>>,
16002    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
16003    pub modifierExtension: Option<Vec<Box<Extension>>>,
16004    #[doc = "The drug concentration measured at certain discrete points in time."]
16005    pub areaUnderCurve: Option<Vec<Box<Quantity>>>,
16006    #[doc = "The median lethal dose of a drug."]
16007    pub lethalDose50: Option<Vec<Box<Quantity>>>,
16008    #[doc = "The time required for any specified property (e.g., the concentration of a substance in the body) to decrease by half."]
16009    pub halfLifePeriod: Option<Box<Duration>>,
16010}
16011#[derive(
16012    Clone,
16013    Reflect,
16014    Debug,
16015    Default,
16016    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
16017    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
16018)]
16019#[fhir_serialize_type = "resource"]
16020#[doc = "Information about a medication that is used to support knowledge."]
16021pub struct MedicationKnowledge {
16022    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
16023    pub id: Option<String>,
16024    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
16025    pub meta: Option<Box<Meta>>,
16026    #[primitive]
16027    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
16028    pub implicitRules: Option<Box<FHIRUri>>,
16029    #[primitive]
16030    #[doc = "The base language in which the resource is written."]
16031    pub language: Option<Box<FHIRCode>>,
16032    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
16033    pub text: Option<Box<Narrative>>,
16034    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
16035    pub contained: Option<Vec<Box<Resource>>>,
16036    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
16037    pub extension: Option<Vec<Box<Extension>>>,
16038    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
16039    pub modifierExtension: Option<Vec<Box<Extension>>>,
16040    #[doc = "A code that specifies this medication, or a textual description if no code is available. Usage note: This could be a standard medication code such as a code from RxNorm, SNOMED CT, IDMP etc. It could also be a national or local formulary code, optionally with translations to other code systems."]
16041    pub code: Option<Box<CodeableConcept>>,
16042    #[primitive]
16043    #[doc = "A code to indicate if the medication is in active use.  The status refers to the validity about the information of the medication and not to its medicinal properties."]
16044    pub status: Option<Box<terminology::MedicationknowledgeStatus>>,
16045    # [reference (targets = ["Organization"])]
16046    #[doc = "Describes the details of the manufacturer of the medication product.  This is not intended to represent the distributor of a medication product."]
16047    pub manufacturer: Option<Box<Reference>>,
16048    #[doc = "Describes the form of the item.  Powder; tablets; capsule."]
16049    pub doseForm: Option<Box<CodeableConcept>>,
16050    #[doc = "Specific amount of the drug in the packaged product.  For example, when specifying a product that has the same strength (For example, Insulin glargine 100 unit per mL solution for injection), this attribute provides additional clarification of the package amount (For example, 3 mL, 10mL, etc.)."]
16051    pub amount: Option<Box<Quantity>>,
16052    #[primitive]
16053    #[doc = "Additional names for a medication, for example, the name(s) given to a medication in different countries.  For example, acetaminophen and paracetamol or salbutamol and albuterol."]
16054    pub synonym: Option<Vec<Box<FHIRString>>>,
16055    #[doc = "Associated or related knowledge about a medication."]
16056    pub relatedMedicationKnowledge: Option<Vec<MedicationKnowledgeRelatedMedicationKnowledge>>,
16057    # [reference (targets = ["Medication"])]
16058    #[doc = "Associated or related medications.  For example, if the medication is a branded product (e.g. Crestor), this is the Therapeutic Moeity (e.g. Rosuvastatin) or if this is a generic medication (e.g. Rosuvastatin), this would link to a branded product (e.g. Crestor)."]
16059    pub associatedMedication: Option<Vec<Box<Reference>>>,
16060    #[doc = "Category of the medication or product (e.g. branded product, therapeutic moeity, generic product, innovator product, etc.)."]
16061    pub productType: Option<Vec<Box<CodeableConcept>>>,
16062    #[doc = "Associated documentation about the medication."]
16063    pub monograph: Option<Vec<MedicationKnowledgeMonograph>>,
16064    #[doc = "Identifies a particular constituent of interest in the product."]
16065    pub ingredient: Option<Vec<MedicationKnowledgeIngredient>>,
16066    #[primitive]
16067    #[doc = "The instructions for preparing the medication."]
16068    pub preparationInstruction: Option<Box<FHIRMarkdown>>,
16069    #[doc = "The intended or approved route of administration."]
16070    pub intendedRoute: Option<Vec<Box<CodeableConcept>>>,
16071    #[doc = "The price of the medication."]
16072    pub cost: Option<Vec<MedicationKnowledgeCost>>,
16073    #[doc = "The program under which the medication is reviewed."]
16074    pub monitoringProgram: Option<Vec<MedicationKnowledgeMonitoringProgram>>,
16075    #[doc = "Guidelines for the administration of the medication."]
16076    pub administrationGuidelines: Option<Vec<MedicationKnowledgeAdministrationGuidelines>>,
16077    #[doc = "Categorization of the medication within a formulary or classification system."]
16078    pub medicineClassification: Option<Vec<MedicationKnowledgeMedicineClassification>>,
16079    #[doc = "Information that only applies to packages (not products)."]
16080    pub packaging: Option<MedicationKnowledgePackaging>,
16081    #[doc = "Specifies descriptive properties of the medicine, such as color, shape, imprints, etc."]
16082    pub drugCharacteristic: Option<Vec<MedicationKnowledgeDrugCharacteristic>>,
16083    # [reference (targets = ["DetectedIssue"])]
16084    #[doc = "Potential clinical issue with or between medication(s) (for example, drug-drug interaction, drug-disease contraindication, drug-allergy interaction, etc.)."]
16085    pub contraindication: Option<Vec<Box<Reference>>>,
16086    #[doc = "Regulatory information about a medication."]
16087    pub regulatory: Option<Vec<MedicationKnowledgeRegulatory>>,
16088    #[doc = "The time course of drug absorption, distribution, metabolism and excretion of a medication from the body."]
16089    pub kinetics: Option<Vec<MedicationKnowledgeKinetics>>,
16090}
16091#[derive(
16092    Clone,
16093    Reflect,
16094    Debug,
16095    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
16096    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
16097)]
16098#[fhir_serialize_type = "typechoice"]
16099#[type_choice_field_name = "reported"]
16100pub enum MedicationRequestReportedTypeChoice {
16101    Boolean(Box<FHIRBoolean>),
16102    # [reference (targets = ["Patient" , "Practitioner" , "PractitionerRole" , "RelatedPerson" , "Organization"])]
16103    Reference(Box<Reference>),
16104}
16105impl Default for MedicationRequestReportedTypeChoice {
16106    fn default() -> Self {
16107        MedicationRequestReportedTypeChoice::Boolean(Box::new(Default::default()))
16108    }
16109}
16110#[derive(
16111    Clone,
16112    Reflect,
16113    Debug,
16114    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
16115    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
16116)]
16117#[fhir_serialize_type = "typechoice"]
16118#[type_choice_field_name = "medication"]
16119pub enum MedicationRequestMedicationTypeChoice {
16120    CodeableConcept(Box<CodeableConcept>),
16121    # [reference (targets = ["Medication"])]
16122    Reference(Box<Reference>),
16123}
16124impl Default for MedicationRequestMedicationTypeChoice {
16125    fn default() -> Self {
16126        MedicationRequestMedicationTypeChoice::CodeableConcept(Box::new(Default::default()))
16127    }
16128}
16129#[derive(
16130    Clone,
16131    Reflect,
16132    Debug,
16133    Default,
16134    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
16135    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
16136)]
16137#[fhir_serialize_type = "complex"]
16138#[doc = "Indicates the quantity or duration for the first dispense of the medication."]
16139pub struct MedicationRequestDispenseRequestInitialFill {
16140    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
16141    pub id: Option<String>,
16142    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
16143    pub extension: Option<Vec<Box<Extension>>>,
16144    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
16145    pub modifierExtension: Option<Vec<Box<Extension>>>,
16146    #[doc = "The amount or quantity to provide as part of the first dispense."]
16147    pub quantity: Option<Box<Quantity>>,
16148    #[doc = "The length of time that the first dispense is expected to last."]
16149    pub duration: Option<Box<Duration>>,
16150}
16151#[derive(
16152    Clone,
16153    Reflect,
16154    Debug,
16155    Default,
16156    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
16157    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
16158)]
16159#[fhir_serialize_type = "complex"]
16160#[doc = "Indicates the specific details for the dispense or medication supply part of a medication request (also known as a Medication Prescription or Medication Order).  Note that this information is not always sent with the order.  There may be in some settings (e.g. hospitals) institutional or system support for completing the dispense details in the pharmacy department."]
16161pub struct MedicationRequestDispenseRequest {
16162    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
16163    pub id: Option<String>,
16164    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
16165    pub extension: Option<Vec<Box<Extension>>>,
16166    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
16167    pub modifierExtension: Option<Vec<Box<Extension>>>,
16168    #[doc = "Indicates the quantity or duration for the first dispense of the medication."]
16169    pub initialFill: Option<MedicationRequestDispenseRequestInitialFill>,
16170    #[doc = "The minimum period of time that must occur between dispenses of the medication."]
16171    pub dispenseInterval: Option<Box<Duration>>,
16172    #[doc = "This indicates the validity period of a prescription (stale dating the Prescription)."]
16173    pub validityPeriod: Option<Box<Period>>,
16174    #[primitive]
16175    #[doc = "An integer indicating the number of times, in addition to the original dispense, (aka refills or repeats) that the patient can receive the prescribed medication. Usage Notes: This integer does not include the original order dispense. This means that if an order indicates dispense 30 tablets plus \"3 repeats\", then the order can be dispensed a total of 4 times and the patient can receive a total of 120 tablets.  A prescriber may explicitly say that zero refills are permitted after the initial dispense."]
16176    pub numberOfRepeatsAllowed: Option<Box<FHIRUnsignedInt>>,
16177    #[doc = "The amount that is to be dispensed for one fill."]
16178    pub quantity: Option<Box<Quantity>>,
16179    #[doc = "Identifies the period time over which the supplied product is expected to be used, or the length of time the dispense is expected to last."]
16180    pub expectedSupplyDuration: Option<Box<Duration>>,
16181    # [reference (targets = ["Organization"])]
16182    #[doc = "Indicates the intended dispensing Organization specified by the prescriber."]
16183    pub performer: Option<Box<Reference>>,
16184}
16185#[derive(
16186    Clone,
16187    Reflect,
16188    Debug,
16189    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
16190    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
16191)]
16192#[fhir_serialize_type = "typechoice"]
16193#[type_choice_field_name = "allowed"]
16194pub enum MedicationRequestSubstitutionAllowedTypeChoice {
16195    Boolean(Box<FHIRBoolean>),
16196    CodeableConcept(Box<CodeableConcept>),
16197}
16198impl Default for MedicationRequestSubstitutionAllowedTypeChoice {
16199    fn default() -> Self {
16200        MedicationRequestSubstitutionAllowedTypeChoice::Boolean(Box::new(Default::default()))
16201    }
16202}
16203#[derive(
16204    Clone,
16205    Reflect,
16206    Debug,
16207    Default,
16208    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
16209    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
16210)]
16211#[fhir_serialize_type = "complex"]
16212#[doc = "Indicates whether or not substitution can or should be part of the dispense. In some cases, substitution must happen, in other cases substitution must not happen. This block explains the prescriber's intent. If nothing is specified substitution may be done."]
16213pub struct MedicationRequestSubstitution {
16214    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
16215    pub id: Option<String>,
16216    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
16217    pub extension: Option<Vec<Box<Extension>>>,
16218    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
16219    pub modifierExtension: Option<Vec<Box<Extension>>>,
16220    # [type_choice_variants (complex = ["allowedCodeableConcept"] , primitive = ["allowedBoolean"])]
16221    #[doc = "True if the prescriber allows a different drug to be dispensed from what was prescribed."]
16222    pub allowed: MedicationRequestSubstitutionAllowedTypeChoice,
16223    #[doc = "Indicates the reason for the substitution, or why substitution must or must not be performed."]
16224    pub reason: Option<Box<CodeableConcept>>,
16225}
16226#[derive(
16227    Clone,
16228    Reflect,
16229    Debug,
16230    Default,
16231    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
16232    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
16233)]
16234#[fhir_serialize_type = "resource"]
16235#[doc = "An order or request for both supply of the medication and the instructions for administration of the medication to a patient. The resource is called \"MedicationRequest\" rather than \"MedicationPrescription\" or \"MedicationOrder\" to generalize the use across inpatient and outpatient settings, including care plans, etc., and to harmonize with workflow patterns."]
16236pub struct MedicationRequest {
16237    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
16238    pub id: Option<String>,
16239    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
16240    pub meta: Option<Box<Meta>>,
16241    #[primitive]
16242    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
16243    pub implicitRules: Option<Box<FHIRUri>>,
16244    #[primitive]
16245    #[doc = "The base language in which the resource is written."]
16246    pub language: Option<Box<FHIRCode>>,
16247    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
16248    pub text: Option<Box<Narrative>>,
16249    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
16250    pub contained: Option<Vec<Box<Resource>>>,
16251    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
16252    pub extension: Option<Vec<Box<Extension>>>,
16253    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
16254    pub modifierExtension: Option<Vec<Box<Extension>>>,
16255    #[rename_field = "identifier"]
16256    #[doc = "Identifiers associated with this medication request that are defined by business processes and/or used to refer to it when a direct URL reference to the resource itself is not appropriate. They are business identifiers assigned to this resource by the performer or other systems and remain constant as the resource is updated and propagates from server to server."]
16257    pub identifier_: Option<Vec<Box<Identifier>>>,
16258    #[primitive]
16259    #[doc = "A code specifying the current state of the order.  Generally, this will be active or completed state."]
16260    pub status: Box<terminology::MedicationrequestStatus>,
16261    #[doc = "Captures the reason for the current state of the MedicationRequest."]
16262    pub statusReason: Option<Box<CodeableConcept>>,
16263    #[primitive]
16264    #[doc = "Whether the request is a proposal, plan, or an original order."]
16265    pub intent: Box<terminology::MedicationrequestIntent>,
16266    #[doc = "Indicates the type of medication request (for example, where the medication is expected to be consumed or administered (i.e. inpatient or outpatient))."]
16267    pub category: Option<Vec<Box<CodeableConcept>>>,
16268    #[primitive]
16269    #[doc = "Indicates how quickly the Medication Request should be addressed with respect to other requests."]
16270    pub priority: Option<Box<terminology::RequestPriority>>,
16271    #[primitive]
16272    #[doc = "If true indicates that the provider is asking for the medication request not to occur."]
16273    pub doNotPerform: Option<Box<FHIRBoolean>>,
16274    # [type_choice_variants (complex = ["reportedReference"] , primitive = ["reportedBoolean"])]
16275    #[doc = "Indicates if this record was captured as a secondary 'reported' record rather than as an original primary source-of-truth record.  It may also indicate the source of the report."]
16276    pub reported: Option<MedicationRequestReportedTypeChoice>,
16277    # [type_choice_variants (complex = ["medicationCodeableConcept" , "medicationReference"] , primitive = [])]
16278    #[doc = "Identifies the medication being requested. This is a link to a resource that represents the medication which may be the details of the medication or simply an attribute carrying a code that identifies the medication from a known list of medications."]
16279    pub medication: MedicationRequestMedicationTypeChoice,
16280    # [reference (targets = ["Patient" , "Group"])]
16281    #[doc = "A link to a resource representing the person or set of individuals to whom the medication will be given."]
16282    pub subject: Box<Reference>,
16283    # [reference (targets = ["Encounter"])]
16284    #[doc = "The Encounter during which this [x] was created or to which the creation of this record is tightly associated."]
16285    pub encounter: Option<Box<Reference>>,
16286    # [reference (targets = ["Resource"])]
16287    #[doc = "Include additional information (for example, patient height and weight) that supports the ordering of the medication."]
16288    pub supportingInformation: Option<Vec<Box<Reference>>>,
16289    #[primitive]
16290    #[doc = "The date (and perhaps time) when the prescription was initially written or authored on."]
16291    pub authoredOn: Option<Box<FHIRDateTime>>,
16292    # [reference (targets = ["Practitioner" , "PractitionerRole" , "Organization" , "Patient" , "RelatedPerson" , "Device"])]
16293    #[doc = "The individual, organization, or device that initiated the request and has responsibility for its activation."]
16294    pub requester: Option<Box<Reference>>,
16295    # [reference (targets = ["Practitioner" , "PractitionerRole" , "Organization" , "Patient" , "Device" , "RelatedPerson" , "CareTeam"])]
16296    #[doc = "The specified desired performer of the medication treatment (e.g. the performer of the medication administration)."]
16297    pub performer: Option<Box<Reference>>,
16298    #[doc = "Indicates the type of performer of the administration of the medication."]
16299    pub performerType: Option<Box<CodeableConcept>>,
16300    # [reference (targets = ["Practitioner" , "PractitionerRole"])]
16301    #[doc = "The person who entered the order on behalf of another individual for example in the case of a verbal or a telephone order."]
16302    pub recorder: Option<Box<Reference>>,
16303    #[doc = "The reason or the indication for ordering or not ordering the medication."]
16304    pub reasonCode: Option<Vec<Box<CodeableConcept>>>,
16305    # [reference (targets = ["Condition" , "Observation"])]
16306    #[doc = "Condition or observation that supports why the medication was ordered."]
16307    pub reasonReference: Option<Vec<Box<Reference>>>,
16308    #[primitive]
16309    #[doc = "The URL pointing to a protocol, guideline, orderset, or other definition that is adhered to in whole or in part by this MedicationRequest."]
16310    pub instantiatesCanonical: Option<Vec<Box<FHIRCanonical>>>,
16311    #[primitive]
16312    #[doc = "The URL pointing to an externally maintained protocol, guideline, orderset or other definition that is adhered to in whole or in part by this MedicationRequest."]
16313    pub instantiatesUri: Option<Vec<Box<FHIRUri>>>,
16314    # [reference (targets = ["CarePlan" , "MedicationRequest" , "ServiceRequest" , "ImmunizationRecommendation"])]
16315    #[doc = "A plan or request that is fulfilled in whole or in part by this medication request."]
16316    pub basedOn: Option<Vec<Box<Reference>>>,
16317    #[doc = "A shared identifier common to all requests that were authorized more or less simultaneously by a single author, representing the identifier of the requisition or prescription."]
16318    pub groupIdentifier: Option<Box<Identifier>>,
16319    #[doc = "The description of the overall patte3rn of the administration of the medication to the patient."]
16320    pub courseOfTherapyType: Option<Box<CodeableConcept>>,
16321    # [reference (targets = ["Coverage" , "ClaimResponse"])]
16322    #[doc = "Insurance plans, coverage extensions, pre-authorizations and/or pre-determinations that may be required for delivering the requested service."]
16323    pub insurance: Option<Vec<Box<Reference>>>,
16324    #[doc = "Extra information about the prescription that could not be conveyed by the other attributes."]
16325    pub note: Option<Vec<Box<Annotation>>>,
16326    #[doc = "Indicates how the medication is to be used by the patient."]
16327    pub dosageInstruction: Option<Vec<Box<Dosage>>>,
16328    #[doc = "Indicates the specific details for the dispense or medication supply part of a medication request (also known as a Medication Prescription or Medication Order).  Note that this information is not always sent with the order.  There may be in some settings (e.g. hospitals) institutional or system support for completing the dispense details in the pharmacy department."]
16329    pub dispenseRequest: Option<MedicationRequestDispenseRequest>,
16330    #[doc = "Indicates whether or not substitution can or should be part of the dispense. In some cases, substitution must happen, in other cases substitution must not happen. This block explains the prescriber's intent. If nothing is specified substitution may be done."]
16331    pub substitution: Option<MedicationRequestSubstitution>,
16332    # [reference (targets = ["MedicationRequest"])]
16333    #[doc = "A link to a resource representing an earlier order related order or prescription."]
16334    pub priorPrescription: Option<Box<Reference>>,
16335    # [reference (targets = ["DetectedIssue"])]
16336    #[doc = "Indicates an actual or potential clinical issue with or between one or more active or proposed clinical actions for a patient; e.g. Drug-drug interaction, duplicate therapy, dosage alert etc."]
16337    pub detectedIssue: Option<Vec<Box<Reference>>>,
16338    # [reference (targets = ["Provenance"])]
16339    #[doc = "Links to Provenance records for past versions of this resource or fulfilling request or event resources that identify key state transitions or updates that are likely to be relevant to a user looking at the current version of the resource."]
16340    pub eventHistory: Option<Vec<Box<Reference>>>,
16341}
16342#[derive(
16343    Clone,
16344    Reflect,
16345    Debug,
16346    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
16347    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
16348)]
16349#[fhir_serialize_type = "typechoice"]
16350#[type_choice_field_name = "medication"]
16351pub enum MedicationStatementMedicationTypeChoice {
16352    CodeableConcept(Box<CodeableConcept>),
16353    # [reference (targets = ["Medication"])]
16354    Reference(Box<Reference>),
16355}
16356impl Default for MedicationStatementMedicationTypeChoice {
16357    fn default() -> Self {
16358        MedicationStatementMedicationTypeChoice::CodeableConcept(Box::new(Default::default()))
16359    }
16360}
16361#[derive(
16362    Clone,
16363    Reflect,
16364    Debug,
16365    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
16366    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
16367)]
16368#[fhir_serialize_type = "typechoice"]
16369#[type_choice_field_name = "effective"]
16370pub enum MedicationStatementEffectiveTypeChoice {
16371    DateTime(Box<FHIRDateTime>),
16372    Period(Box<Period>),
16373}
16374impl Default for MedicationStatementEffectiveTypeChoice {
16375    fn default() -> Self {
16376        MedicationStatementEffectiveTypeChoice::DateTime(Box::new(Default::default()))
16377    }
16378}
16379#[derive(
16380    Clone,
16381    Reflect,
16382    Debug,
16383    Default,
16384    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
16385    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
16386)]
16387#[fhir_serialize_type = "resource"]
16388#[doc = "A record of a medication that is being consumed by a patient.   A MedicationStatement may indicate that the patient may be taking the medication now or has taken the medication in the past or will be taking the medication in the future.  The source of this information can be the patient, significant other (such as a family member or spouse), or a clinician.  A common scenario where this information is captured is during the history taking process during a patient visit or stay.   The medication information may come from sources such as the patient's memory, from a prescription bottle,  or from a list of medications the patient, clinician or other party maintains. \n\nThe primary difference between a medication statement and a medication administration is that the medication administration has complete administration information and is based on actual administration information from the person who administered the medication.  A medication statement is often, if not always, less specific.  There is no required date/time when the medication was administered, in fact we only know that a source has reported the patient is taking this medication, where details such as time, quantity, or rate or even medication product may be incomplete or missing or less precise.  As stated earlier, the medication statement information may come from the patient's memory, from a prescription bottle or from a list of medications the patient, clinician or other party maintains.  Medication administration is more formal and is not missing detailed information."]
16389pub struct MedicationStatement {
16390    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
16391    pub id: Option<String>,
16392    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
16393    pub meta: Option<Box<Meta>>,
16394    #[primitive]
16395    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
16396    pub implicitRules: Option<Box<FHIRUri>>,
16397    #[primitive]
16398    #[doc = "The base language in which the resource is written."]
16399    pub language: Option<Box<FHIRCode>>,
16400    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
16401    pub text: Option<Box<Narrative>>,
16402    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
16403    pub contained: Option<Vec<Box<Resource>>>,
16404    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
16405    pub extension: Option<Vec<Box<Extension>>>,
16406    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
16407    pub modifierExtension: Option<Vec<Box<Extension>>>,
16408    #[rename_field = "identifier"]
16409    #[doc = "Identifiers associated with this Medication Statement that are defined by business processes and/or used to refer to it when a direct URL reference to the resource itself is not appropriate. They are business identifiers assigned to this resource by the performer or other systems and remain constant as the resource is updated and propagates from server to server."]
16410    pub identifier_: Option<Vec<Box<Identifier>>>,
16411    # [reference (targets = ["MedicationRequest" , "CarePlan" , "ServiceRequest"])]
16412    #[doc = "A plan, proposal or order that is fulfilled in whole or in part by this event."]
16413    pub basedOn: Option<Vec<Box<Reference>>>,
16414    # [reference (targets = ["MedicationAdministration" , "MedicationDispense" , "MedicationStatement" , "Procedure" , "Observation"])]
16415    #[doc = "A larger event of which this particular event is a component or step."]
16416    pub partOf: Option<Vec<Box<Reference>>>,
16417    #[primitive]
16418    #[doc = "A code representing the patient or other source's judgment about the state of the medication used that this statement is about.  Generally, this will be active or completed."]
16419    pub status: Box<terminology::MedicationStatementStatus>,
16420    #[doc = "Captures the reason for the current state of the MedicationStatement."]
16421    pub statusReason: Option<Vec<Box<CodeableConcept>>>,
16422    #[doc = "Indicates where the medication is expected to be consumed or administered."]
16423    pub category: Option<Box<CodeableConcept>>,
16424    # [type_choice_variants (complex = ["medicationCodeableConcept" , "medicationReference"] , primitive = [])]
16425    #[doc = "Identifies the medication being administered. This is either a link to a resource representing the details of the medication or a simple attribute carrying a code that identifies the medication from a known list of medications."]
16426    pub medication: MedicationStatementMedicationTypeChoice,
16427    # [reference (targets = ["Patient" , "Group"])]
16428    #[doc = "The person, animal or group who is/was taking the medication."]
16429    pub subject: Box<Reference>,
16430    # [reference (targets = ["Encounter" , "EpisodeOfCare"])]
16431    #[doc = "The encounter or episode of care that establishes the context for this MedicationStatement."]
16432    pub context: Option<Box<Reference>>,
16433    # [type_choice_variants (complex = ["effectivePeriod"] , primitive = ["effectiveDateTime"])]
16434    #[doc = "The interval of time during which it is being asserted that the patient is/was/will be taking the medication (or was not taking, when the MedicationStatement.taken element is No)."]
16435    pub effective: Option<MedicationStatementEffectiveTypeChoice>,
16436    #[primitive]
16437    #[doc = "The date when the medication statement was asserted by the information source."]
16438    pub dateAsserted: Option<Box<FHIRDateTime>>,
16439    # [reference (targets = ["Patient" , "Practitioner" , "PractitionerRole" , "RelatedPerson" , "Organization"])]
16440    #[doc = "The person or organization that provided the information about the taking of this medication. Note: Use derivedFrom when a MedicationStatement is derived from other resources, e.g. Claim or MedicationRequest."]
16441    pub informationSource: Option<Box<Reference>>,
16442    # [reference (targets = ["Resource"])]
16443    #[doc = "Allows linking the MedicationStatement to the underlying MedicationRequest, or to other information that supports or is used to derive the MedicationStatement."]
16444    pub derivedFrom: Option<Vec<Box<Reference>>>,
16445    #[doc = "A reason for why the medication is being/was taken."]
16446    pub reasonCode: Option<Vec<Box<CodeableConcept>>>,
16447    # [reference (targets = ["Condition" , "Observation" , "DiagnosticReport"])]
16448    #[doc = "Condition or observation that supports why the medication is being/was taken."]
16449    pub reasonReference: Option<Vec<Box<Reference>>>,
16450    #[doc = "Provides extra information about the medication statement that is not conveyed by the other attributes."]
16451    pub note: Option<Vec<Box<Annotation>>>,
16452    #[doc = "Indicates how the medication is/was or should be taken by the patient."]
16453    pub dosage: Option<Vec<Box<Dosage>>>,
16454}
16455#[derive(
16456    Clone,
16457    Reflect,
16458    Debug,
16459    Default,
16460    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
16461    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
16462)]
16463#[fhir_serialize_type = "complex"]
16464#[doc = "Coding words or phrases of the name."]
16465pub struct MedicinalProductNameNamePart {
16466    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
16467    pub id: Option<String>,
16468    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
16469    pub extension: Option<Vec<Box<Extension>>>,
16470    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
16471    pub modifierExtension: Option<Vec<Box<Extension>>>,
16472    #[primitive]
16473    #[doc = "A fragment of a product name."]
16474    pub part: Box<FHIRString>,
16475    #[rename_field = "type"]
16476    #[doc = "Idenifying type for this part of the name (e.g. strength part)."]
16477    pub type_: Box<Coding>,
16478}
16479#[derive(
16480    Clone,
16481    Reflect,
16482    Debug,
16483    Default,
16484    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
16485    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
16486)]
16487#[fhir_serialize_type = "complex"]
16488#[doc = "Country where the name applies."]
16489pub struct MedicinalProductNameCountryLanguage {
16490    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
16491    pub id: Option<String>,
16492    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
16493    pub extension: Option<Vec<Box<Extension>>>,
16494    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
16495    pub modifierExtension: Option<Vec<Box<Extension>>>,
16496    #[doc = "Country code for where this name applies."]
16497    pub country: Box<CodeableConcept>,
16498    #[doc = "Jurisdiction code for where this name applies."]
16499    pub jurisdiction: Option<Box<CodeableConcept>>,
16500    #[doc = "Language code for this name."]
16501    pub language: Box<CodeableConcept>,
16502}
16503#[derive(
16504    Clone,
16505    Reflect,
16506    Debug,
16507    Default,
16508    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
16509    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
16510)]
16511#[fhir_serialize_type = "complex"]
16512#[doc = "The product's name, including full name and possibly coded parts."]
16513pub struct MedicinalProductName {
16514    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
16515    pub id: Option<String>,
16516    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
16517    pub extension: Option<Vec<Box<Extension>>>,
16518    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
16519    pub modifierExtension: Option<Vec<Box<Extension>>>,
16520    #[primitive]
16521    #[doc = "The full product name."]
16522    pub productName: Box<FHIRString>,
16523    #[doc = "Coding words or phrases of the name."]
16524    pub namePart: Option<Vec<MedicinalProductNameNamePart>>,
16525    #[doc = "Country where the name applies."]
16526    pub countryLanguage: Option<Vec<MedicinalProductNameCountryLanguage>>,
16527}
16528#[derive(
16529    Clone,
16530    Reflect,
16531    Debug,
16532    Default,
16533    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
16534    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
16535)]
16536#[fhir_serialize_type = "complex"]
16537#[doc = "An operation applied to the product, for manufacturing or adminsitrative purpose."]
16538pub struct MedicinalProductManufacturingBusinessOperation {
16539    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
16540    pub id: Option<String>,
16541    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
16542    pub extension: Option<Vec<Box<Extension>>>,
16543    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
16544    pub modifierExtension: Option<Vec<Box<Extension>>>,
16545    #[doc = "The type of manufacturing operation."]
16546    pub operationType: Option<Box<CodeableConcept>>,
16547    #[doc = "Regulatory authorization reference number."]
16548    pub authorisationReferenceNumber: Option<Box<Identifier>>,
16549    #[primitive]
16550    #[doc = "Regulatory authorization date."]
16551    pub effectiveDate: Option<Box<FHIRDateTime>>,
16552    #[doc = "To indicate if this proces is commercially confidential."]
16553    pub confidentialityIndicator: Option<Box<CodeableConcept>>,
16554    # [reference (targets = ["Organization"])]
16555    #[doc = "The manufacturer or establishment associated with the process."]
16556    pub manufacturer: Option<Vec<Box<Reference>>>,
16557    # [reference (targets = ["Organization"])]
16558    #[doc = "A regulator which oversees the operation."]
16559    pub regulator: Option<Box<Reference>>,
16560}
16561#[derive(
16562    Clone,
16563    Reflect,
16564    Debug,
16565    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
16566    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
16567)]
16568#[fhir_serialize_type = "typechoice"]
16569#[type_choice_field_name = "indication"]
16570pub enum MedicinalProductSpecialDesignationIndicationTypeChoice {
16571    CodeableConcept(Box<CodeableConcept>),
16572    # [reference (targets = ["MedicinalProductIndication"])]
16573    Reference(Box<Reference>),
16574}
16575impl Default for MedicinalProductSpecialDesignationIndicationTypeChoice {
16576    fn default() -> Self {
16577        MedicinalProductSpecialDesignationIndicationTypeChoice::CodeableConcept(Box::new(
16578            Default::default(),
16579        ))
16580    }
16581}
16582#[derive(
16583    Clone,
16584    Reflect,
16585    Debug,
16586    Default,
16587    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
16588    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
16589)]
16590#[fhir_serialize_type = "complex"]
16591#[doc = "Indicates if the medicinal product has an orphan designation for the treatment of a rare disease."]
16592pub struct MedicinalProductSpecialDesignation {
16593    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
16594    pub id: Option<String>,
16595    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
16596    pub extension: Option<Vec<Box<Extension>>>,
16597    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
16598    pub modifierExtension: Option<Vec<Box<Extension>>>,
16599    #[rename_field = "identifier"]
16600    #[doc = "Identifier for the designation, or procedure number."]
16601    pub identifier_: Option<Vec<Box<Identifier>>>,
16602    #[rename_field = "type"]
16603    #[doc = "The type of special designation, e.g. orphan drug, minor use."]
16604    pub type_: Option<Box<CodeableConcept>>,
16605    #[doc = "The intended use of the product, e.g. prevention, treatment."]
16606    pub intendedUse: Option<Box<CodeableConcept>>,
16607    # [type_choice_variants (complex = ["indicationCodeableConcept" , "indicationReference"] , primitive = [])]
16608    #[doc = "Condition for which the medicinal use applies."]
16609    pub indication: Option<MedicinalProductSpecialDesignationIndicationTypeChoice>,
16610    #[doc = "For example granted, pending, expired or withdrawn."]
16611    pub status: Option<Box<CodeableConcept>>,
16612    #[primitive]
16613    #[doc = "Date when the designation was granted."]
16614    pub date: Option<Box<FHIRDateTime>>,
16615    #[doc = "Animal species for which this applies."]
16616    pub species: Option<Box<CodeableConcept>>,
16617}
16618#[derive(
16619    Clone,
16620    Reflect,
16621    Debug,
16622    Default,
16623    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
16624    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
16625)]
16626#[fhir_serialize_type = "resource"]
16627#[doc = "Detailed definition of a medicinal product, typically for uses other than direct patient care (e.g. regulatory use)."]
16628pub struct MedicinalProduct {
16629    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
16630    pub id: Option<String>,
16631    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
16632    pub meta: Option<Box<Meta>>,
16633    #[primitive]
16634    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
16635    pub implicitRules: Option<Box<FHIRUri>>,
16636    #[primitive]
16637    #[doc = "The base language in which the resource is written."]
16638    pub language: Option<Box<FHIRCode>>,
16639    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
16640    pub text: Option<Box<Narrative>>,
16641    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
16642    pub contained: Option<Vec<Box<Resource>>>,
16643    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
16644    pub extension: Option<Vec<Box<Extension>>>,
16645    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
16646    pub modifierExtension: Option<Vec<Box<Extension>>>,
16647    #[rename_field = "identifier"]
16648    #[doc = "Business identifier for this product. Could be an MPID."]
16649    pub identifier_: Option<Vec<Box<Identifier>>>,
16650    #[rename_field = "type"]
16651    #[doc = "Regulatory type, e.g. Investigational or Authorized."]
16652    pub type_: Option<Box<CodeableConcept>>,
16653    #[doc = "If this medicine applies to human or veterinary uses."]
16654    pub domain: Option<Box<Coding>>,
16655    #[doc = "The dose form for a single part product, or combined form of a multiple part product."]
16656    pub combinedPharmaceuticalDoseForm: Option<Box<CodeableConcept>>,
16657    #[doc = "The legal status of supply of the medicinal product as classified by the regulator."]
16658    pub legalStatusOfSupply: Option<Box<CodeableConcept>>,
16659    #[doc = "Whether the Medicinal Product is subject to additional monitoring for regulatory reasons."]
16660    pub additionalMonitoringIndicator: Option<Box<CodeableConcept>>,
16661    #[primitive]
16662    #[doc = "Whether the Medicinal Product is subject to special measures for regulatory reasons."]
16663    pub specialMeasures: Option<Vec<Box<FHIRString>>>,
16664    #[doc = "If authorised for use in children."]
16665    pub paediatricUseIndicator: Option<Box<CodeableConcept>>,
16666    #[doc = "Allows the product to be classified by various systems."]
16667    pub productClassification: Option<Vec<Box<CodeableConcept>>>,
16668    #[doc = "Marketing status of the medicinal product, in contrast to marketing authorizaton."]
16669    pub marketingStatus: Option<Vec<Box<MarketingStatus>>>,
16670    # [reference (targets = ["MedicinalProductPharmaceutical"])]
16671    #[doc = "Pharmaceutical aspects of product."]
16672    pub pharmaceuticalProduct: Option<Vec<Box<Reference>>>,
16673    # [reference (targets = ["MedicinalProductPackaged"])]
16674    #[doc = "Package representation for the product."]
16675    pub packagedMedicinalProduct: Option<Vec<Box<Reference>>>,
16676    # [reference (targets = ["DocumentReference"])]
16677    #[doc = "Supporting documentation, typically for regulatory submission."]
16678    pub attachedDocument: Option<Vec<Box<Reference>>>,
16679    # [reference (targets = ["DocumentReference"])]
16680    #[doc = "A master file for to the medicinal product (e.g. Pharmacovigilance System Master File)."]
16681    pub masterFile: Option<Vec<Box<Reference>>>,
16682    # [reference (targets = ["Organization" , "PractitionerRole"])]
16683    #[doc = "A product specific contact, person (in a role), or an organization."]
16684    pub contact: Option<Vec<Box<Reference>>>,
16685    # [reference (targets = ["ResearchStudy"])]
16686    #[doc = "Clinical trials or studies that this product is involved in."]
16687    pub clinicalTrial: Option<Vec<Box<Reference>>>,
16688    #[cardinality(min = 1usize)]
16689    #[doc = "The product's name, including full name and possibly coded parts."]
16690    pub name: Vec<MedicinalProductName>,
16691    #[doc = "Reference to another product, e.g. for linking authorised to investigational product."]
16692    pub crossReference: Option<Vec<Box<Identifier>>>,
16693    #[doc = "An operation applied to the product, for manufacturing or adminsitrative purpose."]
16694    pub manufacturingBusinessOperation: Option<Vec<MedicinalProductManufacturingBusinessOperation>>,
16695    #[doc = "Indicates if the medicinal product has an orphan designation for the treatment of a rare disease."]
16696    pub specialDesignation: Option<Vec<MedicinalProductSpecialDesignation>>,
16697}
16698#[derive(
16699    Clone,
16700    Reflect,
16701    Debug,
16702    Default,
16703    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
16704    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
16705)]
16706#[fhir_serialize_type = "complex"]
16707#[doc = "Authorization in areas within a country."]
16708pub struct MedicinalProductAuthorizationJurisdictionalAuthorization {
16709    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
16710    pub id: Option<String>,
16711    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
16712    pub extension: Option<Vec<Box<Extension>>>,
16713    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
16714    pub modifierExtension: Option<Vec<Box<Extension>>>,
16715    #[rename_field = "identifier"]
16716    #[doc = "The assigned number for the marketing authorization."]
16717    pub identifier_: Option<Vec<Box<Identifier>>>,
16718    #[doc = "Country of authorization."]
16719    pub country: Option<Box<CodeableConcept>>,
16720    #[doc = "Jurisdiction within a country."]
16721    pub jurisdiction: Option<Vec<Box<CodeableConcept>>>,
16722    #[doc = "The legal status of supply in a jurisdiction or region."]
16723    pub legalStatusOfSupply: Option<Box<CodeableConcept>>,
16724    #[doc = "The start and expected end date of the authorization."]
16725    pub validityPeriod: Option<Box<Period>>,
16726}
16727#[derive(
16728    Clone,
16729    Reflect,
16730    Debug,
16731    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
16732    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
16733)]
16734#[fhir_serialize_type = "typechoice"]
16735#[type_choice_field_name = "date"]
16736pub enum MedicinalProductAuthorizationProcedureDateTypeChoice {
16737    Period(Box<Period>),
16738    DateTime(Box<FHIRDateTime>),
16739}
16740impl Default for MedicinalProductAuthorizationProcedureDateTypeChoice {
16741    fn default() -> Self {
16742        MedicinalProductAuthorizationProcedureDateTypeChoice::Period(Box::new(Default::default()))
16743    }
16744}
16745#[derive(
16746    Clone,
16747    Reflect,
16748    Debug,
16749    Default,
16750    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
16751    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
16752)]
16753#[fhir_serialize_type = "complex"]
16754#[doc = "The regulatory procedure for granting or amending a marketing authorization."]
16755pub struct MedicinalProductAuthorizationProcedure {
16756    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
16757    pub id: Option<String>,
16758    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
16759    pub extension: Option<Vec<Box<Extension>>>,
16760    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
16761    pub modifierExtension: Option<Vec<Box<Extension>>>,
16762    #[rename_field = "identifier"]
16763    #[doc = "Identifier for this procedure."]
16764    pub identifier_: Option<Box<Identifier>>,
16765    #[rename_field = "type"]
16766    #[doc = "Type of procedure."]
16767    pub type_: Box<CodeableConcept>,
16768    # [type_choice_variants (complex = ["datePeriod"] , primitive = ["dateDateTime"])]
16769    #[doc = "Date of procedure."]
16770    pub date: Option<MedicinalProductAuthorizationProcedureDateTypeChoice>,
16771    #[doc = "Applcations submitted to obtain a marketing authorization."]
16772    pub application: Option<Vec<MedicinalProductAuthorizationProcedure>>,
16773}
16774#[derive(
16775    Clone,
16776    Reflect,
16777    Debug,
16778    Default,
16779    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
16780    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
16781)]
16782#[fhir_serialize_type = "resource"]
16783#[doc = "The regulatory authorization of a medicinal product."]
16784pub struct MedicinalProductAuthorization {
16785    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
16786    pub id: Option<String>,
16787    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
16788    pub meta: Option<Box<Meta>>,
16789    #[primitive]
16790    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
16791    pub implicitRules: Option<Box<FHIRUri>>,
16792    #[primitive]
16793    #[doc = "The base language in which the resource is written."]
16794    pub language: Option<Box<FHIRCode>>,
16795    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
16796    pub text: Option<Box<Narrative>>,
16797    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
16798    pub contained: Option<Vec<Box<Resource>>>,
16799    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
16800    pub extension: Option<Vec<Box<Extension>>>,
16801    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
16802    pub modifierExtension: Option<Vec<Box<Extension>>>,
16803    #[rename_field = "identifier"]
16804    #[doc = "Business identifier for the marketing authorization, as assigned by a regulator."]
16805    pub identifier_: Option<Vec<Box<Identifier>>>,
16806    # [reference (targets = ["MedicinalProduct" , "MedicinalProductPackaged"])]
16807    #[doc = "The medicinal product that is being authorized."]
16808    pub subject: Option<Box<Reference>>,
16809    #[doc = "The country in which the marketing authorization has been granted."]
16810    pub country: Option<Vec<Box<CodeableConcept>>>,
16811    #[doc = "Jurisdiction within a country."]
16812    pub jurisdiction: Option<Vec<Box<CodeableConcept>>>,
16813    #[doc = "The status of the marketing authorization."]
16814    pub status: Option<Box<CodeableConcept>>,
16815    #[primitive]
16816    #[doc = "The date at which the given status has become applicable."]
16817    pub statusDate: Option<Box<FHIRDateTime>>,
16818    #[primitive]
16819    #[doc = "The date when a suspended the marketing or the marketing authorization of the product is anticipated to be restored."]
16820    pub restoreDate: Option<Box<FHIRDateTime>>,
16821    #[doc = "The beginning of the time period in which the marketing authorization is in the specific status shall be specified A complete date consisting of day, month and year shall be specified using the ISO 8601 date format."]
16822    pub validityPeriod: Option<Box<Period>>,
16823    #[doc = "A period of time after authorization before generic product applicatiosn can be submitted."]
16824    pub dataExclusivityPeriod: Option<Box<Period>>,
16825    #[primitive]
16826    #[doc = "The date when the first authorization was granted by a Medicines Regulatory Agency."]
16827    pub dateOfFirstAuthorization: Option<Box<FHIRDateTime>>,
16828    #[primitive]
16829    #[doc = "Date of first marketing authorization for a company's new medicinal product in any country in the World."]
16830    pub internationalBirthDate: Option<Box<FHIRDateTime>>,
16831    #[doc = "The legal framework against which this authorization is granted."]
16832    pub legalBasis: Option<Box<CodeableConcept>>,
16833    #[doc = "Authorization in areas within a country."]
16834    pub jurisdictionalAuthorization:
16835        Option<Vec<MedicinalProductAuthorizationJurisdictionalAuthorization>>,
16836    # [reference (targets = ["Organization"])]
16837    #[doc = "Marketing Authorization Holder."]
16838    pub holder: Option<Box<Reference>>,
16839    # [reference (targets = ["Organization"])]
16840    #[doc = "Medicines Regulatory Agency."]
16841    pub regulator: Option<Box<Reference>>,
16842    #[doc = "The regulatory procedure for granting or amending a marketing authorization."]
16843    pub procedure: Option<MedicinalProductAuthorizationProcedure>,
16844}
16845#[derive(
16846    Clone,
16847    Reflect,
16848    Debug,
16849    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
16850    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
16851)]
16852#[fhir_serialize_type = "typechoice"]
16853#[type_choice_field_name = "medication"]
16854pub enum MedicinalProductContraindicationOtherTherapyMedicationTypeChoice {
16855    CodeableConcept(Box<CodeableConcept>),
16856    # [reference (targets = ["MedicinalProduct" , "Medication" , "Substance" , "SubstanceSpecification"])]
16857    Reference(Box<Reference>),
16858}
16859impl Default for MedicinalProductContraindicationOtherTherapyMedicationTypeChoice {
16860    fn default() -> Self {
16861        MedicinalProductContraindicationOtherTherapyMedicationTypeChoice::CodeableConcept(Box::new(
16862            Default::default(),
16863        ))
16864    }
16865}
16866#[derive(
16867    Clone,
16868    Reflect,
16869    Debug,
16870    Default,
16871    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
16872    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
16873)]
16874#[fhir_serialize_type = "complex"]
16875#[doc = "Information about the use of the medicinal product in relation to other therapies described as part of the indication."]
16876pub struct MedicinalProductContraindicationOtherTherapy {
16877    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
16878    pub id: Option<String>,
16879    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
16880    pub extension: Option<Vec<Box<Extension>>>,
16881    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
16882    pub modifierExtension: Option<Vec<Box<Extension>>>,
16883    #[doc = "The type of relationship between the medicinal product indication or contraindication and another therapy."]
16884    pub therapyRelationshipType: Box<CodeableConcept>,
16885    # [type_choice_variants (complex = ["medicationCodeableConcept" , "medicationReference"] , primitive = [])]
16886    #[doc = "Reference to a specific medication (active substance, medicinal product or class of products) as part of an indication or contraindication."]
16887    pub medication: MedicinalProductContraindicationOtherTherapyMedicationTypeChoice,
16888}
16889#[derive(
16890    Clone,
16891    Reflect,
16892    Debug,
16893    Default,
16894    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
16895    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
16896)]
16897#[fhir_serialize_type = "resource"]
16898#[doc = "The clinical particulars - indications, contraindications etc. of a medicinal product, including for regulatory purposes."]
16899pub struct MedicinalProductContraindication {
16900    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
16901    pub id: Option<String>,
16902    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
16903    pub meta: Option<Box<Meta>>,
16904    #[primitive]
16905    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
16906    pub implicitRules: Option<Box<FHIRUri>>,
16907    #[primitive]
16908    #[doc = "The base language in which the resource is written."]
16909    pub language: Option<Box<FHIRCode>>,
16910    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
16911    pub text: Option<Box<Narrative>>,
16912    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
16913    pub contained: Option<Vec<Box<Resource>>>,
16914    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
16915    pub extension: Option<Vec<Box<Extension>>>,
16916    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
16917    pub modifierExtension: Option<Vec<Box<Extension>>>,
16918    # [reference (targets = ["MedicinalProduct" , "Medication"])]
16919    #[doc = "The medication for which this is an indication."]
16920    pub subject: Option<Vec<Box<Reference>>>,
16921    #[doc = "The disease, symptom or procedure for the contraindication."]
16922    pub disease: Option<Box<CodeableConcept>>,
16923    #[doc = "The status of the disease or symptom for the contraindication."]
16924    pub diseaseStatus: Option<Box<CodeableConcept>>,
16925    #[doc = "A comorbidity (concurrent condition) or coinfection."]
16926    pub comorbidity: Option<Vec<Box<CodeableConcept>>>,
16927    # [reference (targets = ["MedicinalProductIndication"])]
16928    #[doc = "Information about the use of the medicinal product in relation to other therapies as part of the indication."]
16929    pub therapeuticIndication: Option<Vec<Box<Reference>>>,
16930    #[doc = "Information about the use of the medicinal product in relation to other therapies described as part of the indication."]
16931    pub otherTherapy: Option<Vec<MedicinalProductContraindicationOtherTherapy>>,
16932    #[doc = "The population group to which this applies."]
16933    pub population: Option<Vec<Box<Population>>>,
16934}
16935#[derive(
16936    Clone,
16937    Reflect,
16938    Debug,
16939    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
16940    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
16941)]
16942#[fhir_serialize_type = "typechoice"]
16943#[type_choice_field_name = "medication"]
16944pub enum MedicinalProductIndicationOtherTherapyMedicationTypeChoice {
16945    CodeableConcept(Box<CodeableConcept>),
16946    # [reference (targets = ["MedicinalProduct" , "Medication" , "Substance" , "SubstanceSpecification"])]
16947    Reference(Box<Reference>),
16948}
16949impl Default for MedicinalProductIndicationOtherTherapyMedicationTypeChoice {
16950    fn default() -> Self {
16951        MedicinalProductIndicationOtherTherapyMedicationTypeChoice::CodeableConcept(Box::new(
16952            Default::default(),
16953        ))
16954    }
16955}
16956#[derive(
16957    Clone,
16958    Reflect,
16959    Debug,
16960    Default,
16961    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
16962    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
16963)]
16964#[fhir_serialize_type = "complex"]
16965#[doc = "Information about the use of the medicinal product in relation to other therapies described as part of the indication."]
16966pub struct MedicinalProductIndicationOtherTherapy {
16967    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
16968    pub id: Option<String>,
16969    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
16970    pub extension: Option<Vec<Box<Extension>>>,
16971    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
16972    pub modifierExtension: Option<Vec<Box<Extension>>>,
16973    #[doc = "The type of relationship between the medicinal product indication or contraindication and another therapy."]
16974    pub therapyRelationshipType: Box<CodeableConcept>,
16975    # [type_choice_variants (complex = ["medicationCodeableConcept" , "medicationReference"] , primitive = [])]
16976    #[doc = "Reference to a specific medication (active substance, medicinal product or class of products) as part of an indication or contraindication."]
16977    pub medication: MedicinalProductIndicationOtherTherapyMedicationTypeChoice,
16978}
16979#[derive(
16980    Clone,
16981    Reflect,
16982    Debug,
16983    Default,
16984    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
16985    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
16986)]
16987#[fhir_serialize_type = "resource"]
16988#[doc = "Indication for the Medicinal Product."]
16989pub struct MedicinalProductIndication {
16990    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
16991    pub id: Option<String>,
16992    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
16993    pub meta: Option<Box<Meta>>,
16994    #[primitive]
16995    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
16996    pub implicitRules: Option<Box<FHIRUri>>,
16997    #[primitive]
16998    #[doc = "The base language in which the resource is written."]
16999    pub language: Option<Box<FHIRCode>>,
17000    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
17001    pub text: Option<Box<Narrative>>,
17002    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
17003    pub contained: Option<Vec<Box<Resource>>>,
17004    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
17005    pub extension: Option<Vec<Box<Extension>>>,
17006    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
17007    pub modifierExtension: Option<Vec<Box<Extension>>>,
17008    # [reference (targets = ["MedicinalProduct" , "Medication"])]
17009    #[doc = "The medication for which this is an indication."]
17010    pub subject: Option<Vec<Box<Reference>>>,
17011    #[doc = "The disease, symptom or procedure that is the indication for treatment."]
17012    pub diseaseSymptomProcedure: Option<Box<CodeableConcept>>,
17013    #[doc = "The status of the disease or symptom for which the indication applies."]
17014    pub diseaseStatus: Option<Box<CodeableConcept>>,
17015    #[doc = "Comorbidity (concurrent condition) or co-infection as part of the indication."]
17016    pub comorbidity: Option<Vec<Box<CodeableConcept>>>,
17017    #[doc = "The intended effect, aim or strategy to be achieved by the indication."]
17018    pub intendedEffect: Option<Box<CodeableConcept>>,
17019    #[doc = "Timing or duration information as part of the indication."]
17020    pub duration: Option<Box<Quantity>>,
17021    #[doc = "Information about the use of the medicinal product in relation to other therapies described as part of the indication."]
17022    pub otherTherapy: Option<Vec<MedicinalProductIndicationOtherTherapy>>,
17023    # [reference (targets = ["MedicinalProductUndesirableEffect"])]
17024    #[doc = "Describe the undesirable effects of the medicinal product."]
17025    pub undesirableEffect: Option<Vec<Box<Reference>>>,
17026    #[doc = "The population group to which this applies."]
17027    pub population: Option<Vec<Box<Population>>>,
17028}
17029#[derive(
17030    Clone,
17031    Reflect,
17032    Debug,
17033    Default,
17034    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
17035    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
17036)]
17037#[fhir_serialize_type = "complex"]
17038#[doc = "Strength expressed in terms of a reference substance."]
17039pub struct MedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrength {
17040    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
17041    pub id: Option<String>,
17042    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
17043    pub extension: Option<Vec<Box<Extension>>>,
17044    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
17045    pub modifierExtension: Option<Vec<Box<Extension>>>,
17046    #[doc = "Relevant reference substance."]
17047    pub substance: Option<Box<CodeableConcept>>,
17048    #[doc = "Strength expressed in terms of a reference substance."]
17049    pub strength: Box<Ratio>,
17050    #[doc = "Strength expressed in terms of a reference substance."]
17051    pub strengthLowLimit: Option<Box<Ratio>>,
17052    #[primitive]
17053    #[doc = "For when strength is measured at a particular point or distance."]
17054    pub measurementPoint: Option<Box<FHIRString>>,
17055    #[doc = "The country or countries for which the strength range applies."]
17056    pub country: Option<Vec<Box<CodeableConcept>>>,
17057}
17058#[derive(
17059    Clone,
17060    Reflect,
17061    Debug,
17062    Default,
17063    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
17064    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
17065)]
17066#[fhir_serialize_type = "complex"]
17067#[doc = "Quantity of the substance or specified substance present in the manufactured item or pharmaceutical product."]
17068pub struct MedicinalProductIngredientSpecifiedSubstanceStrength {
17069    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
17070    pub id: Option<String>,
17071    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
17072    pub extension: Option<Vec<Box<Extension>>>,
17073    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
17074    pub modifierExtension: Option<Vec<Box<Extension>>>,
17075    #[doc = "The quantity of substance in the unit of presentation, or in the volume (or mass) of the single pharmaceutical product or manufactured item."]
17076    pub presentation: Box<Ratio>,
17077    #[doc = "A lower limit for the quantity of substance in the unit of presentation. For use when there is a range of strengths, this is the lower limit, with the presentation attribute becoming the upper limit."]
17078    pub presentationLowLimit: Option<Box<Ratio>>,
17079    #[doc = "The strength per unitary volume (or mass)."]
17080    pub concentration: Option<Box<Ratio>>,
17081    #[doc = "A lower limit for the strength per unitary volume (or mass), for when there is a range. The concentration attribute then becomes the upper limit."]
17082    pub concentrationLowLimit: Option<Box<Ratio>>,
17083    #[primitive]
17084    #[doc = "For when strength is measured at a particular point or distance."]
17085    pub measurementPoint: Option<Box<FHIRString>>,
17086    #[doc = "The country or countries for which the strength range applies."]
17087    pub country: Option<Vec<Box<CodeableConcept>>>,
17088    #[doc = "Strength expressed in terms of a reference substance."]
17089    pub referenceStrength:
17090        Option<Vec<MedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrength>>,
17091}
17092#[derive(
17093    Clone,
17094    Reflect,
17095    Debug,
17096    Default,
17097    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
17098    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
17099)]
17100#[fhir_serialize_type = "complex"]
17101#[doc = "A specified substance that comprises this ingredient."]
17102pub struct MedicinalProductIngredientSpecifiedSubstance {
17103    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
17104    pub id: Option<String>,
17105    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
17106    pub extension: Option<Vec<Box<Extension>>>,
17107    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
17108    pub modifierExtension: Option<Vec<Box<Extension>>>,
17109    #[doc = "The specified substance."]
17110    pub code: Box<CodeableConcept>,
17111    #[doc = "The group of specified substance, e.g. group 1 to 4."]
17112    pub group: Box<CodeableConcept>,
17113    #[doc = "Confidentiality level of the specified substance as the ingredient."]
17114    pub confidentiality: Option<Box<CodeableConcept>>,
17115    #[doc = "Quantity of the substance or specified substance present in the manufactured item or pharmaceutical product."]
17116    pub strength: Option<Vec<MedicinalProductIngredientSpecifiedSubstanceStrength>>,
17117}
17118#[derive(
17119    Clone,
17120    Reflect,
17121    Debug,
17122    Default,
17123    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
17124    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
17125)]
17126#[fhir_serialize_type = "complex"]
17127#[doc = "The ingredient substance."]
17128pub struct MedicinalProductIngredientSubstance {
17129    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
17130    pub id: Option<String>,
17131    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
17132    pub extension: Option<Vec<Box<Extension>>>,
17133    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
17134    pub modifierExtension: Option<Vec<Box<Extension>>>,
17135    #[doc = "The ingredient substance."]
17136    pub code: Box<CodeableConcept>,
17137    #[doc = "Quantity of the substance or specified substance present in the manufactured item or pharmaceutical product."]
17138    pub strength: Option<Vec<MedicinalProductIngredientSpecifiedSubstanceStrength>>,
17139}
17140#[derive(
17141    Clone,
17142    Reflect,
17143    Debug,
17144    Default,
17145    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
17146    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
17147)]
17148#[fhir_serialize_type = "resource"]
17149#[doc = "An ingredient of a manufactured item or pharmaceutical product."]
17150pub struct MedicinalProductIngredient {
17151    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
17152    pub id: Option<String>,
17153    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
17154    pub meta: Option<Box<Meta>>,
17155    #[primitive]
17156    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
17157    pub implicitRules: Option<Box<FHIRUri>>,
17158    #[primitive]
17159    #[doc = "The base language in which the resource is written."]
17160    pub language: Option<Box<FHIRCode>>,
17161    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
17162    pub text: Option<Box<Narrative>>,
17163    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
17164    pub contained: Option<Vec<Box<Resource>>>,
17165    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
17166    pub extension: Option<Vec<Box<Extension>>>,
17167    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
17168    pub modifierExtension: Option<Vec<Box<Extension>>>,
17169    #[rename_field = "identifier"]
17170    #[doc = "The identifier(s) of this Ingredient that are assigned by business processes and/or used to refer to it when a direct URL reference to the resource itself is not appropriate."]
17171    pub identifier_: Option<Box<Identifier>>,
17172    #[doc = "Ingredient role e.g. Active ingredient, excipient."]
17173    pub role: Box<CodeableConcept>,
17174    #[primitive]
17175    #[doc = "If the ingredient is a known or suspected allergen."]
17176    pub allergenicIndicator: Option<Box<FHIRBoolean>>,
17177    # [reference (targets = ["Organization"])]
17178    #[doc = "Manufacturer of this Ingredient."]
17179    pub manufacturer: Option<Vec<Box<Reference>>>,
17180    #[doc = "A specified substance that comprises this ingredient."]
17181    pub specifiedSubstance: Option<Vec<MedicinalProductIngredientSpecifiedSubstance>>,
17182    #[doc = "The ingredient substance."]
17183    pub substance: Option<MedicinalProductIngredientSubstance>,
17184}
17185#[derive(
17186    Clone,
17187    Reflect,
17188    Debug,
17189    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
17190    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
17191)]
17192#[fhir_serialize_type = "typechoice"]
17193#[type_choice_field_name = "item"]
17194pub enum MedicinalProductInteractionInteractantItemTypeChoice {
17195    # [reference (targets = ["MedicinalProduct" , "Medication" , "Substance" , "ObservationDefinition"])]
17196    Reference(Box<Reference>),
17197    CodeableConcept(Box<CodeableConcept>),
17198}
17199impl Default for MedicinalProductInteractionInteractantItemTypeChoice {
17200    fn default() -> Self {
17201        MedicinalProductInteractionInteractantItemTypeChoice::Reference(
17202            Box::new(Default::default()),
17203        )
17204    }
17205}
17206#[derive(
17207    Clone,
17208    Reflect,
17209    Debug,
17210    Default,
17211    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
17212    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
17213)]
17214#[fhir_serialize_type = "complex"]
17215#[doc = "The specific medication, food or laboratory test that interacts."]
17216pub struct MedicinalProductInteractionInteractant {
17217    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
17218    pub id: Option<String>,
17219    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
17220    pub extension: Option<Vec<Box<Extension>>>,
17221    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
17222    pub modifierExtension: Option<Vec<Box<Extension>>>,
17223    # [type_choice_variants (complex = ["itemReference" , "itemCodeableConcept"] , primitive = [])]
17224    #[doc = "The specific medication, food or laboratory test that interacts."]
17225    pub item: MedicinalProductInteractionInteractantItemTypeChoice,
17226}
17227#[derive(
17228    Clone,
17229    Reflect,
17230    Debug,
17231    Default,
17232    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
17233    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
17234)]
17235#[fhir_serialize_type = "resource"]
17236#[doc = "The interactions of the medicinal product with other medicinal products, or other forms of interactions."]
17237pub struct MedicinalProductInteraction {
17238    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
17239    pub id: Option<String>,
17240    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
17241    pub meta: Option<Box<Meta>>,
17242    #[primitive]
17243    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
17244    pub implicitRules: Option<Box<FHIRUri>>,
17245    #[primitive]
17246    #[doc = "The base language in which the resource is written."]
17247    pub language: Option<Box<FHIRCode>>,
17248    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
17249    pub text: Option<Box<Narrative>>,
17250    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
17251    pub contained: Option<Vec<Box<Resource>>>,
17252    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
17253    pub extension: Option<Vec<Box<Extension>>>,
17254    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
17255    pub modifierExtension: Option<Vec<Box<Extension>>>,
17256    # [reference (targets = ["MedicinalProduct" , "Medication" , "Substance"])]
17257    #[doc = "The medication for which this is a described interaction."]
17258    pub subject: Option<Vec<Box<Reference>>>,
17259    #[primitive]
17260    #[doc = "The interaction described."]
17261    pub description: Option<Box<FHIRString>>,
17262    #[doc = "The specific medication, food or laboratory test that interacts."]
17263    pub interactant: Option<Vec<MedicinalProductInteractionInteractant>>,
17264    #[rename_field = "type"]
17265    #[doc = "The type of the interaction e.g. drug-drug interaction, drug-food interaction, drug-lab test interaction."]
17266    pub type_: Option<Box<CodeableConcept>>,
17267    #[doc = "The effect of the interaction, for example \"reduced gastric absorption of primary medication\"."]
17268    pub effect: Option<Box<CodeableConcept>>,
17269    #[doc = "The incidence of the interaction, e.g. theoretical, observed."]
17270    pub incidence: Option<Box<CodeableConcept>>,
17271    #[doc = "Actions for managing the interaction."]
17272    pub management: Option<Box<CodeableConcept>>,
17273}
17274#[derive(
17275    Clone,
17276    Reflect,
17277    Debug,
17278    Default,
17279    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
17280    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
17281)]
17282#[fhir_serialize_type = "resource"]
17283#[doc = "The manufactured item as contained in the packaged medicinal product."]
17284pub struct MedicinalProductManufactured {
17285    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
17286    pub id: Option<String>,
17287    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
17288    pub meta: Option<Box<Meta>>,
17289    #[primitive]
17290    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
17291    pub implicitRules: Option<Box<FHIRUri>>,
17292    #[primitive]
17293    #[doc = "The base language in which the resource is written."]
17294    pub language: Option<Box<FHIRCode>>,
17295    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
17296    pub text: Option<Box<Narrative>>,
17297    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
17298    pub contained: Option<Vec<Box<Resource>>>,
17299    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
17300    pub extension: Option<Vec<Box<Extension>>>,
17301    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
17302    pub modifierExtension: Option<Vec<Box<Extension>>>,
17303    #[doc = "Dose form as manufactured and before any transformation into the pharmaceutical product."]
17304    pub manufacturedDoseForm: Box<CodeableConcept>,
17305    #[doc = "The “real world” units in which the quantity of the manufactured item is described."]
17306    pub unitOfPresentation: Option<Box<CodeableConcept>>,
17307    #[doc = "The quantity or \"count number\" of the manufactured item."]
17308    pub quantity: Box<Quantity>,
17309    # [reference (targets = ["Organization"])]
17310    #[doc = "Manufacturer of the item (Note that this should be named \"manufacturer\" but it currently causes technical issues)."]
17311    pub manufacturer: Option<Vec<Box<Reference>>>,
17312    # [reference (targets = ["MedicinalProductIngredient"])]
17313    #[doc = "Ingredient."]
17314    pub ingredient: Option<Vec<Box<Reference>>>,
17315    #[doc = "Dimensions, color etc."]
17316    pub physicalCharacteristics: Option<Box<ProdCharacteristic>>,
17317    #[doc = "Other codeable characteristics."]
17318    pub otherCharacteristics: Option<Vec<Box<CodeableConcept>>>,
17319}
17320#[derive(
17321    Clone,
17322    Reflect,
17323    Debug,
17324    Default,
17325    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
17326    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
17327)]
17328#[fhir_serialize_type = "complex"]
17329#[doc = "Batch numbering."]
17330pub struct MedicinalProductPackagedBatchIdentifier {
17331    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
17332    pub id: Option<String>,
17333    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
17334    pub extension: Option<Vec<Box<Extension>>>,
17335    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
17336    pub modifierExtension: Option<Vec<Box<Extension>>>,
17337    #[doc = "A number appearing on the outer packaging of a specific batch."]
17338    pub outerPackaging: Box<Identifier>,
17339    #[doc = "A number appearing on the immediate packaging (and not the outer packaging)."]
17340    pub immediatePackaging: Option<Box<Identifier>>,
17341}
17342#[derive(
17343    Clone,
17344    Reflect,
17345    Debug,
17346    Default,
17347    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
17348    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
17349)]
17350#[fhir_serialize_type = "complex"]
17351#[doc = "A packaging item, as a contained for medicine, possibly with other packaging items within."]
17352pub struct MedicinalProductPackagedPackageItem {
17353    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
17354    pub id: Option<String>,
17355    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
17356    pub extension: Option<Vec<Box<Extension>>>,
17357    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
17358    pub modifierExtension: Option<Vec<Box<Extension>>>,
17359    #[rename_field = "identifier"]
17360    #[doc = "Including possibly Data Carrier Identifier."]
17361    pub identifier_: Option<Vec<Box<Identifier>>>,
17362    #[rename_field = "type"]
17363    #[doc = "The physical type of the container of the medicine."]
17364    pub type_: Box<CodeableConcept>,
17365    #[doc = "The quantity of this package in the medicinal product, at the current level of packaging. The outermost is always 1."]
17366    pub quantity: Box<Quantity>,
17367    #[doc = "Material type of the package item."]
17368    pub material: Option<Vec<Box<CodeableConcept>>>,
17369    #[doc = "A possible alternate material for the packaging."]
17370    pub alternateMaterial: Option<Vec<Box<CodeableConcept>>>,
17371    # [reference (targets = ["DeviceDefinition"])]
17372    #[doc = "A device accompanying a medicinal product."]
17373    pub device: Option<Vec<Box<Reference>>>,
17374    # [reference (targets = ["MedicinalProductManufactured"])]
17375    #[doc = "The manufactured item as contained in the packaged medicinal product."]
17376    pub manufacturedItem: Option<Vec<Box<Reference>>>,
17377    #[doc = "Allows containers within containers."]
17378    pub packageItem: Option<Vec<MedicinalProductPackagedPackageItem>>,
17379    #[doc = "Dimensions, color etc."]
17380    pub physicalCharacteristics: Option<Box<ProdCharacteristic>>,
17381    #[doc = "Other codeable characteristics."]
17382    pub otherCharacteristics: Option<Vec<Box<CodeableConcept>>>,
17383    #[doc = "Shelf Life and storage information."]
17384    pub shelfLifeStorage: Option<Vec<Box<ProductShelfLife>>>,
17385    # [reference (targets = ["Organization"])]
17386    #[doc = "Manufacturer of this Package Item."]
17387    pub manufacturer: Option<Vec<Box<Reference>>>,
17388}
17389#[derive(
17390    Clone,
17391    Reflect,
17392    Debug,
17393    Default,
17394    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
17395    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
17396)]
17397#[fhir_serialize_type = "resource"]
17398#[doc = "A medicinal product in a container or package."]
17399pub struct MedicinalProductPackaged {
17400    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
17401    pub id: Option<String>,
17402    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
17403    pub meta: Option<Box<Meta>>,
17404    #[primitive]
17405    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
17406    pub implicitRules: Option<Box<FHIRUri>>,
17407    #[primitive]
17408    #[doc = "The base language in which the resource is written."]
17409    pub language: Option<Box<FHIRCode>>,
17410    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
17411    pub text: Option<Box<Narrative>>,
17412    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
17413    pub contained: Option<Vec<Box<Resource>>>,
17414    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
17415    pub extension: Option<Vec<Box<Extension>>>,
17416    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
17417    pub modifierExtension: Option<Vec<Box<Extension>>>,
17418    #[rename_field = "identifier"]
17419    #[doc = "Unique identifier."]
17420    pub identifier_: Option<Vec<Box<Identifier>>>,
17421    # [reference (targets = ["MedicinalProduct"])]
17422    #[doc = "The product with this is a pack for."]
17423    pub subject: Option<Vec<Box<Reference>>>,
17424    #[primitive]
17425    #[doc = "Textual description."]
17426    pub description: Option<Box<FHIRString>>,
17427    #[doc = "The legal status of supply of the medicinal product as classified by the regulator."]
17428    pub legalStatusOfSupply: Option<Box<CodeableConcept>>,
17429    #[doc = "Marketing information."]
17430    pub marketingStatus: Option<Vec<Box<MarketingStatus>>>,
17431    # [reference (targets = ["MedicinalProductAuthorization"])]
17432    #[doc = "Manufacturer of this Package Item."]
17433    pub marketingAuthorization: Option<Box<Reference>>,
17434    # [reference (targets = ["Organization"])]
17435    #[doc = "Manufacturer of this Package Item."]
17436    pub manufacturer: Option<Vec<Box<Reference>>>,
17437    #[doc = "Batch numbering."]
17438    pub batchIdentifier: Option<Vec<MedicinalProductPackagedBatchIdentifier>>,
17439    #[cardinality(min = 1usize)]
17440    #[doc = "A packaging item, as a contained for medicine, possibly with other packaging items within."]
17441    pub packageItem: Vec<MedicinalProductPackagedPackageItem>,
17442}
17443#[derive(
17444    Clone,
17445    Reflect,
17446    Debug,
17447    Default,
17448    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
17449    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
17450)]
17451#[fhir_serialize_type = "complex"]
17452#[doc = "Characteristics e.g. a products onset of action."]
17453pub struct MedicinalProductPharmaceuticalCharacteristics {
17454    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
17455    pub id: Option<String>,
17456    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
17457    pub extension: Option<Vec<Box<Extension>>>,
17458    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
17459    pub modifierExtension: Option<Vec<Box<Extension>>>,
17460    #[doc = "A coded characteristic."]
17461    pub code: Box<CodeableConcept>,
17462    #[doc = "The status of characteristic e.g. assigned or pending."]
17463    pub status: Option<Box<CodeableConcept>>,
17464}
17465#[derive(
17466    Clone,
17467    Reflect,
17468    Debug,
17469    Default,
17470    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
17471    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
17472)]
17473#[fhir_serialize_type = "complex"]
17474#[doc = "A species specific time during which consumption of animal product is not appropriate."]
17475pub struct MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriod {
17476    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
17477    pub id: Option<String>,
17478    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
17479    pub extension: Option<Vec<Box<Extension>>>,
17480    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
17481    pub modifierExtension: Option<Vec<Box<Extension>>>,
17482    #[doc = "Coded expression for the type of tissue for which the withdrawal period applues, e.g. meat, milk."]
17483    pub tissue: Box<CodeableConcept>,
17484    #[doc = "A value for the time."]
17485    pub value: Box<Quantity>,
17486    #[primitive]
17487    #[doc = "Extra information about the withdrawal period."]
17488    pub supportingInformation: Option<Box<FHIRString>>,
17489}
17490#[derive(
17491    Clone,
17492    Reflect,
17493    Debug,
17494    Default,
17495    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
17496    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
17497)]
17498#[fhir_serialize_type = "complex"]
17499#[doc = "A species for which this route applies."]
17500pub struct MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpecies {
17501    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
17502    pub id: Option<String>,
17503    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
17504    pub extension: Option<Vec<Box<Extension>>>,
17505    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
17506    pub modifierExtension: Option<Vec<Box<Extension>>>,
17507    #[doc = "Coded expression for the species."]
17508    pub code: Box<CodeableConcept>,
17509    #[doc = "A species specific time during which consumption of animal product is not appropriate."]
17510    pub withdrawalPeriod: Option<
17511        Vec<MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriod>,
17512    >,
17513}
17514#[derive(
17515    Clone,
17516    Reflect,
17517    Debug,
17518    Default,
17519    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
17520    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
17521)]
17522#[fhir_serialize_type = "complex"]
17523#[doc = "The path by which the pharmaceutical product is taken into or makes contact with the body."]
17524pub struct MedicinalProductPharmaceuticalRouteOfAdministration {
17525    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
17526    pub id: Option<String>,
17527    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
17528    pub extension: Option<Vec<Box<Extension>>>,
17529    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
17530    pub modifierExtension: Option<Vec<Box<Extension>>>,
17531    #[doc = "Coded expression for the route."]
17532    pub code: Box<CodeableConcept>,
17533    #[doc = "The first dose (dose quantity) administered in humans can be specified, for a product under investigation, using a numerical value and its unit of measurement."]
17534    pub firstDose: Option<Box<Quantity>>,
17535    #[doc = "The maximum single dose that can be administered as per the protocol of a clinical trial can be specified using a numerical value and its unit of measurement."]
17536    pub maxSingleDose: Option<Box<Quantity>>,
17537    #[doc = "The maximum dose per day (maximum dose quantity to be administered in any one 24-h period) that can be administered as per the protocol referenced in the clinical trial authorisation."]
17538    pub maxDosePerDay: Option<Box<Quantity>>,
17539    #[doc = "The maximum dose per treatment period that can be administered as per the protocol referenced in the clinical trial authorisation."]
17540    pub maxDosePerTreatmentPeriod: Option<Box<Ratio>>,
17541    #[doc = "The maximum treatment period during which an Investigational Medicinal Product can be administered as per the protocol referenced in the clinical trial authorisation."]
17542    pub maxTreatmentPeriod: Option<Box<Duration>>,
17543    #[doc = "A species for which this route applies."]
17544    pub targetSpecies:
17545        Option<Vec<MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpecies>>,
17546}
17547#[derive(
17548    Clone,
17549    Reflect,
17550    Debug,
17551    Default,
17552    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
17553    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
17554)]
17555#[fhir_serialize_type = "resource"]
17556#[doc = "A pharmaceutical product described in terms of its composition and dose form."]
17557pub struct MedicinalProductPharmaceutical {
17558    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
17559    pub id: Option<String>,
17560    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
17561    pub meta: Option<Box<Meta>>,
17562    #[primitive]
17563    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
17564    pub implicitRules: Option<Box<FHIRUri>>,
17565    #[primitive]
17566    #[doc = "The base language in which the resource is written."]
17567    pub language: Option<Box<FHIRCode>>,
17568    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
17569    pub text: Option<Box<Narrative>>,
17570    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
17571    pub contained: Option<Vec<Box<Resource>>>,
17572    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
17573    pub extension: Option<Vec<Box<Extension>>>,
17574    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
17575    pub modifierExtension: Option<Vec<Box<Extension>>>,
17576    #[rename_field = "identifier"]
17577    #[doc = "An identifier for the pharmaceutical medicinal product."]
17578    pub identifier_: Option<Vec<Box<Identifier>>>,
17579    #[doc = "The administrable dose form, after necessary reconstitution."]
17580    pub administrableDoseForm: Box<CodeableConcept>,
17581    #[doc = "Todo."]
17582    pub unitOfPresentation: Option<Box<CodeableConcept>>,
17583    # [reference (targets = ["MedicinalProductIngredient"])]
17584    #[doc = "Ingredient."]
17585    pub ingredient: Option<Vec<Box<Reference>>>,
17586    # [reference (targets = ["DeviceDefinition"])]
17587    #[doc = "Accompanying device."]
17588    pub device: Option<Vec<Box<Reference>>>,
17589    #[doc = "Characteristics e.g. a products onset of action."]
17590    pub characteristics: Option<Vec<MedicinalProductPharmaceuticalCharacteristics>>,
17591    #[cardinality(min = 1usize)]
17592    #[doc = "The path by which the pharmaceutical product is taken into or makes contact with the body."]
17593    pub routeOfAdministration: Vec<MedicinalProductPharmaceuticalRouteOfAdministration>,
17594}
17595#[derive(
17596    Clone,
17597    Reflect,
17598    Debug,
17599    Default,
17600    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
17601    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
17602)]
17603#[fhir_serialize_type = "resource"]
17604#[doc = "Describe the undesirable effects of the medicinal product."]
17605pub struct MedicinalProductUndesirableEffect {
17606    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
17607    pub id: Option<String>,
17608    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
17609    pub meta: Option<Box<Meta>>,
17610    #[primitive]
17611    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
17612    pub implicitRules: Option<Box<FHIRUri>>,
17613    #[primitive]
17614    #[doc = "The base language in which the resource is written."]
17615    pub language: Option<Box<FHIRCode>>,
17616    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
17617    pub text: Option<Box<Narrative>>,
17618    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
17619    pub contained: Option<Vec<Box<Resource>>>,
17620    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
17621    pub extension: Option<Vec<Box<Extension>>>,
17622    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
17623    pub modifierExtension: Option<Vec<Box<Extension>>>,
17624    # [reference (targets = ["MedicinalProduct" , "Medication"])]
17625    #[doc = "The medication for which this is an indication."]
17626    pub subject: Option<Vec<Box<Reference>>>,
17627    #[doc = "The symptom, condition or undesirable effect."]
17628    pub symptomConditionEffect: Option<Box<CodeableConcept>>,
17629    #[doc = "Classification of the effect."]
17630    pub classification: Option<Box<CodeableConcept>>,
17631    #[doc = "The frequency of occurrence of the effect."]
17632    pub frequencyOfOccurrence: Option<Box<CodeableConcept>>,
17633    #[doc = "The population group to which this applies."]
17634    pub population: Option<Vec<Box<Population>>>,
17635}
17636#[derive(
17637    Clone,
17638    Reflect,
17639    Debug,
17640    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
17641    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
17642)]
17643#[fhir_serialize_type = "typechoice"]
17644#[type_choice_field_name = "event"]
17645pub enum MessageDefinitionEventTypeChoice {
17646    Coding(Box<Coding>),
17647    Uri(Box<FHIRUri>),
17648}
17649impl Default for MessageDefinitionEventTypeChoice {
17650    fn default() -> Self {
17651        MessageDefinitionEventTypeChoice::Coding(Box::new(Default::default()))
17652    }
17653}
17654#[derive(
17655    Clone,
17656    Reflect,
17657    Debug,
17658    Default,
17659    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
17660    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
17661)]
17662#[fhir_serialize_type = "complex"]
17663#[doc = "Identifies the resource (or resources) that are being addressed by the event.  For example, the Encounter for an admit message or two Account records for a merge."]
17664pub struct MessageDefinitionFocus {
17665    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
17666    pub id: Option<String>,
17667    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
17668    pub extension: Option<Vec<Box<Extension>>>,
17669    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
17670    pub modifierExtension: Option<Vec<Box<Extension>>>,
17671    #[primitive]
17672    #[doc = "The kind of resource that must be the focus for this message."]
17673    pub code: Box<terminology::ResourceTypes>,
17674    #[primitive]
17675    #[doc = "A profile that reflects constraints for the focal resource (and potentially for related resources)."]
17676    pub profile: Option<Box<FHIRCanonical>>,
17677    #[primitive]
17678    #[doc = "Identifies the minimum number of resources of this type that must be pointed to by a message in order for it to be valid against this MessageDefinition."]
17679    pub min: Box<FHIRUnsignedInt>,
17680    #[primitive]
17681    #[doc = "Identifies the maximum number of resources of this type that must be pointed to by a message in order for it to be valid against this MessageDefinition."]
17682    pub max: Option<Box<FHIRString>>,
17683}
17684#[derive(
17685    Clone,
17686    Reflect,
17687    Debug,
17688    Default,
17689    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
17690    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
17691)]
17692#[fhir_serialize_type = "complex"]
17693#[doc = "Indicates what types of messages may be sent as an application-level response to this message."]
17694pub struct MessageDefinitionAllowedResponse {
17695    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
17696    pub id: Option<String>,
17697    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
17698    pub extension: Option<Vec<Box<Extension>>>,
17699    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
17700    pub modifierExtension: Option<Vec<Box<Extension>>>,
17701    #[primitive]
17702    #[doc = "A reference to the message definition that must be adhered to by this supported response."]
17703    pub message: Box<FHIRCanonical>,
17704    #[primitive]
17705    #[doc = "Provides a description of the circumstances in which this response should be used (as opposed to one of the alternative responses)."]
17706    pub situation: Option<Box<FHIRMarkdown>>,
17707}
17708#[derive(
17709    Clone,
17710    Reflect,
17711    Debug,
17712    Default,
17713    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
17714    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
17715)]
17716#[fhir_serialize_type = "resource"]
17717#[doc = "Defines the characteristics of a message that can be shared between systems, including the type of event that initiates the message, the content to be transmitted and what response(s), if any, are permitted."]
17718pub struct MessageDefinition {
17719    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
17720    pub id: Option<String>,
17721    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
17722    pub meta: Option<Box<Meta>>,
17723    #[primitive]
17724    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
17725    pub implicitRules: Option<Box<FHIRUri>>,
17726    #[primitive]
17727    #[doc = "The base language in which the resource is written."]
17728    pub language: Option<Box<FHIRCode>>,
17729    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
17730    pub text: Option<Box<Narrative>>,
17731    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
17732    pub contained: Option<Vec<Box<Resource>>>,
17733    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
17734    pub extension: Option<Vec<Box<Extension>>>,
17735    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
17736    pub modifierExtension: Option<Vec<Box<Extension>>>,
17737    #[primitive]
17738    #[doc = "The business identifier that is used to reference the MessageDefinition and *is* expected to be consistent from server to server."]
17739    pub url: Option<Box<FHIRUri>>,
17740    #[rename_field = "identifier"]
17741    #[doc = "A formal identifier that is used to identify this message definition when it is represented in other formats, or referenced in a specification, model, design or an instance."]
17742    pub identifier_: Option<Vec<Box<Identifier>>>,
17743    #[primitive]
17744    #[doc = "The identifier that is used to identify this version of the message definition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the message definition author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence."]
17745    pub version: Option<Box<FHIRString>>,
17746    #[primitive]
17747    #[doc = "A natural language name identifying the message definition. This name should be usable as an identifier for the module by machine processing applications such as code generation."]
17748    pub name: Option<Box<FHIRString>>,
17749    #[primitive]
17750    #[doc = "A short, descriptive, user-friendly title for the message definition."]
17751    pub title: Option<Box<FHIRString>>,
17752    #[primitive]
17753    #[doc = "A MessageDefinition that is superseded by this definition."]
17754    pub replaces: Option<Vec<Box<FHIRCanonical>>>,
17755    #[primitive]
17756    #[doc = "The status of this message definition. Enables tracking the life-cycle of the content."]
17757    pub status: Box<terminology::PublicationStatus>,
17758    #[primitive]
17759    #[doc = "A Boolean value to indicate that this message definition is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage."]
17760    pub experimental: Option<Box<FHIRBoolean>>,
17761    #[primitive]
17762    #[doc = "The date  (and optionally time) when the message definition was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the message definition changes."]
17763    pub date: Box<FHIRDateTime>,
17764    #[primitive]
17765    #[doc = "The name of the organization or individual that published the message definition."]
17766    pub publisher: Option<Box<FHIRString>>,
17767    #[doc = "Contact details to assist a user in finding and communicating with the publisher."]
17768    pub contact: Option<Vec<Box<ContactDetail>>>,
17769    #[primitive]
17770    #[doc = "A free text natural language description of the message definition from a consumer's perspective."]
17771    pub description: Option<Box<FHIRMarkdown>>,
17772    #[doc = "The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate message definition instances."]
17773    pub useContext: Option<Vec<Box<UsageContext>>>,
17774    #[doc = "A legal or geographic region in which the message definition is intended to be used."]
17775    pub jurisdiction: Option<Vec<Box<CodeableConcept>>>,
17776    #[primitive]
17777    #[doc = "Explanation of why this message definition is needed and why it has been designed as it has."]
17778    pub purpose: Option<Box<FHIRMarkdown>>,
17779    #[primitive]
17780    #[doc = "A copyright statement relating to the message definition and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the message definition."]
17781    pub copyright: Option<Box<FHIRMarkdown>>,
17782    #[primitive]
17783    #[doc = "The MessageDefinition that is the basis for the contents of this resource."]
17784    pub base: Option<Box<FHIRCanonical>>,
17785    #[primitive]
17786    #[doc = "Identifies a protocol or workflow that this MessageDefinition represents a step in."]
17787    pub parent: Option<Vec<Box<FHIRCanonical>>>,
17788    # [type_choice_variants (complex = ["eventCoding"] , primitive = ["eventUri"])]
17789    #[doc = "Event code or link to the EventDefinition."]
17790    pub event: MessageDefinitionEventTypeChoice,
17791    #[primitive]
17792    #[doc = "The impact of the content of the message."]
17793    pub category: Option<Box<terminology::MessageSignificanceCategory>>,
17794    #[doc = "Identifies the resource (or resources) that are being addressed by the event.  For example, the Encounter for an admit message or two Account records for a merge."]
17795    pub focus: Option<Vec<MessageDefinitionFocus>>,
17796    #[primitive]
17797    #[doc = "Declare at a message definition level whether a response is required or only upon error or success, or never."]
17798    pub responseRequired: Option<Box<terminology::MessageheaderResponseRequest>>,
17799    #[doc = "Indicates what types of messages may be sent as an application-level response to this message."]
17800    pub allowedResponse: Option<Vec<MessageDefinitionAllowedResponse>>,
17801    #[primitive]
17802    #[doc = "Canonical reference to a GraphDefinition. If a URL is provided, it is the canonical reference to a [GraphDefinition](graphdefinition.html) that it controls what resources are to be added to the bundle when building the document. The GraphDefinition can also specify profiles that apply to the various resources."]
17803    pub graph: Option<Vec<Box<FHIRCanonical>>>,
17804}
17805#[derive(
17806    Clone,
17807    Reflect,
17808    Debug,
17809    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
17810    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
17811)]
17812#[fhir_serialize_type = "typechoice"]
17813#[type_choice_field_name = "event"]
17814pub enum MessageHeaderEventTypeChoice {
17815    Coding(Box<Coding>),
17816    Uri(Box<FHIRUri>),
17817}
17818impl Default for MessageHeaderEventTypeChoice {
17819    fn default() -> Self {
17820        MessageHeaderEventTypeChoice::Coding(Box::new(Default::default()))
17821    }
17822}
17823#[derive(
17824    Clone,
17825    Reflect,
17826    Debug,
17827    Default,
17828    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
17829    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
17830)]
17831#[fhir_serialize_type = "complex"]
17832#[doc = "The destination application which the message is intended for."]
17833pub struct MessageHeaderDestination {
17834    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
17835    pub id: Option<String>,
17836    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
17837    pub extension: Option<Vec<Box<Extension>>>,
17838    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
17839    pub modifierExtension: Option<Vec<Box<Extension>>>,
17840    #[primitive]
17841    #[doc = "Human-readable name for the target system."]
17842    pub name: Option<Box<FHIRString>>,
17843    # [reference (targets = ["Device"])]
17844    #[doc = "Identifies the target end system in situations where the initial message transmission is to an intermediary system."]
17845    pub target: Option<Box<Reference>>,
17846    #[primitive]
17847    #[doc = "Indicates where the message should be routed to."]
17848    pub endpoint: Box<FHIRUrl>,
17849    # [reference (targets = ["Practitioner" , "PractitionerRole" , "Organization"])]
17850    #[doc = "Allows data conveyed by a message to be addressed to a particular person or department when routing to a specific application isn't sufficient."]
17851    pub receiver: Option<Box<Reference>>,
17852}
17853#[derive(
17854    Clone,
17855    Reflect,
17856    Debug,
17857    Default,
17858    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
17859    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
17860)]
17861#[fhir_serialize_type = "complex"]
17862#[doc = "The source application from which this message originated."]
17863pub struct MessageHeaderSource {
17864    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
17865    pub id: Option<String>,
17866    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
17867    pub extension: Option<Vec<Box<Extension>>>,
17868    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
17869    pub modifierExtension: Option<Vec<Box<Extension>>>,
17870    #[primitive]
17871    #[doc = "Human-readable name for the source system."]
17872    pub name: Option<Box<FHIRString>>,
17873    #[primitive]
17874    #[doc = "May include configuration or other information useful in debugging."]
17875    pub software: Option<Box<FHIRString>>,
17876    #[primitive]
17877    #[doc = "Can convey versions of multiple systems in situations where a message passes through multiple hands."]
17878    pub version: Option<Box<FHIRString>>,
17879    #[doc = "An e-mail, phone, website or other contact point to use to resolve issues with message communications."]
17880    pub contact: Option<Box<ContactPoint>>,
17881    #[primitive]
17882    #[doc = "Identifies the routing target to send acknowledgements to."]
17883    pub endpoint: Box<FHIRUrl>,
17884}
17885#[derive(
17886    Clone,
17887    Reflect,
17888    Debug,
17889    Default,
17890    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
17891    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
17892)]
17893#[fhir_serialize_type = "complex"]
17894#[doc = "Information about the message that this message is a response to.  Only present if this message is a response."]
17895pub struct MessageHeaderResponse {
17896    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
17897    pub id: Option<String>,
17898    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
17899    pub extension: Option<Vec<Box<Extension>>>,
17900    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
17901    pub modifierExtension: Option<Vec<Box<Extension>>>,
17902    #[rename_field = "identifier"]
17903    #[primitive]
17904    #[doc = "The MessageHeader.id of the message to which this message is a response."]
17905    pub identifier_: Box<FHIRId>,
17906    #[primitive]
17907    #[doc = "Code that identifies the type of response to the message - whether it was successful or not, and whether it should be resent or not."]
17908    pub code: Box<terminology::ResponseCode>,
17909    # [reference (targets = ["OperationOutcome"])]
17910    #[doc = "Full details of any issues found in the message."]
17911    pub details: Option<Box<Reference>>,
17912}
17913#[derive(
17914    Clone,
17915    Reflect,
17916    Debug,
17917    Default,
17918    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
17919    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
17920)]
17921#[fhir_serialize_type = "resource"]
17922#[doc = "The header for a message exchange that is either requesting or responding to an action.  The reference(s) that are the subject of the action as well as other information related to the action are typically transmitted in a bundle in which the MessageHeader resource instance is the first resource in the bundle."]
17923pub struct MessageHeader {
17924    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
17925    pub id: Option<String>,
17926    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
17927    pub meta: Option<Box<Meta>>,
17928    #[primitive]
17929    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
17930    pub implicitRules: Option<Box<FHIRUri>>,
17931    #[primitive]
17932    #[doc = "The base language in which the resource is written."]
17933    pub language: Option<Box<FHIRCode>>,
17934    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
17935    pub text: Option<Box<Narrative>>,
17936    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
17937    pub contained: Option<Vec<Box<Resource>>>,
17938    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
17939    pub extension: Option<Vec<Box<Extension>>>,
17940    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
17941    pub modifierExtension: Option<Vec<Box<Extension>>>,
17942    # [type_choice_variants (complex = ["eventCoding"] , primitive = ["eventUri"])]
17943    #[doc = "Code that identifies the event this message represents and connects it with its definition. Events defined as part of the FHIR specification have the system value \"http://terminology.hl7.org/CodeSystem/message-events\".  Alternatively uri to the EventDefinition."]
17944    pub event: MessageHeaderEventTypeChoice,
17945    #[doc = "The destination application which the message is intended for."]
17946    pub destination: Option<Vec<MessageHeaderDestination>>,
17947    # [reference (targets = ["Practitioner" , "PractitionerRole" , "Organization"])]
17948    #[doc = "Identifies the sending system to allow the use of a trust relationship."]
17949    pub sender: Option<Box<Reference>>,
17950    # [reference (targets = ["Practitioner" , "PractitionerRole"])]
17951    #[doc = "The person or device that performed the data entry leading to this message. When there is more than one candidate, pick the most proximal to the message. Can provide other enterers in extensions."]
17952    pub enterer: Option<Box<Reference>>,
17953    # [reference (targets = ["Practitioner" , "PractitionerRole"])]
17954    #[doc = "The logical author of the message - the person or device that decided the described event should happen. When there is more than one candidate, pick the most proximal to the MessageHeader. Can provide other authors in extensions."]
17955    pub author: Option<Box<Reference>>,
17956    #[doc = "The source application from which this message originated."]
17957    pub source: MessageHeaderSource,
17958    # [reference (targets = ["Practitioner" , "PractitionerRole" , "Organization"])]
17959    #[doc = "The person or organization that accepts overall responsibility for the contents of the message. The implication is that the message event happened under the policies of the responsible party."]
17960    pub responsible: Option<Box<Reference>>,
17961    #[doc = "Coded indication of the cause for the event - indicates  a reason for the occurrence of the event that is a focus of this message."]
17962    pub reason: Option<Box<CodeableConcept>>,
17963    #[doc = "Information about the message that this message is a response to.  Only present if this message is a response."]
17964    pub response: Option<MessageHeaderResponse>,
17965    # [reference (targets = ["Resource"])]
17966    #[doc = "The actual data of the message - a reference to the root/focus class of the event."]
17967    pub focus: Option<Vec<Box<Reference>>>,
17968    #[primitive]
17969    #[doc = "Permanent link to the MessageDefinition for this message."]
17970    pub definition: Option<Box<FHIRCanonical>>,
17971}
17972#[derive(
17973    Clone,
17974    Reflect,
17975    Debug,
17976    Default,
17977    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
17978    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
17979)]
17980#[fhir_serialize_type = "complex"]
17981#[doc = "A sequence that is used as a reference to describe variants that are present in a sequence analyzed."]
17982pub struct MolecularSequenceReferenceSeq {
17983    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
17984    pub id: Option<String>,
17985    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
17986    pub extension: Option<Vec<Box<Extension>>>,
17987    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
17988    pub modifierExtension: Option<Vec<Box<Extension>>>,
17989    #[doc = "Structural unit composed of a nucleic acid molecule which controls its own replication through the interaction of specific proteins at one or more origins of replication ([SO:0000340](http://www.sequenceontology.org/browser/current_svn/term/SO:0000340))."]
17990    pub chromosome: Option<Box<CodeableConcept>>,
17991    #[primitive]
17992    #[doc = "The Genome Build used for reference, following GRCh build versions e.g. 'GRCh 37'.  Version number must be included if a versioned release of a primary build was used."]
17993    pub genomeBuild: Option<Box<FHIRString>>,
17994    #[primitive]
17995    #[doc = "A relative reference to a DNA strand based on gene orientation. The strand that contains the open reading frame of the gene is the \"sense\" strand, and the opposite complementary strand is the \"antisense\" strand."]
17996    pub orientation: Option<Box<terminology::OrientationType>>,
17997    #[doc = "Reference identifier of reference sequence submitted to NCBI. It must match the type in the MolecularSequence.type field. For example, the prefix, “NG_” identifies reference sequence for genes, “NM_” for messenger RNA transcripts, and “NP_” for amino acid sequences."]
17998    pub referenceSeqId: Option<Box<CodeableConcept>>,
17999    # [reference (targets = ["MolecularSequence"])]
18000    #[doc = "A pointer to another MolecularSequence entity as reference sequence."]
18001    pub referenceSeqPointer: Option<Box<Reference>>,
18002    #[primitive]
18003    #[doc = "A string like \"ACGT\"."]
18004    pub referenceSeqString: Option<Box<FHIRString>>,
18005    #[primitive]
18006    #[doc = "An absolute reference to a strand. The Watson strand is the strand whose 5'-end is on the short arm of the chromosome, and the Crick strand as the one whose 5'-end is on the long arm."]
18007    pub strand: Option<Box<terminology::StrandType>>,
18008    #[primitive]
18009    #[doc = "Start position of the window on the reference sequence. If the coordinate system is either 0-based or 1-based, then start position is inclusive."]
18010    pub windowStart: Option<Box<FHIRInteger>>,
18011    #[primitive]
18012    #[doc = "End position of the window on the reference sequence. If the coordinate system is 0-based then end is exclusive and does not include the last position. If the coordinate system is 1-base, then end is inclusive and includes the last position."]
18013    pub windowEnd: Option<Box<FHIRInteger>>,
18014}
18015#[derive(
18016    Clone,
18017    Reflect,
18018    Debug,
18019    Default,
18020    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
18021    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
18022)]
18023#[fhir_serialize_type = "complex"]
18024#[doc = "The definition of variant here originates from Sequence ontology ([variant_of](http://www.sequenceontology.org/browser/current_svn/term/variant_of)). This element can represent amino acid or nucleic sequence change(including insertion,deletion,SNP,etc.)  It can represent some complex mutation or segment variation with the assist of CIGAR string."]
18025pub struct MolecularSequenceVariant {
18026    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
18027    pub id: Option<String>,
18028    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
18029    pub extension: Option<Vec<Box<Extension>>>,
18030    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
18031    pub modifierExtension: Option<Vec<Box<Extension>>>,
18032    #[primitive]
18033    #[doc = "Start position of the variant on the  reference sequence. If the coordinate system is either 0-based or 1-based, then start position is inclusive."]
18034    pub start: Option<Box<FHIRInteger>>,
18035    #[primitive]
18036    #[doc = "End position of the variant on the reference sequence. If the coordinate system is 0-based then end is exclusive and does not include the last position. If the coordinate system is 1-base, then end is inclusive and includes the last position."]
18037    pub end: Option<Box<FHIRInteger>>,
18038    #[primitive]
18039    #[doc = "An allele is one of a set of coexisting sequence variants of a gene ([SO:0001023](http://www.sequenceontology.org/browser/current_svn/term/SO:0001023)).  Nucleotide(s)/amino acids from start position of sequence to stop position of sequence on the positive (+) strand of the observed  sequence. When the sequence  type is DNA, it should be the sequence on the positive (+) strand. This will lay in the range between variant.start and variant.end."]
18040    pub observedAllele: Option<Box<FHIRString>>,
18041    #[primitive]
18042    #[doc = "An allele is one of a set of coexisting sequence variants of a gene ([SO:0001023](http://www.sequenceontology.org/browser/current_svn/term/SO:0001023)). Nucleotide(s)/amino acids from start position of sequence to stop position of sequence on the positive (+) strand of the reference sequence. When the sequence  type is DNA, it should be the sequence on the positive (+) strand. This will lay in the range between variant.start and variant.end."]
18043    pub referenceAllele: Option<Box<FHIRString>>,
18044    #[primitive]
18045    #[doc = "Extended CIGAR string for aligning the sequence with reference bases. See detailed documentation [here](http://support.illumina.com/help/SequencingAnalysisWorkflow/Content/Vault/Informatics/Sequencing_Analysis/CASAVA/swSEQ_mCA_ExtendedCIGARFormat.htm)."]
18046    pub cigar: Option<Box<FHIRString>>,
18047    # [reference (targets = ["Observation"])]
18048    #[doc = "A pointer to an Observation containing variant information."]
18049    pub variantPointer: Option<Box<Reference>>,
18050}
18051#[derive(
18052    Clone,
18053    Reflect,
18054    Debug,
18055    Default,
18056    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
18057    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
18058)]
18059#[fhir_serialize_type = "complex"]
18060#[doc = "Receiver Operator Characteristic (ROC) Curve  to give sensitivity/specificity tradeoff."]
18061pub struct MolecularSequenceQualityRoc {
18062    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
18063    pub id: Option<String>,
18064    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
18065    pub extension: Option<Vec<Box<Extension>>>,
18066    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
18067    pub modifierExtension: Option<Vec<Box<Extension>>>,
18068    #[primitive]
18069    #[doc = "Invidual data point representing the GQ (genotype quality) score threshold."]
18070    pub score: Option<Vec<Box<FHIRInteger>>>,
18071    #[primitive]
18072    #[doc = "The number of true positives if the GQ score threshold was set to \"score\" field value."]
18073    pub numTP: Option<Vec<Box<FHIRInteger>>>,
18074    #[primitive]
18075    #[doc = "The number of false positives if the GQ score threshold was set to \"score\" field value."]
18076    pub numFP: Option<Vec<Box<FHIRInteger>>>,
18077    #[primitive]
18078    #[doc = "The number of false negatives if the GQ score threshold was set to \"score\" field value."]
18079    pub numFN: Option<Vec<Box<FHIRInteger>>>,
18080    #[primitive]
18081    #[doc = "Calculated precision if the GQ score threshold was set to \"score\" field value."]
18082    pub precision: Option<Vec<Box<FHIRDecimal>>>,
18083    #[primitive]
18084    #[doc = "Calculated sensitivity if the GQ score threshold was set to \"score\" field value."]
18085    pub sensitivity: Option<Vec<Box<FHIRDecimal>>>,
18086    #[primitive]
18087    #[doc = "Calculated fScore if the GQ score threshold was set to \"score\" field value."]
18088    pub fMeasure: Option<Vec<Box<FHIRDecimal>>>,
18089}
18090#[derive(
18091    Clone,
18092    Reflect,
18093    Debug,
18094    Default,
18095    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
18096    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
18097)]
18098#[fhir_serialize_type = "complex"]
18099#[doc = "An experimental feature attribute that defines the quality of the feature in a quantitative way, such as a phred quality score ([SO:0001686](http://www.sequenceontology.org/browser/current_svn/term/SO:0001686))."]
18100pub struct MolecularSequenceQuality {
18101    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
18102    pub id: Option<String>,
18103    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
18104    pub extension: Option<Vec<Box<Extension>>>,
18105    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
18106    pub modifierExtension: Option<Vec<Box<Extension>>>,
18107    #[rename_field = "type"]
18108    #[primitive]
18109    #[doc = "INDEL / SNP / Undefined variant."]
18110    pub type_: Box<terminology::QualityType>,
18111    #[doc = "Gold standard sequence used for comparing against."]
18112    pub standardSequence: Option<Box<CodeableConcept>>,
18113    #[primitive]
18114    #[doc = "Start position of the sequence. If the coordinate system is either 0-based or 1-based, then start position is inclusive."]
18115    pub start: Option<Box<FHIRInteger>>,
18116    #[primitive]
18117    #[doc = "End position of the sequence. If the coordinate system is 0-based then end is exclusive and does not include the last position. If the coordinate system is 1-base, then end is inclusive and includes the last position."]
18118    pub end: Option<Box<FHIRInteger>>,
18119    #[doc = "The score of an experimentally derived feature such as a p-value ([SO:0001685](http://www.sequenceontology.org/browser/current_svn/term/SO:0001685))."]
18120    pub score: Option<Box<Quantity>>,
18121    #[doc = "Which method is used to get sequence quality."]
18122    pub method: Option<Box<CodeableConcept>>,
18123    #[primitive]
18124    #[doc = "True positives, from the perspective of the truth data, i.e. the number of sites in the Truth Call Set for which there are paths through the Query Call Set that are consistent with all of the alleles at this site, and for which there is an accurate genotype call for the event."]
18125    pub truthTP: Option<Box<FHIRDecimal>>,
18126    #[primitive]
18127    #[doc = "True positives, from the perspective of the query data, i.e. the number of sites in the Query Call Set for which there are paths through the Truth Call Set that are consistent with all of the alleles at this site, and for which there is an accurate genotype call for the event."]
18128    pub queryTP: Option<Box<FHIRDecimal>>,
18129    #[primitive]
18130    #[doc = "False negatives, i.e. the number of sites in the Truth Call Set for which there is no path through the Query Call Set that is consistent with all of the alleles at this site, or sites for which there is an inaccurate genotype call for the event. Sites with correct variant but incorrect genotype are counted here."]
18131    pub truthFN: Option<Box<FHIRDecimal>>,
18132    #[primitive]
18133    #[doc = "False positives, i.e. the number of sites in the Query Call Set for which there is no path through the Truth Call Set that is consistent with this site. Sites with correct variant but incorrect genotype are counted here."]
18134    pub queryFP: Option<Box<FHIRDecimal>>,
18135    #[primitive]
18136    #[doc = "The number of false positives where the non-REF alleles in the Truth and Query Call Sets match (i.e. cases where the truth is 1/1 and the query is 0/1 or similar)."]
18137    pub gtFP: Option<Box<FHIRDecimal>>,
18138    #[primitive]
18139    #[doc = "QUERY.TP / (QUERY.TP + QUERY.FP)."]
18140    pub precision: Option<Box<FHIRDecimal>>,
18141    #[primitive]
18142    #[doc = "TRUTH.TP / (TRUTH.TP + TRUTH.FN)."]
18143    pub recall: Option<Box<FHIRDecimal>>,
18144    #[primitive]
18145    #[doc = "Harmonic mean of Recall and Precision, computed as: 2 * precision * recall / (precision + recall)."]
18146    pub fScore: Option<Box<FHIRDecimal>>,
18147    #[doc = "Receiver Operator Characteristic (ROC) Curve  to give sensitivity/specificity tradeoff."]
18148    pub roc: Option<MolecularSequenceQualityRoc>,
18149}
18150#[derive(
18151    Clone,
18152    Reflect,
18153    Debug,
18154    Default,
18155    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
18156    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
18157)]
18158#[fhir_serialize_type = "complex"]
18159#[doc = "Configurations of the external repository. The repository shall store target's observedSeq or records related with target's observedSeq."]
18160pub struct MolecularSequenceRepository {
18161    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
18162    pub id: Option<String>,
18163    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
18164    pub extension: Option<Vec<Box<Extension>>>,
18165    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
18166    pub modifierExtension: Option<Vec<Box<Extension>>>,
18167    #[rename_field = "type"]
18168    #[primitive]
18169    #[doc = "Click and see / RESTful API / Need login to see / RESTful API with authentication / Other ways to see resource."]
18170    pub type_: Box<terminology::RepositoryType>,
18171    #[primitive]
18172    #[doc = "URI of an external repository which contains further details about the genetics data."]
18173    pub url: Option<Box<FHIRUri>>,
18174    #[primitive]
18175    #[doc = "URI of an external repository which contains further details about the genetics data."]
18176    pub name: Option<Box<FHIRString>>,
18177    #[primitive]
18178    #[doc = "Id of the variant in this external repository. The server will understand how to use this id to call for more info about datasets in external repository."]
18179    pub datasetId: Option<Box<FHIRString>>,
18180    #[primitive]
18181    #[doc = "Id of the variantset in this external repository. The server will understand how to use this id to call for more info about variantsets in external repository."]
18182    pub variantsetId: Option<Box<FHIRString>>,
18183    #[primitive]
18184    #[doc = "Id of the read in this external repository."]
18185    pub readsetId: Option<Box<FHIRString>>,
18186}
18187#[derive(
18188    Clone,
18189    Reflect,
18190    Debug,
18191    Default,
18192    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
18193    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
18194)]
18195#[fhir_serialize_type = "complex"]
18196#[doc = "Structural variant outer."]
18197pub struct MolecularSequenceStructureVariantOuter {
18198    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
18199    pub id: Option<String>,
18200    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
18201    pub extension: Option<Vec<Box<Extension>>>,
18202    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
18203    pub modifierExtension: Option<Vec<Box<Extension>>>,
18204    #[primitive]
18205    #[doc = "Structural variant outer start. If the coordinate system is either 0-based or 1-based, then start position is inclusive."]
18206    pub start: Option<Box<FHIRInteger>>,
18207    #[primitive]
18208    #[doc = "Structural variant outer end. If the coordinate system is 0-based then end is exclusive and does not include the last position. If the coordinate system is 1-base, then end is inclusive and includes the last position."]
18209    pub end: Option<Box<FHIRInteger>>,
18210}
18211#[derive(
18212    Clone,
18213    Reflect,
18214    Debug,
18215    Default,
18216    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
18217    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
18218)]
18219#[fhir_serialize_type = "complex"]
18220#[doc = "Structural variant inner."]
18221pub struct MolecularSequenceStructureVariantInner {
18222    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
18223    pub id: Option<String>,
18224    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
18225    pub extension: Option<Vec<Box<Extension>>>,
18226    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
18227    pub modifierExtension: Option<Vec<Box<Extension>>>,
18228    #[primitive]
18229    #[doc = "Structural variant inner start. If the coordinate system is either 0-based or 1-based, then start position is inclusive."]
18230    pub start: Option<Box<FHIRInteger>>,
18231    #[primitive]
18232    #[doc = "Structural variant inner end. If the coordinate system is 0-based then end is exclusive and does not include the last position. If the coordinate system is 1-base, then end is inclusive and includes the last position."]
18233    pub end: Option<Box<FHIRInteger>>,
18234}
18235#[derive(
18236    Clone,
18237    Reflect,
18238    Debug,
18239    Default,
18240    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
18241    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
18242)]
18243#[fhir_serialize_type = "complex"]
18244#[doc = "Information about chromosome structure variation."]
18245pub struct MolecularSequenceStructureVariant {
18246    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
18247    pub id: Option<String>,
18248    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
18249    pub extension: Option<Vec<Box<Extension>>>,
18250    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
18251    pub modifierExtension: Option<Vec<Box<Extension>>>,
18252    #[doc = "Information about chromosome structure variation DNA change type."]
18253    pub variantType: Option<Box<CodeableConcept>>,
18254    #[primitive]
18255    #[doc = "Used to indicate if the outer and inner start-end values have the same meaning."]
18256    pub exact: Option<Box<FHIRBoolean>>,
18257    #[primitive]
18258    #[doc = "Length of the variant chromosome."]
18259    pub length: Option<Box<FHIRInteger>>,
18260    #[doc = "Structural variant outer."]
18261    pub outer: Option<MolecularSequenceStructureVariantOuter>,
18262    #[doc = "Structural variant inner."]
18263    pub inner: Option<MolecularSequenceStructureVariantInner>,
18264}
18265#[derive(
18266    Clone,
18267    Reflect,
18268    Debug,
18269    Default,
18270    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
18271    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
18272)]
18273#[fhir_serialize_type = "resource"]
18274#[doc = "Raw data describing a biological sequence."]
18275pub struct MolecularSequence {
18276    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
18277    pub id: Option<String>,
18278    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
18279    pub meta: Option<Box<Meta>>,
18280    #[primitive]
18281    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
18282    pub implicitRules: Option<Box<FHIRUri>>,
18283    #[primitive]
18284    #[doc = "The base language in which the resource is written."]
18285    pub language: Option<Box<FHIRCode>>,
18286    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
18287    pub text: Option<Box<Narrative>>,
18288    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
18289    pub contained: Option<Vec<Box<Resource>>>,
18290    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
18291    pub extension: Option<Vec<Box<Extension>>>,
18292    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
18293    pub modifierExtension: Option<Vec<Box<Extension>>>,
18294    #[rename_field = "identifier"]
18295    #[doc = "A unique identifier for this particular sequence instance. This is a FHIR-defined id."]
18296    pub identifier_: Option<Vec<Box<Identifier>>>,
18297    #[rename_field = "type"]
18298    #[primitive]
18299    #[doc = "Amino Acid Sequence/ DNA Sequence / RNA Sequence."]
18300    pub type_: Option<Box<terminology::SequenceType>>,
18301    #[primitive]
18302    #[doc = "Whether the sequence is numbered starting at 0 (0-based numbering or coordinates, inclusive start, exclusive end) or starting at 1 (1-based numbering, inclusive start and inclusive end)."]
18303    pub coordinateSystem: Box<FHIRInteger>,
18304    # [reference (targets = ["Patient"])]
18305    #[doc = "The patient whose sequencing results are described by this resource."]
18306    pub patient: Option<Box<Reference>>,
18307    # [reference (targets = ["Specimen"])]
18308    #[doc = "Specimen used for sequencing."]
18309    pub specimen: Option<Box<Reference>>,
18310    # [reference (targets = ["Device"])]
18311    #[doc = "The method for sequencing, for example, chip information."]
18312    pub device: Option<Box<Reference>>,
18313    # [reference (targets = ["Organization"])]
18314    #[doc = "The organization or lab that should be responsible for this result."]
18315    pub performer: Option<Box<Reference>>,
18316    #[doc = "The number of copies of the sequence of interest. (RNASeq)."]
18317    pub quantity: Option<Box<Quantity>>,
18318    #[doc = "A sequence that is used as a reference to describe variants that are present in a sequence analyzed."]
18319    pub referenceSeq: Option<MolecularSequenceReferenceSeq>,
18320    #[doc = "The definition of variant here originates from Sequence ontology ([variant_of](http://www.sequenceontology.org/browser/current_svn/term/variant_of)). This element can represent amino acid or nucleic sequence change(including insertion,deletion,SNP,etc.)  It can represent some complex mutation or segment variation with the assist of CIGAR string."]
18321    pub variant: Option<Vec<MolecularSequenceVariant>>,
18322    #[primitive]
18323    #[doc = "Sequence that was observed. It is the result marked by referenceSeq along with variant records on referenceSeq. This shall start from referenceSeq.windowStart and end by referenceSeq.windowEnd."]
18324    pub observedSeq: Option<Box<FHIRString>>,
18325    #[doc = "An experimental feature attribute that defines the quality of the feature in a quantitative way, such as a phred quality score ([SO:0001686](http://www.sequenceontology.org/browser/current_svn/term/SO:0001686))."]
18326    pub quality: Option<Vec<MolecularSequenceQuality>>,
18327    #[primitive]
18328    #[doc = "Coverage (read depth or depth) is the average number of reads representing a given nucleotide in the reconstructed sequence."]
18329    pub readCoverage: Option<Box<FHIRInteger>>,
18330    #[doc = "Configurations of the external repository. The repository shall store target's observedSeq or records related with target's observedSeq."]
18331    pub repository: Option<Vec<MolecularSequenceRepository>>,
18332    # [reference (targets = ["MolecularSequence"])]
18333    #[doc = "Pointer to next atomic sequence which at most contains one variant."]
18334    pub pointer: Option<Vec<Box<Reference>>>,
18335    #[doc = "Information about chromosome structure variation."]
18336    pub structureVariant: Option<Vec<MolecularSequenceStructureVariant>>,
18337}
18338#[derive(
18339    Clone,
18340    Reflect,
18341    Debug,
18342    Default,
18343    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
18344    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
18345)]
18346#[fhir_serialize_type = "complex"]
18347#[doc = "Indicates how the system may be identified when referenced in electronic exchange."]
18348pub struct NamingSystemUniqueId {
18349    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
18350    pub id: Option<String>,
18351    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
18352    pub extension: Option<Vec<Box<Extension>>>,
18353    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
18354    pub modifierExtension: Option<Vec<Box<Extension>>>,
18355    #[rename_field = "type"]
18356    #[primitive]
18357    #[doc = "Identifies the unique identifier scheme used for this particular identifier."]
18358    pub type_: Box<terminology::NamingsystemIdentifierType>,
18359    #[primitive]
18360    #[doc = "The string that should be sent over the wire to identify the code system or identifier system."]
18361    pub value: Box<FHIRString>,
18362    #[primitive]
18363    #[doc = "Indicates whether this identifier is the \"preferred\" identifier of this type."]
18364    pub preferred: Option<Box<FHIRBoolean>>,
18365    #[primitive]
18366    #[doc = "Notes about the past or intended usage of this identifier."]
18367    pub comment: Option<Box<FHIRString>>,
18368    #[doc = "Identifies the period of time over which this identifier is considered appropriate to refer to the naming system.  Outside of this window, the identifier might be non-deterministic."]
18369    pub period: Option<Box<Period>>,
18370}
18371#[derive(
18372    Clone,
18373    Reflect,
18374    Debug,
18375    Default,
18376    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
18377    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
18378)]
18379#[fhir_serialize_type = "resource"]
18380#[doc = "A curated namespace that issues unique symbols within that namespace for the identification of concepts, people, devices, etc.  Represents a \"System\" used within the Identifier and Coding data types."]
18381pub struct NamingSystem {
18382    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
18383    pub id: Option<String>,
18384    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
18385    pub meta: Option<Box<Meta>>,
18386    #[primitive]
18387    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
18388    pub implicitRules: Option<Box<FHIRUri>>,
18389    #[primitive]
18390    #[doc = "The base language in which the resource is written."]
18391    pub language: Option<Box<FHIRCode>>,
18392    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
18393    pub text: Option<Box<Narrative>>,
18394    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
18395    pub contained: Option<Vec<Box<Resource>>>,
18396    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
18397    pub extension: Option<Vec<Box<Extension>>>,
18398    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
18399    pub modifierExtension: Option<Vec<Box<Extension>>>,
18400    #[primitive]
18401    #[doc = "A natural language name identifying the naming system. This name should be usable as an identifier for the module by machine processing applications such as code generation."]
18402    pub name: Box<FHIRString>,
18403    #[primitive]
18404    #[doc = "The status of this naming system. Enables tracking the life-cycle of the content."]
18405    pub status: Box<terminology::PublicationStatus>,
18406    #[primitive]
18407    #[doc = "Indicates the purpose for the naming system - what kinds of things does it make unique?"]
18408    pub kind: Box<terminology::NamingsystemType>,
18409    #[primitive]
18410    #[doc = "The date  (and optionally time) when the naming system was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the naming system changes."]
18411    pub date: Box<FHIRDateTime>,
18412    #[primitive]
18413    #[doc = "The name of the organization or individual that published the naming system."]
18414    pub publisher: Option<Box<FHIRString>>,
18415    #[doc = "Contact details to assist a user in finding and communicating with the publisher."]
18416    pub contact: Option<Vec<Box<ContactDetail>>>,
18417    #[primitive]
18418    #[doc = "The name of the organization that is responsible for issuing identifiers or codes for this namespace and ensuring their non-collision."]
18419    pub responsible: Option<Box<FHIRString>>,
18420    #[rename_field = "type"]
18421    #[doc = "Categorizes a naming system for easier search by grouping related naming systems."]
18422    pub type_: Option<Box<CodeableConcept>>,
18423    #[primitive]
18424    #[doc = "A free text natural language description of the naming system from a consumer's perspective. Details about what the namespace identifies including scope, granularity, version labeling, etc."]
18425    pub description: Option<Box<FHIRMarkdown>>,
18426    #[doc = "The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate naming system instances."]
18427    pub useContext: Option<Vec<Box<UsageContext>>>,
18428    #[doc = "A legal or geographic region in which the naming system is intended to be used."]
18429    pub jurisdiction: Option<Vec<Box<CodeableConcept>>>,
18430    #[primitive]
18431    #[doc = "Provides guidance on the use of the namespace, including the handling of formatting characters, use of upper vs. lower case, etc."]
18432    pub usage: Option<Box<FHIRString>>,
18433    #[cardinality(min = 1usize)]
18434    #[doc = "Indicates how the system may be identified when referenced in electronic exchange."]
18435    pub uniqueId: Vec<NamingSystemUniqueId>,
18436}
18437#[derive(
18438    Clone,
18439    Reflect,
18440    Debug,
18441    Default,
18442    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
18443    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
18444)]
18445#[fhir_serialize_type = "complex"]
18446#[doc = "Class that defines the quantity and type of nutrient modifications (for example carbohydrate, fiber or sodium) required for the oral diet."]
18447pub struct NutritionOrderOralDietNutrient {
18448    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
18449    pub id: Option<String>,
18450    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
18451    pub extension: Option<Vec<Box<Extension>>>,
18452    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
18453    pub modifierExtension: Option<Vec<Box<Extension>>>,
18454    #[doc = "The nutrient that is being modified such as carbohydrate or sodium."]
18455    pub modifier: Option<Box<CodeableConcept>>,
18456    #[doc = "The quantity of the specified nutrient to include in diet."]
18457    pub amount: Option<Box<Quantity>>,
18458}
18459#[derive(
18460    Clone,
18461    Reflect,
18462    Debug,
18463    Default,
18464    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
18465    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
18466)]
18467#[fhir_serialize_type = "complex"]
18468#[doc = "Class that describes any texture modifications required for the patient to safely consume various types of solid foods."]
18469pub struct NutritionOrderOralDietTexture {
18470    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
18471    pub id: Option<String>,
18472    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
18473    pub extension: Option<Vec<Box<Extension>>>,
18474    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
18475    pub modifierExtension: Option<Vec<Box<Extension>>>,
18476    #[doc = "Any texture modifications (for solid foods) that should be made, e.g. easy to chew, chopped, ground, and pureed."]
18477    pub modifier: Option<Box<CodeableConcept>>,
18478    #[doc = "The food type(s) (e.g. meats, all foods)  that the texture modification applies to.  This could be all foods types."]
18479    pub foodType: Option<Box<CodeableConcept>>,
18480}
18481#[derive(
18482    Clone,
18483    Reflect,
18484    Debug,
18485    Default,
18486    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
18487    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
18488)]
18489#[fhir_serialize_type = "complex"]
18490#[doc = "Diet given orally in contrast to enteral (tube) feeding."]
18491pub struct NutritionOrderOralDiet {
18492    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
18493    pub id: Option<String>,
18494    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
18495    pub extension: Option<Vec<Box<Extension>>>,
18496    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
18497    pub modifierExtension: Option<Vec<Box<Extension>>>,
18498    #[rename_field = "type"]
18499    #[doc = "The kind of diet or dietary restriction such as fiber restricted diet or diabetic diet."]
18500    pub type_: Option<Vec<Box<CodeableConcept>>>,
18501    #[doc = "The time period and frequency at which the diet should be given.  The diet should be given for the combination of all schedules if more than one schedule is present."]
18502    pub schedule: Option<Vec<Box<Timing>>>,
18503    #[doc = "Class that defines the quantity and type of nutrient modifications (for example carbohydrate, fiber or sodium) required for the oral diet."]
18504    pub nutrient: Option<Vec<NutritionOrderOralDietNutrient>>,
18505    #[doc = "Class that describes any texture modifications required for the patient to safely consume various types of solid foods."]
18506    pub texture: Option<Vec<NutritionOrderOralDietTexture>>,
18507    #[doc = "The required consistency (e.g. honey-thick, nectar-thick, thin, thickened.) of liquids or fluids served to the patient."]
18508    pub fluidConsistencyType: Option<Vec<Box<CodeableConcept>>>,
18509    #[primitive]
18510    #[doc = "Free text or additional instructions or information pertaining to the oral diet."]
18511    pub instruction: Option<Box<FHIRString>>,
18512}
18513#[derive(
18514    Clone,
18515    Reflect,
18516    Debug,
18517    Default,
18518    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
18519    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
18520)]
18521#[fhir_serialize_type = "complex"]
18522#[doc = "Oral nutritional products given in order to add further nutritional value to the patient's diet."]
18523pub struct NutritionOrderSupplement {
18524    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
18525    pub id: Option<String>,
18526    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
18527    pub extension: Option<Vec<Box<Extension>>>,
18528    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
18529    pub modifierExtension: Option<Vec<Box<Extension>>>,
18530    #[rename_field = "type"]
18531    #[doc = "The kind of nutritional supplement product required such as a high protein or pediatric clear liquid supplement."]
18532    pub type_: Option<Box<CodeableConcept>>,
18533    #[primitive]
18534    #[doc = "The product or brand name of the nutritional supplement such as \"Acme Protein Shake\"."]
18535    pub productName: Option<Box<FHIRString>>,
18536    #[doc = "The time period and frequency at which the supplement(s) should be given.  The supplement should be given for the combination of all schedules if more than one schedule is present."]
18537    pub schedule: Option<Vec<Box<Timing>>>,
18538    #[doc = "The amount of the nutritional supplement to be given."]
18539    pub quantity: Option<Box<Quantity>>,
18540    #[primitive]
18541    #[doc = "Free text or additional instructions or information pertaining to the oral supplement."]
18542    pub instruction: Option<Box<FHIRString>>,
18543}
18544#[derive(
18545    Clone,
18546    Reflect,
18547    Debug,
18548    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
18549    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
18550)]
18551#[fhir_serialize_type = "typechoice"]
18552#[type_choice_field_name = "rate"]
18553pub enum NutritionOrderEnteralFormulaAdministrationRateTypeChoice {
18554    Quantity(Box<Quantity>),
18555    Ratio(Box<Ratio>),
18556}
18557impl Default for NutritionOrderEnteralFormulaAdministrationRateTypeChoice {
18558    fn default() -> Self {
18559        NutritionOrderEnteralFormulaAdministrationRateTypeChoice::Quantity(Box::new(
18560            Default::default(),
18561        ))
18562    }
18563}
18564#[derive(
18565    Clone,
18566    Reflect,
18567    Debug,
18568    Default,
18569    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
18570    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
18571)]
18572#[fhir_serialize_type = "complex"]
18573#[doc = "Formula administration instructions as structured data.  This repeating structure allows for changing the administration rate or volume over time for both bolus and continuous feeding.  An example of this would be an instruction to increase the rate of continuous feeding every 2 hours."]
18574pub struct NutritionOrderEnteralFormulaAdministration {
18575    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
18576    pub id: Option<String>,
18577    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
18578    pub extension: Option<Vec<Box<Extension>>>,
18579    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
18580    pub modifierExtension: Option<Vec<Box<Extension>>>,
18581    #[doc = "The time period and frequency at which the enteral formula should be delivered to the patient."]
18582    pub schedule: Option<Box<Timing>>,
18583    #[doc = "The volume of formula to provide to the patient per the specified administration schedule."]
18584    pub quantity: Option<Box<Quantity>>,
18585    # [type_choice_variants (complex = ["rateQuantity" , "rateRatio"] , primitive = [])]
18586    #[doc = "The rate of administration of formula via a feeding pump, e.g. 60 mL per hour, according to the specified schedule."]
18587    pub rate: Option<NutritionOrderEnteralFormulaAdministrationRateTypeChoice>,
18588}
18589#[derive(
18590    Clone,
18591    Reflect,
18592    Debug,
18593    Default,
18594    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
18595    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
18596)]
18597#[fhir_serialize_type = "complex"]
18598#[doc = "Feeding provided through the gastrointestinal tract via a tube, catheter, or stoma that delivers nutrition distal to the oral cavity."]
18599pub struct NutritionOrderEnteralFormula {
18600    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
18601    pub id: Option<String>,
18602    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
18603    pub extension: Option<Vec<Box<Extension>>>,
18604    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
18605    pub modifierExtension: Option<Vec<Box<Extension>>>,
18606    #[doc = "The type of enteral or infant formula such as an adult standard formula with fiber or a soy-based infant formula."]
18607    pub baseFormulaType: Option<Box<CodeableConcept>>,
18608    #[primitive]
18609    #[doc = "The product or brand name of the enteral or infant formula product such as \"ACME Adult Standard Formula\"."]
18610    pub baseFormulaProductName: Option<Box<FHIRString>>,
18611    #[doc = "Indicates the type of modular component such as protein, carbohydrate, fat or fiber to be provided in addition to or mixed with the base formula."]
18612    pub additiveType: Option<Box<CodeableConcept>>,
18613    #[primitive]
18614    #[doc = "The product or brand name of the type of modular component to be added to the formula."]
18615    pub additiveProductName: Option<Box<FHIRString>>,
18616    #[doc = "The amount of energy (calories) that the formula should provide per specified volume, typically per mL or fluid oz.  For example, an infant may require a formula that provides 24 calories per fluid ounce or an adult may require an enteral formula that provides 1.5 calorie/mL."]
18617    pub caloricDensity: Option<Box<Quantity>>,
18618    #[doc = "The route or physiological path of administration into the patient's gastrointestinal  tract for purposes of providing the formula feeding, e.g. nasogastric tube."]
18619    pub routeofAdministration: Option<Box<CodeableConcept>>,
18620    #[doc = "Formula administration instructions as structured data.  This repeating structure allows for changing the administration rate or volume over time for both bolus and continuous feeding.  An example of this would be an instruction to increase the rate of continuous feeding every 2 hours."]
18621    pub administration: Option<Vec<NutritionOrderEnteralFormulaAdministration>>,
18622    #[doc = "The maximum total quantity of formula that may be administered to a subject over the period of time, e.g. 1440 mL over 24 hours."]
18623    pub maxVolumeToDeliver: Option<Box<Quantity>>,
18624    #[primitive]
18625    #[doc = "Free text formula administration, feeding instructions or additional instructions or information."]
18626    pub administrationInstruction: Option<Box<FHIRString>>,
18627}
18628#[derive(
18629    Clone,
18630    Reflect,
18631    Debug,
18632    Default,
18633    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
18634    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
18635)]
18636#[fhir_serialize_type = "resource"]
18637#[doc = "A request to supply a diet, formula feeding (enteral) or oral nutritional supplement to a patient/resident."]
18638pub struct NutritionOrder {
18639    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
18640    pub id: Option<String>,
18641    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
18642    pub meta: Option<Box<Meta>>,
18643    #[primitive]
18644    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
18645    pub implicitRules: Option<Box<FHIRUri>>,
18646    #[primitive]
18647    #[doc = "The base language in which the resource is written."]
18648    pub language: Option<Box<FHIRCode>>,
18649    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
18650    pub text: Option<Box<Narrative>>,
18651    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
18652    pub contained: Option<Vec<Box<Resource>>>,
18653    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
18654    pub extension: Option<Vec<Box<Extension>>>,
18655    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
18656    pub modifierExtension: Option<Vec<Box<Extension>>>,
18657    #[rename_field = "identifier"]
18658    #[doc = "Identifiers assigned to this order by the order sender or by the order receiver."]
18659    pub identifier_: Option<Vec<Box<Identifier>>>,
18660    #[primitive]
18661    #[doc = "The URL pointing to a FHIR-defined protocol, guideline, orderset or other definition that is adhered to in whole or in part by this NutritionOrder."]
18662    pub instantiatesCanonical: Option<Vec<Box<FHIRCanonical>>>,
18663    #[primitive]
18664    #[doc = "The URL pointing to an externally maintained protocol, guideline, orderset or other definition that is adhered to in whole or in part by this NutritionOrder."]
18665    pub instantiatesUri: Option<Vec<Box<FHIRUri>>>,
18666    #[primitive]
18667    #[doc = "The URL pointing to a protocol, guideline, orderset or other definition that is adhered to in whole or in part by this NutritionOrder."]
18668    pub instantiates: Option<Vec<Box<FHIRUri>>>,
18669    #[primitive]
18670    #[doc = "The workflow status of the nutrition order/request."]
18671    pub status: Box<terminology::RequestStatus>,
18672    #[primitive]
18673    #[doc = "Indicates the level of authority/intentionality associated with the NutrionOrder and where the request fits into the workflow chain."]
18674    pub intent: Box<terminology::RequestIntent>,
18675    # [reference (targets = ["Patient"])]
18676    #[doc = "The person (patient) who needs the nutrition order for an oral diet, nutritional supplement and/or enteral or formula feeding."]
18677    pub patient: Box<Reference>,
18678    # [reference (targets = ["Encounter"])]
18679    #[doc = "An encounter that provides additional information about the healthcare context in which this request is made."]
18680    pub encounter: Option<Box<Reference>>,
18681    #[primitive]
18682    #[doc = "The date and time that this nutrition order was requested."]
18683    pub dateTime: Box<FHIRDateTime>,
18684    # [reference (targets = ["Practitioner" , "PractitionerRole"])]
18685    #[doc = "The practitioner that holds legal responsibility for ordering the diet, nutritional supplement, or formula feedings."]
18686    pub orderer: Option<Box<Reference>>,
18687    # [reference (targets = ["AllergyIntolerance"])]
18688    #[doc = "A link to a record of allergies or intolerances  which should be included in the nutrition order."]
18689    pub allergyIntolerance: Option<Vec<Box<Reference>>>,
18690    #[doc = "This modifier is used to convey order-specific modifiers about the type of food that should be given. These can be derived from patient allergies, intolerances, or preferences such as Halal, Vegan or Kosher. This modifier applies to the entire nutrition order inclusive of the oral diet, nutritional supplements and enteral formula feedings."]
18691    pub foodPreferenceModifier: Option<Vec<Box<CodeableConcept>>>,
18692    #[doc = "This modifier is used to convey Order-specific modifier about the type of oral food or oral fluids that should not be given. These can be derived from patient allergies, intolerances, or preferences such as No Red Meat, No Soy or No Wheat or  Gluten-Free.  While it should not be necessary to repeat allergy or intolerance information captured in the referenced AllergyIntolerance resource in the excludeFoodModifier, this element may be used to convey additional specificity related to foods that should be eliminated from the patient’s diet for any reason.  This modifier applies to the entire nutrition order inclusive of the oral diet, nutritional supplements and enteral formula feedings."]
18693    pub excludeFoodModifier: Option<Vec<Box<CodeableConcept>>>,
18694    #[doc = "Diet given orally in contrast to enteral (tube) feeding."]
18695    pub oralDiet: Option<NutritionOrderOralDiet>,
18696    #[doc = "Oral nutritional products given in order to add further nutritional value to the patient's diet."]
18697    pub supplement: Option<Vec<NutritionOrderSupplement>>,
18698    #[doc = "Feeding provided through the gastrointestinal tract via a tube, catheter, or stoma that delivers nutrition distal to the oral cavity."]
18699    pub enteralFormula: Option<NutritionOrderEnteralFormula>,
18700    #[doc = "Comments made about the {{title}} by the requester, performer, subject or other participants."]
18701    pub note: Option<Vec<Box<Annotation>>>,
18702}
18703#[derive(
18704    Clone,
18705    Reflect,
18706    Debug,
18707    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
18708    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
18709)]
18710#[fhir_serialize_type = "typechoice"]
18711#[type_choice_field_name = "effective"]
18712pub enum ObservationEffectiveTypeChoice {
18713    DateTime(Box<FHIRDateTime>),
18714    Period(Box<Period>),
18715    Timing(Box<Timing>),
18716    Instant(Box<FHIRInstant>),
18717}
18718impl Default for ObservationEffectiveTypeChoice {
18719    fn default() -> Self {
18720        ObservationEffectiveTypeChoice::DateTime(Box::new(Default::default()))
18721    }
18722}
18723#[derive(
18724    Clone,
18725    Reflect,
18726    Debug,
18727    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
18728    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
18729)]
18730#[fhir_serialize_type = "typechoice"]
18731#[type_choice_field_name = "value"]
18732pub enum ObservationValueTypeChoice {
18733    Quantity(Box<Quantity>),
18734    CodeableConcept(Box<CodeableConcept>),
18735    String(Box<FHIRString>),
18736    Boolean(Box<FHIRBoolean>),
18737    Integer(Box<FHIRInteger>),
18738    Range(Box<Range>),
18739    Ratio(Box<Ratio>),
18740    SampledData(Box<SampledData>),
18741    Time(Box<FHIRTime>),
18742    DateTime(Box<FHIRDateTime>),
18743    Period(Box<Period>),
18744}
18745impl Default for ObservationValueTypeChoice {
18746    fn default() -> Self {
18747        ObservationValueTypeChoice::Quantity(Box::new(Default::default()))
18748    }
18749}
18750#[derive(
18751    Clone,
18752    Reflect,
18753    Debug,
18754    Default,
18755    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
18756    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
18757)]
18758#[fhir_serialize_type = "complex"]
18759#[doc = "Guidance on how to interpret the value by comparison to a normal or recommended range.  Multiple reference ranges are interpreted as an \"OR\".   In other words, to represent two distinct target populations, two `referenceRange` elements would be used."]
18760pub struct ObservationReferenceRange {
18761    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
18762    pub id: Option<String>,
18763    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
18764    pub extension: Option<Vec<Box<Extension>>>,
18765    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
18766    pub modifierExtension: Option<Vec<Box<Extension>>>,
18767    #[doc = "The value of the low bound of the reference range.  The low bound of the reference range endpoint is inclusive of the value (e.g.  reference range is >=5 - <=9). If the low bound is omitted,  it is assumed to be meaningless (e.g. reference range is <=2.3)."]
18768    pub low: Option<Box<Quantity>>,
18769    #[doc = "The value of the high bound of the reference range.  The high bound of the reference range endpoint is inclusive of the value (e.g.  reference range is >=5 - <=9). If the high bound is omitted,  it is assumed to be meaningless (e.g. reference range is >= 2.3)."]
18770    pub high: Option<Box<Quantity>>,
18771    #[rename_field = "type"]
18772    #[doc = "Codes to indicate the what part of the targeted reference population it applies to. For example, the normal or therapeutic range."]
18773    pub type_: Option<Box<CodeableConcept>>,
18774    #[doc = "Codes to indicate the target population this reference range applies to.  For example, a reference range may be based on the normal population or a particular sex or race.  Multiple `appliesTo`  are interpreted as an \"AND\" of the target populations.  For example, to represent a target population of African American females, both a code of female and a code for African American would be used."]
18775    pub appliesTo: Option<Vec<Box<CodeableConcept>>>,
18776    #[doc = "The age at which this reference range is applicable. This is a neonatal age (e.g. number of weeks at term) if the meaning says so."]
18777    pub age: Option<Box<Range>>,
18778    #[primitive]
18779    #[doc = "Text based reference range in an observation which may be used when a quantitative range is not appropriate for an observation.  An example would be a reference value of \"Negative\" or a list or table of \"normals\"."]
18780    pub text: Option<Box<FHIRString>>,
18781}
18782#[derive(
18783    Clone,
18784    Reflect,
18785    Debug,
18786    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
18787    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
18788)]
18789#[fhir_serialize_type = "typechoice"]
18790#[type_choice_field_name = "value"]
18791pub enum ObservationComponentValueTypeChoice {
18792    Quantity(Box<Quantity>),
18793    CodeableConcept(Box<CodeableConcept>),
18794    String(Box<FHIRString>),
18795    Boolean(Box<FHIRBoolean>),
18796    Integer(Box<FHIRInteger>),
18797    Range(Box<Range>),
18798    Ratio(Box<Ratio>),
18799    SampledData(Box<SampledData>),
18800    Time(Box<FHIRTime>),
18801    DateTime(Box<FHIRDateTime>),
18802    Period(Box<Period>),
18803}
18804impl Default for ObservationComponentValueTypeChoice {
18805    fn default() -> Self {
18806        ObservationComponentValueTypeChoice::Quantity(Box::new(Default::default()))
18807    }
18808}
18809#[derive(
18810    Clone,
18811    Reflect,
18812    Debug,
18813    Default,
18814    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
18815    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
18816)]
18817#[fhir_serialize_type = "complex"]
18818#[doc = "Some observations have multiple component observations.  These component observations are expressed as separate code value pairs that share the same attributes.  Examples include systolic and diastolic component observations for blood pressure measurement and multiple component observations for genetics observations."]
18819pub struct ObservationComponent {
18820    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
18821    pub id: Option<String>,
18822    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
18823    pub extension: Option<Vec<Box<Extension>>>,
18824    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
18825    pub modifierExtension: Option<Vec<Box<Extension>>>,
18826    #[doc = "Describes what was observed. Sometimes this is called the observation \"code\"."]
18827    pub code: Box<CodeableConcept>,
18828    # [type_choice_variants (complex = ["valueQuantity" , "valueCodeableConcept" , "valueRange" , "valueRatio" , "valueSampledData" , "valuePeriod"] , primitive = ["valueString" , "valueBoolean" , "valueInteger" , "valueTime" , "valueDateTime"])]
18829    #[doc = "The information determined as a result of making the observation, if the information has a simple value."]
18830    pub value: Option<ObservationComponentValueTypeChoice>,
18831    #[doc = "Provides a reason why the expected value in the element Observation.component.value[x] is missing."]
18832    pub dataAbsentReason: Option<Box<CodeableConcept>>,
18833    #[doc = "A categorical assessment of an observation value.  For example, high, low, normal."]
18834    pub interpretation: Option<Vec<Box<CodeableConcept>>>,
18835    #[doc = "Guidance on how to interpret the value by comparison to a normal or recommended range."]
18836    pub referenceRange: Option<Vec<ObservationReferenceRange>>,
18837}
18838#[derive(
18839    Clone,
18840    Reflect,
18841    Debug,
18842    Default,
18843    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
18844    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
18845)]
18846#[fhir_serialize_type = "resource"]
18847#[doc = "Measurements and simple assertions made about a patient, device or other subject."]
18848pub struct Observation {
18849    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
18850    pub id: Option<String>,
18851    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
18852    pub meta: Option<Box<Meta>>,
18853    #[primitive]
18854    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
18855    pub implicitRules: Option<Box<FHIRUri>>,
18856    #[primitive]
18857    #[doc = "The base language in which the resource is written."]
18858    pub language: Option<Box<FHIRCode>>,
18859    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
18860    pub text: Option<Box<Narrative>>,
18861    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
18862    pub contained: Option<Vec<Box<Resource>>>,
18863    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
18864    pub extension: Option<Vec<Box<Extension>>>,
18865    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
18866    pub modifierExtension: Option<Vec<Box<Extension>>>,
18867    #[rename_field = "identifier"]
18868    #[doc = "A unique identifier assigned to this observation."]
18869    pub identifier_: Option<Vec<Box<Identifier>>>,
18870    # [reference (targets = ["CarePlan" , "DeviceRequest" , "ImmunizationRecommendation" , "MedicationRequest" , "NutritionOrder" , "ServiceRequest"])]
18871    #[doc = "A plan, proposal or order that is fulfilled in whole or in part by this event.  For example, a MedicationRequest may require a patient to have laboratory test performed before  it is dispensed."]
18872    pub basedOn: Option<Vec<Box<Reference>>>,
18873    # [reference (targets = ["MedicationAdministration" , "MedicationDispense" , "MedicationStatement" , "Procedure" , "Immunization" , "ImagingStudy"])]
18874    #[doc = "A larger event of which this particular Observation is a component or step.  For example,  an observation as part of a procedure."]
18875    pub partOf: Option<Vec<Box<Reference>>>,
18876    #[primitive]
18877    #[doc = "The status of the result value."]
18878    pub status: Box<terminology::ObservationStatus>,
18879    #[doc = "A code that classifies the general type of observation being made."]
18880    pub category: Option<Vec<Box<CodeableConcept>>>,
18881    #[doc = "Describes what was observed. Sometimes this is called the observation \"name\"."]
18882    pub code: Box<CodeableConcept>,
18883    # [reference (targets = ["Patient" , "Group" , "Device" , "Location"])]
18884    #[doc = "The patient, or group of patients, location, or device this observation is about and into whose record the observation is placed. If the actual focus of the observation is different from the subject (or a sample of, part, or region of the subject), the `focus` element or the `code` itself specifies the actual focus of the observation."]
18885    pub subject: Option<Box<Reference>>,
18886    # [reference (targets = ["Resource"])]
18887    #[doc = "The actual focus of an observation when it is not the patient of record representing something or someone associated with the patient such as a spouse, parent, fetus, or donor. For example, fetus observations in a mother's record.  The focus of an observation could also be an existing condition,  an intervention, the subject's diet,  another observation of the subject,  or a body structure such as tumor or implanted device.   An example use case would be using the Observation resource to capture whether the mother is trained to change her child's tracheostomy tube. In this example, the child is the patient of record and the mother is the focus."]
18888    pub focus: Option<Vec<Box<Reference>>>,
18889    # [reference (targets = ["Encounter"])]
18890    #[doc = "The healthcare event  (e.g. a patient and healthcare provider interaction) during which this observation is made."]
18891    pub encounter: Option<Box<Reference>>,
18892    # [type_choice_variants (complex = ["effectivePeriod" , "effectiveTiming"] , primitive = ["effectiveDateTime" , "effectiveInstant"])]
18893    #[doc = "The time or time-period the observed value is asserted as being true. For biological subjects - e.g. human patients - this is usually called the \"physiologically relevant time\". This is usually either the time of the procedure or of specimen collection, but very often the source of the date/time is not known, only the date/time itself."]
18894    pub effective: Option<ObservationEffectiveTypeChoice>,
18895    #[primitive]
18896    #[doc = "The date and time this version of the observation was made available to providers, typically after the results have been reviewed and verified."]
18897    pub issued: Option<Box<FHIRInstant>>,
18898    # [reference (targets = ["Practitioner" , "PractitionerRole" , "Organization" , "CareTeam" , "Patient" , "RelatedPerson"])]
18899    #[doc = "Who was responsible for asserting the observed value as \"true\"."]
18900    pub performer: Option<Vec<Box<Reference>>>,
18901    # [type_choice_variants (complex = ["valueQuantity" , "valueCodeableConcept" , "valueRange" , "valueRatio" , "valueSampledData" , "valuePeriod"] , primitive = ["valueString" , "valueBoolean" , "valueInteger" , "valueTime" , "valueDateTime"])]
18902    #[doc = "The information determined as a result of making the observation, if the information has a simple value."]
18903    pub value: Option<ObservationValueTypeChoice>,
18904    #[doc = "Provides a reason why the expected value in the element Observation.value[x] is missing."]
18905    pub dataAbsentReason: Option<Box<CodeableConcept>>,
18906    #[doc = "A categorical assessment of an observation value.  For example, high, low, normal."]
18907    pub interpretation: Option<Vec<Box<CodeableConcept>>>,
18908    #[doc = "Comments about the observation or the results."]
18909    pub note: Option<Vec<Box<Annotation>>>,
18910    #[doc = "Indicates the site on the subject's body where the observation was made (i.e. the target site)."]
18911    pub bodySite: Option<Box<CodeableConcept>>,
18912    #[doc = "Indicates the mechanism used to perform the observation."]
18913    pub method: Option<Box<CodeableConcept>>,
18914    # [reference (targets = ["Specimen"])]
18915    #[doc = "The specimen that was used when this observation was made."]
18916    pub specimen: Option<Box<Reference>>,
18917    # [reference (targets = ["Device" , "DeviceMetric"])]
18918    #[doc = "The device used to generate the observation data."]
18919    pub device: Option<Box<Reference>>,
18920    #[doc = "Guidance on how to interpret the value by comparison to a normal or recommended range.  Multiple reference ranges are interpreted as an \"OR\".   In other words, to represent two distinct target populations, two `referenceRange` elements would be used."]
18921    pub referenceRange: Option<Vec<ObservationReferenceRange>>,
18922    # [reference (targets = ["Observation" , "QuestionnaireResponse" , "MolecularSequence"])]
18923    #[doc = "This observation is a group observation (e.g. a battery, a panel of tests, a set of vital sign measurements) that includes the target as a member of the group."]
18924    pub hasMember: Option<Vec<Box<Reference>>>,
18925    # [reference (targets = ["DocumentReference" , "ImagingStudy" , "Media" , "QuestionnaireResponse" , "Observation" , "MolecularSequence"])]
18926    #[doc = "The target resource that represents a measurement from which this observation value is derived. For example, a calculated anion gap or a fetal measurement based on an ultrasound image."]
18927    pub derivedFrom: Option<Vec<Box<Reference>>>,
18928    #[doc = "Some observations have multiple component observations.  These component observations are expressed as separate code value pairs that share the same attributes.  Examples include systolic and diastolic component observations for blood pressure measurement and multiple component observations for genetics observations."]
18929    pub component: Option<Vec<ObservationComponent>>,
18930}
18931#[derive(
18932    Clone,
18933    Reflect,
18934    Debug,
18935    Default,
18936    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
18937    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
18938)]
18939#[fhir_serialize_type = "complex"]
18940#[doc = "Characteristics for quantitative results of this observation."]
18941pub struct ObservationDefinitionQuantitativeDetails {
18942    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
18943    pub id: Option<String>,
18944    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
18945    pub extension: Option<Vec<Box<Extension>>>,
18946    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
18947    pub modifierExtension: Option<Vec<Box<Extension>>>,
18948    #[doc = "Customary unit used to report quantitative results of observations conforming to this ObservationDefinition."]
18949    pub customaryUnit: Option<Box<CodeableConcept>>,
18950    #[doc = "SI unit used to report quantitative results of observations conforming to this ObservationDefinition."]
18951    pub unit: Option<Box<CodeableConcept>>,
18952    #[primitive]
18953    #[doc = "Factor for converting value expressed with SI unit to value expressed with customary unit."]
18954    pub conversionFactor: Option<Box<FHIRDecimal>>,
18955    #[primitive]
18956    #[doc = "Number of digits after decimal separator when the results of such observations are of type Quantity."]
18957    pub decimalPrecision: Option<Box<FHIRInteger>>,
18958}
18959#[derive(
18960    Clone,
18961    Reflect,
18962    Debug,
18963    Default,
18964    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
18965    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
18966)]
18967#[fhir_serialize_type = "complex"]
18968#[doc = "Multiple  ranges of results qualified by different contexts for ordinal or continuous observations conforming to this ObservationDefinition."]
18969pub struct ObservationDefinitionQualifiedInterval {
18970    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
18971    pub id: Option<String>,
18972    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
18973    pub extension: Option<Vec<Box<Extension>>>,
18974    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
18975    pub modifierExtension: Option<Vec<Box<Extension>>>,
18976    #[primitive]
18977    #[doc = "The category of interval of values for continuous or ordinal observations conforming to this ObservationDefinition."]
18978    pub category: Option<Box<terminology::ObservationRangeCategory>>,
18979    #[doc = "The low and high values determining the interval. There may be only one of the two."]
18980    pub range: Option<Box<Range>>,
18981    #[doc = "Codes to indicate the health context the range applies to. For example, the normal or therapeutic range."]
18982    pub context: Option<Box<CodeableConcept>>,
18983    #[doc = "Codes to indicate the target population this reference range applies to."]
18984    pub appliesTo: Option<Vec<Box<CodeableConcept>>>,
18985    #[primitive]
18986    #[doc = "Sex of the population the range applies to."]
18987    pub gender: Option<Box<terminology::AdministrativeGender>>,
18988    #[doc = "The age at which this reference range is applicable. This is a neonatal age (e.g. number of weeks at term) if the meaning says so."]
18989    pub age: Option<Box<Range>>,
18990    #[doc = "The gestational age to which this reference range is applicable, in the context of pregnancy."]
18991    pub gestationalAge: Option<Box<Range>>,
18992    #[primitive]
18993    #[doc = "Text based condition for which the reference range is valid."]
18994    pub condition: Option<Box<FHIRString>>,
18995}
18996#[derive(
18997    Clone,
18998    Reflect,
18999    Debug,
19000    Default,
19001    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
19002    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
19003)]
19004#[fhir_serialize_type = "resource"]
19005#[doc = "Set of definitional characteristics for a kind of observation or measurement produced or consumed by an orderable health care service."]
19006pub struct ObservationDefinition {
19007    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
19008    pub id: Option<String>,
19009    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
19010    pub meta: Option<Box<Meta>>,
19011    #[primitive]
19012    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
19013    pub implicitRules: Option<Box<FHIRUri>>,
19014    #[primitive]
19015    #[doc = "The base language in which the resource is written."]
19016    pub language: Option<Box<FHIRCode>>,
19017    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
19018    pub text: Option<Box<Narrative>>,
19019    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
19020    pub contained: Option<Vec<Box<Resource>>>,
19021    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
19022    pub extension: Option<Vec<Box<Extension>>>,
19023    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
19024    pub modifierExtension: Option<Vec<Box<Extension>>>,
19025    #[doc = "A code that classifies the general type of observation."]
19026    pub category: Option<Vec<Box<CodeableConcept>>>,
19027    #[doc = "Describes what will be observed. Sometimes this is called the observation \"name\"."]
19028    pub code: Box<CodeableConcept>,
19029    #[rename_field = "identifier"]
19030    #[doc = "A unique identifier assigned to this ObservationDefinition artifact."]
19031    pub identifier_: Option<Vec<Box<Identifier>>>,
19032    #[primitive]
19033    #[doc = "The data types allowed for the value element of the instance observations conforming to this ObservationDefinition."]
19034    pub permittedDataType: Option<Vec<Box<terminology::PermittedDataType>>>,
19035    #[primitive]
19036    #[doc = "Multiple results allowed for observations conforming to this ObservationDefinition."]
19037    pub multipleResultsAllowed: Option<Box<FHIRBoolean>>,
19038    #[doc = "The method or technique used to perform the observation."]
19039    pub method: Option<Box<CodeableConcept>>,
19040    #[primitive]
19041    #[doc = "The preferred name to be used when reporting the results of observations conforming to this ObservationDefinition."]
19042    pub preferredReportName: Option<Box<FHIRString>>,
19043    #[doc = "Characteristics for quantitative results of this observation."]
19044    pub quantitativeDetails: Option<ObservationDefinitionQuantitativeDetails>,
19045    #[doc = "Multiple  ranges of results qualified by different contexts for ordinal or continuous observations conforming to this ObservationDefinition."]
19046    pub qualifiedInterval: Option<Vec<ObservationDefinitionQualifiedInterval>>,
19047    # [reference (targets = ["ValueSet"])]
19048    #[doc = "The set of valid coded results for the observations  conforming to this ObservationDefinition."]
19049    pub validCodedValueSet: Option<Box<Reference>>,
19050    # [reference (targets = ["ValueSet"])]
19051    #[doc = "The set of normal coded results for the observations conforming to this ObservationDefinition."]
19052    pub normalCodedValueSet: Option<Box<Reference>>,
19053    # [reference (targets = ["ValueSet"])]
19054    #[doc = "The set of abnormal coded results for the observation conforming to this ObservationDefinition."]
19055    pub abnormalCodedValueSet: Option<Box<Reference>>,
19056    # [reference (targets = ["ValueSet"])]
19057    #[doc = "The set of critical coded results for the observation conforming to this ObservationDefinition."]
19058    pub criticalCodedValueSet: Option<Box<Reference>>,
19059}
19060#[derive(
19061    Clone,
19062    Reflect,
19063    Debug,
19064    Default,
19065    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
19066    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
19067)]
19068#[fhir_serialize_type = "complex"]
19069#[doc = "Binds to a value set if this parameter is coded (code, Coding, CodeableConcept)."]
19070pub struct OperationDefinitionParameterBinding {
19071    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
19072    pub id: Option<String>,
19073    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
19074    pub extension: Option<Vec<Box<Extension>>>,
19075    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
19076    pub modifierExtension: Option<Vec<Box<Extension>>>,
19077    #[primitive]
19078    #[doc = "Indicates the degree of conformance expectations associated with this binding - that is, the degree to which the provided value set must be adhered to in the instances."]
19079    pub strength: Box<terminology::BindingStrength>,
19080    #[primitive]
19081    #[doc = "Points to the value set or external definition (e.g. implicit value set) that identifies the set of codes to be used."]
19082    pub valueSet: Box<FHIRCanonical>,
19083}
19084#[derive(
19085    Clone,
19086    Reflect,
19087    Debug,
19088    Default,
19089    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
19090    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
19091)]
19092#[fhir_serialize_type = "complex"]
19093#[doc = "Identifies other resource parameters within the operation invocation that are expected to resolve to this resource."]
19094pub struct OperationDefinitionParameterReferencedFrom {
19095    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
19096    pub id: Option<String>,
19097    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
19098    pub extension: Option<Vec<Box<Extension>>>,
19099    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
19100    pub modifierExtension: Option<Vec<Box<Extension>>>,
19101    #[primitive]
19102    #[doc = "The name of the parameter or dot-separated path of parameter names pointing to the resource parameter that is expected to contain a reference to this resource."]
19103    pub source: Box<FHIRString>,
19104    #[primitive]
19105    #[doc = "The id of the element in the referencing resource that is expected to resolve to this resource."]
19106    pub sourceId: Option<Box<FHIRString>>,
19107}
19108#[derive(
19109    Clone,
19110    Reflect,
19111    Debug,
19112    Default,
19113    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
19114    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
19115)]
19116#[fhir_serialize_type = "complex"]
19117#[doc = "The parameters for the operation/query."]
19118pub struct OperationDefinitionParameter {
19119    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
19120    pub id: Option<String>,
19121    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
19122    pub extension: Option<Vec<Box<Extension>>>,
19123    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
19124    pub modifierExtension: Option<Vec<Box<Extension>>>,
19125    #[primitive]
19126    #[doc = "The name of used to identify the parameter."]
19127    pub name: Box<FHIRCode>,
19128    #[rename_field = "use"]
19129    #[primitive]
19130    #[doc = "Whether this is an input or an output parameter."]
19131    pub use_: Box<terminology::OperationParameterUse>,
19132    #[primitive]
19133    #[doc = "The minimum number of times this parameter SHALL appear in the request or response."]
19134    pub min: Box<FHIRInteger>,
19135    #[primitive]
19136    #[doc = "The maximum number of times this element is permitted to appear in the request or response."]
19137    pub max: Box<FHIRString>,
19138    #[primitive]
19139    #[doc = "Describes the meaning or use of this parameter."]
19140    pub documentation: Option<Box<FHIRString>>,
19141    #[rename_field = "type"]
19142    #[primitive]
19143    #[doc = "The type for this parameter."]
19144    pub type_: Option<Box<terminology::AllTypes>>,
19145    #[primitive]
19146    #[doc = "Used when the type is \"Reference\" or \"canonical\", and identifies a profile structure or implementation Guide that applies to the target of the reference this parameter refers to. If any profiles are specified, then the content must conform to at least one of them. The URL can be a local reference - to a contained StructureDefinition, or a reference to another StructureDefinition or Implementation Guide by a canonical URL. When an implementation guide is specified, the target resource SHALL conform to at least one profile defined in the implementation guide."]
19147    pub targetProfile: Option<Vec<Box<FHIRCanonical>>>,
19148    #[primitive]
19149    #[doc = "How the parameter is understood as a search parameter. This is only used if the parameter type is 'string'."]
19150    pub searchType: Option<Box<terminology::SearchParamType>>,
19151    #[doc = "Binds to a value set if this parameter is coded (code, Coding, CodeableConcept)."]
19152    pub binding: Option<OperationDefinitionParameterBinding>,
19153    #[doc = "Identifies other resource parameters within the operation invocation that are expected to resolve to this resource."]
19154    pub referencedFrom: Option<Vec<OperationDefinitionParameterReferencedFrom>>,
19155    #[doc = "The parts of a nested Parameter."]
19156    pub part: Option<Vec<OperationDefinitionParameter>>,
19157}
19158#[derive(
19159    Clone,
19160    Reflect,
19161    Debug,
19162    Default,
19163    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
19164    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
19165)]
19166#[fhir_serialize_type = "complex"]
19167#[doc = "Defines an appropriate combination of parameters to use when invoking this operation, to help code generators when generating overloaded parameter sets for this operation."]
19168pub struct OperationDefinitionOverload {
19169    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
19170    pub id: Option<String>,
19171    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
19172    pub extension: Option<Vec<Box<Extension>>>,
19173    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
19174    pub modifierExtension: Option<Vec<Box<Extension>>>,
19175    #[primitive]
19176    #[doc = "Name of parameter to include in overload."]
19177    pub parameterName: Option<Vec<Box<FHIRString>>>,
19178    #[primitive]
19179    #[doc = "Comments to go on overload."]
19180    pub comment: Option<Box<FHIRString>>,
19181}
19182#[derive(
19183    Clone,
19184    Reflect,
19185    Debug,
19186    Default,
19187    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
19188    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
19189)]
19190#[fhir_serialize_type = "resource"]
19191#[doc = "A formal computable definition of an operation (on the RESTful interface) or a named query (using the search interaction)."]
19192pub struct OperationDefinition {
19193    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
19194    pub id: Option<String>,
19195    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
19196    pub meta: Option<Box<Meta>>,
19197    #[primitive]
19198    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
19199    pub implicitRules: Option<Box<FHIRUri>>,
19200    #[primitive]
19201    #[doc = "The base language in which the resource is written."]
19202    pub language: Option<Box<FHIRCode>>,
19203    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
19204    pub text: Option<Box<Narrative>>,
19205    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
19206    pub contained: Option<Vec<Box<Resource>>>,
19207    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
19208    pub extension: Option<Vec<Box<Extension>>>,
19209    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
19210    pub modifierExtension: Option<Vec<Box<Extension>>>,
19211    #[primitive]
19212    #[doc = "An absolute URI that is used to identify this operation definition when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this operation definition is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the operation definition is stored on different servers."]
19213    pub url: Option<Box<FHIRUri>>,
19214    #[primitive]
19215    #[doc = "The identifier that is used to identify this version of the operation definition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the operation definition author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence."]
19216    pub version: Option<Box<FHIRString>>,
19217    #[primitive]
19218    #[doc = "A natural language name identifying the operation definition. This name should be usable as an identifier for the module by machine processing applications such as code generation."]
19219    pub name: Box<FHIRString>,
19220    #[primitive]
19221    #[doc = "A short, descriptive, user-friendly title for the operation definition."]
19222    pub title: Option<Box<FHIRString>>,
19223    #[primitive]
19224    #[doc = "The status of this operation definition. Enables tracking the life-cycle of the content."]
19225    pub status: Box<terminology::PublicationStatus>,
19226    #[primitive]
19227    #[doc = "Whether this is an operation or a named query."]
19228    pub kind: Box<terminology::OperationKind>,
19229    #[primitive]
19230    #[doc = "A Boolean value to indicate that this operation definition is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage."]
19231    pub experimental: Option<Box<FHIRBoolean>>,
19232    #[primitive]
19233    #[doc = "The date  (and optionally time) when the operation definition was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the operation definition changes."]
19234    pub date: Option<Box<FHIRDateTime>>,
19235    #[primitive]
19236    #[doc = "The name of the organization or individual that published the operation definition."]
19237    pub publisher: Option<Box<FHIRString>>,
19238    #[doc = "Contact details to assist a user in finding and communicating with the publisher."]
19239    pub contact: Option<Vec<Box<ContactDetail>>>,
19240    #[primitive]
19241    #[doc = "A free text natural language description of the operation definition from a consumer's perspective."]
19242    pub description: Option<Box<FHIRMarkdown>>,
19243    #[doc = "The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate operation definition instances."]
19244    pub useContext: Option<Vec<Box<UsageContext>>>,
19245    #[doc = "A legal or geographic region in which the operation definition is intended to be used."]
19246    pub jurisdiction: Option<Vec<Box<CodeableConcept>>>,
19247    #[primitive]
19248    #[doc = "Explanation of why this operation definition is needed and why it has been designed as it has."]
19249    pub purpose: Option<Box<FHIRMarkdown>>,
19250    #[primitive]
19251    #[doc = "Whether the operation affects state. Side effects such as producing audit trail entries do not count as 'affecting  state'."]
19252    pub affectsState: Option<Box<FHIRBoolean>>,
19253    #[primitive]
19254    #[doc = "The name used to invoke the operation."]
19255    pub code: Box<FHIRCode>,
19256    #[primitive]
19257    #[doc = "Additional information about how to use this operation or named query."]
19258    pub comment: Option<Box<FHIRMarkdown>>,
19259    #[primitive]
19260    #[doc = "Indicates that this operation definition is a constraining profile on the base."]
19261    pub base: Option<Box<FHIRCanonical>>,
19262    #[primitive]
19263    #[doc = "The types on which this operation can be executed."]
19264    pub resource: Option<Vec<Box<terminology::ResourceTypes>>>,
19265    #[primitive]
19266    #[doc = "Indicates whether this operation or named query can be invoked at the system level (e.g. without needing to choose a resource type for the context)."]
19267    pub system: Box<FHIRBoolean>,
19268    #[rename_field = "type"]
19269    #[primitive]
19270    #[doc = "Indicates whether this operation or named query can be invoked at the resource type level for any given resource type level (e.g. without needing to choose a specific resource id for the context)."]
19271    pub type_: Box<FHIRBoolean>,
19272    #[primitive]
19273    #[doc = "Indicates whether this operation can be invoked on a particular instance of one of the given types."]
19274    pub instance: Box<FHIRBoolean>,
19275    #[primitive]
19276    #[doc = "Additional validation information for the in parameters - a single profile that covers all the parameters. The profile is a constraint on the parameters resource as a whole."]
19277    pub inputProfile: Option<Box<FHIRCanonical>>,
19278    #[primitive]
19279    #[doc = "Additional validation information for the out parameters - a single profile that covers all the parameters. The profile is a constraint on the parameters resource."]
19280    pub outputProfile: Option<Box<FHIRCanonical>>,
19281    #[doc = "The parameters for the operation/query."]
19282    pub parameter: Option<Vec<OperationDefinitionParameter>>,
19283    #[doc = "Defines an appropriate combination of parameters to use when invoking this operation, to help code generators when generating overloaded parameter sets for this operation."]
19284    pub overload: Option<Vec<OperationDefinitionOverload>>,
19285}
19286#[derive(
19287    Clone,
19288    Reflect,
19289    Debug,
19290    Default,
19291    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
19292    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
19293)]
19294#[fhir_serialize_type = "complex"]
19295#[doc = "An error, warning, or information message that results from a system action."]
19296pub struct OperationOutcomeIssue {
19297    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
19298    pub id: Option<String>,
19299    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
19300    pub extension: Option<Vec<Box<Extension>>>,
19301    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
19302    pub modifierExtension: Option<Vec<Box<Extension>>>,
19303    #[primitive]
19304    #[doc = "Indicates whether the issue indicates a variation from successful processing."]
19305    pub severity: Box<terminology::IssueSeverity>,
19306    #[primitive]
19307    #[doc = "Describes the type of the issue. The system that creates an OperationOutcome SHALL choose the most applicable code from the IssueType value set, and may additional provide its own code for the error in the details element."]
19308    pub code: Box<terminology::IssueType>,
19309    #[doc = "Additional details about the error. This may be a text description of the error or a system code that identifies the error."]
19310    pub details: Option<Box<CodeableConcept>>,
19311    #[primitive]
19312    #[doc = "Additional diagnostic information about the issue."]
19313    pub diagnostics: Option<Box<FHIRString>>,
19314    #[primitive]
19315    #[doc = "This element is deprecated because it is XML specific. It is replaced by issue.expression, which is format independent, and simpler to parse. \n\nFor resource issues, this will be a simple XPath limited to element names, repetition indicators and the default child accessor that identifies one of the elements in the resource that caused this issue to be raised.  For HTTP errors, will be \"http.\" + the parameter name."]
19316    pub location: Option<Vec<Box<FHIRString>>>,
19317    #[primitive]
19318    #[doc = "A [simple subset of FHIRPath](fhirpath.html#simple) limited to element names, repetition indicators and the default child accessor that identifies one of the elements in the resource that caused this issue to be raised."]
19319    pub expression: Option<Vec<Box<FHIRString>>>,
19320}
19321#[derive(
19322    Clone,
19323    Reflect,
19324    Debug,
19325    Default,
19326    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
19327    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
19328)]
19329#[fhir_serialize_type = "resource"]
19330#[doc = "A collection of error, warning, or information messages that result from a system action."]
19331pub struct OperationOutcome {
19332    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
19333    pub id: Option<String>,
19334    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
19335    pub meta: Option<Box<Meta>>,
19336    #[primitive]
19337    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
19338    pub implicitRules: Option<Box<FHIRUri>>,
19339    #[primitive]
19340    #[doc = "The base language in which the resource is written."]
19341    pub language: Option<Box<FHIRCode>>,
19342    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
19343    pub text: Option<Box<Narrative>>,
19344    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
19345    pub contained: Option<Vec<Box<Resource>>>,
19346    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
19347    pub extension: Option<Vec<Box<Extension>>>,
19348    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
19349    pub modifierExtension: Option<Vec<Box<Extension>>>,
19350    #[cardinality(min = 1usize)]
19351    #[doc = "An error, warning, or information message that results from a system action."]
19352    pub issue: Vec<OperationOutcomeIssue>,
19353}
19354#[derive(
19355    Clone,
19356    Reflect,
19357    Debug,
19358    Default,
19359    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
19360    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
19361)]
19362#[fhir_serialize_type = "complex"]
19363#[doc = "Contact for the organization for a certain purpose."]
19364pub struct OrganizationContact {
19365    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
19366    pub id: Option<String>,
19367    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
19368    pub extension: Option<Vec<Box<Extension>>>,
19369    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
19370    pub modifierExtension: Option<Vec<Box<Extension>>>,
19371    #[doc = "Indicates a purpose for which the contact can be reached."]
19372    pub purpose: Option<Box<CodeableConcept>>,
19373    #[doc = "A name associated with the contact."]
19374    pub name: Option<Box<HumanName>>,
19375    #[doc = "A contact detail (e.g. a telephone number or an email address) by which the party may be contacted."]
19376    pub telecom: Option<Vec<Box<ContactPoint>>>,
19377    #[doc = "Visiting or postal addresses for the contact."]
19378    pub address: Option<Box<Address>>,
19379}
19380#[derive(
19381    Clone,
19382    Reflect,
19383    Debug,
19384    Default,
19385    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
19386    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
19387)]
19388#[fhir_serialize_type = "resource"]
19389#[doc = "A formally or informally recognized grouping of people or organizations formed for the purpose of achieving some form of collective action.  Includes companies, institutions, corporations, departments, community groups, healthcare practice groups, payer/insurer, etc."]
19390pub struct Organization {
19391    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
19392    pub id: Option<String>,
19393    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
19394    pub meta: Option<Box<Meta>>,
19395    #[primitive]
19396    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
19397    pub implicitRules: Option<Box<FHIRUri>>,
19398    #[primitive]
19399    #[doc = "The base language in which the resource is written."]
19400    pub language: Option<Box<FHIRCode>>,
19401    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
19402    pub text: Option<Box<Narrative>>,
19403    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
19404    pub contained: Option<Vec<Box<Resource>>>,
19405    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
19406    pub extension: Option<Vec<Box<Extension>>>,
19407    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
19408    pub modifierExtension: Option<Vec<Box<Extension>>>,
19409    #[rename_field = "identifier"]
19410    #[doc = "Identifier for the organization that is used to identify the organization across multiple disparate systems."]
19411    pub identifier_: Option<Vec<Box<Identifier>>>,
19412    #[primitive]
19413    #[doc = "Whether the organization's record is still in active use."]
19414    pub active: Option<Box<FHIRBoolean>>,
19415    #[rename_field = "type"]
19416    #[doc = "The kind(s) of organization that this is."]
19417    pub type_: Option<Vec<Box<CodeableConcept>>>,
19418    #[primitive]
19419    #[doc = "A name associated with the organization."]
19420    pub name: Option<Box<FHIRString>>,
19421    #[primitive]
19422    #[doc = "A list of alternate names that the organization is known as, or was known as in the past."]
19423    pub alias: Option<Vec<Box<FHIRString>>>,
19424    #[doc = "A contact detail for the organization."]
19425    pub telecom: Option<Vec<Box<ContactPoint>>>,
19426    #[doc = "An address for the organization."]
19427    pub address: Option<Vec<Box<Address>>>,
19428    # [reference (targets = ["Organization"])]
19429    #[doc = "The organization of which this organization forms a part."]
19430    pub partOf: Option<Box<Reference>>,
19431    #[doc = "Contact for the organization for a certain purpose."]
19432    pub contact: Option<Vec<OrganizationContact>>,
19433    # [reference (targets = ["Endpoint"])]
19434    #[doc = "Technical endpoints providing access to services operated for the organization."]
19435    pub endpoint: Option<Vec<Box<Reference>>>,
19436}
19437#[derive(
19438    Clone,
19439    Reflect,
19440    Debug,
19441    Default,
19442    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
19443    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
19444)]
19445#[fhir_serialize_type = "resource"]
19446#[doc = "Defines an affiliation/assotiation/relationship between 2 distinct oganizations, that is not a part-of relationship/sub-division relationship."]
19447pub struct OrganizationAffiliation {
19448    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
19449    pub id: Option<String>,
19450    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
19451    pub meta: Option<Box<Meta>>,
19452    #[primitive]
19453    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
19454    pub implicitRules: Option<Box<FHIRUri>>,
19455    #[primitive]
19456    #[doc = "The base language in which the resource is written."]
19457    pub language: Option<Box<FHIRCode>>,
19458    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
19459    pub text: Option<Box<Narrative>>,
19460    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
19461    pub contained: Option<Vec<Box<Resource>>>,
19462    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
19463    pub extension: Option<Vec<Box<Extension>>>,
19464    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
19465    pub modifierExtension: Option<Vec<Box<Extension>>>,
19466    #[rename_field = "identifier"]
19467    #[doc = "Business identifiers that are specific to this role."]
19468    pub identifier_: Option<Vec<Box<Identifier>>>,
19469    #[primitive]
19470    #[doc = "Whether this organization affiliation record is in active use."]
19471    pub active: Option<Box<FHIRBoolean>>,
19472    #[doc = "The period during which the participatingOrganization is affiliated with the primary organization."]
19473    pub period: Option<Box<Period>>,
19474    # [reference (targets = ["Organization"])]
19475    #[doc = "Organization where the role is available (primary organization/has members)."]
19476    pub organization: Option<Box<Reference>>,
19477    # [reference (targets = ["Organization"])]
19478    #[doc = "The Participating Organization provides/performs the role(s) defined by the code to the Primary Organization (e.g. providing services or is a member of)."]
19479    pub participatingOrganization: Option<Box<Reference>>,
19480    # [reference (targets = ["Organization"])]
19481    #[doc = "Health insurance provider network in which the participatingOrganization provides the role's services (if defined) at the indicated locations (if defined)."]
19482    pub network: Option<Vec<Box<Reference>>>,
19483    #[doc = "Definition of the role the participatingOrganization plays in the association."]
19484    pub code: Option<Vec<Box<CodeableConcept>>>,
19485    #[doc = "Specific specialty of the participatingOrganization in the context of the role."]
19486    pub specialty: Option<Vec<Box<CodeableConcept>>>,
19487    # [reference (targets = ["Location"])]
19488    #[doc = "The location(s) at which the role occurs."]
19489    pub location: Option<Vec<Box<Reference>>>,
19490    # [reference (targets = ["HealthcareService"])]
19491    #[doc = "Healthcare services provided through the role."]
19492    pub healthcareService: Option<Vec<Box<Reference>>>,
19493    #[doc = "Contact details at the participatingOrganization relevant to this Affiliation."]
19494    pub telecom: Option<Vec<Box<ContactPoint>>>,
19495    # [reference (targets = ["Endpoint"])]
19496    #[doc = "Technical endpoints providing access to services operated for this role."]
19497    pub endpoint: Option<Vec<Box<Reference>>>,
19498}
19499#[derive(
19500    Clone,
19501    Reflect,
19502    Debug,
19503    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
19504    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
19505)]
19506#[fhir_serialize_type = "typechoice"]
19507#[type_choice_field_name = "value"]
19508pub enum ParametersParameterValueTypeChoice {
19509    Base64Binary(Box<FHIRBase64Binary>),
19510    Boolean(Box<FHIRBoolean>),
19511    Canonical(Box<FHIRCanonical>),
19512    Code(Box<FHIRCode>),
19513    Date(Box<FHIRDate>),
19514    DateTime(Box<FHIRDateTime>),
19515    Decimal(Box<FHIRDecimal>),
19516    Id(Box<FHIRId>),
19517    Instant(Box<FHIRInstant>),
19518    Integer(Box<FHIRInteger>),
19519    Markdown(Box<FHIRMarkdown>),
19520    Oid(Box<FHIROid>),
19521    PositiveInt(Box<FHIRPositiveInt>),
19522    String(Box<FHIRString>),
19523    Time(Box<FHIRTime>),
19524    UnsignedInt(Box<FHIRUnsignedInt>),
19525    Uri(Box<FHIRUri>),
19526    Url(Box<FHIRUrl>),
19527    Uuid(Box<FHIRUuid>),
19528    Address(Box<Address>),
19529    Age(Box<Age>),
19530    Annotation(Box<Annotation>),
19531    Attachment(Box<Attachment>),
19532    CodeableConcept(Box<CodeableConcept>),
19533    Coding(Box<Coding>),
19534    ContactPoint(Box<ContactPoint>),
19535    Count(Box<Count>),
19536    Distance(Box<Distance>),
19537    Duration(Box<Duration>),
19538    HumanName(Box<HumanName>),
19539    Identifier(Box<Identifier>),
19540    Money(Box<Money>),
19541    Period(Box<Period>),
19542    Quantity(Box<Quantity>),
19543    Range(Box<Range>),
19544    Ratio(Box<Ratio>),
19545    Reference(Box<Reference>),
19546    SampledData(Box<SampledData>),
19547    Signature(Box<Signature>),
19548    Timing(Box<Timing>),
19549    ContactDetail(Box<ContactDetail>),
19550    Contributor(Box<Contributor>),
19551    DataRequirement(Box<DataRequirement>),
19552    Expression(Box<Expression>),
19553    ParameterDefinition(Box<ParameterDefinition>),
19554    RelatedArtifact(Box<RelatedArtifact>),
19555    TriggerDefinition(Box<TriggerDefinition>),
19556    UsageContext(Box<UsageContext>),
19557    Dosage(Box<Dosage>),
19558    Meta(Box<Meta>),
19559}
19560impl Default for ParametersParameterValueTypeChoice {
19561    fn default() -> Self {
19562        ParametersParameterValueTypeChoice::Base64Binary(Box::new(Default::default()))
19563    }
19564}
19565#[derive(
19566    Clone,
19567    Reflect,
19568    Debug,
19569    Default,
19570    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
19571    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
19572)]
19573#[fhir_serialize_type = "complex"]
19574#[doc = "A parameter passed to or received from the operation."]
19575pub struct ParametersParameter {
19576    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
19577    pub id: Option<String>,
19578    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
19579    pub extension: Option<Vec<Box<Extension>>>,
19580    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
19581    pub modifierExtension: Option<Vec<Box<Extension>>>,
19582    #[primitive]
19583    #[doc = "The name of the parameter (reference to the operation definition)."]
19584    pub name: Box<FHIRString>,
19585    # [type_choice_variants (complex = ["valueAddress" , "valueAge" , "valueAnnotation" , "valueAttachment" , "valueCodeableConcept" , "valueCoding" , "valueContactPoint" , "valueCount" , "valueDistance" , "valueDuration" , "valueHumanName" , "valueIdentifier" , "valueMoney" , "valuePeriod" , "valueQuantity" , "valueRange" , "valueRatio" , "valueReference" , "valueSampledData" , "valueSignature" , "valueTiming" , "valueContactDetail" , "valueContributor" , "valueDataRequirement" , "valueExpression" , "valueParameterDefinition" , "valueRelatedArtifact" , "valueTriggerDefinition" , "valueUsageContext" , "valueDosage" , "valueMeta"] , primitive = ["valueBase64Binary" , "valueBoolean" , "valueCanonical" , "valueCode" , "valueDate" , "valueDateTime" , "valueDecimal" , "valueId" , "valueInstant" , "valueInteger" , "valueMarkdown" , "valueOid" , "valuePositiveInt" , "valueString" , "valueTime" , "valueUnsignedInt" , "valueUri" , "valueUrl" , "valueUuid"])]
19586    #[doc = "If the parameter is a data type."]
19587    pub value: Option<ParametersParameterValueTypeChoice>,
19588    #[doc = "If the parameter is a whole resource."]
19589    pub resource: Option<Box<Resource>>,
19590    #[doc = "A named part of a multi-part parameter."]
19591    pub part: Option<Vec<ParametersParameter>>,
19592}
19593#[derive(
19594    Clone,
19595    Reflect,
19596    Debug,
19597    Default,
19598    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
19599    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
19600)]
19601#[fhir_serialize_type = "resource"]
19602#[doc = "This resource is a non-persisted resource used to pass information into and back from an [operation](operations.html). It has no other use, and there is no RESTful endpoint associated with it."]
19603pub struct Parameters {
19604    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
19605    pub id: Option<String>,
19606    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
19607    pub meta: Option<Box<Meta>>,
19608    #[primitive]
19609    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
19610    pub implicitRules: Option<Box<FHIRUri>>,
19611    #[primitive]
19612    #[doc = "The base language in which the resource is written."]
19613    pub language: Option<Box<FHIRCode>>,
19614    #[doc = "A parameter passed to or received from the operation."]
19615    pub parameter: Option<Vec<ParametersParameter>>,
19616}
19617#[derive(
19618    Clone,
19619    Reflect,
19620    Debug,
19621    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
19622    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
19623)]
19624#[fhir_serialize_type = "typechoice"]
19625#[type_choice_field_name = "deceased"]
19626pub enum PatientDeceasedTypeChoice {
19627    Boolean(Box<FHIRBoolean>),
19628    DateTime(Box<FHIRDateTime>),
19629}
19630impl Default for PatientDeceasedTypeChoice {
19631    fn default() -> Self {
19632        PatientDeceasedTypeChoice::Boolean(Box::new(Default::default()))
19633    }
19634}
19635#[derive(
19636    Clone,
19637    Reflect,
19638    Debug,
19639    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
19640    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
19641)]
19642#[fhir_serialize_type = "typechoice"]
19643#[type_choice_field_name = "multipleBirth"]
19644pub enum PatientMultipleBirthTypeChoice {
19645    Boolean(Box<FHIRBoolean>),
19646    Integer(Box<FHIRInteger>),
19647}
19648impl Default for PatientMultipleBirthTypeChoice {
19649    fn default() -> Self {
19650        PatientMultipleBirthTypeChoice::Boolean(Box::new(Default::default()))
19651    }
19652}
19653#[derive(
19654    Clone,
19655    Reflect,
19656    Debug,
19657    Default,
19658    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
19659    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
19660)]
19661#[fhir_serialize_type = "complex"]
19662#[doc = "A contact party (e.g. guardian, partner, friend) for the patient."]
19663pub struct PatientContact {
19664    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
19665    pub id: Option<String>,
19666    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
19667    pub extension: Option<Vec<Box<Extension>>>,
19668    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
19669    pub modifierExtension: Option<Vec<Box<Extension>>>,
19670    #[doc = "The nature of the relationship between the patient and the contact person."]
19671    pub relationship: Option<Vec<Box<CodeableConcept>>>,
19672    #[doc = "A name associated with the contact person."]
19673    pub name: Option<Box<HumanName>>,
19674    #[doc = "A contact detail for the person, e.g. a telephone number or an email address."]
19675    pub telecom: Option<Vec<Box<ContactPoint>>>,
19676    #[doc = "Address for the contact person."]
19677    pub address: Option<Box<Address>>,
19678    #[primitive]
19679    #[doc = "Administrative Gender - the gender that the contact person is considered to have for administration and record keeping purposes."]
19680    pub gender: Option<Box<terminology::AdministrativeGender>>,
19681    # [reference (targets = ["Organization"])]
19682    #[doc = "Organization on behalf of which the contact is acting or for which the contact is working."]
19683    pub organization: Option<Box<Reference>>,
19684    #[doc = "The period during which this contact person or organization is valid to be contacted relating to this patient."]
19685    pub period: Option<Box<Period>>,
19686}
19687#[derive(
19688    Clone,
19689    Reflect,
19690    Debug,
19691    Default,
19692    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
19693    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
19694)]
19695#[fhir_serialize_type = "complex"]
19696#[doc = "A language which may be used to communicate with the patient about his or her health."]
19697pub struct PatientCommunication {
19698    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
19699    pub id: Option<String>,
19700    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
19701    pub extension: Option<Vec<Box<Extension>>>,
19702    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
19703    pub modifierExtension: Option<Vec<Box<Extension>>>,
19704    #[doc = "The ISO-639-1 alpha 2 code in lower case for the language, optionally followed by a hyphen and the ISO-3166-1 alpha 2 code for the region in upper case; e.g. \"en\" for English, or \"en-US\" for American English versus \"en-EN\" for England English."]
19705    pub language: Box<CodeableConcept>,
19706    #[primitive]
19707    #[doc = "Indicates whether or not the patient prefers this language (over other languages he masters up a certain level)."]
19708    pub preferred: Option<Box<FHIRBoolean>>,
19709}
19710#[derive(
19711    Clone,
19712    Reflect,
19713    Debug,
19714    Default,
19715    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
19716    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
19717)]
19718#[fhir_serialize_type = "complex"]
19719#[doc = "Link to another patient resource that concerns the same actual patient."]
19720pub struct PatientLink {
19721    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
19722    pub id: Option<String>,
19723    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
19724    pub extension: Option<Vec<Box<Extension>>>,
19725    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
19726    pub modifierExtension: Option<Vec<Box<Extension>>>,
19727    # [reference (targets = ["Patient" , "RelatedPerson"])]
19728    #[doc = "The other patient resource that the link refers to."]
19729    pub other: Box<Reference>,
19730    #[rename_field = "type"]
19731    #[primitive]
19732    #[doc = "The type of link between this patient resource and another patient resource."]
19733    pub type_: Box<terminology::LinkType>,
19734}
19735#[derive(
19736    Clone,
19737    Reflect,
19738    Debug,
19739    Default,
19740    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
19741    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
19742)]
19743#[fhir_serialize_type = "resource"]
19744#[doc = "Demographics and other administrative information about an individual or animal receiving care or other health-related services."]
19745pub struct Patient {
19746    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
19747    pub id: Option<String>,
19748    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
19749    pub meta: Option<Box<Meta>>,
19750    #[primitive]
19751    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
19752    pub implicitRules: Option<Box<FHIRUri>>,
19753    #[primitive]
19754    #[doc = "The base language in which the resource is written."]
19755    pub language: Option<Box<FHIRCode>>,
19756    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
19757    pub text: Option<Box<Narrative>>,
19758    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
19759    pub contained: Option<Vec<Box<Resource>>>,
19760    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
19761    pub extension: Option<Vec<Box<Extension>>>,
19762    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
19763    pub modifierExtension: Option<Vec<Box<Extension>>>,
19764    #[rename_field = "identifier"]
19765    #[doc = "An identifier for this patient."]
19766    pub identifier_: Option<Vec<Box<Identifier>>>,
19767    #[primitive]
19768    #[doc = "Whether this patient record is in active use. \nMany systems use this property to mark as non-current patients, such as those that have not been seen for a period of time based on an organization's business rules.\n\nIt is often used to filter patient lists to exclude inactive patients\n\nDeceased patients may also be marked as inactive for the same reasons, but may be active for some time after death."]
19769    pub active: Option<Box<FHIRBoolean>>,
19770    #[doc = "A name associated with the individual."]
19771    pub name: Option<Vec<Box<HumanName>>>,
19772    #[doc = "A contact detail (e.g. a telephone number or an email address) by which the individual may be contacted."]
19773    pub telecom: Option<Vec<Box<ContactPoint>>>,
19774    #[primitive]
19775    #[doc = "Administrative Gender - the gender that the patient is considered to have for administration and record keeping purposes."]
19776    pub gender: Option<Box<terminology::AdministrativeGender>>,
19777    #[primitive]
19778    #[doc = "The date of birth for the individual."]
19779    pub birthDate: Option<Box<FHIRDate>>,
19780    # [type_choice_variants (complex = [] , primitive = ["deceasedBoolean" , "deceasedDateTime"])]
19781    #[doc = "Indicates if the individual is deceased or not."]
19782    pub deceased: Option<PatientDeceasedTypeChoice>,
19783    #[doc = "An address for the individual."]
19784    pub address: Option<Vec<Box<Address>>>,
19785    #[doc = "This field contains a patient's most recent marital (civil) status."]
19786    pub maritalStatus: Option<Box<CodeableConcept>>,
19787    # [type_choice_variants (complex = [] , primitive = ["multipleBirthBoolean" , "multipleBirthInteger"])]
19788    #[doc = "Indicates whether the patient is part of a multiple (boolean) or indicates the actual birth order (integer)."]
19789    pub multipleBirth: Option<PatientMultipleBirthTypeChoice>,
19790    #[doc = "Image of the patient."]
19791    pub photo: Option<Vec<Box<Attachment>>>,
19792    #[doc = "A contact party (e.g. guardian, partner, friend) for the patient."]
19793    pub contact: Option<Vec<PatientContact>>,
19794    #[doc = "A language which may be used to communicate with the patient about his or her health."]
19795    pub communication: Option<Vec<PatientCommunication>>,
19796    # [reference (targets = ["Organization" , "Practitioner" , "PractitionerRole"])]
19797    #[doc = "Patient's nominated care provider."]
19798    pub generalPractitioner: Option<Vec<Box<Reference>>>,
19799    # [reference (targets = ["Organization"])]
19800    #[doc = "Organization that is the custodian of the patient record."]
19801    pub managingOrganization: Option<Box<Reference>>,
19802    #[doc = "Link to another patient resource that concerns the same actual patient."]
19803    pub link: Option<Vec<PatientLink>>,
19804}
19805#[derive(
19806    Clone,
19807    Reflect,
19808    Debug,
19809    Default,
19810    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
19811    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
19812)]
19813#[fhir_serialize_type = "resource"]
19814#[doc = "This resource provides the status of the payment for goods and services rendered, and the request and response resource references."]
19815pub struct PaymentNotice {
19816    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
19817    pub id: Option<String>,
19818    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
19819    pub meta: Option<Box<Meta>>,
19820    #[primitive]
19821    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
19822    pub implicitRules: Option<Box<FHIRUri>>,
19823    #[primitive]
19824    #[doc = "The base language in which the resource is written."]
19825    pub language: Option<Box<FHIRCode>>,
19826    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
19827    pub text: Option<Box<Narrative>>,
19828    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
19829    pub contained: Option<Vec<Box<Resource>>>,
19830    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
19831    pub extension: Option<Vec<Box<Extension>>>,
19832    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
19833    pub modifierExtension: Option<Vec<Box<Extension>>>,
19834    #[rename_field = "identifier"]
19835    #[doc = "A unique identifier assigned to this payment notice."]
19836    pub identifier_: Option<Vec<Box<Identifier>>>,
19837    #[primitive]
19838    #[doc = "The status of the resource instance."]
19839    pub status: Box<terminology::FmStatus>,
19840    # [reference (targets = ["Resource"])]
19841    #[doc = "Reference of resource for which payment is being made."]
19842    pub request: Option<Box<Reference>>,
19843    # [reference (targets = ["Resource"])]
19844    #[doc = "Reference of response to resource for which payment is being made."]
19845    pub response: Option<Box<Reference>>,
19846    #[primitive]
19847    #[doc = "The date when this resource was created."]
19848    pub created: Box<FHIRDateTime>,
19849    # [reference (targets = ["Practitioner" , "PractitionerRole" , "Organization"])]
19850    #[doc = "The practitioner who is responsible for the services rendered to the patient."]
19851    pub provider: Option<Box<Reference>>,
19852    # [reference (targets = ["PaymentReconciliation"])]
19853    #[doc = "A reference to the payment which is the subject of this notice."]
19854    pub payment: Box<Reference>,
19855    #[primitive]
19856    #[doc = "The date when the above payment action occurred."]
19857    pub paymentDate: Option<Box<FHIRDate>>,
19858    # [reference (targets = ["Practitioner" , "PractitionerRole" , "Organization"])]
19859    #[doc = "The party who will receive or has received payment that is the subject of this notification."]
19860    pub payee: Option<Box<Reference>>,
19861    # [reference (targets = ["Organization"])]
19862    #[doc = "The party who is notified of the payment status."]
19863    pub recipient: Box<Reference>,
19864    #[doc = "The amount sent to the payee."]
19865    pub amount: Box<Money>,
19866    #[doc = "A code indicating whether payment has been sent or cleared."]
19867    pub paymentStatus: Option<Box<CodeableConcept>>,
19868}
19869#[derive(
19870    Clone,
19871    Reflect,
19872    Debug,
19873    Default,
19874    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
19875    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
19876)]
19877#[fhir_serialize_type = "complex"]
19878#[doc = "Distribution of the payment amount for a previously acknowledged payable."]
19879pub struct PaymentReconciliationDetail {
19880    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
19881    pub id: Option<String>,
19882    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
19883    pub extension: Option<Vec<Box<Extension>>>,
19884    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
19885    pub modifierExtension: Option<Vec<Box<Extension>>>,
19886    #[rename_field = "identifier"]
19887    #[doc = "Unique identifier for the current payment item for the referenced payable."]
19888    pub identifier_: Option<Box<Identifier>>,
19889    #[doc = "Unique identifier for the prior payment item for the referenced payable."]
19890    pub predecessor: Option<Box<Identifier>>,
19891    #[rename_field = "type"]
19892    #[doc = "Code to indicate the nature of the payment."]
19893    pub type_: Box<CodeableConcept>,
19894    # [reference (targets = ["Resource"])]
19895    #[doc = "A resource, such as a Claim, the evaluation of which could lead to payment."]
19896    pub request: Option<Box<Reference>>,
19897    # [reference (targets = ["Practitioner" , "PractitionerRole" , "Organization"])]
19898    #[doc = "The party which submitted the claim or financial transaction."]
19899    pub submitter: Option<Box<Reference>>,
19900    # [reference (targets = ["Resource"])]
19901    #[doc = "A resource, such as a ClaimResponse, which contains a commitment to payment."]
19902    pub response: Option<Box<Reference>>,
19903    #[primitive]
19904    #[doc = "The date from the response resource containing a commitment to pay."]
19905    pub date: Option<Box<FHIRDate>>,
19906    # [reference (targets = ["PractitionerRole"])]
19907    #[doc = "A reference to the individual who is responsible for inquiries regarding the response and its payment."]
19908    pub responsible: Option<Box<Reference>>,
19909    # [reference (targets = ["Practitioner" , "PractitionerRole" , "Organization"])]
19910    #[doc = "The party which is receiving the payment."]
19911    pub payee: Option<Box<Reference>>,
19912    #[doc = "The monetary amount allocated from the total payment to the payable."]
19913    pub amount: Option<Box<Money>>,
19914}
19915#[derive(
19916    Clone,
19917    Reflect,
19918    Debug,
19919    Default,
19920    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
19921    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
19922)]
19923#[fhir_serialize_type = "complex"]
19924#[doc = "A note that describes or explains the processing in a human readable form."]
19925pub struct PaymentReconciliationProcessNote {
19926    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
19927    pub id: Option<String>,
19928    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
19929    pub extension: Option<Vec<Box<Extension>>>,
19930    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
19931    pub modifierExtension: Option<Vec<Box<Extension>>>,
19932    #[rename_field = "type"]
19933    #[primitive]
19934    #[doc = "The business purpose of the note text."]
19935    pub type_: Option<Box<terminology::NoteType>>,
19936    #[primitive]
19937    #[doc = "The explanation or description associated with the processing."]
19938    pub text: Option<Box<FHIRString>>,
19939}
19940#[derive(
19941    Clone,
19942    Reflect,
19943    Debug,
19944    Default,
19945    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
19946    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
19947)]
19948#[fhir_serialize_type = "resource"]
19949#[doc = "This resource provides the details including amount of a payment and allocates the payment items being paid."]
19950pub struct PaymentReconciliation {
19951    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
19952    pub id: Option<String>,
19953    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
19954    pub meta: Option<Box<Meta>>,
19955    #[primitive]
19956    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
19957    pub implicitRules: Option<Box<FHIRUri>>,
19958    #[primitive]
19959    #[doc = "The base language in which the resource is written."]
19960    pub language: Option<Box<FHIRCode>>,
19961    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
19962    pub text: Option<Box<Narrative>>,
19963    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
19964    pub contained: Option<Vec<Box<Resource>>>,
19965    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
19966    pub extension: Option<Vec<Box<Extension>>>,
19967    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
19968    pub modifierExtension: Option<Vec<Box<Extension>>>,
19969    #[rename_field = "identifier"]
19970    #[doc = "A unique identifier assigned to this payment reconciliation."]
19971    pub identifier_: Option<Vec<Box<Identifier>>>,
19972    #[primitive]
19973    #[doc = "The status of the resource instance."]
19974    pub status: Box<terminology::FmStatus>,
19975    #[doc = "The period of time for which payments have been gathered into this bulk payment for settlement."]
19976    pub period: Option<Box<Period>>,
19977    #[primitive]
19978    #[doc = "The date when the resource was created."]
19979    pub created: Box<FHIRDateTime>,
19980    # [reference (targets = ["Organization"])]
19981    #[doc = "The party who generated the payment."]
19982    pub paymentIssuer: Option<Box<Reference>>,
19983    # [reference (targets = ["Task"])]
19984    #[doc = "Original request resource reference."]
19985    pub request: Option<Box<Reference>>,
19986    # [reference (targets = ["Practitioner" , "PractitionerRole" , "Organization"])]
19987    #[doc = "The practitioner who is responsible for the services rendered to the patient."]
19988    pub requestor: Option<Box<Reference>>,
19989    #[primitive]
19990    #[doc = "The outcome of a request for a reconciliation."]
19991    pub outcome: Option<Box<terminology::RemittanceOutcome>>,
19992    #[primitive]
19993    #[doc = "A human readable description of the status of the request for the reconciliation."]
19994    pub disposition: Option<Box<FHIRString>>,
19995    #[primitive]
19996    #[doc = "The date of payment as indicated on the financial instrument."]
19997    pub paymentDate: Box<FHIRDate>,
19998    #[doc = "Total payment amount as indicated on the financial instrument."]
19999    pub paymentAmount: Box<Money>,
20000    #[doc = "Issuer's unique identifier for the payment instrument."]
20001    pub paymentIdentifier: Option<Box<Identifier>>,
20002    #[doc = "Distribution of the payment amount for a previously acknowledged payable."]
20003    pub detail: Option<Vec<PaymentReconciliationDetail>>,
20004    #[doc = "A code for the form to be used for printing the content."]
20005    pub formCode: Option<Box<CodeableConcept>>,
20006    #[doc = "A note that describes or explains the processing in a human readable form."]
20007    pub processNote: Option<Vec<PaymentReconciliationProcessNote>>,
20008}
20009#[derive(
20010    Clone,
20011    Reflect,
20012    Debug,
20013    Default,
20014    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
20015    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
20016)]
20017#[fhir_serialize_type = "complex"]
20018#[doc = "Link to a resource that concerns the same actual person."]
20019pub struct PersonLink {
20020    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
20021    pub id: Option<String>,
20022    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
20023    pub extension: Option<Vec<Box<Extension>>>,
20024    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
20025    pub modifierExtension: Option<Vec<Box<Extension>>>,
20026    # [reference (targets = ["Patient" , "Practitioner" , "RelatedPerson" , "Person"])]
20027    #[doc = "The resource to which this actual person is associated."]
20028    pub target: Box<Reference>,
20029    #[primitive]
20030    #[doc = "Level of assurance that this link is associated with the target resource."]
20031    pub assurance: Option<Box<terminology::IdentityAssuranceLevel>>,
20032}
20033#[derive(
20034    Clone,
20035    Reflect,
20036    Debug,
20037    Default,
20038    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
20039    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
20040)]
20041#[fhir_serialize_type = "resource"]
20042#[doc = "Demographics and administrative information about a person independent of a specific health-related context."]
20043pub struct Person {
20044    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
20045    pub id: Option<String>,
20046    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
20047    pub meta: Option<Box<Meta>>,
20048    #[primitive]
20049    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
20050    pub implicitRules: Option<Box<FHIRUri>>,
20051    #[primitive]
20052    #[doc = "The base language in which the resource is written."]
20053    pub language: Option<Box<FHIRCode>>,
20054    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
20055    pub text: Option<Box<Narrative>>,
20056    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
20057    pub contained: Option<Vec<Box<Resource>>>,
20058    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
20059    pub extension: Option<Vec<Box<Extension>>>,
20060    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
20061    pub modifierExtension: Option<Vec<Box<Extension>>>,
20062    #[rename_field = "identifier"]
20063    #[doc = "Identifier for a person within a particular scope."]
20064    pub identifier_: Option<Vec<Box<Identifier>>>,
20065    #[doc = "A name associated with the person."]
20066    pub name: Option<Vec<Box<HumanName>>>,
20067    #[doc = "A contact detail for the person, e.g. a telephone number or an email address."]
20068    pub telecom: Option<Vec<Box<ContactPoint>>>,
20069    #[primitive]
20070    #[doc = "Administrative Gender."]
20071    pub gender: Option<Box<terminology::AdministrativeGender>>,
20072    #[primitive]
20073    #[doc = "The birth date for the person."]
20074    pub birthDate: Option<Box<FHIRDate>>,
20075    #[doc = "One or more addresses for the person."]
20076    pub address: Option<Vec<Box<Address>>>,
20077    #[doc = "An image that can be displayed as a thumbnail of the person to enhance the identification of the individual."]
20078    pub photo: Option<Box<Attachment>>,
20079    # [reference (targets = ["Organization"])]
20080    #[doc = "The organization that is the custodian of the person record."]
20081    pub managingOrganization: Option<Box<Reference>>,
20082    #[primitive]
20083    #[doc = "Whether this person's record is in active use."]
20084    pub active: Option<Box<FHIRBoolean>>,
20085    #[doc = "Link to a resource that concerns the same actual person."]
20086    pub link: Option<Vec<PersonLink>>,
20087}
20088#[derive(
20089    Clone,
20090    Reflect,
20091    Debug,
20092    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
20093    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
20094)]
20095#[fhir_serialize_type = "typechoice"]
20096#[type_choice_field_name = "subject"]
20097pub enum PlanDefinitionSubjectTypeChoice {
20098    CodeableConcept(Box<CodeableConcept>),
20099    # [reference (targets = ["Group"])]
20100    Reference(Box<Reference>),
20101}
20102impl Default for PlanDefinitionSubjectTypeChoice {
20103    fn default() -> Self {
20104        PlanDefinitionSubjectTypeChoice::CodeableConcept(Box::new(Default::default()))
20105    }
20106}
20107#[derive(
20108    Clone,
20109    Reflect,
20110    Debug,
20111    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
20112    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
20113)]
20114#[fhir_serialize_type = "typechoice"]
20115#[type_choice_field_name = "detail"]
20116pub enum PlanDefinitionGoalTargetDetailTypeChoice {
20117    Quantity(Box<Quantity>),
20118    Range(Box<Range>),
20119    CodeableConcept(Box<CodeableConcept>),
20120}
20121impl Default for PlanDefinitionGoalTargetDetailTypeChoice {
20122    fn default() -> Self {
20123        PlanDefinitionGoalTargetDetailTypeChoice::Quantity(Box::new(Default::default()))
20124    }
20125}
20126#[derive(
20127    Clone,
20128    Reflect,
20129    Debug,
20130    Default,
20131    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
20132    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
20133)]
20134#[fhir_serialize_type = "complex"]
20135#[doc = "Indicates what should be done and within what timeframe."]
20136pub struct PlanDefinitionGoalTarget {
20137    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
20138    pub id: Option<String>,
20139    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
20140    pub extension: Option<Vec<Box<Extension>>>,
20141    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
20142    pub modifierExtension: Option<Vec<Box<Extension>>>,
20143    #[doc = "The parameter whose value is to be tracked, e.g. body weight, blood pressure, or hemoglobin A1c level."]
20144    pub measure: Option<Box<CodeableConcept>>,
20145    # [type_choice_variants (complex = ["detailQuantity" , "detailRange" , "detailCodeableConcept"] , primitive = [])]
20146    #[doc = "The target value of the measure to be achieved to signify fulfillment of the goal, e.g. 150 pounds or 7.0%. Either the high or low or both values of the range can be specified. When a low value is missing, it indicates that the goal is achieved at any value at or below the high value. Similarly, if the high value is missing, it indicates that the goal is achieved at any value at or above the low value."]
20147    pub detail: Option<PlanDefinitionGoalTargetDetailTypeChoice>,
20148    #[doc = "Indicates the timeframe after the start of the goal in which the goal should be met."]
20149    pub due: Option<Box<Duration>>,
20150}
20151#[derive(
20152    Clone,
20153    Reflect,
20154    Debug,
20155    Default,
20156    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
20157    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
20158)]
20159#[fhir_serialize_type = "complex"]
20160#[doc = "Goals that describe what the activities within the plan are intended to achieve. For example, weight loss, restoring an activity of daily living, obtaining herd immunity via immunization, meeting a process improvement objective, etc."]
20161pub struct PlanDefinitionGoal {
20162    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
20163    pub id: Option<String>,
20164    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
20165    pub extension: Option<Vec<Box<Extension>>>,
20166    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
20167    pub modifierExtension: Option<Vec<Box<Extension>>>,
20168    #[doc = "Indicates a category the goal falls within."]
20169    pub category: Option<Box<CodeableConcept>>,
20170    #[doc = "Human-readable and/or coded description of a specific desired objective of care, such as \"control blood pressure\" or \"negotiate an obstacle course\" or \"dance with child at wedding\"."]
20171    pub description: Box<CodeableConcept>,
20172    #[doc = "Identifies the expected level of importance associated with reaching/sustaining the defined goal."]
20173    pub priority: Option<Box<CodeableConcept>>,
20174    #[doc = "The event after which the goal should begin being pursued."]
20175    pub start: Option<Box<CodeableConcept>>,
20176    #[doc = "Identifies problems, conditions, issues, or concerns the goal is intended to address."]
20177    pub addresses: Option<Vec<Box<CodeableConcept>>>,
20178    #[doc = "Didactic or other informational resources associated with the goal that provide further supporting information about the goal. Information resources can include inline text commentary and links to web resources."]
20179    pub documentation: Option<Vec<Box<RelatedArtifact>>>,
20180    #[doc = "Indicates what should be done and within what timeframe."]
20181    pub target: Option<Vec<PlanDefinitionGoalTarget>>,
20182}
20183#[derive(
20184    Clone,
20185    Reflect,
20186    Debug,
20187    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
20188    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
20189)]
20190#[fhir_serialize_type = "typechoice"]
20191#[type_choice_field_name = "subject"]
20192pub enum PlanDefinitionActionSubjectTypeChoice {
20193    CodeableConcept(Box<CodeableConcept>),
20194    # [reference (targets = ["Group"])]
20195    Reference(Box<Reference>),
20196}
20197impl Default for PlanDefinitionActionSubjectTypeChoice {
20198    fn default() -> Self {
20199        PlanDefinitionActionSubjectTypeChoice::CodeableConcept(Box::new(Default::default()))
20200    }
20201}
20202#[derive(
20203    Clone,
20204    Reflect,
20205    Debug,
20206    Default,
20207    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
20208    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
20209)]
20210#[fhir_serialize_type = "complex"]
20211#[doc = "An expression that describes applicability criteria or start/stop conditions for the action."]
20212pub struct PlanDefinitionActionCondition {
20213    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
20214    pub id: Option<String>,
20215    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
20216    pub extension: Option<Vec<Box<Extension>>>,
20217    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
20218    pub modifierExtension: Option<Vec<Box<Extension>>>,
20219    #[primitive]
20220    #[doc = "The kind of condition."]
20221    pub kind: Box<terminology::ActionConditionKind>,
20222    #[doc = "An expression that returns true or false, indicating whether the condition is satisfied."]
20223    pub expression: Option<Box<Expression>>,
20224}
20225#[derive(
20226    Clone,
20227    Reflect,
20228    Debug,
20229    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
20230    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
20231)]
20232#[fhir_serialize_type = "typechoice"]
20233#[type_choice_field_name = "offset"]
20234pub enum PlanDefinitionActionRelatedActionOffsetTypeChoice {
20235    Duration(Box<Duration>),
20236    Range(Box<Range>),
20237}
20238impl Default for PlanDefinitionActionRelatedActionOffsetTypeChoice {
20239    fn default() -> Self {
20240        PlanDefinitionActionRelatedActionOffsetTypeChoice::Duration(Box::new(Default::default()))
20241    }
20242}
20243#[derive(
20244    Clone,
20245    Reflect,
20246    Debug,
20247    Default,
20248    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
20249    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
20250)]
20251#[fhir_serialize_type = "complex"]
20252#[doc = "A relationship to another action such as \"before\" or \"30-60 minutes after start of\"."]
20253pub struct PlanDefinitionActionRelatedAction {
20254    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
20255    pub id: Option<String>,
20256    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
20257    pub extension: Option<Vec<Box<Extension>>>,
20258    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
20259    pub modifierExtension: Option<Vec<Box<Extension>>>,
20260    #[primitive]
20261    #[doc = "The element id of the related action."]
20262    pub actionId: Box<FHIRId>,
20263    #[primitive]
20264    #[doc = "The relationship of this action to the related action."]
20265    pub relationship: Box<terminology::ActionRelationshipType>,
20266    # [type_choice_variants (complex = ["offsetDuration" , "offsetRange"] , primitive = [])]
20267    #[doc = "A duration or range of durations to apply to the relationship. For example, 30-60 minutes before."]
20268    pub offset: Option<PlanDefinitionActionRelatedActionOffsetTypeChoice>,
20269}
20270#[derive(
20271    Clone,
20272    Reflect,
20273    Debug,
20274    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
20275    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
20276)]
20277#[fhir_serialize_type = "typechoice"]
20278#[type_choice_field_name = "timing"]
20279pub enum PlanDefinitionActionTimingTypeChoice {
20280    DateTime(Box<FHIRDateTime>),
20281    Age(Box<Age>),
20282    Period(Box<Period>),
20283    Duration(Box<Duration>),
20284    Range(Box<Range>),
20285    Timing(Box<Timing>),
20286}
20287impl Default for PlanDefinitionActionTimingTypeChoice {
20288    fn default() -> Self {
20289        PlanDefinitionActionTimingTypeChoice::DateTime(Box::new(Default::default()))
20290    }
20291}
20292#[derive(
20293    Clone,
20294    Reflect,
20295    Debug,
20296    Default,
20297    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
20298    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
20299)]
20300#[fhir_serialize_type = "complex"]
20301#[doc = "Indicates who should participate in performing the action described."]
20302pub struct PlanDefinitionActionParticipant {
20303    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
20304    pub id: Option<String>,
20305    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
20306    pub extension: Option<Vec<Box<Extension>>>,
20307    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
20308    pub modifierExtension: Option<Vec<Box<Extension>>>,
20309    #[rename_field = "type"]
20310    #[primitive]
20311    #[doc = "The type of participant in the action."]
20312    pub type_: Box<terminology::ActionParticipantType>,
20313    #[doc = "The role the participant should play in performing the described action."]
20314    pub role: Option<Box<CodeableConcept>>,
20315}
20316#[derive(
20317    Clone,
20318    Reflect,
20319    Debug,
20320    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
20321    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
20322)]
20323#[fhir_serialize_type = "typechoice"]
20324#[type_choice_field_name = "definition"]
20325pub enum PlanDefinitionActionDefinitionTypeChoice {
20326    Canonical(Box<FHIRCanonical>),
20327    Uri(Box<FHIRUri>),
20328}
20329impl Default for PlanDefinitionActionDefinitionTypeChoice {
20330    fn default() -> Self {
20331        PlanDefinitionActionDefinitionTypeChoice::Canonical(Box::new(Default::default()))
20332    }
20333}
20334#[derive(
20335    Clone,
20336    Reflect,
20337    Debug,
20338    Default,
20339    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
20340    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
20341)]
20342#[fhir_serialize_type = "complex"]
20343#[doc = "Customizations that should be applied to the statically defined resource. For example, if the dosage of a medication must be computed based on the patient's weight, a customization would be used to specify an expression that calculated the weight, and the path on the resource that would contain the result."]
20344pub struct PlanDefinitionActionDynamicValue {
20345    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
20346    pub id: Option<String>,
20347    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
20348    pub extension: Option<Vec<Box<Extension>>>,
20349    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
20350    pub modifierExtension: Option<Vec<Box<Extension>>>,
20351    #[primitive]
20352    #[doc = "The path to the element to be customized. This is the path on the resource that will hold the result of the calculation defined by the expression. The specified path SHALL be a FHIRPath resolveable on the specified target type of the ActivityDefinition, and SHALL consist only of identifiers, constant indexers, and a restricted subset of functions. The path is allowed to contain qualifiers (.) to traverse sub-elements, as well as indexers ([x]) to traverse multiple-cardinality sub-elements (see the [Simple FHIRPath Profile](fhirpath.html#simple) for full details)."]
20353    pub path: Option<Box<FHIRString>>,
20354    #[doc = "An expression specifying the value of the customized element."]
20355    pub expression: Option<Box<Expression>>,
20356}
20357#[derive(
20358    Clone,
20359    Reflect,
20360    Debug,
20361    Default,
20362    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
20363    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
20364)]
20365#[fhir_serialize_type = "complex"]
20366#[doc = "An action or group of actions to be taken as part of the plan."]
20367pub struct PlanDefinitionAction {
20368    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
20369    pub id: Option<String>,
20370    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
20371    pub extension: Option<Vec<Box<Extension>>>,
20372    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
20373    pub modifierExtension: Option<Vec<Box<Extension>>>,
20374    #[primitive]
20375    #[doc = "A user-visible prefix for the action."]
20376    pub prefix: Option<Box<FHIRString>>,
20377    #[primitive]
20378    #[doc = "The title of the action displayed to a user."]
20379    pub title: Option<Box<FHIRString>>,
20380    #[primitive]
20381    #[doc = "A brief description of the action used to provide a summary to display to the user."]
20382    pub description: Option<Box<FHIRString>>,
20383    #[primitive]
20384    #[doc = "A text equivalent of the action to be performed. This provides a human-interpretable description of the action when the definition is consumed by a system that might not be capable of interpreting it dynamically."]
20385    pub textEquivalent: Option<Box<FHIRString>>,
20386    #[primitive]
20387    #[doc = "Indicates how quickly the action should be addressed with respect to other actions."]
20388    pub priority: Option<Box<terminology::RequestPriority>>,
20389    #[doc = "A code that provides meaning for the action or action group. For example, a section may have a LOINC code for the section of a documentation template."]
20390    pub code: Option<Vec<Box<CodeableConcept>>>,
20391    #[doc = "A description of why this action is necessary or appropriate."]
20392    pub reason: Option<Vec<Box<CodeableConcept>>>,
20393    #[doc = "Didactic or other informational resources associated with the action that can be provided to the CDS recipient. Information resources can include inline text commentary and links to web resources."]
20394    pub documentation: Option<Vec<Box<RelatedArtifact>>>,
20395    #[primitive]
20396    #[doc = "Identifies goals that this action supports. The reference must be to a goal element defined within this plan definition."]
20397    pub goalId: Option<Vec<Box<FHIRId>>>,
20398    # [type_choice_variants (complex = ["subjectCodeableConcept" , "subjectReference"] , primitive = [])]
20399    #[doc = "A code or group definition that describes the intended subject of the action and its children, if any."]
20400    pub subject: Option<PlanDefinitionActionSubjectTypeChoice>,
20401    #[doc = "A description of when the action should be triggered."]
20402    pub trigger: Option<Vec<Box<TriggerDefinition>>>,
20403    #[doc = "An expression that describes applicability criteria or start/stop conditions for the action."]
20404    pub condition: Option<Vec<PlanDefinitionActionCondition>>,
20405    #[doc = "Defines input data requirements for the action."]
20406    pub input: Option<Vec<Box<DataRequirement>>>,
20407    #[doc = "Defines the outputs of the action, if any."]
20408    pub output: Option<Vec<Box<DataRequirement>>>,
20409    #[doc = "A relationship to another action such as \"before\" or \"30-60 minutes after start of\"."]
20410    pub relatedAction: Option<Vec<PlanDefinitionActionRelatedAction>>,
20411    # [type_choice_variants (complex = ["timingAge" , "timingPeriod" , "timingDuration" , "timingRange" , "timingTiming"] , primitive = ["timingDateTime"])]
20412    #[doc = "An optional value describing when the action should be performed."]
20413    pub timing: Option<PlanDefinitionActionTimingTypeChoice>,
20414    #[doc = "Indicates who should participate in performing the action described."]
20415    pub participant: Option<Vec<PlanDefinitionActionParticipant>>,
20416    #[rename_field = "type"]
20417    #[doc = "The type of action to perform (create, update, remove)."]
20418    pub type_: Option<Box<CodeableConcept>>,
20419    #[primitive]
20420    #[doc = "Defines the grouping behavior for the action and its children."]
20421    pub groupingBehavior: Option<Box<terminology::ActionGroupingBehavior>>,
20422    #[primitive]
20423    #[doc = "Defines the selection behavior for the action and its children."]
20424    pub selectionBehavior: Option<Box<terminology::ActionSelectionBehavior>>,
20425    #[primitive]
20426    #[doc = "Defines the required behavior for the action."]
20427    pub requiredBehavior: Option<Box<terminology::ActionRequiredBehavior>>,
20428    #[primitive]
20429    #[doc = "Defines whether the action should usually be preselected."]
20430    pub precheckBehavior: Option<Box<terminology::ActionPrecheckBehavior>>,
20431    #[primitive]
20432    #[doc = "Defines whether the action can be selected multiple times."]
20433    pub cardinalityBehavior: Option<Box<terminology::ActionCardinalityBehavior>>,
20434    # [type_choice_variants (complex = [] , primitive = ["definitionCanonical" , "definitionUri"])]
20435    #[doc = "A reference to an ActivityDefinition that describes the action to be taken in detail, or a PlanDefinition that describes a series of actions to be taken."]
20436    pub definition: Option<PlanDefinitionActionDefinitionTypeChoice>,
20437    #[primitive]
20438    #[doc = "A reference to a StructureMap resource that defines a transform that can be executed to produce the intent resource using the ActivityDefinition instance as the input."]
20439    pub transform: Option<Box<FHIRCanonical>>,
20440    #[doc = "Customizations that should be applied to the statically defined resource. For example, if the dosage of a medication must be computed based on the patient's weight, a customization would be used to specify an expression that calculated the weight, and the path on the resource that would contain the result."]
20441    pub dynamicValue: Option<Vec<PlanDefinitionActionDynamicValue>>,
20442    #[doc = "Sub actions that are contained within the action. The behavior of this action determines the functionality of the sub-actions. For example, a selection behavior of at-most-one indicates that of the sub-actions, at most one may be chosen as part of realizing the action definition."]
20443    pub action: Option<Vec<PlanDefinitionAction>>,
20444}
20445#[derive(
20446    Clone,
20447    Reflect,
20448    Debug,
20449    Default,
20450    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
20451    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
20452)]
20453#[fhir_serialize_type = "resource"]
20454#[doc = "This resource allows for the definition of various types of plans as a sharable, consumable, and executable artifact. The resource is general enough to support the description of a broad range of clinical artifacts such as clinical decision support rules, order sets and protocols."]
20455pub struct PlanDefinition {
20456    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
20457    pub id: Option<String>,
20458    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
20459    pub meta: Option<Box<Meta>>,
20460    #[primitive]
20461    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
20462    pub implicitRules: Option<Box<FHIRUri>>,
20463    #[primitive]
20464    #[doc = "The base language in which the resource is written."]
20465    pub language: Option<Box<FHIRCode>>,
20466    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
20467    pub text: Option<Box<Narrative>>,
20468    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
20469    pub contained: Option<Vec<Box<Resource>>>,
20470    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
20471    pub extension: Option<Vec<Box<Extension>>>,
20472    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
20473    pub modifierExtension: Option<Vec<Box<Extension>>>,
20474    #[primitive]
20475    #[doc = "An absolute URI that is used to identify this plan definition when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this plan definition is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the plan definition is stored on different servers."]
20476    pub url: Option<Box<FHIRUri>>,
20477    #[rename_field = "identifier"]
20478    #[doc = "A formal identifier that is used to identify this plan definition when it is represented in other formats, or referenced in a specification, model, design or an instance."]
20479    pub identifier_: Option<Vec<Box<Identifier>>>,
20480    #[primitive]
20481    #[doc = "The identifier that is used to identify this version of the plan definition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the plan definition author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence. To provide a version consistent with the Decision Support Service specification, use the format Major.Minor.Revision (e.g. 1.0.0). For more information on versioning knowledge assets, refer to the Decision Support Service specification. Note that a version is required for non-experimental active artifacts."]
20482    pub version: Option<Box<FHIRString>>,
20483    #[primitive]
20484    #[doc = "A natural language name identifying the plan definition. This name should be usable as an identifier for the module by machine processing applications such as code generation."]
20485    pub name: Option<Box<FHIRString>>,
20486    #[primitive]
20487    #[doc = "A short, descriptive, user-friendly title for the plan definition."]
20488    pub title: Option<Box<FHIRString>>,
20489    #[primitive]
20490    #[doc = "An explanatory or alternate title for the plan definition giving additional information about its content."]
20491    pub subtitle: Option<Box<FHIRString>>,
20492    #[rename_field = "type"]
20493    #[doc = "A high-level category for the plan definition that distinguishes the kinds of systems that would be interested in the plan definition."]
20494    pub type_: Option<Box<CodeableConcept>>,
20495    #[primitive]
20496    #[doc = "The status of this plan definition. Enables tracking the life-cycle of the content."]
20497    pub status: Box<terminology::PublicationStatus>,
20498    #[primitive]
20499    #[doc = "A Boolean value to indicate that this plan definition is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage."]
20500    pub experimental: Option<Box<FHIRBoolean>>,
20501    # [type_choice_variants (complex = ["subjectCodeableConcept" , "subjectReference"] , primitive = [])]
20502    #[doc = "A code or group definition that describes the intended subject of the plan definition."]
20503    pub subject: Option<PlanDefinitionSubjectTypeChoice>,
20504    #[primitive]
20505    #[doc = "The date  (and optionally time) when the plan definition was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the plan definition changes."]
20506    pub date: Option<Box<FHIRDateTime>>,
20507    #[primitive]
20508    #[doc = "The name of the organization or individual that published the plan definition."]
20509    pub publisher: Option<Box<FHIRString>>,
20510    #[doc = "Contact details to assist a user in finding and communicating with the publisher."]
20511    pub contact: Option<Vec<Box<ContactDetail>>>,
20512    #[primitive]
20513    #[doc = "A free text natural language description of the plan definition from a consumer's perspective."]
20514    pub description: Option<Box<FHIRMarkdown>>,
20515    #[doc = "The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate plan definition instances."]
20516    pub useContext: Option<Vec<Box<UsageContext>>>,
20517    #[doc = "A legal or geographic region in which the plan definition is intended to be used."]
20518    pub jurisdiction: Option<Vec<Box<CodeableConcept>>>,
20519    #[primitive]
20520    #[doc = "Explanation of why this plan definition is needed and why it has been designed as it has."]
20521    pub purpose: Option<Box<FHIRMarkdown>>,
20522    #[primitive]
20523    #[doc = "A detailed description of how the plan definition is used from a clinical perspective."]
20524    pub usage: Option<Box<FHIRString>>,
20525    #[primitive]
20526    #[doc = "A copyright statement relating to the plan definition and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the plan definition."]
20527    pub copyright: Option<Box<FHIRMarkdown>>,
20528    #[primitive]
20529    #[doc = "The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage."]
20530    pub approvalDate: Option<Box<FHIRDate>>,
20531    #[primitive]
20532    #[doc = "The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date."]
20533    pub lastReviewDate: Option<Box<FHIRDate>>,
20534    #[doc = "The period during which the plan definition content was or is planned to be in active use."]
20535    pub effectivePeriod: Option<Box<Period>>,
20536    #[doc = "Descriptive topics related to the content of the plan definition. Topics provide a high-level categorization of the definition that can be useful for filtering and searching."]
20537    pub topic: Option<Vec<Box<CodeableConcept>>>,
20538    #[doc = "An individiual or organization primarily involved in the creation and maintenance of the content."]
20539    pub author: Option<Vec<Box<ContactDetail>>>,
20540    #[doc = "An individual or organization primarily responsible for internal coherence of the content."]
20541    pub editor: Option<Vec<Box<ContactDetail>>>,
20542    #[doc = "An individual or organization primarily responsible for review of some aspect of the content."]
20543    pub reviewer: Option<Vec<Box<ContactDetail>>>,
20544    #[doc = "An individual or organization responsible for officially endorsing the content for use in some setting."]
20545    pub endorser: Option<Vec<Box<ContactDetail>>>,
20546    #[doc = "Related artifacts such as additional documentation, justification, or bibliographic references."]
20547    pub relatedArtifact: Option<Vec<Box<RelatedArtifact>>>,
20548    #[primitive]
20549    #[doc = "A reference to a Library resource containing any formal logic used by the plan definition."]
20550    pub library: Option<Vec<Box<FHIRCanonical>>>,
20551    #[doc = "Goals that describe what the activities within the plan are intended to achieve. For example, weight loss, restoring an activity of daily living, obtaining herd immunity via immunization, meeting a process improvement objective, etc."]
20552    pub goal: Option<Vec<PlanDefinitionGoal>>,
20553    #[doc = "An action or group of actions to be taken as part of the plan."]
20554    pub action: Option<Vec<PlanDefinitionAction>>,
20555}
20556#[derive(
20557    Clone,
20558    Reflect,
20559    Debug,
20560    Default,
20561    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
20562    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
20563)]
20564#[fhir_serialize_type = "complex"]
20565#[doc = "The official certifications, training, and licenses that authorize or otherwise pertain to the provision of care by the practitioner.  For example, a medical license issued by a medical board authorizing the practitioner to practice medicine within a certian locality."]
20566pub struct PractitionerQualification {
20567    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
20568    pub id: Option<String>,
20569    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
20570    pub extension: Option<Vec<Box<Extension>>>,
20571    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
20572    pub modifierExtension: Option<Vec<Box<Extension>>>,
20573    #[rename_field = "identifier"]
20574    #[doc = "An identifier that applies to this person's qualification in this role."]
20575    pub identifier_: Option<Vec<Box<Identifier>>>,
20576    #[doc = "Coded representation of the qualification."]
20577    pub code: Box<CodeableConcept>,
20578    #[doc = "Period during which the qualification is valid."]
20579    pub period: Option<Box<Period>>,
20580    # [reference (targets = ["Organization"])]
20581    #[doc = "Organization that regulates and issues the qualification."]
20582    pub issuer: Option<Box<Reference>>,
20583}
20584#[derive(
20585    Clone,
20586    Reflect,
20587    Debug,
20588    Default,
20589    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
20590    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
20591)]
20592#[fhir_serialize_type = "resource"]
20593#[doc = "A person who is directly or indirectly involved in the provisioning of healthcare."]
20594pub struct Practitioner {
20595    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
20596    pub id: Option<String>,
20597    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
20598    pub meta: Option<Box<Meta>>,
20599    #[primitive]
20600    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
20601    pub implicitRules: Option<Box<FHIRUri>>,
20602    #[primitive]
20603    #[doc = "The base language in which the resource is written."]
20604    pub language: Option<Box<FHIRCode>>,
20605    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
20606    pub text: Option<Box<Narrative>>,
20607    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
20608    pub contained: Option<Vec<Box<Resource>>>,
20609    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
20610    pub extension: Option<Vec<Box<Extension>>>,
20611    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
20612    pub modifierExtension: Option<Vec<Box<Extension>>>,
20613    #[rename_field = "identifier"]
20614    #[doc = "An identifier that applies to this person in this role."]
20615    pub identifier_: Option<Vec<Box<Identifier>>>,
20616    #[primitive]
20617    #[doc = "Whether this practitioner's record is in active use."]
20618    pub active: Option<Box<FHIRBoolean>>,
20619    #[doc = "The name(s) associated with the practitioner."]
20620    pub name: Option<Vec<Box<HumanName>>>,
20621    #[doc = "A contact detail for the practitioner, e.g. a telephone number or an email address."]
20622    pub telecom: Option<Vec<Box<ContactPoint>>>,
20623    #[doc = "Address(es) of the practitioner that are not role specific (typically home address). \rWork addresses are not typically entered in this property as they are usually role dependent."]
20624    pub address: Option<Vec<Box<Address>>>,
20625    #[primitive]
20626    #[doc = "Administrative Gender - the gender that the person is considered to have for administration and record keeping purposes."]
20627    pub gender: Option<Box<terminology::AdministrativeGender>>,
20628    #[primitive]
20629    #[doc = "The date of birth for the practitioner."]
20630    pub birthDate: Option<Box<FHIRDate>>,
20631    #[doc = "Image of the person."]
20632    pub photo: Option<Vec<Box<Attachment>>>,
20633    #[doc = "The official certifications, training, and licenses that authorize or otherwise pertain to the provision of care by the practitioner.  For example, a medical license issued by a medical board authorizing the practitioner to practice medicine within a certian locality."]
20634    pub qualification: Option<Vec<PractitionerQualification>>,
20635    #[doc = "A language the practitioner can use in patient communication."]
20636    pub communication: Option<Vec<Box<CodeableConcept>>>,
20637}
20638#[derive(
20639    Clone,
20640    Reflect,
20641    Debug,
20642    Default,
20643    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
20644    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
20645)]
20646#[fhir_serialize_type = "complex"]
20647#[doc = "A collection of times the practitioner is available or performing this role at the location and/or healthcareservice."]
20648pub struct PractitionerRoleAvailableTime {
20649    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
20650    pub id: Option<String>,
20651    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
20652    pub extension: Option<Vec<Box<Extension>>>,
20653    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
20654    pub modifierExtension: Option<Vec<Box<Extension>>>,
20655    #[primitive]
20656    #[doc = "Indicates which days of the week are available between the start and end Times."]
20657    pub daysOfWeek: Option<Vec<Box<terminology::DaysOfWeek>>>,
20658    #[primitive]
20659    #[doc = "Is this always available? (hence times are irrelevant) e.g. 24 hour service."]
20660    pub allDay: Option<Box<FHIRBoolean>>,
20661    #[primitive]
20662    #[doc = "The opening time of day. Note: If the AllDay flag is set, then this time is ignored."]
20663    pub availableStartTime: Option<Box<FHIRTime>>,
20664    #[primitive]
20665    #[doc = "The closing time of day. Note: If the AllDay flag is set, then this time is ignored."]
20666    pub availableEndTime: Option<Box<FHIRTime>>,
20667}
20668#[derive(
20669    Clone,
20670    Reflect,
20671    Debug,
20672    Default,
20673    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
20674    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
20675)]
20676#[fhir_serialize_type = "complex"]
20677#[doc = "The practitioner is not available or performing this role during this period of time due to the provided reason."]
20678pub struct PractitionerRoleNotAvailable {
20679    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
20680    pub id: Option<String>,
20681    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
20682    pub extension: Option<Vec<Box<Extension>>>,
20683    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
20684    pub modifierExtension: Option<Vec<Box<Extension>>>,
20685    #[primitive]
20686    #[doc = "The reason that can be presented to the user as to why this time is not available."]
20687    pub description: Box<FHIRString>,
20688    #[doc = "Service is not available (seasonally or for a public holiday) from this date."]
20689    pub during: Option<Box<Period>>,
20690}
20691#[derive(
20692    Clone,
20693    Reflect,
20694    Debug,
20695    Default,
20696    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
20697    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
20698)]
20699#[fhir_serialize_type = "resource"]
20700#[doc = "A specific set of Roles/Locations/specialties/services that a practitioner may perform at an organization for a period of time."]
20701pub struct PractitionerRole {
20702    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
20703    pub id: Option<String>,
20704    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
20705    pub meta: Option<Box<Meta>>,
20706    #[primitive]
20707    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
20708    pub implicitRules: Option<Box<FHIRUri>>,
20709    #[primitive]
20710    #[doc = "The base language in which the resource is written."]
20711    pub language: Option<Box<FHIRCode>>,
20712    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
20713    pub text: Option<Box<Narrative>>,
20714    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
20715    pub contained: Option<Vec<Box<Resource>>>,
20716    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
20717    pub extension: Option<Vec<Box<Extension>>>,
20718    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
20719    pub modifierExtension: Option<Vec<Box<Extension>>>,
20720    #[rename_field = "identifier"]
20721    #[doc = "Business Identifiers that are specific to a role/location."]
20722    pub identifier_: Option<Vec<Box<Identifier>>>,
20723    #[primitive]
20724    #[doc = "Whether this practitioner role record is in active use."]
20725    pub active: Option<Box<FHIRBoolean>>,
20726    #[doc = "The period during which the person is authorized to act as a practitioner in these role(s) for the organization."]
20727    pub period: Option<Box<Period>>,
20728    # [reference (targets = ["Practitioner"])]
20729    #[doc = "Practitioner that is able to provide the defined services for the organization."]
20730    pub practitioner: Option<Box<Reference>>,
20731    # [reference (targets = ["Organization"])]
20732    #[doc = "The organization where the Practitioner performs the roles associated."]
20733    pub organization: Option<Box<Reference>>,
20734    #[doc = "Roles which this practitioner is authorized to perform for the organization."]
20735    pub code: Option<Vec<Box<CodeableConcept>>>,
20736    #[doc = "Specific specialty of the practitioner."]
20737    pub specialty: Option<Vec<Box<CodeableConcept>>>,
20738    # [reference (targets = ["Location"])]
20739    #[doc = "The location(s) at which this practitioner provides care."]
20740    pub location: Option<Vec<Box<Reference>>>,
20741    # [reference (targets = ["HealthcareService"])]
20742    #[doc = "The list of healthcare services that this worker provides for this role's Organization/Location(s)."]
20743    pub healthcareService: Option<Vec<Box<Reference>>>,
20744    #[doc = "Contact details that are specific to the role/location/service."]
20745    pub telecom: Option<Vec<Box<ContactPoint>>>,
20746    #[doc = "A collection of times the practitioner is available or performing this role at the location and/or healthcareservice."]
20747    pub availableTime: Option<Vec<PractitionerRoleAvailableTime>>,
20748    #[doc = "The practitioner is not available or performing this role during this period of time due to the provided reason."]
20749    pub notAvailable: Option<Vec<PractitionerRoleNotAvailable>>,
20750    #[primitive]
20751    #[doc = "A description of site availability exceptions, e.g. public holiday availability. Succinctly describing all possible exceptions to normal site availability as details in the available Times and not available Times."]
20752    pub availabilityExceptions: Option<Box<FHIRString>>,
20753    # [reference (targets = ["Endpoint"])]
20754    #[doc = "Technical endpoints providing access to services operated for the practitioner with this role."]
20755    pub endpoint: Option<Vec<Box<Reference>>>,
20756}
20757#[derive(
20758    Clone,
20759    Reflect,
20760    Debug,
20761    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
20762    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
20763)]
20764#[fhir_serialize_type = "typechoice"]
20765#[type_choice_field_name = "performed"]
20766pub enum ProcedurePerformedTypeChoice {
20767    DateTime(Box<FHIRDateTime>),
20768    Period(Box<Period>),
20769    String(Box<FHIRString>),
20770    Age(Box<Age>),
20771    Range(Box<Range>),
20772}
20773impl Default for ProcedurePerformedTypeChoice {
20774    fn default() -> Self {
20775        ProcedurePerformedTypeChoice::DateTime(Box::new(Default::default()))
20776    }
20777}
20778#[derive(
20779    Clone,
20780    Reflect,
20781    Debug,
20782    Default,
20783    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
20784    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
20785)]
20786#[fhir_serialize_type = "complex"]
20787#[doc = "Limited to \"real\" people rather than equipment."]
20788pub struct ProcedurePerformer {
20789    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
20790    pub id: Option<String>,
20791    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
20792    pub extension: Option<Vec<Box<Extension>>>,
20793    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
20794    pub modifierExtension: Option<Vec<Box<Extension>>>,
20795    #[doc = "Distinguishes the type of involvement of the performer in the procedure. For example, surgeon, anaesthetist, endoscopist."]
20796    pub function: Option<Box<CodeableConcept>>,
20797    # [reference (targets = ["Practitioner" , "PractitionerRole" , "Organization" , "Patient" , "RelatedPerson" , "Device"])]
20798    #[doc = "The practitioner who was involved in the procedure."]
20799    pub actor: Box<Reference>,
20800    # [reference (targets = ["Organization"])]
20801    #[doc = "The organization the device or practitioner was acting on behalf of."]
20802    pub onBehalfOf: Option<Box<Reference>>,
20803}
20804#[derive(
20805    Clone,
20806    Reflect,
20807    Debug,
20808    Default,
20809    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
20810    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
20811)]
20812#[fhir_serialize_type = "complex"]
20813#[doc = "A device that is implanted, removed or otherwise manipulated (calibration, battery replacement, fitting a prosthesis, attaching a wound-vac, etc.) as a focal portion of the Procedure."]
20814pub struct ProcedureFocalDevice {
20815    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
20816    pub id: Option<String>,
20817    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
20818    pub extension: Option<Vec<Box<Extension>>>,
20819    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
20820    pub modifierExtension: Option<Vec<Box<Extension>>>,
20821    #[doc = "The kind of change that happened to the device during the procedure."]
20822    pub action: Option<Box<CodeableConcept>>,
20823    # [reference (targets = ["Device"])]
20824    #[doc = "The device that was manipulated (changed) during the procedure."]
20825    pub manipulated: Box<Reference>,
20826}
20827#[derive(
20828    Clone,
20829    Reflect,
20830    Debug,
20831    Default,
20832    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
20833    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
20834)]
20835#[fhir_serialize_type = "resource"]
20836#[doc = "An action that is or was performed on or for a patient. This can be a physical intervention like an operation, or less invasive like long term services, counseling, or hypnotherapy."]
20837pub struct Procedure {
20838    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
20839    pub id: Option<String>,
20840    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
20841    pub meta: Option<Box<Meta>>,
20842    #[primitive]
20843    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
20844    pub implicitRules: Option<Box<FHIRUri>>,
20845    #[primitive]
20846    #[doc = "The base language in which the resource is written."]
20847    pub language: Option<Box<FHIRCode>>,
20848    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
20849    pub text: Option<Box<Narrative>>,
20850    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
20851    pub contained: Option<Vec<Box<Resource>>>,
20852    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
20853    pub extension: Option<Vec<Box<Extension>>>,
20854    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
20855    pub modifierExtension: Option<Vec<Box<Extension>>>,
20856    #[rename_field = "identifier"]
20857    #[doc = "Business identifiers assigned to this procedure by the performer or other systems which remain constant as the resource is updated and is propagated from server to server."]
20858    pub identifier_: Option<Vec<Box<Identifier>>>,
20859    #[primitive]
20860    #[doc = "The URL pointing to a FHIR-defined protocol, guideline, order set or other definition that is adhered to in whole or in part by this Procedure."]
20861    pub instantiatesCanonical: Option<Vec<Box<FHIRCanonical>>>,
20862    #[primitive]
20863    #[doc = "The URL pointing to an externally maintained protocol, guideline, order set or other definition that is adhered to in whole or in part by this Procedure."]
20864    pub instantiatesUri: Option<Vec<Box<FHIRUri>>>,
20865    # [reference (targets = ["CarePlan" , "ServiceRequest"])]
20866    #[doc = "A reference to a resource that contains details of the request for this procedure."]
20867    pub basedOn: Option<Vec<Box<Reference>>>,
20868    # [reference (targets = ["Procedure" , "Observation" , "MedicationAdministration"])]
20869    #[doc = "A larger event of which this particular procedure is a component or step."]
20870    pub partOf: Option<Vec<Box<Reference>>>,
20871    #[primitive]
20872    #[doc = "A code specifying the state of the procedure. Generally, this will be the in-progress or completed state."]
20873    pub status: Box<terminology::EventStatus>,
20874    #[doc = "Captures the reason for the current state of the procedure."]
20875    pub statusReason: Option<Box<CodeableConcept>>,
20876    #[doc = "A code that classifies the procedure for searching, sorting and display purposes (e.g. \"Surgical Procedure\")."]
20877    pub category: Option<Box<CodeableConcept>>,
20878    #[doc = "The specific procedure that is performed. Use text if the exact nature of the procedure cannot be coded (e.g. \"Laparoscopic Appendectomy\")."]
20879    pub code: Option<Box<CodeableConcept>>,
20880    # [reference (targets = ["Patient" , "Group"])]
20881    #[doc = "The person, animal or group on which the procedure was performed."]
20882    pub subject: Box<Reference>,
20883    # [reference (targets = ["Encounter"])]
20884    #[doc = "The Encounter during which this Procedure was created or performed or to which the creation of this record is tightly associated."]
20885    pub encounter: Option<Box<Reference>>,
20886    # [type_choice_variants (complex = ["performedPeriod" , "performedAge" , "performedRange"] , primitive = ["performedDateTime" , "performedString"])]
20887    #[doc = "Estimated or actual date, date-time, period, or age when the procedure was performed.  Allows a period to support complex procedures that span more than one date, and also allows for the length of the procedure to be captured."]
20888    pub performed: Option<ProcedurePerformedTypeChoice>,
20889    # [reference (targets = ["Patient" , "RelatedPerson" , "Practitioner" , "PractitionerRole"])]
20890    #[doc = "Individual who recorded the record and takes responsibility for its content."]
20891    pub recorder: Option<Box<Reference>>,
20892    # [reference (targets = ["Patient" , "RelatedPerson" , "Practitioner" , "PractitionerRole"])]
20893    #[doc = "Individual who is making the procedure statement."]
20894    pub asserter: Option<Box<Reference>>,
20895    #[doc = "Limited to \"real\" people rather than equipment."]
20896    pub performer: Option<Vec<ProcedurePerformer>>,
20897    # [reference (targets = ["Location"])]
20898    #[doc = "The location where the procedure actually happened.  E.g. a newborn at home, a tracheostomy at a restaurant."]
20899    pub location: Option<Box<Reference>>,
20900    #[doc = "The coded reason why the procedure was performed. This may be a coded entity of some type, or may simply be present as text."]
20901    pub reasonCode: Option<Vec<Box<CodeableConcept>>>,
20902    # [reference (targets = ["Condition" , "Observation" , "Procedure" , "DiagnosticReport" , "DocumentReference"])]
20903    #[doc = "The justification of why the procedure was performed."]
20904    pub reasonReference: Option<Vec<Box<Reference>>>,
20905    #[doc = "Detailed and structured anatomical location information. Multiple locations are allowed - e.g. multiple punch biopsies of a lesion."]
20906    pub bodySite: Option<Vec<Box<CodeableConcept>>>,
20907    #[doc = "The outcome of the procedure - did it resolve the reasons for the procedure being performed?"]
20908    pub outcome: Option<Box<CodeableConcept>>,
20909    # [reference (targets = ["DiagnosticReport" , "DocumentReference" , "Composition"])]
20910    #[doc = "This could be a histology result, pathology report, surgical report, etc."]
20911    pub report: Option<Vec<Box<Reference>>>,
20912    #[doc = "Any complications that occurred during the procedure, or in the immediate post-performance period. These are generally tracked separately from the notes, which will typically describe the procedure itself rather than any 'post procedure' issues."]
20913    pub complication: Option<Vec<Box<CodeableConcept>>>,
20914    # [reference (targets = ["Condition"])]
20915    #[doc = "Any complications that occurred during the procedure, or in the immediate post-performance period."]
20916    pub complicationDetail: Option<Vec<Box<Reference>>>,
20917    #[doc = "If the procedure required specific follow up - e.g. removal of sutures. The follow up may be represented as a simple note or could potentially be more complex, in which case the CarePlan resource can be used."]
20918    pub followUp: Option<Vec<Box<CodeableConcept>>>,
20919    #[doc = "Any other notes and comments about the procedure."]
20920    pub note: Option<Vec<Box<Annotation>>>,
20921    #[doc = "A device that is implanted, removed or otherwise manipulated (calibration, battery replacement, fitting a prosthesis, attaching a wound-vac, etc.) as a focal portion of the Procedure."]
20922    pub focalDevice: Option<Vec<ProcedureFocalDevice>>,
20923    # [reference (targets = ["Device" , "Medication" , "Substance"])]
20924    #[doc = "Identifies medications, devices and any other substance used as part of the procedure."]
20925    pub usedReference: Option<Vec<Box<Reference>>>,
20926    #[doc = "Identifies coded items that were used as part of the procedure."]
20927    pub usedCode: Option<Vec<Box<CodeableConcept>>>,
20928}
20929#[derive(
20930    Clone,
20931    Reflect,
20932    Debug,
20933    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
20934    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
20935)]
20936#[fhir_serialize_type = "typechoice"]
20937#[type_choice_field_name = "occurred"]
20938pub enum ProvenanceOccurredTypeChoice {
20939    Period(Box<Period>),
20940    DateTime(Box<FHIRDateTime>),
20941}
20942impl Default for ProvenanceOccurredTypeChoice {
20943    fn default() -> Self {
20944        ProvenanceOccurredTypeChoice::Period(Box::new(Default::default()))
20945    }
20946}
20947#[derive(
20948    Clone,
20949    Reflect,
20950    Debug,
20951    Default,
20952    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
20953    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
20954)]
20955#[fhir_serialize_type = "complex"]
20956#[doc = "An actor taking a role in an activity  for which it can be assigned some degree of responsibility for the activity taking place."]
20957pub struct ProvenanceAgent {
20958    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
20959    pub id: Option<String>,
20960    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
20961    pub extension: Option<Vec<Box<Extension>>>,
20962    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
20963    pub modifierExtension: Option<Vec<Box<Extension>>>,
20964    #[rename_field = "type"]
20965    #[doc = "The participation the agent had with respect to the activity."]
20966    pub type_: Option<Box<CodeableConcept>>,
20967    #[doc = "The function of the agent with respect to the activity. The security role enabling the agent with respect to the activity."]
20968    pub role: Option<Vec<Box<CodeableConcept>>>,
20969    # [reference (targets = ["Practitioner" , "PractitionerRole" , "RelatedPerson" , "Patient" , "Device" , "Organization"])]
20970    #[doc = "The individual, device or organization that participated in the event."]
20971    pub who: Box<Reference>,
20972    # [reference (targets = ["Practitioner" , "PractitionerRole" , "RelatedPerson" , "Patient" , "Device" , "Organization"])]
20973    #[doc = "The individual, device, or organization for whom the change was made."]
20974    pub onBehalfOf: Option<Box<Reference>>,
20975}
20976#[derive(
20977    Clone,
20978    Reflect,
20979    Debug,
20980    Default,
20981    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
20982    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
20983)]
20984#[fhir_serialize_type = "complex"]
20985#[doc = "An entity used in this activity."]
20986pub struct ProvenanceEntity {
20987    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
20988    pub id: Option<String>,
20989    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
20990    pub extension: Option<Vec<Box<Extension>>>,
20991    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
20992    pub modifierExtension: Option<Vec<Box<Extension>>>,
20993    #[primitive]
20994    #[doc = "How the entity was used during the activity."]
20995    pub role: Box<terminology::ProvenanceEntityRole>,
20996    # [reference (targets = ["Resource"])]
20997    #[doc = "Identity of the  Entity used. May be a logical or physical uri and maybe absolute or relative."]
20998    pub what: Box<Reference>,
20999    #[doc = "The entity is attributed to an agent to express the agent's responsibility for that entity, possibly along with other agents. This description can be understood as shorthand for saying that the agent was responsible for the activity which generated the entity."]
21000    pub agent: Option<Vec<ProvenanceAgent>>,
21001}
21002#[derive(
21003    Clone,
21004    Reflect,
21005    Debug,
21006    Default,
21007    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
21008    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
21009)]
21010#[fhir_serialize_type = "resource"]
21011#[doc = "Provenance of a resource is a record that describes entities and processes involved in producing and delivering or otherwise influencing that resource. Provenance provides a critical foundation for assessing authenticity, enabling trust, and allowing reproducibility. Provenance assertions are a form of contextual metadata and can themselves become important records with their own provenance. Provenance statement indicates clinical significance in terms of confidence in authenticity, reliability, and trustworthiness, integrity, and stage in lifecycle (e.g. Document Completion - has the artifact been legally authenticated), all of which may impact security, privacy, and trust policies."]
21012pub struct Provenance {
21013    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
21014    pub id: Option<String>,
21015    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
21016    pub meta: Option<Box<Meta>>,
21017    #[primitive]
21018    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
21019    pub implicitRules: Option<Box<FHIRUri>>,
21020    #[primitive]
21021    #[doc = "The base language in which the resource is written."]
21022    pub language: Option<Box<FHIRCode>>,
21023    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
21024    pub text: Option<Box<Narrative>>,
21025    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
21026    pub contained: Option<Vec<Box<Resource>>>,
21027    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
21028    pub extension: Option<Vec<Box<Extension>>>,
21029    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
21030    pub modifierExtension: Option<Vec<Box<Extension>>>,
21031    #[cardinality(min = 1usize)]
21032    # [reference (targets = ["Resource"])]
21033    #[doc = "The Reference(s) that were generated or updated by  the activity described in this resource. A provenance can point to more than one target if multiple resources were created/updated by the same activity."]
21034    pub target: Vec<Box<Reference>>,
21035    # [type_choice_variants (complex = ["occurredPeriod"] , primitive = ["occurredDateTime"])]
21036    #[doc = "The period during which the activity occurred."]
21037    pub occurred: Option<ProvenanceOccurredTypeChoice>,
21038    #[primitive]
21039    #[doc = "The instant of time at which the activity was recorded."]
21040    pub recorded: Box<FHIRInstant>,
21041    #[primitive]
21042    #[doc = "Policy or plan the activity was defined by. Typically, a single activity may have multiple applicable policy documents, such as patient consent, guarantor funding, etc."]
21043    pub policy: Option<Vec<Box<FHIRUri>>>,
21044    # [reference (targets = ["Location"])]
21045    #[doc = "Where the activity occurred, if relevant."]
21046    pub location: Option<Box<Reference>>,
21047    #[doc = "The reason that the activity was taking place."]
21048    pub reason: Option<Vec<Box<CodeableConcept>>>,
21049    #[doc = "An activity is something that occurs over a period of time and acts upon or with entities; it may include consuming, processing, transforming, modifying, relocating, using, or generating entities."]
21050    pub activity: Option<Box<CodeableConcept>>,
21051    #[cardinality(min = 1usize)]
21052    #[doc = "An actor taking a role in an activity  for which it can be assigned some degree of responsibility for the activity taking place."]
21053    pub agent: Vec<ProvenanceAgent>,
21054    #[doc = "An entity used in this activity."]
21055    pub entity: Option<Vec<ProvenanceEntity>>,
21056    #[doc = "A digital signature on the target Reference(s). The signer should match a Provenance.agent. The purpose of the signature is indicated."]
21057    pub signature: Option<Vec<Box<Signature>>>,
21058}
21059#[derive(
21060    Clone,
21061    Reflect,
21062    Debug,
21063    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
21064    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
21065)]
21066#[fhir_serialize_type = "typechoice"]
21067#[type_choice_field_name = "answer"]
21068pub enum QuestionnaireItemEnableWhenAnswerTypeChoice {
21069    Boolean(Box<FHIRBoolean>),
21070    Decimal(Box<FHIRDecimal>),
21071    Integer(Box<FHIRInteger>),
21072    Date(Box<FHIRDate>),
21073    DateTime(Box<FHIRDateTime>),
21074    Time(Box<FHIRTime>),
21075    String(Box<FHIRString>),
21076    Coding(Box<Coding>),
21077    Quantity(Box<Quantity>),
21078    # [reference (targets = ["Resource"])]
21079    Reference(Box<Reference>),
21080}
21081impl Default for QuestionnaireItemEnableWhenAnswerTypeChoice {
21082    fn default() -> Self {
21083        QuestionnaireItemEnableWhenAnswerTypeChoice::Boolean(Box::new(Default::default()))
21084    }
21085}
21086#[derive(
21087    Clone,
21088    Reflect,
21089    Debug,
21090    Default,
21091    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
21092    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
21093)]
21094#[fhir_serialize_type = "complex"]
21095#[doc = "A constraint indicating that this item should only be enabled (displayed/allow answers to be captured) when the specified condition is true."]
21096pub struct QuestionnaireItemEnableWhen {
21097    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
21098    pub id: Option<String>,
21099    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
21100    pub extension: Option<Vec<Box<Extension>>>,
21101    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
21102    pub modifierExtension: Option<Vec<Box<Extension>>>,
21103    #[primitive]
21104    #[doc = "The linkId for the question whose answer (or lack of answer) governs whether this item is enabled."]
21105    pub question: Box<FHIRString>,
21106    #[primitive]
21107    #[doc = "Specifies the criteria by which the question is enabled."]
21108    pub operator: Box<terminology::QuestionnaireEnableOperator>,
21109    # [type_choice_variants (complex = ["answerCoding" , "answerQuantity" , "answerReference"] , primitive = ["answerBoolean" , "answerDecimal" , "answerInteger" , "answerDate" , "answerDateTime" , "answerTime" , "answerString"])]
21110    #[doc = "A value that the referenced question is tested using the specified operator in order for the item to be enabled."]
21111    pub answer: QuestionnaireItemEnableWhenAnswerTypeChoice,
21112}
21113#[derive(
21114    Clone,
21115    Reflect,
21116    Debug,
21117    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
21118    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
21119)]
21120#[fhir_serialize_type = "typechoice"]
21121#[type_choice_field_name = "value"]
21122pub enum QuestionnaireItemAnswerOptionValueTypeChoice {
21123    Integer(Box<FHIRInteger>),
21124    Date(Box<FHIRDate>),
21125    Time(Box<FHIRTime>),
21126    String(Box<FHIRString>),
21127    Coding(Box<Coding>),
21128    # [reference (targets = ["Resource"])]
21129    Reference(Box<Reference>),
21130}
21131impl Default for QuestionnaireItemAnswerOptionValueTypeChoice {
21132    fn default() -> Self {
21133        QuestionnaireItemAnswerOptionValueTypeChoice::Integer(Box::new(Default::default()))
21134    }
21135}
21136#[derive(
21137    Clone,
21138    Reflect,
21139    Debug,
21140    Default,
21141    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
21142    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
21143)]
21144#[fhir_serialize_type = "complex"]
21145#[doc = "One of the permitted answers for a \"choice\" or \"open-choice\" question."]
21146pub struct QuestionnaireItemAnswerOption {
21147    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
21148    pub id: Option<String>,
21149    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
21150    pub extension: Option<Vec<Box<Extension>>>,
21151    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
21152    pub modifierExtension: Option<Vec<Box<Extension>>>,
21153    # [type_choice_variants (complex = ["valueCoding" , "valueReference"] , primitive = ["valueInteger" , "valueDate" , "valueTime" , "valueString"])]
21154    #[doc = "A potential answer that's allowed as the answer to this question."]
21155    pub value: QuestionnaireItemAnswerOptionValueTypeChoice,
21156    #[primitive]
21157    #[doc = "Indicates whether the answer value is selected when the list of possible answers is initially shown."]
21158    pub initialSelected: Option<Box<FHIRBoolean>>,
21159}
21160#[derive(
21161    Clone,
21162    Reflect,
21163    Debug,
21164    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
21165    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
21166)]
21167#[fhir_serialize_type = "typechoice"]
21168#[type_choice_field_name = "value"]
21169pub enum QuestionnaireItemInitialValueTypeChoice {
21170    Boolean(Box<FHIRBoolean>),
21171    Decimal(Box<FHIRDecimal>),
21172    Integer(Box<FHIRInteger>),
21173    Date(Box<FHIRDate>),
21174    DateTime(Box<FHIRDateTime>),
21175    Time(Box<FHIRTime>),
21176    String(Box<FHIRString>),
21177    Uri(Box<FHIRUri>),
21178    Attachment(Box<Attachment>),
21179    Coding(Box<Coding>),
21180    Quantity(Box<Quantity>),
21181    # [reference (targets = ["Resource"])]
21182    Reference(Box<Reference>),
21183}
21184impl Default for QuestionnaireItemInitialValueTypeChoice {
21185    fn default() -> Self {
21186        QuestionnaireItemInitialValueTypeChoice::Boolean(Box::new(Default::default()))
21187    }
21188}
21189#[derive(
21190    Clone,
21191    Reflect,
21192    Debug,
21193    Default,
21194    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
21195    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
21196)]
21197#[fhir_serialize_type = "complex"]
21198#[doc = "One or more values that should be pre-populated in the answer when initially rendering the questionnaire for user input."]
21199pub struct QuestionnaireItemInitial {
21200    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
21201    pub id: Option<String>,
21202    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
21203    pub extension: Option<Vec<Box<Extension>>>,
21204    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
21205    pub modifierExtension: Option<Vec<Box<Extension>>>,
21206    # [type_choice_variants (complex = ["valueAttachment" , "valueCoding" , "valueQuantity" , "valueReference"] , primitive = ["valueBoolean" , "valueDecimal" , "valueInteger" , "valueDate" , "valueDateTime" , "valueTime" , "valueString" , "valueUri"])]
21207    #[doc = "The actual value to for an initial answer."]
21208    pub value: QuestionnaireItemInitialValueTypeChoice,
21209}
21210#[derive(
21211    Clone,
21212    Reflect,
21213    Debug,
21214    Default,
21215    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
21216    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
21217)]
21218#[fhir_serialize_type = "complex"]
21219#[doc = "A particular question, question grouping or display text that is part of the questionnaire."]
21220pub struct QuestionnaireItem {
21221    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
21222    pub id: Option<String>,
21223    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
21224    pub extension: Option<Vec<Box<Extension>>>,
21225    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
21226    pub modifierExtension: Option<Vec<Box<Extension>>>,
21227    #[primitive]
21228    #[doc = "An identifier that is unique within the Questionnaire allowing linkage to the equivalent item in a QuestionnaireResponse resource."]
21229    pub linkId: Box<FHIRString>,
21230    #[primitive]
21231    #[doc = "This element is a URI that refers to an [ElementDefinition](elementdefinition.html) that provides information about this item, including information that might otherwise be included in the instance of the Questionnaire resource. A detailed description of the construction of the URI is shown in Comments, below. If this element is present then the following element values MAY be derived from the Element Definition if the corresponding elements of this Questionnaire resource instance have no value:\n\n* code (ElementDefinition.code) \n* type (ElementDefinition.type) \n* required (ElementDefinition.min) \n* repeats (ElementDefinition.max) \n* maxLength (ElementDefinition.maxLength) \n* answerValueSet (ElementDefinition.binding)\n* options (ElementDefinition.binding)."]
21232    pub definition: Option<Box<FHIRUri>>,
21233    #[doc = "A terminology code that corresponds to this group or question (e.g. a code from LOINC, which defines many questions and answers)."]
21234    pub code: Option<Vec<Box<Coding>>>,
21235    #[primitive]
21236    #[doc = "A short label for a particular group, question or set of display text within the questionnaire used for reference by the individual completing the questionnaire."]
21237    pub prefix: Option<Box<FHIRString>>,
21238    #[primitive]
21239    #[doc = "The name of a section, the text of a question or text content for a display item."]
21240    pub text: Option<Box<FHIRString>>,
21241    #[rename_field = "type"]
21242    #[primitive]
21243    #[doc = "The type of questionnaire item this is - whether text for display, a grouping of other items or a particular type of data to be captured (string, integer, coded choice, etc.)."]
21244    pub type_: Box<terminology::ItemType>,
21245    #[doc = "A constraint indicating that this item should only be enabled (displayed/allow answers to be captured) when the specified condition is true."]
21246    pub enableWhen: Option<Vec<QuestionnaireItemEnableWhen>>,
21247    #[primitive]
21248    #[doc = "Controls how multiple enableWhen values are interpreted -  whether all or any must be true."]
21249    pub enableBehavior: Option<Box<terminology::QuestionnaireEnableBehavior>>,
21250    #[primitive]
21251    #[doc = "An indication, if true, that the item must be present in a \"completed\" QuestionnaireResponse.  If false, the item may be skipped when answering the questionnaire."]
21252    pub required: Option<Box<FHIRBoolean>>,
21253    #[primitive]
21254    #[doc = "An indication, if true, that the item may occur multiple times in the response, collecting multiple answers for questions or multiple sets of answers for groups."]
21255    pub repeats: Option<Box<FHIRBoolean>>,
21256    #[primitive]
21257    #[doc = "An indication, when true, that the value cannot be changed by a human respondent to the Questionnaire."]
21258    pub readOnly: Option<Box<FHIRBoolean>>,
21259    #[primitive]
21260    #[doc = "The maximum number of characters that are permitted in the answer to be considered a \"valid\" QuestionnaireResponse."]
21261    pub maxLength: Option<Box<FHIRInteger>>,
21262    #[primitive]
21263    #[doc = "A reference to a value set containing a list of codes representing permitted answers for a \"choice\" or \"open-choice\" question."]
21264    pub answerValueSet: Option<Box<FHIRCanonical>>,
21265    #[doc = "One of the permitted answers for a \"choice\" or \"open-choice\" question."]
21266    pub answerOption: Option<Vec<QuestionnaireItemAnswerOption>>,
21267    #[doc = "One or more values that should be pre-populated in the answer when initially rendering the questionnaire for user input."]
21268    pub initial: Option<Vec<QuestionnaireItemInitial>>,
21269    #[doc = "Text, questions and other groups to be nested beneath a question or group."]
21270    pub item: Option<Vec<QuestionnaireItem>>,
21271}
21272#[derive(
21273    Clone,
21274    Reflect,
21275    Debug,
21276    Default,
21277    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
21278    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
21279)]
21280#[fhir_serialize_type = "resource"]
21281#[doc = "A structured set of questions intended to guide the collection of answers from end-users. Questionnaires provide detailed control over order, presentation, phraseology and grouping to allow coherent, consistent data collection."]
21282pub struct Questionnaire {
21283    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
21284    pub id: Option<String>,
21285    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
21286    pub meta: Option<Box<Meta>>,
21287    #[primitive]
21288    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
21289    pub implicitRules: Option<Box<FHIRUri>>,
21290    #[primitive]
21291    #[doc = "The base language in which the resource is written."]
21292    pub language: Option<Box<FHIRCode>>,
21293    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
21294    pub text: Option<Box<Narrative>>,
21295    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
21296    pub contained: Option<Vec<Box<Resource>>>,
21297    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
21298    pub extension: Option<Vec<Box<Extension>>>,
21299    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
21300    pub modifierExtension: Option<Vec<Box<Extension>>>,
21301    #[primitive]
21302    #[doc = "An absolute URI that is used to identify this questionnaire when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this questionnaire is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the questionnaire is stored on different servers."]
21303    pub url: Option<Box<FHIRUri>>,
21304    #[rename_field = "identifier"]
21305    #[doc = "A formal identifier that is used to identify this questionnaire when it is represented in other formats, or referenced in a specification, model, design or an instance."]
21306    pub identifier_: Option<Vec<Box<Identifier>>>,
21307    #[primitive]
21308    #[doc = "The identifier that is used to identify this version of the questionnaire when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the questionnaire author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence."]
21309    pub version: Option<Box<FHIRString>>,
21310    #[primitive]
21311    #[doc = "A natural language name identifying the questionnaire. This name should be usable as an identifier for the module by machine processing applications such as code generation."]
21312    pub name: Option<Box<FHIRString>>,
21313    #[primitive]
21314    #[doc = "A short, descriptive, user-friendly title for the questionnaire."]
21315    pub title: Option<Box<FHIRString>>,
21316    #[primitive]
21317    #[doc = "The URL of a Questionnaire that this Questionnaire is based on."]
21318    pub derivedFrom: Option<Vec<Box<FHIRCanonical>>>,
21319    #[primitive]
21320    #[doc = "The status of this questionnaire. Enables tracking the life-cycle of the content."]
21321    pub status: Box<terminology::PublicationStatus>,
21322    #[primitive]
21323    #[doc = "A Boolean value to indicate that this questionnaire is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage."]
21324    pub experimental: Option<Box<FHIRBoolean>>,
21325    #[primitive]
21326    #[doc = "The types of subjects that can be the subject of responses created for the questionnaire."]
21327    pub subjectType: Option<Vec<Box<terminology::ResourceTypes>>>,
21328    #[primitive]
21329    #[doc = "The date  (and optionally time) when the questionnaire was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the questionnaire changes."]
21330    pub date: Option<Box<FHIRDateTime>>,
21331    #[primitive]
21332    #[doc = "The name of the organization or individual that published the questionnaire."]
21333    pub publisher: Option<Box<FHIRString>>,
21334    #[doc = "Contact details to assist a user in finding and communicating with the publisher."]
21335    pub contact: Option<Vec<Box<ContactDetail>>>,
21336    #[primitive]
21337    #[doc = "A free text natural language description of the questionnaire from a consumer's perspective."]
21338    pub description: Option<Box<FHIRMarkdown>>,
21339    #[doc = "The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate questionnaire instances."]
21340    pub useContext: Option<Vec<Box<UsageContext>>>,
21341    #[doc = "A legal or geographic region in which the questionnaire is intended to be used."]
21342    pub jurisdiction: Option<Vec<Box<CodeableConcept>>>,
21343    #[primitive]
21344    #[doc = "Explanation of why this questionnaire is needed and why it has been designed as it has."]
21345    pub purpose: Option<Box<FHIRMarkdown>>,
21346    #[primitive]
21347    #[doc = "A copyright statement relating to the questionnaire and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the questionnaire."]
21348    pub copyright: Option<Box<FHIRMarkdown>>,
21349    #[primitive]
21350    #[doc = "The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage."]
21351    pub approvalDate: Option<Box<FHIRDate>>,
21352    #[primitive]
21353    #[doc = "The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date."]
21354    pub lastReviewDate: Option<Box<FHIRDate>>,
21355    #[doc = "The period during which the questionnaire content was or is planned to be in active use."]
21356    pub effectivePeriod: Option<Box<Period>>,
21357    #[doc = "An identifier for this question or group of questions in a particular terminology such as LOINC."]
21358    pub code: Option<Vec<Box<Coding>>>,
21359    #[doc = "A particular question, question grouping or display text that is part of the questionnaire."]
21360    pub item: Option<Vec<QuestionnaireItem>>,
21361}
21362#[derive(
21363    Clone,
21364    Reflect,
21365    Debug,
21366    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
21367    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
21368)]
21369#[fhir_serialize_type = "typechoice"]
21370#[type_choice_field_name = "value"]
21371pub enum QuestionnaireResponseItemAnswerValueTypeChoice {
21372    Boolean(Box<FHIRBoolean>),
21373    Decimal(Box<FHIRDecimal>),
21374    Integer(Box<FHIRInteger>),
21375    Date(Box<FHIRDate>),
21376    DateTime(Box<FHIRDateTime>),
21377    Time(Box<FHIRTime>),
21378    String(Box<FHIRString>),
21379    Uri(Box<FHIRUri>),
21380    Attachment(Box<Attachment>),
21381    Coding(Box<Coding>),
21382    Quantity(Box<Quantity>),
21383    # [reference (targets = ["Resource"])]
21384    Reference(Box<Reference>),
21385}
21386impl Default for QuestionnaireResponseItemAnswerValueTypeChoice {
21387    fn default() -> Self {
21388        QuestionnaireResponseItemAnswerValueTypeChoice::Boolean(Box::new(Default::default()))
21389    }
21390}
21391#[derive(
21392    Clone,
21393    Reflect,
21394    Debug,
21395    Default,
21396    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
21397    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
21398)]
21399#[fhir_serialize_type = "complex"]
21400#[doc = "The respondent's answer(s) to the question."]
21401pub struct QuestionnaireResponseItemAnswer {
21402    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
21403    pub id: Option<String>,
21404    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
21405    pub extension: Option<Vec<Box<Extension>>>,
21406    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
21407    pub modifierExtension: Option<Vec<Box<Extension>>>,
21408    # [type_choice_variants (complex = ["valueAttachment" , "valueCoding" , "valueQuantity" , "valueReference"] , primitive = ["valueBoolean" , "valueDecimal" , "valueInteger" , "valueDate" , "valueDateTime" , "valueTime" , "valueString" , "valueUri"])]
21409    #[doc = "The answer (or one of the answers) provided by the respondent to the question."]
21410    pub value: Option<QuestionnaireResponseItemAnswerValueTypeChoice>,
21411    #[doc = "Nested groups and/or questions found within this particular answer."]
21412    pub item: Option<Vec<QuestionnaireResponseItem>>,
21413}
21414#[derive(
21415    Clone,
21416    Reflect,
21417    Debug,
21418    Default,
21419    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
21420    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
21421)]
21422#[fhir_serialize_type = "complex"]
21423#[doc = "A group or question item from the original questionnaire for which answers are provided."]
21424pub struct QuestionnaireResponseItem {
21425    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
21426    pub id: Option<String>,
21427    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
21428    pub extension: Option<Vec<Box<Extension>>>,
21429    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
21430    pub modifierExtension: Option<Vec<Box<Extension>>>,
21431    #[primitive]
21432    #[doc = "The item from the Questionnaire that corresponds to this item in the QuestionnaireResponse resource."]
21433    pub linkId: Box<FHIRString>,
21434    #[primitive]
21435    #[doc = "A reference to an [ElementDefinition](elementdefinition.html) that provides the details for the item."]
21436    pub definition: Option<Box<FHIRUri>>,
21437    #[primitive]
21438    #[doc = "Text that is displayed above the contents of the group or as the text of the question being answered."]
21439    pub text: Option<Box<FHIRString>>,
21440    #[doc = "The respondent's answer(s) to the question."]
21441    pub answer: Option<Vec<QuestionnaireResponseItemAnswer>>,
21442    #[doc = "Questions or sub-groups nested beneath a question or group."]
21443    pub item: Option<Vec<QuestionnaireResponseItem>>,
21444}
21445#[derive(
21446    Clone,
21447    Reflect,
21448    Debug,
21449    Default,
21450    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
21451    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
21452)]
21453#[fhir_serialize_type = "resource"]
21454#[doc = "A structured set of questions and their answers. The questions are ordered and grouped into coherent subsets, corresponding to the structure of the grouping of the questionnaire being responded to."]
21455pub struct QuestionnaireResponse {
21456    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
21457    pub id: Option<String>,
21458    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
21459    pub meta: Option<Box<Meta>>,
21460    #[primitive]
21461    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
21462    pub implicitRules: Option<Box<FHIRUri>>,
21463    #[primitive]
21464    #[doc = "The base language in which the resource is written."]
21465    pub language: Option<Box<FHIRCode>>,
21466    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
21467    pub text: Option<Box<Narrative>>,
21468    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
21469    pub contained: Option<Vec<Box<Resource>>>,
21470    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
21471    pub extension: Option<Vec<Box<Extension>>>,
21472    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
21473    pub modifierExtension: Option<Vec<Box<Extension>>>,
21474    #[rename_field = "identifier"]
21475    #[doc = "A business identifier assigned to a particular completed (or partially completed) questionnaire."]
21476    pub identifier_: Option<Box<Identifier>>,
21477    # [reference (targets = ["CarePlan" , "ServiceRequest"])]
21478    #[doc = "The order, proposal or plan that is fulfilled in whole or in part by this QuestionnaireResponse.  For example, a ServiceRequest seeking an intake assessment or a decision support recommendation to assess for post-partum depression."]
21479    pub basedOn: Option<Vec<Box<Reference>>>,
21480    # [reference (targets = ["Observation" , "Procedure"])]
21481    #[doc = "A procedure or observation that this questionnaire was performed as part of the execution of.  For example, the surgery a checklist was executed as part of."]
21482    pub partOf: Option<Vec<Box<Reference>>>,
21483    #[primitive]
21484    #[doc = "The Questionnaire that defines and organizes the questions for which answers are being provided."]
21485    pub questionnaire: Option<Box<FHIRCanonical>>,
21486    #[primitive]
21487    #[doc = "The position of the questionnaire response within its overall lifecycle."]
21488    pub status: Box<terminology::QuestionnaireAnswersStatus>,
21489    # [reference (targets = ["Resource"])]
21490    #[doc = "The subject of the questionnaire response.  This could be a patient, organization, practitioner, device, etc.  This is who/what the answers apply to, but is not necessarily the source of information."]
21491    pub subject: Option<Box<Reference>>,
21492    # [reference (targets = ["Encounter"])]
21493    #[doc = "The Encounter during which this questionnaire response was created or to which the creation of this record is tightly associated."]
21494    pub encounter: Option<Box<Reference>>,
21495    #[primitive]
21496    #[doc = "The date and/or time that this set of answers were last changed."]
21497    pub authored: Option<Box<FHIRDateTime>>,
21498    # [reference (targets = ["Device" , "Practitioner" , "PractitionerRole" , "Patient" , "RelatedPerson" , "Organization"])]
21499    #[doc = "Person who received the answers to the questions in the QuestionnaireResponse and recorded them in the system."]
21500    pub author: Option<Box<Reference>>,
21501    # [reference (targets = ["Patient" , "Practitioner" , "PractitionerRole" , "RelatedPerson"])]
21502    #[doc = "The person who answered the questions about the subject."]
21503    pub source: Option<Box<Reference>>,
21504    #[doc = "A group or question item from the original questionnaire for which answers are provided."]
21505    pub item: Option<Vec<QuestionnaireResponseItem>>,
21506}
21507#[derive(
21508    Clone,
21509    Reflect,
21510    Debug,
21511    Default,
21512    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
21513    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
21514)]
21515#[fhir_serialize_type = "complex"]
21516#[doc = "A language which may be used to communicate with about the patient's health."]
21517pub struct RelatedPersonCommunication {
21518    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
21519    pub id: Option<String>,
21520    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
21521    pub extension: Option<Vec<Box<Extension>>>,
21522    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
21523    pub modifierExtension: Option<Vec<Box<Extension>>>,
21524    #[doc = "The ISO-639-1 alpha 2 code in lower case for the language, optionally followed by a hyphen and the ISO-3166-1 alpha 2 code for the region in upper case; e.g. \"en\" for English, or \"en-US\" for American English versus \"en-EN\" for England English."]
21525    pub language: Box<CodeableConcept>,
21526    #[primitive]
21527    #[doc = "Indicates whether or not the patient prefers this language (over other languages he masters up a certain level)."]
21528    pub preferred: Option<Box<FHIRBoolean>>,
21529}
21530#[derive(
21531    Clone,
21532    Reflect,
21533    Debug,
21534    Default,
21535    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
21536    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
21537)]
21538#[fhir_serialize_type = "resource"]
21539#[doc = "Information about a person that is involved in the care for a patient, but who is not the target of healthcare, nor has a formal responsibility in the care process."]
21540pub struct RelatedPerson {
21541    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
21542    pub id: Option<String>,
21543    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
21544    pub meta: Option<Box<Meta>>,
21545    #[primitive]
21546    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
21547    pub implicitRules: Option<Box<FHIRUri>>,
21548    #[primitive]
21549    #[doc = "The base language in which the resource is written."]
21550    pub language: Option<Box<FHIRCode>>,
21551    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
21552    pub text: Option<Box<Narrative>>,
21553    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
21554    pub contained: Option<Vec<Box<Resource>>>,
21555    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
21556    pub extension: Option<Vec<Box<Extension>>>,
21557    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
21558    pub modifierExtension: Option<Vec<Box<Extension>>>,
21559    #[rename_field = "identifier"]
21560    #[doc = "Identifier for a person within a particular scope."]
21561    pub identifier_: Option<Vec<Box<Identifier>>>,
21562    #[primitive]
21563    #[doc = "Whether this related person record is in active use."]
21564    pub active: Option<Box<FHIRBoolean>>,
21565    # [reference (targets = ["Patient"])]
21566    #[doc = "The patient this person is related to."]
21567    pub patient: Box<Reference>,
21568    #[doc = "The nature of the relationship between a patient and the related person."]
21569    pub relationship: Option<Vec<Box<CodeableConcept>>>,
21570    #[doc = "A name associated with the person."]
21571    pub name: Option<Vec<Box<HumanName>>>,
21572    #[doc = "A contact detail for the person, e.g. a telephone number or an email address."]
21573    pub telecom: Option<Vec<Box<ContactPoint>>>,
21574    #[primitive]
21575    #[doc = "Administrative Gender - the gender that the person is considered to have for administration and record keeping purposes."]
21576    pub gender: Option<Box<terminology::AdministrativeGender>>,
21577    #[primitive]
21578    #[doc = "The date on which the related person was born."]
21579    pub birthDate: Option<Box<FHIRDate>>,
21580    #[doc = "Address where the related person can be contacted or visited."]
21581    pub address: Option<Vec<Box<Address>>>,
21582    #[doc = "Image of the person."]
21583    pub photo: Option<Vec<Box<Attachment>>>,
21584    #[doc = "The period of time during which this relationship is or was active. If there are no dates defined, then the interval is unknown."]
21585    pub period: Option<Box<Period>>,
21586    #[doc = "A language which may be used to communicate with about the patient's health."]
21587    pub communication: Option<Vec<RelatedPersonCommunication>>,
21588}
21589#[derive(
21590    Clone,
21591    Reflect,
21592    Debug,
21593    Default,
21594    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
21595    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
21596)]
21597#[fhir_serialize_type = "complex"]
21598#[doc = "An expression that describes applicability criteria, or start/stop conditions for the action."]
21599pub struct RequestGroupActionCondition {
21600    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
21601    pub id: Option<String>,
21602    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
21603    pub extension: Option<Vec<Box<Extension>>>,
21604    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
21605    pub modifierExtension: Option<Vec<Box<Extension>>>,
21606    #[primitive]
21607    #[doc = "The kind of condition."]
21608    pub kind: Box<terminology::ActionConditionKind>,
21609    #[doc = "An expression that returns true or false, indicating whether or not the condition is satisfied."]
21610    pub expression: Option<Box<Expression>>,
21611}
21612#[derive(
21613    Clone,
21614    Reflect,
21615    Debug,
21616    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
21617    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
21618)]
21619#[fhir_serialize_type = "typechoice"]
21620#[type_choice_field_name = "offset"]
21621pub enum RequestGroupActionRelatedActionOffsetTypeChoice {
21622    Duration(Box<Duration>),
21623    Range(Box<Range>),
21624}
21625impl Default for RequestGroupActionRelatedActionOffsetTypeChoice {
21626    fn default() -> Self {
21627        RequestGroupActionRelatedActionOffsetTypeChoice::Duration(Box::new(Default::default()))
21628    }
21629}
21630#[derive(
21631    Clone,
21632    Reflect,
21633    Debug,
21634    Default,
21635    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
21636    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
21637)]
21638#[fhir_serialize_type = "complex"]
21639#[doc = "A relationship to another action such as \"before\" or \"30-60 minutes after start of\"."]
21640pub struct RequestGroupActionRelatedAction {
21641    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
21642    pub id: Option<String>,
21643    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
21644    pub extension: Option<Vec<Box<Extension>>>,
21645    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
21646    pub modifierExtension: Option<Vec<Box<Extension>>>,
21647    #[primitive]
21648    #[doc = "The element id of the action this is related to."]
21649    pub actionId: Box<FHIRId>,
21650    #[primitive]
21651    #[doc = "The relationship of this action to the related action."]
21652    pub relationship: Box<terminology::ActionRelationshipType>,
21653    # [type_choice_variants (complex = ["offsetDuration" , "offsetRange"] , primitive = [])]
21654    #[doc = "A duration or range of durations to apply to the relationship. For example, 30-60 minutes before."]
21655    pub offset: Option<RequestGroupActionRelatedActionOffsetTypeChoice>,
21656}
21657#[derive(
21658    Clone,
21659    Reflect,
21660    Debug,
21661    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
21662    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
21663)]
21664#[fhir_serialize_type = "typechoice"]
21665#[type_choice_field_name = "timing"]
21666pub enum RequestGroupActionTimingTypeChoice {
21667    DateTime(Box<FHIRDateTime>),
21668    Age(Box<Age>),
21669    Period(Box<Period>),
21670    Duration(Box<Duration>),
21671    Range(Box<Range>),
21672    Timing(Box<Timing>),
21673}
21674impl Default for RequestGroupActionTimingTypeChoice {
21675    fn default() -> Self {
21676        RequestGroupActionTimingTypeChoice::DateTime(Box::new(Default::default()))
21677    }
21678}
21679#[derive(
21680    Clone,
21681    Reflect,
21682    Debug,
21683    Default,
21684    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
21685    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
21686)]
21687#[fhir_serialize_type = "complex"]
21688#[doc = "The actions, if any, produced by the evaluation of the artifact."]
21689pub struct RequestGroupAction {
21690    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
21691    pub id: Option<String>,
21692    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
21693    pub extension: Option<Vec<Box<Extension>>>,
21694    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
21695    pub modifierExtension: Option<Vec<Box<Extension>>>,
21696    #[primitive]
21697    #[doc = "A user-visible prefix for the action."]
21698    pub prefix: Option<Box<FHIRString>>,
21699    #[primitive]
21700    #[doc = "The title of the action displayed to a user."]
21701    pub title: Option<Box<FHIRString>>,
21702    #[primitive]
21703    #[doc = "A short description of the action used to provide a summary to display to the user."]
21704    pub description: Option<Box<FHIRString>>,
21705    #[primitive]
21706    #[doc = "A text equivalent of the action to be performed. This provides a human-interpretable description of the action when the definition is consumed by a system that might not be capable of interpreting it dynamically."]
21707    pub textEquivalent: Option<Box<FHIRString>>,
21708    #[primitive]
21709    #[doc = "Indicates how quickly the action should be addressed with respect to other actions."]
21710    pub priority: Option<Box<terminology::RequestPriority>>,
21711    #[doc = "A code that provides meaning for the action or action group. For example, a section may have a LOINC code for a section of a documentation template."]
21712    pub code: Option<Vec<Box<CodeableConcept>>>,
21713    #[doc = "Didactic or other informational resources associated with the action that can be provided to the CDS recipient. Information resources can include inline text commentary and links to web resources."]
21714    pub documentation: Option<Vec<Box<RelatedArtifact>>>,
21715    #[doc = "An expression that describes applicability criteria, or start/stop conditions for the action."]
21716    pub condition: Option<Vec<RequestGroupActionCondition>>,
21717    #[doc = "A relationship to another action such as \"before\" or \"30-60 minutes after start of\"."]
21718    pub relatedAction: Option<Vec<RequestGroupActionRelatedAction>>,
21719    # [type_choice_variants (complex = ["timingAge" , "timingPeriod" , "timingDuration" , "timingRange" , "timingTiming"] , primitive = ["timingDateTime"])]
21720    #[doc = "An optional value describing when the action should be performed."]
21721    pub timing: Option<RequestGroupActionTimingTypeChoice>,
21722    # [reference (targets = ["Patient" , "Practitioner" , "PractitionerRole" , "RelatedPerson" , "Device"])]
21723    #[doc = "The participant that should perform or be responsible for this action."]
21724    pub participant: Option<Vec<Box<Reference>>>,
21725    #[rename_field = "type"]
21726    #[doc = "The type of action to perform (create, update, remove)."]
21727    pub type_: Option<Box<CodeableConcept>>,
21728    #[primitive]
21729    #[doc = "Defines the grouping behavior for the action and its children."]
21730    pub groupingBehavior: Option<Box<terminology::ActionGroupingBehavior>>,
21731    #[primitive]
21732    #[doc = "Defines the selection behavior for the action and its children."]
21733    pub selectionBehavior: Option<Box<terminology::ActionSelectionBehavior>>,
21734    #[primitive]
21735    #[doc = "Defines expectations around whether an action is required."]
21736    pub requiredBehavior: Option<Box<terminology::ActionRequiredBehavior>>,
21737    #[primitive]
21738    #[doc = "Defines whether the action should usually be preselected."]
21739    pub precheckBehavior: Option<Box<terminology::ActionPrecheckBehavior>>,
21740    #[primitive]
21741    #[doc = "Defines whether the action can be selected multiple times."]
21742    pub cardinalityBehavior: Option<Box<terminology::ActionCardinalityBehavior>>,
21743    # [reference (targets = ["Resource"])]
21744    #[doc = "The resource that is the target of the action (e.g. CommunicationRequest)."]
21745    pub resource: Option<Box<Reference>>,
21746    #[doc = "Sub actions."]
21747    pub action: Option<Vec<RequestGroupAction>>,
21748}
21749#[derive(
21750    Clone,
21751    Reflect,
21752    Debug,
21753    Default,
21754    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
21755    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
21756)]
21757#[fhir_serialize_type = "resource"]
21758#[doc = "A group of related requests that can be used to capture intended activities that have inter-dependencies such as \"give this medication after that one\"."]
21759pub struct RequestGroup {
21760    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
21761    pub id: Option<String>,
21762    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
21763    pub meta: Option<Box<Meta>>,
21764    #[primitive]
21765    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
21766    pub implicitRules: Option<Box<FHIRUri>>,
21767    #[primitive]
21768    #[doc = "The base language in which the resource is written."]
21769    pub language: Option<Box<FHIRCode>>,
21770    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
21771    pub text: Option<Box<Narrative>>,
21772    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
21773    pub contained: Option<Vec<Box<Resource>>>,
21774    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
21775    pub extension: Option<Vec<Box<Extension>>>,
21776    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
21777    pub modifierExtension: Option<Vec<Box<Extension>>>,
21778    #[rename_field = "identifier"]
21779    #[doc = "Allows a service to provide a unique, business identifier for the request."]
21780    pub identifier_: Option<Vec<Box<Identifier>>>,
21781    #[primitive]
21782    #[doc = "A canonical URL referencing a FHIR-defined protocol, guideline, orderset or other definition that is adhered to in whole or in part by this request."]
21783    pub instantiatesCanonical: Option<Vec<Box<FHIRCanonical>>>,
21784    #[primitive]
21785    #[doc = "A URL referencing an externally defined protocol, guideline, orderset or other definition that is adhered to in whole or in part by this request."]
21786    pub instantiatesUri: Option<Vec<Box<FHIRUri>>>,
21787    # [reference (targets = ["Resource"])]
21788    #[doc = "A plan, proposal or order that is fulfilled in whole or in part by this request."]
21789    pub basedOn: Option<Vec<Box<Reference>>>,
21790    # [reference (targets = ["Resource"])]
21791    #[doc = "Completed or terminated request(s) whose function is taken by this new request."]
21792    pub replaces: Option<Vec<Box<Reference>>>,
21793    #[doc = "A shared identifier common to all requests that were authorized more or less simultaneously by a single author, representing the identifier of the requisition, prescription or similar form."]
21794    pub groupIdentifier: Option<Box<Identifier>>,
21795    #[primitive]
21796    #[doc = "The current state of the request. For request groups, the status reflects the status of all the requests in the group."]
21797    pub status: Box<terminology::RequestStatus>,
21798    #[primitive]
21799    #[doc = "Indicates the level of authority/intentionality associated with the request and where the request fits into the workflow chain."]
21800    pub intent: Box<terminology::RequestIntent>,
21801    #[primitive]
21802    #[doc = "Indicates how quickly the request should be addressed with respect to other requests."]
21803    pub priority: Option<Box<terminology::RequestPriority>>,
21804    #[doc = "A code that identifies what the overall request group is."]
21805    pub code: Option<Box<CodeableConcept>>,
21806    # [reference (targets = ["Patient" , "Group"])]
21807    #[doc = "The subject for which the request group was created."]
21808    pub subject: Option<Box<Reference>>,
21809    # [reference (targets = ["Encounter"])]
21810    #[doc = "Describes the context of the request group, if any."]
21811    pub encounter: Option<Box<Reference>>,
21812    #[primitive]
21813    #[doc = "Indicates when the request group was created."]
21814    pub authoredOn: Option<Box<FHIRDateTime>>,
21815    # [reference (targets = ["Device" , "Practitioner" , "PractitionerRole"])]
21816    #[doc = "Provides a reference to the author of the request group."]
21817    pub author: Option<Box<Reference>>,
21818    #[doc = "Describes the reason for the request group in coded or textual form."]
21819    pub reasonCode: Option<Vec<Box<CodeableConcept>>>,
21820    # [reference (targets = ["Condition" , "Observation" , "DiagnosticReport" , "DocumentReference"])]
21821    #[doc = "Indicates another resource whose existence justifies this request group."]
21822    pub reasonReference: Option<Vec<Box<Reference>>>,
21823    #[doc = "Provides a mechanism to communicate additional information about the response."]
21824    pub note: Option<Vec<Box<Annotation>>>,
21825    #[doc = "The actions, if any, produced by the evaluation of the artifact."]
21826    pub action: Option<Vec<RequestGroupAction>>,
21827}
21828#[derive(
21829    Clone,
21830    Reflect,
21831    Debug,
21832    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
21833    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
21834)]
21835#[fhir_serialize_type = "typechoice"]
21836#[type_choice_field_name = "subject"]
21837pub enum ResearchDefinitionSubjectTypeChoice {
21838    CodeableConcept(Box<CodeableConcept>),
21839    # [reference (targets = ["Group"])]
21840    Reference(Box<Reference>),
21841}
21842impl Default for ResearchDefinitionSubjectTypeChoice {
21843    fn default() -> Self {
21844        ResearchDefinitionSubjectTypeChoice::CodeableConcept(Box::new(Default::default()))
21845    }
21846}
21847#[derive(
21848    Clone,
21849    Reflect,
21850    Debug,
21851    Default,
21852    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
21853    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
21854)]
21855#[fhir_serialize_type = "resource"]
21856#[doc = "The ResearchDefinition resource describes the conditional state (population and any exposures being compared within the population) and outcome (if specified) that the knowledge (evidence, assertion, recommendation) is about."]
21857pub struct ResearchDefinition {
21858    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
21859    pub id: Option<String>,
21860    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
21861    pub meta: Option<Box<Meta>>,
21862    #[primitive]
21863    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
21864    pub implicitRules: Option<Box<FHIRUri>>,
21865    #[primitive]
21866    #[doc = "The base language in which the resource is written."]
21867    pub language: Option<Box<FHIRCode>>,
21868    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
21869    pub text: Option<Box<Narrative>>,
21870    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
21871    pub contained: Option<Vec<Box<Resource>>>,
21872    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
21873    pub extension: Option<Vec<Box<Extension>>>,
21874    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
21875    pub modifierExtension: Option<Vec<Box<Extension>>>,
21876    #[primitive]
21877    #[doc = "An absolute URI that is used to identify this research definition when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this research definition is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the research definition is stored on different servers."]
21878    pub url: Option<Box<FHIRUri>>,
21879    #[rename_field = "identifier"]
21880    #[doc = "A formal identifier that is used to identify this research definition when it is represented in other formats, or referenced in a specification, model, design or an instance."]
21881    pub identifier_: Option<Vec<Box<Identifier>>>,
21882    #[primitive]
21883    #[doc = "The identifier that is used to identify this version of the research definition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the research definition author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence. To provide a version consistent with the Decision Support Service specification, use the format Major.Minor.Revision (e.g. 1.0.0). For more information on versioning knowledge assets, refer to the Decision Support Service specification. Note that a version is required for non-experimental active artifacts."]
21884    pub version: Option<Box<FHIRString>>,
21885    #[primitive]
21886    #[doc = "A natural language name identifying the research definition. This name should be usable as an identifier for the module by machine processing applications such as code generation."]
21887    pub name: Option<Box<FHIRString>>,
21888    #[primitive]
21889    #[doc = "A short, descriptive, user-friendly title for the research definition."]
21890    pub title: Option<Box<FHIRString>>,
21891    #[primitive]
21892    #[doc = "The short title provides an alternate title for use in informal descriptive contexts where the full, formal title is not necessary."]
21893    pub shortTitle: Option<Box<FHIRString>>,
21894    #[primitive]
21895    #[doc = "An explanatory or alternate title for the ResearchDefinition giving additional information about its content."]
21896    pub subtitle: Option<Box<FHIRString>>,
21897    #[primitive]
21898    #[doc = "The status of this research definition. Enables tracking the life-cycle of the content."]
21899    pub status: Box<terminology::PublicationStatus>,
21900    #[primitive]
21901    #[doc = "A Boolean value to indicate that this research definition is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage."]
21902    pub experimental: Option<Box<FHIRBoolean>>,
21903    # [type_choice_variants (complex = ["subjectCodeableConcept" , "subjectReference"] , primitive = [])]
21904    #[doc = "The intended subjects for the ResearchDefinition. If this element is not provided, a Patient subject is assumed, but the subject of the ResearchDefinition can be anything."]
21905    pub subject: Option<ResearchDefinitionSubjectTypeChoice>,
21906    #[primitive]
21907    #[doc = "The date  (and optionally time) when the research definition was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the research definition changes."]
21908    pub date: Option<Box<FHIRDateTime>>,
21909    #[primitive]
21910    #[doc = "The name of the organization or individual that published the research definition."]
21911    pub publisher: Option<Box<FHIRString>>,
21912    #[doc = "Contact details to assist a user in finding and communicating with the publisher."]
21913    pub contact: Option<Vec<Box<ContactDetail>>>,
21914    #[primitive]
21915    #[doc = "A free text natural language description of the research definition from a consumer's perspective."]
21916    pub description: Option<Box<FHIRMarkdown>>,
21917    #[primitive]
21918    #[doc = "A human-readable string to clarify or explain concepts about the resource."]
21919    pub comment: Option<Vec<Box<FHIRString>>>,
21920    #[doc = "The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate research definition instances."]
21921    pub useContext: Option<Vec<Box<UsageContext>>>,
21922    #[doc = "A legal or geographic region in which the research definition is intended to be used."]
21923    pub jurisdiction: Option<Vec<Box<CodeableConcept>>>,
21924    #[primitive]
21925    #[doc = "Explanation of why this research definition is needed and why it has been designed as it has."]
21926    pub purpose: Option<Box<FHIRMarkdown>>,
21927    #[primitive]
21928    #[doc = "A detailed description, from a clinical perspective, of how the ResearchDefinition is used."]
21929    pub usage: Option<Box<FHIRString>>,
21930    #[primitive]
21931    #[doc = "A copyright statement relating to the research definition and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the research definition."]
21932    pub copyright: Option<Box<FHIRMarkdown>>,
21933    #[primitive]
21934    #[doc = "The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage."]
21935    pub approvalDate: Option<Box<FHIRDate>>,
21936    #[primitive]
21937    #[doc = "The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date."]
21938    pub lastReviewDate: Option<Box<FHIRDate>>,
21939    #[doc = "The period during which the research definition content was or is planned to be in active use."]
21940    pub effectivePeriod: Option<Box<Period>>,
21941    #[doc = "Descriptive topics related to the content of the ResearchDefinition. Topics provide a high-level categorization grouping types of ResearchDefinitions that can be useful for filtering and searching."]
21942    pub topic: Option<Vec<Box<CodeableConcept>>>,
21943    #[doc = "An individiual or organization primarily involved in the creation and maintenance of the content."]
21944    pub author: Option<Vec<Box<ContactDetail>>>,
21945    #[doc = "An individual or organization primarily responsible for internal coherence of the content."]
21946    pub editor: Option<Vec<Box<ContactDetail>>>,
21947    #[doc = "An individual or organization primarily responsible for review of some aspect of the content."]
21948    pub reviewer: Option<Vec<Box<ContactDetail>>>,
21949    #[doc = "An individual or organization responsible for officially endorsing the content for use in some setting."]
21950    pub endorser: Option<Vec<Box<ContactDetail>>>,
21951    #[doc = "Related artifacts such as additional documentation, justification, or bibliographic references."]
21952    pub relatedArtifact: Option<Vec<Box<RelatedArtifact>>>,
21953    #[primitive]
21954    #[doc = "A reference to a Library resource containing the formal logic used by the ResearchDefinition."]
21955    pub library: Option<Vec<Box<FHIRCanonical>>>,
21956    # [reference (targets = ["ResearchElementDefinition"])]
21957    #[doc = "A reference to a ResearchElementDefinition resource that defines the population for the research."]
21958    pub population: Box<Reference>,
21959    # [reference (targets = ["ResearchElementDefinition"])]
21960    #[doc = "A reference to a ResearchElementDefinition resource that defines the exposure for the research."]
21961    pub exposure: Option<Box<Reference>>,
21962    # [reference (targets = ["ResearchElementDefinition"])]
21963    #[doc = "A reference to a ResearchElementDefinition resource that defines the exposureAlternative for the research."]
21964    pub exposureAlternative: Option<Box<Reference>>,
21965    # [reference (targets = ["ResearchElementDefinition"])]
21966    #[doc = "A reference to a ResearchElementDefinition resomece that defines the outcome for the research."]
21967    pub outcome: Option<Box<Reference>>,
21968}
21969#[derive(
21970    Clone,
21971    Reflect,
21972    Debug,
21973    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
21974    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
21975)]
21976#[fhir_serialize_type = "typechoice"]
21977#[type_choice_field_name = "subject"]
21978pub enum ResearchElementDefinitionSubjectTypeChoice {
21979    CodeableConcept(Box<CodeableConcept>),
21980    # [reference (targets = ["Group"])]
21981    Reference(Box<Reference>),
21982}
21983impl Default for ResearchElementDefinitionSubjectTypeChoice {
21984    fn default() -> Self {
21985        ResearchElementDefinitionSubjectTypeChoice::CodeableConcept(Box::new(Default::default()))
21986    }
21987}
21988#[derive(
21989    Clone,
21990    Reflect,
21991    Debug,
21992    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
21993    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
21994)]
21995#[fhir_serialize_type = "typechoice"]
21996#[type_choice_field_name = "definition"]
21997pub enum ResearchElementDefinitionCharacteristicDefinitionTypeChoice {
21998    CodeableConcept(Box<CodeableConcept>),
21999    Canonical(Box<FHIRCanonical>),
22000    Expression(Box<Expression>),
22001    DataRequirement(Box<DataRequirement>),
22002}
22003impl Default for ResearchElementDefinitionCharacteristicDefinitionTypeChoice {
22004    fn default() -> Self {
22005        ResearchElementDefinitionCharacteristicDefinitionTypeChoice::CodeableConcept(Box::new(
22006            Default::default(),
22007        ))
22008    }
22009}
22010#[derive(
22011    Clone,
22012    Reflect,
22013    Debug,
22014    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
22015    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
22016)]
22017#[fhir_serialize_type = "typechoice"]
22018#[type_choice_field_name = "studyEffective"]
22019pub enum ResearchElementDefinitionCharacteristicStudyEffectiveTypeChoice {
22020    DateTime(Box<FHIRDateTime>),
22021    Period(Box<Period>),
22022    Duration(Box<Duration>),
22023    Timing(Box<Timing>),
22024}
22025impl Default for ResearchElementDefinitionCharacteristicStudyEffectiveTypeChoice {
22026    fn default() -> Self {
22027        ResearchElementDefinitionCharacteristicStudyEffectiveTypeChoice::DateTime(Box::new(
22028            Default::default(),
22029        ))
22030    }
22031}
22032#[derive(
22033    Clone,
22034    Reflect,
22035    Debug,
22036    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
22037    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
22038)]
22039#[fhir_serialize_type = "typechoice"]
22040#[type_choice_field_name = "participantEffective"]
22041pub enum ResearchElementDefinitionCharacteristicParticipantEffectiveTypeChoice {
22042    DateTime(Box<FHIRDateTime>),
22043    Period(Box<Period>),
22044    Duration(Box<Duration>),
22045    Timing(Box<Timing>),
22046}
22047impl Default for ResearchElementDefinitionCharacteristicParticipantEffectiveTypeChoice {
22048    fn default() -> Self {
22049        ResearchElementDefinitionCharacteristicParticipantEffectiveTypeChoice::DateTime(Box::new(
22050            Default::default(),
22051        ))
22052    }
22053}
22054#[derive(
22055    Clone,
22056    Reflect,
22057    Debug,
22058    Default,
22059    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
22060    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
22061)]
22062#[fhir_serialize_type = "complex"]
22063#[doc = "A characteristic that defines the members of the research element. Multiple characteristics are applied with \"and\" semantics."]
22064pub struct ResearchElementDefinitionCharacteristic {
22065    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
22066    pub id: Option<String>,
22067    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
22068    pub extension: Option<Vec<Box<Extension>>>,
22069    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
22070    pub modifierExtension: Option<Vec<Box<Extension>>>,
22071    # [type_choice_variants (complex = ["definitionCodeableConcept" , "definitionExpression" , "definitionDataRequirement"] , primitive = ["definitionCanonical"])]
22072    #[doc = "Define members of the research element using Codes (such as condition, medication, or observation), Expressions ( using an expression language such as FHIRPath or CQL) or DataRequirements (such as Diabetes diagnosis onset in the last year)."]
22073    pub definition: ResearchElementDefinitionCharacteristicDefinitionTypeChoice,
22074    #[doc = "Use UsageContext to define the members of the population, such as Age Ranges, Genders, Settings."]
22075    pub usageContext: Option<Vec<Box<UsageContext>>>,
22076    #[primitive]
22077    #[doc = "When true, members with this characteristic are excluded from the element."]
22078    pub exclude: Option<Box<FHIRBoolean>>,
22079    #[doc = "Specifies the UCUM unit for the outcome."]
22080    pub unitOfMeasure: Option<Box<CodeableConcept>>,
22081    #[primitive]
22082    #[doc = "A narrative description of the time period the study covers."]
22083    pub studyEffectiveDescription: Option<Box<FHIRString>>,
22084    # [type_choice_variants (complex = ["studyEffectivePeriod" , "studyEffectiveDuration" , "studyEffectiveTiming"] , primitive = ["studyEffectiveDateTime"])]
22085    #[doc = "Indicates what effective period the study covers."]
22086    pub studyEffective: Option<ResearchElementDefinitionCharacteristicStudyEffectiveTypeChoice>,
22087    #[doc = "Indicates duration from the study initiation."]
22088    pub studyEffectiveTimeFromStart: Option<Box<Duration>>,
22089    #[primitive]
22090    #[doc = "Indicates how elements are aggregated within the study effective period."]
22091    pub studyEffectiveGroupMeasure: Option<Box<terminology::GroupMeasure>>,
22092    #[primitive]
22093    #[doc = "A narrative description of the time period the study covers."]
22094    pub participantEffectiveDescription: Option<Box<FHIRString>>,
22095    # [type_choice_variants (complex = ["participantEffectivePeriod" , "participantEffectiveDuration" , "participantEffectiveTiming"] , primitive = ["participantEffectiveDateTime"])]
22096    #[doc = "Indicates what effective period the study covers."]
22097    pub participantEffective:
22098        Option<ResearchElementDefinitionCharacteristicParticipantEffectiveTypeChoice>,
22099    #[doc = "Indicates duration from the participant's study entry."]
22100    pub participantEffectiveTimeFromStart: Option<Box<Duration>>,
22101    #[primitive]
22102    #[doc = "Indicates how elements are aggregated within the study effective period."]
22103    pub participantEffectiveGroupMeasure: Option<Box<terminology::GroupMeasure>>,
22104}
22105#[derive(
22106    Clone,
22107    Reflect,
22108    Debug,
22109    Default,
22110    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
22111    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
22112)]
22113#[fhir_serialize_type = "resource"]
22114#[doc = "The ResearchElementDefinition resource describes a \"PICO\" element that knowledge (evidence, assertion, recommendation) is about."]
22115pub struct ResearchElementDefinition {
22116    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
22117    pub id: Option<String>,
22118    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
22119    pub meta: Option<Box<Meta>>,
22120    #[primitive]
22121    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
22122    pub implicitRules: Option<Box<FHIRUri>>,
22123    #[primitive]
22124    #[doc = "The base language in which the resource is written."]
22125    pub language: Option<Box<FHIRCode>>,
22126    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
22127    pub text: Option<Box<Narrative>>,
22128    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
22129    pub contained: Option<Vec<Box<Resource>>>,
22130    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
22131    pub extension: Option<Vec<Box<Extension>>>,
22132    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
22133    pub modifierExtension: Option<Vec<Box<Extension>>>,
22134    #[primitive]
22135    #[doc = "An absolute URI that is used to identify this research element definition when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this research element definition is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the research element definition is stored on different servers."]
22136    pub url: Option<Box<FHIRUri>>,
22137    #[rename_field = "identifier"]
22138    #[doc = "A formal identifier that is used to identify this research element definition when it is represented in other formats, or referenced in a specification, model, design or an instance."]
22139    pub identifier_: Option<Vec<Box<Identifier>>>,
22140    #[primitive]
22141    #[doc = "The identifier that is used to identify this version of the research element definition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the research element definition author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence. To provide a version consistent with the Decision Support Service specification, use the format Major.Minor.Revision (e.g. 1.0.0). For more information on versioning knowledge assets, refer to the Decision Support Service specification. Note that a version is required for non-experimental active artifacts."]
22142    pub version: Option<Box<FHIRString>>,
22143    #[primitive]
22144    #[doc = "A natural language name identifying the research element definition. This name should be usable as an identifier for the module by machine processing applications such as code generation."]
22145    pub name: Option<Box<FHIRString>>,
22146    #[primitive]
22147    #[doc = "A short, descriptive, user-friendly title for the research element definition."]
22148    pub title: Option<Box<FHIRString>>,
22149    #[primitive]
22150    #[doc = "The short title provides an alternate title for use in informal descriptive contexts where the full, formal title is not necessary."]
22151    pub shortTitle: Option<Box<FHIRString>>,
22152    #[primitive]
22153    #[doc = "An explanatory or alternate title for the ResearchElementDefinition giving additional information about its content."]
22154    pub subtitle: Option<Box<FHIRString>>,
22155    #[primitive]
22156    #[doc = "The status of this research element definition. Enables tracking the life-cycle of the content."]
22157    pub status: Box<terminology::PublicationStatus>,
22158    #[primitive]
22159    #[doc = "A Boolean value to indicate that this research element definition is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage."]
22160    pub experimental: Option<Box<FHIRBoolean>>,
22161    # [type_choice_variants (complex = ["subjectCodeableConcept" , "subjectReference"] , primitive = [])]
22162    #[doc = "The intended subjects for the ResearchElementDefinition. If this element is not provided, a Patient subject is assumed, but the subject of the ResearchElementDefinition can be anything."]
22163    pub subject: Option<ResearchElementDefinitionSubjectTypeChoice>,
22164    #[primitive]
22165    #[doc = "The date  (and optionally time) when the research element definition was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the research element definition changes."]
22166    pub date: Option<Box<FHIRDateTime>>,
22167    #[primitive]
22168    #[doc = "The name of the organization or individual that published the research element definition."]
22169    pub publisher: Option<Box<FHIRString>>,
22170    #[doc = "Contact details to assist a user in finding and communicating with the publisher."]
22171    pub contact: Option<Vec<Box<ContactDetail>>>,
22172    #[primitive]
22173    #[doc = "A free text natural language description of the research element definition from a consumer's perspective."]
22174    pub description: Option<Box<FHIRMarkdown>>,
22175    #[primitive]
22176    #[doc = "A human-readable string to clarify or explain concepts about the resource."]
22177    pub comment: Option<Vec<Box<FHIRString>>>,
22178    #[doc = "The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate research element definition instances."]
22179    pub useContext: Option<Vec<Box<UsageContext>>>,
22180    #[doc = "A legal or geographic region in which the research element definition is intended to be used."]
22181    pub jurisdiction: Option<Vec<Box<CodeableConcept>>>,
22182    #[primitive]
22183    #[doc = "Explanation of why this research element definition is needed and why it has been designed as it has."]
22184    pub purpose: Option<Box<FHIRMarkdown>>,
22185    #[primitive]
22186    #[doc = "A detailed description, from a clinical perspective, of how the ResearchElementDefinition is used."]
22187    pub usage: Option<Box<FHIRString>>,
22188    #[primitive]
22189    #[doc = "A copyright statement relating to the research element definition and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the research element definition."]
22190    pub copyright: Option<Box<FHIRMarkdown>>,
22191    #[primitive]
22192    #[doc = "The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage."]
22193    pub approvalDate: Option<Box<FHIRDate>>,
22194    #[primitive]
22195    #[doc = "The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date."]
22196    pub lastReviewDate: Option<Box<FHIRDate>>,
22197    #[doc = "The period during which the research element definition content was or is planned to be in active use."]
22198    pub effectivePeriod: Option<Box<Period>>,
22199    #[doc = "Descriptive topics related to the content of the ResearchElementDefinition. Topics provide a high-level categorization grouping types of ResearchElementDefinitions that can be useful for filtering and searching."]
22200    pub topic: Option<Vec<Box<CodeableConcept>>>,
22201    #[doc = "An individiual or organization primarily involved in the creation and maintenance of the content."]
22202    pub author: Option<Vec<Box<ContactDetail>>>,
22203    #[doc = "An individual or organization primarily responsible for internal coherence of the content."]
22204    pub editor: Option<Vec<Box<ContactDetail>>>,
22205    #[doc = "An individual or organization primarily responsible for review of some aspect of the content."]
22206    pub reviewer: Option<Vec<Box<ContactDetail>>>,
22207    #[doc = "An individual or organization responsible for officially endorsing the content for use in some setting."]
22208    pub endorser: Option<Vec<Box<ContactDetail>>>,
22209    #[doc = "Related artifacts such as additional documentation, justification, or bibliographic references."]
22210    pub relatedArtifact: Option<Vec<Box<RelatedArtifact>>>,
22211    #[primitive]
22212    #[doc = "A reference to a Library resource containing the formal logic used by the ResearchElementDefinition."]
22213    pub library: Option<Vec<Box<FHIRCanonical>>>,
22214    #[rename_field = "type"]
22215    #[primitive]
22216    #[doc = "The type of research element, a population, an exposure, or an outcome."]
22217    pub type_: Box<terminology::ResearchElementType>,
22218    #[primitive]
22219    #[doc = "The type of the outcome (e.g. Dichotomous, Continuous, or Descriptive)."]
22220    pub variableType: Option<Box<terminology::VariableType>>,
22221    #[cardinality(min = 1usize)]
22222    #[doc = "A characteristic that defines the members of the research element. Multiple characteristics are applied with \"and\" semantics."]
22223    pub characteristic: Vec<ResearchElementDefinitionCharacteristic>,
22224}
22225#[derive(
22226    Clone,
22227    Reflect,
22228    Debug,
22229    Default,
22230    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
22231    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
22232)]
22233#[fhir_serialize_type = "complex"]
22234#[doc = "Describes an expected sequence of events for one of the participants of a study.  E.g. Exposure to drug A, wash-out, exposure to drug B, wash-out, follow-up."]
22235pub struct ResearchStudyArm {
22236    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
22237    pub id: Option<String>,
22238    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
22239    pub extension: Option<Vec<Box<Extension>>>,
22240    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
22241    pub modifierExtension: Option<Vec<Box<Extension>>>,
22242    #[primitive]
22243    #[doc = "Unique, human-readable label for this arm of the study."]
22244    pub name: Box<FHIRString>,
22245    #[rename_field = "type"]
22246    #[doc = "Categorization of study arm, e.g. experimental, active comparator, placebo comparater."]
22247    pub type_: Option<Box<CodeableConcept>>,
22248    #[primitive]
22249    #[doc = "A succinct description of the path through the study that would be followed by a subject adhering to this arm."]
22250    pub description: Option<Box<FHIRString>>,
22251}
22252#[derive(
22253    Clone,
22254    Reflect,
22255    Debug,
22256    Default,
22257    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
22258    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
22259)]
22260#[fhir_serialize_type = "complex"]
22261#[doc = "A goal that the study is aiming to achieve in terms of a scientific question to be answered by the analysis of data collected during the study."]
22262pub struct ResearchStudyObjective {
22263    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
22264    pub id: Option<String>,
22265    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
22266    pub extension: Option<Vec<Box<Extension>>>,
22267    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
22268    pub modifierExtension: Option<Vec<Box<Extension>>>,
22269    #[primitive]
22270    #[doc = "Unique, human-readable label for this objective of the study."]
22271    pub name: Option<Box<FHIRString>>,
22272    #[rename_field = "type"]
22273    #[doc = "The kind of study objective."]
22274    pub type_: Option<Box<CodeableConcept>>,
22275}
22276#[derive(
22277    Clone,
22278    Reflect,
22279    Debug,
22280    Default,
22281    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
22282    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
22283)]
22284#[fhir_serialize_type = "resource"]
22285#[doc = "A process where a researcher or organization plans and then executes a series of steps intended to increase the field of healthcare-related knowledge.  This includes studies of safety, efficacy, comparative effectiveness and other information about medications, devices, therapies and other interventional and investigative techniques.  A ResearchStudy involves the gathering of information about human or animal subjects."]
22286pub struct ResearchStudy {
22287    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
22288    pub id: Option<String>,
22289    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
22290    pub meta: Option<Box<Meta>>,
22291    #[primitive]
22292    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
22293    pub implicitRules: Option<Box<FHIRUri>>,
22294    #[primitive]
22295    #[doc = "The base language in which the resource is written."]
22296    pub language: Option<Box<FHIRCode>>,
22297    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
22298    pub text: Option<Box<Narrative>>,
22299    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
22300    pub contained: Option<Vec<Box<Resource>>>,
22301    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
22302    pub extension: Option<Vec<Box<Extension>>>,
22303    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
22304    pub modifierExtension: Option<Vec<Box<Extension>>>,
22305    #[rename_field = "identifier"]
22306    #[doc = "Identifiers assigned to this research study by the sponsor or other systems."]
22307    pub identifier_: Option<Vec<Box<Identifier>>>,
22308    #[primitive]
22309    #[doc = "A short, descriptive user-friendly label for the study."]
22310    pub title: Option<Box<FHIRString>>,
22311    # [reference (targets = ["PlanDefinition"])]
22312    #[doc = "The set of steps expected to be performed as part of the execution of the study."]
22313    pub protocol: Option<Vec<Box<Reference>>>,
22314    # [reference (targets = ["ResearchStudy"])]
22315    #[doc = "A larger research study of which this particular study is a component or step."]
22316    pub partOf: Option<Vec<Box<Reference>>>,
22317    #[primitive]
22318    #[doc = "The current state of the study."]
22319    pub status: Box<terminology::ResearchStudyStatus>,
22320    #[doc = "The type of study based upon the intent of the study's activities. A classification of the intent of the study."]
22321    pub primaryPurposeType: Option<Box<CodeableConcept>>,
22322    #[doc = "The stage in the progression of a therapy from initial experimental use in humans in clinical trials to post-market evaluation."]
22323    pub phase: Option<Box<CodeableConcept>>,
22324    #[doc = "Codes categorizing the type of study such as investigational vs. observational, type of blinding, type of randomization, safety vs. efficacy, etc."]
22325    pub category: Option<Vec<Box<CodeableConcept>>>,
22326    #[doc = "The medication(s), food(s), therapy(ies), device(s) or other concerns or interventions that the study is seeking to gain more information about."]
22327    pub focus: Option<Vec<Box<CodeableConcept>>>,
22328    #[doc = "The condition that is the focus of the study.  For example, In a study to examine risk factors for Lupus, might have as an inclusion criterion \"healthy volunteer\", but the target condition code would be a Lupus SNOMED code."]
22329    pub condition: Option<Vec<Box<CodeableConcept>>>,
22330    #[doc = "Contact details to assist a user in learning more about or engaging with the study."]
22331    pub contact: Option<Vec<Box<ContactDetail>>>,
22332    #[doc = "Citations, references and other related documents."]
22333    pub relatedArtifact: Option<Vec<Box<RelatedArtifact>>>,
22334    #[doc = "Key terms to aid in searching for or filtering the study."]
22335    pub keyword: Option<Vec<Box<CodeableConcept>>>,
22336    #[doc = "Indicates a country, state or other region where the study is taking place."]
22337    pub location: Option<Vec<Box<CodeableConcept>>>,
22338    #[primitive]
22339    #[doc = "A full description of how the study is being conducted."]
22340    pub description: Option<Box<FHIRMarkdown>>,
22341    # [reference (targets = ["Group"])]
22342    #[doc = "Reference to a Group that defines the criteria for and quantity of subjects participating in the study.  E.g. \" 200 female Europeans between the ages of 20 and 45 with early onset diabetes\"."]
22343    pub enrollment: Option<Vec<Box<Reference>>>,
22344    #[doc = "Identifies the start date and the expected (or actual, depending on status) end date for the study."]
22345    pub period: Option<Box<Period>>,
22346    # [reference (targets = ["Organization"])]
22347    #[doc = "An organization that initiates the investigation and is legally responsible for the study."]
22348    pub sponsor: Option<Box<Reference>>,
22349    # [reference (targets = ["Practitioner" , "PractitionerRole"])]
22350    #[doc = "A researcher in a study who oversees multiple aspects of the study, such as concept development, protocol writing, protocol submission for IRB approval, participant recruitment, informed consent, data collection, analysis, interpretation and presentation."]
22351    pub principalInvestigator: Option<Box<Reference>>,
22352    # [reference (targets = ["Location"])]
22353    #[doc = "A facility in which study activities are conducted."]
22354    pub site: Option<Vec<Box<Reference>>>,
22355    #[doc = "A description and/or code explaining the premature termination of the study."]
22356    pub reasonStopped: Option<Box<CodeableConcept>>,
22357    #[doc = "Comments made about the study by the performer, subject or other participants."]
22358    pub note: Option<Vec<Box<Annotation>>>,
22359    #[doc = "Describes an expected sequence of events for one of the participants of a study.  E.g. Exposure to drug A, wash-out, exposure to drug B, wash-out, follow-up."]
22360    pub arm: Option<Vec<ResearchStudyArm>>,
22361    #[doc = "A goal that the study is aiming to achieve in terms of a scientific question to be answered by the analysis of data collected during the study."]
22362    pub objective: Option<Vec<ResearchStudyObjective>>,
22363}
22364#[derive(
22365    Clone,
22366    Reflect,
22367    Debug,
22368    Default,
22369    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
22370    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
22371)]
22372#[fhir_serialize_type = "resource"]
22373#[doc = "A physical entity which is the primary unit of operational and/or administrative interest in a study."]
22374pub struct ResearchSubject {
22375    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
22376    pub id: Option<String>,
22377    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
22378    pub meta: Option<Box<Meta>>,
22379    #[primitive]
22380    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
22381    pub implicitRules: Option<Box<FHIRUri>>,
22382    #[primitive]
22383    #[doc = "The base language in which the resource is written."]
22384    pub language: Option<Box<FHIRCode>>,
22385    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
22386    pub text: Option<Box<Narrative>>,
22387    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
22388    pub contained: Option<Vec<Box<Resource>>>,
22389    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
22390    pub extension: Option<Vec<Box<Extension>>>,
22391    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
22392    pub modifierExtension: Option<Vec<Box<Extension>>>,
22393    #[rename_field = "identifier"]
22394    #[doc = "Identifiers assigned to this research subject for a study."]
22395    pub identifier_: Option<Vec<Box<Identifier>>>,
22396    #[primitive]
22397    #[doc = "The current state of the subject."]
22398    pub status: Box<terminology::ResearchSubjectStatus>,
22399    #[doc = "The dates the subject began and ended their participation in the study."]
22400    pub period: Option<Box<Period>>,
22401    # [reference (targets = ["ResearchStudy"])]
22402    #[doc = "Reference to the study the subject is participating in."]
22403    pub study: Box<Reference>,
22404    # [reference (targets = ["Patient"])]
22405    #[doc = "The record of the person or animal who is involved in the study."]
22406    pub individual: Box<Reference>,
22407    #[primitive]
22408    #[doc = "The name of the arm in the study the subject is expected to follow as part of this study."]
22409    pub assignedArm: Option<Box<FHIRString>>,
22410    #[primitive]
22411    #[doc = "The name of the arm in the study the subject actually followed as part of this study."]
22412    pub actualArm: Option<Box<FHIRString>>,
22413    # [reference (targets = ["Consent"])]
22414    #[doc = "A record of the patient's informed agreement to participate in the study."]
22415    pub consent: Option<Box<Reference>>,
22416}
22417#[derive(
22418    Clone,
22419    Reflect,
22420    Debug,
22421    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
22422    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
22423)]
22424#[fhir_serialize_type = "typechoice"]
22425#[type_choice_field_name = "occurrence"]
22426pub enum RiskAssessmentOccurrenceTypeChoice {
22427    DateTime(Box<FHIRDateTime>),
22428    Period(Box<Period>),
22429}
22430impl Default for RiskAssessmentOccurrenceTypeChoice {
22431    fn default() -> Self {
22432        RiskAssessmentOccurrenceTypeChoice::DateTime(Box::new(Default::default()))
22433    }
22434}
22435#[derive(
22436    Clone,
22437    Reflect,
22438    Debug,
22439    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
22440    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
22441)]
22442#[fhir_serialize_type = "typechoice"]
22443#[type_choice_field_name = "probability"]
22444pub enum RiskAssessmentPredictionProbabilityTypeChoice {
22445    Decimal(Box<FHIRDecimal>),
22446    Range(Box<Range>),
22447}
22448impl Default for RiskAssessmentPredictionProbabilityTypeChoice {
22449    fn default() -> Self {
22450        RiskAssessmentPredictionProbabilityTypeChoice::Decimal(Box::new(Default::default()))
22451    }
22452}
22453#[derive(
22454    Clone,
22455    Reflect,
22456    Debug,
22457    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
22458    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
22459)]
22460#[fhir_serialize_type = "typechoice"]
22461#[type_choice_field_name = "when"]
22462pub enum RiskAssessmentPredictionWhenTypeChoice {
22463    Period(Box<Period>),
22464    Range(Box<Range>),
22465}
22466impl Default for RiskAssessmentPredictionWhenTypeChoice {
22467    fn default() -> Self {
22468        RiskAssessmentPredictionWhenTypeChoice::Period(Box::new(Default::default()))
22469    }
22470}
22471#[derive(
22472    Clone,
22473    Reflect,
22474    Debug,
22475    Default,
22476    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
22477    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
22478)]
22479#[fhir_serialize_type = "complex"]
22480#[doc = "Describes the expected outcome for the subject."]
22481pub struct RiskAssessmentPrediction {
22482    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
22483    pub id: Option<String>,
22484    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
22485    pub extension: Option<Vec<Box<Extension>>>,
22486    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
22487    pub modifierExtension: Option<Vec<Box<Extension>>>,
22488    #[doc = "One of the potential outcomes for the patient (e.g. remission, death,  a particular condition)."]
22489    pub outcome: Option<Box<CodeableConcept>>,
22490    # [type_choice_variants (complex = ["probabilityRange"] , primitive = ["probabilityDecimal"])]
22491    #[doc = "Indicates how likely the outcome is (in the specified timeframe)."]
22492    pub probability: Option<RiskAssessmentPredictionProbabilityTypeChoice>,
22493    #[doc = "Indicates how likely the outcome is (in the specified timeframe), expressed as a qualitative value (e.g. low, medium, or high)."]
22494    pub qualitativeRisk: Option<Box<CodeableConcept>>,
22495    #[primitive]
22496    #[doc = "Indicates the risk for this particular subject (with their specific characteristics) divided by the risk of the population in general.  (Numbers greater than 1 = higher risk than the population, numbers less than 1 = lower risk.)."]
22497    pub relativeRisk: Option<Box<FHIRDecimal>>,
22498    # [type_choice_variants (complex = ["whenPeriod" , "whenRange"] , primitive = [])]
22499    #[doc = "Indicates the period of time or age range of the subject to which the specified probability applies."]
22500    pub when: Option<RiskAssessmentPredictionWhenTypeChoice>,
22501    #[primitive]
22502    #[doc = "Additional information explaining the basis for the prediction."]
22503    pub rationale: Option<Box<FHIRString>>,
22504}
22505#[derive(
22506    Clone,
22507    Reflect,
22508    Debug,
22509    Default,
22510    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
22511    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
22512)]
22513#[fhir_serialize_type = "resource"]
22514#[doc = "An assessment of the likely outcome(s) for a patient or other subject as well as the likelihood of each outcome."]
22515pub struct RiskAssessment {
22516    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
22517    pub id: Option<String>,
22518    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
22519    pub meta: Option<Box<Meta>>,
22520    #[primitive]
22521    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
22522    pub implicitRules: Option<Box<FHIRUri>>,
22523    #[primitive]
22524    #[doc = "The base language in which the resource is written."]
22525    pub language: Option<Box<FHIRCode>>,
22526    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
22527    pub text: Option<Box<Narrative>>,
22528    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
22529    pub contained: Option<Vec<Box<Resource>>>,
22530    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
22531    pub extension: Option<Vec<Box<Extension>>>,
22532    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
22533    pub modifierExtension: Option<Vec<Box<Extension>>>,
22534    #[rename_field = "identifier"]
22535    #[doc = "Business identifier assigned to the risk assessment."]
22536    pub identifier_: Option<Vec<Box<Identifier>>>,
22537    # [reference (targets = ["Resource"])]
22538    #[doc = "A reference to the request that is fulfilled by this risk assessment."]
22539    pub basedOn: Option<Box<Reference>>,
22540    # [reference (targets = ["Resource"])]
22541    #[doc = "A reference to a resource that this risk assessment is part of, such as a Procedure."]
22542    pub parent: Option<Box<Reference>>,
22543    #[primitive]
22544    #[doc = "The status of the RiskAssessment, using the same statuses as an Observation."]
22545    pub status: Box<terminology::ObservationStatus>,
22546    #[doc = "The algorithm, process or mechanism used to evaluate the risk."]
22547    pub method: Option<Box<CodeableConcept>>,
22548    #[doc = "The type of the risk assessment performed."]
22549    pub code: Option<Box<CodeableConcept>>,
22550    # [reference (targets = ["Patient" , "Group"])]
22551    #[doc = "The patient or group the risk assessment applies to."]
22552    pub subject: Box<Reference>,
22553    # [reference (targets = ["Encounter"])]
22554    #[doc = "The encounter where the assessment was performed."]
22555    pub encounter: Option<Box<Reference>>,
22556    # [type_choice_variants (complex = ["occurrencePeriod"] , primitive = ["occurrenceDateTime"])]
22557    #[doc = "The date (and possibly time) the risk assessment was performed."]
22558    pub occurrence: Option<RiskAssessmentOccurrenceTypeChoice>,
22559    # [reference (targets = ["Condition"])]
22560    #[doc = "For assessments or prognosis specific to a particular condition, indicates the condition being assessed."]
22561    pub condition: Option<Box<Reference>>,
22562    # [reference (targets = ["Practitioner" , "PractitionerRole" , "Device"])]
22563    #[doc = "The provider or software application that performed the assessment."]
22564    pub performer: Option<Box<Reference>>,
22565    #[doc = "The reason the risk assessment was performed."]
22566    pub reasonCode: Option<Vec<Box<CodeableConcept>>>,
22567    # [reference (targets = ["Condition" , "Observation" , "DiagnosticReport" , "DocumentReference"])]
22568    #[doc = "Resources supporting the reason the risk assessment was performed."]
22569    pub reasonReference: Option<Vec<Box<Reference>>>,
22570    # [reference (targets = ["Resource"])]
22571    #[doc = "Indicates the source data considered as part of the assessment (for example, FamilyHistory, Observations, Procedures, Conditions, etc.)."]
22572    pub basis: Option<Vec<Box<Reference>>>,
22573    #[doc = "Describes the expected outcome for the subject."]
22574    pub prediction: Option<Vec<RiskAssessmentPrediction>>,
22575    #[primitive]
22576    #[doc = "A description of the steps that might be taken to reduce the identified risk(s)."]
22577    pub mitigation: Option<Box<FHIRString>>,
22578    #[doc = "Additional comments about the risk assessment."]
22579    pub note: Option<Vec<Box<Annotation>>>,
22580}
22581#[derive(
22582    Clone,
22583    Reflect,
22584    Debug,
22585    Default,
22586    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
22587    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
22588)]
22589#[fhir_serialize_type = "complex"]
22590#[doc = "A description of the size of the sample involved in the synthesis."]
22591pub struct RiskEvidenceSynthesisSampleSize {
22592    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
22593    pub id: Option<String>,
22594    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
22595    pub extension: Option<Vec<Box<Extension>>>,
22596    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
22597    pub modifierExtension: Option<Vec<Box<Extension>>>,
22598    #[primitive]
22599    #[doc = "Human-readable summary of sample size."]
22600    pub description: Option<Box<FHIRString>>,
22601    #[primitive]
22602    #[doc = "Number of studies included in this evidence synthesis."]
22603    pub numberOfStudies: Option<Box<FHIRInteger>>,
22604    #[primitive]
22605    #[doc = "Number of participants included in this evidence synthesis."]
22606    pub numberOfParticipants: Option<Box<FHIRInteger>>,
22607}
22608#[derive(
22609    Clone,
22610    Reflect,
22611    Debug,
22612    Default,
22613    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
22614    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
22615)]
22616#[fhir_serialize_type = "complex"]
22617#[doc = "A description of the precision of the estimate for the effect."]
22618pub struct RiskEvidenceSynthesisRiskEstimatePrecisionEstimate {
22619    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
22620    pub id: Option<String>,
22621    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
22622    pub extension: Option<Vec<Box<Extension>>>,
22623    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
22624    pub modifierExtension: Option<Vec<Box<Extension>>>,
22625    #[rename_field = "type"]
22626    #[doc = "Examples include confidence interval and interquartile range."]
22627    pub type_: Option<Box<CodeableConcept>>,
22628    #[primitive]
22629    #[doc = "Use 95 for a 95% confidence interval."]
22630    pub level: Option<Box<FHIRDecimal>>,
22631    #[primitive]
22632    #[doc = "Lower bound of confidence interval."]
22633    pub from: Option<Box<FHIRDecimal>>,
22634    #[primitive]
22635    #[doc = "Upper bound of confidence interval."]
22636    pub to: Option<Box<FHIRDecimal>>,
22637}
22638#[derive(
22639    Clone,
22640    Reflect,
22641    Debug,
22642    Default,
22643    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
22644    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
22645)]
22646#[fhir_serialize_type = "complex"]
22647#[doc = "The estimated risk of the outcome."]
22648pub struct RiskEvidenceSynthesisRiskEstimate {
22649    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
22650    pub id: Option<String>,
22651    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
22652    pub extension: Option<Vec<Box<Extension>>>,
22653    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
22654    pub modifierExtension: Option<Vec<Box<Extension>>>,
22655    #[primitive]
22656    #[doc = "Human-readable summary of risk estimate."]
22657    pub description: Option<Box<FHIRString>>,
22658    #[rename_field = "type"]
22659    #[doc = "Examples include proportion and mean."]
22660    pub type_: Option<Box<CodeableConcept>>,
22661    #[primitive]
22662    #[doc = "The point estimate of the risk estimate."]
22663    pub value: Option<Box<FHIRDecimal>>,
22664    #[doc = "Specifies the UCUM unit for the outcome."]
22665    pub unitOfMeasure: Option<Box<CodeableConcept>>,
22666    #[primitive]
22667    #[doc = "The sample size for the group that was measured for this risk estimate."]
22668    pub denominatorCount: Option<Box<FHIRInteger>>,
22669    #[primitive]
22670    #[doc = "The number of group members with the outcome of interest."]
22671    pub numeratorCount: Option<Box<FHIRInteger>>,
22672    #[doc = "A description of the precision of the estimate for the effect."]
22673    pub precisionEstimate: Option<Vec<RiskEvidenceSynthesisRiskEstimatePrecisionEstimate>>,
22674}
22675#[derive(
22676    Clone,
22677    Reflect,
22678    Debug,
22679    Default,
22680    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
22681    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
22682)]
22683#[fhir_serialize_type = "complex"]
22684#[doc = "A description of a component of the overall certainty."]
22685pub struct RiskEvidenceSynthesisCertaintyCertaintySubcomponent {
22686    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
22687    pub id: Option<String>,
22688    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
22689    pub extension: Option<Vec<Box<Extension>>>,
22690    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
22691    pub modifierExtension: Option<Vec<Box<Extension>>>,
22692    #[rename_field = "type"]
22693    #[doc = "Type of subcomponent of certainty rating."]
22694    pub type_: Option<Box<CodeableConcept>>,
22695    #[doc = "A rating of a subcomponent of rating certainty."]
22696    pub rating: Option<Vec<Box<CodeableConcept>>>,
22697    #[doc = "A human-readable string to clarify or explain concepts about the resource."]
22698    pub note: Option<Vec<Box<Annotation>>>,
22699}
22700#[derive(
22701    Clone,
22702    Reflect,
22703    Debug,
22704    Default,
22705    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
22706    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
22707)]
22708#[fhir_serialize_type = "complex"]
22709#[doc = "A description of the certainty of the risk estimate."]
22710pub struct RiskEvidenceSynthesisCertainty {
22711    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
22712    pub id: Option<String>,
22713    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
22714    pub extension: Option<Vec<Box<Extension>>>,
22715    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
22716    pub modifierExtension: Option<Vec<Box<Extension>>>,
22717    #[doc = "A rating of the certainty of the effect estimate."]
22718    pub rating: Option<Vec<Box<CodeableConcept>>>,
22719    #[doc = "A human-readable string to clarify or explain concepts about the resource."]
22720    pub note: Option<Vec<Box<Annotation>>>,
22721    #[doc = "A description of a component of the overall certainty."]
22722    pub certaintySubcomponent: Option<Vec<RiskEvidenceSynthesisCertaintyCertaintySubcomponent>>,
22723}
22724#[derive(
22725    Clone,
22726    Reflect,
22727    Debug,
22728    Default,
22729    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
22730    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
22731)]
22732#[fhir_serialize_type = "resource"]
22733#[doc = "The RiskEvidenceSynthesis resource describes the likelihood of an outcome in a population plus exposure state where the risk estimate is derived from a combination of research studies."]
22734pub struct RiskEvidenceSynthesis {
22735    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
22736    pub id: Option<String>,
22737    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
22738    pub meta: Option<Box<Meta>>,
22739    #[primitive]
22740    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
22741    pub implicitRules: Option<Box<FHIRUri>>,
22742    #[primitive]
22743    #[doc = "The base language in which the resource is written."]
22744    pub language: Option<Box<FHIRCode>>,
22745    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
22746    pub text: Option<Box<Narrative>>,
22747    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
22748    pub contained: Option<Vec<Box<Resource>>>,
22749    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
22750    pub extension: Option<Vec<Box<Extension>>>,
22751    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
22752    pub modifierExtension: Option<Vec<Box<Extension>>>,
22753    #[primitive]
22754    #[doc = "An absolute URI that is used to identify this risk evidence synthesis when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this risk evidence synthesis is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the risk evidence synthesis is stored on different servers."]
22755    pub url: Option<Box<FHIRUri>>,
22756    #[rename_field = "identifier"]
22757    #[doc = "A formal identifier that is used to identify this risk evidence synthesis when it is represented in other formats, or referenced in a specification, model, design or an instance."]
22758    pub identifier_: Option<Vec<Box<Identifier>>>,
22759    #[primitive]
22760    #[doc = "The identifier that is used to identify this version of the risk evidence synthesis when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the risk evidence synthesis author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence."]
22761    pub version: Option<Box<FHIRString>>,
22762    #[primitive]
22763    #[doc = "A natural language name identifying the risk evidence synthesis. This name should be usable as an identifier for the module by machine processing applications such as code generation."]
22764    pub name: Option<Box<FHIRString>>,
22765    #[primitive]
22766    #[doc = "A short, descriptive, user-friendly title for the risk evidence synthesis."]
22767    pub title: Option<Box<FHIRString>>,
22768    #[primitive]
22769    #[doc = "The status of this risk evidence synthesis. Enables tracking the life-cycle of the content."]
22770    pub status: Box<terminology::PublicationStatus>,
22771    #[primitive]
22772    #[doc = "The date  (and optionally time) when the risk evidence synthesis was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the risk evidence synthesis changes."]
22773    pub date: Option<Box<FHIRDateTime>>,
22774    #[primitive]
22775    #[doc = "The name of the organization or individual that published the risk evidence synthesis."]
22776    pub publisher: Option<Box<FHIRString>>,
22777    #[doc = "Contact details to assist a user in finding and communicating with the publisher."]
22778    pub contact: Option<Vec<Box<ContactDetail>>>,
22779    #[primitive]
22780    #[doc = "A free text natural language description of the risk evidence synthesis from a consumer's perspective."]
22781    pub description: Option<Box<FHIRMarkdown>>,
22782    #[doc = "A human-readable string to clarify or explain concepts about the resource."]
22783    pub note: Option<Vec<Box<Annotation>>>,
22784    #[doc = "The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate risk evidence synthesis instances."]
22785    pub useContext: Option<Vec<Box<UsageContext>>>,
22786    #[doc = "A legal or geographic region in which the risk evidence synthesis is intended to be used."]
22787    pub jurisdiction: Option<Vec<Box<CodeableConcept>>>,
22788    #[primitive]
22789    #[doc = "A copyright statement relating to the risk evidence synthesis and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the risk evidence synthesis."]
22790    pub copyright: Option<Box<FHIRMarkdown>>,
22791    #[primitive]
22792    #[doc = "The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage."]
22793    pub approvalDate: Option<Box<FHIRDate>>,
22794    #[primitive]
22795    #[doc = "The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date."]
22796    pub lastReviewDate: Option<Box<FHIRDate>>,
22797    #[doc = "The period during which the risk evidence synthesis content was or is planned to be in active use."]
22798    pub effectivePeriod: Option<Box<Period>>,
22799    #[doc = "Descriptive topics related to the content of the RiskEvidenceSynthesis. Topics provide a high-level categorization grouping types of EffectEvidenceSynthesiss that can be useful for filtering and searching."]
22800    pub topic: Option<Vec<Box<CodeableConcept>>>,
22801    #[doc = "An individiual or organization primarily involved in the creation and maintenance of the content."]
22802    pub author: Option<Vec<Box<ContactDetail>>>,
22803    #[doc = "An individual or organization primarily responsible for internal coherence of the content."]
22804    pub editor: Option<Vec<Box<ContactDetail>>>,
22805    #[doc = "An individual or organization primarily responsible for review of some aspect of the content."]
22806    pub reviewer: Option<Vec<Box<ContactDetail>>>,
22807    #[doc = "An individual or organization responsible for officially endorsing the content for use in some setting."]
22808    pub endorser: Option<Vec<Box<ContactDetail>>>,
22809    #[doc = "Related artifacts such as additional documentation, justification, or bibliographic references."]
22810    pub relatedArtifact: Option<Vec<Box<RelatedArtifact>>>,
22811    #[doc = "Type of synthesis eg meta-analysis."]
22812    pub synthesisType: Option<Box<CodeableConcept>>,
22813    #[doc = "Type of study eg randomized trial."]
22814    pub studyType: Option<Box<CodeableConcept>>,
22815    # [reference (targets = ["EvidenceVariable"])]
22816    #[doc = "A reference to a EvidenceVariable resource that defines the population for the research."]
22817    pub population: Box<Reference>,
22818    # [reference (targets = ["EvidenceVariable"])]
22819    #[doc = "A reference to a EvidenceVariable resource that defines the exposure for the research."]
22820    pub exposure: Option<Box<Reference>>,
22821    # [reference (targets = ["EvidenceVariable"])]
22822    #[doc = "A reference to a EvidenceVariable resomece that defines the outcome for the research."]
22823    pub outcome: Box<Reference>,
22824    #[doc = "A description of the size of the sample involved in the synthesis."]
22825    pub sampleSize: Option<RiskEvidenceSynthesisSampleSize>,
22826    #[doc = "The estimated risk of the outcome."]
22827    pub riskEstimate: Option<RiskEvidenceSynthesisRiskEstimate>,
22828    #[doc = "A description of the certainty of the risk estimate."]
22829    pub certainty: Option<Vec<RiskEvidenceSynthesisCertainty>>,
22830}
22831#[derive(
22832    Clone,
22833    Reflect,
22834    Debug,
22835    Default,
22836    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
22837    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
22838)]
22839#[fhir_serialize_type = "resource"]
22840#[doc = "A container for slots of time that may be available for booking appointments."]
22841pub struct Schedule {
22842    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
22843    pub id: Option<String>,
22844    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
22845    pub meta: Option<Box<Meta>>,
22846    #[primitive]
22847    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
22848    pub implicitRules: Option<Box<FHIRUri>>,
22849    #[primitive]
22850    #[doc = "The base language in which the resource is written."]
22851    pub language: Option<Box<FHIRCode>>,
22852    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
22853    pub text: Option<Box<Narrative>>,
22854    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
22855    pub contained: Option<Vec<Box<Resource>>>,
22856    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
22857    pub extension: Option<Vec<Box<Extension>>>,
22858    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
22859    pub modifierExtension: Option<Vec<Box<Extension>>>,
22860    #[rename_field = "identifier"]
22861    #[doc = "External Ids for this item."]
22862    pub identifier_: Option<Vec<Box<Identifier>>>,
22863    #[primitive]
22864    #[doc = "Whether this schedule record is in active use or should not be used (such as was entered in error)."]
22865    pub active: Option<Box<FHIRBoolean>>,
22866    #[doc = "A broad categorization of the service that is to be performed during this appointment."]
22867    pub serviceCategory: Option<Vec<Box<CodeableConcept>>>,
22868    #[doc = "The specific service that is to be performed during this appointment."]
22869    pub serviceType: Option<Vec<Box<CodeableConcept>>>,
22870    #[doc = "The specialty of a practitioner that would be required to perform the service requested in this appointment."]
22871    pub specialty: Option<Vec<Box<CodeableConcept>>>,
22872    #[cardinality(min = 1usize)]
22873    # [reference (targets = ["Patient" , "Practitioner" , "PractitionerRole" , "RelatedPerson" , "Device" , "HealthcareService" , "Location"])]
22874    #[doc = "Slots that reference this schedule resource provide the availability details to these referenced resource(s)."]
22875    pub actor: Vec<Box<Reference>>,
22876    #[doc = "The period of time that the slots that reference this Schedule resource cover (even if none exist). These  cover the amount of time that an organization's planning horizon; the interval for which they are currently accepting appointments. This does not define a \"template\" for planning outside these dates."]
22877    pub planningHorizon: Option<Box<Period>>,
22878    #[primitive]
22879    #[doc = "Comments on the availability to describe any extended information. Such as custom constraints on the slots that may be associated."]
22880    pub comment: Option<Box<FHIRString>>,
22881}
22882#[derive(
22883    Clone,
22884    Reflect,
22885    Debug,
22886    Default,
22887    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
22888    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
22889)]
22890#[fhir_serialize_type = "complex"]
22891#[doc = "Used to define the parts of a composite search parameter."]
22892pub struct SearchParameterComponent {
22893    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
22894    pub id: Option<String>,
22895    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
22896    pub extension: Option<Vec<Box<Extension>>>,
22897    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
22898    pub modifierExtension: Option<Vec<Box<Extension>>>,
22899    #[primitive]
22900    #[doc = "The definition of the search parameter that describes this part."]
22901    pub definition: Box<FHIRCanonical>,
22902    #[primitive]
22903    #[doc = "A sub-expression that defines how to extract values for this component from the output of the main SearchParameter.expression."]
22904    pub expression: Box<FHIRString>,
22905}
22906#[derive(
22907    Clone,
22908    Reflect,
22909    Debug,
22910    Default,
22911    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
22912    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
22913)]
22914#[fhir_serialize_type = "resource"]
22915#[doc = "A search parameter that defines a named search item that can be used to search/filter on a resource."]
22916pub struct SearchParameter {
22917    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
22918    pub id: Option<String>,
22919    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
22920    pub meta: Option<Box<Meta>>,
22921    #[primitive]
22922    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
22923    pub implicitRules: Option<Box<FHIRUri>>,
22924    #[primitive]
22925    #[doc = "The base language in which the resource is written."]
22926    pub language: Option<Box<FHIRCode>>,
22927    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
22928    pub text: Option<Box<Narrative>>,
22929    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
22930    pub contained: Option<Vec<Box<Resource>>>,
22931    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
22932    pub extension: Option<Vec<Box<Extension>>>,
22933    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
22934    pub modifierExtension: Option<Vec<Box<Extension>>>,
22935    #[primitive]
22936    #[doc = "An absolute URI that is used to identify this search parameter when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this search parameter is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the search parameter is stored on different servers."]
22937    pub url: Box<FHIRUri>,
22938    #[primitive]
22939    #[doc = "The identifier that is used to identify this version of the search parameter when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the search parameter author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence."]
22940    pub version: Option<Box<FHIRString>>,
22941    #[primitive]
22942    #[doc = "A natural language name identifying the search parameter. This name should be usable as an identifier for the module by machine processing applications such as code generation."]
22943    pub name: Box<FHIRString>,
22944    #[primitive]
22945    #[doc = "Where this search parameter is originally defined. If a derivedFrom is provided, then the details in the search parameter must be consistent with the definition from which it is defined. i.e. the parameter should have the same meaning, and (usually) the functionality should be a proper subset of the underlying search parameter."]
22946    pub derivedFrom: Option<Box<FHIRCanonical>>,
22947    #[primitive]
22948    #[doc = "The status of this search parameter. Enables tracking the life-cycle of the content."]
22949    pub status: Box<terminology::PublicationStatus>,
22950    #[primitive]
22951    #[doc = "A Boolean value to indicate that this search parameter is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage."]
22952    pub experimental: Option<Box<FHIRBoolean>>,
22953    #[primitive]
22954    #[doc = "The date  (and optionally time) when the search parameter was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the search parameter changes."]
22955    pub date: Option<Box<FHIRDateTime>>,
22956    #[primitive]
22957    #[doc = "The name of the organization or individual that published the search parameter."]
22958    pub publisher: Option<Box<FHIRString>>,
22959    #[doc = "Contact details to assist a user in finding and communicating with the publisher."]
22960    pub contact: Option<Vec<Box<ContactDetail>>>,
22961    #[primitive]
22962    #[doc = "And how it used."]
22963    pub description: Box<FHIRMarkdown>,
22964    #[doc = "The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate search parameter instances."]
22965    pub useContext: Option<Vec<Box<UsageContext>>>,
22966    #[doc = "A legal or geographic region in which the search parameter is intended to be used."]
22967    pub jurisdiction: Option<Vec<Box<CodeableConcept>>>,
22968    #[primitive]
22969    #[doc = "Explanation of why this search parameter is needed and why it has been designed as it has."]
22970    pub purpose: Option<Box<FHIRMarkdown>>,
22971    #[primitive]
22972    #[doc = "The code used in the URL or the parameter name in a parameters resource for this search parameter."]
22973    pub code: Box<FHIRCode>,
22974    #[primitive]
22975    #[cardinality(min = 1usize)]
22976    #[doc = "The base resource type(s) that this search parameter can be used against."]
22977    pub base: Vec<Box<terminology::ResourceTypes>>,
22978    #[rename_field = "type"]
22979    #[primitive]
22980    #[doc = "The type of value that a search parameter may contain, and how the content is interpreted."]
22981    pub type_: Box<terminology::SearchParamType>,
22982    #[primitive]
22983    #[doc = "A FHIRPath expression that returns a set of elements for the search parameter."]
22984    pub expression: Option<Box<FHIRString>>,
22985    #[primitive]
22986    #[doc = "An XPath expression that returns a set of elements for the search parameter."]
22987    pub xpath: Option<Box<FHIRString>>,
22988    #[primitive]
22989    #[doc = "How the search parameter relates to the set of elements returned by evaluating the xpath query."]
22990    pub xpathUsage: Option<Box<terminology::SearchXpathUsage>>,
22991    #[primitive]
22992    #[doc = "Types of resource (if a resource is referenced)."]
22993    pub target: Option<Vec<Box<terminology::ResourceTypes>>>,
22994    #[primitive]
22995    #[doc = "Whether multiple values are allowed for each time the parameter exists. Values are separated by commas, and the parameter matches if any of the values match."]
22996    pub multipleOr: Option<Box<FHIRBoolean>>,
22997    #[primitive]
22998    #[doc = "Whether multiple parameters are allowed - e.g. more than one parameter with the same name. The search matches if all the parameters match."]
22999    pub multipleAnd: Option<Box<FHIRBoolean>>,
23000    #[primitive]
23001    #[doc = "Comparators supported for the search parameter."]
23002    pub comparator: Option<Vec<Box<terminology::SearchComparator>>>,
23003    #[primitive]
23004    #[doc = "A modifier supported for the search parameter."]
23005    pub modifier: Option<Vec<Box<terminology::SearchModifierCode>>>,
23006    #[primitive]
23007    #[doc = "Contains the names of any search parameters which may be chained to the containing search parameter. Chained parameters may be added to search parameters of type reference and specify that resources will only be returned if they contain a reference to a resource which matches the chained parameter value. Values for this field should be drawn from SearchParameter.code for a parameter on the target resource type."]
23008    pub chain: Option<Vec<Box<FHIRString>>>,
23009    #[doc = "Used to define the parts of a composite search parameter."]
23010    pub component: Option<Vec<SearchParameterComponent>>,
23011}
23012#[derive(
23013    Clone,
23014    Reflect,
23015    Debug,
23016    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
23017    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
23018)]
23019#[fhir_serialize_type = "typechoice"]
23020#[type_choice_field_name = "quantity"]
23021pub enum ServiceRequestQuantityTypeChoice {
23022    Quantity(Box<Quantity>),
23023    Ratio(Box<Ratio>),
23024    Range(Box<Range>),
23025}
23026impl Default for ServiceRequestQuantityTypeChoice {
23027    fn default() -> Self {
23028        ServiceRequestQuantityTypeChoice::Quantity(Box::new(Default::default()))
23029    }
23030}
23031#[derive(
23032    Clone,
23033    Reflect,
23034    Debug,
23035    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
23036    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
23037)]
23038#[fhir_serialize_type = "typechoice"]
23039#[type_choice_field_name = "occurrence"]
23040pub enum ServiceRequestOccurrenceTypeChoice {
23041    DateTime(Box<FHIRDateTime>),
23042    Period(Box<Period>),
23043    Timing(Box<Timing>),
23044}
23045impl Default for ServiceRequestOccurrenceTypeChoice {
23046    fn default() -> Self {
23047        ServiceRequestOccurrenceTypeChoice::DateTime(Box::new(Default::default()))
23048    }
23049}
23050#[derive(
23051    Clone,
23052    Reflect,
23053    Debug,
23054    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
23055    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
23056)]
23057#[fhir_serialize_type = "typechoice"]
23058#[type_choice_field_name = "asNeeded"]
23059pub enum ServiceRequestAsNeededTypeChoice {
23060    Boolean(Box<FHIRBoolean>),
23061    CodeableConcept(Box<CodeableConcept>),
23062}
23063impl Default for ServiceRequestAsNeededTypeChoice {
23064    fn default() -> Self {
23065        ServiceRequestAsNeededTypeChoice::Boolean(Box::new(Default::default()))
23066    }
23067}
23068#[derive(
23069    Clone,
23070    Reflect,
23071    Debug,
23072    Default,
23073    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
23074    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
23075)]
23076#[fhir_serialize_type = "resource"]
23077#[doc = "A record of a request for service such as diagnostic investigations, treatments, or operations to be performed."]
23078pub struct ServiceRequest {
23079    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
23080    pub id: Option<String>,
23081    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
23082    pub meta: Option<Box<Meta>>,
23083    #[primitive]
23084    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
23085    pub implicitRules: Option<Box<FHIRUri>>,
23086    #[primitive]
23087    #[doc = "The base language in which the resource is written."]
23088    pub language: Option<Box<FHIRCode>>,
23089    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
23090    pub text: Option<Box<Narrative>>,
23091    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
23092    pub contained: Option<Vec<Box<Resource>>>,
23093    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
23094    pub extension: Option<Vec<Box<Extension>>>,
23095    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
23096    pub modifierExtension: Option<Vec<Box<Extension>>>,
23097    #[rename_field = "identifier"]
23098    #[doc = "Identifiers assigned to this order instance by the orderer and/or the receiver and/or order fulfiller."]
23099    pub identifier_: Option<Vec<Box<Identifier>>>,
23100    #[primitive]
23101    #[doc = "The URL pointing to a FHIR-defined protocol, guideline, orderset or other definition that is adhered to in whole or in part by this ServiceRequest."]
23102    pub instantiatesCanonical: Option<Vec<Box<FHIRCanonical>>>,
23103    #[primitive]
23104    #[doc = "The URL pointing to an externally maintained protocol, guideline, orderset or other definition that is adhered to in whole or in part by this ServiceRequest."]
23105    pub instantiatesUri: Option<Vec<Box<FHIRUri>>>,
23106    # [reference (targets = ["CarePlan" , "ServiceRequest" , "MedicationRequest"])]
23107    #[doc = "Plan/proposal/order fulfilled by this request."]
23108    pub basedOn: Option<Vec<Box<Reference>>>,
23109    # [reference (targets = ["ServiceRequest"])]
23110    #[doc = "The request takes the place of the referenced completed or terminated request(s)."]
23111    pub replaces: Option<Vec<Box<Reference>>>,
23112    #[doc = "A shared identifier common to all service requests that were authorized more or less simultaneously by a single author, representing the composite or group identifier."]
23113    pub requisition: Option<Box<Identifier>>,
23114    #[primitive]
23115    #[doc = "The status of the order."]
23116    pub status: Box<terminology::RequestStatus>,
23117    #[primitive]
23118    #[doc = "Whether the request is a proposal, plan, an original order or a reflex order."]
23119    pub intent: Box<terminology::RequestIntent>,
23120    #[doc = "A code that classifies the service for searching, sorting and display purposes (e.g. \"Surgical Procedure\")."]
23121    pub category: Option<Vec<Box<CodeableConcept>>>,
23122    #[primitive]
23123    #[doc = "Indicates how quickly the ServiceRequest should be addressed with respect to other requests."]
23124    pub priority: Option<Box<terminology::RequestPriority>>,
23125    #[primitive]
23126    #[doc = "Set this to true if the record is saying that the service/procedure should NOT be performed."]
23127    pub doNotPerform: Option<Box<FHIRBoolean>>,
23128    #[doc = "A code that identifies a particular service (i.e., procedure, diagnostic investigation, or panel of investigations) that have been requested."]
23129    pub code: Option<Box<CodeableConcept>>,
23130    #[doc = "Additional details and instructions about the how the services are to be delivered.   For example, and order for a urinary catheter may have an order detail for an external or indwelling catheter, or an order for a bandage may require additional instructions specifying how the bandage should be applied."]
23131    pub orderDetail: Option<Vec<Box<CodeableConcept>>>,
23132    # [type_choice_variants (complex = ["quantityQuantity" , "quantityRatio" , "quantityRange"] , primitive = [])]
23133    #[doc = "An amount of service being requested which can be a quantity ( for example $1,500 home modification), a ratio ( for example, 20 half day visits per month), or a range (2.0 to 1.8 Gy per fraction)."]
23134    pub quantity: Option<ServiceRequestQuantityTypeChoice>,
23135    # [reference (targets = ["Patient" , "Group" , "Location" , "Device"])]
23136    #[doc = "On whom or what the service is to be performed. This is usually a human patient, but can also be requested on animals, groups of humans or animals, devices such as dialysis machines, or even locations (typically for environmental scans)."]
23137    pub subject: Box<Reference>,
23138    # [reference (targets = ["Encounter"])]
23139    #[doc = "An encounter that provides additional information about the healthcare context in which this request is made."]
23140    pub encounter: Option<Box<Reference>>,
23141    # [type_choice_variants (complex = ["occurrencePeriod" , "occurrenceTiming"] , primitive = ["occurrenceDateTime"])]
23142    #[doc = "The date/time at which the requested service should occur."]
23143    pub occurrence: Option<ServiceRequestOccurrenceTypeChoice>,
23144    # [type_choice_variants (complex = ["asNeededCodeableConcept"] , primitive = ["asNeededBoolean"])]
23145    #[doc = "If a CodeableConcept is present, it indicates the pre-condition for performing the service.  For example \"pain\", \"on flare-up\", etc."]
23146    pub asNeeded: Option<ServiceRequestAsNeededTypeChoice>,
23147    #[primitive]
23148    #[doc = "When the request transitioned to being actionable."]
23149    pub authoredOn: Option<Box<FHIRDateTime>>,
23150    # [reference (targets = ["Practitioner" , "PractitionerRole" , "Organization" , "Patient" , "RelatedPerson" , "Device"])]
23151    #[doc = "The individual who initiated the request and has responsibility for its activation."]
23152    pub requester: Option<Box<Reference>>,
23153    #[doc = "Desired type of performer for doing the requested service."]
23154    pub performerType: Option<Box<CodeableConcept>>,
23155    # [reference (targets = ["Practitioner" , "PractitionerRole" , "Organization" , "CareTeam" , "HealthcareService" , "Patient" , "Device" , "RelatedPerson"])]
23156    #[doc = "The desired performer for doing the requested service.  For example, the surgeon, dermatopathologist, endoscopist, etc."]
23157    pub performer: Option<Vec<Box<Reference>>>,
23158    #[doc = "The preferred location(s) where the procedure should actually happen in coded or free text form. E.g. at home or nursing day care center."]
23159    pub locationCode: Option<Vec<Box<CodeableConcept>>>,
23160    # [reference (targets = ["Location"])]
23161    #[doc = "A reference to the the preferred location(s) where the procedure should actually happen. E.g. at home or nursing day care center."]
23162    pub locationReference: Option<Vec<Box<Reference>>>,
23163    #[doc = "An explanation or justification for why this service is being requested in coded or textual form.   This is often for billing purposes.  May relate to the resources referred to in `supportingInfo`."]
23164    pub reasonCode: Option<Vec<Box<CodeableConcept>>>,
23165    # [reference (targets = ["Condition" , "Observation" , "DiagnosticReport" , "DocumentReference"])]
23166    #[doc = "Indicates another resource that provides a justification for why this service is being requested.   May relate to the resources referred to in `supportingInfo`."]
23167    pub reasonReference: Option<Vec<Box<Reference>>>,
23168    # [reference (targets = ["Coverage" , "ClaimResponse"])]
23169    #[doc = "Insurance plans, coverage extensions, pre-authorizations and/or pre-determinations that may be needed for delivering the requested service."]
23170    pub insurance: Option<Vec<Box<Reference>>>,
23171    # [reference (targets = ["Resource"])]
23172    #[doc = "Additional clinical information about the patient or specimen that may influence the services or their interpretations.     This information includes diagnosis, clinical findings and other observations.  In laboratory ordering these are typically referred to as \"ask at order entry questions (AOEs)\".  This includes observations explicitly requested by the producer (filler) to provide context or supporting information needed to complete the order. For example,  reporting the amount of inspired oxygen for blood gas measurements."]
23173    pub supportingInfo: Option<Vec<Box<Reference>>>,
23174    # [reference (targets = ["Specimen"])]
23175    #[doc = "One or more specimens that the laboratory procedure will use."]
23176    pub specimen: Option<Vec<Box<Reference>>>,
23177    #[doc = "Anatomic location where the procedure should be performed. This is the target site."]
23178    pub bodySite: Option<Vec<Box<CodeableConcept>>>,
23179    #[doc = "Any other notes and comments made about the service request. For example, internal billing notes."]
23180    pub note: Option<Vec<Box<Annotation>>>,
23181    #[primitive]
23182    #[doc = "Instructions in terms that are understood by the patient or consumer."]
23183    pub patientInstruction: Option<Box<FHIRString>>,
23184    # [reference (targets = ["Provenance"])]
23185    #[doc = "Key events in the history of the request."]
23186    pub relevantHistory: Option<Vec<Box<Reference>>>,
23187}
23188#[derive(
23189    Clone,
23190    Reflect,
23191    Debug,
23192    Default,
23193    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
23194    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
23195)]
23196#[fhir_serialize_type = "resource"]
23197#[doc = "A slot of time on a schedule that may be available for booking appointments."]
23198pub struct Slot {
23199    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
23200    pub id: Option<String>,
23201    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
23202    pub meta: Option<Box<Meta>>,
23203    #[primitive]
23204    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
23205    pub implicitRules: Option<Box<FHIRUri>>,
23206    #[primitive]
23207    #[doc = "The base language in which the resource is written."]
23208    pub language: Option<Box<FHIRCode>>,
23209    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
23210    pub text: Option<Box<Narrative>>,
23211    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
23212    pub contained: Option<Vec<Box<Resource>>>,
23213    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
23214    pub extension: Option<Vec<Box<Extension>>>,
23215    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
23216    pub modifierExtension: Option<Vec<Box<Extension>>>,
23217    #[rename_field = "identifier"]
23218    #[doc = "External Ids for this item."]
23219    pub identifier_: Option<Vec<Box<Identifier>>>,
23220    #[doc = "A broad categorization of the service that is to be performed during this appointment."]
23221    pub serviceCategory: Option<Vec<Box<CodeableConcept>>>,
23222    #[doc = "The type of appointments that can be booked into this slot (ideally this would be an identifiable service - which is at a location, rather than the location itself). If provided then this overrides the value provided on the availability resource."]
23223    pub serviceType: Option<Vec<Box<CodeableConcept>>>,
23224    #[doc = "The specialty of a practitioner that would be required to perform the service requested in this appointment."]
23225    pub specialty: Option<Vec<Box<CodeableConcept>>>,
23226    #[doc = "The style of appointment or patient that may be booked in the slot (not service type)."]
23227    pub appointmentType: Option<Box<CodeableConcept>>,
23228    # [reference (targets = ["Schedule"])]
23229    #[doc = "The schedule resource that this slot defines an interval of status information."]
23230    pub schedule: Box<Reference>,
23231    #[primitive]
23232    #[doc = "busy | free | busy-unavailable | busy-tentative | entered-in-error."]
23233    pub status: Box<terminology::Slotstatus>,
23234    #[primitive]
23235    #[doc = "Date/Time that the slot is to begin."]
23236    pub start: Box<FHIRInstant>,
23237    #[primitive]
23238    #[doc = "Date/Time that the slot is to conclude."]
23239    pub end: Box<FHIRInstant>,
23240    #[primitive]
23241    #[doc = "This slot has already been overbooked, appointments are unlikely to be accepted for this time."]
23242    pub overbooked: Option<Box<FHIRBoolean>>,
23243    #[primitive]
23244    #[doc = "Comments on the slot to describe any extended information. Such as custom constraints on the slot."]
23245    pub comment: Option<Box<FHIRString>>,
23246}
23247#[derive(
23248    Clone,
23249    Reflect,
23250    Debug,
23251    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
23252    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
23253)]
23254#[fhir_serialize_type = "typechoice"]
23255#[type_choice_field_name = "collected"]
23256pub enum SpecimenCollectionCollectedTypeChoice {
23257    DateTime(Box<FHIRDateTime>),
23258    Period(Box<Period>),
23259}
23260impl Default for SpecimenCollectionCollectedTypeChoice {
23261    fn default() -> Self {
23262        SpecimenCollectionCollectedTypeChoice::DateTime(Box::new(Default::default()))
23263    }
23264}
23265#[derive(
23266    Clone,
23267    Reflect,
23268    Debug,
23269    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
23270    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
23271)]
23272#[fhir_serialize_type = "typechoice"]
23273#[type_choice_field_name = "fastingStatus"]
23274pub enum SpecimenCollectionFastingStatusTypeChoice {
23275    CodeableConcept(Box<CodeableConcept>),
23276    Duration(Box<Duration>),
23277}
23278impl Default for SpecimenCollectionFastingStatusTypeChoice {
23279    fn default() -> Self {
23280        SpecimenCollectionFastingStatusTypeChoice::CodeableConcept(Box::new(Default::default()))
23281    }
23282}
23283#[derive(
23284    Clone,
23285    Reflect,
23286    Debug,
23287    Default,
23288    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
23289    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
23290)]
23291#[fhir_serialize_type = "complex"]
23292#[doc = "Details concerning the specimen collection."]
23293pub struct SpecimenCollection {
23294    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
23295    pub id: Option<String>,
23296    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
23297    pub extension: Option<Vec<Box<Extension>>>,
23298    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
23299    pub modifierExtension: Option<Vec<Box<Extension>>>,
23300    # [reference (targets = ["Practitioner" , "PractitionerRole"])]
23301    #[doc = "Person who collected the specimen."]
23302    pub collector: Option<Box<Reference>>,
23303    # [type_choice_variants (complex = ["collectedPeriod"] , primitive = ["collectedDateTime"])]
23304    #[doc = "Time when specimen was collected from subject - the physiologically relevant time."]
23305    pub collected: Option<SpecimenCollectionCollectedTypeChoice>,
23306    #[doc = "The span of time over which the collection of a specimen occurred."]
23307    pub duration: Option<Box<Duration>>,
23308    #[doc = "The quantity of specimen collected; for instance the volume of a blood sample, or the physical measurement of an anatomic pathology sample."]
23309    pub quantity: Option<Box<Quantity>>,
23310    #[doc = "A coded value specifying the technique that is used to perform the procedure."]
23311    pub method: Option<Box<CodeableConcept>>,
23312    #[doc = "Anatomical location from which the specimen was collected (if subject is a patient). This is the target site.  This element is not used for environmental specimens."]
23313    pub bodySite: Option<Box<CodeableConcept>>,
23314    # [type_choice_variants (complex = ["fastingStatusCodeableConcept" , "fastingStatusDuration"] , primitive = [])]
23315    #[doc = "Abstinence or reduction from some or all food, drink, or both, for a period of time prior to sample collection."]
23316    pub fastingStatus: Option<SpecimenCollectionFastingStatusTypeChoice>,
23317}
23318#[derive(
23319    Clone,
23320    Reflect,
23321    Debug,
23322    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
23323    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
23324)]
23325#[fhir_serialize_type = "typechoice"]
23326#[type_choice_field_name = "time"]
23327pub enum SpecimenProcessingTimeTypeChoice {
23328    DateTime(Box<FHIRDateTime>),
23329    Period(Box<Period>),
23330}
23331impl Default for SpecimenProcessingTimeTypeChoice {
23332    fn default() -> Self {
23333        SpecimenProcessingTimeTypeChoice::DateTime(Box::new(Default::default()))
23334    }
23335}
23336#[derive(
23337    Clone,
23338    Reflect,
23339    Debug,
23340    Default,
23341    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
23342    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
23343)]
23344#[fhir_serialize_type = "complex"]
23345#[doc = "Details concerning processing and processing steps for the specimen."]
23346pub struct SpecimenProcessing {
23347    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
23348    pub id: Option<String>,
23349    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
23350    pub extension: Option<Vec<Box<Extension>>>,
23351    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
23352    pub modifierExtension: Option<Vec<Box<Extension>>>,
23353    #[primitive]
23354    #[doc = "Textual description of procedure."]
23355    pub description: Option<Box<FHIRString>>,
23356    #[doc = "A coded value specifying the procedure used to process the specimen."]
23357    pub procedure: Option<Box<CodeableConcept>>,
23358    # [reference (targets = ["Substance"])]
23359    #[doc = "Material used in the processing step."]
23360    pub additive: Option<Vec<Box<Reference>>>,
23361    # [type_choice_variants (complex = ["timePeriod"] , primitive = ["timeDateTime"])]
23362    #[doc = "A record of the time or period when the specimen processing occurred.  For example the time of sample fixation or the period of time the sample was in formalin."]
23363    pub time: Option<SpecimenProcessingTimeTypeChoice>,
23364}
23365#[derive(
23366    Clone,
23367    Reflect,
23368    Debug,
23369    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
23370    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
23371)]
23372#[fhir_serialize_type = "typechoice"]
23373#[type_choice_field_name = "additive"]
23374pub enum SpecimenContainerAdditiveTypeChoice {
23375    CodeableConcept(Box<CodeableConcept>),
23376    # [reference (targets = ["Substance"])]
23377    Reference(Box<Reference>),
23378}
23379impl Default for SpecimenContainerAdditiveTypeChoice {
23380    fn default() -> Self {
23381        SpecimenContainerAdditiveTypeChoice::CodeableConcept(Box::new(Default::default()))
23382    }
23383}
23384#[derive(
23385    Clone,
23386    Reflect,
23387    Debug,
23388    Default,
23389    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
23390    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
23391)]
23392#[fhir_serialize_type = "complex"]
23393#[doc = "The container holding the specimen.  The recursive nature of containers; i.e. blood in tube in tray in rack is not addressed here."]
23394pub struct SpecimenContainer {
23395    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
23396    pub id: Option<String>,
23397    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
23398    pub extension: Option<Vec<Box<Extension>>>,
23399    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
23400    pub modifierExtension: Option<Vec<Box<Extension>>>,
23401    #[rename_field = "identifier"]
23402    #[doc = "Id for container. There may be multiple; a manufacturer's bar code, lab assigned identifier, etc. The container ID may differ from the specimen id in some circumstances."]
23403    pub identifier_: Option<Vec<Box<Identifier>>>,
23404    #[primitive]
23405    #[doc = "Textual description of the container."]
23406    pub description: Option<Box<FHIRString>>,
23407    #[rename_field = "type"]
23408    #[doc = "The type of container associated with the specimen (e.g. slide, aliquot, etc.)."]
23409    pub type_: Option<Box<CodeableConcept>>,
23410    #[doc = "The capacity (volume or other measure) the container may contain."]
23411    pub capacity: Option<Box<Quantity>>,
23412    #[doc = "The quantity of specimen in the container; may be volume, dimensions, or other appropriate measurements, depending on the specimen type."]
23413    pub specimenQuantity: Option<Box<Quantity>>,
23414    # [type_choice_variants (complex = ["additiveCodeableConcept" , "additiveReference"] , primitive = [])]
23415    #[doc = "Introduced substance to preserve, maintain or enhance the specimen. Examples: Formalin, Citrate, EDTA."]
23416    pub additive: Option<SpecimenContainerAdditiveTypeChoice>,
23417}
23418#[derive(
23419    Clone,
23420    Reflect,
23421    Debug,
23422    Default,
23423    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
23424    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
23425)]
23426#[fhir_serialize_type = "resource"]
23427#[doc = "A sample to be used for analysis."]
23428pub struct Specimen {
23429    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
23430    pub id: Option<String>,
23431    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
23432    pub meta: Option<Box<Meta>>,
23433    #[primitive]
23434    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
23435    pub implicitRules: Option<Box<FHIRUri>>,
23436    #[primitive]
23437    #[doc = "The base language in which the resource is written."]
23438    pub language: Option<Box<FHIRCode>>,
23439    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
23440    pub text: Option<Box<Narrative>>,
23441    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
23442    pub contained: Option<Vec<Box<Resource>>>,
23443    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
23444    pub extension: Option<Vec<Box<Extension>>>,
23445    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
23446    pub modifierExtension: Option<Vec<Box<Extension>>>,
23447    #[rename_field = "identifier"]
23448    #[doc = "Id for specimen."]
23449    pub identifier_: Option<Vec<Box<Identifier>>>,
23450    #[doc = "The identifier assigned by the lab when accessioning specimen(s). This is not necessarily the same as the specimen identifier, depending on local lab procedures."]
23451    pub accessionIdentifier: Option<Box<Identifier>>,
23452    #[primitive]
23453    #[doc = "The availability of the specimen."]
23454    pub status: Option<Box<terminology::SpecimenStatus>>,
23455    #[rename_field = "type"]
23456    #[doc = "The kind of material that forms the specimen."]
23457    pub type_: Option<Box<CodeableConcept>>,
23458    # [reference (targets = ["Patient" , "Group" , "Device" , "Substance" , "Location"])]
23459    #[doc = "Where the specimen came from. This may be from patient(s), from a location (e.g., the source of an environmental sample), or a sampling of a substance or a device."]
23460    pub subject: Option<Box<Reference>>,
23461    #[primitive]
23462    #[doc = "Time when specimen was received for processing or testing."]
23463    pub receivedTime: Option<Box<FHIRDateTime>>,
23464    # [reference (targets = ["Specimen"])]
23465    #[doc = "Reference to the parent (source) specimen which is used when the specimen was either derived from or a component of another specimen."]
23466    pub parent: Option<Vec<Box<Reference>>>,
23467    # [reference (targets = ["ServiceRequest"])]
23468    #[doc = "Details concerning a service request that required a specimen to be collected."]
23469    pub request: Option<Vec<Box<Reference>>>,
23470    #[doc = "Details concerning the specimen collection."]
23471    pub collection: Option<SpecimenCollection>,
23472    #[doc = "Details concerning processing and processing steps for the specimen."]
23473    pub processing: Option<Vec<SpecimenProcessing>>,
23474    #[doc = "The container holding the specimen.  The recursive nature of containers; i.e. blood in tube in tray in rack is not addressed here."]
23475    pub container: Option<Vec<SpecimenContainer>>,
23476    #[doc = "A mode or state of being that describes the nature of the specimen."]
23477    pub condition: Option<Vec<Box<CodeableConcept>>>,
23478    #[doc = "To communicate any details or issues about the specimen or during the specimen collection. (for example: broken vial, sent with patient, frozen)."]
23479    pub note: Option<Vec<Box<Annotation>>>,
23480}
23481#[derive(
23482    Clone,
23483    Reflect,
23484    Debug,
23485    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
23486    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
23487)]
23488#[fhir_serialize_type = "typechoice"]
23489#[type_choice_field_name = "minimumVolume"]
23490pub enum SpecimenDefinitionTypeTestedContainerMinimumVolumeTypeChoice {
23491    Quantity(Box<Quantity>),
23492    String(Box<FHIRString>),
23493}
23494impl Default for SpecimenDefinitionTypeTestedContainerMinimumVolumeTypeChoice {
23495    fn default() -> Self {
23496        SpecimenDefinitionTypeTestedContainerMinimumVolumeTypeChoice::Quantity(Box::new(
23497            Default::default(),
23498        ))
23499    }
23500}
23501#[derive(
23502    Clone,
23503    Reflect,
23504    Debug,
23505    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
23506    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
23507)]
23508#[fhir_serialize_type = "typechoice"]
23509#[type_choice_field_name = "additive"]
23510pub enum SpecimenDefinitionTypeTestedContainerAdditiveAdditiveTypeChoice {
23511    CodeableConcept(Box<CodeableConcept>),
23512    # [reference (targets = ["Substance"])]
23513    Reference(Box<Reference>),
23514}
23515impl Default for SpecimenDefinitionTypeTestedContainerAdditiveAdditiveTypeChoice {
23516    fn default() -> Self {
23517        SpecimenDefinitionTypeTestedContainerAdditiveAdditiveTypeChoice::CodeableConcept(Box::new(
23518            Default::default(),
23519        ))
23520    }
23521}
23522#[derive(
23523    Clone,
23524    Reflect,
23525    Debug,
23526    Default,
23527    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
23528    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
23529)]
23530#[fhir_serialize_type = "complex"]
23531#[doc = "Substance introduced in the kind of container to preserve, maintain or enhance the specimen. Examples: Formalin, Citrate, EDTA."]
23532pub struct SpecimenDefinitionTypeTestedContainerAdditive {
23533    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
23534    pub id: Option<String>,
23535    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
23536    pub extension: Option<Vec<Box<Extension>>>,
23537    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
23538    pub modifierExtension: Option<Vec<Box<Extension>>>,
23539    # [type_choice_variants (complex = ["additiveCodeableConcept" , "additiveReference"] , primitive = [])]
23540    #[doc = "Substance introduced in the kind of container to preserve, maintain or enhance the specimen. Examples: Formalin, Citrate, EDTA."]
23541    pub additive: SpecimenDefinitionTypeTestedContainerAdditiveAdditiveTypeChoice,
23542}
23543#[derive(
23544    Clone,
23545    Reflect,
23546    Debug,
23547    Default,
23548    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
23549    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
23550)]
23551#[fhir_serialize_type = "complex"]
23552#[doc = "The specimen's container."]
23553pub struct SpecimenDefinitionTypeTestedContainer {
23554    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
23555    pub id: Option<String>,
23556    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
23557    pub extension: Option<Vec<Box<Extension>>>,
23558    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
23559    pub modifierExtension: Option<Vec<Box<Extension>>>,
23560    #[doc = "The type of material of the container."]
23561    pub material: Option<Box<CodeableConcept>>,
23562    #[rename_field = "type"]
23563    #[doc = "The type of container used to contain this kind of specimen."]
23564    pub type_: Option<Box<CodeableConcept>>,
23565    #[doc = "Color of container cap."]
23566    pub cap: Option<Box<CodeableConcept>>,
23567    #[primitive]
23568    #[doc = "The textual description of the kind of container."]
23569    pub description: Option<Box<FHIRString>>,
23570    #[doc = "The capacity (volume or other measure) of this kind of container."]
23571    pub capacity: Option<Box<Quantity>>,
23572    # [type_choice_variants (complex = ["minimumVolumeQuantity"] , primitive = ["minimumVolumeString"])]
23573    #[doc = "The minimum volume to be conditioned in the container."]
23574    pub minimumVolume: Option<SpecimenDefinitionTypeTestedContainerMinimumVolumeTypeChoice>,
23575    #[doc = "Substance introduced in the kind of container to preserve, maintain or enhance the specimen. Examples: Formalin, Citrate, EDTA."]
23576    pub additive: Option<Vec<SpecimenDefinitionTypeTestedContainerAdditive>>,
23577    #[primitive]
23578    #[doc = "Special processing that should be applied to the container for this kind of specimen."]
23579    pub preparation: Option<Box<FHIRString>>,
23580}
23581#[derive(
23582    Clone,
23583    Reflect,
23584    Debug,
23585    Default,
23586    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
23587    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
23588)]
23589#[fhir_serialize_type = "complex"]
23590#[doc = "Set of instructions for preservation/transport of the specimen at a defined temperature interval, prior the testing process."]
23591pub struct SpecimenDefinitionTypeTestedHandling {
23592    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
23593    pub id: Option<String>,
23594    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
23595    pub extension: Option<Vec<Box<Extension>>>,
23596    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
23597    pub modifierExtension: Option<Vec<Box<Extension>>>,
23598    #[doc = "It qualifies the interval of temperature, which characterizes an occurrence of handling. Conditions that are not related to temperature may be handled in the instruction element."]
23599    pub temperatureQualifier: Option<Box<CodeableConcept>>,
23600    #[doc = "The temperature interval for this set of handling instructions."]
23601    pub temperatureRange: Option<Box<Range>>,
23602    #[doc = "The maximum time interval of preservation of the specimen with these conditions."]
23603    pub maxDuration: Option<Box<Duration>>,
23604    #[primitive]
23605    #[doc = "Additional textual instructions for the preservation or transport of the specimen. For instance, 'Protect from light exposure'."]
23606    pub instruction: Option<Box<FHIRString>>,
23607}
23608#[derive(
23609    Clone,
23610    Reflect,
23611    Debug,
23612    Default,
23613    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
23614    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
23615)]
23616#[fhir_serialize_type = "complex"]
23617#[doc = "Specimen conditioned in a container as expected by the testing laboratory."]
23618pub struct SpecimenDefinitionTypeTested {
23619    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
23620    pub id: Option<String>,
23621    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
23622    pub extension: Option<Vec<Box<Extension>>>,
23623    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
23624    pub modifierExtension: Option<Vec<Box<Extension>>>,
23625    #[primitive]
23626    #[doc = "Primary of secondary specimen."]
23627    pub isDerived: Option<Box<FHIRBoolean>>,
23628    #[rename_field = "type"]
23629    #[doc = "The kind of specimen conditioned for testing expected by lab."]
23630    pub type_: Option<Box<CodeableConcept>>,
23631    #[primitive]
23632    #[doc = "The preference for this type of conditioned specimen."]
23633    pub preference: Box<terminology::SpecimenContainedPreference>,
23634    #[doc = "The specimen's container."]
23635    pub container: Option<SpecimenDefinitionTypeTestedContainer>,
23636    #[primitive]
23637    #[doc = "Requirements for delivery and special handling of this kind of conditioned specimen."]
23638    pub requirement: Option<Box<FHIRString>>,
23639    #[doc = "The usual time that a specimen of this kind is retained after the ordered tests are completed, for the purpose of additional testing."]
23640    pub retentionTime: Option<Box<Duration>>,
23641    #[doc = "Criterion for rejection of the specimen in its container by the laboratory."]
23642    pub rejectionCriterion: Option<Vec<Box<CodeableConcept>>>,
23643    #[doc = "Set of instructions for preservation/transport of the specimen at a defined temperature interval, prior the testing process."]
23644    pub handling: Option<Vec<SpecimenDefinitionTypeTestedHandling>>,
23645}
23646#[derive(
23647    Clone,
23648    Reflect,
23649    Debug,
23650    Default,
23651    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
23652    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
23653)]
23654#[fhir_serialize_type = "resource"]
23655#[doc = "A kind of specimen with associated set of requirements."]
23656pub struct SpecimenDefinition {
23657    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
23658    pub id: Option<String>,
23659    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
23660    pub meta: Option<Box<Meta>>,
23661    #[primitive]
23662    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
23663    pub implicitRules: Option<Box<FHIRUri>>,
23664    #[primitive]
23665    #[doc = "The base language in which the resource is written."]
23666    pub language: Option<Box<FHIRCode>>,
23667    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
23668    pub text: Option<Box<Narrative>>,
23669    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
23670    pub contained: Option<Vec<Box<Resource>>>,
23671    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
23672    pub extension: Option<Vec<Box<Extension>>>,
23673    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
23674    pub modifierExtension: Option<Vec<Box<Extension>>>,
23675    #[rename_field = "identifier"]
23676    #[doc = "A business identifier associated with the kind of specimen."]
23677    pub identifier_: Option<Box<Identifier>>,
23678    #[doc = "The kind of material to be collected."]
23679    pub typeCollected: Option<Box<CodeableConcept>>,
23680    #[doc = "Preparation of the patient for specimen collection."]
23681    pub patientPreparation: Option<Vec<Box<CodeableConcept>>>,
23682    #[primitive]
23683    #[doc = "Time aspect of specimen collection (duration or offset)."]
23684    pub timeAspect: Option<Box<FHIRString>>,
23685    #[doc = "The action to be performed for collecting the specimen."]
23686    pub collection: Option<Vec<Box<CodeableConcept>>>,
23687    #[doc = "Specimen conditioned in a container as expected by the testing laboratory."]
23688    pub typeTested: Option<Vec<SpecimenDefinitionTypeTested>>,
23689}
23690#[derive(
23691    Clone,
23692    Reflect,
23693    Debug,
23694    Default,
23695    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
23696    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
23697)]
23698#[fhir_serialize_type = "complex"]
23699#[doc = "An external specification that the content is mapped to."]
23700pub struct StructureDefinitionMapping {
23701    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
23702    pub id: Option<String>,
23703    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
23704    pub extension: Option<Vec<Box<Extension>>>,
23705    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
23706    pub modifierExtension: Option<Vec<Box<Extension>>>,
23707    #[primitive]
23708    #[doc = "An Internal id that is used to identify this mapping set when specific mappings are made."]
23709    pub identity: Box<FHIRId>,
23710    #[primitive]
23711    #[doc = "An absolute URI that identifies the specification that this mapping is expressed to."]
23712    pub uri: Option<Box<FHIRUri>>,
23713    #[primitive]
23714    #[doc = "A name for the specification that is being mapped to."]
23715    pub name: Option<Box<FHIRString>>,
23716    #[primitive]
23717    #[doc = "Comments about this mapping, including version notes, issues, scope limitations, and other important notes for usage."]
23718    pub comment: Option<Box<FHIRString>>,
23719}
23720#[derive(
23721    Clone,
23722    Reflect,
23723    Debug,
23724    Default,
23725    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
23726    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
23727)]
23728#[fhir_serialize_type = "complex"]
23729#[doc = "Identifies the types of resource or data type elements to which the extension can be applied."]
23730pub struct StructureDefinitionContext {
23731    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
23732    pub id: Option<String>,
23733    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
23734    pub extension: Option<Vec<Box<Extension>>>,
23735    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
23736    pub modifierExtension: Option<Vec<Box<Extension>>>,
23737    #[rename_field = "type"]
23738    #[primitive]
23739    #[doc = "Defines how to interpret the expression that defines what the context of the extension is."]
23740    pub type_: Box<terminology::ExtensionContextType>,
23741    #[primitive]
23742    #[doc = "An expression that defines where an extension can be used in resources."]
23743    pub expression: Box<FHIRString>,
23744}
23745#[derive(
23746    Clone,
23747    Reflect,
23748    Debug,
23749    Default,
23750    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
23751    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
23752)]
23753#[fhir_serialize_type = "complex"]
23754#[doc = "A snapshot view is expressed in a standalone form that can be used and interpreted without considering the base StructureDefinition."]
23755pub struct StructureDefinitionSnapshot {
23756    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
23757    pub id: Option<String>,
23758    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
23759    pub extension: Option<Vec<Box<Extension>>>,
23760    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
23761    pub modifierExtension: Option<Vec<Box<Extension>>>,
23762    #[cardinality(min = 1usize)]
23763    #[doc = "Captures constraints on each element within the resource."]
23764    pub element: Vec<Box<ElementDefinition>>,
23765}
23766#[derive(
23767    Clone,
23768    Reflect,
23769    Debug,
23770    Default,
23771    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
23772    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
23773)]
23774#[fhir_serialize_type = "complex"]
23775#[doc = "A differential view is expressed relative to the base StructureDefinition - a statement of differences that it applies."]
23776pub struct StructureDefinitionDifferential {
23777    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
23778    pub id: Option<String>,
23779    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
23780    pub extension: Option<Vec<Box<Extension>>>,
23781    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
23782    pub modifierExtension: Option<Vec<Box<Extension>>>,
23783    #[cardinality(min = 1usize)]
23784    #[doc = "Captures constraints on each element within the resource."]
23785    pub element: Vec<Box<ElementDefinition>>,
23786}
23787#[derive(
23788    Clone,
23789    Reflect,
23790    Debug,
23791    Default,
23792    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
23793    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
23794)]
23795#[fhir_serialize_type = "resource"]
23796#[doc = "A definition of a FHIR structure. This resource is used to describe the underlying resources, data types defined in FHIR, and also for describing extensions and constraints on resources and data types."]
23797pub struct StructureDefinition {
23798    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
23799    pub id: Option<String>,
23800    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
23801    pub meta: Option<Box<Meta>>,
23802    #[primitive]
23803    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
23804    pub implicitRules: Option<Box<FHIRUri>>,
23805    #[primitive]
23806    #[doc = "The base language in which the resource is written."]
23807    pub language: Option<Box<FHIRCode>>,
23808    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
23809    pub text: Option<Box<Narrative>>,
23810    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
23811    pub contained: Option<Vec<Box<Resource>>>,
23812    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
23813    pub extension: Option<Vec<Box<Extension>>>,
23814    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
23815    pub modifierExtension: Option<Vec<Box<Extension>>>,
23816    #[primitive]
23817    #[doc = "An absolute URI that is used to identify this structure definition when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this structure definition is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the structure definition is stored on different servers."]
23818    pub url: Box<FHIRUri>,
23819    #[rename_field = "identifier"]
23820    #[doc = "A formal identifier that is used to identify this structure definition when it is represented in other formats, or referenced in a specification, model, design or an instance."]
23821    pub identifier_: Option<Vec<Box<Identifier>>>,
23822    #[primitive]
23823    #[doc = "The identifier that is used to identify this version of the structure definition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the structure definition author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence."]
23824    pub version: Option<Box<FHIRString>>,
23825    #[primitive]
23826    #[doc = "A natural language name identifying the structure definition. This name should be usable as an identifier for the module by machine processing applications such as code generation."]
23827    pub name: Box<FHIRString>,
23828    #[primitive]
23829    #[doc = "A short, descriptive, user-friendly title for the structure definition."]
23830    pub title: Option<Box<FHIRString>>,
23831    #[primitive]
23832    #[doc = "The status of this structure definition. Enables tracking the life-cycle of the content."]
23833    pub status: Box<terminology::PublicationStatus>,
23834    #[primitive]
23835    #[doc = "A Boolean value to indicate that this structure definition is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage."]
23836    pub experimental: Option<Box<FHIRBoolean>>,
23837    #[primitive]
23838    #[doc = "The date  (and optionally time) when the structure definition was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the structure definition changes."]
23839    pub date: Option<Box<FHIRDateTime>>,
23840    #[primitive]
23841    #[doc = "The name of the organization or individual that published the structure definition."]
23842    pub publisher: Option<Box<FHIRString>>,
23843    #[doc = "Contact details to assist a user in finding and communicating with the publisher."]
23844    pub contact: Option<Vec<Box<ContactDetail>>>,
23845    #[primitive]
23846    #[doc = "A free text natural language description of the structure definition from a consumer's perspective."]
23847    pub description: Option<Box<FHIRMarkdown>>,
23848    #[doc = "The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate structure definition instances."]
23849    pub useContext: Option<Vec<Box<UsageContext>>>,
23850    #[doc = "A legal or geographic region in which the structure definition is intended to be used."]
23851    pub jurisdiction: Option<Vec<Box<CodeableConcept>>>,
23852    #[primitive]
23853    #[doc = "Explanation of why this structure definition is needed and why it has been designed as it has."]
23854    pub purpose: Option<Box<FHIRMarkdown>>,
23855    #[primitive]
23856    #[doc = "A copyright statement relating to the structure definition and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the structure definition."]
23857    pub copyright: Option<Box<FHIRMarkdown>>,
23858    #[doc = "A set of key words or terms from external terminologies that may be used to assist with indexing and searching of templates nby describing the use of this structure definition, or the content it describes."]
23859    pub keyword: Option<Vec<Box<Coding>>>,
23860    #[primitive]
23861    #[doc = "The version of the FHIR specification on which this StructureDefinition is based - this is the formal version of the specification, without the revision number, e.g. [publication].[major].[minor], which is 4.0.1. for this version."]
23862    pub fhirVersion: Option<Box<terminology::FHIRVersion>>,
23863    #[doc = "An external specification that the content is mapped to."]
23864    pub mapping: Option<Vec<StructureDefinitionMapping>>,
23865    #[primitive]
23866    #[doc = "Defines the kind of structure that this definition is describing."]
23867    pub kind: Box<terminology::StructureDefinitionKind>,
23868    #[rename_field = "abstract"]
23869    #[primitive]
23870    #[doc = "Whether structure this definition describes is abstract or not  - that is, whether the structure is not intended to be instantiated. For Resources and Data types, abstract types will never be exchanged  between systems."]
23871    pub abstract_: Box<FHIRBoolean>,
23872    #[doc = "Identifies the types of resource or data type elements to which the extension can be applied."]
23873    pub context: Option<Vec<StructureDefinitionContext>>,
23874    #[primitive]
23875    #[doc = "A set of rules as FHIRPath Invariants about when the extension can be used (e.g. co-occurrence variants for the extension). All the rules must be true."]
23876    pub contextInvariant: Option<Vec<Box<FHIRString>>>,
23877    #[rename_field = "type"]
23878    #[primitive]
23879    #[doc = "The type this structure describes. If the derivation kind is 'specialization' then this is the master definition for a type, and there is always one of these (a data type, an extension, a resource, including abstract ones). Otherwise the structure definition is a constraint on the stated type (and in this case, the type cannot be an abstract type).  References are URLs that are relative to http://hl7.org/fhir/StructureDefinition e.g. \"string\" is a reference to http://hl7.org/fhir/StructureDefinition/string. Absolute URLs are only allowed in logical models."]
23880    pub type_: Box<FHIRUri>,
23881    #[primitive]
23882    #[doc = "An absolute URI that is the base structure from which this type is derived, either by specialization or constraint."]
23883    pub baseDefinition: Option<Box<FHIRCanonical>>,
23884    #[primitive]
23885    #[doc = "How the type relates to the baseDefinition."]
23886    pub derivation: Option<Box<terminology::TypeDerivationRule>>,
23887    #[doc = "A snapshot view is expressed in a standalone form that can be used and interpreted without considering the base StructureDefinition."]
23888    pub snapshot: Option<StructureDefinitionSnapshot>,
23889    #[doc = "A differential view is expressed relative to the base StructureDefinition - a statement of differences that it applies."]
23890    pub differential: Option<StructureDefinitionDifferential>,
23891}
23892#[derive(
23893    Clone,
23894    Reflect,
23895    Debug,
23896    Default,
23897    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
23898    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
23899)]
23900#[fhir_serialize_type = "complex"]
23901#[doc = "A structure definition used by this map. The structure definition may describe instances that are converted, or the instances that are produced."]
23902pub struct StructureMapStructure {
23903    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
23904    pub id: Option<String>,
23905    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
23906    pub extension: Option<Vec<Box<Extension>>>,
23907    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
23908    pub modifierExtension: Option<Vec<Box<Extension>>>,
23909    #[primitive]
23910    #[doc = "The canonical reference to the structure."]
23911    pub url: Box<FHIRCanonical>,
23912    #[primitive]
23913    #[doc = "How the referenced structure is used in this mapping."]
23914    pub mode: Box<terminology::MapModelMode>,
23915    #[primitive]
23916    #[doc = "The name used for this type in the map."]
23917    pub alias: Option<Box<FHIRString>>,
23918    #[primitive]
23919    #[doc = "Documentation that describes how the structure is used in the mapping."]
23920    pub documentation: Option<Box<FHIRString>>,
23921}
23922#[derive(
23923    Clone,
23924    Reflect,
23925    Debug,
23926    Default,
23927    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
23928    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
23929)]
23930#[fhir_serialize_type = "complex"]
23931#[doc = "A name assigned to an instance of data. The instance must be provided when the mapping is invoked."]
23932pub struct StructureMapGroupInput {
23933    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
23934    pub id: Option<String>,
23935    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
23936    pub extension: Option<Vec<Box<Extension>>>,
23937    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
23938    pub modifierExtension: Option<Vec<Box<Extension>>>,
23939    #[primitive]
23940    #[doc = "Name for this instance of data."]
23941    pub name: Box<FHIRId>,
23942    #[rename_field = "type"]
23943    #[primitive]
23944    #[doc = "Type for this instance of data."]
23945    pub type_: Option<Box<FHIRString>>,
23946    #[primitive]
23947    #[doc = "Mode for this instance of data."]
23948    pub mode: Box<terminology::MapInputMode>,
23949    #[primitive]
23950    #[doc = "Documentation for this instance of data."]
23951    pub documentation: Option<Box<FHIRString>>,
23952}
23953#[derive(
23954    Clone,
23955    Reflect,
23956    Debug,
23957    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
23958    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
23959)]
23960#[fhir_serialize_type = "typechoice"]
23961#[type_choice_field_name = "defaultValue"]
23962pub enum StructureMapGroupRuleSourceDefaultValueTypeChoice {
23963    Base64Binary(Box<FHIRBase64Binary>),
23964    Boolean(Box<FHIRBoolean>),
23965    Canonical(Box<FHIRCanonical>),
23966    Code(Box<FHIRCode>),
23967    Date(Box<FHIRDate>),
23968    DateTime(Box<FHIRDateTime>),
23969    Decimal(Box<FHIRDecimal>),
23970    Id(Box<FHIRId>),
23971    Instant(Box<FHIRInstant>),
23972    Integer(Box<FHIRInteger>),
23973    Markdown(Box<FHIRMarkdown>),
23974    Oid(Box<FHIROid>),
23975    PositiveInt(Box<FHIRPositiveInt>),
23976    String(Box<FHIRString>),
23977    Time(Box<FHIRTime>),
23978    UnsignedInt(Box<FHIRUnsignedInt>),
23979    Uri(Box<FHIRUri>),
23980    Url(Box<FHIRUrl>),
23981    Uuid(Box<FHIRUuid>),
23982    Address(Box<Address>),
23983    Age(Box<Age>),
23984    Annotation(Box<Annotation>),
23985    Attachment(Box<Attachment>),
23986    CodeableConcept(Box<CodeableConcept>),
23987    Coding(Box<Coding>),
23988    ContactPoint(Box<ContactPoint>),
23989    Count(Box<Count>),
23990    Distance(Box<Distance>),
23991    Duration(Box<Duration>),
23992    HumanName(Box<HumanName>),
23993    Identifier(Box<Identifier>),
23994    Money(Box<Money>),
23995    Period(Box<Period>),
23996    Quantity(Box<Quantity>),
23997    Range(Box<Range>),
23998    Ratio(Box<Ratio>),
23999    Reference(Box<Reference>),
24000    SampledData(Box<SampledData>),
24001    Signature(Box<Signature>),
24002    Timing(Box<Timing>),
24003    ContactDetail(Box<ContactDetail>),
24004    Contributor(Box<Contributor>),
24005    DataRequirement(Box<DataRequirement>),
24006    Expression(Box<Expression>),
24007    ParameterDefinition(Box<ParameterDefinition>),
24008    RelatedArtifact(Box<RelatedArtifact>),
24009    TriggerDefinition(Box<TriggerDefinition>),
24010    UsageContext(Box<UsageContext>),
24011    Dosage(Box<Dosage>),
24012    Meta(Box<Meta>),
24013}
24014impl Default for StructureMapGroupRuleSourceDefaultValueTypeChoice {
24015    fn default() -> Self {
24016        StructureMapGroupRuleSourceDefaultValueTypeChoice::Base64Binary(
24017            Box::new(Default::default()),
24018        )
24019    }
24020}
24021#[derive(
24022    Clone,
24023    Reflect,
24024    Debug,
24025    Default,
24026    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
24027    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
24028)]
24029#[fhir_serialize_type = "complex"]
24030#[doc = "Source inputs to the mapping."]
24031pub struct StructureMapGroupRuleSource {
24032    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
24033    pub id: Option<String>,
24034    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
24035    pub extension: Option<Vec<Box<Extension>>>,
24036    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
24037    pub modifierExtension: Option<Vec<Box<Extension>>>,
24038    #[primitive]
24039    #[doc = "Type or variable this rule applies to."]
24040    pub context: Box<FHIRId>,
24041    #[primitive]
24042    #[doc = "Specified minimum cardinality for the element. This is optional; if present, it acts an implicit check on the input content."]
24043    pub min: Option<Box<FHIRInteger>>,
24044    #[primitive]
24045    #[doc = "Specified maximum cardinality for the element - a number or a \"*\". This is optional; if present, it acts an implicit check on the input content (* just serves as documentation; it's the default value)."]
24046    pub max: Option<Box<FHIRString>>,
24047    #[rename_field = "type"]
24048    #[primitive]
24049    #[doc = "Specified type for the element. This works as a condition on the mapping - use for polymorphic elements."]
24050    pub type_: Option<Box<FHIRString>>,
24051    # [type_choice_variants (complex = ["defaultValueAddress" , "defaultValueAge" , "defaultValueAnnotation" , "defaultValueAttachment" , "defaultValueCodeableConcept" , "defaultValueCoding" , "defaultValueContactPoint" , "defaultValueCount" , "defaultValueDistance" , "defaultValueDuration" , "defaultValueHumanName" , "defaultValueIdentifier" , "defaultValueMoney" , "defaultValuePeriod" , "defaultValueQuantity" , "defaultValueRange" , "defaultValueRatio" , "defaultValueReference" , "defaultValueSampledData" , "defaultValueSignature" , "defaultValueTiming" , "defaultValueContactDetail" , "defaultValueContributor" , "defaultValueDataRequirement" , "defaultValueExpression" , "defaultValueParameterDefinition" , "defaultValueRelatedArtifact" , "defaultValueTriggerDefinition" , "defaultValueUsageContext" , "defaultValueDosage" , "defaultValueMeta"] , primitive = ["defaultValueBase64Binary" , "defaultValueBoolean" , "defaultValueCanonical" , "defaultValueCode" , "defaultValueDate" , "defaultValueDateTime" , "defaultValueDecimal" , "defaultValueId" , "defaultValueInstant" , "defaultValueInteger" , "defaultValueMarkdown" , "defaultValueOid" , "defaultValuePositiveInt" , "defaultValueString" , "defaultValueTime" , "defaultValueUnsignedInt" , "defaultValueUri" , "defaultValueUrl" , "defaultValueUuid"])]
24052    #[doc = "A value to use if there is no existing value in the source object."]
24053    pub defaultValue: Option<StructureMapGroupRuleSourceDefaultValueTypeChoice>,
24054    #[primitive]
24055    #[doc = "Optional field for this source."]
24056    pub element: Option<Box<FHIRString>>,
24057    #[primitive]
24058    #[doc = "How to handle the list mode for this element."]
24059    pub listMode: Option<Box<terminology::MapSourceListMode>>,
24060    #[primitive]
24061    #[doc = "Named context for field, if a field is specified."]
24062    pub variable: Option<Box<FHIRId>>,
24063    #[primitive]
24064    #[doc = "FHIRPath expression  - must be true or the rule does not apply."]
24065    pub condition: Option<Box<FHIRString>>,
24066    #[primitive]
24067    #[doc = "FHIRPath expression  - must be true or the mapping engine throws an error instead of completing."]
24068    pub check: Option<Box<FHIRString>>,
24069    #[primitive]
24070    #[doc = "A FHIRPath expression which specifies a message to put in the transform log when content matching the source rule is found."]
24071    pub logMessage: Option<Box<FHIRString>>,
24072}
24073#[derive(
24074    Clone,
24075    Reflect,
24076    Debug,
24077    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
24078    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
24079)]
24080#[fhir_serialize_type = "typechoice"]
24081#[type_choice_field_name = "value"]
24082pub enum StructureMapGroupRuleTargetParameterValueTypeChoice {
24083    Id(Box<FHIRId>),
24084    String(Box<FHIRString>),
24085    Boolean(Box<FHIRBoolean>),
24086    Integer(Box<FHIRInteger>),
24087    Decimal(Box<FHIRDecimal>),
24088}
24089impl Default for StructureMapGroupRuleTargetParameterValueTypeChoice {
24090    fn default() -> Self {
24091        StructureMapGroupRuleTargetParameterValueTypeChoice::Id(Box::new(Default::default()))
24092    }
24093}
24094#[derive(
24095    Clone,
24096    Reflect,
24097    Debug,
24098    Default,
24099    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
24100    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
24101)]
24102#[fhir_serialize_type = "complex"]
24103#[doc = "Parameters to the transform."]
24104pub struct StructureMapGroupRuleTargetParameter {
24105    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
24106    pub id: Option<String>,
24107    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
24108    pub extension: Option<Vec<Box<Extension>>>,
24109    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
24110    pub modifierExtension: Option<Vec<Box<Extension>>>,
24111    # [type_choice_variants (complex = [] , primitive = ["valueId" , "valueString" , "valueBoolean" , "valueInteger" , "valueDecimal"])]
24112    #[doc = "Parameter value - variable or literal."]
24113    pub value: StructureMapGroupRuleTargetParameterValueTypeChoice,
24114}
24115#[derive(
24116    Clone,
24117    Reflect,
24118    Debug,
24119    Default,
24120    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
24121    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
24122)]
24123#[fhir_serialize_type = "complex"]
24124#[doc = "Content to create because of this mapping rule."]
24125pub struct StructureMapGroupRuleTarget {
24126    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
24127    pub id: Option<String>,
24128    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
24129    pub extension: Option<Vec<Box<Extension>>>,
24130    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
24131    pub modifierExtension: Option<Vec<Box<Extension>>>,
24132    #[primitive]
24133    #[doc = "Type or variable this rule applies to."]
24134    pub context: Option<Box<FHIRId>>,
24135    #[primitive]
24136    #[doc = "How to interpret the context."]
24137    pub contextType: Option<Box<terminology::MapContextType>>,
24138    #[primitive]
24139    #[doc = "Field to create in the context."]
24140    pub element: Option<Box<FHIRString>>,
24141    #[primitive]
24142    #[doc = "Named context for field, if desired, and a field is specified."]
24143    pub variable: Option<Box<FHIRId>>,
24144    #[primitive]
24145    #[doc = "If field is a list, how to manage the list."]
24146    pub listMode: Option<Vec<Box<terminology::MapTargetListMode>>>,
24147    #[primitive]
24148    #[doc = "Internal rule reference for shared list items."]
24149    pub listRuleId: Option<Box<FHIRId>>,
24150    #[primitive]
24151    #[doc = "How the data is copied / created."]
24152    pub transform: Option<Box<terminology::MapTransform>>,
24153    #[doc = "Parameters to the transform."]
24154    pub parameter: Option<Vec<StructureMapGroupRuleTargetParameter>>,
24155}
24156#[derive(
24157    Clone,
24158    Reflect,
24159    Debug,
24160    Default,
24161    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
24162    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
24163)]
24164#[fhir_serialize_type = "complex"]
24165#[doc = "Which other rules to apply in the context of this rule."]
24166pub struct StructureMapGroupRuleDependent {
24167    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
24168    pub id: Option<String>,
24169    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
24170    pub extension: Option<Vec<Box<Extension>>>,
24171    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
24172    pub modifierExtension: Option<Vec<Box<Extension>>>,
24173    #[primitive]
24174    #[doc = "Name of a rule or group to apply."]
24175    pub name: Box<FHIRId>,
24176    #[primitive]
24177    #[cardinality(min = 1usize)]
24178    #[doc = "Variable to pass to the rule or group."]
24179    pub variable: Vec<Box<FHIRString>>,
24180}
24181#[derive(
24182    Clone,
24183    Reflect,
24184    Debug,
24185    Default,
24186    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
24187    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
24188)]
24189#[fhir_serialize_type = "complex"]
24190#[doc = "Transform Rule from source to target."]
24191pub struct StructureMapGroupRule {
24192    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
24193    pub id: Option<String>,
24194    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
24195    pub extension: Option<Vec<Box<Extension>>>,
24196    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
24197    pub modifierExtension: Option<Vec<Box<Extension>>>,
24198    #[primitive]
24199    #[doc = "Name of the rule for internal references."]
24200    pub name: Box<FHIRId>,
24201    #[cardinality(min = 1usize)]
24202    #[doc = "Source inputs to the mapping."]
24203    pub source: Vec<StructureMapGroupRuleSource>,
24204    #[doc = "Content to create because of this mapping rule."]
24205    pub target: Option<Vec<StructureMapGroupRuleTarget>>,
24206    #[doc = "Rules contained in this rule."]
24207    pub rule: Option<Vec<StructureMapGroupRule>>,
24208    #[doc = "Which other rules to apply in the context of this rule."]
24209    pub dependent: Option<Vec<StructureMapGroupRuleDependent>>,
24210    #[primitive]
24211    #[doc = "Documentation for this instance of data."]
24212    pub documentation: Option<Box<FHIRString>>,
24213}
24214#[derive(
24215    Clone,
24216    Reflect,
24217    Debug,
24218    Default,
24219    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
24220    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
24221)]
24222#[fhir_serialize_type = "complex"]
24223#[doc = "Organizes the mapping into manageable chunks for human review/ease of maintenance."]
24224pub struct StructureMapGroup {
24225    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
24226    pub id: Option<String>,
24227    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
24228    pub extension: Option<Vec<Box<Extension>>>,
24229    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
24230    pub modifierExtension: Option<Vec<Box<Extension>>>,
24231    #[primitive]
24232    #[doc = "A unique name for the group for the convenience of human readers."]
24233    pub name: Box<FHIRId>,
24234    #[primitive]
24235    #[doc = "Another group that this group adds rules to."]
24236    pub extends: Option<Box<FHIRId>>,
24237    #[primitive]
24238    #[doc = "If this is the default rule set to apply for the source type or this combination of types."]
24239    pub typeMode: Box<terminology::MapGroupTypeMode>,
24240    #[primitive]
24241    #[doc = "Additional supporting documentation that explains the purpose of the group and the types of mappings within it."]
24242    pub documentation: Option<Box<FHIRString>>,
24243    #[cardinality(min = 1usize)]
24244    #[doc = "A name assigned to an instance of data. The instance must be provided when the mapping is invoked."]
24245    pub input: Vec<StructureMapGroupInput>,
24246    #[cardinality(min = 1usize)]
24247    #[doc = "Transform Rule from source to target."]
24248    pub rule: Vec<StructureMapGroupRule>,
24249}
24250#[derive(
24251    Clone,
24252    Reflect,
24253    Debug,
24254    Default,
24255    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
24256    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
24257)]
24258#[fhir_serialize_type = "resource"]
24259#[doc = "A Map of relationships between 2 structures that can be used to transform data."]
24260pub struct StructureMap {
24261    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
24262    pub id: Option<String>,
24263    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
24264    pub meta: Option<Box<Meta>>,
24265    #[primitive]
24266    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
24267    pub implicitRules: Option<Box<FHIRUri>>,
24268    #[primitive]
24269    #[doc = "The base language in which the resource is written."]
24270    pub language: Option<Box<FHIRCode>>,
24271    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
24272    pub text: Option<Box<Narrative>>,
24273    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
24274    pub contained: Option<Vec<Box<Resource>>>,
24275    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
24276    pub extension: Option<Vec<Box<Extension>>>,
24277    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
24278    pub modifierExtension: Option<Vec<Box<Extension>>>,
24279    #[primitive]
24280    #[doc = "An absolute URI that is used to identify this structure map when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this structure map is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the structure map is stored on different servers."]
24281    pub url: Box<FHIRUri>,
24282    #[rename_field = "identifier"]
24283    #[doc = "A formal identifier that is used to identify this structure map when it is represented in other formats, or referenced in a specification, model, design or an instance."]
24284    pub identifier_: Option<Vec<Box<Identifier>>>,
24285    #[primitive]
24286    #[doc = "The identifier that is used to identify this version of the structure map when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the structure map author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence."]
24287    pub version: Option<Box<FHIRString>>,
24288    #[primitive]
24289    #[doc = "A natural language name identifying the structure map. This name should be usable as an identifier for the module by machine processing applications such as code generation."]
24290    pub name: Box<FHIRString>,
24291    #[primitive]
24292    #[doc = "A short, descriptive, user-friendly title for the structure map."]
24293    pub title: Option<Box<FHIRString>>,
24294    #[primitive]
24295    #[doc = "The status of this structure map. Enables tracking the life-cycle of the content."]
24296    pub status: Box<terminology::PublicationStatus>,
24297    #[primitive]
24298    #[doc = "A Boolean value to indicate that this structure map is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage."]
24299    pub experimental: Option<Box<FHIRBoolean>>,
24300    #[primitive]
24301    #[doc = "The date  (and optionally time) when the structure map was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the structure map changes."]
24302    pub date: Option<Box<FHIRDateTime>>,
24303    #[primitive]
24304    #[doc = "The name of the organization or individual that published the structure map."]
24305    pub publisher: Option<Box<FHIRString>>,
24306    #[doc = "Contact details to assist a user in finding and communicating with the publisher."]
24307    pub contact: Option<Vec<Box<ContactDetail>>>,
24308    #[primitive]
24309    #[doc = "A free text natural language description of the structure map from a consumer's perspective."]
24310    pub description: Option<Box<FHIRMarkdown>>,
24311    #[doc = "The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate structure map instances."]
24312    pub useContext: Option<Vec<Box<UsageContext>>>,
24313    #[doc = "A legal or geographic region in which the structure map is intended to be used."]
24314    pub jurisdiction: Option<Vec<Box<CodeableConcept>>>,
24315    #[primitive]
24316    #[doc = "Explanation of why this structure map is needed and why it has been designed as it has."]
24317    pub purpose: Option<Box<FHIRMarkdown>>,
24318    #[primitive]
24319    #[doc = "A copyright statement relating to the structure map and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the structure map."]
24320    pub copyright: Option<Box<FHIRMarkdown>>,
24321    #[doc = "A structure definition used by this map. The structure definition may describe instances that are converted, or the instances that are produced."]
24322    pub structure: Option<Vec<StructureMapStructure>>,
24323    #[primitive]
24324    #[doc = "Other maps used by this map (canonical URLs)."]
24325    pub import: Option<Vec<Box<FHIRCanonical>>>,
24326    #[cardinality(min = 1usize)]
24327    #[doc = "Organizes the mapping into manageable chunks for human review/ease of maintenance."]
24328    pub group: Vec<StructureMapGroup>,
24329}
24330#[derive(
24331    Clone,
24332    Reflect,
24333    Debug,
24334    Default,
24335    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
24336    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
24337)]
24338#[fhir_serialize_type = "complex"]
24339#[doc = "Details where to send notifications when resources are received that meet the criteria."]
24340pub struct SubscriptionChannel {
24341    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
24342    pub id: Option<String>,
24343    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
24344    pub extension: Option<Vec<Box<Extension>>>,
24345    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
24346    pub modifierExtension: Option<Vec<Box<Extension>>>,
24347    #[rename_field = "type"]
24348    #[primitive]
24349    #[doc = "The type of channel to send notifications on."]
24350    pub type_: Box<terminology::SubscriptionChannelType>,
24351    #[primitive]
24352    #[doc = "The url that describes the actual end-point to send messages to."]
24353    pub endpoint: Option<Box<FHIRUrl>>,
24354    #[primitive]
24355    #[doc = "The mime type to send the payload in - either application/fhir+xml, or application/fhir+json. If the payload is not present, then there is no payload in the notification, just a notification. The mime type \"text/plain\" may also be used for Email and SMS subscriptions."]
24356    pub payload: Option<Box<FHIRCode>>,
24357    #[primitive]
24358    #[doc = "Additional headers / information to send as part of the notification."]
24359    pub header: Option<Vec<Box<FHIRString>>>,
24360}
24361#[derive(
24362    Clone,
24363    Reflect,
24364    Debug,
24365    Default,
24366    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
24367    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
24368)]
24369#[fhir_serialize_type = "resource"]
24370#[doc = "The subscription resource is used to define a push-based subscription from a server to another system. Once a subscription is registered with the server, the server checks every resource that is created or updated, and if the resource matches the given criteria, it sends a message on the defined \"channel\" so that another system can take an appropriate action."]
24371pub struct Subscription {
24372    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
24373    pub id: Option<String>,
24374    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
24375    pub meta: Option<Box<Meta>>,
24376    #[primitive]
24377    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
24378    pub implicitRules: Option<Box<FHIRUri>>,
24379    #[primitive]
24380    #[doc = "The base language in which the resource is written."]
24381    pub language: Option<Box<FHIRCode>>,
24382    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
24383    pub text: Option<Box<Narrative>>,
24384    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
24385    pub contained: Option<Vec<Box<Resource>>>,
24386    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
24387    pub extension: Option<Vec<Box<Extension>>>,
24388    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
24389    pub modifierExtension: Option<Vec<Box<Extension>>>,
24390    #[primitive]
24391    #[doc = "The status of the subscription, which marks the server state for managing the subscription."]
24392    pub status: Box<terminology::SubscriptionStatus>,
24393    #[doc = "Contact details for a human to contact about the subscription. The primary use of this for system administrator troubleshooting."]
24394    pub contact: Option<Vec<Box<ContactPoint>>>,
24395    #[primitive]
24396    #[doc = "The time for the server to turn the subscription off."]
24397    pub end: Option<Box<FHIRInstant>>,
24398    #[primitive]
24399    #[doc = "A description of why this subscription is defined."]
24400    pub reason: Box<FHIRString>,
24401    #[primitive]
24402    #[doc = "The rules that the server should use to determine when to generate notifications for this subscription."]
24403    pub criteria: Box<FHIRString>,
24404    #[primitive]
24405    #[doc = "A record of the last error that occurred when the server processed a notification."]
24406    pub error: Option<Box<FHIRString>>,
24407    #[doc = "Details where to send notifications when resources are received that meet the criteria."]
24408    pub channel: SubscriptionChannel,
24409}
24410#[derive(
24411    Clone,
24412    Reflect,
24413    Debug,
24414    Default,
24415    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
24416    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
24417)]
24418#[fhir_serialize_type = "complex"]
24419#[doc = "Substance may be used to describe a kind of substance, or a specific package/container of the substance: an instance."]
24420pub struct SubstanceInstance {
24421    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
24422    pub id: Option<String>,
24423    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
24424    pub extension: Option<Vec<Box<Extension>>>,
24425    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
24426    pub modifierExtension: Option<Vec<Box<Extension>>>,
24427    #[rename_field = "identifier"]
24428    #[doc = "Identifier associated with the package/container (usually a label affixed directly)."]
24429    pub identifier_: Option<Box<Identifier>>,
24430    #[primitive]
24431    #[doc = "When the substance is no longer valid to use. For some substances, a single arbitrary date is used for expiry."]
24432    pub expiry: Option<Box<FHIRDateTime>>,
24433    #[doc = "The amount of the substance."]
24434    pub quantity: Option<Box<Quantity>>,
24435}
24436#[derive(
24437    Clone,
24438    Reflect,
24439    Debug,
24440    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
24441    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
24442)]
24443#[fhir_serialize_type = "typechoice"]
24444#[type_choice_field_name = "substance"]
24445pub enum SubstanceIngredientSubstanceTypeChoice {
24446    CodeableConcept(Box<CodeableConcept>),
24447    # [reference (targets = ["Substance"])]
24448    Reference(Box<Reference>),
24449}
24450impl Default for SubstanceIngredientSubstanceTypeChoice {
24451    fn default() -> Self {
24452        SubstanceIngredientSubstanceTypeChoice::CodeableConcept(Box::new(Default::default()))
24453    }
24454}
24455#[derive(
24456    Clone,
24457    Reflect,
24458    Debug,
24459    Default,
24460    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
24461    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
24462)]
24463#[fhir_serialize_type = "complex"]
24464#[doc = "A substance can be composed of other substances."]
24465pub struct SubstanceIngredient {
24466    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
24467    pub id: Option<String>,
24468    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
24469    pub extension: Option<Vec<Box<Extension>>>,
24470    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
24471    pub modifierExtension: Option<Vec<Box<Extension>>>,
24472    #[doc = "The amount of the ingredient in the substance - a concentration ratio."]
24473    pub quantity: Option<Box<Ratio>>,
24474    # [type_choice_variants (complex = ["substanceCodeableConcept" , "substanceReference"] , primitive = [])]
24475    #[doc = "Another substance that is a component of this substance."]
24476    pub substance: SubstanceIngredientSubstanceTypeChoice,
24477}
24478#[derive(
24479    Clone,
24480    Reflect,
24481    Debug,
24482    Default,
24483    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
24484    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
24485)]
24486#[fhir_serialize_type = "resource"]
24487#[doc = "A homogeneous material with a definite composition."]
24488pub struct Substance {
24489    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
24490    pub id: Option<String>,
24491    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
24492    pub meta: Option<Box<Meta>>,
24493    #[primitive]
24494    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
24495    pub implicitRules: Option<Box<FHIRUri>>,
24496    #[primitive]
24497    #[doc = "The base language in which the resource is written."]
24498    pub language: Option<Box<FHIRCode>>,
24499    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
24500    pub text: Option<Box<Narrative>>,
24501    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
24502    pub contained: Option<Vec<Box<Resource>>>,
24503    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
24504    pub extension: Option<Vec<Box<Extension>>>,
24505    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
24506    pub modifierExtension: Option<Vec<Box<Extension>>>,
24507    #[rename_field = "identifier"]
24508    #[doc = "Unique identifier for the substance."]
24509    pub identifier_: Option<Vec<Box<Identifier>>>,
24510    #[primitive]
24511    #[doc = "A code to indicate if the substance is actively used."]
24512    pub status: Option<Box<terminology::SubstanceStatus>>,
24513    #[doc = "A code that classifies the general type of substance.  This is used  for searching, sorting and display purposes."]
24514    pub category: Option<Vec<Box<CodeableConcept>>>,
24515    #[doc = "A code (or set of codes) that identify this substance."]
24516    pub code: Box<CodeableConcept>,
24517    #[primitive]
24518    #[doc = "A description of the substance - its appearance, handling requirements, and other usage notes."]
24519    pub description: Option<Box<FHIRString>>,
24520    #[doc = "Substance may be used to describe a kind of substance, or a specific package/container of the substance: an instance."]
24521    pub instance: Option<Vec<SubstanceInstance>>,
24522    #[doc = "A substance can be composed of other substances."]
24523    pub ingredient: Option<Vec<SubstanceIngredient>>,
24524}
24525#[derive(
24526    Clone,
24527    Reflect,
24528    Debug,
24529    Default,
24530    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
24531    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
24532)]
24533#[fhir_serialize_type = "complex"]
24534#[doc = "The linkages between sugar residues will also be captured."]
24535pub struct SubstanceNucleicAcidSubunitLinkage {
24536    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
24537    pub id: Option<String>,
24538    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
24539    pub extension: Option<Vec<Box<Extension>>>,
24540    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
24541    pub modifierExtension: Option<Vec<Box<Extension>>>,
24542    #[primitive]
24543    #[doc = "The entity that links the sugar residues together should also be captured for nearly all naturally occurring nucleic acid the linkage is a phosphate group. For many synthetic oligonucleotides phosphorothioate linkages are often seen. Linkage connectivity is assumed to be 3’-5’. If the linkage is either 3’-3’ or 5’-5’ this should be specified."]
24544    pub connectivity: Option<Box<FHIRString>>,
24545    #[rename_field = "identifier"]
24546    #[doc = "Each linkage will be registered as a fragment and have an ID."]
24547    pub identifier_: Option<Box<Identifier>>,
24548    #[primitive]
24549    #[doc = "Each linkage will be registered as a fragment and have at least one name. A single name shall be assigned to each linkage."]
24550    pub name: Option<Box<FHIRString>>,
24551    #[primitive]
24552    #[doc = "Residues shall be captured as described in 5.3.6.8.3."]
24553    pub residueSite: Option<Box<FHIRString>>,
24554}
24555#[derive(
24556    Clone,
24557    Reflect,
24558    Debug,
24559    Default,
24560    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
24561    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
24562)]
24563#[fhir_serialize_type = "complex"]
24564#[doc = "5.3.6.8.1 Sugar ID (Mandatory)."]
24565pub struct SubstanceNucleicAcidSubunitSugar {
24566    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
24567    pub id: Option<String>,
24568    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
24569    pub extension: Option<Vec<Box<Extension>>>,
24570    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
24571    pub modifierExtension: Option<Vec<Box<Extension>>>,
24572    #[rename_field = "identifier"]
24573    #[doc = "The Substance ID of the sugar or sugar-like component that make up the nucleotide."]
24574    pub identifier_: Option<Box<Identifier>>,
24575    #[primitive]
24576    #[doc = "The name of the sugar or sugar-like component that make up the nucleotide."]
24577    pub name: Option<Box<FHIRString>>,
24578    #[primitive]
24579    #[doc = "The residues that contain a given sugar will be captured. The order of given residues will be captured in the 5‘-3‘direction consistent with the base sequences listed above."]
24580    pub residueSite: Option<Box<FHIRString>>,
24581}
24582#[derive(
24583    Clone,
24584    Reflect,
24585    Debug,
24586    Default,
24587    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
24588    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
24589)]
24590#[fhir_serialize_type = "complex"]
24591#[doc = "Subunits are listed in order of decreasing length; sequences of the same length will be ordered by molecular weight; subunits that have identical sequences will be repeated multiple times."]
24592pub struct SubstanceNucleicAcidSubunit {
24593    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
24594    pub id: Option<String>,
24595    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
24596    pub extension: Option<Vec<Box<Extension>>>,
24597    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
24598    pub modifierExtension: Option<Vec<Box<Extension>>>,
24599    #[primitive]
24600    #[doc = "Index of linear sequences of nucleic acids in order of decreasing length. Sequences of the same length will be ordered by molecular weight. Subunits that have identical sequences will be repeated and have sequential subscripts."]
24601    pub subunit: Option<Box<FHIRInteger>>,
24602    #[primitive]
24603    #[doc = "Actual nucleotide sequence notation from 5' to 3' end using standard single letter codes. In addition to the base sequence, sugar and type of phosphate or non-phosphate linkage should also be captured."]
24604    pub sequence: Option<Box<FHIRString>>,
24605    #[primitive]
24606    #[doc = "The length of the sequence shall be captured."]
24607    pub length: Option<Box<FHIRInteger>>,
24608    #[doc = "(TBC)."]
24609    pub sequenceAttachment: Option<Box<Attachment>>,
24610    #[doc = "The nucleotide present at the 5’ terminal shall be specified based on a controlled vocabulary. Since the sequence is represented from the 5' to the 3' end, the 5’ prime nucleotide is the letter at the first position in the sequence. A separate representation would be redundant."]
24611    pub fivePrime: Option<Box<CodeableConcept>>,
24612    #[doc = "The nucleotide present at the 3’ terminal shall be specified based on a controlled vocabulary. Since the sequence is represented from the 5' to the 3' end, the 5’ prime nucleotide is the letter at the last position in the sequence. A separate representation would be redundant."]
24613    pub threePrime: Option<Box<CodeableConcept>>,
24614    #[doc = "The linkages between sugar residues will also be captured."]
24615    pub linkage: Option<Vec<SubstanceNucleicAcidSubunitLinkage>>,
24616    #[doc = "5.3.6.8.1 Sugar ID (Mandatory)."]
24617    pub sugar: Option<Vec<SubstanceNucleicAcidSubunitSugar>>,
24618}
24619#[derive(
24620    Clone,
24621    Reflect,
24622    Debug,
24623    Default,
24624    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
24625    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
24626)]
24627#[fhir_serialize_type = "resource"]
24628#[doc = "Nucleic acids are defined by three distinct elements: the base, sugar and linkage. Individual substance/moiety IDs will be created for each of these elements. The nucleotide sequence will be always entered in the 5’-3’ direction."]
24629pub struct SubstanceNucleicAcid {
24630    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
24631    pub id: Option<String>,
24632    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
24633    pub meta: Option<Box<Meta>>,
24634    #[primitive]
24635    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
24636    pub implicitRules: Option<Box<FHIRUri>>,
24637    #[primitive]
24638    #[doc = "The base language in which the resource is written."]
24639    pub language: Option<Box<FHIRCode>>,
24640    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
24641    pub text: Option<Box<Narrative>>,
24642    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
24643    pub contained: Option<Vec<Box<Resource>>>,
24644    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
24645    pub extension: Option<Vec<Box<Extension>>>,
24646    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
24647    pub modifierExtension: Option<Vec<Box<Extension>>>,
24648    #[doc = "The type of the sequence shall be specified based on a controlled vocabulary."]
24649    pub sequenceType: Option<Box<CodeableConcept>>,
24650    #[primitive]
24651    #[doc = "The number of linear sequences of nucleotides linked through phosphodiester bonds shall be described. Subunits would be strands of nucleic acids that are tightly associated typically through Watson-Crick base pairing. NOTE: If not specified in the reference source, the assumption is that there is 1 subunit."]
24652    pub numberOfSubunits: Option<Box<FHIRInteger>>,
24653    #[primitive]
24654    #[doc = "The area of hybridisation shall be described if applicable for double stranded RNA or DNA. The number associated with the subunit followed by the number associated to the residue shall be specified in increasing order. The underscore “” shall be used as separator as follows: “Subunitnumber Residue”."]
24655    pub areaOfHybridisation: Option<Box<FHIRString>>,
24656    #[doc = "(TBC)."]
24657    pub oligoNucleotideType: Option<Box<CodeableConcept>>,
24658    #[doc = "Subunits are listed in order of decreasing length; sequences of the same length will be ordered by molecular weight; subunits that have identical sequences will be repeated multiple times."]
24659    pub subunit: Option<Vec<SubstanceNucleicAcidSubunit>>,
24660}
24661#[derive(
24662    Clone,
24663    Reflect,
24664    Debug,
24665    Default,
24666    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
24667    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
24668)]
24669#[fhir_serialize_type = "complex"]
24670#[doc = "Todo."]
24671pub struct SubstancePolymerMonomerSetStartingMaterial {
24672    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
24673    pub id: Option<String>,
24674    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
24675    pub extension: Option<Vec<Box<Extension>>>,
24676    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
24677    pub modifierExtension: Option<Vec<Box<Extension>>>,
24678    #[doc = "Todo."]
24679    pub material: Option<Box<CodeableConcept>>,
24680    #[rename_field = "type"]
24681    #[doc = "Todo."]
24682    pub type_: Option<Box<CodeableConcept>>,
24683    #[primitive]
24684    #[doc = "Todo."]
24685    pub isDefining: Option<Box<FHIRBoolean>>,
24686    #[doc = "Todo."]
24687    pub amount: Option<Box<SubstanceAmount>>,
24688}
24689#[derive(
24690    Clone,
24691    Reflect,
24692    Debug,
24693    Default,
24694    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
24695    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
24696)]
24697#[fhir_serialize_type = "complex"]
24698#[doc = "Todo."]
24699pub struct SubstancePolymerMonomerSet {
24700    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
24701    pub id: Option<String>,
24702    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
24703    pub extension: Option<Vec<Box<Extension>>>,
24704    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
24705    pub modifierExtension: Option<Vec<Box<Extension>>>,
24706    #[doc = "Todo."]
24707    pub ratioType: Option<Box<CodeableConcept>>,
24708    #[doc = "Todo."]
24709    pub startingMaterial: Option<Vec<SubstancePolymerMonomerSetStartingMaterial>>,
24710}
24711#[derive(
24712    Clone,
24713    Reflect,
24714    Debug,
24715    Default,
24716    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
24717    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
24718)]
24719#[fhir_serialize_type = "complex"]
24720#[doc = "Todo."]
24721pub struct SubstancePolymerRepeatRepeatUnitDegreeOfPolymerisation {
24722    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
24723    pub id: Option<String>,
24724    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
24725    pub extension: Option<Vec<Box<Extension>>>,
24726    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
24727    pub modifierExtension: Option<Vec<Box<Extension>>>,
24728    #[doc = "Todo."]
24729    pub degree: Option<Box<CodeableConcept>>,
24730    #[doc = "Todo."]
24731    pub amount: Option<Box<SubstanceAmount>>,
24732}
24733#[derive(
24734    Clone,
24735    Reflect,
24736    Debug,
24737    Default,
24738    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
24739    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
24740)]
24741#[fhir_serialize_type = "complex"]
24742#[doc = "Todo."]
24743pub struct SubstancePolymerRepeatRepeatUnitStructuralRepresentation {
24744    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
24745    pub id: Option<String>,
24746    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
24747    pub extension: Option<Vec<Box<Extension>>>,
24748    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
24749    pub modifierExtension: Option<Vec<Box<Extension>>>,
24750    #[rename_field = "type"]
24751    #[doc = "Todo."]
24752    pub type_: Option<Box<CodeableConcept>>,
24753    #[primitive]
24754    #[doc = "Todo."]
24755    pub representation: Option<Box<FHIRString>>,
24756    #[doc = "Todo."]
24757    pub attachment: Option<Box<Attachment>>,
24758}
24759#[derive(
24760    Clone,
24761    Reflect,
24762    Debug,
24763    Default,
24764    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
24765    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
24766)]
24767#[fhir_serialize_type = "complex"]
24768#[doc = "Todo."]
24769pub struct SubstancePolymerRepeatRepeatUnit {
24770    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
24771    pub id: Option<String>,
24772    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
24773    pub extension: Option<Vec<Box<Extension>>>,
24774    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
24775    pub modifierExtension: Option<Vec<Box<Extension>>>,
24776    #[doc = "Todo."]
24777    pub orientationOfPolymerisation: Option<Box<CodeableConcept>>,
24778    #[primitive]
24779    #[doc = "Todo."]
24780    pub repeatUnit: Option<Box<FHIRString>>,
24781    #[doc = "Todo."]
24782    pub amount: Option<Box<SubstanceAmount>>,
24783    #[doc = "Todo."]
24784    pub degreeOfPolymerisation: Option<Vec<SubstancePolymerRepeatRepeatUnitDegreeOfPolymerisation>>,
24785    #[doc = "Todo."]
24786    pub structuralRepresentation:
24787        Option<Vec<SubstancePolymerRepeatRepeatUnitStructuralRepresentation>>,
24788}
24789#[derive(
24790    Clone,
24791    Reflect,
24792    Debug,
24793    Default,
24794    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
24795    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
24796)]
24797#[fhir_serialize_type = "complex"]
24798#[doc = "Todo."]
24799pub struct SubstancePolymerRepeat {
24800    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
24801    pub id: Option<String>,
24802    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
24803    pub extension: Option<Vec<Box<Extension>>>,
24804    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
24805    pub modifierExtension: Option<Vec<Box<Extension>>>,
24806    #[primitive]
24807    #[doc = "Todo."]
24808    pub numberOfUnits: Option<Box<FHIRInteger>>,
24809    #[primitive]
24810    #[doc = "Todo."]
24811    pub averageMolecularFormula: Option<Box<FHIRString>>,
24812    #[doc = "Todo."]
24813    pub repeatUnitAmountType: Option<Box<CodeableConcept>>,
24814    #[doc = "Todo."]
24815    pub repeatUnit: Option<Vec<SubstancePolymerRepeatRepeatUnit>>,
24816}
24817#[derive(
24818    Clone,
24819    Reflect,
24820    Debug,
24821    Default,
24822    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
24823    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
24824)]
24825#[fhir_serialize_type = "resource"]
24826#[doc = "Todo."]
24827pub struct SubstancePolymer {
24828    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
24829    pub id: Option<String>,
24830    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
24831    pub meta: Option<Box<Meta>>,
24832    #[primitive]
24833    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
24834    pub implicitRules: Option<Box<FHIRUri>>,
24835    #[primitive]
24836    #[doc = "The base language in which the resource is written."]
24837    pub language: Option<Box<FHIRCode>>,
24838    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
24839    pub text: Option<Box<Narrative>>,
24840    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
24841    pub contained: Option<Vec<Box<Resource>>>,
24842    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
24843    pub extension: Option<Vec<Box<Extension>>>,
24844    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
24845    pub modifierExtension: Option<Vec<Box<Extension>>>,
24846    #[doc = "Todo."]
24847    pub class: Option<Box<CodeableConcept>>,
24848    #[doc = "Todo."]
24849    pub geometry: Option<Box<CodeableConcept>>,
24850    #[doc = "Todo."]
24851    pub copolymerConnectivity: Option<Vec<Box<CodeableConcept>>>,
24852    #[primitive]
24853    #[doc = "Todo."]
24854    pub modification: Option<Vec<Box<FHIRString>>>,
24855    #[doc = "Todo."]
24856    pub monomerSet: Option<Vec<SubstancePolymerMonomerSet>>,
24857    #[doc = "Todo."]
24858    pub repeat: Option<Vec<SubstancePolymerRepeat>>,
24859}
24860#[derive(
24861    Clone,
24862    Reflect,
24863    Debug,
24864    Default,
24865    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
24866    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
24867)]
24868#[fhir_serialize_type = "complex"]
24869#[doc = "This subclause refers to the description of each subunit constituting the SubstanceProtein. A subunit is a linear sequence of amino acids linked through peptide bonds. The Subunit information shall be provided when the finished SubstanceProtein is a complex of multiple sequences; subunits are not used to delineate domains within a single sequence. Subunits are listed in order of decreasing length; sequences of the same length will be ordered by decreasing molecular weight; subunits that have identical sequences will be repeated multiple times."]
24870pub struct SubstanceProteinSubunit {
24871    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
24872    pub id: Option<String>,
24873    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
24874    pub extension: Option<Vec<Box<Extension>>>,
24875    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
24876    pub modifierExtension: Option<Vec<Box<Extension>>>,
24877    #[primitive]
24878    #[doc = "Index of primary sequences of amino acids linked through peptide bonds in order of decreasing length. Sequences of the same length will be ordered by molecular weight. Subunits that have identical sequences will be repeated and have sequential subscripts."]
24879    pub subunit: Option<Box<FHIRInteger>>,
24880    #[primitive]
24881    #[doc = "The sequence information shall be provided enumerating the amino acids from N- to C-terminal end using standard single-letter amino acid codes. Uppercase shall be used for L-amino acids and lowercase for D-amino acids. Transcribed SubstanceProteins will always be described using the translated sequence; for synthetic peptide containing amino acids that are not represented with a single letter code an X should be used within the sequence. The modified amino acids will be distinguished by their position in the sequence."]
24882    pub sequence: Option<Box<FHIRString>>,
24883    #[primitive]
24884    #[doc = "Length of linear sequences of amino acids contained in the subunit."]
24885    pub length: Option<Box<FHIRInteger>>,
24886    #[doc = "The sequence information shall be provided enumerating the amino acids from N- to C-terminal end using standard single-letter amino acid codes. Uppercase shall be used for L-amino acids and lowercase for D-amino acids. Transcribed SubstanceProteins will always be described using the translated sequence; for synthetic peptide containing amino acids that are not represented with a single letter code an X should be used within the sequence. The modified amino acids will be distinguished by their position in the sequence."]
24887    pub sequenceAttachment: Option<Box<Attachment>>,
24888    #[doc = "Unique identifier for molecular fragment modification based on the ISO 11238 Substance ID."]
24889    pub nTerminalModificationId: Option<Box<Identifier>>,
24890    #[primitive]
24891    #[doc = "The name of the fragment modified at the N-terminal of the SubstanceProtein shall be specified."]
24892    pub nTerminalModification: Option<Box<FHIRString>>,
24893    #[doc = "Unique identifier for molecular fragment modification based on the ISO 11238 Substance ID."]
24894    pub cTerminalModificationId: Option<Box<Identifier>>,
24895    #[primitive]
24896    #[doc = "The modification at the C-terminal shall be specified."]
24897    pub cTerminalModification: Option<Box<FHIRString>>,
24898}
24899#[derive(
24900    Clone,
24901    Reflect,
24902    Debug,
24903    Default,
24904    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
24905    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
24906)]
24907#[fhir_serialize_type = "resource"]
24908#[doc = "A SubstanceProtein is defined as a single unit of a linear amino acid sequence, or a combination of subunits that are either covalently linked or have a defined invariant stoichiometric relationship. This includes all synthetic, recombinant and purified SubstanceProteins of defined sequence, whether the use is therapeutic or prophylactic. This set of elements will be used to describe albumins, coagulation factors, cytokines, growth factors, peptide/SubstanceProtein hormones, enzymes, toxins, toxoids, recombinant vaccines, and immunomodulators."]
24909pub struct SubstanceProtein {
24910    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
24911    pub id: Option<String>,
24912    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
24913    pub meta: Option<Box<Meta>>,
24914    #[primitive]
24915    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
24916    pub implicitRules: Option<Box<FHIRUri>>,
24917    #[primitive]
24918    #[doc = "The base language in which the resource is written."]
24919    pub language: Option<Box<FHIRCode>>,
24920    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
24921    pub text: Option<Box<Narrative>>,
24922    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
24923    pub contained: Option<Vec<Box<Resource>>>,
24924    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
24925    pub extension: Option<Vec<Box<Extension>>>,
24926    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
24927    pub modifierExtension: Option<Vec<Box<Extension>>>,
24928    #[doc = "The SubstanceProtein descriptive elements will only be used when a complete or partial amino acid sequence is available or derivable from a nucleic acid sequence."]
24929    pub sequenceType: Option<Box<CodeableConcept>>,
24930    #[primitive]
24931    #[doc = "Number of linear sequences of amino acids linked through peptide bonds. The number of subunits constituting the SubstanceProtein shall be described. It is possible that the number of subunits can be variable."]
24932    pub numberOfSubunits: Option<Box<FHIRInteger>>,
24933    #[primitive]
24934    #[doc = "The disulphide bond between two cysteine residues either on the same subunit or on two different subunits shall be described. The position of the disulfide bonds in the SubstanceProtein shall be listed in increasing order of subunit number and position within subunit followed by the abbreviation of the amino acids involved. The disulfide linkage positions shall actually contain the amino acid Cysteine at the respective positions."]
24935    pub disulfideLinkage: Option<Vec<Box<FHIRString>>>,
24936    #[doc = "This subclause refers to the description of each subunit constituting the SubstanceProtein. A subunit is a linear sequence of amino acids linked through peptide bonds. The Subunit information shall be provided when the finished SubstanceProtein is a complex of multiple sequences; subunits are not used to delineate domains within a single sequence. Subunits are listed in order of decreasing length; sequences of the same length will be ordered by decreasing molecular weight; subunits that have identical sequences will be repeated multiple times."]
24937    pub subunit: Option<Vec<SubstanceProteinSubunit>>,
24938}
24939#[derive(
24940    Clone,
24941    Reflect,
24942    Debug,
24943    Default,
24944    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
24945    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
24946)]
24947#[fhir_serialize_type = "complex"]
24948#[doc = "Todo."]
24949pub struct SubstanceReferenceInformationGene {
24950    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
24951    pub id: Option<String>,
24952    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
24953    pub extension: Option<Vec<Box<Extension>>>,
24954    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
24955    pub modifierExtension: Option<Vec<Box<Extension>>>,
24956    #[doc = "Todo."]
24957    pub geneSequenceOrigin: Option<Box<CodeableConcept>>,
24958    #[doc = "Todo."]
24959    pub gene: Option<Box<CodeableConcept>>,
24960    # [reference (targets = ["DocumentReference"])]
24961    #[doc = "Todo."]
24962    pub source: Option<Vec<Box<Reference>>>,
24963}
24964#[derive(
24965    Clone,
24966    Reflect,
24967    Debug,
24968    Default,
24969    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
24970    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
24971)]
24972#[fhir_serialize_type = "complex"]
24973#[doc = "Todo."]
24974pub struct SubstanceReferenceInformationGeneElement {
24975    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
24976    pub id: Option<String>,
24977    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
24978    pub extension: Option<Vec<Box<Extension>>>,
24979    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
24980    pub modifierExtension: Option<Vec<Box<Extension>>>,
24981    #[rename_field = "type"]
24982    #[doc = "Todo."]
24983    pub type_: Option<Box<CodeableConcept>>,
24984    #[doc = "Todo."]
24985    pub element: Option<Box<Identifier>>,
24986    # [reference (targets = ["DocumentReference"])]
24987    #[doc = "Todo."]
24988    pub source: Option<Vec<Box<Reference>>>,
24989}
24990#[derive(
24991    Clone,
24992    Reflect,
24993    Debug,
24994    Default,
24995    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
24996    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
24997)]
24998#[fhir_serialize_type = "complex"]
24999#[doc = "Todo."]
25000pub struct SubstanceReferenceInformationClassification {
25001    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
25002    pub id: Option<String>,
25003    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
25004    pub extension: Option<Vec<Box<Extension>>>,
25005    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
25006    pub modifierExtension: Option<Vec<Box<Extension>>>,
25007    #[doc = "Todo."]
25008    pub domain: Option<Box<CodeableConcept>>,
25009    #[doc = "Todo."]
25010    pub classification: Option<Box<CodeableConcept>>,
25011    #[doc = "Todo."]
25012    pub subtype: Option<Vec<Box<CodeableConcept>>>,
25013    # [reference (targets = ["DocumentReference"])]
25014    #[doc = "Todo."]
25015    pub source: Option<Vec<Box<Reference>>>,
25016}
25017#[derive(
25018    Clone,
25019    Reflect,
25020    Debug,
25021    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
25022    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
25023)]
25024#[fhir_serialize_type = "typechoice"]
25025#[type_choice_field_name = "amount"]
25026pub enum SubstanceReferenceInformationTargetAmountTypeChoice {
25027    Quantity(Box<Quantity>),
25028    Range(Box<Range>),
25029    String(Box<FHIRString>),
25030}
25031impl Default for SubstanceReferenceInformationTargetAmountTypeChoice {
25032    fn default() -> Self {
25033        SubstanceReferenceInformationTargetAmountTypeChoice::Quantity(Box::new(Default::default()))
25034    }
25035}
25036#[derive(
25037    Clone,
25038    Reflect,
25039    Debug,
25040    Default,
25041    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
25042    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
25043)]
25044#[fhir_serialize_type = "complex"]
25045#[doc = "Todo."]
25046pub struct SubstanceReferenceInformationTarget {
25047    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
25048    pub id: Option<String>,
25049    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
25050    pub extension: Option<Vec<Box<Extension>>>,
25051    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
25052    pub modifierExtension: Option<Vec<Box<Extension>>>,
25053    #[doc = "Todo."]
25054    pub target: Option<Box<Identifier>>,
25055    #[rename_field = "type"]
25056    #[doc = "Todo."]
25057    pub type_: Option<Box<CodeableConcept>>,
25058    #[doc = "Todo."]
25059    pub interaction: Option<Box<CodeableConcept>>,
25060    #[doc = "Todo."]
25061    pub organism: Option<Box<CodeableConcept>>,
25062    #[doc = "Todo."]
25063    pub organismType: Option<Box<CodeableConcept>>,
25064    # [type_choice_variants (complex = ["amountQuantity" , "amountRange"] , primitive = ["amountString"])]
25065    #[doc = "Todo."]
25066    pub amount: Option<SubstanceReferenceInformationTargetAmountTypeChoice>,
25067    #[doc = "Todo."]
25068    pub amountType: Option<Box<CodeableConcept>>,
25069    # [reference (targets = ["DocumentReference"])]
25070    #[doc = "Todo."]
25071    pub source: Option<Vec<Box<Reference>>>,
25072}
25073#[derive(
25074    Clone,
25075    Reflect,
25076    Debug,
25077    Default,
25078    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
25079    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
25080)]
25081#[fhir_serialize_type = "resource"]
25082#[doc = "Todo."]
25083pub struct SubstanceReferenceInformation {
25084    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
25085    pub id: Option<String>,
25086    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
25087    pub meta: Option<Box<Meta>>,
25088    #[primitive]
25089    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
25090    pub implicitRules: Option<Box<FHIRUri>>,
25091    #[primitive]
25092    #[doc = "The base language in which the resource is written."]
25093    pub language: Option<Box<FHIRCode>>,
25094    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
25095    pub text: Option<Box<Narrative>>,
25096    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
25097    pub contained: Option<Vec<Box<Resource>>>,
25098    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
25099    pub extension: Option<Vec<Box<Extension>>>,
25100    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
25101    pub modifierExtension: Option<Vec<Box<Extension>>>,
25102    #[primitive]
25103    #[doc = "Todo."]
25104    pub comment: Option<Box<FHIRString>>,
25105    #[doc = "Todo."]
25106    pub gene: Option<Vec<SubstanceReferenceInformationGene>>,
25107    #[doc = "Todo."]
25108    pub geneElement: Option<Vec<SubstanceReferenceInformationGeneElement>>,
25109    #[doc = "Todo."]
25110    pub classification: Option<Vec<SubstanceReferenceInformationClassification>>,
25111    #[doc = "Todo."]
25112    pub target: Option<Vec<SubstanceReferenceInformationTarget>>,
25113}
25114#[derive(
25115    Clone,
25116    Reflect,
25117    Debug,
25118    Default,
25119    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
25120    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
25121)]
25122#[fhir_serialize_type = "complex"]
25123#[doc = "Many complex materials are fractions of parts of plants, animals, or minerals. Fraction elements are often necessary to define both Substances and Specified Group 1 Substances. For substances derived from Plants, fraction information will be captured at the Substance information level ( . Oils, Juices and Exudates). Additional information for Extracts, such as extraction solvent composition, will be captured at the Specified Substance Group 1 information level. For plasma-derived products fraction information will be captured at the Substance and the Specified Substance Group 1 levels."]
25124pub struct SubstanceSourceMaterialFractionDescription {
25125    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
25126    pub id: Option<String>,
25127    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
25128    pub extension: Option<Vec<Box<Extension>>>,
25129    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
25130    pub modifierExtension: Option<Vec<Box<Extension>>>,
25131    #[primitive]
25132    #[doc = "This element is capturing information about the fraction of a plant part, or human plasma for fractionation."]
25133    pub fraction: Option<Box<FHIRString>>,
25134    #[doc = "The specific type of the material constituting the component. For Herbal preparations the particulars of the extracts (liquid/dry) is described in Specified Substance Group 1."]
25135    pub materialType: Option<Box<CodeableConcept>>,
25136}
25137#[derive(
25138    Clone,
25139    Reflect,
25140    Debug,
25141    Default,
25142    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
25143    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
25144)]
25145#[fhir_serialize_type = "complex"]
25146#[doc = "4.9.13.6.1 Author type (Conditional)."]
25147pub struct SubstanceSourceMaterialOrganismAuthor {
25148    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
25149    pub id: Option<String>,
25150    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
25151    pub extension: Option<Vec<Box<Extension>>>,
25152    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
25153    pub modifierExtension: Option<Vec<Box<Extension>>>,
25154    #[doc = "The type of author of an organism species shall be specified. The parenthetical author of an organism species refers to the first author who published the plant/animal name (of any rank). The primary author of an organism species refers to the first author(s), who validly published the plant/animal name."]
25155    pub authorType: Option<Box<CodeableConcept>>,
25156    #[primitive]
25157    #[doc = "The author of an organism species shall be specified. The author year of an organism shall also be specified when applicable; refers to the year in which the first author(s) published the infraspecific plant/animal name (of any rank)."]
25158    pub authorDescription: Option<Box<FHIRString>>,
25159}
25160#[derive(
25161    Clone,
25162    Reflect,
25163    Debug,
25164    Default,
25165    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
25166    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
25167)]
25168#[fhir_serialize_type = "complex"]
25169#[doc = "4.9.13.8.1 Hybrid species maternal organism ID (Optional)."]
25170pub struct SubstanceSourceMaterialOrganismHybrid {
25171    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
25172    pub id: Option<String>,
25173    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
25174    pub extension: Option<Vec<Box<Extension>>>,
25175    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
25176    pub modifierExtension: Option<Vec<Box<Extension>>>,
25177    #[primitive]
25178    #[doc = "The identifier of the maternal species constituting the hybrid organism shall be specified based on a controlled vocabulary. For plants, the parents aren’t always known, and it is unlikely that it will be known which is maternal and which is paternal."]
25179    pub maternalOrganismId: Option<Box<FHIRString>>,
25180    #[primitive]
25181    #[doc = "The name of the maternal species constituting the hybrid organism shall be specified. For plants, the parents aren’t always known, and it is unlikely that it will be known which is maternal and which is paternal."]
25182    pub maternalOrganismName: Option<Box<FHIRString>>,
25183    #[primitive]
25184    #[doc = "The identifier of the paternal species constituting the hybrid organism shall be specified based on a controlled vocabulary."]
25185    pub paternalOrganismId: Option<Box<FHIRString>>,
25186    #[primitive]
25187    #[doc = "The name of the paternal species constituting the hybrid organism shall be specified."]
25188    pub paternalOrganismName: Option<Box<FHIRString>>,
25189    #[doc = "The hybrid type of an organism shall be specified."]
25190    pub hybridType: Option<Box<CodeableConcept>>,
25191}
25192#[derive(
25193    Clone,
25194    Reflect,
25195    Debug,
25196    Default,
25197    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
25198    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
25199)]
25200#[fhir_serialize_type = "complex"]
25201#[doc = "4.9.13.7.1 Kingdom (Conditional)."]
25202pub struct SubstanceSourceMaterialOrganismOrganismGeneral {
25203    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
25204    pub id: Option<String>,
25205    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
25206    pub extension: Option<Vec<Box<Extension>>>,
25207    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
25208    pub modifierExtension: Option<Vec<Box<Extension>>>,
25209    #[doc = "The kingdom of an organism shall be specified."]
25210    pub kingdom: Option<Box<CodeableConcept>>,
25211    #[doc = "The phylum of an organism shall be specified."]
25212    pub phylum: Option<Box<CodeableConcept>>,
25213    #[doc = "The class of an organism shall be specified."]
25214    pub class: Option<Box<CodeableConcept>>,
25215    #[doc = "The order of an organism shall be specified,."]
25216    pub order: Option<Box<CodeableConcept>>,
25217}
25218#[derive(
25219    Clone,
25220    Reflect,
25221    Debug,
25222    Default,
25223    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
25224    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
25225)]
25226#[fhir_serialize_type = "complex"]
25227#[doc = "This subclause describes the organism which the substance is derived from. For vaccines, the parent organism shall be specified based on these subclause elements. As an example, full taxonomy will be described for the Substance Name: ., Leaf."]
25228pub struct SubstanceSourceMaterialOrganism {
25229    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
25230    pub id: Option<String>,
25231    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
25232    pub extension: Option<Vec<Box<Extension>>>,
25233    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
25234    pub modifierExtension: Option<Vec<Box<Extension>>>,
25235    #[doc = "The family of an organism shall be specified."]
25236    pub family: Option<Box<CodeableConcept>>,
25237    #[doc = "The genus of an organism shall be specified; refers to the Latin epithet of the genus element of the plant/animal scientific name; it is present in names for genera, species and infraspecies."]
25238    pub genus: Option<Box<CodeableConcept>>,
25239    #[doc = "The species of an organism shall be specified; refers to the Latin epithet of the species of the plant/animal; it is present in names for species and infraspecies."]
25240    pub species: Option<Box<CodeableConcept>>,
25241    #[doc = "The Intraspecific type of an organism shall be specified."]
25242    pub intraspecificType: Option<Box<CodeableConcept>>,
25243    #[primitive]
25244    #[doc = "The intraspecific description of an organism shall be specified based on a controlled vocabulary. For Influenza Vaccine, the intraspecific description shall contain the syntax of the antigen in line with the WHO convention."]
25245    pub intraspecificDescription: Option<Box<FHIRString>>,
25246    #[doc = "4.9.13.6.1 Author type (Conditional)."]
25247    pub author: Option<Vec<SubstanceSourceMaterialOrganismAuthor>>,
25248    #[doc = "4.9.13.8.1 Hybrid species maternal organism ID (Optional)."]
25249    pub hybrid: Option<SubstanceSourceMaterialOrganismHybrid>,
25250    #[doc = "4.9.13.7.1 Kingdom (Conditional)."]
25251    pub organismGeneral: Option<SubstanceSourceMaterialOrganismOrganismGeneral>,
25252}
25253#[derive(
25254    Clone,
25255    Reflect,
25256    Debug,
25257    Default,
25258    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
25259    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
25260)]
25261#[fhir_serialize_type = "complex"]
25262#[doc = "To do."]
25263pub struct SubstanceSourceMaterialPartDescription {
25264    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
25265    pub id: Option<String>,
25266    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
25267    pub extension: Option<Vec<Box<Extension>>>,
25268    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
25269    pub modifierExtension: Option<Vec<Box<Extension>>>,
25270    #[doc = "Entity of anatomical origin of source material within an organism."]
25271    pub part: Option<Box<CodeableConcept>>,
25272    #[doc = "The detailed anatomic location when the part can be extracted from different anatomical locations of the organism. Multiple alternative locations may apply."]
25273    pub partLocation: Option<Box<CodeableConcept>>,
25274}
25275#[derive(
25276    Clone,
25277    Reflect,
25278    Debug,
25279    Default,
25280    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
25281    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
25282)]
25283#[fhir_serialize_type = "resource"]
25284#[doc = "Source material shall capture information on the taxonomic and anatomical origins as well as the fraction of a material that can result in or can be modified to form a substance. This set of data elements shall be used to define polymer substances isolated from biological matrices. Taxonomic and anatomical origins shall be described using a controlled vocabulary as required. This information is captured for naturally derived polymers ( . starch) and structurally diverse substances. For Organisms belonging to the Kingdom Plantae the Substance level defines the fresh material of a single species or infraspecies, the Herbal Drug and the Herbal preparation. For Herbal preparations, the fraction information will be captured at the Substance information level and additional information for herbal extracts will be captured at the Specified Substance Group 1 information level. See for further explanation the Substance Class: Structurally Diverse and the herbal annex."]
25285pub struct SubstanceSourceMaterial {
25286    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
25287    pub id: Option<String>,
25288    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
25289    pub meta: Option<Box<Meta>>,
25290    #[primitive]
25291    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
25292    pub implicitRules: Option<Box<FHIRUri>>,
25293    #[primitive]
25294    #[doc = "The base language in which the resource is written."]
25295    pub language: Option<Box<FHIRCode>>,
25296    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
25297    pub text: Option<Box<Narrative>>,
25298    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
25299    pub contained: Option<Vec<Box<Resource>>>,
25300    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
25301    pub extension: Option<Vec<Box<Extension>>>,
25302    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
25303    pub modifierExtension: Option<Vec<Box<Extension>>>,
25304    #[doc = "General high level classification of the source material specific to the origin of the material."]
25305    pub sourceMaterialClass: Option<Box<CodeableConcept>>,
25306    #[doc = "The type of the source material shall be specified based on a controlled vocabulary. For vaccines, this subclause refers to the class of infectious agent."]
25307    pub sourceMaterialType: Option<Box<CodeableConcept>>,
25308    #[doc = "The state of the source material when extracted."]
25309    pub sourceMaterialState: Option<Box<CodeableConcept>>,
25310    #[doc = "The unique identifier associated with the source material parent organism shall be specified."]
25311    pub organismId: Option<Box<Identifier>>,
25312    #[primitive]
25313    #[doc = "The organism accepted Scientific name shall be provided based on the organism taxonomy."]
25314    pub organismName: Option<Box<FHIRString>>,
25315    #[doc = "The parent of the herbal drug Ginkgo biloba, Leaf is the substance ID of the substance (fresh) of Ginkgo biloba L. or Ginkgo biloba L. (Whole plant)."]
25316    pub parentSubstanceId: Option<Vec<Box<Identifier>>>,
25317    #[primitive]
25318    #[doc = "The parent substance of the Herbal Drug, or Herbal preparation."]
25319    pub parentSubstanceName: Option<Vec<Box<FHIRString>>>,
25320    #[doc = "The country where the plant material is harvested or the countries where the plasma is sourced from as laid down in accordance with the Plasma Master File. For “Plasma-derived substances” the attribute country of origin provides information about the countries used for the manufacturing of the Cryopoor plama or Crioprecipitate."]
25321    pub countryOfOrigin: Option<Vec<Box<CodeableConcept>>>,
25322    #[primitive]
25323    #[doc = "The place/region where the plant is harvested or the places/regions where the animal source material has its habitat."]
25324    pub geographicalLocation: Option<Vec<Box<FHIRString>>>,
25325    #[doc = "Stage of life for animals, plants, insects and microorganisms. This information shall be provided only when the substance is significantly different in these stages (e.g. foetal bovine serum)."]
25326    pub developmentStage: Option<Box<CodeableConcept>>,
25327    #[doc = "Many complex materials are fractions of parts of plants, animals, or minerals. Fraction elements are often necessary to define both Substances and Specified Group 1 Substances. For substances derived from Plants, fraction information will be captured at the Substance information level ( . Oils, Juices and Exudates). Additional information for Extracts, such as extraction solvent composition, will be captured at the Specified Substance Group 1 information level. For plasma-derived products fraction information will be captured at the Substance and the Specified Substance Group 1 levels."]
25328    pub fractionDescription: Option<Vec<SubstanceSourceMaterialFractionDescription>>,
25329    #[doc = "This subclause describes the organism which the substance is derived from. For vaccines, the parent organism shall be specified based on these subclause elements. As an example, full taxonomy will be described for the Substance Name: ., Leaf."]
25330    pub organism: Option<SubstanceSourceMaterialOrganism>,
25331    #[doc = "To do."]
25332    pub partDescription: Option<Vec<SubstanceSourceMaterialPartDescription>>,
25333}
25334#[derive(
25335    Clone,
25336    Reflect,
25337    Debug,
25338    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
25339    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
25340)]
25341#[fhir_serialize_type = "typechoice"]
25342#[type_choice_field_name = "amount"]
25343pub enum SubstanceSpecificationMoietyAmountTypeChoice {
25344    Quantity(Box<Quantity>),
25345    String(Box<FHIRString>),
25346}
25347impl Default for SubstanceSpecificationMoietyAmountTypeChoice {
25348    fn default() -> Self {
25349        SubstanceSpecificationMoietyAmountTypeChoice::Quantity(Box::new(Default::default()))
25350    }
25351}
25352#[derive(
25353    Clone,
25354    Reflect,
25355    Debug,
25356    Default,
25357    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
25358    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
25359)]
25360#[fhir_serialize_type = "complex"]
25361#[doc = "Moiety, for structural modifications."]
25362pub struct SubstanceSpecificationMoiety {
25363    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
25364    pub id: Option<String>,
25365    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
25366    pub extension: Option<Vec<Box<Extension>>>,
25367    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
25368    pub modifierExtension: Option<Vec<Box<Extension>>>,
25369    #[doc = "Role that the moiety is playing."]
25370    pub role: Option<Box<CodeableConcept>>,
25371    #[rename_field = "identifier"]
25372    #[doc = "Identifier by which this moiety substance is known."]
25373    pub identifier_: Option<Box<Identifier>>,
25374    #[primitive]
25375    #[doc = "Textual name for this moiety substance."]
25376    pub name: Option<Box<FHIRString>>,
25377    #[doc = "Stereochemistry type."]
25378    pub stereochemistry: Option<Box<CodeableConcept>>,
25379    #[doc = "Optical activity type."]
25380    pub opticalActivity: Option<Box<CodeableConcept>>,
25381    #[primitive]
25382    #[doc = "Molecular formula."]
25383    pub molecularFormula: Option<Box<FHIRString>>,
25384    # [type_choice_variants (complex = ["amountQuantity"] , primitive = ["amountString"])]
25385    #[doc = "Quantitative value for this moiety."]
25386    pub amount: Option<SubstanceSpecificationMoietyAmountTypeChoice>,
25387}
25388#[derive(
25389    Clone,
25390    Reflect,
25391    Debug,
25392    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
25393    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
25394)]
25395#[fhir_serialize_type = "typechoice"]
25396#[type_choice_field_name = "definingSubstance"]
25397pub enum SubstanceSpecificationPropertyDefiningSubstanceTypeChoice {
25398    # [reference (targets = ["SubstanceSpecification" , "Substance"])]
25399    Reference(Box<Reference>),
25400    CodeableConcept(Box<CodeableConcept>),
25401}
25402impl Default for SubstanceSpecificationPropertyDefiningSubstanceTypeChoice {
25403    fn default() -> Self {
25404        SubstanceSpecificationPropertyDefiningSubstanceTypeChoice::Reference(Box::new(
25405            Default::default(),
25406        ))
25407    }
25408}
25409#[derive(
25410    Clone,
25411    Reflect,
25412    Debug,
25413    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
25414    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
25415)]
25416#[fhir_serialize_type = "typechoice"]
25417#[type_choice_field_name = "amount"]
25418pub enum SubstanceSpecificationPropertyAmountTypeChoice {
25419    Quantity(Box<Quantity>),
25420    String(Box<FHIRString>),
25421}
25422impl Default for SubstanceSpecificationPropertyAmountTypeChoice {
25423    fn default() -> Self {
25424        SubstanceSpecificationPropertyAmountTypeChoice::Quantity(Box::new(Default::default()))
25425    }
25426}
25427#[derive(
25428    Clone,
25429    Reflect,
25430    Debug,
25431    Default,
25432    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
25433    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
25434)]
25435#[fhir_serialize_type = "complex"]
25436#[doc = "General specifications for this substance, including how it is related to other substances."]
25437pub struct SubstanceSpecificationProperty {
25438    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
25439    pub id: Option<String>,
25440    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
25441    pub extension: Option<Vec<Box<Extension>>>,
25442    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
25443    pub modifierExtension: Option<Vec<Box<Extension>>>,
25444    #[doc = "A category for this property, e.g. Physical, Chemical, Enzymatic."]
25445    pub category: Option<Box<CodeableConcept>>,
25446    #[doc = "Property type e.g. viscosity, pH, isoelectric point."]
25447    pub code: Option<Box<CodeableConcept>>,
25448    #[primitive]
25449    #[doc = "Parameters that were used in the measurement of a property (e.g. for viscosity: measured at 20C with a pH of 7.1)."]
25450    pub parameters: Option<Box<FHIRString>>,
25451    # [type_choice_variants (complex = ["definingSubstanceReference" , "definingSubstanceCodeableConcept"] , primitive = [])]
25452    #[doc = "A substance upon which a defining property depends (e.g. for solubility: in water, in alcohol)."]
25453    pub definingSubstance: Option<SubstanceSpecificationPropertyDefiningSubstanceTypeChoice>,
25454    # [type_choice_variants (complex = ["amountQuantity"] , primitive = ["amountString"])]
25455    #[doc = "Quantitative value for this property."]
25456    pub amount: Option<SubstanceSpecificationPropertyAmountTypeChoice>,
25457}
25458#[derive(
25459    Clone,
25460    Reflect,
25461    Debug,
25462    Default,
25463    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
25464    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
25465)]
25466#[fhir_serialize_type = "complex"]
25467#[doc = "The molecular weight or weight range (for proteins, polymers or nucleic acids)."]
25468pub struct SubstanceSpecificationStructureIsotopeMolecularWeight {
25469    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
25470    pub id: Option<String>,
25471    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
25472    pub extension: Option<Vec<Box<Extension>>>,
25473    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
25474    pub modifierExtension: Option<Vec<Box<Extension>>>,
25475    #[doc = "The method by which the molecular weight was determined."]
25476    pub method: Option<Box<CodeableConcept>>,
25477    #[rename_field = "type"]
25478    #[doc = "Type of molecular weight such as exact, average (also known as. number average), weight average."]
25479    pub type_: Option<Box<CodeableConcept>>,
25480    #[doc = "Used to capture quantitative values for a variety of elements. If only limits are given, the arithmetic mean would be the average. If only a single definite value for a given element is given, it would be captured in this field."]
25481    pub amount: Option<Box<Quantity>>,
25482}
25483#[derive(
25484    Clone,
25485    Reflect,
25486    Debug,
25487    Default,
25488    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
25489    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
25490)]
25491#[fhir_serialize_type = "complex"]
25492#[doc = "Applicable for single substances that contain a radionuclide or a non-natural isotopic ratio."]
25493pub struct SubstanceSpecificationStructureIsotope {
25494    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
25495    pub id: Option<String>,
25496    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
25497    pub extension: Option<Vec<Box<Extension>>>,
25498    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
25499    pub modifierExtension: Option<Vec<Box<Extension>>>,
25500    #[rename_field = "identifier"]
25501    #[doc = "Substance identifier for each non-natural or radioisotope."]
25502    pub identifier_: Option<Box<Identifier>>,
25503    #[doc = "Substance name for each non-natural or radioisotope."]
25504    pub name: Option<Box<CodeableConcept>>,
25505    #[doc = "The type of isotopic substitution present in a single substance."]
25506    pub substitution: Option<Box<CodeableConcept>>,
25507    #[doc = "Half life - for a non-natural nuclide."]
25508    pub halfLife: Option<Box<Quantity>>,
25509    #[doc = "The molecular weight or weight range (for proteins, polymers or nucleic acids)."]
25510    pub molecularWeight: Option<SubstanceSpecificationStructureIsotopeMolecularWeight>,
25511}
25512#[derive(
25513    Clone,
25514    Reflect,
25515    Debug,
25516    Default,
25517    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
25518    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
25519)]
25520#[fhir_serialize_type = "complex"]
25521#[doc = "Molecular structural representation."]
25522pub struct SubstanceSpecificationStructureRepresentation {
25523    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
25524    pub id: Option<String>,
25525    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
25526    pub extension: Option<Vec<Box<Extension>>>,
25527    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
25528    pub modifierExtension: Option<Vec<Box<Extension>>>,
25529    #[rename_field = "type"]
25530    #[doc = "The type of structure (e.g. Full, Partial, Representative)."]
25531    pub type_: Option<Box<CodeableConcept>>,
25532    #[primitive]
25533    #[doc = "The structural representation as text string in a format e.g. InChI, SMILES, MOLFILE, CDX."]
25534    pub representation: Option<Box<FHIRString>>,
25535    #[doc = "An attached file with the structural representation."]
25536    pub attachment: Option<Box<Attachment>>,
25537}
25538#[derive(
25539    Clone,
25540    Reflect,
25541    Debug,
25542    Default,
25543    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
25544    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
25545)]
25546#[fhir_serialize_type = "complex"]
25547#[doc = "Structural information."]
25548pub struct SubstanceSpecificationStructure {
25549    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
25550    pub id: Option<String>,
25551    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
25552    pub extension: Option<Vec<Box<Extension>>>,
25553    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
25554    pub modifierExtension: Option<Vec<Box<Extension>>>,
25555    #[doc = "Stereochemistry type."]
25556    pub stereochemistry: Option<Box<CodeableConcept>>,
25557    #[doc = "Optical activity type."]
25558    pub opticalActivity: Option<Box<CodeableConcept>>,
25559    #[primitive]
25560    #[doc = "Molecular formula."]
25561    pub molecularFormula: Option<Box<FHIRString>>,
25562    #[primitive]
25563    #[doc = "Specified per moiety according to the Hill system, i.e. first C, then H, then alphabetical, each moiety separated by a dot."]
25564    pub molecularFormulaByMoiety: Option<Box<FHIRString>>,
25565    #[doc = "Applicable for single substances that contain a radionuclide or a non-natural isotopic ratio."]
25566    pub isotope: Option<Vec<SubstanceSpecificationStructureIsotope>>,
25567    #[doc = "The molecular weight or weight range (for proteins, polymers or nucleic acids)."]
25568    pub molecularWeight: Option<SubstanceSpecificationStructureIsotopeMolecularWeight>,
25569    # [reference (targets = ["DocumentReference"])]
25570    #[doc = "Supporting literature."]
25571    pub source: Option<Vec<Box<Reference>>>,
25572    #[doc = "Molecular structural representation."]
25573    pub representation: Option<Vec<SubstanceSpecificationStructureRepresentation>>,
25574}
25575#[derive(
25576    Clone,
25577    Reflect,
25578    Debug,
25579    Default,
25580    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
25581    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
25582)]
25583#[fhir_serialize_type = "complex"]
25584#[doc = "Codes associated with the substance."]
25585pub struct SubstanceSpecificationCode {
25586    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
25587    pub id: Option<String>,
25588    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
25589    pub extension: Option<Vec<Box<Extension>>>,
25590    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
25591    pub modifierExtension: Option<Vec<Box<Extension>>>,
25592    #[doc = "The specific code."]
25593    pub code: Option<Box<CodeableConcept>>,
25594    #[doc = "Status of the code assignment."]
25595    pub status: Option<Box<CodeableConcept>>,
25596    #[primitive]
25597    #[doc = "The date at which the code status is changed as part of the terminology maintenance."]
25598    pub statusDate: Option<Box<FHIRDateTime>>,
25599    #[primitive]
25600    #[doc = "Any comment can be provided in this field, if necessary."]
25601    pub comment: Option<Box<FHIRString>>,
25602    # [reference (targets = ["DocumentReference"])]
25603    #[doc = "Supporting literature."]
25604    pub source: Option<Vec<Box<Reference>>>,
25605}
25606#[derive(
25607    Clone,
25608    Reflect,
25609    Debug,
25610    Default,
25611    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
25612    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
25613)]
25614#[fhir_serialize_type = "complex"]
25615#[doc = "Details of the official nature of this name."]
25616pub struct SubstanceSpecificationNameOfficial {
25617    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
25618    pub id: Option<String>,
25619    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
25620    pub extension: Option<Vec<Box<Extension>>>,
25621    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
25622    pub modifierExtension: Option<Vec<Box<Extension>>>,
25623    #[doc = "Which authority uses this official name."]
25624    pub authority: Option<Box<CodeableConcept>>,
25625    #[doc = "The status of the official name."]
25626    pub status: Option<Box<CodeableConcept>>,
25627    #[primitive]
25628    #[doc = "Date of official name change."]
25629    pub date: Option<Box<FHIRDateTime>>,
25630}
25631#[derive(
25632    Clone,
25633    Reflect,
25634    Debug,
25635    Default,
25636    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
25637    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
25638)]
25639#[fhir_serialize_type = "complex"]
25640#[doc = "Names applicable to this substance."]
25641pub struct SubstanceSpecificationName {
25642    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
25643    pub id: Option<String>,
25644    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
25645    pub extension: Option<Vec<Box<Extension>>>,
25646    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
25647    pub modifierExtension: Option<Vec<Box<Extension>>>,
25648    #[primitive]
25649    #[doc = "The actual name."]
25650    pub name: Box<FHIRString>,
25651    #[rename_field = "type"]
25652    #[doc = "Name type."]
25653    pub type_: Option<Box<CodeableConcept>>,
25654    #[doc = "The status of the name."]
25655    pub status: Option<Box<CodeableConcept>>,
25656    #[primitive]
25657    #[doc = "If this is the preferred name for this substance."]
25658    pub preferred: Option<Box<FHIRBoolean>>,
25659    #[doc = "Language of the name."]
25660    pub language: Option<Vec<Box<CodeableConcept>>>,
25661    #[doc = "The use context of this name for example if there is a different name a drug active ingredient as opposed to a food colour additive."]
25662    pub domain: Option<Vec<Box<CodeableConcept>>>,
25663    #[doc = "The jurisdiction where this name applies."]
25664    pub jurisdiction: Option<Vec<Box<CodeableConcept>>>,
25665    #[doc = "A synonym of this name."]
25666    pub synonym: Option<Vec<SubstanceSpecificationName>>,
25667    #[doc = "A translation for this name."]
25668    pub translation: Option<Vec<SubstanceSpecificationName>>,
25669    #[doc = "Details of the official nature of this name."]
25670    pub official: Option<Vec<SubstanceSpecificationNameOfficial>>,
25671    # [reference (targets = ["DocumentReference"])]
25672    #[doc = "Supporting literature."]
25673    pub source: Option<Vec<Box<Reference>>>,
25674}
25675#[derive(
25676    Clone,
25677    Reflect,
25678    Debug,
25679    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
25680    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
25681)]
25682#[fhir_serialize_type = "typechoice"]
25683#[type_choice_field_name = "substance"]
25684pub enum SubstanceSpecificationRelationshipSubstanceTypeChoice {
25685    # [reference (targets = ["SubstanceSpecification"])]
25686    Reference(Box<Reference>),
25687    CodeableConcept(Box<CodeableConcept>),
25688}
25689impl Default for SubstanceSpecificationRelationshipSubstanceTypeChoice {
25690    fn default() -> Self {
25691        SubstanceSpecificationRelationshipSubstanceTypeChoice::Reference(Box::new(
25692            Default::default(),
25693        ))
25694    }
25695}
25696#[derive(
25697    Clone,
25698    Reflect,
25699    Debug,
25700    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
25701    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
25702)]
25703#[fhir_serialize_type = "typechoice"]
25704#[type_choice_field_name = "amount"]
25705pub enum SubstanceSpecificationRelationshipAmountTypeChoice {
25706    Quantity(Box<Quantity>),
25707    Range(Box<Range>),
25708    Ratio(Box<Ratio>),
25709    String(Box<FHIRString>),
25710}
25711impl Default for SubstanceSpecificationRelationshipAmountTypeChoice {
25712    fn default() -> Self {
25713        SubstanceSpecificationRelationshipAmountTypeChoice::Quantity(Box::new(Default::default()))
25714    }
25715}
25716#[derive(
25717    Clone,
25718    Reflect,
25719    Debug,
25720    Default,
25721    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
25722    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
25723)]
25724#[fhir_serialize_type = "complex"]
25725#[doc = "A link between this substance and another, with details of the relationship."]
25726pub struct SubstanceSpecificationRelationship {
25727    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
25728    pub id: Option<String>,
25729    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
25730    pub extension: Option<Vec<Box<Extension>>>,
25731    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
25732    pub modifierExtension: Option<Vec<Box<Extension>>>,
25733    # [type_choice_variants (complex = ["substanceReference" , "substanceCodeableConcept"] , primitive = [])]
25734    #[doc = "A pointer to another substance, as a resource or just a representational code."]
25735    pub substance: Option<SubstanceSpecificationRelationshipSubstanceTypeChoice>,
25736    #[doc = "For example \"salt to parent\", \"active moiety\", \"starting material\"."]
25737    pub relationship: Option<Box<CodeableConcept>>,
25738    #[primitive]
25739    #[doc = "For example where an enzyme strongly bonds with a particular substance, this is a defining relationship for that enzyme, out of several possible substance relationships."]
25740    pub isDefining: Option<Box<FHIRBoolean>>,
25741    # [type_choice_variants (complex = ["amountQuantity" , "amountRange" , "amountRatio"] , primitive = ["amountString"])]
25742    #[doc = "A numeric factor for the relationship, for instance to express that the salt of a substance has some percentage of the active substance in relation to some other."]
25743    pub amount: Option<SubstanceSpecificationRelationshipAmountTypeChoice>,
25744    #[doc = "For use when the numeric."]
25745    pub amountRatioLowLimit: Option<Box<Ratio>>,
25746    #[doc = "An operator for the amount, for example \"average\", \"approximately\", \"less than\"."]
25747    pub amountType: Option<Box<CodeableConcept>>,
25748    # [reference (targets = ["DocumentReference"])]
25749    #[doc = "Supporting literature."]
25750    pub source: Option<Vec<Box<Reference>>>,
25751}
25752#[derive(
25753    Clone,
25754    Reflect,
25755    Debug,
25756    Default,
25757    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
25758    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
25759)]
25760#[fhir_serialize_type = "resource"]
25761#[doc = "The detailed description of a substance, typically at a level beyond what is used for prescribing."]
25762pub struct SubstanceSpecification {
25763    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
25764    pub id: Option<String>,
25765    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
25766    pub meta: Option<Box<Meta>>,
25767    #[primitive]
25768    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
25769    pub implicitRules: Option<Box<FHIRUri>>,
25770    #[primitive]
25771    #[doc = "The base language in which the resource is written."]
25772    pub language: Option<Box<FHIRCode>>,
25773    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
25774    pub text: Option<Box<Narrative>>,
25775    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
25776    pub contained: Option<Vec<Box<Resource>>>,
25777    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
25778    pub extension: Option<Vec<Box<Extension>>>,
25779    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
25780    pub modifierExtension: Option<Vec<Box<Extension>>>,
25781    #[rename_field = "identifier"]
25782    #[doc = "Identifier by which this substance is known."]
25783    pub identifier_: Option<Box<Identifier>>,
25784    #[rename_field = "type"]
25785    #[doc = "High level categorization, e.g. polymer or nucleic acid."]
25786    pub type_: Option<Box<CodeableConcept>>,
25787    #[doc = "Status of substance within the catalogue e.g. approved."]
25788    pub status: Option<Box<CodeableConcept>>,
25789    #[doc = "If the substance applies to only human or veterinary use."]
25790    pub domain: Option<Box<CodeableConcept>>,
25791    #[primitive]
25792    #[doc = "Textual description of the substance."]
25793    pub description: Option<Box<FHIRString>>,
25794    # [reference (targets = ["DocumentReference"])]
25795    #[doc = "Supporting literature."]
25796    pub source: Option<Vec<Box<Reference>>>,
25797    #[primitive]
25798    #[doc = "Textual comment about this record of a substance."]
25799    pub comment: Option<Box<FHIRString>>,
25800    #[doc = "Moiety, for structural modifications."]
25801    pub moiety: Option<Vec<SubstanceSpecificationMoiety>>,
25802    #[doc = "General specifications for this substance, including how it is related to other substances."]
25803    pub property: Option<Vec<SubstanceSpecificationProperty>>,
25804    # [reference (targets = ["SubstanceReferenceInformation"])]
25805    #[doc = "General information detailing this substance."]
25806    pub referenceInformation: Option<Box<Reference>>,
25807    #[doc = "Structural information."]
25808    pub structure: Option<SubstanceSpecificationStructure>,
25809    #[doc = "Codes associated with the substance."]
25810    pub code: Option<Vec<SubstanceSpecificationCode>>,
25811    #[doc = "Names applicable to this substance."]
25812    pub name: Option<Vec<SubstanceSpecificationName>>,
25813    #[doc = "The molecular weight or weight range (for proteins, polymers or nucleic acids)."]
25814    pub molecularWeight: Option<Vec<SubstanceSpecificationStructureIsotopeMolecularWeight>>,
25815    #[doc = "A link between this substance and another, with details of the relationship."]
25816    pub relationship: Option<Vec<SubstanceSpecificationRelationship>>,
25817    # [reference (targets = ["SubstanceNucleicAcid"])]
25818    #[doc = "Data items specific to nucleic acids."]
25819    pub nucleicAcid: Option<Box<Reference>>,
25820    # [reference (targets = ["SubstancePolymer"])]
25821    #[doc = "Data items specific to polymers."]
25822    pub polymer: Option<Box<Reference>>,
25823    # [reference (targets = ["SubstanceProtein"])]
25824    #[doc = "Data items specific to proteins."]
25825    pub protein: Option<Box<Reference>>,
25826    # [reference (targets = ["SubstanceSourceMaterial"])]
25827    #[doc = "Material or taxonomic/anatomical source for the substance."]
25828    pub sourceMaterial: Option<Box<Reference>>,
25829}
25830#[derive(
25831    Clone,
25832    Reflect,
25833    Debug,
25834    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
25835    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
25836)]
25837#[fhir_serialize_type = "typechoice"]
25838#[type_choice_field_name = "item"]
25839pub enum SupplyDeliverySuppliedItemItemTypeChoice {
25840    CodeableConcept(Box<CodeableConcept>),
25841    # [reference (targets = ["Medication" , "Substance" , "Device"])]
25842    Reference(Box<Reference>),
25843}
25844impl Default for SupplyDeliverySuppliedItemItemTypeChoice {
25845    fn default() -> Self {
25846        SupplyDeliverySuppliedItemItemTypeChoice::CodeableConcept(Box::new(Default::default()))
25847    }
25848}
25849#[derive(
25850    Clone,
25851    Reflect,
25852    Debug,
25853    Default,
25854    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
25855    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
25856)]
25857#[fhir_serialize_type = "complex"]
25858#[doc = "The item that is being delivered or has been supplied."]
25859pub struct SupplyDeliverySuppliedItem {
25860    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
25861    pub id: Option<String>,
25862    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
25863    pub extension: Option<Vec<Box<Extension>>>,
25864    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
25865    pub modifierExtension: Option<Vec<Box<Extension>>>,
25866    #[doc = "The amount of supply that has been dispensed. Includes unit of measure."]
25867    pub quantity: Option<Box<Quantity>>,
25868    # [type_choice_variants (complex = ["itemCodeableConcept" , "itemReference"] , primitive = [])]
25869    #[doc = "Identifies the medication, substance or device being dispensed. This is either a link to a resource representing the details of the item or a code that identifies the item from a known list."]
25870    pub item: Option<SupplyDeliverySuppliedItemItemTypeChoice>,
25871}
25872#[derive(
25873    Clone,
25874    Reflect,
25875    Debug,
25876    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
25877    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
25878)]
25879#[fhir_serialize_type = "typechoice"]
25880#[type_choice_field_name = "occurrence"]
25881pub enum SupplyDeliveryOccurrenceTypeChoice {
25882    DateTime(Box<FHIRDateTime>),
25883    Period(Box<Period>),
25884    Timing(Box<Timing>),
25885}
25886impl Default for SupplyDeliveryOccurrenceTypeChoice {
25887    fn default() -> Self {
25888        SupplyDeliveryOccurrenceTypeChoice::DateTime(Box::new(Default::default()))
25889    }
25890}
25891#[derive(
25892    Clone,
25893    Reflect,
25894    Debug,
25895    Default,
25896    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
25897    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
25898)]
25899#[fhir_serialize_type = "resource"]
25900#[doc = "Record of delivery of what is supplied."]
25901pub struct SupplyDelivery {
25902    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
25903    pub id: Option<String>,
25904    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
25905    pub meta: Option<Box<Meta>>,
25906    #[primitive]
25907    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
25908    pub implicitRules: Option<Box<FHIRUri>>,
25909    #[primitive]
25910    #[doc = "The base language in which the resource is written."]
25911    pub language: Option<Box<FHIRCode>>,
25912    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
25913    pub text: Option<Box<Narrative>>,
25914    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
25915    pub contained: Option<Vec<Box<Resource>>>,
25916    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
25917    pub extension: Option<Vec<Box<Extension>>>,
25918    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
25919    pub modifierExtension: Option<Vec<Box<Extension>>>,
25920    #[rename_field = "identifier"]
25921    #[doc = "Identifier for the supply delivery event that is used to identify it across multiple disparate systems."]
25922    pub identifier_: Option<Vec<Box<Identifier>>>,
25923    # [reference (targets = ["SupplyRequest"])]
25924    #[doc = "A plan, proposal or order that is fulfilled in whole or in part by this event."]
25925    pub basedOn: Option<Vec<Box<Reference>>>,
25926    # [reference (targets = ["SupplyDelivery" , "Contract"])]
25927    #[doc = "A larger event of which this particular event is a component or step."]
25928    pub partOf: Option<Vec<Box<Reference>>>,
25929    #[primitive]
25930    #[doc = "A code specifying the state of the dispense event."]
25931    pub status: Option<Box<terminology::SupplydeliveryStatus>>,
25932    # [reference (targets = ["Patient"])]
25933    #[doc = "A link to a resource representing the person whom the delivered item is for."]
25934    pub patient: Option<Box<Reference>>,
25935    #[rename_field = "type"]
25936    #[doc = "Indicates the type of dispensing event that is performed. Examples include: Trial Fill, Completion of Trial, Partial Fill, Emergency Fill, Samples, etc."]
25937    pub type_: Option<Box<CodeableConcept>>,
25938    #[doc = "The item that is being delivered or has been supplied."]
25939    pub suppliedItem: Option<SupplyDeliverySuppliedItem>,
25940    # [type_choice_variants (complex = ["occurrencePeriod" , "occurrenceTiming"] , primitive = ["occurrenceDateTime"])]
25941    #[doc = "The date or time(s) the activity occurred."]
25942    pub occurrence: Option<SupplyDeliveryOccurrenceTypeChoice>,
25943    # [reference (targets = ["Practitioner" , "PractitionerRole" , "Organization"])]
25944    #[doc = "The individual responsible for dispensing the medication, supplier or device."]
25945    pub supplier: Option<Box<Reference>>,
25946    # [reference (targets = ["Location"])]
25947    #[doc = "Identification of the facility/location where the Supply was shipped to, as part of the dispense event."]
25948    pub destination: Option<Box<Reference>>,
25949    # [reference (targets = ["Practitioner" , "PractitionerRole"])]
25950    #[doc = "Identifies the person who picked up the Supply."]
25951    pub receiver: Option<Vec<Box<Reference>>>,
25952}
25953#[derive(
25954    Clone,
25955    Reflect,
25956    Debug,
25957    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
25958    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
25959)]
25960#[fhir_serialize_type = "typechoice"]
25961#[type_choice_field_name = "item"]
25962pub enum SupplyRequestItemTypeChoice {
25963    CodeableConcept(Box<CodeableConcept>),
25964    # [reference (targets = ["Medication" , "Substance" , "Device"])]
25965    Reference(Box<Reference>),
25966}
25967impl Default for SupplyRequestItemTypeChoice {
25968    fn default() -> Self {
25969        SupplyRequestItemTypeChoice::CodeableConcept(Box::new(Default::default()))
25970    }
25971}
25972#[derive(
25973    Clone,
25974    Reflect,
25975    Debug,
25976    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
25977    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
25978)]
25979#[fhir_serialize_type = "typechoice"]
25980#[type_choice_field_name = "value"]
25981pub enum SupplyRequestParameterValueTypeChoice {
25982    CodeableConcept(Box<CodeableConcept>),
25983    Quantity(Box<Quantity>),
25984    Range(Box<Range>),
25985    Boolean(Box<FHIRBoolean>),
25986}
25987impl Default for SupplyRequestParameterValueTypeChoice {
25988    fn default() -> Self {
25989        SupplyRequestParameterValueTypeChoice::CodeableConcept(Box::new(Default::default()))
25990    }
25991}
25992#[derive(
25993    Clone,
25994    Reflect,
25995    Debug,
25996    Default,
25997    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
25998    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
25999)]
26000#[fhir_serialize_type = "complex"]
26001#[doc = "Specific parameters for the ordered item.  For example, the size of the indicated item."]
26002pub struct SupplyRequestParameter {
26003    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
26004    pub id: Option<String>,
26005    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
26006    pub extension: Option<Vec<Box<Extension>>>,
26007    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
26008    pub modifierExtension: Option<Vec<Box<Extension>>>,
26009    #[doc = "A code or string that identifies the device detail being asserted."]
26010    pub code: Option<Box<CodeableConcept>>,
26011    # [type_choice_variants (complex = ["valueCodeableConcept" , "valueQuantity" , "valueRange"] , primitive = ["valueBoolean"])]
26012    #[doc = "The value of the device detail."]
26013    pub value: Option<SupplyRequestParameterValueTypeChoice>,
26014}
26015#[derive(
26016    Clone,
26017    Reflect,
26018    Debug,
26019    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
26020    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
26021)]
26022#[fhir_serialize_type = "typechoice"]
26023#[type_choice_field_name = "occurrence"]
26024pub enum SupplyRequestOccurrenceTypeChoice {
26025    DateTime(Box<FHIRDateTime>),
26026    Period(Box<Period>),
26027    Timing(Box<Timing>),
26028}
26029impl Default for SupplyRequestOccurrenceTypeChoice {
26030    fn default() -> Self {
26031        SupplyRequestOccurrenceTypeChoice::DateTime(Box::new(Default::default()))
26032    }
26033}
26034#[derive(
26035    Clone,
26036    Reflect,
26037    Debug,
26038    Default,
26039    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
26040    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
26041)]
26042#[fhir_serialize_type = "resource"]
26043#[doc = "A record of a request for a medication, substance or device used in the healthcare setting."]
26044pub struct SupplyRequest {
26045    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
26046    pub id: Option<String>,
26047    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
26048    pub meta: Option<Box<Meta>>,
26049    #[primitive]
26050    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
26051    pub implicitRules: Option<Box<FHIRUri>>,
26052    #[primitive]
26053    #[doc = "The base language in which the resource is written."]
26054    pub language: Option<Box<FHIRCode>>,
26055    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
26056    pub text: Option<Box<Narrative>>,
26057    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
26058    pub contained: Option<Vec<Box<Resource>>>,
26059    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
26060    pub extension: Option<Vec<Box<Extension>>>,
26061    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
26062    pub modifierExtension: Option<Vec<Box<Extension>>>,
26063    #[rename_field = "identifier"]
26064    #[doc = "Business identifiers assigned to this SupplyRequest by the author and/or other systems. These identifiers remain constant as the resource is updated and propagates from server to server."]
26065    pub identifier_: Option<Vec<Box<Identifier>>>,
26066    #[primitive]
26067    #[doc = "Status of the supply request."]
26068    pub status: Option<Box<terminology::SupplyrequestStatus>>,
26069    #[doc = "Category of supply, e.g.  central, non-stock, etc. This is used to support work flows associated with the supply process."]
26070    pub category: Option<Box<CodeableConcept>>,
26071    #[primitive]
26072    #[doc = "Indicates how quickly this SupplyRequest should be addressed with respect to other requests."]
26073    pub priority: Option<Box<terminology::RequestPriority>>,
26074    # [type_choice_variants (complex = ["itemCodeableConcept" , "itemReference"] , primitive = [])]
26075    #[doc = "The item that is requested to be supplied. This is either a link to a resource representing the details of the item or a code that identifies the item from a known list."]
26076    pub item: SupplyRequestItemTypeChoice,
26077    #[doc = "The amount that is being ordered of the indicated item."]
26078    pub quantity: Box<Quantity>,
26079    #[doc = "Specific parameters for the ordered item.  For example, the size of the indicated item."]
26080    pub parameter: Option<Vec<SupplyRequestParameter>>,
26081    # [type_choice_variants (complex = ["occurrencePeriod" , "occurrenceTiming"] , primitive = ["occurrenceDateTime"])]
26082    #[doc = "When the request should be fulfilled."]
26083    pub occurrence: Option<SupplyRequestOccurrenceTypeChoice>,
26084    #[primitive]
26085    #[doc = "When the request was made."]
26086    pub authoredOn: Option<Box<FHIRDateTime>>,
26087    # [reference (targets = ["Practitioner" , "PractitionerRole" , "Organization" , "Patient" , "RelatedPerson" , "Device"])]
26088    #[doc = "The device, practitioner, etc. who initiated the request."]
26089    pub requester: Option<Box<Reference>>,
26090    # [reference (targets = ["Organization" , "HealthcareService"])]
26091    #[doc = "Who is intended to fulfill the request."]
26092    pub supplier: Option<Vec<Box<Reference>>>,
26093    #[doc = "The reason why the supply item was requested."]
26094    pub reasonCode: Option<Vec<Box<CodeableConcept>>>,
26095    # [reference (targets = ["Condition" , "Observation" , "DiagnosticReport" , "DocumentReference"])]
26096    #[doc = "The reason why the supply item was requested."]
26097    pub reasonReference: Option<Vec<Box<Reference>>>,
26098    # [reference (targets = ["Organization" , "Location"])]
26099    #[doc = "Where the supply is expected to come from."]
26100    pub deliverFrom: Option<Box<Reference>>,
26101    # [reference (targets = ["Organization" , "Location" , "Patient"])]
26102    #[doc = "Where the supply is destined to go."]
26103    pub deliverTo: Option<Box<Reference>>,
26104}
26105#[derive(
26106    Clone,
26107    Reflect,
26108    Debug,
26109    Default,
26110    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
26111    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
26112)]
26113#[fhir_serialize_type = "complex"]
26114#[doc = "If the Task.focus is a request resource and the task is seeking fulfillment (i.e. is asking for the request to be actioned), this element identifies any limitations on what parts of the referenced request should be actioned."]
26115pub struct TaskRestriction {
26116    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
26117    pub id: Option<String>,
26118    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
26119    pub extension: Option<Vec<Box<Extension>>>,
26120    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
26121    pub modifierExtension: Option<Vec<Box<Extension>>>,
26122    #[primitive]
26123    #[doc = "Indicates the number of times the requested action should occur."]
26124    pub repetitions: Option<Box<FHIRPositiveInt>>,
26125    #[doc = "Over what time-period is fulfillment sought."]
26126    pub period: Option<Box<Period>>,
26127    # [reference (targets = ["Patient" , "Practitioner" , "PractitionerRole" , "RelatedPerson" , "Group" , "Organization"])]
26128    #[doc = "For requests that are targeted to more than on potential recipient/target, for whom is fulfillment sought?"]
26129    pub recipient: Option<Vec<Box<Reference>>>,
26130}
26131#[derive(
26132    Clone,
26133    Reflect,
26134    Debug,
26135    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
26136    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
26137)]
26138#[fhir_serialize_type = "typechoice"]
26139#[type_choice_field_name = "value"]
26140pub enum TaskInputValueTypeChoice {
26141    Base64Binary(Box<FHIRBase64Binary>),
26142    Boolean(Box<FHIRBoolean>),
26143    Canonical(Box<FHIRCanonical>),
26144    Code(Box<FHIRCode>),
26145    Date(Box<FHIRDate>),
26146    DateTime(Box<FHIRDateTime>),
26147    Decimal(Box<FHIRDecimal>),
26148    Id(Box<FHIRId>),
26149    Instant(Box<FHIRInstant>),
26150    Integer(Box<FHIRInteger>),
26151    Markdown(Box<FHIRMarkdown>),
26152    Oid(Box<FHIROid>),
26153    PositiveInt(Box<FHIRPositiveInt>),
26154    String(Box<FHIRString>),
26155    Time(Box<FHIRTime>),
26156    UnsignedInt(Box<FHIRUnsignedInt>),
26157    Uri(Box<FHIRUri>),
26158    Url(Box<FHIRUrl>),
26159    Uuid(Box<FHIRUuid>),
26160    Address(Box<Address>),
26161    Age(Box<Age>),
26162    Annotation(Box<Annotation>),
26163    Attachment(Box<Attachment>),
26164    CodeableConcept(Box<CodeableConcept>),
26165    Coding(Box<Coding>),
26166    ContactPoint(Box<ContactPoint>),
26167    Count(Box<Count>),
26168    Distance(Box<Distance>),
26169    Duration(Box<Duration>),
26170    HumanName(Box<HumanName>),
26171    Identifier(Box<Identifier>),
26172    Money(Box<Money>),
26173    Period(Box<Period>),
26174    Quantity(Box<Quantity>),
26175    Range(Box<Range>),
26176    Ratio(Box<Ratio>),
26177    Reference(Box<Reference>),
26178    SampledData(Box<SampledData>),
26179    Signature(Box<Signature>),
26180    Timing(Box<Timing>),
26181    ContactDetail(Box<ContactDetail>),
26182    Contributor(Box<Contributor>),
26183    DataRequirement(Box<DataRequirement>),
26184    Expression(Box<Expression>),
26185    ParameterDefinition(Box<ParameterDefinition>),
26186    RelatedArtifact(Box<RelatedArtifact>),
26187    TriggerDefinition(Box<TriggerDefinition>),
26188    UsageContext(Box<UsageContext>),
26189    Dosage(Box<Dosage>),
26190    Meta(Box<Meta>),
26191}
26192impl Default for TaskInputValueTypeChoice {
26193    fn default() -> Self {
26194        TaskInputValueTypeChoice::Base64Binary(Box::new(Default::default()))
26195    }
26196}
26197#[derive(
26198    Clone,
26199    Reflect,
26200    Debug,
26201    Default,
26202    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
26203    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
26204)]
26205#[fhir_serialize_type = "complex"]
26206#[doc = "Additional information that may be needed in the execution of the task."]
26207pub struct TaskInput {
26208    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
26209    pub id: Option<String>,
26210    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
26211    pub extension: Option<Vec<Box<Extension>>>,
26212    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
26213    pub modifierExtension: Option<Vec<Box<Extension>>>,
26214    #[rename_field = "type"]
26215    #[doc = "A code or description indicating how the input is intended to be used as part of the task execution."]
26216    pub type_: Box<CodeableConcept>,
26217    # [type_choice_variants (complex = ["valueAddress" , "valueAge" , "valueAnnotation" , "valueAttachment" , "valueCodeableConcept" , "valueCoding" , "valueContactPoint" , "valueCount" , "valueDistance" , "valueDuration" , "valueHumanName" , "valueIdentifier" , "valueMoney" , "valuePeriod" , "valueQuantity" , "valueRange" , "valueRatio" , "valueReference" , "valueSampledData" , "valueSignature" , "valueTiming" , "valueContactDetail" , "valueContributor" , "valueDataRequirement" , "valueExpression" , "valueParameterDefinition" , "valueRelatedArtifact" , "valueTriggerDefinition" , "valueUsageContext" , "valueDosage" , "valueMeta"] , primitive = ["valueBase64Binary" , "valueBoolean" , "valueCanonical" , "valueCode" , "valueDate" , "valueDateTime" , "valueDecimal" , "valueId" , "valueInstant" , "valueInteger" , "valueMarkdown" , "valueOid" , "valuePositiveInt" , "valueString" , "valueTime" , "valueUnsignedInt" , "valueUri" , "valueUrl" , "valueUuid"])]
26218    #[doc = "The value of the input parameter as a basic type."]
26219    pub value: TaskInputValueTypeChoice,
26220}
26221#[derive(
26222    Clone,
26223    Reflect,
26224    Debug,
26225    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
26226    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
26227)]
26228#[fhir_serialize_type = "typechoice"]
26229#[type_choice_field_name = "value"]
26230pub enum TaskOutputValueTypeChoice {
26231    Base64Binary(Box<FHIRBase64Binary>),
26232    Boolean(Box<FHIRBoolean>),
26233    Canonical(Box<FHIRCanonical>),
26234    Code(Box<FHIRCode>),
26235    Date(Box<FHIRDate>),
26236    DateTime(Box<FHIRDateTime>),
26237    Decimal(Box<FHIRDecimal>),
26238    Id(Box<FHIRId>),
26239    Instant(Box<FHIRInstant>),
26240    Integer(Box<FHIRInteger>),
26241    Markdown(Box<FHIRMarkdown>),
26242    Oid(Box<FHIROid>),
26243    PositiveInt(Box<FHIRPositiveInt>),
26244    String(Box<FHIRString>),
26245    Time(Box<FHIRTime>),
26246    UnsignedInt(Box<FHIRUnsignedInt>),
26247    Uri(Box<FHIRUri>),
26248    Url(Box<FHIRUrl>),
26249    Uuid(Box<FHIRUuid>),
26250    Address(Box<Address>),
26251    Age(Box<Age>),
26252    Annotation(Box<Annotation>),
26253    Attachment(Box<Attachment>),
26254    CodeableConcept(Box<CodeableConcept>),
26255    Coding(Box<Coding>),
26256    ContactPoint(Box<ContactPoint>),
26257    Count(Box<Count>),
26258    Distance(Box<Distance>),
26259    Duration(Box<Duration>),
26260    HumanName(Box<HumanName>),
26261    Identifier(Box<Identifier>),
26262    Money(Box<Money>),
26263    Period(Box<Period>),
26264    Quantity(Box<Quantity>),
26265    Range(Box<Range>),
26266    Ratio(Box<Ratio>),
26267    Reference(Box<Reference>),
26268    SampledData(Box<SampledData>),
26269    Signature(Box<Signature>),
26270    Timing(Box<Timing>),
26271    ContactDetail(Box<ContactDetail>),
26272    Contributor(Box<Contributor>),
26273    DataRequirement(Box<DataRequirement>),
26274    Expression(Box<Expression>),
26275    ParameterDefinition(Box<ParameterDefinition>),
26276    RelatedArtifact(Box<RelatedArtifact>),
26277    TriggerDefinition(Box<TriggerDefinition>),
26278    UsageContext(Box<UsageContext>),
26279    Dosage(Box<Dosage>),
26280    Meta(Box<Meta>),
26281}
26282impl Default for TaskOutputValueTypeChoice {
26283    fn default() -> Self {
26284        TaskOutputValueTypeChoice::Base64Binary(Box::new(Default::default()))
26285    }
26286}
26287#[derive(
26288    Clone,
26289    Reflect,
26290    Debug,
26291    Default,
26292    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
26293    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
26294)]
26295#[fhir_serialize_type = "complex"]
26296#[doc = "Outputs produced by the Task."]
26297pub struct TaskOutput {
26298    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
26299    pub id: Option<String>,
26300    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
26301    pub extension: Option<Vec<Box<Extension>>>,
26302    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
26303    pub modifierExtension: Option<Vec<Box<Extension>>>,
26304    #[rename_field = "type"]
26305    #[doc = "The name of the Output parameter."]
26306    pub type_: Box<CodeableConcept>,
26307    # [type_choice_variants (complex = ["valueAddress" , "valueAge" , "valueAnnotation" , "valueAttachment" , "valueCodeableConcept" , "valueCoding" , "valueContactPoint" , "valueCount" , "valueDistance" , "valueDuration" , "valueHumanName" , "valueIdentifier" , "valueMoney" , "valuePeriod" , "valueQuantity" , "valueRange" , "valueRatio" , "valueReference" , "valueSampledData" , "valueSignature" , "valueTiming" , "valueContactDetail" , "valueContributor" , "valueDataRequirement" , "valueExpression" , "valueParameterDefinition" , "valueRelatedArtifact" , "valueTriggerDefinition" , "valueUsageContext" , "valueDosage" , "valueMeta"] , primitive = ["valueBase64Binary" , "valueBoolean" , "valueCanonical" , "valueCode" , "valueDate" , "valueDateTime" , "valueDecimal" , "valueId" , "valueInstant" , "valueInteger" , "valueMarkdown" , "valueOid" , "valuePositiveInt" , "valueString" , "valueTime" , "valueUnsignedInt" , "valueUri" , "valueUrl" , "valueUuid"])]
26308    #[doc = "The value of the Output parameter as a basic type."]
26309    pub value: TaskOutputValueTypeChoice,
26310}
26311#[derive(
26312    Clone,
26313    Reflect,
26314    Debug,
26315    Default,
26316    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
26317    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
26318)]
26319#[fhir_serialize_type = "resource"]
26320#[doc = "A task to be performed."]
26321pub struct Task {
26322    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
26323    pub id: Option<String>,
26324    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
26325    pub meta: Option<Box<Meta>>,
26326    #[primitive]
26327    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
26328    pub implicitRules: Option<Box<FHIRUri>>,
26329    #[primitive]
26330    #[doc = "The base language in which the resource is written."]
26331    pub language: Option<Box<FHIRCode>>,
26332    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
26333    pub text: Option<Box<Narrative>>,
26334    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
26335    pub contained: Option<Vec<Box<Resource>>>,
26336    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
26337    pub extension: Option<Vec<Box<Extension>>>,
26338    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
26339    pub modifierExtension: Option<Vec<Box<Extension>>>,
26340    #[rename_field = "identifier"]
26341    #[doc = "The business identifier for this task."]
26342    pub identifier_: Option<Vec<Box<Identifier>>>,
26343    #[primitive]
26344    #[doc = "The URL pointing to a *FHIR*-defined protocol, guideline, orderset or other definition that is adhered to in whole or in part by this Task."]
26345    pub instantiatesCanonical: Option<Box<FHIRCanonical>>,
26346    #[primitive]
26347    #[doc = "The URL pointing to an *externally* maintained  protocol, guideline, orderset or other definition that is adhered to in whole or in part by this Task."]
26348    pub instantiatesUri: Option<Box<FHIRUri>>,
26349    # [reference (targets = ["Resource"])]
26350    #[doc = "BasedOn refers to a higher-level authorization that triggered the creation of the task.  It references a \"request\" resource such as a ServiceRequest, MedicationRequest, ServiceRequest, CarePlan, etc. which is distinct from the \"request\" resource the task is seeking to fulfill.  This latter resource is referenced by FocusOn.  For example, based on a ServiceRequest (= BasedOn), a task is created to fulfill a procedureRequest ( = FocusOn ) to collect a specimen from a patient."]
26351    pub basedOn: Option<Vec<Box<Reference>>>,
26352    #[doc = "An identifier that links together multiple tasks and other requests that were created in the same context."]
26353    pub groupIdentifier: Option<Box<Identifier>>,
26354    # [reference (targets = ["Task"])]
26355    #[doc = "Task that this particular task is part of."]
26356    pub partOf: Option<Vec<Box<Reference>>>,
26357    #[primitive]
26358    #[doc = "The current status of the task."]
26359    pub status: Box<terminology::TaskStatus>,
26360    #[doc = "An explanation as to why this task is held, failed, was refused, etc."]
26361    pub statusReason: Option<Box<CodeableConcept>>,
26362    #[doc = "Contains business-specific nuances of the business state."]
26363    pub businessStatus: Option<Box<CodeableConcept>>,
26364    #[primitive]
26365    #[doc = "Indicates the \"level\" of actionability associated with the Task, i.e. i+R[9]Cs this a proposed task, a planned task, an actionable task, etc."]
26366    pub intent: Box<terminology::TaskIntent>,
26367    #[primitive]
26368    #[doc = "Indicates how quickly the Task should be addressed with respect to other requests."]
26369    pub priority: Option<Box<terminology::RequestPriority>>,
26370    #[doc = "A name or code (or both) briefly describing what the task involves."]
26371    pub code: Option<Box<CodeableConcept>>,
26372    #[primitive]
26373    #[doc = "A free-text description of what is to be performed."]
26374    pub description: Option<Box<FHIRString>>,
26375    # [reference (targets = ["Resource"])]
26376    #[doc = "The request being actioned or the resource being manipulated by this task."]
26377    pub focus: Option<Box<Reference>>,
26378    #[rename_field = "for"]
26379    # [reference (targets = ["Resource"])]
26380    #[doc = "The entity who benefits from the performance of the service specified in the task (e.g., the patient)."]
26381    pub for_: Option<Box<Reference>>,
26382    # [reference (targets = ["Encounter"])]
26383    #[doc = "The healthcare event  (e.g. a patient and healthcare provider interaction) during which this task was created."]
26384    pub encounter: Option<Box<Reference>>,
26385    #[doc = "Identifies the time action was first taken against the task (start) and/or the time final action was taken against the task prior to marking it as completed (end)."]
26386    pub executionPeriod: Option<Box<Period>>,
26387    #[primitive]
26388    #[doc = "The date and time this task was created."]
26389    pub authoredOn: Option<Box<FHIRDateTime>>,
26390    #[primitive]
26391    #[doc = "The date and time of last modification to this task."]
26392    pub lastModified: Option<Box<FHIRDateTime>>,
26393    # [reference (targets = ["Device" , "Organization" , "Patient" , "Practitioner" , "PractitionerRole" , "RelatedPerson"])]
26394    #[doc = "The creator of the task."]
26395    pub requester: Option<Box<Reference>>,
26396    #[doc = "The kind of participant that should perform the task."]
26397    pub performerType: Option<Vec<Box<CodeableConcept>>>,
26398    # [reference (targets = ["Practitioner" , "PractitionerRole" , "Organization" , "CareTeam" , "HealthcareService" , "Patient" , "Device" , "RelatedPerson"])]
26399    #[doc = "Individual organization or Device currently responsible for task execution."]
26400    pub owner: Option<Box<Reference>>,
26401    # [reference (targets = ["Location"])]
26402    #[doc = "Principal physical location where the this task is performed."]
26403    pub location: Option<Box<Reference>>,
26404    #[doc = "A description or code indicating why this task needs to be performed."]
26405    pub reasonCode: Option<Box<CodeableConcept>>,
26406    # [reference (targets = ["Resource"])]
26407    #[doc = "A resource reference indicating why this task needs to be performed."]
26408    pub reasonReference: Option<Box<Reference>>,
26409    # [reference (targets = ["Coverage" , "ClaimResponse"])]
26410    #[doc = "Insurance plans, coverage extensions, pre-authorizations and/or pre-determinations that may be relevant to the Task."]
26411    pub insurance: Option<Vec<Box<Reference>>>,
26412    #[doc = "Free-text information captured about the task as it progresses."]
26413    pub note: Option<Vec<Box<Annotation>>>,
26414    # [reference (targets = ["Provenance"])]
26415    #[doc = "Links to Provenance records for past versions of this Task that identify key state transitions or updates that are likely to be relevant to a user looking at the current version of the task."]
26416    pub relevantHistory: Option<Vec<Box<Reference>>>,
26417    #[doc = "If the Task.focus is a request resource and the task is seeking fulfillment (i.e. is asking for the request to be actioned), this element identifies any limitations on what parts of the referenced request should be actioned."]
26418    pub restriction: Option<TaskRestriction>,
26419    #[doc = "Additional information that may be needed in the execution of the task."]
26420    pub input: Option<Vec<TaskInput>>,
26421    #[doc = "Outputs produced by the Task."]
26422    pub output: Option<Vec<TaskOutput>>,
26423}
26424#[derive(
26425    Clone,
26426    Reflect,
26427    Debug,
26428    Default,
26429    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
26430    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
26431)]
26432#[fhir_serialize_type = "complex"]
26433#[doc = "Software that is covered by this terminology capability statement.  It is used when the statement describes the capabilities of a particular software version, independent of an installation."]
26434pub struct TerminologyCapabilitiesSoftware {
26435    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
26436    pub id: Option<String>,
26437    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
26438    pub extension: Option<Vec<Box<Extension>>>,
26439    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
26440    pub modifierExtension: Option<Vec<Box<Extension>>>,
26441    #[primitive]
26442    #[doc = "Name the software is known by."]
26443    pub name: Box<FHIRString>,
26444    #[primitive]
26445    #[doc = "The version identifier for the software covered by this statement."]
26446    pub version: Option<Box<FHIRString>>,
26447}
26448#[derive(
26449    Clone,
26450    Reflect,
26451    Debug,
26452    Default,
26453    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
26454    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
26455)]
26456#[fhir_serialize_type = "complex"]
26457#[doc = "Identifies a specific implementation instance that is described by the terminology capability statement - i.e. a particular installation, rather than the capabilities of a software program."]
26458pub struct TerminologyCapabilitiesImplementation {
26459    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
26460    pub id: Option<String>,
26461    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
26462    pub extension: Option<Vec<Box<Extension>>>,
26463    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
26464    pub modifierExtension: Option<Vec<Box<Extension>>>,
26465    #[primitive]
26466    #[doc = "Information about the specific installation that this terminology capability statement relates to."]
26467    pub description: Box<FHIRString>,
26468    #[primitive]
26469    #[doc = "An absolute base URL for the implementation."]
26470    pub url: Option<Box<FHIRUrl>>,
26471}
26472#[derive(
26473    Clone,
26474    Reflect,
26475    Debug,
26476    Default,
26477    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
26478    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
26479)]
26480#[fhir_serialize_type = "complex"]
26481#[doc = "Filter Properties supported."]
26482pub struct TerminologyCapabilitiesCodeSystemVersionFilter {
26483    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
26484    pub id: Option<String>,
26485    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
26486    pub extension: Option<Vec<Box<Extension>>>,
26487    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
26488    pub modifierExtension: Option<Vec<Box<Extension>>>,
26489    #[primitive]
26490    #[doc = "Code of the property supported."]
26491    pub code: Box<FHIRCode>,
26492    #[primitive]
26493    #[cardinality(min = 1usize)]
26494    #[doc = "Operations supported for the property."]
26495    pub op: Vec<Box<FHIRCode>>,
26496}
26497#[derive(
26498    Clone,
26499    Reflect,
26500    Debug,
26501    Default,
26502    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
26503    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
26504)]
26505#[fhir_serialize_type = "complex"]
26506#[doc = "For the code system, a list of versions that are supported by the server."]
26507pub struct TerminologyCapabilitiesCodeSystemVersion {
26508    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
26509    pub id: Option<String>,
26510    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
26511    pub extension: Option<Vec<Box<Extension>>>,
26512    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
26513    pub modifierExtension: Option<Vec<Box<Extension>>>,
26514    #[primitive]
26515    #[doc = "For version-less code systems, there should be a single version with no identifier."]
26516    pub code: Option<Box<FHIRString>>,
26517    #[primitive]
26518    #[doc = "If this is the default version for this code system."]
26519    pub isDefault: Option<Box<FHIRBoolean>>,
26520    #[primitive]
26521    #[doc = "If the compositional grammar defined by the code system is supported."]
26522    pub compositional: Option<Box<FHIRBoolean>>,
26523    #[primitive]
26524    #[doc = "Language Displays supported."]
26525    pub language: Option<Vec<Box<FHIRCode>>>,
26526    #[doc = "Filter Properties supported."]
26527    pub filter: Option<Vec<TerminologyCapabilitiesCodeSystemVersionFilter>>,
26528    #[primitive]
26529    #[doc = "Properties supported for $lookup."]
26530    pub property: Option<Vec<Box<FHIRCode>>>,
26531}
26532#[derive(
26533    Clone,
26534    Reflect,
26535    Debug,
26536    Default,
26537    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
26538    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
26539)]
26540#[fhir_serialize_type = "complex"]
26541#[doc = "Identifies a code system that is supported by the server. If there is a no code system URL, then this declares the general assumptions a client can make about support for any CodeSystem resource."]
26542pub struct TerminologyCapabilitiesCodeSystem {
26543    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
26544    pub id: Option<String>,
26545    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
26546    pub extension: Option<Vec<Box<Extension>>>,
26547    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
26548    pub modifierExtension: Option<Vec<Box<Extension>>>,
26549    #[primitive]
26550    #[doc = "URI for the Code System."]
26551    pub uri: Option<Box<FHIRCanonical>>,
26552    #[doc = "For the code system, a list of versions that are supported by the server."]
26553    pub version: Option<Vec<TerminologyCapabilitiesCodeSystemVersion>>,
26554    #[primitive]
26555    #[doc = "True if subsumption is supported for this version of the code system."]
26556    pub subsumption: Option<Box<FHIRBoolean>>,
26557}
26558#[derive(
26559    Clone,
26560    Reflect,
26561    Debug,
26562    Default,
26563    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
26564    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
26565)]
26566#[fhir_serialize_type = "complex"]
26567#[doc = "Supported expansion parameter."]
26568pub struct TerminologyCapabilitiesExpansionParameter {
26569    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
26570    pub id: Option<String>,
26571    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
26572    pub extension: Option<Vec<Box<Extension>>>,
26573    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
26574    pub modifierExtension: Option<Vec<Box<Extension>>>,
26575    #[primitive]
26576    #[doc = "Expansion Parameter name."]
26577    pub name: Box<FHIRCode>,
26578    #[primitive]
26579    #[doc = "Description of support for parameter."]
26580    pub documentation: Option<Box<FHIRString>>,
26581}
26582#[derive(
26583    Clone,
26584    Reflect,
26585    Debug,
26586    Default,
26587    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
26588    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
26589)]
26590#[fhir_serialize_type = "complex"]
26591#[doc = "Information about the [ValueSet/$expand](valueset-operation-expand.html) operation."]
26592pub struct TerminologyCapabilitiesExpansion {
26593    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
26594    pub id: Option<String>,
26595    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
26596    pub extension: Option<Vec<Box<Extension>>>,
26597    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
26598    pub modifierExtension: Option<Vec<Box<Extension>>>,
26599    #[primitive]
26600    #[doc = "Whether the server can return nested value sets."]
26601    pub hierarchical: Option<Box<FHIRBoolean>>,
26602    #[primitive]
26603    #[doc = "Whether the server supports paging on expansion."]
26604    pub paging: Option<Box<FHIRBoolean>>,
26605    #[primitive]
26606    #[doc = "Allow request for incomplete expansions?"]
26607    pub incomplete: Option<Box<FHIRBoolean>>,
26608    #[doc = "Supported expansion parameter."]
26609    pub parameter: Option<Vec<TerminologyCapabilitiesExpansionParameter>>,
26610    #[primitive]
26611    #[doc = "Documentation about text searching works."]
26612    pub textFilter: Option<Box<FHIRMarkdown>>,
26613}
26614#[derive(
26615    Clone,
26616    Reflect,
26617    Debug,
26618    Default,
26619    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
26620    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
26621)]
26622#[fhir_serialize_type = "complex"]
26623#[doc = "Information about the [ValueSet/$validate-code](valueset-operation-validate-code.html) operation."]
26624pub struct TerminologyCapabilitiesValidateCode {
26625    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
26626    pub id: Option<String>,
26627    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
26628    pub extension: Option<Vec<Box<Extension>>>,
26629    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
26630    pub modifierExtension: Option<Vec<Box<Extension>>>,
26631    #[primitive]
26632    #[doc = "Whether translations are validated."]
26633    pub translations: Box<FHIRBoolean>,
26634}
26635#[derive(
26636    Clone,
26637    Reflect,
26638    Debug,
26639    Default,
26640    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
26641    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
26642)]
26643#[fhir_serialize_type = "complex"]
26644#[doc = "Information about the [ConceptMap/$translate](conceptmap-operation-translate.html) operation."]
26645pub struct TerminologyCapabilitiesTranslation {
26646    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
26647    pub id: Option<String>,
26648    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
26649    pub extension: Option<Vec<Box<Extension>>>,
26650    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
26651    pub modifierExtension: Option<Vec<Box<Extension>>>,
26652    #[primitive]
26653    #[doc = "Whether the client must identify the map."]
26654    pub needsMap: Box<FHIRBoolean>,
26655}
26656#[derive(
26657    Clone,
26658    Reflect,
26659    Debug,
26660    Default,
26661    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
26662    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
26663)]
26664#[fhir_serialize_type = "complex"]
26665#[doc = "Whether the $closure operation is supported."]
26666pub struct TerminologyCapabilitiesClosure {
26667    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
26668    pub id: Option<String>,
26669    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
26670    pub extension: Option<Vec<Box<Extension>>>,
26671    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
26672    pub modifierExtension: Option<Vec<Box<Extension>>>,
26673    #[primitive]
26674    #[doc = "If cross-system closure is supported."]
26675    pub translation: Option<Box<FHIRBoolean>>,
26676}
26677#[derive(
26678    Clone,
26679    Reflect,
26680    Debug,
26681    Default,
26682    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
26683    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
26684)]
26685#[fhir_serialize_type = "resource"]
26686#[doc = "A TerminologyCapabilities resource documents a set of capabilities (behaviors) of a FHIR Terminology Server that may be used as a statement of actual server functionality or a statement of required or desired server implementation."]
26687pub struct TerminologyCapabilities {
26688    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
26689    pub id: Option<String>,
26690    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
26691    pub meta: Option<Box<Meta>>,
26692    #[primitive]
26693    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
26694    pub implicitRules: Option<Box<FHIRUri>>,
26695    #[primitive]
26696    #[doc = "The base language in which the resource is written."]
26697    pub language: Option<Box<FHIRCode>>,
26698    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
26699    pub text: Option<Box<Narrative>>,
26700    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
26701    pub contained: Option<Vec<Box<Resource>>>,
26702    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
26703    pub extension: Option<Vec<Box<Extension>>>,
26704    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
26705    pub modifierExtension: Option<Vec<Box<Extension>>>,
26706    #[primitive]
26707    #[doc = "An absolute URI that is used to identify this terminology capabilities when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this terminology capabilities is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the terminology capabilities is stored on different servers."]
26708    pub url: Option<Box<FHIRUri>>,
26709    #[primitive]
26710    #[doc = "The identifier that is used to identify this version of the terminology capabilities when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the terminology capabilities author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence."]
26711    pub version: Option<Box<FHIRString>>,
26712    #[primitive]
26713    #[doc = "A natural language name identifying the terminology capabilities. This name should be usable as an identifier for the module by machine processing applications such as code generation."]
26714    pub name: Option<Box<FHIRString>>,
26715    #[primitive]
26716    #[doc = "A short, descriptive, user-friendly title for the terminology capabilities."]
26717    pub title: Option<Box<FHIRString>>,
26718    #[primitive]
26719    #[doc = "The status of this terminology capabilities. Enables tracking the life-cycle of the content."]
26720    pub status: Box<terminology::PublicationStatus>,
26721    #[primitive]
26722    #[doc = "A Boolean value to indicate that this terminology capabilities is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage."]
26723    pub experimental: Option<Box<FHIRBoolean>>,
26724    #[primitive]
26725    #[doc = "The date  (and optionally time) when the terminology capabilities was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the terminology capabilities changes."]
26726    pub date: Box<FHIRDateTime>,
26727    #[primitive]
26728    #[doc = "The name of the organization or individual that published the terminology capabilities."]
26729    pub publisher: Option<Box<FHIRString>>,
26730    #[doc = "Contact details to assist a user in finding and communicating with the publisher."]
26731    pub contact: Option<Vec<Box<ContactDetail>>>,
26732    #[primitive]
26733    #[doc = "A free text natural language description of the terminology capabilities from a consumer's perspective. Typically, this is used when the capability statement describes a desired rather than an actual solution, for example as a formal expression of requirements as part of an RFP."]
26734    pub description: Option<Box<FHIRMarkdown>>,
26735    #[doc = "The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate terminology capabilities instances."]
26736    pub useContext: Option<Vec<Box<UsageContext>>>,
26737    #[doc = "A legal or geographic region in which the terminology capabilities is intended to be used."]
26738    pub jurisdiction: Option<Vec<Box<CodeableConcept>>>,
26739    #[primitive]
26740    #[doc = "Explanation of why this terminology capabilities is needed and why it has been designed as it has."]
26741    pub purpose: Option<Box<FHIRMarkdown>>,
26742    #[primitive]
26743    #[doc = "A copyright statement relating to the terminology capabilities and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the terminology capabilities."]
26744    pub copyright: Option<Box<FHIRMarkdown>>,
26745    #[primitive]
26746    #[doc = "The way that this statement is intended to be used, to describe an actual running instance of software, a particular product (kind, not instance of software) or a class of implementation (e.g. a desired purchase)."]
26747    pub kind: Box<terminology::CapabilityStatementKind>,
26748    #[doc = "Software that is covered by this terminology capability statement.  It is used when the statement describes the capabilities of a particular software version, independent of an installation."]
26749    pub software: Option<TerminologyCapabilitiesSoftware>,
26750    #[doc = "Identifies a specific implementation instance that is described by the terminology capability statement - i.e. a particular installation, rather than the capabilities of a software program."]
26751    pub implementation: Option<TerminologyCapabilitiesImplementation>,
26752    #[primitive]
26753    #[doc = "Whether the server supports lockedDate."]
26754    pub lockedDate: Option<Box<FHIRBoolean>>,
26755    #[doc = "Identifies a code system that is supported by the server. If there is a no code system URL, then this declares the general assumptions a client can make about support for any CodeSystem resource."]
26756    pub codeSystem: Option<Vec<TerminologyCapabilitiesCodeSystem>>,
26757    #[doc = "Information about the [ValueSet/$expand](valueset-operation-expand.html) operation."]
26758    pub expansion: Option<TerminologyCapabilitiesExpansion>,
26759    #[primitive]
26760    #[doc = "The degree to which the server supports the code search parameter on ValueSet, if it is supported."]
26761    pub codeSearch: Option<Box<terminology::CodeSearchSupport>>,
26762    #[doc = "Information about the [ValueSet/$validate-code](valueset-operation-validate-code.html) operation."]
26763    pub validateCode: Option<TerminologyCapabilitiesValidateCode>,
26764    #[doc = "Information about the [ConceptMap/$translate](conceptmap-operation-translate.html) operation."]
26765    pub translation: Option<TerminologyCapabilitiesTranslation>,
26766    #[doc = "Whether the $closure operation is supported."]
26767    pub closure: Option<TerminologyCapabilitiesClosure>,
26768}
26769#[derive(
26770    Clone,
26771    Reflect,
26772    Debug,
26773    Default,
26774    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
26775    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
26776)]
26777#[fhir_serialize_type = "complex"]
26778#[doc = "A participant in the test execution, either the execution engine, a client, or a server."]
26779pub struct TestReportParticipant {
26780    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
26781    pub id: Option<String>,
26782    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
26783    pub extension: Option<Vec<Box<Extension>>>,
26784    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
26785    pub modifierExtension: Option<Vec<Box<Extension>>>,
26786    #[rename_field = "type"]
26787    #[primitive]
26788    #[doc = "The type of participant."]
26789    pub type_: Box<terminology::ReportParticipantType>,
26790    #[primitive]
26791    #[doc = "The uri of the participant. An absolute URL is preferred."]
26792    pub uri: Box<FHIRUri>,
26793    #[primitive]
26794    #[doc = "The display name of the participant."]
26795    pub display: Option<Box<FHIRString>>,
26796}
26797#[derive(
26798    Clone,
26799    Reflect,
26800    Debug,
26801    Default,
26802    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
26803    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
26804)]
26805#[fhir_serialize_type = "complex"]
26806#[doc = "The operation performed."]
26807pub struct TestReportSetupActionOperation {
26808    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
26809    pub id: Option<String>,
26810    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
26811    pub extension: Option<Vec<Box<Extension>>>,
26812    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
26813    pub modifierExtension: Option<Vec<Box<Extension>>>,
26814    #[primitive]
26815    #[doc = "The result of this operation."]
26816    pub result: Box<terminology::ReportActionResultCodes>,
26817    #[primitive]
26818    #[doc = "An explanatory message associated with the result."]
26819    pub message: Option<Box<FHIRMarkdown>>,
26820    #[primitive]
26821    #[doc = "A link to further details on the result."]
26822    pub detail: Option<Box<FHIRUri>>,
26823}
26824#[derive(
26825    Clone,
26826    Reflect,
26827    Debug,
26828    Default,
26829    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
26830    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
26831)]
26832#[fhir_serialize_type = "complex"]
26833#[doc = "The results of the assertion performed on the previous operations."]
26834pub struct TestReportSetupActionAssert {
26835    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
26836    pub id: Option<String>,
26837    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
26838    pub extension: Option<Vec<Box<Extension>>>,
26839    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
26840    pub modifierExtension: Option<Vec<Box<Extension>>>,
26841    #[primitive]
26842    #[doc = "The result of this assertion."]
26843    pub result: Box<terminology::ReportActionResultCodes>,
26844    #[primitive]
26845    #[doc = "An explanatory message associated with the result."]
26846    pub message: Option<Box<FHIRMarkdown>>,
26847    #[primitive]
26848    #[doc = "A link to further details on the result."]
26849    pub detail: Option<Box<FHIRString>>,
26850}
26851#[derive(
26852    Clone,
26853    Reflect,
26854    Debug,
26855    Default,
26856    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
26857    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
26858)]
26859#[fhir_serialize_type = "complex"]
26860#[doc = "Action would contain either an operation or an assertion."]
26861pub struct TestReportSetupAction {
26862    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
26863    pub id: Option<String>,
26864    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
26865    pub extension: Option<Vec<Box<Extension>>>,
26866    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
26867    pub modifierExtension: Option<Vec<Box<Extension>>>,
26868    #[doc = "The operation performed."]
26869    pub operation: Option<TestReportSetupActionOperation>,
26870    #[doc = "The results of the assertion performed on the previous operations."]
26871    pub assert: Option<TestReportSetupActionAssert>,
26872}
26873#[derive(
26874    Clone,
26875    Reflect,
26876    Debug,
26877    Default,
26878    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
26879    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
26880)]
26881#[fhir_serialize_type = "complex"]
26882#[doc = "The results of the series of required setup operations before the tests were executed."]
26883pub struct TestReportSetup {
26884    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
26885    pub id: Option<String>,
26886    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
26887    pub extension: Option<Vec<Box<Extension>>>,
26888    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
26889    pub modifierExtension: Option<Vec<Box<Extension>>>,
26890    #[cardinality(min = 1usize)]
26891    #[doc = "Action would contain either an operation or an assertion."]
26892    pub action: Vec<TestReportSetupAction>,
26893}
26894#[derive(
26895    Clone,
26896    Reflect,
26897    Debug,
26898    Default,
26899    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
26900    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
26901)]
26902#[fhir_serialize_type = "complex"]
26903#[doc = "Action would contain either an operation or an assertion."]
26904pub struct TestReportTestAction {
26905    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
26906    pub id: Option<String>,
26907    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
26908    pub extension: Option<Vec<Box<Extension>>>,
26909    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
26910    pub modifierExtension: Option<Vec<Box<Extension>>>,
26911    #[doc = "An operation would involve a REST request to a server."]
26912    pub operation: Option<TestReportSetupActionOperation>,
26913    #[doc = "The results of the assertion performed on the previous operations."]
26914    pub assert: Option<TestReportSetupActionAssert>,
26915}
26916#[derive(
26917    Clone,
26918    Reflect,
26919    Debug,
26920    Default,
26921    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
26922    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
26923)]
26924#[fhir_serialize_type = "complex"]
26925#[doc = "A test executed from the test script."]
26926pub struct TestReportTest {
26927    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
26928    pub id: Option<String>,
26929    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
26930    pub extension: Option<Vec<Box<Extension>>>,
26931    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
26932    pub modifierExtension: Option<Vec<Box<Extension>>>,
26933    #[primitive]
26934    #[doc = "The name of this test used for tracking/logging purposes by test engines."]
26935    pub name: Option<Box<FHIRString>>,
26936    #[primitive]
26937    #[doc = "A short description of the test used by test engines for tracking and reporting purposes."]
26938    pub description: Option<Box<FHIRString>>,
26939    #[cardinality(min = 1usize)]
26940    #[doc = "Action would contain either an operation or an assertion."]
26941    pub action: Vec<TestReportTestAction>,
26942}
26943#[derive(
26944    Clone,
26945    Reflect,
26946    Debug,
26947    Default,
26948    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
26949    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
26950)]
26951#[fhir_serialize_type = "complex"]
26952#[doc = "The teardown action will only contain an operation."]
26953pub struct TestReportTeardownAction {
26954    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
26955    pub id: Option<String>,
26956    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
26957    pub extension: Option<Vec<Box<Extension>>>,
26958    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
26959    pub modifierExtension: Option<Vec<Box<Extension>>>,
26960    #[doc = "An operation would involve a REST request to a server."]
26961    pub operation: TestReportSetupActionOperation,
26962}
26963#[derive(
26964    Clone,
26965    Reflect,
26966    Debug,
26967    Default,
26968    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
26969    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
26970)]
26971#[fhir_serialize_type = "complex"]
26972#[doc = "The results of the series of operations required to clean up after all the tests were executed (successfully or otherwise)."]
26973pub struct TestReportTeardown {
26974    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
26975    pub id: Option<String>,
26976    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
26977    pub extension: Option<Vec<Box<Extension>>>,
26978    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
26979    pub modifierExtension: Option<Vec<Box<Extension>>>,
26980    #[cardinality(min = 1usize)]
26981    #[doc = "The teardown action will only contain an operation."]
26982    pub action: Vec<TestReportTeardownAction>,
26983}
26984#[derive(
26985    Clone,
26986    Reflect,
26987    Debug,
26988    Default,
26989    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
26990    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
26991)]
26992#[fhir_serialize_type = "resource"]
26993#[doc = "A summary of information based on the results of executing a TestScript."]
26994pub struct TestReport {
26995    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
26996    pub id: Option<String>,
26997    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
26998    pub meta: Option<Box<Meta>>,
26999    #[primitive]
27000    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
27001    pub implicitRules: Option<Box<FHIRUri>>,
27002    #[primitive]
27003    #[doc = "The base language in which the resource is written."]
27004    pub language: Option<Box<FHIRCode>>,
27005    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
27006    pub text: Option<Box<Narrative>>,
27007    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
27008    pub contained: Option<Vec<Box<Resource>>>,
27009    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
27010    pub extension: Option<Vec<Box<Extension>>>,
27011    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
27012    pub modifierExtension: Option<Vec<Box<Extension>>>,
27013    #[rename_field = "identifier"]
27014    #[doc = "Identifier for the TestScript assigned for external purposes outside the context of FHIR."]
27015    pub identifier_: Option<Box<Identifier>>,
27016    #[primitive]
27017    #[doc = "A free text natural language name identifying the executed TestScript."]
27018    pub name: Option<Box<FHIRString>>,
27019    #[primitive]
27020    #[doc = "The current state of this test report."]
27021    pub status: Box<terminology::ReportStatusCodes>,
27022    # [reference (targets = ["TestScript"])]
27023    #[doc = "Ideally this is an absolute URL that is used to identify the version-specific TestScript that was executed, matching the `TestScript.url`."]
27024    pub testScript: Box<Reference>,
27025    #[primitive]
27026    #[doc = "The overall result from the execution of the TestScript."]
27027    pub result: Box<terminology::ReportResultCodes>,
27028    #[primitive]
27029    #[doc = "The final score (percentage of tests passed) resulting from the execution of the TestScript."]
27030    pub score: Option<Box<FHIRDecimal>>,
27031    #[primitive]
27032    #[doc = "Name of the tester producing this report (Organization or individual)."]
27033    pub tester: Option<Box<FHIRString>>,
27034    #[primitive]
27035    #[doc = "When the TestScript was executed and this TestReport was generated."]
27036    pub issued: Option<Box<FHIRDateTime>>,
27037    #[doc = "A participant in the test execution, either the execution engine, a client, or a server."]
27038    pub participant: Option<Vec<TestReportParticipant>>,
27039    #[doc = "The results of the series of required setup operations before the tests were executed."]
27040    pub setup: Option<TestReportSetup>,
27041    #[doc = "A test executed from the test script."]
27042    pub test: Option<Vec<TestReportTest>>,
27043    #[doc = "The results of the series of operations required to clean up after all the tests were executed (successfully or otherwise)."]
27044    pub teardown: Option<TestReportTeardown>,
27045}
27046#[derive(
27047    Clone,
27048    Reflect,
27049    Debug,
27050    Default,
27051    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
27052    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
27053)]
27054#[fhir_serialize_type = "complex"]
27055#[doc = "An abstract server used in operations within this test script in the origin element."]
27056pub struct TestScriptOrigin {
27057    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
27058    pub id: Option<String>,
27059    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
27060    pub extension: Option<Vec<Box<Extension>>>,
27061    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
27062    pub modifierExtension: Option<Vec<Box<Extension>>>,
27063    #[primitive]
27064    #[doc = "Abstract name given to an origin server in this test script.  The name is provided as a number starting at 1."]
27065    pub index: Box<FHIRInteger>,
27066    #[doc = "The type of origin profile the test system supports."]
27067    pub profile: Box<Coding>,
27068}
27069#[derive(
27070    Clone,
27071    Reflect,
27072    Debug,
27073    Default,
27074    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
27075    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
27076)]
27077#[fhir_serialize_type = "complex"]
27078#[doc = "An abstract server used in operations within this test script in the destination element."]
27079pub struct TestScriptDestination {
27080    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
27081    pub id: Option<String>,
27082    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
27083    pub extension: Option<Vec<Box<Extension>>>,
27084    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
27085    pub modifierExtension: Option<Vec<Box<Extension>>>,
27086    #[primitive]
27087    #[doc = "Abstract name given to a destination server in this test script.  The name is provided as a number starting at 1."]
27088    pub index: Box<FHIRInteger>,
27089    #[doc = "The type of destination profile the test system supports."]
27090    pub profile: Box<Coding>,
27091}
27092#[derive(
27093    Clone,
27094    Reflect,
27095    Debug,
27096    Default,
27097    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
27098    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
27099)]
27100#[fhir_serialize_type = "complex"]
27101#[doc = "A link to the FHIR specification that this test is covering."]
27102pub struct TestScriptMetadataLink {
27103    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
27104    pub id: Option<String>,
27105    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
27106    pub extension: Option<Vec<Box<Extension>>>,
27107    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
27108    pub modifierExtension: Option<Vec<Box<Extension>>>,
27109    #[primitive]
27110    #[doc = "URL to a particular requirement or feature within the FHIR specification."]
27111    pub url: Box<FHIRUri>,
27112    #[primitive]
27113    #[doc = "Short description of the link."]
27114    pub description: Option<Box<FHIRString>>,
27115}
27116#[derive(
27117    Clone,
27118    Reflect,
27119    Debug,
27120    Default,
27121    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
27122    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
27123)]
27124#[fhir_serialize_type = "complex"]
27125#[doc = "Capabilities that must exist and are assumed to function correctly on the FHIR server being tested."]
27126pub struct TestScriptMetadataCapability {
27127    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
27128    pub id: Option<String>,
27129    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
27130    pub extension: Option<Vec<Box<Extension>>>,
27131    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
27132    pub modifierExtension: Option<Vec<Box<Extension>>>,
27133    #[primitive]
27134    #[doc = "Whether or not the test execution will require the given capabilities of the server in order for this test script to execute."]
27135    pub required: Box<FHIRBoolean>,
27136    #[primitive]
27137    #[doc = "Whether or not the test execution will validate the given capabilities of the server in order for this test script to execute."]
27138    pub validated: Box<FHIRBoolean>,
27139    #[primitive]
27140    #[doc = "Description of the capabilities that this test script is requiring the server to support."]
27141    pub description: Option<Box<FHIRString>>,
27142    #[primitive]
27143    #[doc = "Which origin server these requirements apply to."]
27144    pub origin: Option<Vec<Box<FHIRInteger>>>,
27145    #[primitive]
27146    #[doc = "Which server these requirements apply to."]
27147    pub destination: Option<Box<FHIRInteger>>,
27148    #[primitive]
27149    #[doc = "Links to the FHIR specification that describes this interaction and the resources involved in more detail."]
27150    pub link: Option<Vec<Box<FHIRUri>>>,
27151    #[primitive]
27152    #[doc = "Minimum capabilities required of server for test script to execute successfully.   If server does not meet at a minimum the referenced capability statement, then all tests in this script are skipped."]
27153    pub capabilities: Box<FHIRCanonical>,
27154}
27155#[derive(
27156    Clone,
27157    Reflect,
27158    Debug,
27159    Default,
27160    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
27161    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
27162)]
27163#[fhir_serialize_type = "complex"]
27164#[doc = "The required capability must exist and are assumed to function correctly on the FHIR server being tested."]
27165pub struct TestScriptMetadata {
27166    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
27167    pub id: Option<String>,
27168    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
27169    pub extension: Option<Vec<Box<Extension>>>,
27170    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
27171    pub modifierExtension: Option<Vec<Box<Extension>>>,
27172    #[doc = "A link to the FHIR specification that this test is covering."]
27173    pub link: Option<Vec<TestScriptMetadataLink>>,
27174    #[cardinality(min = 1usize)]
27175    #[doc = "Capabilities that must exist and are assumed to function correctly on the FHIR server being tested."]
27176    pub capability: Vec<TestScriptMetadataCapability>,
27177}
27178#[derive(
27179    Clone,
27180    Reflect,
27181    Debug,
27182    Default,
27183    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
27184    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
27185)]
27186#[fhir_serialize_type = "complex"]
27187#[doc = "Fixture in the test script - by reference (uri). All fixtures are required for the test script to execute."]
27188pub struct TestScriptFixture {
27189    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
27190    pub id: Option<String>,
27191    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
27192    pub extension: Option<Vec<Box<Extension>>>,
27193    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
27194    pub modifierExtension: Option<Vec<Box<Extension>>>,
27195    #[primitive]
27196    #[doc = "Whether or not to implicitly create the fixture during setup. If true, the fixture is automatically created on each server being tested during setup, therefore no create operation is required for this fixture in the TestScript.setup section."]
27197    pub autocreate: Box<FHIRBoolean>,
27198    #[primitive]
27199    #[doc = "Whether or not to implicitly delete the fixture during teardown. If true, the fixture is automatically deleted on each server being tested during teardown, therefore no delete operation is required for this fixture in the TestScript.teardown section."]
27200    pub autodelete: Box<FHIRBoolean>,
27201    # [reference (targets = ["Resource"])]
27202    #[doc = "Reference to the resource (containing the contents of the resource needed for operations)."]
27203    pub resource: Option<Box<Reference>>,
27204}
27205#[derive(
27206    Clone,
27207    Reflect,
27208    Debug,
27209    Default,
27210    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
27211    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
27212)]
27213#[fhir_serialize_type = "complex"]
27214#[doc = "Variable is set based either on element value in response body or on header field value in the response headers."]
27215pub struct TestScriptVariable {
27216    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
27217    pub id: Option<String>,
27218    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
27219    pub extension: Option<Vec<Box<Extension>>>,
27220    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
27221    pub modifierExtension: Option<Vec<Box<Extension>>>,
27222    #[primitive]
27223    #[doc = "Descriptive name for this variable."]
27224    pub name: Box<FHIRString>,
27225    #[primitive]
27226    #[doc = "A default, hard-coded, or user-defined value for this variable."]
27227    pub defaultValue: Option<Box<FHIRString>>,
27228    #[primitive]
27229    #[doc = "A free text natural language description of the variable and its purpose."]
27230    pub description: Option<Box<FHIRString>>,
27231    #[primitive]
27232    #[doc = "The FHIRPath expression to evaluate against the fixture body. When variables are defined, only one of either expression, headerField or path must be specified."]
27233    pub expression: Option<Box<FHIRString>>,
27234    #[primitive]
27235    #[doc = "Will be used to grab the HTTP header field value from the headers that sourceId is pointing to."]
27236    pub headerField: Option<Box<FHIRString>>,
27237    #[primitive]
27238    #[doc = "Displayable text string with hint help information to the user when entering a default value."]
27239    pub hint: Option<Box<FHIRString>>,
27240    #[primitive]
27241    #[doc = "XPath or JSONPath to evaluate against the fixture body.  When variables are defined, only one of either expression, headerField or path must be specified."]
27242    pub path: Option<Box<FHIRString>>,
27243    #[primitive]
27244    #[doc = "Fixture to evaluate the XPath/JSONPath expression or the headerField  against within this variable."]
27245    pub sourceId: Option<Box<FHIRId>>,
27246}
27247#[derive(
27248    Clone,
27249    Reflect,
27250    Debug,
27251    Default,
27252    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
27253    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
27254)]
27255#[fhir_serialize_type = "complex"]
27256#[doc = "Header elements would be used to set HTTP headers."]
27257pub struct TestScriptSetupActionOperationRequestHeader {
27258    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
27259    pub id: Option<String>,
27260    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
27261    pub extension: Option<Vec<Box<Extension>>>,
27262    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
27263    pub modifierExtension: Option<Vec<Box<Extension>>>,
27264    #[primitive]
27265    #[doc = "The HTTP header field e.g. \"Accept\"."]
27266    pub field: Box<FHIRString>,
27267    #[primitive]
27268    #[doc = "The value of the header e.g. \"application/fhir+xml\"."]
27269    pub value: Box<FHIRString>,
27270}
27271#[derive(
27272    Clone,
27273    Reflect,
27274    Debug,
27275    Default,
27276    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
27277    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
27278)]
27279#[fhir_serialize_type = "complex"]
27280#[doc = "The operation to perform."]
27281pub struct TestScriptSetupActionOperation {
27282    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
27283    pub id: Option<String>,
27284    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
27285    pub extension: Option<Vec<Box<Extension>>>,
27286    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
27287    pub modifierExtension: Option<Vec<Box<Extension>>>,
27288    #[rename_field = "type"]
27289    #[doc = "Server interaction or operation type."]
27290    pub type_: Option<Box<Coding>>,
27291    #[primitive]
27292    #[doc = "The type of the resource.  See http://build.fhir.org/resourcelist.html."]
27293    pub resource: Option<Box<terminology::DefinedTypes>>,
27294    #[primitive]
27295    #[doc = "The label would be used for tracking/logging purposes by test engines."]
27296    pub label: Option<Box<FHIRString>>,
27297    #[primitive]
27298    #[doc = "The description would be used by test engines for tracking and reporting purposes."]
27299    pub description: Option<Box<FHIRString>>,
27300    #[primitive]
27301    #[doc = "The mime-type to use for RESTful operation in the 'Accept' header."]
27302    pub accept: Option<Box<FHIRCode>>,
27303    #[primitive]
27304    #[doc = "The mime-type to use for RESTful operation in the 'Content-Type' header."]
27305    pub contentType: Option<Box<FHIRCode>>,
27306    #[primitive]
27307    #[doc = "The server where the request message is destined for.  Must be one of the server numbers listed in TestScript.destination section."]
27308    pub destination: Option<Box<FHIRInteger>>,
27309    #[primitive]
27310    #[doc = "Whether or not to implicitly send the request url in encoded format. The default is true to match the standard RESTful client behavior. Set to false when communicating with a server that does not support encoded url paths."]
27311    pub encodeRequestUrl: Box<FHIRBoolean>,
27312    #[primitive]
27313    #[doc = "The HTTP method the test engine MUST use for this operation regardless of any other operation details."]
27314    pub method: Option<Box<terminology::HttpOperations>>,
27315    #[primitive]
27316    #[doc = "The server where the request message originates from.  Must be one of the server numbers listed in TestScript.origin section."]
27317    pub origin: Option<Box<FHIRInteger>>,
27318    #[primitive]
27319    #[doc = "Path plus parameters after [type].  Used to set parts of the request URL explicitly."]
27320    pub params: Option<Box<FHIRString>>,
27321    #[doc = "Header elements would be used to set HTTP headers."]
27322    pub requestHeader: Option<Vec<TestScriptSetupActionOperationRequestHeader>>,
27323    #[primitive]
27324    #[doc = "The fixture id (maybe new) to map to the request."]
27325    pub requestId: Option<Box<FHIRId>>,
27326    #[primitive]
27327    #[doc = "The fixture id (maybe new) to map to the response."]
27328    pub responseId: Option<Box<FHIRId>>,
27329    #[primitive]
27330    #[doc = "The id of the fixture used as the body of a PUT or POST request."]
27331    pub sourceId: Option<Box<FHIRId>>,
27332    #[primitive]
27333    #[doc = "Id of fixture used for extracting the [id],  [type], and [vid] for GET requests."]
27334    pub targetId: Option<Box<FHIRId>>,
27335    #[primitive]
27336    #[doc = "Complete request URL."]
27337    pub url: Option<Box<FHIRString>>,
27338}
27339#[derive(
27340    Clone,
27341    Reflect,
27342    Debug,
27343    Default,
27344    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
27345    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
27346)]
27347#[fhir_serialize_type = "complex"]
27348#[doc = "Evaluates the results of previous operations to determine if the server under test behaves appropriately."]
27349pub struct TestScriptSetupActionAssert {
27350    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
27351    pub id: Option<String>,
27352    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
27353    pub extension: Option<Vec<Box<Extension>>>,
27354    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
27355    pub modifierExtension: Option<Vec<Box<Extension>>>,
27356    #[primitive]
27357    #[doc = "The label would be used for tracking/logging purposes by test engines."]
27358    pub label: Option<Box<FHIRString>>,
27359    #[primitive]
27360    #[doc = "The description would be used by test engines for tracking and reporting purposes."]
27361    pub description: Option<Box<FHIRString>>,
27362    #[primitive]
27363    #[doc = "The direction to use for the assertion."]
27364    pub direction: Option<Box<terminology::AssertDirectionCodes>>,
27365    #[primitive]
27366    #[doc = "Id of the source fixture used as the contents to be evaluated by either the \"source/expression\" or \"sourceId/path\" definition."]
27367    pub compareToSourceId: Option<Box<FHIRString>>,
27368    #[primitive]
27369    #[doc = "The FHIRPath expression to evaluate against the source fixture. When compareToSourceId is defined, either compareToSourceExpression or compareToSourcePath must be defined, but not both."]
27370    pub compareToSourceExpression: Option<Box<FHIRString>>,
27371    #[primitive]
27372    #[doc = "XPath or JSONPath expression to evaluate against the source fixture. When compareToSourceId is defined, either compareToSourceExpression or compareToSourcePath must be defined, but not both."]
27373    pub compareToSourcePath: Option<Box<FHIRString>>,
27374    #[primitive]
27375    #[doc = "The mime-type contents to compare against the request or response message 'Content-Type' header."]
27376    pub contentType: Option<Box<FHIRCode>>,
27377    #[primitive]
27378    #[doc = "The FHIRPath expression to be evaluated against the request or response message contents - HTTP headers and payload."]
27379    pub expression: Option<Box<FHIRString>>,
27380    #[primitive]
27381    #[doc = "The HTTP header field name e.g. 'Location'."]
27382    pub headerField: Option<Box<FHIRString>>,
27383    #[primitive]
27384    #[doc = "The ID of a fixture.  Asserts that the response contains at a minimum the fixture specified by minimumId."]
27385    pub minimumId: Option<Box<FHIRString>>,
27386    #[primitive]
27387    #[doc = "Whether or not the test execution performs validation on the bundle navigation links."]
27388    pub navigationLinks: Option<Box<FHIRBoolean>>,
27389    #[primitive]
27390    #[doc = "The operator type defines the conditional behavior of the assert. If not defined, the default is equals."]
27391    pub operator: Option<Box<terminology::AssertOperatorCodes>>,
27392    #[primitive]
27393    #[doc = "The XPath or JSONPath expression to be evaluated against the fixture representing the response received from server."]
27394    pub path: Option<Box<FHIRString>>,
27395    #[primitive]
27396    #[doc = "The request method or HTTP operation code to compare against that used by the client system under test."]
27397    pub requestMethod: Option<Box<terminology::HttpOperations>>,
27398    #[primitive]
27399    #[doc = "The value to use in a comparison against the request URL path string."]
27400    pub requestURL: Option<Box<FHIRString>>,
27401    #[primitive]
27402    #[doc = "The type of the resource.  See http://build.fhir.org/resourcelist.html."]
27403    pub resource: Option<Box<terminology::DefinedTypes>>,
27404    #[primitive]
27405    #[doc = "okay | created | noContent | notModified | bad | forbidden | notFound | methodNotAllowed | conflict | gone | preconditionFailed | unprocessable."]
27406    pub response: Option<Box<terminology::AssertResponseCodeTypes>>,
27407    #[primitive]
27408    #[doc = "The value of the HTTP response code to be tested."]
27409    pub responseCode: Option<Box<FHIRString>>,
27410    #[primitive]
27411    #[doc = "Fixture to evaluate the XPath/JSONPath expression or the headerField  against."]
27412    pub sourceId: Option<Box<FHIRId>>,
27413    #[primitive]
27414    #[doc = "The ID of the Profile to validate against."]
27415    pub validateProfileId: Option<Box<FHIRId>>,
27416    #[primitive]
27417    #[doc = "The value to compare to."]
27418    pub value: Option<Box<FHIRString>>,
27419    #[primitive]
27420    #[doc = "Whether or not the test execution will produce a warning only on error for this assert."]
27421    pub warningOnly: Box<FHIRBoolean>,
27422}
27423#[derive(
27424    Clone,
27425    Reflect,
27426    Debug,
27427    Default,
27428    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
27429    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
27430)]
27431#[fhir_serialize_type = "complex"]
27432#[doc = "Action would contain either an operation or an assertion."]
27433pub struct TestScriptSetupAction {
27434    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
27435    pub id: Option<String>,
27436    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
27437    pub extension: Option<Vec<Box<Extension>>>,
27438    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
27439    pub modifierExtension: Option<Vec<Box<Extension>>>,
27440    #[doc = "The operation to perform."]
27441    pub operation: Option<TestScriptSetupActionOperation>,
27442    #[doc = "Evaluates the results of previous operations to determine if the server under test behaves appropriately."]
27443    pub assert: Option<TestScriptSetupActionAssert>,
27444}
27445#[derive(
27446    Clone,
27447    Reflect,
27448    Debug,
27449    Default,
27450    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
27451    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
27452)]
27453#[fhir_serialize_type = "complex"]
27454#[doc = "A series of required setup operations before tests are executed."]
27455pub struct TestScriptSetup {
27456    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
27457    pub id: Option<String>,
27458    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
27459    pub extension: Option<Vec<Box<Extension>>>,
27460    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
27461    pub modifierExtension: Option<Vec<Box<Extension>>>,
27462    #[cardinality(min = 1usize)]
27463    #[doc = "Action would contain either an operation or an assertion."]
27464    pub action: Vec<TestScriptSetupAction>,
27465}
27466#[derive(
27467    Clone,
27468    Reflect,
27469    Debug,
27470    Default,
27471    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
27472    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
27473)]
27474#[fhir_serialize_type = "complex"]
27475#[doc = "Action would contain either an operation or an assertion."]
27476pub struct TestScriptTestAction {
27477    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
27478    pub id: Option<String>,
27479    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
27480    pub extension: Option<Vec<Box<Extension>>>,
27481    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
27482    pub modifierExtension: Option<Vec<Box<Extension>>>,
27483    #[doc = "An operation would involve a REST request to a server."]
27484    pub operation: Option<TestScriptSetupActionOperation>,
27485    #[doc = "Evaluates the results of previous operations to determine if the server under test behaves appropriately."]
27486    pub assert: Option<TestScriptSetupActionAssert>,
27487}
27488#[derive(
27489    Clone,
27490    Reflect,
27491    Debug,
27492    Default,
27493    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
27494    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
27495)]
27496#[fhir_serialize_type = "complex"]
27497#[doc = "A test in this script."]
27498pub struct TestScriptTest {
27499    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
27500    pub id: Option<String>,
27501    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
27502    pub extension: Option<Vec<Box<Extension>>>,
27503    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
27504    pub modifierExtension: Option<Vec<Box<Extension>>>,
27505    #[primitive]
27506    #[doc = "The name of this test used for tracking/logging purposes by test engines."]
27507    pub name: Option<Box<FHIRString>>,
27508    #[primitive]
27509    #[doc = "A short description of the test used by test engines for tracking and reporting purposes."]
27510    pub description: Option<Box<FHIRString>>,
27511    #[cardinality(min = 1usize)]
27512    #[doc = "Action would contain either an operation or an assertion."]
27513    pub action: Vec<TestScriptTestAction>,
27514}
27515#[derive(
27516    Clone,
27517    Reflect,
27518    Debug,
27519    Default,
27520    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
27521    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
27522)]
27523#[fhir_serialize_type = "complex"]
27524#[doc = "The teardown action will only contain an operation."]
27525pub struct TestScriptTeardownAction {
27526    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
27527    pub id: Option<String>,
27528    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
27529    pub extension: Option<Vec<Box<Extension>>>,
27530    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
27531    pub modifierExtension: Option<Vec<Box<Extension>>>,
27532    #[doc = "An operation would involve a REST request to a server."]
27533    pub operation: TestScriptSetupActionOperation,
27534}
27535#[derive(
27536    Clone,
27537    Reflect,
27538    Debug,
27539    Default,
27540    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
27541    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
27542)]
27543#[fhir_serialize_type = "complex"]
27544#[doc = "A series of operations required to clean up after all the tests are executed (successfully or otherwise)."]
27545pub struct TestScriptTeardown {
27546    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
27547    pub id: Option<String>,
27548    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
27549    pub extension: Option<Vec<Box<Extension>>>,
27550    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
27551    pub modifierExtension: Option<Vec<Box<Extension>>>,
27552    #[cardinality(min = 1usize)]
27553    #[doc = "The teardown action will only contain an operation."]
27554    pub action: Vec<TestScriptTeardownAction>,
27555}
27556#[derive(
27557    Clone,
27558    Reflect,
27559    Debug,
27560    Default,
27561    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
27562    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
27563)]
27564#[fhir_serialize_type = "resource"]
27565#[doc = "A structured set of tests against a FHIR server or client implementation to determine compliance against the FHIR specification."]
27566pub struct TestScript {
27567    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
27568    pub id: Option<String>,
27569    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
27570    pub meta: Option<Box<Meta>>,
27571    #[primitive]
27572    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
27573    pub implicitRules: Option<Box<FHIRUri>>,
27574    #[primitive]
27575    #[doc = "The base language in which the resource is written."]
27576    pub language: Option<Box<FHIRCode>>,
27577    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
27578    pub text: Option<Box<Narrative>>,
27579    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
27580    pub contained: Option<Vec<Box<Resource>>>,
27581    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
27582    pub extension: Option<Vec<Box<Extension>>>,
27583    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
27584    pub modifierExtension: Option<Vec<Box<Extension>>>,
27585    #[primitive]
27586    #[doc = "An absolute URI that is used to identify this test script when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this test script is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the test script is stored on different servers."]
27587    pub url: Box<FHIRUri>,
27588    #[rename_field = "identifier"]
27589    #[doc = "A formal identifier that is used to identify this test script when it is represented in other formats, or referenced in a specification, model, design or an instance."]
27590    pub identifier_: Option<Box<Identifier>>,
27591    #[primitive]
27592    #[doc = "The identifier that is used to identify this version of the test script when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the test script author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence."]
27593    pub version: Option<Box<FHIRString>>,
27594    #[primitive]
27595    #[doc = "A natural language name identifying the test script. This name should be usable as an identifier for the module by machine processing applications such as code generation."]
27596    pub name: Box<FHIRString>,
27597    #[primitive]
27598    #[doc = "A short, descriptive, user-friendly title for the test script."]
27599    pub title: Option<Box<FHIRString>>,
27600    #[primitive]
27601    #[doc = "The status of this test script. Enables tracking the life-cycle of the content."]
27602    pub status: Box<terminology::PublicationStatus>,
27603    #[primitive]
27604    #[doc = "A Boolean value to indicate that this test script is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage."]
27605    pub experimental: Option<Box<FHIRBoolean>>,
27606    #[primitive]
27607    #[doc = "The date  (and optionally time) when the test script was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the test script changes."]
27608    pub date: Option<Box<FHIRDateTime>>,
27609    #[primitive]
27610    #[doc = "The name of the organization or individual that published the test script."]
27611    pub publisher: Option<Box<FHIRString>>,
27612    #[doc = "Contact details to assist a user in finding and communicating with the publisher."]
27613    pub contact: Option<Vec<Box<ContactDetail>>>,
27614    #[primitive]
27615    #[doc = "A free text natural language description of the test script from a consumer's perspective."]
27616    pub description: Option<Box<FHIRMarkdown>>,
27617    #[doc = "The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate test script instances."]
27618    pub useContext: Option<Vec<Box<UsageContext>>>,
27619    #[doc = "A legal or geographic region in which the test script is intended to be used."]
27620    pub jurisdiction: Option<Vec<Box<CodeableConcept>>>,
27621    #[primitive]
27622    #[doc = "Explanation of why this test script is needed and why it has been designed as it has."]
27623    pub purpose: Option<Box<FHIRMarkdown>>,
27624    #[primitive]
27625    #[doc = "A copyright statement relating to the test script and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the test script."]
27626    pub copyright: Option<Box<FHIRMarkdown>>,
27627    #[doc = "An abstract server used in operations within this test script in the origin element."]
27628    pub origin: Option<Vec<TestScriptOrigin>>,
27629    #[doc = "An abstract server used in operations within this test script in the destination element."]
27630    pub destination: Option<Vec<TestScriptDestination>>,
27631    #[doc = "The required capability must exist and are assumed to function correctly on the FHIR server being tested."]
27632    pub metadata: Option<TestScriptMetadata>,
27633    #[doc = "Fixture in the test script - by reference (uri). All fixtures are required for the test script to execute."]
27634    pub fixture: Option<Vec<TestScriptFixture>>,
27635    # [reference (targets = ["Resource"])]
27636    #[doc = "Reference to the profile to be used for validation."]
27637    pub profile: Option<Vec<Box<Reference>>>,
27638    #[doc = "Variable is set based either on element value in response body or on header field value in the response headers."]
27639    pub variable: Option<Vec<TestScriptVariable>>,
27640    #[doc = "A series of required setup operations before tests are executed."]
27641    pub setup: Option<TestScriptSetup>,
27642    #[doc = "A test in this script."]
27643    pub test: Option<Vec<TestScriptTest>>,
27644    #[doc = "A series of operations required to clean up after all the tests are executed (successfully or otherwise)."]
27645    pub teardown: Option<TestScriptTeardown>,
27646}
27647#[derive(
27648    Clone,
27649    Reflect,
27650    Debug,
27651    Default,
27652    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
27653    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
27654)]
27655#[fhir_serialize_type = "complex"]
27656#[doc = "Additional representations for this concept when used in this value set - other languages, aliases, specialized purposes, used for particular purposes, etc."]
27657pub struct ValueSetComposeIncludeConceptDesignation {
27658    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
27659    pub id: Option<String>,
27660    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
27661    pub extension: Option<Vec<Box<Extension>>>,
27662    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
27663    pub modifierExtension: Option<Vec<Box<Extension>>>,
27664    #[primitive]
27665    #[doc = "The language this designation is defined for."]
27666    pub language: Option<Box<FHIRCode>>,
27667    #[rename_field = "use"]
27668    #[doc = "A code that represents types of uses of designations."]
27669    pub use_: Option<Box<Coding>>,
27670    #[primitive]
27671    #[doc = "The text value for this designation."]
27672    pub value: Box<FHIRString>,
27673}
27674#[derive(
27675    Clone,
27676    Reflect,
27677    Debug,
27678    Default,
27679    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
27680    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
27681)]
27682#[fhir_serialize_type = "complex"]
27683#[doc = "Specifies a concept to be included or excluded."]
27684pub struct ValueSetComposeIncludeConcept {
27685    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
27686    pub id: Option<String>,
27687    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
27688    pub extension: Option<Vec<Box<Extension>>>,
27689    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
27690    pub modifierExtension: Option<Vec<Box<Extension>>>,
27691    #[primitive]
27692    #[doc = "Specifies a code for the concept to be included or excluded."]
27693    pub code: Box<FHIRCode>,
27694    #[primitive]
27695    #[doc = "The text to display to the user for this concept in the context of this valueset. If no display is provided, then applications using the value set use the display specified for the code by the system."]
27696    pub display: Option<Box<FHIRString>>,
27697    #[doc = "Additional representations for this concept when used in this value set - other languages, aliases, specialized purposes, used for particular purposes, etc."]
27698    pub designation: Option<Vec<ValueSetComposeIncludeConceptDesignation>>,
27699}
27700#[derive(
27701    Clone,
27702    Reflect,
27703    Debug,
27704    Default,
27705    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
27706    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
27707)]
27708#[fhir_serialize_type = "complex"]
27709#[doc = "Select concepts by specify a matching criterion based on the properties (including relationships) defined by the system, or on filters defined by the system. If multiple filters are specified, they SHALL all be true."]
27710pub struct ValueSetComposeIncludeFilter {
27711    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
27712    pub id: Option<String>,
27713    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
27714    pub extension: Option<Vec<Box<Extension>>>,
27715    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
27716    pub modifierExtension: Option<Vec<Box<Extension>>>,
27717    #[primitive]
27718    #[doc = "A code that identifies a property or a filter defined in the code system."]
27719    pub property: Box<FHIRCode>,
27720    #[primitive]
27721    #[doc = "The kind of operation to perform as a part of the filter criteria."]
27722    pub op: Box<terminology::FilterOperator>,
27723    #[primitive]
27724    #[doc = "The match value may be either a code defined by the system, or a string value, which is a regex match on the literal string of the property value  (if the filter represents a property defined in CodeSystem) or of the system filter value (if the filter represents a filter defined in CodeSystem) when the operation is 'regex', or one of the values (true and false), when the operation is 'exists'."]
27725    pub value: Box<FHIRString>,
27726}
27727#[derive(
27728    Clone,
27729    Reflect,
27730    Debug,
27731    Default,
27732    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
27733    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
27734)]
27735#[fhir_serialize_type = "complex"]
27736#[doc = "Include one or more codes from a code system or other value set(s)."]
27737pub struct ValueSetComposeInclude {
27738    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
27739    pub id: Option<String>,
27740    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
27741    pub extension: Option<Vec<Box<Extension>>>,
27742    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
27743    pub modifierExtension: Option<Vec<Box<Extension>>>,
27744    #[primitive]
27745    #[doc = "An absolute URI which is the code system from which the selected codes come from."]
27746    pub system: Option<Box<FHIRUri>>,
27747    #[primitive]
27748    #[doc = "The version of the code system that the codes are selected from, or the special version '*' for all versions."]
27749    pub version: Option<Box<FHIRString>>,
27750    #[doc = "Specifies a concept to be included or excluded."]
27751    pub concept: Option<Vec<ValueSetComposeIncludeConcept>>,
27752    #[doc = "Select concepts by specify a matching criterion based on the properties (including relationships) defined by the system, or on filters defined by the system. If multiple filters are specified, they SHALL all be true."]
27753    pub filter: Option<Vec<ValueSetComposeIncludeFilter>>,
27754    #[primitive]
27755    #[doc = "Selects the concepts found in this value set (based on its value set definition). This is an absolute URI that is a reference to ValueSet.url.  If multiple value sets are specified this includes the union of the contents of all of the referenced value sets."]
27756    pub valueSet: Option<Vec<Box<FHIRCanonical>>>,
27757}
27758#[derive(
27759    Clone,
27760    Reflect,
27761    Debug,
27762    Default,
27763    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
27764    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
27765)]
27766#[fhir_serialize_type = "complex"]
27767#[doc = "A set of criteria that define the contents of the value set by including or excluding codes selected from the specified code system(s) that the value set draws from. This is also known as the Content Logical Definition (CLD)."]
27768pub struct ValueSetCompose {
27769    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
27770    pub id: Option<String>,
27771    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
27772    pub extension: Option<Vec<Box<Extension>>>,
27773    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
27774    pub modifierExtension: Option<Vec<Box<Extension>>>,
27775    #[primitive]
27776    #[doc = "The Locked Date is  the effective date that is used to determine the version of all referenced Code Systems and Value Set Definitions included in the compose that are not already tied to a specific version."]
27777    pub lockedDate: Option<Box<FHIRDate>>,
27778    #[primitive]
27779    #[doc = "Whether inactive codes - codes that are not approved for current use - are in the value set. If inactive = true, inactive codes are to be included in the expansion, if inactive = false, the inactive codes will not be included in the expansion. If absent, the behavior is determined by the implementation, or by the applicable $expand parameters (but generally, inactive codes would be expected to be included)."]
27780    pub inactive: Option<Box<FHIRBoolean>>,
27781    #[cardinality(min = 1usize)]
27782    #[doc = "Include one or more codes from a code system or other value set(s)."]
27783    pub include: Vec<ValueSetComposeInclude>,
27784    #[doc = "Exclude one or more codes from the value set based on code system filters and/or other value sets."]
27785    pub exclude: Option<Vec<ValueSetComposeInclude>>,
27786}
27787#[derive(
27788    Clone,
27789    Reflect,
27790    Debug,
27791    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
27792    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
27793)]
27794#[fhir_serialize_type = "typechoice"]
27795#[type_choice_field_name = "value"]
27796pub enum ValueSetExpansionParameterValueTypeChoice {
27797    String(Box<FHIRString>),
27798    Boolean(Box<FHIRBoolean>),
27799    Integer(Box<FHIRInteger>),
27800    Decimal(Box<FHIRDecimal>),
27801    Uri(Box<FHIRUri>),
27802    Code(Box<FHIRCode>),
27803    DateTime(Box<FHIRDateTime>),
27804}
27805impl Default for ValueSetExpansionParameterValueTypeChoice {
27806    fn default() -> Self {
27807        ValueSetExpansionParameterValueTypeChoice::String(Box::new(Default::default()))
27808    }
27809}
27810#[derive(
27811    Clone,
27812    Reflect,
27813    Debug,
27814    Default,
27815    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
27816    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
27817)]
27818#[fhir_serialize_type = "complex"]
27819#[doc = "A parameter that controlled the expansion process. These parameters may be used by users of expanded value sets to check whether the expansion is suitable for a particular purpose, or to pick the correct expansion."]
27820pub struct ValueSetExpansionParameter {
27821    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
27822    pub id: Option<String>,
27823    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
27824    pub extension: Option<Vec<Box<Extension>>>,
27825    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
27826    pub modifierExtension: Option<Vec<Box<Extension>>>,
27827    #[primitive]
27828    #[doc = "Name of the input parameter to the $expand operation; may be a server-assigned name for additional default or other server-supplied parameters used to control the expansion process."]
27829    pub name: Box<FHIRString>,
27830    # [type_choice_variants (complex = [] , primitive = ["valueString" , "valueBoolean" , "valueInteger" , "valueDecimal" , "valueUri" , "valueCode" , "valueDateTime"])]
27831    #[doc = "The value of the parameter."]
27832    pub value: Option<ValueSetExpansionParameterValueTypeChoice>,
27833}
27834#[derive(
27835    Clone,
27836    Reflect,
27837    Debug,
27838    Default,
27839    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
27840    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
27841)]
27842#[fhir_serialize_type = "complex"]
27843#[doc = "The codes that are contained in the value set expansion."]
27844pub struct ValueSetExpansionContains {
27845    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
27846    pub id: Option<String>,
27847    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
27848    pub extension: Option<Vec<Box<Extension>>>,
27849    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
27850    pub modifierExtension: Option<Vec<Box<Extension>>>,
27851    #[primitive]
27852    #[doc = "An absolute URI which is the code system in which the code for this item in the expansion is defined."]
27853    pub system: Option<Box<FHIRUri>>,
27854    #[rename_field = "abstract"]
27855    #[primitive]
27856    #[doc = "If true, this entry is included in the expansion for navigational purposes, and the user cannot select the code directly as a proper value."]
27857    pub abstract_: Option<Box<FHIRBoolean>>,
27858    #[primitive]
27859    #[doc = "If the concept is inactive in the code system that defines it. Inactive codes are those that are no longer to be used, but are maintained by the code system for understanding legacy data. It might not be known or specified whether an concept is inactive (and it may depend on the context of use)."]
27860    pub inactive: Option<Box<FHIRBoolean>>,
27861    #[primitive]
27862    #[doc = "The version of the code system from this code was taken. Note that a well-maintained code system does not need the version reported, because the meaning of codes is consistent across versions. However this cannot consistently be assured, and when the meaning is not guaranteed to be consistent, the version SHOULD be exchanged."]
27863    pub version: Option<Box<FHIRString>>,
27864    #[primitive]
27865    #[doc = "The code for this item in the expansion hierarchy. If this code is missing the entry in the hierarchy is a place holder (abstract) and does not represent a valid code in the value set."]
27866    pub code: Option<Box<FHIRCode>>,
27867    #[primitive]
27868    #[doc = "The recommended display for this item in the expansion."]
27869    pub display: Option<Box<FHIRString>>,
27870    #[doc = "Additional representations for this item - other languages, aliases, specialized purposes, used for particular purposes, etc. These are relevant when the conditions of the expansion do not fix to a single correct representation."]
27871    pub designation: Option<Vec<ValueSetComposeIncludeConceptDesignation>>,
27872    #[doc = "Other codes and entries contained under this entry in the hierarchy."]
27873    pub contains: Option<Vec<ValueSetExpansionContains>>,
27874}
27875#[derive(
27876    Clone,
27877    Reflect,
27878    Debug,
27879    Default,
27880    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
27881    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
27882)]
27883#[fhir_serialize_type = "complex"]
27884#[doc = "A value set can also be \"expanded\", where the value set is turned into a simple collection of enumerated codes. This element holds the expansion, if it has been performed."]
27885pub struct ValueSetExpansion {
27886    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
27887    pub id: Option<String>,
27888    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
27889    pub extension: Option<Vec<Box<Extension>>>,
27890    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
27891    pub modifierExtension: Option<Vec<Box<Extension>>>,
27892    #[rename_field = "identifier"]
27893    #[primitive]
27894    #[doc = "An identifier that uniquely identifies this expansion of the valueset, based on a unique combination of the provided parameters, the system default parameters, and the underlying system code system versions etc. Systems may re-use the same identifier as long as those factors remain the same, and the expansion is the same, but are not required to do so. This is a business identifier."]
27895    pub identifier_: Option<Box<FHIRUri>>,
27896    #[primitive]
27897    #[doc = "The time at which the expansion was produced by the expanding system."]
27898    pub timestamp: Box<FHIRDateTime>,
27899    #[primitive]
27900    #[doc = "The total number of concepts in the expansion. If the number of concept nodes in this resource is less than the stated number, then the server can return more using the offset parameter."]
27901    pub total: Option<Box<FHIRInteger>>,
27902    #[primitive]
27903    #[doc = "If paging is being used, the offset at which this resource starts.  I.e. this resource is a partial view into the expansion. If paging is not being used, this element SHALL NOT be present."]
27904    pub offset: Option<Box<FHIRInteger>>,
27905    #[doc = "A parameter that controlled the expansion process. These parameters may be used by users of expanded value sets to check whether the expansion is suitable for a particular purpose, or to pick the correct expansion."]
27906    pub parameter: Option<Vec<ValueSetExpansionParameter>>,
27907    #[doc = "The codes that are contained in the value set expansion."]
27908    pub contains: Option<Vec<ValueSetExpansionContains>>,
27909}
27910#[derive(
27911    Clone,
27912    Reflect,
27913    Debug,
27914    Default,
27915    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
27916    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
27917)]
27918#[fhir_serialize_type = "resource"]
27919#[doc = "A ValueSet resource instance specifies a set of codes drawn from one or more code systems, intended for use in a particular context. Value sets link between [CodeSystem](codesystem.html) definitions and their use in [coded elements](terminologies.html)."]
27920pub struct ValueSet {
27921    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
27922    pub id: Option<String>,
27923    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
27924    pub meta: Option<Box<Meta>>,
27925    #[primitive]
27926    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
27927    pub implicitRules: Option<Box<FHIRUri>>,
27928    #[primitive]
27929    #[doc = "The base language in which the resource is written."]
27930    pub language: Option<Box<FHIRCode>>,
27931    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
27932    pub text: Option<Box<Narrative>>,
27933    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
27934    pub contained: Option<Vec<Box<Resource>>>,
27935    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
27936    pub extension: Option<Vec<Box<Extension>>>,
27937    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
27938    pub modifierExtension: Option<Vec<Box<Extension>>>,
27939    #[primitive]
27940    #[doc = "An absolute URI that is used to identify this value set when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this value set is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the value set is stored on different servers."]
27941    pub url: Option<Box<FHIRUri>>,
27942    #[rename_field = "identifier"]
27943    #[doc = "A formal identifier that is used to identify this value set when it is represented in other formats, or referenced in a specification, model, design or an instance."]
27944    pub identifier_: Option<Vec<Box<Identifier>>>,
27945    #[primitive]
27946    #[doc = "The identifier that is used to identify this version of the value set when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the value set author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence."]
27947    pub version: Option<Box<FHIRString>>,
27948    #[primitive]
27949    #[doc = "A natural language name identifying the value set. This name should be usable as an identifier for the module by machine processing applications such as code generation."]
27950    pub name: Option<Box<FHIRString>>,
27951    #[primitive]
27952    #[doc = "A short, descriptive, user-friendly title for the value set."]
27953    pub title: Option<Box<FHIRString>>,
27954    #[primitive]
27955    #[doc = "The status of this value set. Enables tracking the life-cycle of the content. The status of the value set applies to the value set definition (ValueSet.compose) and the associated ValueSet metadata. Expansions do not have a state."]
27956    pub status: Box<terminology::PublicationStatus>,
27957    #[primitive]
27958    #[doc = "A Boolean value to indicate that this value set is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage."]
27959    pub experimental: Option<Box<FHIRBoolean>>,
27960    #[primitive]
27961    #[doc = "The date (and optionally time) when the value set was created or revised (e.g. the 'content logical definition')."]
27962    pub date: Option<Box<FHIRDateTime>>,
27963    #[primitive]
27964    #[doc = "The name of the organization or individual that published the value set."]
27965    pub publisher: Option<Box<FHIRString>>,
27966    #[doc = "Contact details to assist a user in finding and communicating with the publisher."]
27967    pub contact: Option<Vec<Box<ContactDetail>>>,
27968    #[primitive]
27969    #[doc = "A free text natural language description of the value set from a consumer's perspective. The textual description specifies the span of meanings for concepts to be included within the Value Set Expansion, and also may specify the intended use and limitations of the Value Set."]
27970    pub description: Option<Box<FHIRMarkdown>>,
27971    #[doc = "The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate value set instances."]
27972    pub useContext: Option<Vec<Box<UsageContext>>>,
27973    #[doc = "A legal or geographic region in which the value set is intended to be used."]
27974    pub jurisdiction: Option<Vec<Box<CodeableConcept>>>,
27975    #[primitive]
27976    #[doc = "If this is set to 'true', then no new versions of the content logical definition can be created.  Note: Other metadata might still change."]
27977    pub immutable: Option<Box<FHIRBoolean>>,
27978    #[primitive]
27979    #[doc = "Explanation of why this value set is needed and why it has been designed as it has."]
27980    pub purpose: Option<Box<FHIRMarkdown>>,
27981    #[primitive]
27982    #[doc = "A copyright statement relating to the value set and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the value set."]
27983    pub copyright: Option<Box<FHIRMarkdown>>,
27984    #[doc = "A set of criteria that define the contents of the value set by including or excluding codes selected from the specified code system(s) that the value set draws from. This is also known as the Content Logical Definition (CLD)."]
27985    pub compose: Option<ValueSetCompose>,
27986    #[doc = "A value set can also be \"expanded\", where the value set is turned into a simple collection of enumerated codes. This element holds the expansion, if it has been performed."]
27987    pub expansion: Option<ValueSetExpansion>,
27988}
27989#[derive(
27990    Clone,
27991    Reflect,
27992    Debug,
27993    Default,
27994    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
27995    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
27996)]
27997#[fhir_serialize_type = "complex"]
27998#[doc = "Information about the primary source(s) involved in validation."]
27999pub struct VerificationResultPrimarySource {
28000    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
28001    pub id: Option<String>,
28002    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
28003    pub extension: Option<Vec<Box<Extension>>>,
28004    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
28005    pub modifierExtension: Option<Vec<Box<Extension>>>,
28006    # [reference (targets = ["Organization" , "Practitioner" , "PractitionerRole"])]
28007    #[doc = "Reference to the primary source."]
28008    pub who: Option<Box<Reference>>,
28009    #[rename_field = "type"]
28010    #[doc = "Type of primary source (License Board; Primary Education; Continuing Education; Postal Service; Relationship owner; Registration Authority; legal source; issuing source; authoritative source)."]
28011    pub type_: Option<Vec<Box<CodeableConcept>>>,
28012    #[doc = "Method for communicating with the primary source (manual; API; Push)."]
28013    pub communicationMethod: Option<Vec<Box<CodeableConcept>>>,
28014    #[doc = "Status of the validation of the target against the primary source (successful; failed; unknown)."]
28015    pub validationStatus: Option<Box<CodeableConcept>>,
28016    #[primitive]
28017    #[doc = "When the target was validated against the primary source."]
28018    pub validationDate: Option<Box<FHIRDateTime>>,
28019    #[doc = "Ability of the primary source to push updates/alerts (yes; no; undetermined)."]
28020    pub canPushUpdates: Option<Box<CodeableConcept>>,
28021    #[doc = "Type of alerts/updates the primary source can send (specific requested changes; any changes; as defined by source)."]
28022    pub pushTypeAvailable: Option<Vec<Box<CodeableConcept>>>,
28023}
28024#[derive(
28025    Clone,
28026    Reflect,
28027    Debug,
28028    Default,
28029    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
28030    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
28031)]
28032#[fhir_serialize_type = "complex"]
28033#[doc = "Information about the entity attesting to information."]
28034pub struct VerificationResultAttestation {
28035    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
28036    pub id: Option<String>,
28037    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
28038    pub extension: Option<Vec<Box<Extension>>>,
28039    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
28040    pub modifierExtension: Option<Vec<Box<Extension>>>,
28041    # [reference (targets = ["Practitioner" , "PractitionerRole" , "Organization"])]
28042    #[doc = "The individual or organization attesting to information."]
28043    pub who: Option<Box<Reference>>,
28044    # [reference (targets = ["Organization" , "Practitioner" , "PractitionerRole"])]
28045    #[doc = "When the who is asserting on behalf of another (organization or individual)."]
28046    pub onBehalfOf: Option<Box<Reference>>,
28047    #[doc = "The method by which attested information was submitted/retrieved (manual; API; Push)."]
28048    pub communicationMethod: Option<Box<CodeableConcept>>,
28049    #[primitive]
28050    #[doc = "The date the information was attested to."]
28051    pub date: Option<Box<FHIRDate>>,
28052    #[primitive]
28053    #[doc = "A digital identity certificate associated with the attestation source."]
28054    pub sourceIdentityCertificate: Option<Box<FHIRString>>,
28055    #[primitive]
28056    #[doc = "A digital identity certificate associated with the proxy entity submitting attested information on behalf of the attestation source."]
28057    pub proxyIdentityCertificate: Option<Box<FHIRString>>,
28058    #[doc = "Signed assertion by the proxy entity indicating that they have the right to submit attested information on behalf of the attestation source."]
28059    pub proxySignature: Option<Box<Signature>>,
28060    #[doc = "Signed assertion by the attestation source that they have attested to the information."]
28061    pub sourceSignature: Option<Box<Signature>>,
28062}
28063#[derive(
28064    Clone,
28065    Reflect,
28066    Debug,
28067    Default,
28068    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
28069    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
28070)]
28071#[fhir_serialize_type = "complex"]
28072#[doc = "Information about the entity validating information."]
28073pub struct VerificationResultValidator {
28074    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
28075    pub id: Option<String>,
28076    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
28077    pub extension: Option<Vec<Box<Extension>>>,
28078    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
28079    pub modifierExtension: Option<Vec<Box<Extension>>>,
28080    # [reference (targets = ["Organization"])]
28081    #[doc = "Reference to the organization validating information."]
28082    pub organization: Box<Reference>,
28083    #[primitive]
28084    #[doc = "A digital identity certificate associated with the validator."]
28085    pub identityCertificate: Option<Box<FHIRString>>,
28086    #[doc = "Signed assertion by the validator that they have validated the information."]
28087    pub attestationSignature: Option<Box<Signature>>,
28088}
28089#[derive(
28090    Clone,
28091    Reflect,
28092    Debug,
28093    Default,
28094    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
28095    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
28096)]
28097#[fhir_serialize_type = "resource"]
28098#[doc = "Describes validation requirements, source(s), status and dates for one or more elements."]
28099pub struct VerificationResult {
28100    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
28101    pub id: Option<String>,
28102    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
28103    pub meta: Option<Box<Meta>>,
28104    #[primitive]
28105    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
28106    pub implicitRules: Option<Box<FHIRUri>>,
28107    #[primitive]
28108    #[doc = "The base language in which the resource is written."]
28109    pub language: Option<Box<FHIRCode>>,
28110    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
28111    pub text: Option<Box<Narrative>>,
28112    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
28113    pub contained: Option<Vec<Box<Resource>>>,
28114    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
28115    pub extension: Option<Vec<Box<Extension>>>,
28116    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
28117    pub modifierExtension: Option<Vec<Box<Extension>>>,
28118    # [reference (targets = ["Resource"])]
28119    #[doc = "A resource that was validated."]
28120    pub target: Option<Vec<Box<Reference>>>,
28121    #[primitive]
28122    #[doc = "The fhirpath location(s) within the resource that was validated."]
28123    pub targetLocation: Option<Vec<Box<FHIRString>>>,
28124    #[doc = "The frequency with which the target must be validated (none; initial; periodic)."]
28125    pub need: Option<Box<CodeableConcept>>,
28126    #[primitive]
28127    #[doc = "The validation status of the target (attested; validated; in process; requires revalidation; validation failed; revalidation failed)."]
28128    pub status: Box<terminology::VerificationresultStatus>,
28129    #[primitive]
28130    #[doc = "When the validation status was updated."]
28131    pub statusDate: Option<Box<FHIRDateTime>>,
28132    #[doc = "What the target is validated against (nothing; primary source; multiple sources)."]
28133    pub validationType: Option<Box<CodeableConcept>>,
28134    #[doc = "The primary process by which the target is validated (edit check; value set; primary source; multiple sources; standalone; in context)."]
28135    pub validationProcess: Option<Vec<Box<CodeableConcept>>>,
28136    #[doc = "Frequency of revalidation."]
28137    pub frequency: Option<Box<Timing>>,
28138    #[primitive]
28139    #[doc = "The date/time validation was last completed (including failed validations)."]
28140    pub lastPerformed: Option<Box<FHIRDateTime>>,
28141    #[primitive]
28142    #[doc = "The date when target is next validated, if appropriate."]
28143    pub nextScheduled: Option<Box<FHIRDate>>,
28144    #[doc = "The result if validation fails (fatal; warning; record only; none)."]
28145    pub failureAction: Option<Box<CodeableConcept>>,
28146    #[doc = "Information about the primary source(s) involved in validation."]
28147    pub primarySource: Option<Vec<VerificationResultPrimarySource>>,
28148    #[doc = "Information about the entity attesting to information."]
28149    pub attestation: Option<VerificationResultAttestation>,
28150    #[doc = "Information about the entity validating information."]
28151    pub validator: Option<Vec<VerificationResultValidator>>,
28152}
28153#[derive(
28154    Clone,
28155    Reflect,
28156    Debug,
28157    Default,
28158    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
28159    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
28160)]
28161#[fhir_serialize_type = "complex"]
28162#[doc = "Allows for adjustment on two axis."]
28163pub struct VisionPrescriptionLensSpecificationPrism {
28164    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
28165    pub id: Option<String>,
28166    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
28167    pub extension: Option<Vec<Box<Extension>>>,
28168    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
28169    pub modifierExtension: Option<Vec<Box<Extension>>>,
28170    #[primitive]
28171    #[doc = "Amount of prism to compensate for eye alignment in fractional units."]
28172    pub amount: Box<FHIRDecimal>,
28173    #[primitive]
28174    #[doc = "The relative base, or reference lens edge, for the prism."]
28175    pub base: Box<terminology::VisionBaseCodes>,
28176}
28177#[derive(
28178    Clone,
28179    Reflect,
28180    Debug,
28181    Default,
28182    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
28183    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
28184)]
28185#[fhir_serialize_type = "complex"]
28186#[doc = "Contain the details of  the individual lens specifications and serves as the authorization for the fullfillment by certified professionals."]
28187pub struct VisionPrescriptionLensSpecification {
28188    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
28189    pub id: Option<String>,
28190    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
28191    pub extension: Option<Vec<Box<Extension>>>,
28192    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
28193    pub modifierExtension: Option<Vec<Box<Extension>>>,
28194    #[doc = "Identifies the type of vision correction product which is required for the patient."]
28195    pub product: Box<CodeableConcept>,
28196    #[primitive]
28197    #[doc = "The eye for which the lens specification applies."]
28198    pub eye: Box<terminology::VisionEyeCodes>,
28199    #[primitive]
28200    #[doc = "Lens power measured in dioptres (0.25 units)."]
28201    pub sphere: Option<Box<FHIRDecimal>>,
28202    #[primitive]
28203    #[doc = "Power adjustment for astigmatism measured in dioptres (0.25 units)."]
28204    pub cylinder: Option<Box<FHIRDecimal>>,
28205    #[primitive]
28206    #[doc = "Adjustment for astigmatism measured in integer degrees."]
28207    pub axis: Option<Box<FHIRInteger>>,
28208    #[doc = "Allows for adjustment on two axis."]
28209    pub prism: Option<Vec<VisionPrescriptionLensSpecificationPrism>>,
28210    #[primitive]
28211    #[doc = "Power adjustment for multifocal lenses measured in dioptres (0.25 units)."]
28212    pub add: Option<Box<FHIRDecimal>>,
28213    #[primitive]
28214    #[doc = "Contact lens power measured in dioptres (0.25 units)."]
28215    pub power: Option<Box<FHIRDecimal>>,
28216    #[primitive]
28217    #[doc = "Back curvature measured in millimetres."]
28218    pub backCurve: Option<Box<FHIRDecimal>>,
28219    #[primitive]
28220    #[doc = "Contact lens diameter measured in millimetres."]
28221    pub diameter: Option<Box<FHIRDecimal>>,
28222    #[doc = "The recommended maximum wear period for the lens."]
28223    pub duration: Option<Box<Quantity>>,
28224    #[primitive]
28225    #[doc = "Special color or pattern."]
28226    pub color: Option<Box<FHIRString>>,
28227    #[primitive]
28228    #[doc = "Brand recommendations or restrictions."]
28229    pub brand: Option<Box<FHIRString>>,
28230    #[doc = "Notes for special requirements such as coatings and lens materials."]
28231    pub note: Option<Vec<Box<Annotation>>>,
28232}
28233#[derive(
28234    Clone,
28235    Reflect,
28236    Debug,
28237    Default,
28238    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
28239    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
28240)]
28241#[fhir_serialize_type = "resource"]
28242#[doc = "An authorization for the provision of glasses and/or contact lenses to a patient."]
28243pub struct VisionPrescription {
28244    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
28245    pub id: Option<String>,
28246    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
28247    pub meta: Option<Box<Meta>>,
28248    #[primitive]
28249    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
28250    pub implicitRules: Option<Box<FHIRUri>>,
28251    #[primitive]
28252    #[doc = "The base language in which the resource is written."]
28253    pub language: Option<Box<FHIRCode>>,
28254    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
28255    pub text: Option<Box<Narrative>>,
28256    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
28257    pub contained: Option<Vec<Box<Resource>>>,
28258    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
28259    pub extension: Option<Vec<Box<Extension>>>,
28260    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
28261    pub modifierExtension: Option<Vec<Box<Extension>>>,
28262    #[rename_field = "identifier"]
28263    #[doc = "A unique identifier assigned to this vision prescription."]
28264    pub identifier_: Option<Vec<Box<Identifier>>>,
28265    #[primitive]
28266    #[doc = "The status of the resource instance."]
28267    pub status: Box<terminology::FmStatus>,
28268    #[primitive]
28269    #[doc = "The date this resource was created."]
28270    pub created: Box<FHIRDateTime>,
28271    # [reference (targets = ["Patient"])]
28272    #[doc = "A resource reference to the person to whom the vision prescription applies."]
28273    pub patient: Box<Reference>,
28274    # [reference (targets = ["Encounter"])]
28275    #[doc = "A reference to a resource that identifies the particular occurrence of contact between patient and health care provider during which the prescription was issued."]
28276    pub encounter: Option<Box<Reference>>,
28277    #[primitive]
28278    #[doc = "The date (and perhaps time) when the prescription was written."]
28279    pub dateWritten: Box<FHIRDateTime>,
28280    # [reference (targets = ["Practitioner" , "PractitionerRole"])]
28281    #[doc = "The healthcare professional responsible for authorizing the prescription."]
28282    pub prescriber: Box<Reference>,
28283    #[cardinality(min = 1usize)]
28284    #[doc = "Contain the details of  the individual lens specifications and serves as the authorization for the fullfillment by certified professionals."]
28285    pub lensSpecification: Vec<VisionPrescriptionLensSpecification>,
28286}
28287#[derive(
28288    Clone,
28289    Reflect,
28290    Debug,
28291    haste_fhir_serialization_json :: derive :: FHIRJSONSerialize,
28292    haste_fhir_serialization_json :: derive :: FHIRJSONDeserialize,
28293)]
28294#[fhir_serialize_type = "enum-variant"]
28295#[determine_by = "resourceType"]
28296pub enum Resource {
28297    IdentityProvider(IdentityProvider),
28298    Membership(Membership),
28299    Project(Project),
28300    AccessPolicyV2(AccessPolicyV2),
28301    ClientApplication(ClientApplication),
28302    User(User),
28303    Account(Account),
28304    ActivityDefinition(ActivityDefinition),
28305    AdverseEvent(AdverseEvent),
28306    AllergyIntolerance(AllergyIntolerance),
28307    Appointment(Appointment),
28308    AppointmentResponse(AppointmentResponse),
28309    AuditEvent(AuditEvent),
28310    Basic(Basic),
28311    Binary(Binary),
28312    BiologicallyDerivedProduct(BiologicallyDerivedProduct),
28313    BodyStructure(BodyStructure),
28314    Bundle(Bundle),
28315    CapabilityStatement(CapabilityStatement),
28316    CarePlan(CarePlan),
28317    CareTeam(CareTeam),
28318    CatalogEntry(CatalogEntry),
28319    ChargeItem(ChargeItem),
28320    ChargeItemDefinition(ChargeItemDefinition),
28321    Claim(Claim),
28322    ClaimResponse(ClaimResponse),
28323    ClinicalImpression(ClinicalImpression),
28324    CodeSystem(CodeSystem),
28325    Communication(Communication),
28326    CommunicationRequest(CommunicationRequest),
28327    CompartmentDefinition(CompartmentDefinition),
28328    Composition(Composition),
28329    ConceptMap(ConceptMap),
28330    Condition(Condition),
28331    Consent(Consent),
28332    Contract(Contract),
28333    Coverage(Coverage),
28334    CoverageEligibilityRequest(CoverageEligibilityRequest),
28335    CoverageEligibilityResponse(CoverageEligibilityResponse),
28336    DetectedIssue(DetectedIssue),
28337    Device(Device),
28338    DeviceDefinition(DeviceDefinition),
28339    DeviceMetric(DeviceMetric),
28340    DeviceRequest(DeviceRequest),
28341    DeviceUseStatement(DeviceUseStatement),
28342    DiagnosticReport(DiagnosticReport),
28343    DocumentManifest(DocumentManifest),
28344    DocumentReference(DocumentReference),
28345    EffectEvidenceSynthesis(EffectEvidenceSynthesis),
28346    Encounter(Encounter),
28347    Endpoint(Endpoint),
28348    EnrollmentRequest(EnrollmentRequest),
28349    EnrollmentResponse(EnrollmentResponse),
28350    EpisodeOfCare(EpisodeOfCare),
28351    EventDefinition(EventDefinition),
28352    Evidence(Evidence),
28353    EvidenceVariable(EvidenceVariable),
28354    ExampleScenario(ExampleScenario),
28355    ExplanationOfBenefit(ExplanationOfBenefit),
28356    FamilyMemberHistory(FamilyMemberHistory),
28357    Flag(Flag),
28358    Goal(Goal),
28359    GraphDefinition(GraphDefinition),
28360    Group(Group),
28361    GuidanceResponse(GuidanceResponse),
28362    HealthcareService(HealthcareService),
28363    ImagingStudy(ImagingStudy),
28364    Immunization(Immunization),
28365    ImmunizationEvaluation(ImmunizationEvaluation),
28366    ImmunizationRecommendation(ImmunizationRecommendation),
28367    ImplementationGuide(ImplementationGuide),
28368    InsurancePlan(InsurancePlan),
28369    Invoice(Invoice),
28370    Library(Library),
28371    Linkage(Linkage),
28372    List(List),
28373    Location(Location),
28374    Measure(Measure),
28375    MeasureReport(MeasureReport),
28376    Media(Media),
28377    Medication(Medication),
28378    MedicationAdministration(MedicationAdministration),
28379    MedicationDispense(MedicationDispense),
28380    MedicationKnowledge(MedicationKnowledge),
28381    MedicationRequest(MedicationRequest),
28382    MedicationStatement(MedicationStatement),
28383    MedicinalProduct(MedicinalProduct),
28384    MedicinalProductAuthorization(MedicinalProductAuthorization),
28385    MedicinalProductContraindication(MedicinalProductContraindication),
28386    MedicinalProductIndication(MedicinalProductIndication),
28387    MedicinalProductIngredient(MedicinalProductIngredient),
28388    MedicinalProductInteraction(MedicinalProductInteraction),
28389    MedicinalProductManufactured(MedicinalProductManufactured),
28390    MedicinalProductPackaged(MedicinalProductPackaged),
28391    MedicinalProductPharmaceutical(MedicinalProductPharmaceutical),
28392    MedicinalProductUndesirableEffect(MedicinalProductUndesirableEffect),
28393    MessageDefinition(MessageDefinition),
28394    MessageHeader(MessageHeader),
28395    MolecularSequence(MolecularSequence),
28396    NamingSystem(NamingSystem),
28397    NutritionOrder(NutritionOrder),
28398    Observation(Observation),
28399    ObservationDefinition(ObservationDefinition),
28400    OperationDefinition(OperationDefinition),
28401    OperationOutcome(OperationOutcome),
28402    Organization(Organization),
28403    OrganizationAffiliation(OrganizationAffiliation),
28404    Parameters(Parameters),
28405    Patient(Patient),
28406    PaymentNotice(PaymentNotice),
28407    PaymentReconciliation(PaymentReconciliation),
28408    Person(Person),
28409    PlanDefinition(PlanDefinition),
28410    Practitioner(Practitioner),
28411    PractitionerRole(PractitionerRole),
28412    Procedure(Procedure),
28413    Provenance(Provenance),
28414    Questionnaire(Questionnaire),
28415    QuestionnaireResponse(QuestionnaireResponse),
28416    RelatedPerson(RelatedPerson),
28417    RequestGroup(RequestGroup),
28418    ResearchDefinition(ResearchDefinition),
28419    ResearchElementDefinition(ResearchElementDefinition),
28420    ResearchStudy(ResearchStudy),
28421    ResearchSubject(ResearchSubject),
28422    RiskAssessment(RiskAssessment),
28423    RiskEvidenceSynthesis(RiskEvidenceSynthesis),
28424    Schedule(Schedule),
28425    SearchParameter(SearchParameter),
28426    ServiceRequest(ServiceRequest),
28427    Slot(Slot),
28428    Specimen(Specimen),
28429    SpecimenDefinition(SpecimenDefinition),
28430    StructureDefinition(StructureDefinition),
28431    StructureMap(StructureMap),
28432    Subscription(Subscription),
28433    Substance(Substance),
28434    SubstanceNucleicAcid(SubstanceNucleicAcid),
28435    SubstancePolymer(SubstancePolymer),
28436    SubstanceProtein(SubstanceProtein),
28437    SubstanceReferenceInformation(SubstanceReferenceInformation),
28438    SubstanceSourceMaterial(SubstanceSourceMaterial),
28439    SubstanceSpecification(SubstanceSpecification),
28440    SupplyDelivery(SupplyDelivery),
28441    SupplyRequest(SupplyRequest),
28442    Task(Task),
28443    TerminologyCapabilities(TerminologyCapabilities),
28444    TestReport(TestReport),
28445    TestScript(TestScript),
28446    ValueSet(ValueSet),
28447    VerificationResult(VerificationResult),
28448    VisionPrescription(VisionPrescription),
28449}
28450impl Resource {
28451    pub fn resource_type(&self) -> ResourceType {
28452        match self {
28453            Resource::IdentityProvider(_) => ResourceType::IdentityProvider,
28454            Resource::Membership(_) => ResourceType::Membership,
28455            Resource::Project(_) => ResourceType::Project,
28456            Resource::AccessPolicyV2(_) => ResourceType::AccessPolicyV2,
28457            Resource::ClientApplication(_) => ResourceType::ClientApplication,
28458            Resource::User(_) => ResourceType::User,
28459            Resource::Account(_) => ResourceType::Account,
28460            Resource::ActivityDefinition(_) => ResourceType::ActivityDefinition,
28461            Resource::AdverseEvent(_) => ResourceType::AdverseEvent,
28462            Resource::AllergyIntolerance(_) => ResourceType::AllergyIntolerance,
28463            Resource::Appointment(_) => ResourceType::Appointment,
28464            Resource::AppointmentResponse(_) => ResourceType::AppointmentResponse,
28465            Resource::AuditEvent(_) => ResourceType::AuditEvent,
28466            Resource::Basic(_) => ResourceType::Basic,
28467            Resource::Binary(_) => ResourceType::Binary,
28468            Resource::BiologicallyDerivedProduct(_) => ResourceType::BiologicallyDerivedProduct,
28469            Resource::BodyStructure(_) => ResourceType::BodyStructure,
28470            Resource::Bundle(_) => ResourceType::Bundle,
28471            Resource::CapabilityStatement(_) => ResourceType::CapabilityStatement,
28472            Resource::CarePlan(_) => ResourceType::CarePlan,
28473            Resource::CareTeam(_) => ResourceType::CareTeam,
28474            Resource::CatalogEntry(_) => ResourceType::CatalogEntry,
28475            Resource::ChargeItem(_) => ResourceType::ChargeItem,
28476            Resource::ChargeItemDefinition(_) => ResourceType::ChargeItemDefinition,
28477            Resource::Claim(_) => ResourceType::Claim,
28478            Resource::ClaimResponse(_) => ResourceType::ClaimResponse,
28479            Resource::ClinicalImpression(_) => ResourceType::ClinicalImpression,
28480            Resource::CodeSystem(_) => ResourceType::CodeSystem,
28481            Resource::Communication(_) => ResourceType::Communication,
28482            Resource::CommunicationRequest(_) => ResourceType::CommunicationRequest,
28483            Resource::CompartmentDefinition(_) => ResourceType::CompartmentDefinition,
28484            Resource::Composition(_) => ResourceType::Composition,
28485            Resource::ConceptMap(_) => ResourceType::ConceptMap,
28486            Resource::Condition(_) => ResourceType::Condition,
28487            Resource::Consent(_) => ResourceType::Consent,
28488            Resource::Contract(_) => ResourceType::Contract,
28489            Resource::Coverage(_) => ResourceType::Coverage,
28490            Resource::CoverageEligibilityRequest(_) => ResourceType::CoverageEligibilityRequest,
28491            Resource::CoverageEligibilityResponse(_) => ResourceType::CoverageEligibilityResponse,
28492            Resource::DetectedIssue(_) => ResourceType::DetectedIssue,
28493            Resource::Device(_) => ResourceType::Device,
28494            Resource::DeviceDefinition(_) => ResourceType::DeviceDefinition,
28495            Resource::DeviceMetric(_) => ResourceType::DeviceMetric,
28496            Resource::DeviceRequest(_) => ResourceType::DeviceRequest,
28497            Resource::DeviceUseStatement(_) => ResourceType::DeviceUseStatement,
28498            Resource::DiagnosticReport(_) => ResourceType::DiagnosticReport,
28499            Resource::DocumentManifest(_) => ResourceType::DocumentManifest,
28500            Resource::DocumentReference(_) => ResourceType::DocumentReference,
28501            Resource::EffectEvidenceSynthesis(_) => ResourceType::EffectEvidenceSynthesis,
28502            Resource::Encounter(_) => ResourceType::Encounter,
28503            Resource::Endpoint(_) => ResourceType::Endpoint,
28504            Resource::EnrollmentRequest(_) => ResourceType::EnrollmentRequest,
28505            Resource::EnrollmentResponse(_) => ResourceType::EnrollmentResponse,
28506            Resource::EpisodeOfCare(_) => ResourceType::EpisodeOfCare,
28507            Resource::EventDefinition(_) => ResourceType::EventDefinition,
28508            Resource::Evidence(_) => ResourceType::Evidence,
28509            Resource::EvidenceVariable(_) => ResourceType::EvidenceVariable,
28510            Resource::ExampleScenario(_) => ResourceType::ExampleScenario,
28511            Resource::ExplanationOfBenefit(_) => ResourceType::ExplanationOfBenefit,
28512            Resource::FamilyMemberHistory(_) => ResourceType::FamilyMemberHistory,
28513            Resource::Flag(_) => ResourceType::Flag,
28514            Resource::Goal(_) => ResourceType::Goal,
28515            Resource::GraphDefinition(_) => ResourceType::GraphDefinition,
28516            Resource::Group(_) => ResourceType::Group,
28517            Resource::GuidanceResponse(_) => ResourceType::GuidanceResponse,
28518            Resource::HealthcareService(_) => ResourceType::HealthcareService,
28519            Resource::ImagingStudy(_) => ResourceType::ImagingStudy,
28520            Resource::Immunization(_) => ResourceType::Immunization,
28521            Resource::ImmunizationEvaluation(_) => ResourceType::ImmunizationEvaluation,
28522            Resource::ImmunizationRecommendation(_) => ResourceType::ImmunizationRecommendation,
28523            Resource::ImplementationGuide(_) => ResourceType::ImplementationGuide,
28524            Resource::InsurancePlan(_) => ResourceType::InsurancePlan,
28525            Resource::Invoice(_) => ResourceType::Invoice,
28526            Resource::Library(_) => ResourceType::Library,
28527            Resource::Linkage(_) => ResourceType::Linkage,
28528            Resource::List(_) => ResourceType::List,
28529            Resource::Location(_) => ResourceType::Location,
28530            Resource::Measure(_) => ResourceType::Measure,
28531            Resource::MeasureReport(_) => ResourceType::MeasureReport,
28532            Resource::Media(_) => ResourceType::Media,
28533            Resource::Medication(_) => ResourceType::Medication,
28534            Resource::MedicationAdministration(_) => ResourceType::MedicationAdministration,
28535            Resource::MedicationDispense(_) => ResourceType::MedicationDispense,
28536            Resource::MedicationKnowledge(_) => ResourceType::MedicationKnowledge,
28537            Resource::MedicationRequest(_) => ResourceType::MedicationRequest,
28538            Resource::MedicationStatement(_) => ResourceType::MedicationStatement,
28539            Resource::MedicinalProduct(_) => ResourceType::MedicinalProduct,
28540            Resource::MedicinalProductAuthorization(_) => {
28541                ResourceType::MedicinalProductAuthorization
28542            }
28543            Resource::MedicinalProductContraindication(_) => {
28544                ResourceType::MedicinalProductContraindication
28545            }
28546            Resource::MedicinalProductIndication(_) => ResourceType::MedicinalProductIndication,
28547            Resource::MedicinalProductIngredient(_) => ResourceType::MedicinalProductIngredient,
28548            Resource::MedicinalProductInteraction(_) => ResourceType::MedicinalProductInteraction,
28549            Resource::MedicinalProductManufactured(_) => ResourceType::MedicinalProductManufactured,
28550            Resource::MedicinalProductPackaged(_) => ResourceType::MedicinalProductPackaged,
28551            Resource::MedicinalProductPharmaceutical(_) => {
28552                ResourceType::MedicinalProductPharmaceutical
28553            }
28554            Resource::MedicinalProductUndesirableEffect(_) => {
28555                ResourceType::MedicinalProductUndesirableEffect
28556            }
28557            Resource::MessageDefinition(_) => ResourceType::MessageDefinition,
28558            Resource::MessageHeader(_) => ResourceType::MessageHeader,
28559            Resource::MolecularSequence(_) => ResourceType::MolecularSequence,
28560            Resource::NamingSystem(_) => ResourceType::NamingSystem,
28561            Resource::NutritionOrder(_) => ResourceType::NutritionOrder,
28562            Resource::Observation(_) => ResourceType::Observation,
28563            Resource::ObservationDefinition(_) => ResourceType::ObservationDefinition,
28564            Resource::OperationDefinition(_) => ResourceType::OperationDefinition,
28565            Resource::OperationOutcome(_) => ResourceType::OperationOutcome,
28566            Resource::Organization(_) => ResourceType::Organization,
28567            Resource::OrganizationAffiliation(_) => ResourceType::OrganizationAffiliation,
28568            Resource::Parameters(_) => ResourceType::Parameters,
28569            Resource::Patient(_) => ResourceType::Patient,
28570            Resource::PaymentNotice(_) => ResourceType::PaymentNotice,
28571            Resource::PaymentReconciliation(_) => ResourceType::PaymentReconciliation,
28572            Resource::Person(_) => ResourceType::Person,
28573            Resource::PlanDefinition(_) => ResourceType::PlanDefinition,
28574            Resource::Practitioner(_) => ResourceType::Practitioner,
28575            Resource::PractitionerRole(_) => ResourceType::PractitionerRole,
28576            Resource::Procedure(_) => ResourceType::Procedure,
28577            Resource::Provenance(_) => ResourceType::Provenance,
28578            Resource::Questionnaire(_) => ResourceType::Questionnaire,
28579            Resource::QuestionnaireResponse(_) => ResourceType::QuestionnaireResponse,
28580            Resource::RelatedPerson(_) => ResourceType::RelatedPerson,
28581            Resource::RequestGroup(_) => ResourceType::RequestGroup,
28582            Resource::ResearchDefinition(_) => ResourceType::ResearchDefinition,
28583            Resource::ResearchElementDefinition(_) => ResourceType::ResearchElementDefinition,
28584            Resource::ResearchStudy(_) => ResourceType::ResearchStudy,
28585            Resource::ResearchSubject(_) => ResourceType::ResearchSubject,
28586            Resource::RiskAssessment(_) => ResourceType::RiskAssessment,
28587            Resource::RiskEvidenceSynthesis(_) => ResourceType::RiskEvidenceSynthesis,
28588            Resource::Schedule(_) => ResourceType::Schedule,
28589            Resource::SearchParameter(_) => ResourceType::SearchParameter,
28590            Resource::ServiceRequest(_) => ResourceType::ServiceRequest,
28591            Resource::Slot(_) => ResourceType::Slot,
28592            Resource::Specimen(_) => ResourceType::Specimen,
28593            Resource::SpecimenDefinition(_) => ResourceType::SpecimenDefinition,
28594            Resource::StructureDefinition(_) => ResourceType::StructureDefinition,
28595            Resource::StructureMap(_) => ResourceType::StructureMap,
28596            Resource::Subscription(_) => ResourceType::Subscription,
28597            Resource::Substance(_) => ResourceType::Substance,
28598            Resource::SubstanceNucleicAcid(_) => ResourceType::SubstanceNucleicAcid,
28599            Resource::SubstancePolymer(_) => ResourceType::SubstancePolymer,
28600            Resource::SubstanceProtein(_) => ResourceType::SubstanceProtein,
28601            Resource::SubstanceReferenceInformation(_) => {
28602                ResourceType::SubstanceReferenceInformation
28603            }
28604            Resource::SubstanceSourceMaterial(_) => ResourceType::SubstanceSourceMaterial,
28605            Resource::SubstanceSpecification(_) => ResourceType::SubstanceSpecification,
28606            Resource::SupplyDelivery(_) => ResourceType::SupplyDelivery,
28607            Resource::SupplyRequest(_) => ResourceType::SupplyRequest,
28608            Resource::Task(_) => ResourceType::Task,
28609            Resource::TerminologyCapabilities(_) => ResourceType::TerminologyCapabilities,
28610            Resource::TestReport(_) => ResourceType::TestReport,
28611            Resource::TestScript(_) => ResourceType::TestScript,
28612            Resource::ValueSet(_) => ResourceType::ValueSet,
28613            Resource::VerificationResult(_) => ResourceType::VerificationResult,
28614            Resource::VisionPrescription(_) => ResourceType::VisionPrescription,
28615        }
28616    }
28617    pub fn id<'a>(&'a self) -> &'a Option<String> {
28618        match self {
28619            Resource::IdentityProvider(r) => &r.id,
28620            Resource::Membership(r) => &r.id,
28621            Resource::Project(r) => &r.id,
28622            Resource::AccessPolicyV2(r) => &r.id,
28623            Resource::ClientApplication(r) => &r.id,
28624            Resource::User(r) => &r.id,
28625            Resource::Account(r) => &r.id,
28626            Resource::ActivityDefinition(r) => &r.id,
28627            Resource::AdverseEvent(r) => &r.id,
28628            Resource::AllergyIntolerance(r) => &r.id,
28629            Resource::Appointment(r) => &r.id,
28630            Resource::AppointmentResponse(r) => &r.id,
28631            Resource::AuditEvent(r) => &r.id,
28632            Resource::Basic(r) => &r.id,
28633            Resource::Binary(r) => &r.id,
28634            Resource::BiologicallyDerivedProduct(r) => &r.id,
28635            Resource::BodyStructure(r) => &r.id,
28636            Resource::Bundle(r) => &r.id,
28637            Resource::CapabilityStatement(r) => &r.id,
28638            Resource::CarePlan(r) => &r.id,
28639            Resource::CareTeam(r) => &r.id,
28640            Resource::CatalogEntry(r) => &r.id,
28641            Resource::ChargeItem(r) => &r.id,
28642            Resource::ChargeItemDefinition(r) => &r.id,
28643            Resource::Claim(r) => &r.id,
28644            Resource::ClaimResponse(r) => &r.id,
28645            Resource::ClinicalImpression(r) => &r.id,
28646            Resource::CodeSystem(r) => &r.id,
28647            Resource::Communication(r) => &r.id,
28648            Resource::CommunicationRequest(r) => &r.id,
28649            Resource::CompartmentDefinition(r) => &r.id,
28650            Resource::Composition(r) => &r.id,
28651            Resource::ConceptMap(r) => &r.id,
28652            Resource::Condition(r) => &r.id,
28653            Resource::Consent(r) => &r.id,
28654            Resource::Contract(r) => &r.id,
28655            Resource::Coverage(r) => &r.id,
28656            Resource::CoverageEligibilityRequest(r) => &r.id,
28657            Resource::CoverageEligibilityResponse(r) => &r.id,
28658            Resource::DetectedIssue(r) => &r.id,
28659            Resource::Device(r) => &r.id,
28660            Resource::DeviceDefinition(r) => &r.id,
28661            Resource::DeviceMetric(r) => &r.id,
28662            Resource::DeviceRequest(r) => &r.id,
28663            Resource::DeviceUseStatement(r) => &r.id,
28664            Resource::DiagnosticReport(r) => &r.id,
28665            Resource::DocumentManifest(r) => &r.id,
28666            Resource::DocumentReference(r) => &r.id,
28667            Resource::EffectEvidenceSynthesis(r) => &r.id,
28668            Resource::Encounter(r) => &r.id,
28669            Resource::Endpoint(r) => &r.id,
28670            Resource::EnrollmentRequest(r) => &r.id,
28671            Resource::EnrollmentResponse(r) => &r.id,
28672            Resource::EpisodeOfCare(r) => &r.id,
28673            Resource::EventDefinition(r) => &r.id,
28674            Resource::Evidence(r) => &r.id,
28675            Resource::EvidenceVariable(r) => &r.id,
28676            Resource::ExampleScenario(r) => &r.id,
28677            Resource::ExplanationOfBenefit(r) => &r.id,
28678            Resource::FamilyMemberHistory(r) => &r.id,
28679            Resource::Flag(r) => &r.id,
28680            Resource::Goal(r) => &r.id,
28681            Resource::GraphDefinition(r) => &r.id,
28682            Resource::Group(r) => &r.id,
28683            Resource::GuidanceResponse(r) => &r.id,
28684            Resource::HealthcareService(r) => &r.id,
28685            Resource::ImagingStudy(r) => &r.id,
28686            Resource::Immunization(r) => &r.id,
28687            Resource::ImmunizationEvaluation(r) => &r.id,
28688            Resource::ImmunizationRecommendation(r) => &r.id,
28689            Resource::ImplementationGuide(r) => &r.id,
28690            Resource::InsurancePlan(r) => &r.id,
28691            Resource::Invoice(r) => &r.id,
28692            Resource::Library(r) => &r.id,
28693            Resource::Linkage(r) => &r.id,
28694            Resource::List(r) => &r.id,
28695            Resource::Location(r) => &r.id,
28696            Resource::Measure(r) => &r.id,
28697            Resource::MeasureReport(r) => &r.id,
28698            Resource::Media(r) => &r.id,
28699            Resource::Medication(r) => &r.id,
28700            Resource::MedicationAdministration(r) => &r.id,
28701            Resource::MedicationDispense(r) => &r.id,
28702            Resource::MedicationKnowledge(r) => &r.id,
28703            Resource::MedicationRequest(r) => &r.id,
28704            Resource::MedicationStatement(r) => &r.id,
28705            Resource::MedicinalProduct(r) => &r.id,
28706            Resource::MedicinalProductAuthorization(r) => &r.id,
28707            Resource::MedicinalProductContraindication(r) => &r.id,
28708            Resource::MedicinalProductIndication(r) => &r.id,
28709            Resource::MedicinalProductIngredient(r) => &r.id,
28710            Resource::MedicinalProductInteraction(r) => &r.id,
28711            Resource::MedicinalProductManufactured(r) => &r.id,
28712            Resource::MedicinalProductPackaged(r) => &r.id,
28713            Resource::MedicinalProductPharmaceutical(r) => &r.id,
28714            Resource::MedicinalProductUndesirableEffect(r) => &r.id,
28715            Resource::MessageDefinition(r) => &r.id,
28716            Resource::MessageHeader(r) => &r.id,
28717            Resource::MolecularSequence(r) => &r.id,
28718            Resource::NamingSystem(r) => &r.id,
28719            Resource::NutritionOrder(r) => &r.id,
28720            Resource::Observation(r) => &r.id,
28721            Resource::ObservationDefinition(r) => &r.id,
28722            Resource::OperationDefinition(r) => &r.id,
28723            Resource::OperationOutcome(r) => &r.id,
28724            Resource::Organization(r) => &r.id,
28725            Resource::OrganizationAffiliation(r) => &r.id,
28726            Resource::Parameters(r) => &r.id,
28727            Resource::Patient(r) => &r.id,
28728            Resource::PaymentNotice(r) => &r.id,
28729            Resource::PaymentReconciliation(r) => &r.id,
28730            Resource::Person(r) => &r.id,
28731            Resource::PlanDefinition(r) => &r.id,
28732            Resource::Practitioner(r) => &r.id,
28733            Resource::PractitionerRole(r) => &r.id,
28734            Resource::Procedure(r) => &r.id,
28735            Resource::Provenance(r) => &r.id,
28736            Resource::Questionnaire(r) => &r.id,
28737            Resource::QuestionnaireResponse(r) => &r.id,
28738            Resource::RelatedPerson(r) => &r.id,
28739            Resource::RequestGroup(r) => &r.id,
28740            Resource::ResearchDefinition(r) => &r.id,
28741            Resource::ResearchElementDefinition(r) => &r.id,
28742            Resource::ResearchStudy(r) => &r.id,
28743            Resource::ResearchSubject(r) => &r.id,
28744            Resource::RiskAssessment(r) => &r.id,
28745            Resource::RiskEvidenceSynthesis(r) => &r.id,
28746            Resource::Schedule(r) => &r.id,
28747            Resource::SearchParameter(r) => &r.id,
28748            Resource::ServiceRequest(r) => &r.id,
28749            Resource::Slot(r) => &r.id,
28750            Resource::Specimen(r) => &r.id,
28751            Resource::SpecimenDefinition(r) => &r.id,
28752            Resource::StructureDefinition(r) => &r.id,
28753            Resource::StructureMap(r) => &r.id,
28754            Resource::Subscription(r) => &r.id,
28755            Resource::Substance(r) => &r.id,
28756            Resource::SubstanceNucleicAcid(r) => &r.id,
28757            Resource::SubstancePolymer(r) => &r.id,
28758            Resource::SubstanceProtein(r) => &r.id,
28759            Resource::SubstanceReferenceInformation(r) => &r.id,
28760            Resource::SubstanceSourceMaterial(r) => &r.id,
28761            Resource::SubstanceSpecification(r) => &r.id,
28762            Resource::SupplyDelivery(r) => &r.id,
28763            Resource::SupplyRequest(r) => &r.id,
28764            Resource::Task(r) => &r.id,
28765            Resource::TerminologyCapabilities(r) => &r.id,
28766            Resource::TestReport(r) => &r.id,
28767            Resource::TestScript(r) => &r.id,
28768            Resource::ValueSet(r) => &r.id,
28769            Resource::VerificationResult(r) => &r.id,
28770            Resource::VisionPrescription(r) => &r.id,
28771        }
28772    }
28773}
28774#[derive(Error, Debug)]
28775pub enum ResourceTypeError {
28776    #[error("Invalid resource type: {0}")]
28777    Invalid(String),
28778}
28779#[derive(
28780    Debug, Clone, PartialEq, Eq, Hash, serde :: Deserialize, serde :: Serialize, PartialOrd, Ord,
28781)]
28782pub enum ResourceType {
28783    IdentityProvider,
28784    Membership,
28785    Project,
28786    AccessPolicyV2,
28787    ClientApplication,
28788    User,
28789    Account,
28790    ActivityDefinition,
28791    AdverseEvent,
28792    AllergyIntolerance,
28793    Appointment,
28794    AppointmentResponse,
28795    AuditEvent,
28796    Basic,
28797    Binary,
28798    BiologicallyDerivedProduct,
28799    BodyStructure,
28800    Bundle,
28801    CapabilityStatement,
28802    CarePlan,
28803    CareTeam,
28804    CatalogEntry,
28805    ChargeItem,
28806    ChargeItemDefinition,
28807    Claim,
28808    ClaimResponse,
28809    ClinicalImpression,
28810    CodeSystem,
28811    Communication,
28812    CommunicationRequest,
28813    CompartmentDefinition,
28814    Composition,
28815    ConceptMap,
28816    Condition,
28817    Consent,
28818    Contract,
28819    Coverage,
28820    CoverageEligibilityRequest,
28821    CoverageEligibilityResponse,
28822    DetectedIssue,
28823    Device,
28824    DeviceDefinition,
28825    DeviceMetric,
28826    DeviceRequest,
28827    DeviceUseStatement,
28828    DiagnosticReport,
28829    DocumentManifest,
28830    DocumentReference,
28831    EffectEvidenceSynthesis,
28832    Encounter,
28833    Endpoint,
28834    EnrollmentRequest,
28835    EnrollmentResponse,
28836    EpisodeOfCare,
28837    EventDefinition,
28838    Evidence,
28839    EvidenceVariable,
28840    ExampleScenario,
28841    ExplanationOfBenefit,
28842    FamilyMemberHistory,
28843    Flag,
28844    Goal,
28845    GraphDefinition,
28846    Group,
28847    GuidanceResponse,
28848    HealthcareService,
28849    ImagingStudy,
28850    Immunization,
28851    ImmunizationEvaluation,
28852    ImmunizationRecommendation,
28853    ImplementationGuide,
28854    InsurancePlan,
28855    Invoice,
28856    Library,
28857    Linkage,
28858    List,
28859    Location,
28860    Measure,
28861    MeasureReport,
28862    Media,
28863    Medication,
28864    MedicationAdministration,
28865    MedicationDispense,
28866    MedicationKnowledge,
28867    MedicationRequest,
28868    MedicationStatement,
28869    MedicinalProduct,
28870    MedicinalProductAuthorization,
28871    MedicinalProductContraindication,
28872    MedicinalProductIndication,
28873    MedicinalProductIngredient,
28874    MedicinalProductInteraction,
28875    MedicinalProductManufactured,
28876    MedicinalProductPackaged,
28877    MedicinalProductPharmaceutical,
28878    MedicinalProductUndesirableEffect,
28879    MessageDefinition,
28880    MessageHeader,
28881    MolecularSequence,
28882    NamingSystem,
28883    NutritionOrder,
28884    Observation,
28885    ObservationDefinition,
28886    OperationDefinition,
28887    OperationOutcome,
28888    Organization,
28889    OrganizationAffiliation,
28890    Parameters,
28891    Patient,
28892    PaymentNotice,
28893    PaymentReconciliation,
28894    Person,
28895    PlanDefinition,
28896    Practitioner,
28897    PractitionerRole,
28898    Procedure,
28899    Provenance,
28900    Questionnaire,
28901    QuestionnaireResponse,
28902    RelatedPerson,
28903    RequestGroup,
28904    ResearchDefinition,
28905    ResearchElementDefinition,
28906    ResearchStudy,
28907    ResearchSubject,
28908    RiskAssessment,
28909    RiskEvidenceSynthesis,
28910    Schedule,
28911    SearchParameter,
28912    ServiceRequest,
28913    Slot,
28914    Specimen,
28915    SpecimenDefinition,
28916    StructureDefinition,
28917    StructureMap,
28918    Subscription,
28919    Substance,
28920    SubstanceNucleicAcid,
28921    SubstancePolymer,
28922    SubstanceProtein,
28923    SubstanceReferenceInformation,
28924    SubstanceSourceMaterial,
28925    SubstanceSpecification,
28926    SupplyDelivery,
28927    SupplyRequest,
28928    Task,
28929    TerminologyCapabilities,
28930    TestReport,
28931    TestScript,
28932    ValueSet,
28933    VerificationResult,
28934    VisionPrescription,
28935}
28936impl ResourceType {
28937    pub fn deserialize(
28938        &self,
28939        data: &str,
28940    ) -> Result<Resource, haste_fhir_serialization_json::errors::DeserializeError> {
28941        match self {
28942            ResourceType::IdentityProvider => Ok(Resource::IdentityProvider(
28943                haste_fhir_serialization_json::from_str::<IdentityProvider>(data)?,
28944            )),
28945            ResourceType::Membership => Ok(Resource::Membership(
28946                haste_fhir_serialization_json::from_str::<Membership>(data)?,
28947            )),
28948            ResourceType::Project => Ok(Resource::Project(
28949                haste_fhir_serialization_json::from_str::<Project>(data)?,
28950            )),
28951            ResourceType::AccessPolicyV2 => Ok(Resource::AccessPolicyV2(
28952                haste_fhir_serialization_json::from_str::<AccessPolicyV2>(data)?,
28953            )),
28954            ResourceType::ClientApplication => Ok(Resource::ClientApplication(
28955                haste_fhir_serialization_json::from_str::<ClientApplication>(data)?,
28956            )),
28957            ResourceType::User => Ok(Resource::User(haste_fhir_serialization_json::from_str::<
28958                User,
28959            >(data)?)),
28960            ResourceType::Account => Ok(Resource::Account(
28961                haste_fhir_serialization_json::from_str::<Account>(data)?,
28962            )),
28963            ResourceType::ActivityDefinition => Ok(Resource::ActivityDefinition(
28964                haste_fhir_serialization_json::from_str::<ActivityDefinition>(data)?,
28965            )),
28966            ResourceType::AdverseEvent => Ok(Resource::AdverseEvent(
28967                haste_fhir_serialization_json::from_str::<AdverseEvent>(data)?,
28968            )),
28969            ResourceType::AllergyIntolerance => Ok(Resource::AllergyIntolerance(
28970                haste_fhir_serialization_json::from_str::<AllergyIntolerance>(data)?,
28971            )),
28972            ResourceType::Appointment => Ok(Resource::Appointment(
28973                haste_fhir_serialization_json::from_str::<Appointment>(data)?,
28974            )),
28975            ResourceType::AppointmentResponse => Ok(Resource::AppointmentResponse(
28976                haste_fhir_serialization_json::from_str::<AppointmentResponse>(data)?,
28977            )),
28978            ResourceType::AuditEvent => Ok(Resource::AuditEvent(
28979                haste_fhir_serialization_json::from_str::<AuditEvent>(data)?,
28980            )),
28981            ResourceType::Basic => Ok(Resource::Basic(haste_fhir_serialization_json::from_str::<
28982                Basic,
28983            >(data)?)),
28984            ResourceType::Binary => {
28985                Ok(Resource::Binary(haste_fhir_serialization_json::from_str::<
28986                    Binary,
28987                >(data)?))
28988            }
28989            ResourceType::BiologicallyDerivedProduct => Ok(Resource::BiologicallyDerivedProduct(
28990                haste_fhir_serialization_json::from_str::<BiologicallyDerivedProduct>(data)?,
28991            )),
28992            ResourceType::BodyStructure => Ok(Resource::BodyStructure(
28993                haste_fhir_serialization_json::from_str::<BodyStructure>(data)?,
28994            )),
28995            ResourceType::Bundle => {
28996                Ok(Resource::Bundle(haste_fhir_serialization_json::from_str::<
28997                    Bundle,
28998                >(data)?))
28999            }
29000            ResourceType::CapabilityStatement => Ok(Resource::CapabilityStatement(
29001                haste_fhir_serialization_json::from_str::<CapabilityStatement>(data)?,
29002            )),
29003            ResourceType::CarePlan => Ok(Resource::CarePlan(
29004                haste_fhir_serialization_json::from_str::<CarePlan>(data)?,
29005            )),
29006            ResourceType::CareTeam => Ok(Resource::CareTeam(
29007                haste_fhir_serialization_json::from_str::<CareTeam>(data)?,
29008            )),
29009            ResourceType::CatalogEntry => Ok(Resource::CatalogEntry(
29010                haste_fhir_serialization_json::from_str::<CatalogEntry>(data)?,
29011            )),
29012            ResourceType::ChargeItem => Ok(Resource::ChargeItem(
29013                haste_fhir_serialization_json::from_str::<ChargeItem>(data)?,
29014            )),
29015            ResourceType::ChargeItemDefinition => Ok(Resource::ChargeItemDefinition(
29016                haste_fhir_serialization_json::from_str::<ChargeItemDefinition>(data)?,
29017            )),
29018            ResourceType::Claim => Ok(Resource::Claim(haste_fhir_serialization_json::from_str::<
29019                Claim,
29020            >(data)?)),
29021            ResourceType::ClaimResponse => Ok(Resource::ClaimResponse(
29022                haste_fhir_serialization_json::from_str::<ClaimResponse>(data)?,
29023            )),
29024            ResourceType::ClinicalImpression => Ok(Resource::ClinicalImpression(
29025                haste_fhir_serialization_json::from_str::<ClinicalImpression>(data)?,
29026            )),
29027            ResourceType::CodeSystem => Ok(Resource::CodeSystem(
29028                haste_fhir_serialization_json::from_str::<CodeSystem>(data)?,
29029            )),
29030            ResourceType::Communication => Ok(Resource::Communication(
29031                haste_fhir_serialization_json::from_str::<Communication>(data)?,
29032            )),
29033            ResourceType::CommunicationRequest => Ok(Resource::CommunicationRequest(
29034                haste_fhir_serialization_json::from_str::<CommunicationRequest>(data)?,
29035            )),
29036            ResourceType::CompartmentDefinition => Ok(Resource::CompartmentDefinition(
29037                haste_fhir_serialization_json::from_str::<CompartmentDefinition>(data)?,
29038            )),
29039            ResourceType::Composition => Ok(Resource::Composition(
29040                haste_fhir_serialization_json::from_str::<Composition>(data)?,
29041            )),
29042            ResourceType::ConceptMap => Ok(Resource::ConceptMap(
29043                haste_fhir_serialization_json::from_str::<ConceptMap>(data)?,
29044            )),
29045            ResourceType::Condition => Ok(Resource::Condition(
29046                haste_fhir_serialization_json::from_str::<Condition>(data)?,
29047            )),
29048            ResourceType::Consent => Ok(Resource::Consent(
29049                haste_fhir_serialization_json::from_str::<Consent>(data)?,
29050            )),
29051            ResourceType::Contract => Ok(Resource::Contract(
29052                haste_fhir_serialization_json::from_str::<Contract>(data)?,
29053            )),
29054            ResourceType::Coverage => Ok(Resource::Coverage(
29055                haste_fhir_serialization_json::from_str::<Coverage>(data)?,
29056            )),
29057            ResourceType::CoverageEligibilityRequest => Ok(Resource::CoverageEligibilityRequest(
29058                haste_fhir_serialization_json::from_str::<CoverageEligibilityRequest>(data)?,
29059            )),
29060            ResourceType::CoverageEligibilityResponse => Ok(Resource::CoverageEligibilityResponse(
29061                haste_fhir_serialization_json::from_str::<CoverageEligibilityResponse>(data)?,
29062            )),
29063            ResourceType::DetectedIssue => Ok(Resource::DetectedIssue(
29064                haste_fhir_serialization_json::from_str::<DetectedIssue>(data)?,
29065            )),
29066            ResourceType::Device => {
29067                Ok(Resource::Device(haste_fhir_serialization_json::from_str::<
29068                    Device,
29069                >(data)?))
29070            }
29071            ResourceType::DeviceDefinition => Ok(Resource::DeviceDefinition(
29072                haste_fhir_serialization_json::from_str::<DeviceDefinition>(data)?,
29073            )),
29074            ResourceType::DeviceMetric => Ok(Resource::DeviceMetric(
29075                haste_fhir_serialization_json::from_str::<DeviceMetric>(data)?,
29076            )),
29077            ResourceType::DeviceRequest => Ok(Resource::DeviceRequest(
29078                haste_fhir_serialization_json::from_str::<DeviceRequest>(data)?,
29079            )),
29080            ResourceType::DeviceUseStatement => Ok(Resource::DeviceUseStatement(
29081                haste_fhir_serialization_json::from_str::<DeviceUseStatement>(data)?,
29082            )),
29083            ResourceType::DiagnosticReport => Ok(Resource::DiagnosticReport(
29084                haste_fhir_serialization_json::from_str::<DiagnosticReport>(data)?,
29085            )),
29086            ResourceType::DocumentManifest => Ok(Resource::DocumentManifest(
29087                haste_fhir_serialization_json::from_str::<DocumentManifest>(data)?,
29088            )),
29089            ResourceType::DocumentReference => Ok(Resource::DocumentReference(
29090                haste_fhir_serialization_json::from_str::<DocumentReference>(data)?,
29091            )),
29092            ResourceType::EffectEvidenceSynthesis => Ok(Resource::EffectEvidenceSynthesis(
29093                haste_fhir_serialization_json::from_str::<EffectEvidenceSynthesis>(data)?,
29094            )),
29095            ResourceType::Encounter => Ok(Resource::Encounter(
29096                haste_fhir_serialization_json::from_str::<Encounter>(data)?,
29097            )),
29098            ResourceType::Endpoint => Ok(Resource::Endpoint(
29099                haste_fhir_serialization_json::from_str::<Endpoint>(data)?,
29100            )),
29101            ResourceType::EnrollmentRequest => Ok(Resource::EnrollmentRequest(
29102                haste_fhir_serialization_json::from_str::<EnrollmentRequest>(data)?,
29103            )),
29104            ResourceType::EnrollmentResponse => Ok(Resource::EnrollmentResponse(
29105                haste_fhir_serialization_json::from_str::<EnrollmentResponse>(data)?,
29106            )),
29107            ResourceType::EpisodeOfCare => Ok(Resource::EpisodeOfCare(
29108                haste_fhir_serialization_json::from_str::<EpisodeOfCare>(data)?,
29109            )),
29110            ResourceType::EventDefinition => Ok(Resource::EventDefinition(
29111                haste_fhir_serialization_json::from_str::<EventDefinition>(data)?,
29112            )),
29113            ResourceType::Evidence => Ok(Resource::Evidence(
29114                haste_fhir_serialization_json::from_str::<Evidence>(data)?,
29115            )),
29116            ResourceType::EvidenceVariable => Ok(Resource::EvidenceVariable(
29117                haste_fhir_serialization_json::from_str::<EvidenceVariable>(data)?,
29118            )),
29119            ResourceType::ExampleScenario => Ok(Resource::ExampleScenario(
29120                haste_fhir_serialization_json::from_str::<ExampleScenario>(data)?,
29121            )),
29122            ResourceType::ExplanationOfBenefit => Ok(Resource::ExplanationOfBenefit(
29123                haste_fhir_serialization_json::from_str::<ExplanationOfBenefit>(data)?,
29124            )),
29125            ResourceType::FamilyMemberHistory => Ok(Resource::FamilyMemberHistory(
29126                haste_fhir_serialization_json::from_str::<FamilyMemberHistory>(data)?,
29127            )),
29128            ResourceType::Flag => Ok(Resource::Flag(haste_fhir_serialization_json::from_str::<
29129                Flag,
29130            >(data)?)),
29131            ResourceType::Goal => Ok(Resource::Goal(haste_fhir_serialization_json::from_str::<
29132                Goal,
29133            >(data)?)),
29134            ResourceType::GraphDefinition => Ok(Resource::GraphDefinition(
29135                haste_fhir_serialization_json::from_str::<GraphDefinition>(data)?,
29136            )),
29137            ResourceType::Group => Ok(Resource::Group(haste_fhir_serialization_json::from_str::<
29138                Group,
29139            >(data)?)),
29140            ResourceType::GuidanceResponse => Ok(Resource::GuidanceResponse(
29141                haste_fhir_serialization_json::from_str::<GuidanceResponse>(data)?,
29142            )),
29143            ResourceType::HealthcareService => Ok(Resource::HealthcareService(
29144                haste_fhir_serialization_json::from_str::<HealthcareService>(data)?,
29145            )),
29146            ResourceType::ImagingStudy => Ok(Resource::ImagingStudy(
29147                haste_fhir_serialization_json::from_str::<ImagingStudy>(data)?,
29148            )),
29149            ResourceType::Immunization => Ok(Resource::Immunization(
29150                haste_fhir_serialization_json::from_str::<Immunization>(data)?,
29151            )),
29152            ResourceType::ImmunizationEvaluation => Ok(Resource::ImmunizationEvaluation(
29153                haste_fhir_serialization_json::from_str::<ImmunizationEvaluation>(data)?,
29154            )),
29155            ResourceType::ImmunizationRecommendation => Ok(Resource::ImmunizationRecommendation(
29156                haste_fhir_serialization_json::from_str::<ImmunizationRecommendation>(data)?,
29157            )),
29158            ResourceType::ImplementationGuide => Ok(Resource::ImplementationGuide(
29159                haste_fhir_serialization_json::from_str::<ImplementationGuide>(data)?,
29160            )),
29161            ResourceType::InsurancePlan => Ok(Resource::InsurancePlan(
29162                haste_fhir_serialization_json::from_str::<InsurancePlan>(data)?,
29163            )),
29164            ResourceType::Invoice => Ok(Resource::Invoice(
29165                haste_fhir_serialization_json::from_str::<Invoice>(data)?,
29166            )),
29167            ResourceType::Library => Ok(Resource::Library(
29168                haste_fhir_serialization_json::from_str::<Library>(data)?,
29169            )),
29170            ResourceType::Linkage => Ok(Resource::Linkage(
29171                haste_fhir_serialization_json::from_str::<Linkage>(data)?,
29172            )),
29173            ResourceType::List => Ok(Resource::List(haste_fhir_serialization_json::from_str::<
29174                List,
29175            >(data)?)),
29176            ResourceType::Location => Ok(Resource::Location(
29177                haste_fhir_serialization_json::from_str::<Location>(data)?,
29178            )),
29179            ResourceType::Measure => Ok(Resource::Measure(
29180                haste_fhir_serialization_json::from_str::<Measure>(data)?,
29181            )),
29182            ResourceType::MeasureReport => Ok(Resource::MeasureReport(
29183                haste_fhir_serialization_json::from_str::<MeasureReport>(data)?,
29184            )),
29185            ResourceType::Media => Ok(Resource::Media(haste_fhir_serialization_json::from_str::<
29186                Media,
29187            >(data)?)),
29188            ResourceType::Medication => Ok(Resource::Medication(
29189                haste_fhir_serialization_json::from_str::<Medication>(data)?,
29190            )),
29191            ResourceType::MedicationAdministration => Ok(Resource::MedicationAdministration(
29192                haste_fhir_serialization_json::from_str::<MedicationAdministration>(data)?,
29193            )),
29194            ResourceType::MedicationDispense => Ok(Resource::MedicationDispense(
29195                haste_fhir_serialization_json::from_str::<MedicationDispense>(data)?,
29196            )),
29197            ResourceType::MedicationKnowledge => Ok(Resource::MedicationKnowledge(
29198                haste_fhir_serialization_json::from_str::<MedicationKnowledge>(data)?,
29199            )),
29200            ResourceType::MedicationRequest => Ok(Resource::MedicationRequest(
29201                haste_fhir_serialization_json::from_str::<MedicationRequest>(data)?,
29202            )),
29203            ResourceType::MedicationStatement => Ok(Resource::MedicationStatement(
29204                haste_fhir_serialization_json::from_str::<MedicationStatement>(data)?,
29205            )),
29206            ResourceType::MedicinalProduct => Ok(Resource::MedicinalProduct(
29207                haste_fhir_serialization_json::from_str::<MedicinalProduct>(data)?,
29208            )),
29209            ResourceType::MedicinalProductAuthorization => {
29210                Ok(Resource::MedicinalProductAuthorization(
29211                    haste_fhir_serialization_json::from_str::<MedicinalProductAuthorization>(data)?,
29212                ))
29213            }
29214            ResourceType::MedicinalProductContraindication => {
29215                Ok(Resource::MedicinalProductContraindication(
29216                    haste_fhir_serialization_json::from_str::<MedicinalProductContraindication>(
29217                        data,
29218                    )?,
29219                ))
29220            }
29221            ResourceType::MedicinalProductIndication => Ok(Resource::MedicinalProductIndication(
29222                haste_fhir_serialization_json::from_str::<MedicinalProductIndication>(data)?,
29223            )),
29224            ResourceType::MedicinalProductIngredient => Ok(Resource::MedicinalProductIngredient(
29225                haste_fhir_serialization_json::from_str::<MedicinalProductIngredient>(data)?,
29226            )),
29227            ResourceType::MedicinalProductInteraction => Ok(Resource::MedicinalProductInteraction(
29228                haste_fhir_serialization_json::from_str::<MedicinalProductInteraction>(data)?,
29229            )),
29230            ResourceType::MedicinalProductManufactured => {
29231                Ok(Resource::MedicinalProductManufactured(
29232                    haste_fhir_serialization_json::from_str::<MedicinalProductManufactured>(data)?,
29233                ))
29234            }
29235            ResourceType::MedicinalProductPackaged => Ok(Resource::MedicinalProductPackaged(
29236                haste_fhir_serialization_json::from_str::<MedicinalProductPackaged>(data)?,
29237            )),
29238            ResourceType::MedicinalProductPharmaceutical => {
29239                Ok(Resource::MedicinalProductPharmaceutical(
29240                    haste_fhir_serialization_json::from_str::<MedicinalProductPharmaceutical>(
29241                        data,
29242                    )?,
29243                ))
29244            }
29245            ResourceType::MedicinalProductUndesirableEffect => {
29246                Ok(Resource::MedicinalProductUndesirableEffect(
29247                    haste_fhir_serialization_json::from_str::<MedicinalProductUndesirableEffect>(
29248                        data,
29249                    )?,
29250                ))
29251            }
29252            ResourceType::MessageDefinition => Ok(Resource::MessageDefinition(
29253                haste_fhir_serialization_json::from_str::<MessageDefinition>(data)?,
29254            )),
29255            ResourceType::MessageHeader => Ok(Resource::MessageHeader(
29256                haste_fhir_serialization_json::from_str::<MessageHeader>(data)?,
29257            )),
29258            ResourceType::MolecularSequence => Ok(Resource::MolecularSequence(
29259                haste_fhir_serialization_json::from_str::<MolecularSequence>(data)?,
29260            )),
29261            ResourceType::NamingSystem => Ok(Resource::NamingSystem(
29262                haste_fhir_serialization_json::from_str::<NamingSystem>(data)?,
29263            )),
29264            ResourceType::NutritionOrder => Ok(Resource::NutritionOrder(
29265                haste_fhir_serialization_json::from_str::<NutritionOrder>(data)?,
29266            )),
29267            ResourceType::Observation => Ok(Resource::Observation(
29268                haste_fhir_serialization_json::from_str::<Observation>(data)?,
29269            )),
29270            ResourceType::ObservationDefinition => Ok(Resource::ObservationDefinition(
29271                haste_fhir_serialization_json::from_str::<ObservationDefinition>(data)?,
29272            )),
29273            ResourceType::OperationDefinition => Ok(Resource::OperationDefinition(
29274                haste_fhir_serialization_json::from_str::<OperationDefinition>(data)?,
29275            )),
29276            ResourceType::OperationOutcome => Ok(Resource::OperationOutcome(
29277                haste_fhir_serialization_json::from_str::<OperationOutcome>(data)?,
29278            )),
29279            ResourceType::Organization => Ok(Resource::Organization(
29280                haste_fhir_serialization_json::from_str::<Organization>(data)?,
29281            )),
29282            ResourceType::OrganizationAffiliation => Ok(Resource::OrganizationAffiliation(
29283                haste_fhir_serialization_json::from_str::<OrganizationAffiliation>(data)?,
29284            )),
29285            ResourceType::Parameters => Ok(Resource::Parameters(
29286                haste_fhir_serialization_json::from_str::<Parameters>(data)?,
29287            )),
29288            ResourceType::Patient => Ok(Resource::Patient(
29289                haste_fhir_serialization_json::from_str::<Patient>(data)?,
29290            )),
29291            ResourceType::PaymentNotice => Ok(Resource::PaymentNotice(
29292                haste_fhir_serialization_json::from_str::<PaymentNotice>(data)?,
29293            )),
29294            ResourceType::PaymentReconciliation => Ok(Resource::PaymentReconciliation(
29295                haste_fhir_serialization_json::from_str::<PaymentReconciliation>(data)?,
29296            )),
29297            ResourceType::Person => {
29298                Ok(Resource::Person(haste_fhir_serialization_json::from_str::<
29299                    Person,
29300                >(data)?))
29301            }
29302            ResourceType::PlanDefinition => Ok(Resource::PlanDefinition(
29303                haste_fhir_serialization_json::from_str::<PlanDefinition>(data)?,
29304            )),
29305            ResourceType::Practitioner => Ok(Resource::Practitioner(
29306                haste_fhir_serialization_json::from_str::<Practitioner>(data)?,
29307            )),
29308            ResourceType::PractitionerRole => Ok(Resource::PractitionerRole(
29309                haste_fhir_serialization_json::from_str::<PractitionerRole>(data)?,
29310            )),
29311            ResourceType::Procedure => Ok(Resource::Procedure(
29312                haste_fhir_serialization_json::from_str::<Procedure>(data)?,
29313            )),
29314            ResourceType::Provenance => Ok(Resource::Provenance(
29315                haste_fhir_serialization_json::from_str::<Provenance>(data)?,
29316            )),
29317            ResourceType::Questionnaire => Ok(Resource::Questionnaire(
29318                haste_fhir_serialization_json::from_str::<Questionnaire>(data)?,
29319            )),
29320            ResourceType::QuestionnaireResponse => Ok(Resource::QuestionnaireResponse(
29321                haste_fhir_serialization_json::from_str::<QuestionnaireResponse>(data)?,
29322            )),
29323            ResourceType::RelatedPerson => Ok(Resource::RelatedPerson(
29324                haste_fhir_serialization_json::from_str::<RelatedPerson>(data)?,
29325            )),
29326            ResourceType::RequestGroup => Ok(Resource::RequestGroup(
29327                haste_fhir_serialization_json::from_str::<RequestGroup>(data)?,
29328            )),
29329            ResourceType::ResearchDefinition => Ok(Resource::ResearchDefinition(
29330                haste_fhir_serialization_json::from_str::<ResearchDefinition>(data)?,
29331            )),
29332            ResourceType::ResearchElementDefinition => Ok(Resource::ResearchElementDefinition(
29333                haste_fhir_serialization_json::from_str::<ResearchElementDefinition>(data)?,
29334            )),
29335            ResourceType::ResearchStudy => Ok(Resource::ResearchStudy(
29336                haste_fhir_serialization_json::from_str::<ResearchStudy>(data)?,
29337            )),
29338            ResourceType::ResearchSubject => Ok(Resource::ResearchSubject(
29339                haste_fhir_serialization_json::from_str::<ResearchSubject>(data)?,
29340            )),
29341            ResourceType::RiskAssessment => Ok(Resource::RiskAssessment(
29342                haste_fhir_serialization_json::from_str::<RiskAssessment>(data)?,
29343            )),
29344            ResourceType::RiskEvidenceSynthesis => Ok(Resource::RiskEvidenceSynthesis(
29345                haste_fhir_serialization_json::from_str::<RiskEvidenceSynthesis>(data)?,
29346            )),
29347            ResourceType::Schedule => Ok(Resource::Schedule(
29348                haste_fhir_serialization_json::from_str::<Schedule>(data)?,
29349            )),
29350            ResourceType::SearchParameter => Ok(Resource::SearchParameter(
29351                haste_fhir_serialization_json::from_str::<SearchParameter>(data)?,
29352            )),
29353            ResourceType::ServiceRequest => Ok(Resource::ServiceRequest(
29354                haste_fhir_serialization_json::from_str::<ServiceRequest>(data)?,
29355            )),
29356            ResourceType::Slot => Ok(Resource::Slot(haste_fhir_serialization_json::from_str::<
29357                Slot,
29358            >(data)?)),
29359            ResourceType::Specimen => Ok(Resource::Specimen(
29360                haste_fhir_serialization_json::from_str::<Specimen>(data)?,
29361            )),
29362            ResourceType::SpecimenDefinition => Ok(Resource::SpecimenDefinition(
29363                haste_fhir_serialization_json::from_str::<SpecimenDefinition>(data)?,
29364            )),
29365            ResourceType::StructureDefinition => Ok(Resource::StructureDefinition(
29366                haste_fhir_serialization_json::from_str::<StructureDefinition>(data)?,
29367            )),
29368            ResourceType::StructureMap => Ok(Resource::StructureMap(
29369                haste_fhir_serialization_json::from_str::<StructureMap>(data)?,
29370            )),
29371            ResourceType::Subscription => Ok(Resource::Subscription(
29372                haste_fhir_serialization_json::from_str::<Subscription>(data)?,
29373            )),
29374            ResourceType::Substance => Ok(Resource::Substance(
29375                haste_fhir_serialization_json::from_str::<Substance>(data)?,
29376            )),
29377            ResourceType::SubstanceNucleicAcid => Ok(Resource::SubstanceNucleicAcid(
29378                haste_fhir_serialization_json::from_str::<SubstanceNucleicAcid>(data)?,
29379            )),
29380            ResourceType::SubstancePolymer => Ok(Resource::SubstancePolymer(
29381                haste_fhir_serialization_json::from_str::<SubstancePolymer>(data)?,
29382            )),
29383            ResourceType::SubstanceProtein => Ok(Resource::SubstanceProtein(
29384                haste_fhir_serialization_json::from_str::<SubstanceProtein>(data)?,
29385            )),
29386            ResourceType::SubstanceReferenceInformation => {
29387                Ok(Resource::SubstanceReferenceInformation(
29388                    haste_fhir_serialization_json::from_str::<SubstanceReferenceInformation>(data)?,
29389                ))
29390            }
29391            ResourceType::SubstanceSourceMaterial => Ok(Resource::SubstanceSourceMaterial(
29392                haste_fhir_serialization_json::from_str::<SubstanceSourceMaterial>(data)?,
29393            )),
29394            ResourceType::SubstanceSpecification => Ok(Resource::SubstanceSpecification(
29395                haste_fhir_serialization_json::from_str::<SubstanceSpecification>(data)?,
29396            )),
29397            ResourceType::SupplyDelivery => Ok(Resource::SupplyDelivery(
29398                haste_fhir_serialization_json::from_str::<SupplyDelivery>(data)?,
29399            )),
29400            ResourceType::SupplyRequest => Ok(Resource::SupplyRequest(
29401                haste_fhir_serialization_json::from_str::<SupplyRequest>(data)?,
29402            )),
29403            ResourceType::Task => Ok(Resource::Task(haste_fhir_serialization_json::from_str::<
29404                Task,
29405            >(data)?)),
29406            ResourceType::TerminologyCapabilities => Ok(Resource::TerminologyCapabilities(
29407                haste_fhir_serialization_json::from_str::<TerminologyCapabilities>(data)?,
29408            )),
29409            ResourceType::TestReport => Ok(Resource::TestReport(
29410                haste_fhir_serialization_json::from_str::<TestReport>(data)?,
29411            )),
29412            ResourceType::TestScript => Ok(Resource::TestScript(
29413                haste_fhir_serialization_json::from_str::<TestScript>(data)?,
29414            )),
29415            ResourceType::ValueSet => Ok(Resource::ValueSet(
29416                haste_fhir_serialization_json::from_str::<ValueSet>(data)?,
29417            )),
29418            ResourceType::VerificationResult => Ok(Resource::VerificationResult(
29419                haste_fhir_serialization_json::from_str::<VerificationResult>(data)?,
29420            )),
29421            ResourceType::VisionPrescription => Ok(Resource::VisionPrescription(
29422                haste_fhir_serialization_json::from_str::<VisionPrescription>(data)?,
29423            )),
29424        }
29425    }
29426}
29427impl AsRef<str> for ResourceType {
29428    fn as_ref(&self) -> &str {
29429        match self {
29430            ResourceType::IdentityProvider => "IdentityProvider",
29431            ResourceType::Membership => "Membership",
29432            ResourceType::Project => "Project",
29433            ResourceType::AccessPolicyV2 => "AccessPolicyV2",
29434            ResourceType::ClientApplication => "ClientApplication",
29435            ResourceType::User => "User",
29436            ResourceType::Account => "Account",
29437            ResourceType::ActivityDefinition => "ActivityDefinition",
29438            ResourceType::AdverseEvent => "AdverseEvent",
29439            ResourceType::AllergyIntolerance => "AllergyIntolerance",
29440            ResourceType::Appointment => "Appointment",
29441            ResourceType::AppointmentResponse => "AppointmentResponse",
29442            ResourceType::AuditEvent => "AuditEvent",
29443            ResourceType::Basic => "Basic",
29444            ResourceType::Binary => "Binary",
29445            ResourceType::BiologicallyDerivedProduct => "BiologicallyDerivedProduct",
29446            ResourceType::BodyStructure => "BodyStructure",
29447            ResourceType::Bundle => "Bundle",
29448            ResourceType::CapabilityStatement => "CapabilityStatement",
29449            ResourceType::CarePlan => "CarePlan",
29450            ResourceType::CareTeam => "CareTeam",
29451            ResourceType::CatalogEntry => "CatalogEntry",
29452            ResourceType::ChargeItem => "ChargeItem",
29453            ResourceType::ChargeItemDefinition => "ChargeItemDefinition",
29454            ResourceType::Claim => "Claim",
29455            ResourceType::ClaimResponse => "ClaimResponse",
29456            ResourceType::ClinicalImpression => "ClinicalImpression",
29457            ResourceType::CodeSystem => "CodeSystem",
29458            ResourceType::Communication => "Communication",
29459            ResourceType::CommunicationRequest => "CommunicationRequest",
29460            ResourceType::CompartmentDefinition => "CompartmentDefinition",
29461            ResourceType::Composition => "Composition",
29462            ResourceType::ConceptMap => "ConceptMap",
29463            ResourceType::Condition => "Condition",
29464            ResourceType::Consent => "Consent",
29465            ResourceType::Contract => "Contract",
29466            ResourceType::Coverage => "Coverage",
29467            ResourceType::CoverageEligibilityRequest => "CoverageEligibilityRequest",
29468            ResourceType::CoverageEligibilityResponse => "CoverageEligibilityResponse",
29469            ResourceType::DetectedIssue => "DetectedIssue",
29470            ResourceType::Device => "Device",
29471            ResourceType::DeviceDefinition => "DeviceDefinition",
29472            ResourceType::DeviceMetric => "DeviceMetric",
29473            ResourceType::DeviceRequest => "DeviceRequest",
29474            ResourceType::DeviceUseStatement => "DeviceUseStatement",
29475            ResourceType::DiagnosticReport => "DiagnosticReport",
29476            ResourceType::DocumentManifest => "DocumentManifest",
29477            ResourceType::DocumentReference => "DocumentReference",
29478            ResourceType::EffectEvidenceSynthesis => "EffectEvidenceSynthesis",
29479            ResourceType::Encounter => "Encounter",
29480            ResourceType::Endpoint => "Endpoint",
29481            ResourceType::EnrollmentRequest => "EnrollmentRequest",
29482            ResourceType::EnrollmentResponse => "EnrollmentResponse",
29483            ResourceType::EpisodeOfCare => "EpisodeOfCare",
29484            ResourceType::EventDefinition => "EventDefinition",
29485            ResourceType::Evidence => "Evidence",
29486            ResourceType::EvidenceVariable => "EvidenceVariable",
29487            ResourceType::ExampleScenario => "ExampleScenario",
29488            ResourceType::ExplanationOfBenefit => "ExplanationOfBenefit",
29489            ResourceType::FamilyMemberHistory => "FamilyMemberHistory",
29490            ResourceType::Flag => "Flag",
29491            ResourceType::Goal => "Goal",
29492            ResourceType::GraphDefinition => "GraphDefinition",
29493            ResourceType::Group => "Group",
29494            ResourceType::GuidanceResponse => "GuidanceResponse",
29495            ResourceType::HealthcareService => "HealthcareService",
29496            ResourceType::ImagingStudy => "ImagingStudy",
29497            ResourceType::Immunization => "Immunization",
29498            ResourceType::ImmunizationEvaluation => "ImmunizationEvaluation",
29499            ResourceType::ImmunizationRecommendation => "ImmunizationRecommendation",
29500            ResourceType::ImplementationGuide => "ImplementationGuide",
29501            ResourceType::InsurancePlan => "InsurancePlan",
29502            ResourceType::Invoice => "Invoice",
29503            ResourceType::Library => "Library",
29504            ResourceType::Linkage => "Linkage",
29505            ResourceType::List => "List",
29506            ResourceType::Location => "Location",
29507            ResourceType::Measure => "Measure",
29508            ResourceType::MeasureReport => "MeasureReport",
29509            ResourceType::Media => "Media",
29510            ResourceType::Medication => "Medication",
29511            ResourceType::MedicationAdministration => "MedicationAdministration",
29512            ResourceType::MedicationDispense => "MedicationDispense",
29513            ResourceType::MedicationKnowledge => "MedicationKnowledge",
29514            ResourceType::MedicationRequest => "MedicationRequest",
29515            ResourceType::MedicationStatement => "MedicationStatement",
29516            ResourceType::MedicinalProduct => "MedicinalProduct",
29517            ResourceType::MedicinalProductAuthorization => "MedicinalProductAuthorization",
29518            ResourceType::MedicinalProductContraindication => "MedicinalProductContraindication",
29519            ResourceType::MedicinalProductIndication => "MedicinalProductIndication",
29520            ResourceType::MedicinalProductIngredient => "MedicinalProductIngredient",
29521            ResourceType::MedicinalProductInteraction => "MedicinalProductInteraction",
29522            ResourceType::MedicinalProductManufactured => "MedicinalProductManufactured",
29523            ResourceType::MedicinalProductPackaged => "MedicinalProductPackaged",
29524            ResourceType::MedicinalProductPharmaceutical => "MedicinalProductPharmaceutical",
29525            ResourceType::MedicinalProductUndesirableEffect => "MedicinalProductUndesirableEffect",
29526            ResourceType::MessageDefinition => "MessageDefinition",
29527            ResourceType::MessageHeader => "MessageHeader",
29528            ResourceType::MolecularSequence => "MolecularSequence",
29529            ResourceType::NamingSystem => "NamingSystem",
29530            ResourceType::NutritionOrder => "NutritionOrder",
29531            ResourceType::Observation => "Observation",
29532            ResourceType::ObservationDefinition => "ObservationDefinition",
29533            ResourceType::OperationDefinition => "OperationDefinition",
29534            ResourceType::OperationOutcome => "OperationOutcome",
29535            ResourceType::Organization => "Organization",
29536            ResourceType::OrganizationAffiliation => "OrganizationAffiliation",
29537            ResourceType::Parameters => "Parameters",
29538            ResourceType::Patient => "Patient",
29539            ResourceType::PaymentNotice => "PaymentNotice",
29540            ResourceType::PaymentReconciliation => "PaymentReconciliation",
29541            ResourceType::Person => "Person",
29542            ResourceType::PlanDefinition => "PlanDefinition",
29543            ResourceType::Practitioner => "Practitioner",
29544            ResourceType::PractitionerRole => "PractitionerRole",
29545            ResourceType::Procedure => "Procedure",
29546            ResourceType::Provenance => "Provenance",
29547            ResourceType::Questionnaire => "Questionnaire",
29548            ResourceType::QuestionnaireResponse => "QuestionnaireResponse",
29549            ResourceType::RelatedPerson => "RelatedPerson",
29550            ResourceType::RequestGroup => "RequestGroup",
29551            ResourceType::ResearchDefinition => "ResearchDefinition",
29552            ResourceType::ResearchElementDefinition => "ResearchElementDefinition",
29553            ResourceType::ResearchStudy => "ResearchStudy",
29554            ResourceType::ResearchSubject => "ResearchSubject",
29555            ResourceType::RiskAssessment => "RiskAssessment",
29556            ResourceType::RiskEvidenceSynthesis => "RiskEvidenceSynthesis",
29557            ResourceType::Schedule => "Schedule",
29558            ResourceType::SearchParameter => "SearchParameter",
29559            ResourceType::ServiceRequest => "ServiceRequest",
29560            ResourceType::Slot => "Slot",
29561            ResourceType::Specimen => "Specimen",
29562            ResourceType::SpecimenDefinition => "SpecimenDefinition",
29563            ResourceType::StructureDefinition => "StructureDefinition",
29564            ResourceType::StructureMap => "StructureMap",
29565            ResourceType::Subscription => "Subscription",
29566            ResourceType::Substance => "Substance",
29567            ResourceType::SubstanceNucleicAcid => "SubstanceNucleicAcid",
29568            ResourceType::SubstancePolymer => "SubstancePolymer",
29569            ResourceType::SubstanceProtein => "SubstanceProtein",
29570            ResourceType::SubstanceReferenceInformation => "SubstanceReferenceInformation",
29571            ResourceType::SubstanceSourceMaterial => "SubstanceSourceMaterial",
29572            ResourceType::SubstanceSpecification => "SubstanceSpecification",
29573            ResourceType::SupplyDelivery => "SupplyDelivery",
29574            ResourceType::SupplyRequest => "SupplyRequest",
29575            ResourceType::Task => "Task",
29576            ResourceType::TerminologyCapabilities => "TerminologyCapabilities",
29577            ResourceType::TestReport => "TestReport",
29578            ResourceType::TestScript => "TestScript",
29579            ResourceType::ValueSet => "ValueSet",
29580            ResourceType::VerificationResult => "VerificationResult",
29581            ResourceType::VisionPrescription => "VisionPrescription",
29582        }
29583    }
29584}
29585impl TryFrom<String> for ResourceType {
29586    type Error = ResourceTypeError;
29587    fn try_from(s: String) -> Result<Self, Self::Error> {
29588        match s.as_str() {
29589            "IdentityProvider" => Ok(ResourceType::IdentityProvider),
29590            "Membership" => Ok(ResourceType::Membership),
29591            "Project" => Ok(ResourceType::Project),
29592            "AccessPolicyV2" => Ok(ResourceType::AccessPolicyV2),
29593            "ClientApplication" => Ok(ResourceType::ClientApplication),
29594            "User" => Ok(ResourceType::User),
29595            "Account" => Ok(ResourceType::Account),
29596            "ActivityDefinition" => Ok(ResourceType::ActivityDefinition),
29597            "AdverseEvent" => Ok(ResourceType::AdverseEvent),
29598            "AllergyIntolerance" => Ok(ResourceType::AllergyIntolerance),
29599            "Appointment" => Ok(ResourceType::Appointment),
29600            "AppointmentResponse" => Ok(ResourceType::AppointmentResponse),
29601            "AuditEvent" => Ok(ResourceType::AuditEvent),
29602            "Basic" => Ok(ResourceType::Basic),
29603            "Binary" => Ok(ResourceType::Binary),
29604            "BiologicallyDerivedProduct" => Ok(ResourceType::BiologicallyDerivedProduct),
29605            "BodyStructure" => Ok(ResourceType::BodyStructure),
29606            "Bundle" => Ok(ResourceType::Bundle),
29607            "CapabilityStatement" => Ok(ResourceType::CapabilityStatement),
29608            "CarePlan" => Ok(ResourceType::CarePlan),
29609            "CareTeam" => Ok(ResourceType::CareTeam),
29610            "CatalogEntry" => Ok(ResourceType::CatalogEntry),
29611            "ChargeItem" => Ok(ResourceType::ChargeItem),
29612            "ChargeItemDefinition" => Ok(ResourceType::ChargeItemDefinition),
29613            "Claim" => Ok(ResourceType::Claim),
29614            "ClaimResponse" => Ok(ResourceType::ClaimResponse),
29615            "ClinicalImpression" => Ok(ResourceType::ClinicalImpression),
29616            "CodeSystem" => Ok(ResourceType::CodeSystem),
29617            "Communication" => Ok(ResourceType::Communication),
29618            "CommunicationRequest" => Ok(ResourceType::CommunicationRequest),
29619            "CompartmentDefinition" => Ok(ResourceType::CompartmentDefinition),
29620            "Composition" => Ok(ResourceType::Composition),
29621            "ConceptMap" => Ok(ResourceType::ConceptMap),
29622            "Condition" => Ok(ResourceType::Condition),
29623            "Consent" => Ok(ResourceType::Consent),
29624            "Contract" => Ok(ResourceType::Contract),
29625            "Coverage" => Ok(ResourceType::Coverage),
29626            "CoverageEligibilityRequest" => Ok(ResourceType::CoverageEligibilityRequest),
29627            "CoverageEligibilityResponse" => Ok(ResourceType::CoverageEligibilityResponse),
29628            "DetectedIssue" => Ok(ResourceType::DetectedIssue),
29629            "Device" => Ok(ResourceType::Device),
29630            "DeviceDefinition" => Ok(ResourceType::DeviceDefinition),
29631            "DeviceMetric" => Ok(ResourceType::DeviceMetric),
29632            "DeviceRequest" => Ok(ResourceType::DeviceRequest),
29633            "DeviceUseStatement" => Ok(ResourceType::DeviceUseStatement),
29634            "DiagnosticReport" => Ok(ResourceType::DiagnosticReport),
29635            "DocumentManifest" => Ok(ResourceType::DocumentManifest),
29636            "DocumentReference" => Ok(ResourceType::DocumentReference),
29637            "EffectEvidenceSynthesis" => Ok(ResourceType::EffectEvidenceSynthesis),
29638            "Encounter" => Ok(ResourceType::Encounter),
29639            "Endpoint" => Ok(ResourceType::Endpoint),
29640            "EnrollmentRequest" => Ok(ResourceType::EnrollmentRequest),
29641            "EnrollmentResponse" => Ok(ResourceType::EnrollmentResponse),
29642            "EpisodeOfCare" => Ok(ResourceType::EpisodeOfCare),
29643            "EventDefinition" => Ok(ResourceType::EventDefinition),
29644            "Evidence" => Ok(ResourceType::Evidence),
29645            "EvidenceVariable" => Ok(ResourceType::EvidenceVariable),
29646            "ExampleScenario" => Ok(ResourceType::ExampleScenario),
29647            "ExplanationOfBenefit" => Ok(ResourceType::ExplanationOfBenefit),
29648            "FamilyMemberHistory" => Ok(ResourceType::FamilyMemberHistory),
29649            "Flag" => Ok(ResourceType::Flag),
29650            "Goal" => Ok(ResourceType::Goal),
29651            "GraphDefinition" => Ok(ResourceType::GraphDefinition),
29652            "Group" => Ok(ResourceType::Group),
29653            "GuidanceResponse" => Ok(ResourceType::GuidanceResponse),
29654            "HealthcareService" => Ok(ResourceType::HealthcareService),
29655            "ImagingStudy" => Ok(ResourceType::ImagingStudy),
29656            "Immunization" => Ok(ResourceType::Immunization),
29657            "ImmunizationEvaluation" => Ok(ResourceType::ImmunizationEvaluation),
29658            "ImmunizationRecommendation" => Ok(ResourceType::ImmunizationRecommendation),
29659            "ImplementationGuide" => Ok(ResourceType::ImplementationGuide),
29660            "InsurancePlan" => Ok(ResourceType::InsurancePlan),
29661            "Invoice" => Ok(ResourceType::Invoice),
29662            "Library" => Ok(ResourceType::Library),
29663            "Linkage" => Ok(ResourceType::Linkage),
29664            "List" => Ok(ResourceType::List),
29665            "Location" => Ok(ResourceType::Location),
29666            "Measure" => Ok(ResourceType::Measure),
29667            "MeasureReport" => Ok(ResourceType::MeasureReport),
29668            "Media" => Ok(ResourceType::Media),
29669            "Medication" => Ok(ResourceType::Medication),
29670            "MedicationAdministration" => Ok(ResourceType::MedicationAdministration),
29671            "MedicationDispense" => Ok(ResourceType::MedicationDispense),
29672            "MedicationKnowledge" => Ok(ResourceType::MedicationKnowledge),
29673            "MedicationRequest" => Ok(ResourceType::MedicationRequest),
29674            "MedicationStatement" => Ok(ResourceType::MedicationStatement),
29675            "MedicinalProduct" => Ok(ResourceType::MedicinalProduct),
29676            "MedicinalProductAuthorization" => Ok(ResourceType::MedicinalProductAuthorization),
29677            "MedicinalProductContraindication" => {
29678                Ok(ResourceType::MedicinalProductContraindication)
29679            }
29680            "MedicinalProductIndication" => Ok(ResourceType::MedicinalProductIndication),
29681            "MedicinalProductIngredient" => Ok(ResourceType::MedicinalProductIngredient),
29682            "MedicinalProductInteraction" => Ok(ResourceType::MedicinalProductInteraction),
29683            "MedicinalProductManufactured" => Ok(ResourceType::MedicinalProductManufactured),
29684            "MedicinalProductPackaged" => Ok(ResourceType::MedicinalProductPackaged),
29685            "MedicinalProductPharmaceutical" => Ok(ResourceType::MedicinalProductPharmaceutical),
29686            "MedicinalProductUndesirableEffect" => {
29687                Ok(ResourceType::MedicinalProductUndesirableEffect)
29688            }
29689            "MessageDefinition" => Ok(ResourceType::MessageDefinition),
29690            "MessageHeader" => Ok(ResourceType::MessageHeader),
29691            "MolecularSequence" => Ok(ResourceType::MolecularSequence),
29692            "NamingSystem" => Ok(ResourceType::NamingSystem),
29693            "NutritionOrder" => Ok(ResourceType::NutritionOrder),
29694            "Observation" => Ok(ResourceType::Observation),
29695            "ObservationDefinition" => Ok(ResourceType::ObservationDefinition),
29696            "OperationDefinition" => Ok(ResourceType::OperationDefinition),
29697            "OperationOutcome" => Ok(ResourceType::OperationOutcome),
29698            "Organization" => Ok(ResourceType::Organization),
29699            "OrganizationAffiliation" => Ok(ResourceType::OrganizationAffiliation),
29700            "Parameters" => Ok(ResourceType::Parameters),
29701            "Patient" => Ok(ResourceType::Patient),
29702            "PaymentNotice" => Ok(ResourceType::PaymentNotice),
29703            "PaymentReconciliation" => Ok(ResourceType::PaymentReconciliation),
29704            "Person" => Ok(ResourceType::Person),
29705            "PlanDefinition" => Ok(ResourceType::PlanDefinition),
29706            "Practitioner" => Ok(ResourceType::Practitioner),
29707            "PractitionerRole" => Ok(ResourceType::PractitionerRole),
29708            "Procedure" => Ok(ResourceType::Procedure),
29709            "Provenance" => Ok(ResourceType::Provenance),
29710            "Questionnaire" => Ok(ResourceType::Questionnaire),
29711            "QuestionnaireResponse" => Ok(ResourceType::QuestionnaireResponse),
29712            "RelatedPerson" => Ok(ResourceType::RelatedPerson),
29713            "RequestGroup" => Ok(ResourceType::RequestGroup),
29714            "ResearchDefinition" => Ok(ResourceType::ResearchDefinition),
29715            "ResearchElementDefinition" => Ok(ResourceType::ResearchElementDefinition),
29716            "ResearchStudy" => Ok(ResourceType::ResearchStudy),
29717            "ResearchSubject" => Ok(ResourceType::ResearchSubject),
29718            "RiskAssessment" => Ok(ResourceType::RiskAssessment),
29719            "RiskEvidenceSynthesis" => Ok(ResourceType::RiskEvidenceSynthesis),
29720            "Schedule" => Ok(ResourceType::Schedule),
29721            "SearchParameter" => Ok(ResourceType::SearchParameter),
29722            "ServiceRequest" => Ok(ResourceType::ServiceRequest),
29723            "Slot" => Ok(ResourceType::Slot),
29724            "Specimen" => Ok(ResourceType::Specimen),
29725            "SpecimenDefinition" => Ok(ResourceType::SpecimenDefinition),
29726            "StructureDefinition" => Ok(ResourceType::StructureDefinition),
29727            "StructureMap" => Ok(ResourceType::StructureMap),
29728            "Subscription" => Ok(ResourceType::Subscription),
29729            "Substance" => Ok(ResourceType::Substance),
29730            "SubstanceNucleicAcid" => Ok(ResourceType::SubstanceNucleicAcid),
29731            "SubstancePolymer" => Ok(ResourceType::SubstancePolymer),
29732            "SubstanceProtein" => Ok(ResourceType::SubstanceProtein),
29733            "SubstanceReferenceInformation" => Ok(ResourceType::SubstanceReferenceInformation),
29734            "SubstanceSourceMaterial" => Ok(ResourceType::SubstanceSourceMaterial),
29735            "SubstanceSpecification" => Ok(ResourceType::SubstanceSpecification),
29736            "SupplyDelivery" => Ok(ResourceType::SupplyDelivery),
29737            "SupplyRequest" => Ok(ResourceType::SupplyRequest),
29738            "Task" => Ok(ResourceType::Task),
29739            "TerminologyCapabilities" => Ok(ResourceType::TerminologyCapabilities),
29740            "TestReport" => Ok(ResourceType::TestReport),
29741            "TestScript" => Ok(ResourceType::TestScript),
29742            "ValueSet" => Ok(ResourceType::ValueSet),
29743            "VerificationResult" => Ok(ResourceType::VerificationResult),
29744            "VisionPrescription" => Ok(ResourceType::VisionPrescription),
29745            _ => Err(ResourceTypeError::Invalid(s.to_string())),
29746        }
29747    }
29748}
29749impl TryFrom<&str> for ResourceType {
29750    type Error = ResourceTypeError;
29751    fn try_from(s: &str) -> Result<Self, Self::Error> {
29752        match s {
29753            "IdentityProvider" => Ok(ResourceType::IdentityProvider),
29754            "Membership" => Ok(ResourceType::Membership),
29755            "Project" => Ok(ResourceType::Project),
29756            "AccessPolicyV2" => Ok(ResourceType::AccessPolicyV2),
29757            "ClientApplication" => Ok(ResourceType::ClientApplication),
29758            "User" => Ok(ResourceType::User),
29759            "Account" => Ok(ResourceType::Account),
29760            "ActivityDefinition" => Ok(ResourceType::ActivityDefinition),
29761            "AdverseEvent" => Ok(ResourceType::AdverseEvent),
29762            "AllergyIntolerance" => Ok(ResourceType::AllergyIntolerance),
29763            "Appointment" => Ok(ResourceType::Appointment),
29764            "AppointmentResponse" => Ok(ResourceType::AppointmentResponse),
29765            "AuditEvent" => Ok(ResourceType::AuditEvent),
29766            "Basic" => Ok(ResourceType::Basic),
29767            "Binary" => Ok(ResourceType::Binary),
29768            "BiologicallyDerivedProduct" => Ok(ResourceType::BiologicallyDerivedProduct),
29769            "BodyStructure" => Ok(ResourceType::BodyStructure),
29770            "Bundle" => Ok(ResourceType::Bundle),
29771            "CapabilityStatement" => Ok(ResourceType::CapabilityStatement),
29772            "CarePlan" => Ok(ResourceType::CarePlan),
29773            "CareTeam" => Ok(ResourceType::CareTeam),
29774            "CatalogEntry" => Ok(ResourceType::CatalogEntry),
29775            "ChargeItem" => Ok(ResourceType::ChargeItem),
29776            "ChargeItemDefinition" => Ok(ResourceType::ChargeItemDefinition),
29777            "Claim" => Ok(ResourceType::Claim),
29778            "ClaimResponse" => Ok(ResourceType::ClaimResponse),
29779            "ClinicalImpression" => Ok(ResourceType::ClinicalImpression),
29780            "CodeSystem" => Ok(ResourceType::CodeSystem),
29781            "Communication" => Ok(ResourceType::Communication),
29782            "CommunicationRequest" => Ok(ResourceType::CommunicationRequest),
29783            "CompartmentDefinition" => Ok(ResourceType::CompartmentDefinition),
29784            "Composition" => Ok(ResourceType::Composition),
29785            "ConceptMap" => Ok(ResourceType::ConceptMap),
29786            "Condition" => Ok(ResourceType::Condition),
29787            "Consent" => Ok(ResourceType::Consent),
29788            "Contract" => Ok(ResourceType::Contract),
29789            "Coverage" => Ok(ResourceType::Coverage),
29790            "CoverageEligibilityRequest" => Ok(ResourceType::CoverageEligibilityRequest),
29791            "CoverageEligibilityResponse" => Ok(ResourceType::CoverageEligibilityResponse),
29792            "DetectedIssue" => Ok(ResourceType::DetectedIssue),
29793            "Device" => Ok(ResourceType::Device),
29794            "DeviceDefinition" => Ok(ResourceType::DeviceDefinition),
29795            "DeviceMetric" => Ok(ResourceType::DeviceMetric),
29796            "DeviceRequest" => Ok(ResourceType::DeviceRequest),
29797            "DeviceUseStatement" => Ok(ResourceType::DeviceUseStatement),
29798            "DiagnosticReport" => Ok(ResourceType::DiagnosticReport),
29799            "DocumentManifest" => Ok(ResourceType::DocumentManifest),
29800            "DocumentReference" => Ok(ResourceType::DocumentReference),
29801            "EffectEvidenceSynthesis" => Ok(ResourceType::EffectEvidenceSynthesis),
29802            "Encounter" => Ok(ResourceType::Encounter),
29803            "Endpoint" => Ok(ResourceType::Endpoint),
29804            "EnrollmentRequest" => Ok(ResourceType::EnrollmentRequest),
29805            "EnrollmentResponse" => Ok(ResourceType::EnrollmentResponse),
29806            "EpisodeOfCare" => Ok(ResourceType::EpisodeOfCare),
29807            "EventDefinition" => Ok(ResourceType::EventDefinition),
29808            "Evidence" => Ok(ResourceType::Evidence),
29809            "EvidenceVariable" => Ok(ResourceType::EvidenceVariable),
29810            "ExampleScenario" => Ok(ResourceType::ExampleScenario),
29811            "ExplanationOfBenefit" => Ok(ResourceType::ExplanationOfBenefit),
29812            "FamilyMemberHistory" => Ok(ResourceType::FamilyMemberHistory),
29813            "Flag" => Ok(ResourceType::Flag),
29814            "Goal" => Ok(ResourceType::Goal),
29815            "GraphDefinition" => Ok(ResourceType::GraphDefinition),
29816            "Group" => Ok(ResourceType::Group),
29817            "GuidanceResponse" => Ok(ResourceType::GuidanceResponse),
29818            "HealthcareService" => Ok(ResourceType::HealthcareService),
29819            "ImagingStudy" => Ok(ResourceType::ImagingStudy),
29820            "Immunization" => Ok(ResourceType::Immunization),
29821            "ImmunizationEvaluation" => Ok(ResourceType::ImmunizationEvaluation),
29822            "ImmunizationRecommendation" => Ok(ResourceType::ImmunizationRecommendation),
29823            "ImplementationGuide" => Ok(ResourceType::ImplementationGuide),
29824            "InsurancePlan" => Ok(ResourceType::InsurancePlan),
29825            "Invoice" => Ok(ResourceType::Invoice),
29826            "Library" => Ok(ResourceType::Library),
29827            "Linkage" => Ok(ResourceType::Linkage),
29828            "List" => Ok(ResourceType::List),
29829            "Location" => Ok(ResourceType::Location),
29830            "Measure" => Ok(ResourceType::Measure),
29831            "MeasureReport" => Ok(ResourceType::MeasureReport),
29832            "Media" => Ok(ResourceType::Media),
29833            "Medication" => Ok(ResourceType::Medication),
29834            "MedicationAdministration" => Ok(ResourceType::MedicationAdministration),
29835            "MedicationDispense" => Ok(ResourceType::MedicationDispense),
29836            "MedicationKnowledge" => Ok(ResourceType::MedicationKnowledge),
29837            "MedicationRequest" => Ok(ResourceType::MedicationRequest),
29838            "MedicationStatement" => Ok(ResourceType::MedicationStatement),
29839            "MedicinalProduct" => Ok(ResourceType::MedicinalProduct),
29840            "MedicinalProductAuthorization" => Ok(ResourceType::MedicinalProductAuthorization),
29841            "MedicinalProductContraindication" => {
29842                Ok(ResourceType::MedicinalProductContraindication)
29843            }
29844            "MedicinalProductIndication" => Ok(ResourceType::MedicinalProductIndication),
29845            "MedicinalProductIngredient" => Ok(ResourceType::MedicinalProductIngredient),
29846            "MedicinalProductInteraction" => Ok(ResourceType::MedicinalProductInteraction),
29847            "MedicinalProductManufactured" => Ok(ResourceType::MedicinalProductManufactured),
29848            "MedicinalProductPackaged" => Ok(ResourceType::MedicinalProductPackaged),
29849            "MedicinalProductPharmaceutical" => Ok(ResourceType::MedicinalProductPharmaceutical),
29850            "MedicinalProductUndesirableEffect" => {
29851                Ok(ResourceType::MedicinalProductUndesirableEffect)
29852            }
29853            "MessageDefinition" => Ok(ResourceType::MessageDefinition),
29854            "MessageHeader" => Ok(ResourceType::MessageHeader),
29855            "MolecularSequence" => Ok(ResourceType::MolecularSequence),
29856            "NamingSystem" => Ok(ResourceType::NamingSystem),
29857            "NutritionOrder" => Ok(ResourceType::NutritionOrder),
29858            "Observation" => Ok(ResourceType::Observation),
29859            "ObservationDefinition" => Ok(ResourceType::ObservationDefinition),
29860            "OperationDefinition" => Ok(ResourceType::OperationDefinition),
29861            "OperationOutcome" => Ok(ResourceType::OperationOutcome),
29862            "Organization" => Ok(ResourceType::Organization),
29863            "OrganizationAffiliation" => Ok(ResourceType::OrganizationAffiliation),
29864            "Parameters" => Ok(ResourceType::Parameters),
29865            "Patient" => Ok(ResourceType::Patient),
29866            "PaymentNotice" => Ok(ResourceType::PaymentNotice),
29867            "PaymentReconciliation" => Ok(ResourceType::PaymentReconciliation),
29868            "Person" => Ok(ResourceType::Person),
29869            "PlanDefinition" => Ok(ResourceType::PlanDefinition),
29870            "Practitioner" => Ok(ResourceType::Practitioner),
29871            "PractitionerRole" => Ok(ResourceType::PractitionerRole),
29872            "Procedure" => Ok(ResourceType::Procedure),
29873            "Provenance" => Ok(ResourceType::Provenance),
29874            "Questionnaire" => Ok(ResourceType::Questionnaire),
29875            "QuestionnaireResponse" => Ok(ResourceType::QuestionnaireResponse),
29876            "RelatedPerson" => Ok(ResourceType::RelatedPerson),
29877            "RequestGroup" => Ok(ResourceType::RequestGroup),
29878            "ResearchDefinition" => Ok(ResourceType::ResearchDefinition),
29879            "ResearchElementDefinition" => Ok(ResourceType::ResearchElementDefinition),
29880            "ResearchStudy" => Ok(ResourceType::ResearchStudy),
29881            "ResearchSubject" => Ok(ResourceType::ResearchSubject),
29882            "RiskAssessment" => Ok(ResourceType::RiskAssessment),
29883            "RiskEvidenceSynthesis" => Ok(ResourceType::RiskEvidenceSynthesis),
29884            "Schedule" => Ok(ResourceType::Schedule),
29885            "SearchParameter" => Ok(ResourceType::SearchParameter),
29886            "ServiceRequest" => Ok(ResourceType::ServiceRequest),
29887            "Slot" => Ok(ResourceType::Slot),
29888            "Specimen" => Ok(ResourceType::Specimen),
29889            "SpecimenDefinition" => Ok(ResourceType::SpecimenDefinition),
29890            "StructureDefinition" => Ok(ResourceType::StructureDefinition),
29891            "StructureMap" => Ok(ResourceType::StructureMap),
29892            "Subscription" => Ok(ResourceType::Subscription),
29893            "Substance" => Ok(ResourceType::Substance),
29894            "SubstanceNucleicAcid" => Ok(ResourceType::SubstanceNucleicAcid),
29895            "SubstancePolymer" => Ok(ResourceType::SubstancePolymer),
29896            "SubstanceProtein" => Ok(ResourceType::SubstanceProtein),
29897            "SubstanceReferenceInformation" => Ok(ResourceType::SubstanceReferenceInformation),
29898            "SubstanceSourceMaterial" => Ok(ResourceType::SubstanceSourceMaterial),
29899            "SubstanceSpecification" => Ok(ResourceType::SubstanceSpecification),
29900            "SupplyDelivery" => Ok(ResourceType::SupplyDelivery),
29901            "SupplyRequest" => Ok(ResourceType::SupplyRequest),
29902            "Task" => Ok(ResourceType::Task),
29903            "TerminologyCapabilities" => Ok(ResourceType::TerminologyCapabilities),
29904            "TestReport" => Ok(ResourceType::TestReport),
29905            "TestScript" => Ok(ResourceType::TestScript),
29906            "ValueSet" => Ok(ResourceType::ValueSet),
29907            "VerificationResult" => Ok(ResourceType::VerificationResult),
29908            "VisionPrescription" => Ok(ResourceType::VisionPrescription),
29909            _ => Err(ResourceTypeError::Invalid(s.to_string())),
29910        }
29911    }
29912}
29913pub static RUST_TO_FHIR_TYPE_MAP: std::sync::LazyLock<
29914    std::collections::HashMap<&'static str, &'static str>,
29915> = std::sync::LazyLock::new(|| {
29916    let mut rust_to_fhir_type_map = std::collections::HashMap::new();
29917    rust_to_fhir_type_map.insert("AccessPolicyV2", "AccessPolicyV2");
29918    rust_to_fhir_type_map.insert("AccessPolicyV2Attribute", "BackboneElement");
29919    rust_to_fhir_type_map.insert("AccessPolicyV2AttributeOperation", "BackboneElement");
29920    rust_to_fhir_type_map.insert("AccessPolicyV2Rule", "BackboneElement");
29921    rust_to_fhir_type_map.insert("AccessPolicyV2RuleCondition", "BackboneElement");
29922    rust_to_fhir_type_map.insert("AccessPolicyV2RuleTarget", "BackboneElement");
29923    rust_to_fhir_type_map.insert("AccessPolicyV2Target", "BackboneElement");
29924    rust_to_fhir_type_map.insert("Account", "Account");
29925    rust_to_fhir_type_map.insert("AccountCoverage", "BackboneElement");
29926    rust_to_fhir_type_map.insert("AccountGuarantor", "BackboneElement");
29927    rust_to_fhir_type_map.insert("ActivityDefinition", "ActivityDefinition");
29928    rust_to_fhir_type_map.insert("ActivityDefinitionDynamicValue", "BackboneElement");
29929    rust_to_fhir_type_map.insert("ActivityDefinitionParticipant", "BackboneElement");
29930    rust_to_fhir_type_map.insert("Address", "Address");
29931    rust_to_fhir_type_map.insert("AdverseEvent", "AdverseEvent");
29932    rust_to_fhir_type_map.insert("AdverseEventSuspectEntity", "BackboneElement");
29933    rust_to_fhir_type_map.insert("AdverseEventSuspectEntityCausality", "BackboneElement");
29934    rust_to_fhir_type_map.insert("Age", "Age");
29935    rust_to_fhir_type_map.insert("AllergyIntolerance", "AllergyIntolerance");
29936    rust_to_fhir_type_map.insert("AllergyIntoleranceReaction", "BackboneElement");
29937    rust_to_fhir_type_map.insert("Annotation", "Annotation");
29938    rust_to_fhir_type_map.insert("Appointment", "Appointment");
29939    rust_to_fhir_type_map.insert("AppointmentParticipant", "BackboneElement");
29940    rust_to_fhir_type_map.insert("AppointmentResponse", "AppointmentResponse");
29941    rust_to_fhir_type_map.insert("Attachment", "Attachment");
29942    rust_to_fhir_type_map.insert("AuditEvent", "AuditEvent");
29943    rust_to_fhir_type_map.insert("AuditEventAgent", "BackboneElement");
29944    rust_to_fhir_type_map.insert("AuditEventAgentNetwork", "BackboneElement");
29945    rust_to_fhir_type_map.insert("AuditEventEntity", "BackboneElement");
29946    rust_to_fhir_type_map.insert("AuditEventEntityDetail", "BackboneElement");
29947    rust_to_fhir_type_map.insert("AuditEventSource", "BackboneElement");
29948    rust_to_fhir_type_map.insert("BackboneElement", "BackboneElement");
29949    rust_to_fhir_type_map.insert("Basic", "Basic");
29950    rust_to_fhir_type_map.insert("Binary", "Binary");
29951    rust_to_fhir_type_map.insert("BiologicallyDerivedProduct", "BiologicallyDerivedProduct");
29952    rust_to_fhir_type_map.insert("BiologicallyDerivedProductCollection", "BackboneElement");
29953    rust_to_fhir_type_map.insert("BiologicallyDerivedProductManipulation", "BackboneElement");
29954    rust_to_fhir_type_map.insert("BiologicallyDerivedProductProcessing", "BackboneElement");
29955    rust_to_fhir_type_map.insert("BiologicallyDerivedProductStorage", "BackboneElement");
29956    rust_to_fhir_type_map.insert("BodyStructure", "BodyStructure");
29957    rust_to_fhir_type_map.insert("Bundle", "Bundle");
29958    rust_to_fhir_type_map.insert("BundleEntry", "BackboneElement");
29959    rust_to_fhir_type_map.insert("BundleEntryRequest", "BackboneElement");
29960    rust_to_fhir_type_map.insert("BundleEntryResponse", "BackboneElement");
29961    rust_to_fhir_type_map.insert("BundleEntrySearch", "BackboneElement");
29962    rust_to_fhir_type_map.insert("BundleLink", "BackboneElement");
29963    rust_to_fhir_type_map.insert("CapabilityStatement", "CapabilityStatement");
29964    rust_to_fhir_type_map.insert("CapabilityStatementDocument", "BackboneElement");
29965    rust_to_fhir_type_map.insert("CapabilityStatementImplementation", "BackboneElement");
29966    rust_to_fhir_type_map.insert("CapabilityStatementMessaging", "BackboneElement");
29967    rust_to_fhir_type_map.insert("CapabilityStatementMessagingEndpoint", "BackboneElement");
29968    rust_to_fhir_type_map.insert(
29969        "CapabilityStatementMessagingSupportedMessage",
29970        "BackboneElement",
29971    );
29972    rust_to_fhir_type_map.insert("CapabilityStatementRest", "BackboneElement");
29973    rust_to_fhir_type_map.insert("CapabilityStatementRestInteraction", "BackboneElement");
29974    rust_to_fhir_type_map.insert("CapabilityStatementRestResource", "BackboneElement");
29975    rust_to_fhir_type_map.insert(
29976        "CapabilityStatementRestResourceInteraction",
29977        "BackboneElement",
29978    );
29979    rust_to_fhir_type_map.insert(
29980        "CapabilityStatementRestResourceOperation",
29981        "BackboneElement",
29982    );
29983    rust_to_fhir_type_map.insert(
29984        "CapabilityStatementRestResourceSearchParam",
29985        "BackboneElement",
29986    );
29987    rust_to_fhir_type_map.insert("CapabilityStatementRestSecurity", "BackboneElement");
29988    rust_to_fhir_type_map.insert("CapabilityStatementSoftware", "BackboneElement");
29989    rust_to_fhir_type_map.insert("CarePlan", "CarePlan");
29990    rust_to_fhir_type_map.insert("CarePlanActivity", "BackboneElement");
29991    rust_to_fhir_type_map.insert("CarePlanActivityDetail", "BackboneElement");
29992    rust_to_fhir_type_map.insert("CareTeam", "CareTeam");
29993    rust_to_fhir_type_map.insert("CareTeamParticipant", "BackboneElement");
29994    rust_to_fhir_type_map.insert("CatalogEntry", "CatalogEntry");
29995    rust_to_fhir_type_map.insert("CatalogEntryRelatedEntry", "BackboneElement");
29996    rust_to_fhir_type_map.insert("ChargeItem", "ChargeItem");
29997    rust_to_fhir_type_map.insert("ChargeItemDefinition", "ChargeItemDefinition");
29998    rust_to_fhir_type_map.insert("ChargeItemDefinitionApplicability", "BackboneElement");
29999    rust_to_fhir_type_map.insert("ChargeItemDefinitionPropertyGroup", "BackboneElement");
30000    rust_to_fhir_type_map.insert(
30001        "ChargeItemDefinitionPropertyGroupPriceComponent",
30002        "BackboneElement",
30003    );
30004    rust_to_fhir_type_map.insert("ChargeItemPerformer", "BackboneElement");
30005    rust_to_fhir_type_map.insert("Claim", "Claim");
30006    rust_to_fhir_type_map.insert("ClaimAccident", "BackboneElement");
30007    rust_to_fhir_type_map.insert("ClaimCareTeam", "BackboneElement");
30008    rust_to_fhir_type_map.insert("ClaimDiagnosis", "BackboneElement");
30009    rust_to_fhir_type_map.insert("ClaimInsurance", "BackboneElement");
30010    rust_to_fhir_type_map.insert("ClaimItem", "BackboneElement");
30011    rust_to_fhir_type_map.insert("ClaimItemDetail", "BackboneElement");
30012    rust_to_fhir_type_map.insert("ClaimItemDetailSubDetail", "BackboneElement");
30013    rust_to_fhir_type_map.insert("ClaimPayee", "BackboneElement");
30014    rust_to_fhir_type_map.insert("ClaimProcedure", "BackboneElement");
30015    rust_to_fhir_type_map.insert("ClaimRelated", "BackboneElement");
30016    rust_to_fhir_type_map.insert("ClaimResponse", "ClaimResponse");
30017    rust_to_fhir_type_map.insert("ClaimResponseAddItem", "BackboneElement");
30018    rust_to_fhir_type_map.insert("ClaimResponseAddItemDetail", "BackboneElement");
30019    rust_to_fhir_type_map.insert("ClaimResponseAddItemDetailSubDetail", "BackboneElement");
30020    rust_to_fhir_type_map.insert("ClaimResponseError", "BackboneElement");
30021    rust_to_fhir_type_map.insert("ClaimResponseInsurance", "BackboneElement");
30022    rust_to_fhir_type_map.insert("ClaimResponseItem", "BackboneElement");
30023    rust_to_fhir_type_map.insert("ClaimResponseItemAdjudication", "BackboneElement");
30024    rust_to_fhir_type_map.insert("ClaimResponseItemDetail", "BackboneElement");
30025    rust_to_fhir_type_map.insert("ClaimResponseItemDetailSubDetail", "BackboneElement");
30026    rust_to_fhir_type_map.insert("ClaimResponsePayment", "BackboneElement");
30027    rust_to_fhir_type_map.insert("ClaimResponseProcessNote", "BackboneElement");
30028    rust_to_fhir_type_map.insert("ClaimResponseTotal", "BackboneElement");
30029    rust_to_fhir_type_map.insert("ClaimSupportingInfo", "BackboneElement");
30030    rust_to_fhir_type_map.insert("ClientApplication", "ClientApplication");
30031    rust_to_fhir_type_map.insert("ClinicalImpression", "ClinicalImpression");
30032    rust_to_fhir_type_map.insert("ClinicalImpressionFinding", "BackboneElement");
30033    rust_to_fhir_type_map.insert("ClinicalImpressionInvestigation", "BackboneElement");
30034    rust_to_fhir_type_map.insert("CodeSystem", "CodeSystem");
30035    rust_to_fhir_type_map.insert("CodeSystemConcept", "BackboneElement");
30036    rust_to_fhir_type_map.insert("CodeSystemConceptDesignation", "BackboneElement");
30037    rust_to_fhir_type_map.insert("CodeSystemConceptProperty", "BackboneElement");
30038    rust_to_fhir_type_map.insert("CodeSystemFilter", "BackboneElement");
30039    rust_to_fhir_type_map.insert("CodeSystemProperty", "BackboneElement");
30040    rust_to_fhir_type_map.insert("CodeableConcept", "CodeableConcept");
30041    rust_to_fhir_type_map.insert("Coding", "Coding");
30042    rust_to_fhir_type_map.insert("Communication", "Communication");
30043    rust_to_fhir_type_map.insert("CommunicationPayload", "BackboneElement");
30044    rust_to_fhir_type_map.insert("CommunicationRequest", "CommunicationRequest");
30045    rust_to_fhir_type_map.insert("CommunicationRequestPayload", "BackboneElement");
30046    rust_to_fhir_type_map.insert("CompartmentDefinition", "CompartmentDefinition");
30047    rust_to_fhir_type_map.insert("CompartmentDefinitionResource", "BackboneElement");
30048    rust_to_fhir_type_map.insert("Composition", "Composition");
30049    rust_to_fhir_type_map.insert("CompositionAttester", "BackboneElement");
30050    rust_to_fhir_type_map.insert("CompositionEvent", "BackboneElement");
30051    rust_to_fhir_type_map.insert("CompositionRelatesTo", "BackboneElement");
30052    rust_to_fhir_type_map.insert("CompositionSection", "BackboneElement");
30053    rust_to_fhir_type_map.insert("ConceptMap", "ConceptMap");
30054    rust_to_fhir_type_map.insert("ConceptMapGroup", "BackboneElement");
30055    rust_to_fhir_type_map.insert("ConceptMapGroupElement", "BackboneElement");
30056    rust_to_fhir_type_map.insert("ConceptMapGroupElementTarget", "BackboneElement");
30057    rust_to_fhir_type_map.insert("ConceptMapGroupElementTargetDependsOn", "BackboneElement");
30058    rust_to_fhir_type_map.insert("ConceptMapGroupUnmapped", "BackboneElement");
30059    rust_to_fhir_type_map.insert("Condition", "Condition");
30060    rust_to_fhir_type_map.insert("ConditionEvidence", "BackboneElement");
30061    rust_to_fhir_type_map.insert("ConditionStage", "BackboneElement");
30062    rust_to_fhir_type_map.insert("Consent", "Consent");
30063    rust_to_fhir_type_map.insert("ConsentPolicy", "BackboneElement");
30064    rust_to_fhir_type_map.insert("ConsentProvision", "BackboneElement");
30065    rust_to_fhir_type_map.insert("ConsentProvisionActor", "BackboneElement");
30066    rust_to_fhir_type_map.insert("ConsentProvisionData", "BackboneElement");
30067    rust_to_fhir_type_map.insert("ConsentVerification", "BackboneElement");
30068    rust_to_fhir_type_map.insert("ContactDetail", "ContactDetail");
30069    rust_to_fhir_type_map.insert("ContactPoint", "ContactPoint");
30070    rust_to_fhir_type_map.insert("Contract", "Contract");
30071    rust_to_fhir_type_map.insert("ContractContentDefinition", "BackboneElement");
30072    rust_to_fhir_type_map.insert("ContractFriendly", "BackboneElement");
30073    rust_to_fhir_type_map.insert("ContractLegal", "BackboneElement");
30074    rust_to_fhir_type_map.insert("ContractRule", "BackboneElement");
30075    rust_to_fhir_type_map.insert("ContractSigner", "BackboneElement");
30076    rust_to_fhir_type_map.insert("ContractTerm", "BackboneElement");
30077    rust_to_fhir_type_map.insert("ContractTermAction", "BackboneElement");
30078    rust_to_fhir_type_map.insert("ContractTermActionSubject", "BackboneElement");
30079    rust_to_fhir_type_map.insert("ContractTermAsset", "BackboneElement");
30080    rust_to_fhir_type_map.insert("ContractTermAssetContext", "BackboneElement");
30081    rust_to_fhir_type_map.insert("ContractTermAssetValuedItem", "BackboneElement");
30082    rust_to_fhir_type_map.insert("ContractTermOffer", "BackboneElement");
30083    rust_to_fhir_type_map.insert("ContractTermOfferAnswer", "BackboneElement");
30084    rust_to_fhir_type_map.insert("ContractTermOfferParty", "BackboneElement");
30085    rust_to_fhir_type_map.insert("ContractTermSecurityLabel", "BackboneElement");
30086    rust_to_fhir_type_map.insert("Contributor", "Contributor");
30087    rust_to_fhir_type_map.insert("Count", "Count");
30088    rust_to_fhir_type_map.insert("Coverage", "Coverage");
30089    rust_to_fhir_type_map.insert("CoverageClass", "BackboneElement");
30090    rust_to_fhir_type_map.insert("CoverageCostToBeneficiary", "BackboneElement");
30091    rust_to_fhir_type_map.insert("CoverageCostToBeneficiaryException", "BackboneElement");
30092    rust_to_fhir_type_map.insert("CoverageEligibilityRequest", "CoverageEligibilityRequest");
30093    rust_to_fhir_type_map.insert("CoverageEligibilityRequestInsurance", "BackboneElement");
30094    rust_to_fhir_type_map.insert("CoverageEligibilityRequestItem", "BackboneElement");
30095    rust_to_fhir_type_map.insert("CoverageEligibilityRequestItemDiagnosis", "BackboneElement");
30096    rust_to_fhir_type_map.insert(
30097        "CoverageEligibilityRequestSupportingInfo",
30098        "BackboneElement",
30099    );
30100    rust_to_fhir_type_map.insert("CoverageEligibilityResponse", "CoverageEligibilityResponse");
30101    rust_to_fhir_type_map.insert("CoverageEligibilityResponseError", "BackboneElement");
30102    rust_to_fhir_type_map.insert("CoverageEligibilityResponseInsurance", "BackboneElement");
30103    rust_to_fhir_type_map.insert(
30104        "CoverageEligibilityResponseInsuranceItem",
30105        "BackboneElement",
30106    );
30107    rust_to_fhir_type_map.insert(
30108        "CoverageEligibilityResponseInsuranceItemBenefit",
30109        "BackboneElement",
30110    );
30111    rust_to_fhir_type_map.insert("DataRequirement", "DataRequirement");
30112    rust_to_fhir_type_map.insert("DataRequirementCodeFilter", "Element");
30113    rust_to_fhir_type_map.insert("DataRequirementDateFilter", "Element");
30114    rust_to_fhir_type_map.insert("DataRequirementSort", "Element");
30115    rust_to_fhir_type_map.insert("DetectedIssue", "DetectedIssue");
30116    rust_to_fhir_type_map.insert("DetectedIssueEvidence", "BackboneElement");
30117    rust_to_fhir_type_map.insert("DetectedIssueMitigation", "BackboneElement");
30118    rust_to_fhir_type_map.insert("Device", "Device");
30119    rust_to_fhir_type_map.insert("DeviceDefinition", "DeviceDefinition");
30120    rust_to_fhir_type_map.insert("DeviceDefinitionCapability", "BackboneElement");
30121    rust_to_fhir_type_map.insert("DeviceDefinitionDeviceName", "BackboneElement");
30122    rust_to_fhir_type_map.insert("DeviceDefinitionMaterial", "BackboneElement");
30123    rust_to_fhir_type_map.insert("DeviceDefinitionProperty", "BackboneElement");
30124    rust_to_fhir_type_map.insert("DeviceDefinitionSpecialization", "BackboneElement");
30125    rust_to_fhir_type_map.insert("DeviceDefinitionUdiDeviceIdentifier", "BackboneElement");
30126    rust_to_fhir_type_map.insert("DeviceDeviceName", "BackboneElement");
30127    rust_to_fhir_type_map.insert("DeviceMetric", "DeviceMetric");
30128    rust_to_fhir_type_map.insert("DeviceMetricCalibration", "BackboneElement");
30129    rust_to_fhir_type_map.insert("DeviceProperty", "BackboneElement");
30130    rust_to_fhir_type_map.insert("DeviceRequest", "DeviceRequest");
30131    rust_to_fhir_type_map.insert("DeviceRequestParameter", "BackboneElement");
30132    rust_to_fhir_type_map.insert("DeviceSpecialization", "BackboneElement");
30133    rust_to_fhir_type_map.insert("DeviceUdiCarrier", "BackboneElement");
30134    rust_to_fhir_type_map.insert("DeviceUseStatement", "DeviceUseStatement");
30135    rust_to_fhir_type_map.insert("DeviceVersion", "BackboneElement");
30136    rust_to_fhir_type_map.insert("DiagnosticReport", "DiagnosticReport");
30137    rust_to_fhir_type_map.insert("DiagnosticReportMedia", "BackboneElement");
30138    rust_to_fhir_type_map.insert("Distance", "Distance");
30139    rust_to_fhir_type_map.insert("DocumentManifest", "DocumentManifest");
30140    rust_to_fhir_type_map.insert("DocumentManifestRelated", "BackboneElement");
30141    rust_to_fhir_type_map.insert("DocumentReference", "DocumentReference");
30142    rust_to_fhir_type_map.insert("DocumentReferenceContent", "BackboneElement");
30143    rust_to_fhir_type_map.insert("DocumentReferenceContext", "BackboneElement");
30144    rust_to_fhir_type_map.insert("DocumentReferenceRelatesTo", "BackboneElement");
30145    rust_to_fhir_type_map.insert("Dosage", "Dosage");
30146    rust_to_fhir_type_map.insert("DosageDoseAndRate", "Element");
30147    rust_to_fhir_type_map.insert("Duration", "Duration");
30148    rust_to_fhir_type_map.insert("EffectEvidenceSynthesis", "EffectEvidenceSynthesis");
30149    rust_to_fhir_type_map.insert("EffectEvidenceSynthesisCertainty", "BackboneElement");
30150    rust_to_fhir_type_map.insert(
30151        "EffectEvidenceSynthesisCertaintyCertaintySubcomponent",
30152        "BackboneElement",
30153    );
30154    rust_to_fhir_type_map.insert("EffectEvidenceSynthesisEffectEstimate", "BackboneElement");
30155    rust_to_fhir_type_map.insert(
30156        "EffectEvidenceSynthesisEffectEstimatePrecisionEstimate",
30157        "BackboneElement",
30158    );
30159    rust_to_fhir_type_map.insert(
30160        "EffectEvidenceSynthesisResultsByExposure",
30161        "BackboneElement",
30162    );
30163    rust_to_fhir_type_map.insert("EffectEvidenceSynthesisSampleSize", "BackboneElement");
30164    rust_to_fhir_type_map.insert("Element", "Element");
30165    rust_to_fhir_type_map.insert("ElementDefinition", "ElementDefinition");
30166    rust_to_fhir_type_map.insert("ElementDefinitionBase", "Element");
30167    rust_to_fhir_type_map.insert("ElementDefinitionBinding", "Element");
30168    rust_to_fhir_type_map.insert("ElementDefinitionConstraint", "Element");
30169    rust_to_fhir_type_map.insert("ElementDefinitionExample", "Element");
30170    rust_to_fhir_type_map.insert("ElementDefinitionMapping", "Element");
30171    rust_to_fhir_type_map.insert("ElementDefinitionSlicing", "Element");
30172    rust_to_fhir_type_map.insert("ElementDefinitionSlicingDiscriminator", "Element");
30173    rust_to_fhir_type_map.insert("ElementDefinitionType", "Element");
30174    rust_to_fhir_type_map.insert("Encounter", "Encounter");
30175    rust_to_fhir_type_map.insert("EncounterClassHistory", "BackboneElement");
30176    rust_to_fhir_type_map.insert("EncounterDiagnosis", "BackboneElement");
30177    rust_to_fhir_type_map.insert("EncounterHospitalization", "BackboneElement");
30178    rust_to_fhir_type_map.insert("EncounterLocation", "BackboneElement");
30179    rust_to_fhir_type_map.insert("EncounterParticipant", "BackboneElement");
30180    rust_to_fhir_type_map.insert("EncounterStatusHistory", "BackboneElement");
30181    rust_to_fhir_type_map.insert("Endpoint", "Endpoint");
30182    rust_to_fhir_type_map.insert("EnrollmentRequest", "EnrollmentRequest");
30183    rust_to_fhir_type_map.insert("EnrollmentResponse", "EnrollmentResponse");
30184    rust_to_fhir_type_map.insert("EpisodeOfCare", "EpisodeOfCare");
30185    rust_to_fhir_type_map.insert("EpisodeOfCareDiagnosis", "BackboneElement");
30186    rust_to_fhir_type_map.insert("EpisodeOfCareStatusHistory", "BackboneElement");
30187    rust_to_fhir_type_map.insert("EventDefinition", "EventDefinition");
30188    rust_to_fhir_type_map.insert("Evidence", "Evidence");
30189    rust_to_fhir_type_map.insert("EvidenceVariable", "EvidenceVariable");
30190    rust_to_fhir_type_map.insert("EvidenceVariableCharacteristic", "BackboneElement");
30191    rust_to_fhir_type_map.insert("ExampleScenario", "ExampleScenario");
30192    rust_to_fhir_type_map.insert("ExampleScenarioActor", "BackboneElement");
30193    rust_to_fhir_type_map.insert("ExampleScenarioInstance", "BackboneElement");
30194    rust_to_fhir_type_map.insert(
30195        "ExampleScenarioInstanceContainedInstance",
30196        "BackboneElement",
30197    );
30198    rust_to_fhir_type_map.insert("ExampleScenarioInstanceVersion", "BackboneElement");
30199    rust_to_fhir_type_map.insert("ExampleScenarioProcess", "BackboneElement");
30200    rust_to_fhir_type_map.insert("ExampleScenarioProcessStep", "BackboneElement");
30201    rust_to_fhir_type_map.insert("ExampleScenarioProcessStepAlternative", "BackboneElement");
30202    rust_to_fhir_type_map.insert("ExampleScenarioProcessStepOperation", "BackboneElement");
30203    rust_to_fhir_type_map.insert("ExplanationOfBenefit", "ExplanationOfBenefit");
30204    rust_to_fhir_type_map.insert("ExplanationOfBenefitAccident", "BackboneElement");
30205    rust_to_fhir_type_map.insert("ExplanationOfBenefitAddItem", "BackboneElement");
30206    rust_to_fhir_type_map.insert("ExplanationOfBenefitAddItemDetail", "BackboneElement");
30207    rust_to_fhir_type_map.insert(
30208        "ExplanationOfBenefitAddItemDetailSubDetail",
30209        "BackboneElement",
30210    );
30211    rust_to_fhir_type_map.insert("ExplanationOfBenefitBenefitBalance", "BackboneElement");
30212    rust_to_fhir_type_map.insert(
30213        "ExplanationOfBenefitBenefitBalanceFinancial",
30214        "BackboneElement",
30215    );
30216    rust_to_fhir_type_map.insert("ExplanationOfBenefitCareTeam", "BackboneElement");
30217    rust_to_fhir_type_map.insert("ExplanationOfBenefitDiagnosis", "BackboneElement");
30218    rust_to_fhir_type_map.insert("ExplanationOfBenefitInsurance", "BackboneElement");
30219    rust_to_fhir_type_map.insert("ExplanationOfBenefitItem", "BackboneElement");
30220    rust_to_fhir_type_map.insert("ExplanationOfBenefitItemAdjudication", "BackboneElement");
30221    rust_to_fhir_type_map.insert("ExplanationOfBenefitItemDetail", "BackboneElement");
30222    rust_to_fhir_type_map.insert("ExplanationOfBenefitItemDetailSubDetail", "BackboneElement");
30223    rust_to_fhir_type_map.insert("ExplanationOfBenefitPayee", "BackboneElement");
30224    rust_to_fhir_type_map.insert("ExplanationOfBenefitPayment", "BackboneElement");
30225    rust_to_fhir_type_map.insert("ExplanationOfBenefitProcedure", "BackboneElement");
30226    rust_to_fhir_type_map.insert("ExplanationOfBenefitProcessNote", "BackboneElement");
30227    rust_to_fhir_type_map.insert("ExplanationOfBenefitRelated", "BackboneElement");
30228    rust_to_fhir_type_map.insert("ExplanationOfBenefitSupportingInfo", "BackboneElement");
30229    rust_to_fhir_type_map.insert("ExplanationOfBenefitTotal", "BackboneElement");
30230    rust_to_fhir_type_map.insert("Expression", "Expression");
30231    rust_to_fhir_type_map.insert("Extension", "Extension");
30232    rust_to_fhir_type_map.insert("FHIRBase64Binary", "base64Binary");
30233    rust_to_fhir_type_map.insert("FHIRBoolean", "boolean");
30234    rust_to_fhir_type_map.insert("FHIRCanonical", "canonical");
30235    rust_to_fhir_type_map.insert("FHIRCode", "code");
30236    rust_to_fhir_type_map.insert("FHIRDate", "date");
30237    rust_to_fhir_type_map.insert("FHIRDateTime", "dateTime");
30238    rust_to_fhir_type_map.insert("FHIRDecimal", "decimal");
30239    rust_to_fhir_type_map.insert("FHIRId", "id");
30240    rust_to_fhir_type_map.insert("FHIRInstant", "instant");
30241    rust_to_fhir_type_map.insert("FHIRInteger", "integer");
30242    rust_to_fhir_type_map.insert("FHIRMarkdown", "markdown");
30243    rust_to_fhir_type_map.insert("FHIROid", "oid");
30244    rust_to_fhir_type_map.insert("FHIRPositiveInt", "positiveInt");
30245    rust_to_fhir_type_map.insert("FHIRString", "string");
30246    rust_to_fhir_type_map.insert("FHIRTime", "time");
30247    rust_to_fhir_type_map.insert("FHIRUnsignedInt", "unsignedInt");
30248    rust_to_fhir_type_map.insert("FHIRUri", "uri");
30249    rust_to_fhir_type_map.insert("FHIRUrl", "url");
30250    rust_to_fhir_type_map.insert("FHIRUuid", "uuid");
30251    rust_to_fhir_type_map.insert("FHIRXhtml", "xhtml");
30252    rust_to_fhir_type_map.insert("FamilyMemberHistory", "FamilyMemberHistory");
30253    rust_to_fhir_type_map.insert("FamilyMemberHistoryCondition", "BackboneElement");
30254    rust_to_fhir_type_map.insert("Flag", "Flag");
30255    rust_to_fhir_type_map.insert("Goal", "Goal");
30256    rust_to_fhir_type_map.insert("GoalTarget", "BackboneElement");
30257    rust_to_fhir_type_map.insert("GraphDefinition", "GraphDefinition");
30258    rust_to_fhir_type_map.insert("GraphDefinitionLink", "BackboneElement");
30259    rust_to_fhir_type_map.insert("GraphDefinitionLinkTarget", "BackboneElement");
30260    rust_to_fhir_type_map.insert("GraphDefinitionLinkTargetCompartment", "BackboneElement");
30261    rust_to_fhir_type_map.insert("Group", "Group");
30262    rust_to_fhir_type_map.insert("GroupCharacteristic", "BackboneElement");
30263    rust_to_fhir_type_map.insert("GroupMember", "BackboneElement");
30264    rust_to_fhir_type_map.insert("GuidanceResponse", "GuidanceResponse");
30265    rust_to_fhir_type_map.insert("HealthcareService", "HealthcareService");
30266    rust_to_fhir_type_map.insert("HealthcareServiceAvailableTime", "BackboneElement");
30267    rust_to_fhir_type_map.insert("HealthcareServiceEligibility", "BackboneElement");
30268    rust_to_fhir_type_map.insert("HealthcareServiceNotAvailable", "BackboneElement");
30269    rust_to_fhir_type_map.insert("HumanName", "HumanName");
30270    rust_to_fhir_type_map.insert("Identifier", "Identifier");
30271    rust_to_fhir_type_map.insert("IdentityProvider", "IdentityProvider");
30272    rust_to_fhir_type_map.insert("IdentityProviderOidc", "BackboneElement");
30273    rust_to_fhir_type_map.insert("IdentityProviderOidcClient", "BackboneElement");
30274    rust_to_fhir_type_map.insert("IdentityProviderOidcPkce", "BackboneElement");
30275    rust_to_fhir_type_map.insert("ImagingStudy", "ImagingStudy");
30276    rust_to_fhir_type_map.insert("ImagingStudySeries", "BackboneElement");
30277    rust_to_fhir_type_map.insert("ImagingStudySeriesInstance", "BackboneElement");
30278    rust_to_fhir_type_map.insert("ImagingStudySeriesPerformer", "BackboneElement");
30279    rust_to_fhir_type_map.insert("Immunization", "Immunization");
30280    rust_to_fhir_type_map.insert("ImmunizationEducation", "BackboneElement");
30281    rust_to_fhir_type_map.insert("ImmunizationEvaluation", "ImmunizationEvaluation");
30282    rust_to_fhir_type_map.insert("ImmunizationPerformer", "BackboneElement");
30283    rust_to_fhir_type_map.insert("ImmunizationProtocolApplied", "BackboneElement");
30284    rust_to_fhir_type_map.insert("ImmunizationReaction", "BackboneElement");
30285    rust_to_fhir_type_map.insert("ImmunizationRecommendation", "ImmunizationRecommendation");
30286    rust_to_fhir_type_map.insert(
30287        "ImmunizationRecommendationRecommendation",
30288        "BackboneElement",
30289    );
30290    rust_to_fhir_type_map.insert(
30291        "ImmunizationRecommendationRecommendationDateCriterion",
30292        "BackboneElement",
30293    );
30294    rust_to_fhir_type_map.insert("ImplementationGuide", "ImplementationGuide");
30295    rust_to_fhir_type_map.insert("ImplementationGuideDefinition", "BackboneElement");
30296    rust_to_fhir_type_map.insert("ImplementationGuideDefinitionGrouping", "BackboneElement");
30297    rust_to_fhir_type_map.insert("ImplementationGuideDefinitionPage", "BackboneElement");
30298    rust_to_fhir_type_map.insert("ImplementationGuideDefinitionParameter", "BackboneElement");
30299    rust_to_fhir_type_map.insert("ImplementationGuideDefinitionResource", "BackboneElement");
30300    rust_to_fhir_type_map.insert("ImplementationGuideDefinitionTemplate", "BackboneElement");
30301    rust_to_fhir_type_map.insert("ImplementationGuideDependsOn", "BackboneElement");
30302    rust_to_fhir_type_map.insert("ImplementationGuideGlobal", "BackboneElement");
30303    rust_to_fhir_type_map.insert("ImplementationGuideManifest", "BackboneElement");
30304    rust_to_fhir_type_map.insert("ImplementationGuideManifestPage", "BackboneElement");
30305    rust_to_fhir_type_map.insert("ImplementationGuideManifestResource", "BackboneElement");
30306    rust_to_fhir_type_map.insert("InsurancePlan", "InsurancePlan");
30307    rust_to_fhir_type_map.insert("InsurancePlanContact", "BackboneElement");
30308    rust_to_fhir_type_map.insert("InsurancePlanCoverage", "BackboneElement");
30309    rust_to_fhir_type_map.insert("InsurancePlanCoverageBenefit", "BackboneElement");
30310    rust_to_fhir_type_map.insert("InsurancePlanCoverageBenefitLimit", "BackboneElement");
30311    rust_to_fhir_type_map.insert("InsurancePlanPlan", "BackboneElement");
30312    rust_to_fhir_type_map.insert("InsurancePlanPlanGeneralCost", "BackboneElement");
30313    rust_to_fhir_type_map.insert("InsurancePlanPlanSpecificCost", "BackboneElement");
30314    rust_to_fhir_type_map.insert("InsurancePlanPlanSpecificCostBenefit", "BackboneElement");
30315    rust_to_fhir_type_map.insert(
30316        "InsurancePlanPlanSpecificCostBenefitCost",
30317        "BackboneElement",
30318    );
30319    rust_to_fhir_type_map.insert("Invoice", "Invoice");
30320    rust_to_fhir_type_map.insert("InvoiceLineItem", "BackboneElement");
30321    rust_to_fhir_type_map.insert("InvoiceLineItemPriceComponent", "BackboneElement");
30322    rust_to_fhir_type_map.insert("InvoiceParticipant", "BackboneElement");
30323    rust_to_fhir_type_map.insert("Library", "Library");
30324    rust_to_fhir_type_map.insert("Linkage", "Linkage");
30325    rust_to_fhir_type_map.insert("LinkageItem", "BackboneElement");
30326    rust_to_fhir_type_map.insert("List", "List");
30327    rust_to_fhir_type_map.insert("ListEntry", "BackboneElement");
30328    rust_to_fhir_type_map.insert("Location", "Location");
30329    rust_to_fhir_type_map.insert("LocationHoursOfOperation", "BackboneElement");
30330    rust_to_fhir_type_map.insert("LocationPosition", "BackboneElement");
30331    rust_to_fhir_type_map.insert("MarketingStatus", "MarketingStatus");
30332    rust_to_fhir_type_map.insert("Measure", "Measure");
30333    rust_to_fhir_type_map.insert("MeasureGroup", "BackboneElement");
30334    rust_to_fhir_type_map.insert("MeasureGroupPopulation", "BackboneElement");
30335    rust_to_fhir_type_map.insert("MeasureGroupStratifier", "BackboneElement");
30336    rust_to_fhir_type_map.insert("MeasureGroupStratifierComponent", "BackboneElement");
30337    rust_to_fhir_type_map.insert("MeasureReport", "MeasureReport");
30338    rust_to_fhir_type_map.insert("MeasureReportGroup", "BackboneElement");
30339    rust_to_fhir_type_map.insert("MeasureReportGroupPopulation", "BackboneElement");
30340    rust_to_fhir_type_map.insert("MeasureReportGroupStratifier", "BackboneElement");
30341    rust_to_fhir_type_map.insert("MeasureReportGroupStratifierStratum", "BackboneElement");
30342    rust_to_fhir_type_map.insert(
30343        "MeasureReportGroupStratifierStratumComponent",
30344        "BackboneElement",
30345    );
30346    rust_to_fhir_type_map.insert(
30347        "MeasureReportGroupStratifierStratumPopulation",
30348        "BackboneElement",
30349    );
30350    rust_to_fhir_type_map.insert("MeasureSupplementalData", "BackboneElement");
30351    rust_to_fhir_type_map.insert("Media", "Media");
30352    rust_to_fhir_type_map.insert("Medication", "Medication");
30353    rust_to_fhir_type_map.insert("MedicationAdministration", "MedicationAdministration");
30354    rust_to_fhir_type_map.insert("MedicationAdministrationDosage", "BackboneElement");
30355    rust_to_fhir_type_map.insert("MedicationAdministrationPerformer", "BackboneElement");
30356    rust_to_fhir_type_map.insert("MedicationBatch", "BackboneElement");
30357    rust_to_fhir_type_map.insert("MedicationDispense", "MedicationDispense");
30358    rust_to_fhir_type_map.insert("MedicationDispensePerformer", "BackboneElement");
30359    rust_to_fhir_type_map.insert("MedicationDispenseSubstitution", "BackboneElement");
30360    rust_to_fhir_type_map.insert("MedicationIngredient", "BackboneElement");
30361    rust_to_fhir_type_map.insert("MedicationKnowledge", "MedicationKnowledge");
30362    rust_to_fhir_type_map.insert(
30363        "MedicationKnowledgeAdministrationGuidelines",
30364        "BackboneElement",
30365    );
30366    rust_to_fhir_type_map.insert(
30367        "MedicationKnowledgeAdministrationGuidelinesDosage",
30368        "BackboneElement",
30369    );
30370    rust_to_fhir_type_map.insert(
30371        "MedicationKnowledgeAdministrationGuidelinesPatientCharacteristics",
30372        "BackboneElement",
30373    );
30374    rust_to_fhir_type_map.insert("MedicationKnowledgeCost", "BackboneElement");
30375    rust_to_fhir_type_map.insert("MedicationKnowledgeDrugCharacteristic", "BackboneElement");
30376    rust_to_fhir_type_map.insert("MedicationKnowledgeIngredient", "BackboneElement");
30377    rust_to_fhir_type_map.insert("MedicationKnowledgeKinetics", "BackboneElement");
30378    rust_to_fhir_type_map.insert(
30379        "MedicationKnowledgeMedicineClassification",
30380        "BackboneElement",
30381    );
30382    rust_to_fhir_type_map.insert("MedicationKnowledgeMonitoringProgram", "BackboneElement");
30383    rust_to_fhir_type_map.insert("MedicationKnowledgeMonograph", "BackboneElement");
30384    rust_to_fhir_type_map.insert("MedicationKnowledgePackaging", "BackboneElement");
30385    rust_to_fhir_type_map.insert("MedicationKnowledgeRegulatory", "BackboneElement");
30386    rust_to_fhir_type_map.insert(
30387        "MedicationKnowledgeRegulatoryMaxDispense",
30388        "BackboneElement",
30389    );
30390    rust_to_fhir_type_map.insert("MedicationKnowledgeRegulatorySchedule", "BackboneElement");
30391    rust_to_fhir_type_map.insert(
30392        "MedicationKnowledgeRegulatorySubstitution",
30393        "BackboneElement",
30394    );
30395    rust_to_fhir_type_map.insert(
30396        "MedicationKnowledgeRelatedMedicationKnowledge",
30397        "BackboneElement",
30398    );
30399    rust_to_fhir_type_map.insert("MedicationRequest", "MedicationRequest");
30400    rust_to_fhir_type_map.insert("MedicationRequestDispenseRequest", "BackboneElement");
30401    rust_to_fhir_type_map.insert(
30402        "MedicationRequestDispenseRequestInitialFill",
30403        "BackboneElement",
30404    );
30405    rust_to_fhir_type_map.insert("MedicationRequestSubstitution", "BackboneElement");
30406    rust_to_fhir_type_map.insert("MedicationStatement", "MedicationStatement");
30407    rust_to_fhir_type_map.insert("MedicinalProduct", "MedicinalProduct");
30408    rust_to_fhir_type_map.insert(
30409        "MedicinalProductAuthorization",
30410        "MedicinalProductAuthorization",
30411    );
30412    rust_to_fhir_type_map.insert(
30413        "MedicinalProductAuthorizationJurisdictionalAuthorization",
30414        "BackboneElement",
30415    );
30416    rust_to_fhir_type_map.insert("MedicinalProductAuthorizationProcedure", "BackboneElement");
30417    rust_to_fhir_type_map.insert(
30418        "MedicinalProductContraindication",
30419        "MedicinalProductContraindication",
30420    );
30421    rust_to_fhir_type_map.insert(
30422        "MedicinalProductContraindicationOtherTherapy",
30423        "BackboneElement",
30424    );
30425    rust_to_fhir_type_map.insert("MedicinalProductIndication", "MedicinalProductIndication");
30426    rust_to_fhir_type_map.insert("MedicinalProductIndicationOtherTherapy", "BackboneElement");
30427    rust_to_fhir_type_map.insert("MedicinalProductIngredient", "MedicinalProductIngredient");
30428    rust_to_fhir_type_map.insert(
30429        "MedicinalProductIngredientSpecifiedSubstance",
30430        "BackboneElement",
30431    );
30432    rust_to_fhir_type_map.insert(
30433        "MedicinalProductIngredientSpecifiedSubstanceStrength",
30434        "BackboneElement",
30435    );
30436    rust_to_fhir_type_map.insert(
30437        "MedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrength",
30438        "BackboneElement",
30439    );
30440    rust_to_fhir_type_map.insert("MedicinalProductIngredientSubstance", "BackboneElement");
30441    rust_to_fhir_type_map.insert("MedicinalProductInteraction", "MedicinalProductInteraction");
30442    rust_to_fhir_type_map.insert("MedicinalProductInteractionInteractant", "BackboneElement");
30443    rust_to_fhir_type_map.insert(
30444        "MedicinalProductManufactured",
30445        "MedicinalProductManufactured",
30446    );
30447    rust_to_fhir_type_map.insert(
30448        "MedicinalProductManufacturingBusinessOperation",
30449        "BackboneElement",
30450    );
30451    rust_to_fhir_type_map.insert("MedicinalProductName", "BackboneElement");
30452    rust_to_fhir_type_map.insert("MedicinalProductNameCountryLanguage", "BackboneElement");
30453    rust_to_fhir_type_map.insert("MedicinalProductNameNamePart", "BackboneElement");
30454    rust_to_fhir_type_map.insert("MedicinalProductPackaged", "MedicinalProductPackaged");
30455    rust_to_fhir_type_map.insert("MedicinalProductPackagedBatchIdentifier", "BackboneElement");
30456    rust_to_fhir_type_map.insert("MedicinalProductPackagedPackageItem", "BackboneElement");
30457    rust_to_fhir_type_map.insert(
30458        "MedicinalProductPharmaceutical",
30459        "MedicinalProductPharmaceutical",
30460    );
30461    rust_to_fhir_type_map.insert(
30462        "MedicinalProductPharmaceuticalCharacteristics",
30463        "BackboneElement",
30464    );
30465    rust_to_fhir_type_map.insert(
30466        "MedicinalProductPharmaceuticalRouteOfAdministration",
30467        "BackboneElement",
30468    );
30469    rust_to_fhir_type_map.insert(
30470        "MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpecies",
30471        "BackboneElement",
30472    );
30473    rust_to_fhir_type_map.insert(
30474        "MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriod",
30475        "BackboneElement",
30476    );
30477    rust_to_fhir_type_map.insert("MedicinalProductSpecialDesignation", "BackboneElement");
30478    rust_to_fhir_type_map.insert(
30479        "MedicinalProductUndesirableEffect",
30480        "MedicinalProductUndesirableEffect",
30481    );
30482    rust_to_fhir_type_map.insert("Membership", "Membership");
30483    rust_to_fhir_type_map.insert("MessageDefinition", "MessageDefinition");
30484    rust_to_fhir_type_map.insert("MessageDefinitionAllowedResponse", "BackboneElement");
30485    rust_to_fhir_type_map.insert("MessageDefinitionFocus", "BackboneElement");
30486    rust_to_fhir_type_map.insert("MessageHeader", "MessageHeader");
30487    rust_to_fhir_type_map.insert("MessageHeaderDestination", "BackboneElement");
30488    rust_to_fhir_type_map.insert("MessageHeaderResponse", "BackboneElement");
30489    rust_to_fhir_type_map.insert("MessageHeaderSource", "BackboneElement");
30490    rust_to_fhir_type_map.insert("Meta", "Meta");
30491    rust_to_fhir_type_map.insert("MetadataResource", "MetadataResource");
30492    rust_to_fhir_type_map.insert("MolecularSequence", "MolecularSequence");
30493    rust_to_fhir_type_map.insert("MolecularSequenceQuality", "BackboneElement");
30494    rust_to_fhir_type_map.insert("MolecularSequenceQualityRoc", "BackboneElement");
30495    rust_to_fhir_type_map.insert("MolecularSequenceReferenceSeq", "BackboneElement");
30496    rust_to_fhir_type_map.insert("MolecularSequenceRepository", "BackboneElement");
30497    rust_to_fhir_type_map.insert("MolecularSequenceStructureVariant", "BackboneElement");
30498    rust_to_fhir_type_map.insert("MolecularSequenceStructureVariantInner", "BackboneElement");
30499    rust_to_fhir_type_map.insert("MolecularSequenceStructureVariantOuter", "BackboneElement");
30500    rust_to_fhir_type_map.insert("MolecularSequenceVariant", "BackboneElement");
30501    rust_to_fhir_type_map.insert("Money", "Money");
30502    rust_to_fhir_type_map.insert("NamingSystem", "NamingSystem");
30503    rust_to_fhir_type_map.insert("NamingSystemUniqueId", "BackboneElement");
30504    rust_to_fhir_type_map.insert("Narrative", "Narrative");
30505    rust_to_fhir_type_map.insert("NutritionOrder", "NutritionOrder");
30506    rust_to_fhir_type_map.insert("NutritionOrderEnteralFormula", "BackboneElement");
30507    rust_to_fhir_type_map.insert(
30508        "NutritionOrderEnteralFormulaAdministration",
30509        "BackboneElement",
30510    );
30511    rust_to_fhir_type_map.insert("NutritionOrderOralDiet", "BackboneElement");
30512    rust_to_fhir_type_map.insert("NutritionOrderOralDietNutrient", "BackboneElement");
30513    rust_to_fhir_type_map.insert("NutritionOrderOralDietTexture", "BackboneElement");
30514    rust_to_fhir_type_map.insert("NutritionOrderSupplement", "BackboneElement");
30515    rust_to_fhir_type_map.insert("Observation", "Observation");
30516    rust_to_fhir_type_map.insert("ObservationComponent", "BackboneElement");
30517    rust_to_fhir_type_map.insert("ObservationDefinition", "ObservationDefinition");
30518    rust_to_fhir_type_map.insert("ObservationDefinitionQualifiedInterval", "BackboneElement");
30519    rust_to_fhir_type_map.insert(
30520        "ObservationDefinitionQuantitativeDetails",
30521        "BackboneElement",
30522    );
30523    rust_to_fhir_type_map.insert("ObservationReferenceRange", "BackboneElement");
30524    rust_to_fhir_type_map.insert("OperationDefinition", "OperationDefinition");
30525    rust_to_fhir_type_map.insert("OperationDefinitionOverload", "BackboneElement");
30526    rust_to_fhir_type_map.insert("OperationDefinitionParameter", "BackboneElement");
30527    rust_to_fhir_type_map.insert("OperationDefinitionParameterBinding", "BackboneElement");
30528    rust_to_fhir_type_map.insert(
30529        "OperationDefinitionParameterReferencedFrom",
30530        "BackboneElement",
30531    );
30532    rust_to_fhir_type_map.insert("OperationOutcome", "OperationOutcome");
30533    rust_to_fhir_type_map.insert("OperationOutcomeIssue", "BackboneElement");
30534    rust_to_fhir_type_map.insert("Organization", "Organization");
30535    rust_to_fhir_type_map.insert("OrganizationAffiliation", "OrganizationAffiliation");
30536    rust_to_fhir_type_map.insert("OrganizationContact", "BackboneElement");
30537    rust_to_fhir_type_map.insert("ParameterDefinition", "ParameterDefinition");
30538    rust_to_fhir_type_map.insert("Parameters", "Parameters");
30539    rust_to_fhir_type_map.insert("ParametersParameter", "BackboneElement");
30540    rust_to_fhir_type_map.insert("Patient", "Patient");
30541    rust_to_fhir_type_map.insert("PatientCommunication", "BackboneElement");
30542    rust_to_fhir_type_map.insert("PatientContact", "BackboneElement");
30543    rust_to_fhir_type_map.insert("PatientLink", "BackboneElement");
30544    rust_to_fhir_type_map.insert("PaymentNotice", "PaymentNotice");
30545    rust_to_fhir_type_map.insert("PaymentReconciliation", "PaymentReconciliation");
30546    rust_to_fhir_type_map.insert("PaymentReconciliationDetail", "BackboneElement");
30547    rust_to_fhir_type_map.insert("PaymentReconciliationProcessNote", "BackboneElement");
30548    rust_to_fhir_type_map.insert("Period", "Period");
30549    rust_to_fhir_type_map.insert("Person", "Person");
30550    rust_to_fhir_type_map.insert("PersonLink", "BackboneElement");
30551    rust_to_fhir_type_map.insert("PlanDefinition", "PlanDefinition");
30552    rust_to_fhir_type_map.insert("PlanDefinitionAction", "BackboneElement");
30553    rust_to_fhir_type_map.insert("PlanDefinitionActionCondition", "BackboneElement");
30554    rust_to_fhir_type_map.insert("PlanDefinitionActionDynamicValue", "BackboneElement");
30555    rust_to_fhir_type_map.insert("PlanDefinitionActionParticipant", "BackboneElement");
30556    rust_to_fhir_type_map.insert("PlanDefinitionActionRelatedAction", "BackboneElement");
30557    rust_to_fhir_type_map.insert("PlanDefinitionGoal", "BackboneElement");
30558    rust_to_fhir_type_map.insert("PlanDefinitionGoalTarget", "BackboneElement");
30559    rust_to_fhir_type_map.insert("Population", "Population");
30560    rust_to_fhir_type_map.insert("Practitioner", "Practitioner");
30561    rust_to_fhir_type_map.insert("PractitionerQualification", "BackboneElement");
30562    rust_to_fhir_type_map.insert("PractitionerRole", "PractitionerRole");
30563    rust_to_fhir_type_map.insert("PractitionerRoleAvailableTime", "BackboneElement");
30564    rust_to_fhir_type_map.insert("PractitionerRoleNotAvailable", "BackboneElement");
30565    rust_to_fhir_type_map.insert("Procedure", "Procedure");
30566    rust_to_fhir_type_map.insert("ProcedureFocalDevice", "BackboneElement");
30567    rust_to_fhir_type_map.insert("ProcedurePerformer", "BackboneElement");
30568    rust_to_fhir_type_map.insert("ProdCharacteristic", "ProdCharacteristic");
30569    rust_to_fhir_type_map.insert("ProductShelfLife", "ProductShelfLife");
30570    rust_to_fhir_type_map.insert("Project", "Project");
30571    rust_to_fhir_type_map.insert("Provenance", "Provenance");
30572    rust_to_fhir_type_map.insert("ProvenanceAgent", "BackboneElement");
30573    rust_to_fhir_type_map.insert("ProvenanceEntity", "BackboneElement");
30574    rust_to_fhir_type_map.insert("Quantity", "Quantity");
30575    rust_to_fhir_type_map.insert("Questionnaire", "Questionnaire");
30576    rust_to_fhir_type_map.insert("QuestionnaireItem", "BackboneElement");
30577    rust_to_fhir_type_map.insert("QuestionnaireItemAnswerOption", "BackboneElement");
30578    rust_to_fhir_type_map.insert("QuestionnaireItemEnableWhen", "BackboneElement");
30579    rust_to_fhir_type_map.insert("QuestionnaireItemInitial", "BackboneElement");
30580    rust_to_fhir_type_map.insert("QuestionnaireResponse", "QuestionnaireResponse");
30581    rust_to_fhir_type_map.insert("QuestionnaireResponseItem", "BackboneElement");
30582    rust_to_fhir_type_map.insert("QuestionnaireResponseItemAnswer", "BackboneElement");
30583    rust_to_fhir_type_map.insert("Range", "Range");
30584    rust_to_fhir_type_map.insert("Ratio", "Ratio");
30585    rust_to_fhir_type_map.insert("Reference", "Reference");
30586    rust_to_fhir_type_map.insert("RelatedArtifact", "RelatedArtifact");
30587    rust_to_fhir_type_map.insert("RelatedPerson", "RelatedPerson");
30588    rust_to_fhir_type_map.insert("RelatedPersonCommunication", "BackboneElement");
30589    rust_to_fhir_type_map.insert("RequestGroup", "RequestGroup");
30590    rust_to_fhir_type_map.insert("RequestGroupAction", "BackboneElement");
30591    rust_to_fhir_type_map.insert("RequestGroupActionCondition", "BackboneElement");
30592    rust_to_fhir_type_map.insert("RequestGroupActionRelatedAction", "BackboneElement");
30593    rust_to_fhir_type_map.insert("ResearchDefinition", "ResearchDefinition");
30594    rust_to_fhir_type_map.insert("ResearchElementDefinition", "ResearchElementDefinition");
30595    rust_to_fhir_type_map.insert("ResearchElementDefinitionCharacteristic", "BackboneElement");
30596    rust_to_fhir_type_map.insert("ResearchStudy", "ResearchStudy");
30597    rust_to_fhir_type_map.insert("ResearchStudyArm", "BackboneElement");
30598    rust_to_fhir_type_map.insert("ResearchStudyObjective", "BackboneElement");
30599    rust_to_fhir_type_map.insert("ResearchSubject", "ResearchSubject");
30600    rust_to_fhir_type_map.insert("RiskAssessment", "RiskAssessment");
30601    rust_to_fhir_type_map.insert("RiskAssessmentPrediction", "BackboneElement");
30602    rust_to_fhir_type_map.insert("RiskEvidenceSynthesis", "RiskEvidenceSynthesis");
30603    rust_to_fhir_type_map.insert("RiskEvidenceSynthesisCertainty", "BackboneElement");
30604    rust_to_fhir_type_map.insert(
30605        "RiskEvidenceSynthesisCertaintyCertaintySubcomponent",
30606        "BackboneElement",
30607    );
30608    rust_to_fhir_type_map.insert("RiskEvidenceSynthesisRiskEstimate", "BackboneElement");
30609    rust_to_fhir_type_map.insert(
30610        "RiskEvidenceSynthesisRiskEstimatePrecisionEstimate",
30611        "BackboneElement",
30612    );
30613    rust_to_fhir_type_map.insert("RiskEvidenceSynthesisSampleSize", "BackboneElement");
30614    rust_to_fhir_type_map.insert("SampledData", "SampledData");
30615    rust_to_fhir_type_map.insert("Schedule", "Schedule");
30616    rust_to_fhir_type_map.insert("SearchParameter", "SearchParameter");
30617    rust_to_fhir_type_map.insert("SearchParameterComponent", "BackboneElement");
30618    rust_to_fhir_type_map.insert("ServiceRequest", "ServiceRequest");
30619    rust_to_fhir_type_map.insert("Signature", "Signature");
30620    rust_to_fhir_type_map.insert("Slot", "Slot");
30621    rust_to_fhir_type_map.insert("Specimen", "Specimen");
30622    rust_to_fhir_type_map.insert("SpecimenCollection", "BackboneElement");
30623    rust_to_fhir_type_map.insert("SpecimenContainer", "BackboneElement");
30624    rust_to_fhir_type_map.insert("SpecimenDefinition", "SpecimenDefinition");
30625    rust_to_fhir_type_map.insert("SpecimenDefinitionTypeTested", "BackboneElement");
30626    rust_to_fhir_type_map.insert("SpecimenDefinitionTypeTestedContainer", "BackboneElement");
30627    rust_to_fhir_type_map.insert(
30628        "SpecimenDefinitionTypeTestedContainerAdditive",
30629        "BackboneElement",
30630    );
30631    rust_to_fhir_type_map.insert("SpecimenDefinitionTypeTestedHandling", "BackboneElement");
30632    rust_to_fhir_type_map.insert("SpecimenProcessing", "BackboneElement");
30633    rust_to_fhir_type_map.insert("StructureDefinition", "StructureDefinition");
30634    rust_to_fhir_type_map.insert("StructureDefinitionContext", "BackboneElement");
30635    rust_to_fhir_type_map.insert("StructureDefinitionDifferential", "BackboneElement");
30636    rust_to_fhir_type_map.insert("StructureDefinitionMapping", "BackboneElement");
30637    rust_to_fhir_type_map.insert("StructureDefinitionSnapshot", "BackboneElement");
30638    rust_to_fhir_type_map.insert("StructureMap", "StructureMap");
30639    rust_to_fhir_type_map.insert("StructureMapGroup", "BackboneElement");
30640    rust_to_fhir_type_map.insert("StructureMapGroupInput", "BackboneElement");
30641    rust_to_fhir_type_map.insert("StructureMapGroupRule", "BackboneElement");
30642    rust_to_fhir_type_map.insert("StructureMapGroupRuleDependent", "BackboneElement");
30643    rust_to_fhir_type_map.insert("StructureMapGroupRuleSource", "BackboneElement");
30644    rust_to_fhir_type_map.insert("StructureMapGroupRuleTarget", "BackboneElement");
30645    rust_to_fhir_type_map.insert("StructureMapGroupRuleTargetParameter", "BackboneElement");
30646    rust_to_fhir_type_map.insert("StructureMapStructure", "BackboneElement");
30647    rust_to_fhir_type_map.insert("Subscription", "Subscription");
30648    rust_to_fhir_type_map.insert("SubscriptionChannel", "BackboneElement");
30649    rust_to_fhir_type_map.insert("Substance", "Substance");
30650    rust_to_fhir_type_map.insert("SubstanceAmount", "SubstanceAmount");
30651    rust_to_fhir_type_map.insert("SubstanceAmountReferenceRange", "Element");
30652    rust_to_fhir_type_map.insert("SubstanceIngredient", "BackboneElement");
30653    rust_to_fhir_type_map.insert("SubstanceInstance", "BackboneElement");
30654    rust_to_fhir_type_map.insert("SubstanceNucleicAcid", "SubstanceNucleicAcid");
30655    rust_to_fhir_type_map.insert("SubstanceNucleicAcidSubunit", "BackboneElement");
30656    rust_to_fhir_type_map.insert("SubstanceNucleicAcidSubunitLinkage", "BackboneElement");
30657    rust_to_fhir_type_map.insert("SubstanceNucleicAcidSubunitSugar", "BackboneElement");
30658    rust_to_fhir_type_map.insert("SubstancePolymer", "SubstancePolymer");
30659    rust_to_fhir_type_map.insert("SubstancePolymerMonomerSet", "BackboneElement");
30660    rust_to_fhir_type_map.insert(
30661        "SubstancePolymerMonomerSetStartingMaterial",
30662        "BackboneElement",
30663    );
30664    rust_to_fhir_type_map.insert("SubstancePolymerRepeat", "BackboneElement");
30665    rust_to_fhir_type_map.insert("SubstancePolymerRepeatRepeatUnit", "BackboneElement");
30666    rust_to_fhir_type_map.insert(
30667        "SubstancePolymerRepeatRepeatUnitDegreeOfPolymerisation",
30668        "BackboneElement",
30669    );
30670    rust_to_fhir_type_map.insert(
30671        "SubstancePolymerRepeatRepeatUnitStructuralRepresentation",
30672        "BackboneElement",
30673    );
30674    rust_to_fhir_type_map.insert("SubstanceProtein", "SubstanceProtein");
30675    rust_to_fhir_type_map.insert("SubstanceProteinSubunit", "BackboneElement");
30676    rust_to_fhir_type_map.insert(
30677        "SubstanceReferenceInformation",
30678        "SubstanceReferenceInformation",
30679    );
30680    rust_to_fhir_type_map.insert(
30681        "SubstanceReferenceInformationClassification",
30682        "BackboneElement",
30683    );
30684    rust_to_fhir_type_map.insert("SubstanceReferenceInformationGene", "BackboneElement");
30685    rust_to_fhir_type_map.insert(
30686        "SubstanceReferenceInformationGeneElement",
30687        "BackboneElement",
30688    );
30689    rust_to_fhir_type_map.insert("SubstanceReferenceInformationTarget", "BackboneElement");
30690    rust_to_fhir_type_map.insert("SubstanceSourceMaterial", "SubstanceSourceMaterial");
30691    rust_to_fhir_type_map.insert(
30692        "SubstanceSourceMaterialFractionDescription",
30693        "BackboneElement",
30694    );
30695    rust_to_fhir_type_map.insert("SubstanceSourceMaterialOrganism", "BackboneElement");
30696    rust_to_fhir_type_map.insert("SubstanceSourceMaterialOrganismAuthor", "BackboneElement");
30697    rust_to_fhir_type_map.insert("SubstanceSourceMaterialOrganismHybrid", "BackboneElement");
30698    rust_to_fhir_type_map.insert(
30699        "SubstanceSourceMaterialOrganismOrganismGeneral",
30700        "BackboneElement",
30701    );
30702    rust_to_fhir_type_map.insert("SubstanceSourceMaterialPartDescription", "BackboneElement");
30703    rust_to_fhir_type_map.insert("SubstanceSpecification", "SubstanceSpecification");
30704    rust_to_fhir_type_map.insert("SubstanceSpecificationCode", "BackboneElement");
30705    rust_to_fhir_type_map.insert("SubstanceSpecificationMoiety", "BackboneElement");
30706    rust_to_fhir_type_map.insert("SubstanceSpecificationName", "BackboneElement");
30707    rust_to_fhir_type_map.insert("SubstanceSpecificationNameOfficial", "BackboneElement");
30708    rust_to_fhir_type_map.insert("SubstanceSpecificationProperty", "BackboneElement");
30709    rust_to_fhir_type_map.insert("SubstanceSpecificationRelationship", "BackboneElement");
30710    rust_to_fhir_type_map.insert("SubstanceSpecificationStructure", "BackboneElement");
30711    rust_to_fhir_type_map.insert("SubstanceSpecificationStructureIsotope", "BackboneElement");
30712    rust_to_fhir_type_map.insert(
30713        "SubstanceSpecificationStructureIsotopeMolecularWeight",
30714        "BackboneElement",
30715    );
30716    rust_to_fhir_type_map.insert(
30717        "SubstanceSpecificationStructureRepresentation",
30718        "BackboneElement",
30719    );
30720    rust_to_fhir_type_map.insert("SupplyDelivery", "SupplyDelivery");
30721    rust_to_fhir_type_map.insert("SupplyDeliverySuppliedItem", "BackboneElement");
30722    rust_to_fhir_type_map.insert("SupplyRequest", "SupplyRequest");
30723    rust_to_fhir_type_map.insert("SupplyRequestParameter", "BackboneElement");
30724    rust_to_fhir_type_map.insert("Task", "Task");
30725    rust_to_fhir_type_map.insert("TaskInput", "BackboneElement");
30726    rust_to_fhir_type_map.insert("TaskOutput", "BackboneElement");
30727    rust_to_fhir_type_map.insert("TaskRestriction", "BackboneElement");
30728    rust_to_fhir_type_map.insert("TerminologyCapabilities", "TerminologyCapabilities");
30729    rust_to_fhir_type_map.insert("TerminologyCapabilitiesClosure", "BackboneElement");
30730    rust_to_fhir_type_map.insert("TerminologyCapabilitiesCodeSystem", "BackboneElement");
30731    rust_to_fhir_type_map.insert(
30732        "TerminologyCapabilitiesCodeSystemVersion",
30733        "BackboneElement",
30734    );
30735    rust_to_fhir_type_map.insert(
30736        "TerminologyCapabilitiesCodeSystemVersionFilter",
30737        "BackboneElement",
30738    );
30739    rust_to_fhir_type_map.insert("TerminologyCapabilitiesExpansion", "BackboneElement");
30740    rust_to_fhir_type_map.insert(
30741        "TerminologyCapabilitiesExpansionParameter",
30742        "BackboneElement",
30743    );
30744    rust_to_fhir_type_map.insert("TerminologyCapabilitiesImplementation", "BackboneElement");
30745    rust_to_fhir_type_map.insert("TerminologyCapabilitiesSoftware", "BackboneElement");
30746    rust_to_fhir_type_map.insert("TerminologyCapabilitiesTranslation", "BackboneElement");
30747    rust_to_fhir_type_map.insert("TerminologyCapabilitiesValidateCode", "BackboneElement");
30748    rust_to_fhir_type_map.insert("TestReport", "TestReport");
30749    rust_to_fhir_type_map.insert("TestReportParticipant", "BackboneElement");
30750    rust_to_fhir_type_map.insert("TestReportSetup", "BackboneElement");
30751    rust_to_fhir_type_map.insert("TestReportSetupAction", "BackboneElement");
30752    rust_to_fhir_type_map.insert("TestReportSetupActionAssert", "BackboneElement");
30753    rust_to_fhir_type_map.insert("TestReportSetupActionOperation", "BackboneElement");
30754    rust_to_fhir_type_map.insert("TestReportTeardown", "BackboneElement");
30755    rust_to_fhir_type_map.insert("TestReportTeardownAction", "BackboneElement");
30756    rust_to_fhir_type_map.insert("TestReportTest", "BackboneElement");
30757    rust_to_fhir_type_map.insert("TestReportTestAction", "BackboneElement");
30758    rust_to_fhir_type_map.insert("TestScript", "TestScript");
30759    rust_to_fhir_type_map.insert("TestScriptDestination", "BackboneElement");
30760    rust_to_fhir_type_map.insert("TestScriptFixture", "BackboneElement");
30761    rust_to_fhir_type_map.insert("TestScriptMetadata", "BackboneElement");
30762    rust_to_fhir_type_map.insert("TestScriptMetadataCapability", "BackboneElement");
30763    rust_to_fhir_type_map.insert("TestScriptMetadataLink", "BackboneElement");
30764    rust_to_fhir_type_map.insert("TestScriptOrigin", "BackboneElement");
30765    rust_to_fhir_type_map.insert("TestScriptSetup", "BackboneElement");
30766    rust_to_fhir_type_map.insert("TestScriptSetupAction", "BackboneElement");
30767    rust_to_fhir_type_map.insert("TestScriptSetupActionAssert", "BackboneElement");
30768    rust_to_fhir_type_map.insert("TestScriptSetupActionOperation", "BackboneElement");
30769    rust_to_fhir_type_map.insert(
30770        "TestScriptSetupActionOperationRequestHeader",
30771        "BackboneElement",
30772    );
30773    rust_to_fhir_type_map.insert("TestScriptTeardown", "BackboneElement");
30774    rust_to_fhir_type_map.insert("TestScriptTeardownAction", "BackboneElement");
30775    rust_to_fhir_type_map.insert("TestScriptTest", "BackboneElement");
30776    rust_to_fhir_type_map.insert("TestScriptTestAction", "BackboneElement");
30777    rust_to_fhir_type_map.insert("TestScriptVariable", "BackboneElement");
30778    rust_to_fhir_type_map.insert("Timing", "Timing");
30779    rust_to_fhir_type_map.insert("TimingRepeat", "Element");
30780    rust_to_fhir_type_map.insert("TriggerDefinition", "TriggerDefinition");
30781    rust_to_fhir_type_map.insert("UsageContext", "UsageContext");
30782    rust_to_fhir_type_map.insert("User", "User");
30783    rust_to_fhir_type_map.insert("ValueSet", "ValueSet");
30784    rust_to_fhir_type_map.insert("ValueSetCompose", "BackboneElement");
30785    rust_to_fhir_type_map.insert("ValueSetComposeInclude", "BackboneElement");
30786    rust_to_fhir_type_map.insert("ValueSetComposeIncludeConcept", "BackboneElement");
30787    rust_to_fhir_type_map.insert(
30788        "ValueSetComposeIncludeConceptDesignation",
30789        "BackboneElement",
30790    );
30791    rust_to_fhir_type_map.insert("ValueSetComposeIncludeFilter", "BackboneElement");
30792    rust_to_fhir_type_map.insert("ValueSetExpansion", "BackboneElement");
30793    rust_to_fhir_type_map.insert("ValueSetExpansionContains", "BackboneElement");
30794    rust_to_fhir_type_map.insert("ValueSetExpansionParameter", "BackboneElement");
30795    rust_to_fhir_type_map.insert("VerificationResult", "VerificationResult");
30796    rust_to_fhir_type_map.insert("VerificationResultAttestation", "BackboneElement");
30797    rust_to_fhir_type_map.insert("VerificationResultPrimarySource", "BackboneElement");
30798    rust_to_fhir_type_map.insert("VerificationResultValidator", "BackboneElement");
30799    rust_to_fhir_type_map.insert("VisionPrescription", "VisionPrescription");
30800    rust_to_fhir_type_map.insert("VisionPrescriptionLensSpecification", "BackboneElement");
30801    rust_to_fhir_type_map.insert(
30802        "VisionPrescriptionLensSpecificationPrism",
30803        "BackboneElement",
30804    );
30805    rust_to_fhir_type_map
30806});