fhirbolt_model/generated/r5/resources/
claim_response.rs

1// Generated on 2023-05-17 by fhirbolt-codegen v0.10.0
2#[doc = "A date or period in the past or future indicating when the event occurred or is expectd to occur."]
3#[derive(Default, Debug, Clone, PartialEq)]
4pub enum ClaimResponseEventWhen {
5    DateTime(super::super::types::DateTime),
6    Period(Box<super::super::types::Period>),
7    #[default]
8    Invalid,
9}
10#[doc = "The date or dates when the service or product was supplied, performed or completed."]
11#[derive(Default, Debug, Clone, PartialEq)]
12pub enum ClaimResponseAddItemServiced {
13    Date(super::super::types::Date),
14    Period(Box<super::super::types::Period>),
15    #[default]
16    Invalid,
17}
18#[doc = "Where the product or service was provided."]
19#[derive(Default, Debug, Clone, PartialEq)]
20pub enum ClaimResponseAddItemLocation {
21    CodeableConcept(Box<super::super::types::CodeableConcept>),
22    Address(Box<super::super::types::Address>),
23    Reference(Box<super::super::types::Reference>),
24    #[default]
25    Invalid,
26}
27#[doc = "Information code for an event with a corresponding date or period."]
28#[derive(Debug, Clone, PartialEq)]
29pub struct ClaimResponseEvent {
30    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
31    pub r#id: Option<std::string::String>,
32    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and managable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
33    pub r#extension: Vec<super::super::types::Extension>,
34    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and managable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
35    pub r#modifier_extension: Vec<super::super::types::Extension>,
36    #[doc = "A coded event such as when a service is expected or a card printed."]
37    pub r#type: Box<super::super::types::CodeableConcept>,
38    #[doc = "A date or period in the past or future indicating when the event occurred or is expectd to occur."]
39    pub r#when: ClaimResponseEventWhen,
40}
41#[allow(clippy::derivable_impls)]
42impl Default for ClaimResponseEvent {
43    fn default() -> Self {
44        Self {
45            r#id: Default::default(),
46            r#extension: Default::default(),
47            r#modifier_extension: Default::default(),
48            r#type: Box::new(super::super::types::CodeableConcept {
49                id: Some("$invalid".to_string()),
50                ..Default::default()
51            }),
52            r#when: Default::default(),
53        }
54    }
55}
56#[doc = "The high-level results of the adjudication if adjudication has been performed."]
57#[derive(Debug, Clone, PartialEq)]
58pub struct ClaimResponseItemReviewOutcome {
59    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
60    pub r#id: Option<std::string::String>,
61    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and managable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
62    pub r#extension: Vec<super::super::types::Extension>,
63    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and managable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
64    pub r#modifier_extension: Vec<super::super::types::Extension>,
65    #[doc = "The result of the claim, predetermination, or preauthorization adjudication."]
66    pub r#decision: Option<Box<super::super::types::CodeableConcept>>,
67    #[doc = "The reasons for the result of the claim, predetermination, or preauthorization adjudication."]
68    pub r#reason: Vec<super::super::types::CodeableConcept>,
69    #[doc = "Reference from the Insurer which is used in later communications which refers to this adjudication."]
70    pub r#pre_auth_ref: Option<super::super::types::String>,
71    #[doc = "The time frame during which this authorization is effective."]
72    pub r#pre_auth_period: Option<Box<super::super::types::Period>>,
73}
74#[allow(clippy::derivable_impls)]
75impl Default for ClaimResponseItemReviewOutcome {
76    fn default() -> Self {
77        Self {
78            r#id: Default::default(),
79            r#extension: Default::default(),
80            r#modifier_extension: Default::default(),
81            r#decision: Default::default(),
82            r#reason: Default::default(),
83            r#pre_auth_ref: Default::default(),
84            r#pre_auth_period: Default::default(),
85        }
86    }
87}
88#[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."]
89#[derive(Debug, Clone, PartialEq)]
90pub struct ClaimResponseItemAdjudication {
91    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
92    pub r#id: Option<std::string::String>,
93    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and managable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
94    pub r#extension: Vec<super::super::types::Extension>,
95    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and managable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
96    pub r#modifier_extension: Vec<super::super::types::Extension>,
97    #[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."]
98    pub r#category: Box<super::super::types::CodeableConcept>,
99    #[doc = "A code supporting the understanding of the adjudication result and explaining variance from expected amount."]
100    pub r#reason: Option<Box<super::super::types::CodeableConcept>>,
101    #[doc = "Monetary amount associated with the category."]
102    pub r#amount: Option<Box<super::super::types::Money>>,
103    #[doc = "A non-monetary value associated with the category. Mutually exclusive to the amount element above."]
104    pub r#quantity: Option<Box<super::super::types::Quantity>>,
105}
106#[allow(clippy::derivable_impls)]
107impl Default for ClaimResponseItemAdjudication {
108    fn default() -> Self {
109        Self {
110            r#id: Default::default(),
111            r#extension: Default::default(),
112            r#modifier_extension: Default::default(),
113            r#category: Box::new(super::super::types::CodeableConcept {
114                id: Some("$invalid".to_string()),
115                ..Default::default()
116            }),
117            r#reason: Default::default(),
118            r#amount: Default::default(),
119            r#quantity: Default::default(),
120        }
121    }
122}
123#[doc = "A sub-detail adjudication of a simple product or service."]
124#[derive(Debug, Clone, PartialEq)]
125pub struct ClaimResponseItemDetailSubDetail {
126    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
127    pub r#id: Option<std::string::String>,
128    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and managable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
129    pub r#extension: Vec<super::super::types::Extension>,
130    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and managable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
131    pub r#modifier_extension: Vec<super::super::types::Extension>,
132    #[doc = "A number to uniquely reference the claim sub-detail entry."]
133    pub r#sub_detail_sequence: super::super::types::PositiveInt,
134    #[doc = "Trace number for tracking purposes. May be defined at the jurisdiction level or between trading partners."]
135    pub r#trace_number: Vec<super::super::types::Identifier>,
136    #[doc = "The numbers associated with notes below which apply to the adjudication of this item."]
137    pub r#note_number: Vec<super::super::types::PositiveInt>,
138    #[doc = "The high-level results of the adjudication if adjudication has been performed."]
139    pub r#review_outcome: Option<ClaimResponseItemReviewOutcome>,
140    #[doc = "The adjudication results."]
141    pub r#adjudication: Vec<ClaimResponseItemAdjudication>,
142}
143#[allow(clippy::derivable_impls)]
144impl Default for ClaimResponseItemDetailSubDetail {
145    fn default() -> Self {
146        Self {
147            r#id: Default::default(),
148            r#extension: Default::default(),
149            r#modifier_extension: Default::default(),
150            r#sub_detail_sequence: super::super::types::PositiveInt {
151                id: Some("$invalid".to_string()),
152                ..Default::default()
153            },
154            r#trace_number: Default::default(),
155            r#note_number: Default::default(),
156            r#review_outcome: Default::default(),
157            r#adjudication: Default::default(),
158        }
159    }
160}
161#[doc = "A claim detail. Either a simple (a product or service) or a 'group' of sub-details which are simple items."]
162#[derive(Debug, Clone, PartialEq)]
163pub struct ClaimResponseItemDetail {
164    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
165    pub r#id: Option<std::string::String>,
166    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and managable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
167    pub r#extension: Vec<super::super::types::Extension>,
168    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and managable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
169    pub r#modifier_extension: Vec<super::super::types::Extension>,
170    #[doc = "A number to uniquely reference the claim detail entry."]
171    pub r#detail_sequence: super::super::types::PositiveInt,
172    #[doc = "Trace number for tracking purposes. May be defined at the jurisdiction level or between trading partners."]
173    pub r#trace_number: Vec<super::super::types::Identifier>,
174    #[doc = "The numbers associated with notes below which apply to the adjudication of this item."]
175    pub r#note_number: Vec<super::super::types::PositiveInt>,
176    #[doc = "The high-level results of the adjudication if adjudication has been performed."]
177    pub r#review_outcome: Option<ClaimResponseItemReviewOutcome>,
178    #[doc = "The adjudication results."]
179    pub r#adjudication: Vec<ClaimResponseItemAdjudication>,
180    #[doc = "A sub-detail adjudication of a simple product or service."]
181    pub r#sub_detail: Vec<ClaimResponseItemDetailSubDetail>,
182}
183#[allow(clippy::derivable_impls)]
184impl Default for ClaimResponseItemDetail {
185    fn default() -> Self {
186        Self {
187            r#id: Default::default(),
188            r#extension: Default::default(),
189            r#modifier_extension: Default::default(),
190            r#detail_sequence: super::super::types::PositiveInt {
191                id: Some("$invalid".to_string()),
192                ..Default::default()
193            },
194            r#trace_number: Default::default(),
195            r#note_number: Default::default(),
196            r#review_outcome: Default::default(),
197            r#adjudication: Default::default(),
198            r#sub_detail: Default::default(),
199        }
200    }
201}
202#[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."]
203#[derive(Debug, Clone, PartialEq)]
204pub struct ClaimResponseItem {
205    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
206    pub r#id: Option<std::string::String>,
207    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and managable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
208    pub r#extension: Vec<super::super::types::Extension>,
209    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and managable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
210    pub r#modifier_extension: Vec<super::super::types::Extension>,
211    #[doc = "A number to uniquely reference the claim item entries."]
212    pub r#item_sequence: super::super::types::PositiveInt,
213    #[doc = "Trace number for tracking purposes. May be defined at the jurisdiction level or between trading partners."]
214    pub r#trace_number: Vec<super::super::types::Identifier>,
215    #[doc = "The numbers associated with notes below which apply to the adjudication of this item."]
216    pub r#note_number: Vec<super::super::types::PositiveInt>,
217    #[doc = "The high-level results of the adjudication if adjudication has been performed."]
218    pub r#review_outcome: Option<ClaimResponseItemReviewOutcome>,
219    #[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."]
220    pub r#adjudication: Vec<ClaimResponseItemAdjudication>,
221    #[doc = "A claim detail. Either a simple (a product or service) or a 'group' of sub-details which are simple items."]
222    pub r#detail: Vec<ClaimResponseItemDetail>,
223}
224#[allow(clippy::derivable_impls)]
225impl Default for ClaimResponseItem {
226    fn default() -> Self {
227        Self {
228            r#id: Default::default(),
229            r#extension: Default::default(),
230            r#modifier_extension: Default::default(),
231            r#item_sequence: super::super::types::PositiveInt {
232                id: Some("$invalid".to_string()),
233                ..Default::default()
234            },
235            r#trace_number: Default::default(),
236            r#note_number: Default::default(),
237            r#review_outcome: Default::default(),
238            r#adjudication: Default::default(),
239            r#detail: Default::default(),
240        }
241    }
242}
243#[doc = "Physical location where the service is performed or applies."]
244#[derive(Debug, Clone, PartialEq)]
245pub struct ClaimResponseAddItemBodySite {
246    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
247    pub r#id: Option<std::string::String>,
248    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and managable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
249    pub r#extension: Vec<super::super::types::Extension>,
250    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and managable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
251    pub r#modifier_extension: Vec<super::super::types::Extension>,
252    #[doc = "Physical service site on the patient (limb, tooth, etc.)."]
253    pub r#site: Vec<super::super::types::CodeableReference>,
254    #[doc = "A region or surface of the bodySite, e.g. limb region or tooth surface(s)."]
255    pub r#sub_site: Vec<super::super::types::CodeableConcept>,
256}
257#[allow(clippy::derivable_impls)]
258impl Default for ClaimResponseAddItemBodySite {
259    fn default() -> Self {
260        Self {
261            r#id: Default::default(),
262            r#extension: Default::default(),
263            r#modifier_extension: Default::default(),
264            r#site: Default::default(),
265            r#sub_site: Default::default(),
266        }
267    }
268}
269#[doc = "The third-tier service adjudications for payor added services."]
270#[derive(Debug, Clone, PartialEq)]
271pub struct ClaimResponseAddItemDetailSubDetail {
272    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
273    pub r#id: Option<std::string::String>,
274    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and managable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
275    pub r#extension: Vec<super::super::types::Extension>,
276    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and managable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
277    pub r#modifier_extension: Vec<super::super::types::Extension>,
278    #[doc = "Trace number for tracking purposes. May be defined at the jurisdiction level or between trading partners."]
279    pub r#trace_number: Vec<super::super::types::Identifier>,
280    #[doc = "The type of revenue or cost center providing the product and/or service."]
281    pub r#revenue: Option<Box<super::super::types::CodeableConcept>>,
282    #[doc = "When the value is a group code then this item collects a set of related item details, otherwise this contains the product, service, drug or other billing code for the item. This element may be the start of a range of .productOrService codes used in conjunction with .productOrServiceEnd or it may be a solo element where .productOrServiceEnd is not used."]
283    pub r#product_or_service: Option<Box<super::super::types::CodeableConcept>>,
284    #[doc = "This contains the end of a range of product, service, drug or other billing codes for the item. This element is not used when the .productOrService is a group code. This value may only be present when a .productOfService code has been provided to convey the start of the range. Typically this value may be used only with preauthorizations and not with claims."]
285    pub r#product_or_service_end: Option<Box<super::super::types::CodeableConcept>>,
286    #[doc = "Item typification or modifiers codes to convey additional context for the product or service."]
287    pub r#modifier: Vec<super::super::types::CodeableConcept>,
288    #[doc = "The number of repetitions of a service or product."]
289    pub r#quantity: Option<Box<super::super::types::Quantity>>,
290    #[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."]
291    pub r#unit_price: Option<Box<super::super::types::Money>>,
292    #[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."]
293    pub r#factor: Option<super::super::types::Decimal>,
294    #[doc = "The total of taxes applicable for this product or service."]
295    pub r#tax: Option<Box<super::super::types::Money>>,
296    #[doc = "The total amount claimed for the addItem.detail.subDetail. Net = unit price * quantity * factor."]
297    pub r#net: Option<Box<super::super::types::Money>>,
298    #[doc = "The numbers associated with notes below which apply to the adjudication of this item."]
299    pub r#note_number: Vec<super::super::types::PositiveInt>,
300    #[doc = "The high-level results of the adjudication if adjudication has been performed."]
301    pub r#review_outcome: Option<ClaimResponseItemReviewOutcome>,
302    #[doc = "The adjudication results."]
303    pub r#adjudication: Vec<ClaimResponseItemAdjudication>,
304}
305#[allow(clippy::derivable_impls)]
306impl Default for ClaimResponseAddItemDetailSubDetail {
307    fn default() -> Self {
308        Self {
309            r#id: Default::default(),
310            r#extension: Default::default(),
311            r#modifier_extension: Default::default(),
312            r#trace_number: Default::default(),
313            r#revenue: Default::default(),
314            r#product_or_service: Default::default(),
315            r#product_or_service_end: Default::default(),
316            r#modifier: Default::default(),
317            r#quantity: Default::default(),
318            r#unit_price: Default::default(),
319            r#factor: Default::default(),
320            r#tax: Default::default(),
321            r#net: Default::default(),
322            r#note_number: Default::default(),
323            r#review_outcome: Default::default(),
324            r#adjudication: Default::default(),
325        }
326    }
327}
328#[doc = "The second-tier service adjudications for payor added services."]
329#[derive(Debug, Clone, PartialEq)]
330pub struct ClaimResponseAddItemDetail {
331    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
332    pub r#id: Option<std::string::String>,
333    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and managable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
334    pub r#extension: Vec<super::super::types::Extension>,
335    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and managable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
336    pub r#modifier_extension: Vec<super::super::types::Extension>,
337    #[doc = "Trace number for tracking purposes. May be defined at the jurisdiction level or between trading partners."]
338    pub r#trace_number: Vec<super::super::types::Identifier>,
339    #[doc = "The type of revenue or cost center providing the product and/or service."]
340    pub r#revenue: Option<Box<super::super::types::CodeableConcept>>,
341    #[doc = "When the value is a group code then this item collects a set of related item details, otherwise this contains the product, service, drug or other billing code for the item. This element may be the start of a range of .productOrService codes used in conjunction with .productOrServiceEnd or it may be a solo element where .productOrServiceEnd is not used."]
342    pub r#product_or_service: Option<Box<super::super::types::CodeableConcept>>,
343    #[doc = "This contains the end of a range of product, service, drug or other billing codes for the item. This element is not used when the .productOrService is a group code. This value may only be present when a .productOfService code has been provided to convey the start of the range. Typically this value may be used only with preauthorizations and not with claims."]
344    pub r#product_or_service_end: Option<Box<super::super::types::CodeableConcept>>,
345    #[doc = "Item typification or modifiers codes to convey additional context for the product or service."]
346    pub r#modifier: Vec<super::super::types::CodeableConcept>,
347    #[doc = "The number of repetitions of a service or product."]
348    pub r#quantity: Option<Box<super::super::types::Quantity>>,
349    #[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."]
350    pub r#unit_price: Option<Box<super::super::types::Money>>,
351    #[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."]
352    pub r#factor: Option<super::super::types::Decimal>,
353    #[doc = "The total of taxes applicable for this product or service."]
354    pub r#tax: Option<Box<super::super::types::Money>>,
355    #[doc = "The total amount claimed for the group (if a grouper) or the addItem.detail. Net = unit price * quantity * factor."]
356    pub r#net: Option<Box<super::super::types::Money>>,
357    #[doc = "The numbers associated with notes below which apply to the adjudication of this item."]
358    pub r#note_number: Vec<super::super::types::PositiveInt>,
359    #[doc = "The high-level results of the adjudication if adjudication has been performed."]
360    pub r#review_outcome: Option<ClaimResponseItemReviewOutcome>,
361    #[doc = "The adjudication results."]
362    pub r#adjudication: Vec<ClaimResponseItemAdjudication>,
363    #[doc = "The third-tier service adjudications for payor added services."]
364    pub r#sub_detail: Vec<ClaimResponseAddItemDetailSubDetail>,
365}
366#[allow(clippy::derivable_impls)]
367impl Default for ClaimResponseAddItemDetail {
368    fn default() -> Self {
369        Self {
370            r#id: Default::default(),
371            r#extension: Default::default(),
372            r#modifier_extension: Default::default(),
373            r#trace_number: Default::default(),
374            r#revenue: Default::default(),
375            r#product_or_service: Default::default(),
376            r#product_or_service_end: Default::default(),
377            r#modifier: Default::default(),
378            r#quantity: Default::default(),
379            r#unit_price: Default::default(),
380            r#factor: Default::default(),
381            r#tax: Default::default(),
382            r#net: Default::default(),
383            r#note_number: Default::default(),
384            r#review_outcome: Default::default(),
385            r#adjudication: Default::default(),
386            r#sub_detail: Default::default(),
387        }
388    }
389}
390#[doc = "The first-tier service adjudications for payor added product or service lines."]
391#[derive(Debug, Clone, PartialEq)]
392pub struct ClaimResponseAddItem {
393    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
394    pub r#id: Option<std::string::String>,
395    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and managable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
396    pub r#extension: Vec<super::super::types::Extension>,
397    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and managable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
398    pub r#modifier_extension: Vec<super::super::types::Extension>,
399    #[doc = "Claim items which this service line is intended to replace."]
400    pub r#item_sequence: Vec<super::super::types::PositiveInt>,
401    #[doc = "The sequence number of the details within the claim item which this line is intended to replace."]
402    pub r#detail_sequence: Vec<super::super::types::PositiveInt>,
403    #[doc = "The sequence number of the sub-details within the details within the claim item which this line is intended to replace."]
404    pub r#subdetail_sequence: Vec<super::super::types::PositiveInt>,
405    #[doc = "Trace number for tracking purposes. May be defined at the jurisdiction level or between trading partners."]
406    pub r#trace_number: Vec<super::super::types::Identifier>,
407    #[doc = "The providers who are authorized for the services rendered to the patient."]
408    pub r#provider: Vec<super::super::types::Reference>,
409    #[doc = "The type of revenue or cost center providing the product and/or service."]
410    pub r#revenue: Option<Box<super::super::types::CodeableConcept>>,
411    #[doc = "When the value is a group code then this item collects a set of related item details, otherwise this contains the product, service, drug or other billing code for the item. This element may be the start of a range of .productOrService codes used in conjunction with .productOrServiceEnd or it may be a solo element where .productOrServiceEnd is not used."]
412    pub r#product_or_service: Option<Box<super::super::types::CodeableConcept>>,
413    #[doc = "This contains the end of a range of product, service, drug or other billing codes for the item. This element is not used when the .productOrService is a group code. This value may only be present when a .productOfService code has been provided to convey the start of the range. Typically this value may be used only with preauthorizations and not with claims."]
414    pub r#product_or_service_end: Option<Box<super::super::types::CodeableConcept>>,
415    #[doc = "Request or Referral for Goods or Service to be rendered."]
416    pub r#request: Vec<super::super::types::Reference>,
417    #[doc = "Item typification or modifiers codes to convey additional context for the product or service."]
418    pub r#modifier: Vec<super::super::types::CodeableConcept>,
419    #[doc = "Identifies the program under which this may be recovered."]
420    pub r#program_code: Vec<super::super::types::CodeableConcept>,
421    #[doc = "The date or dates when the service or product was supplied, performed or completed."]
422    pub r#serviced: Option<ClaimResponseAddItemServiced>,
423    #[doc = "Where the product or service was provided."]
424    pub r#location: Option<ClaimResponseAddItemLocation>,
425    #[doc = "The number of repetitions of a service or product."]
426    pub r#quantity: Option<Box<super::super::types::Quantity>>,
427    #[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."]
428    pub r#unit_price: Option<Box<super::super::types::Money>>,
429    #[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."]
430    pub r#factor: Option<super::super::types::Decimal>,
431    #[doc = "The total of taxes applicable for this product or service."]
432    pub r#tax: Option<Box<super::super::types::Money>>,
433    #[doc = "The total amount claimed for the group (if a grouper) or the addItem. Net = unit price * quantity * factor."]
434    pub r#net: Option<Box<super::super::types::Money>>,
435    #[doc = "Physical location where the service is performed or applies."]
436    pub r#body_site: Vec<ClaimResponseAddItemBodySite>,
437    #[doc = "The numbers associated with notes below which apply to the adjudication of this item."]
438    pub r#note_number: Vec<super::super::types::PositiveInt>,
439    #[doc = "The high-level results of the adjudication if adjudication has been performed."]
440    pub r#review_outcome: Option<ClaimResponseItemReviewOutcome>,
441    #[doc = "The adjudication results."]
442    pub r#adjudication: Vec<ClaimResponseItemAdjudication>,
443    #[doc = "The second-tier service adjudications for payor added services."]
444    pub r#detail: Vec<ClaimResponseAddItemDetail>,
445}
446#[allow(clippy::derivable_impls)]
447impl Default for ClaimResponseAddItem {
448    fn default() -> Self {
449        Self {
450            r#id: Default::default(),
451            r#extension: Default::default(),
452            r#modifier_extension: Default::default(),
453            r#item_sequence: Default::default(),
454            r#detail_sequence: Default::default(),
455            r#subdetail_sequence: Default::default(),
456            r#trace_number: Default::default(),
457            r#provider: Default::default(),
458            r#revenue: Default::default(),
459            r#product_or_service: Default::default(),
460            r#product_or_service_end: Default::default(),
461            r#request: Default::default(),
462            r#modifier: Default::default(),
463            r#program_code: Default::default(),
464            r#serviced: Default::default(),
465            r#location: Default::default(),
466            r#quantity: Default::default(),
467            r#unit_price: Default::default(),
468            r#factor: Default::default(),
469            r#tax: Default::default(),
470            r#net: Default::default(),
471            r#body_site: Default::default(),
472            r#note_number: Default::default(),
473            r#review_outcome: Default::default(),
474            r#adjudication: Default::default(),
475            r#detail: Default::default(),
476        }
477    }
478}
479#[doc = "Categorized monetary totals for the adjudication."]
480#[derive(Debug, Clone, PartialEq)]
481pub struct ClaimResponseTotal {
482    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
483    pub r#id: Option<std::string::String>,
484    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and managable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
485    pub r#extension: Vec<super::super::types::Extension>,
486    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and managable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
487    pub r#modifier_extension: Vec<super::super::types::Extension>,
488    #[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."]
489    pub r#category: Box<super::super::types::CodeableConcept>,
490    #[doc = "Monetary total amount associated with the category."]
491    pub r#amount: Box<super::super::types::Money>,
492}
493#[allow(clippy::derivable_impls)]
494impl Default for ClaimResponseTotal {
495    fn default() -> Self {
496        Self {
497            r#id: Default::default(),
498            r#extension: Default::default(),
499            r#modifier_extension: Default::default(),
500            r#category: Box::new(super::super::types::CodeableConcept {
501                id: Some("$invalid".to_string()),
502                ..Default::default()
503            }),
504            r#amount: Box::new(super::super::types::Money {
505                id: Some("$invalid".to_string()),
506                ..Default::default()
507            }),
508        }
509    }
510}
511#[doc = "Payment details for the adjudication of the claim."]
512#[derive(Debug, Clone, PartialEq)]
513pub struct ClaimResponsePayment {
514    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
515    pub r#id: Option<std::string::String>,
516    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and managable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
517    pub r#extension: Vec<super::super::types::Extension>,
518    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and managable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
519    pub r#modifier_extension: Vec<super::super::types::Extension>,
520    #[doc = "Whether this represents partial or complete payment of the benefits payable."]
521    pub r#type: Box<super::super::types::CodeableConcept>,
522    #[doc = "Total amount of all adjustments to this payment included in this transaction which are not related to this claim's adjudication."]
523    pub r#adjustment: Option<Box<super::super::types::Money>>,
524    #[doc = "Reason for the payment adjustment."]
525    pub r#adjustment_reason: Option<Box<super::super::types::CodeableConcept>>,
526    #[doc = "Estimated date the payment will be issued or the actual issue date of payment."]
527    pub r#date: Option<super::super::types::Date>,
528    #[doc = "Benefits payable less any payment adjustment."]
529    pub r#amount: Box<super::super::types::Money>,
530    #[doc = "Issuer's unique identifier for the payment instrument."]
531    pub r#identifier: Option<Box<super::super::types::Identifier>>,
532}
533#[allow(clippy::derivable_impls)]
534impl Default for ClaimResponsePayment {
535    fn default() -> Self {
536        Self {
537            r#id: Default::default(),
538            r#extension: Default::default(),
539            r#modifier_extension: Default::default(),
540            r#type: Box::new(super::super::types::CodeableConcept {
541                id: Some("$invalid".to_string()),
542                ..Default::default()
543            }),
544            r#adjustment: Default::default(),
545            r#adjustment_reason: Default::default(),
546            r#date: Default::default(),
547            r#amount: Box::new(super::super::types::Money {
548                id: Some("$invalid".to_string()),
549                ..Default::default()
550            }),
551            r#identifier: Default::default(),
552        }
553    }
554}
555#[doc = "A note that describes or explains adjudication results in a human readable form."]
556#[derive(Debug, Clone, PartialEq)]
557pub struct ClaimResponseProcessNote {
558    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
559    pub r#id: Option<std::string::String>,
560    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and managable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
561    pub r#extension: Vec<super::super::types::Extension>,
562    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and managable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
563    pub r#modifier_extension: Vec<super::super::types::Extension>,
564    #[doc = "A number to uniquely identify a note entry."]
565    pub r#number: Option<super::super::types::PositiveInt>,
566    #[doc = "The business purpose of the note text."]
567    pub r#type: Option<Box<super::super::types::CodeableConcept>>,
568    #[doc = "The explanation or description associated with the processing."]
569    pub r#text: super::super::types::String,
570    #[doc = "A code to define the language used in the text of the note."]
571    pub r#language: Option<Box<super::super::types::CodeableConcept>>,
572}
573#[allow(clippy::derivable_impls)]
574impl Default for ClaimResponseProcessNote {
575    fn default() -> Self {
576        Self {
577            r#id: Default::default(),
578            r#extension: Default::default(),
579            r#modifier_extension: Default::default(),
580            r#number: Default::default(),
581            r#type: Default::default(),
582            r#text: super::super::types::String {
583                id: Some("$invalid".to_string()),
584                ..Default::default()
585            },
586            r#language: Default::default(),
587        }
588    }
589}
590#[doc = "Financial instruments for reimbursement for the health care products and services specified on the claim."]
591#[derive(Debug, Clone, PartialEq)]
592pub struct ClaimResponseInsurance {
593    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
594    pub r#id: Option<std::string::String>,
595    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and managable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
596    pub r#extension: Vec<super::super::types::Extension>,
597    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and managable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
598    pub r#modifier_extension: Vec<super::super::types::Extension>,
599    #[doc = "A number to uniquely identify insurance entries and provide a sequence of coverages to convey coordination of benefit order."]
600    pub r#sequence: super::super::types::PositiveInt,
601    #[doc = "A flag to indicate that this Coverage is to be used for adjudication of this claim when set to true."]
602    pub r#focal: super::super::types::Boolean,
603    #[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."]
604    pub r#coverage: Box<super::super::types::Reference>,
605    #[doc = "A business agreement number established between the provider and the insurer for special business processing purposes."]
606    pub r#business_arrangement: Option<super::super::types::String>,
607    #[doc = "The result of the adjudication of the line items for the Coverage specified in this insurance."]
608    pub r#claim_response: Option<Box<super::super::types::Reference>>,
609}
610#[allow(clippy::derivable_impls)]
611impl Default for ClaimResponseInsurance {
612    fn default() -> Self {
613        Self {
614            r#id: Default::default(),
615            r#extension: Default::default(),
616            r#modifier_extension: Default::default(),
617            r#sequence: super::super::types::PositiveInt {
618                id: Some("$invalid".to_string()),
619                ..Default::default()
620            },
621            r#focal: super::super::types::Boolean {
622                id: Some("$invalid".to_string()),
623                ..Default::default()
624            },
625            r#coverage: Box::new(super::super::types::Reference {
626                id: Some("$invalid".to_string()),
627                ..Default::default()
628            }),
629            r#business_arrangement: Default::default(),
630            r#claim_response: Default::default(),
631        }
632    }
633}
634#[doc = "Errors encountered during the processing of the adjudication."]
635#[derive(Debug, Clone, PartialEq)]
636pub struct ClaimResponseError {
637    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
638    pub r#id: Option<std::string::String>,
639    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and managable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
640    pub r#extension: Vec<super::super::types::Extension>,
641    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and managable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
642    pub r#modifier_extension: Vec<super::super::types::Extension>,
643    #[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."]
644    pub r#item_sequence: Option<super::super::types::PositiveInt>,
645    #[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."]
646    pub r#detail_sequence: Option<super::super::types::PositiveInt>,
647    #[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."]
648    pub r#sub_detail_sequence: Option<super::super::types::PositiveInt>,
649    #[doc = "An error code, from a specified code system, which details why the claim could not be adjudicated."]
650    pub r#code: Box<super::super::types::CodeableConcept>,
651    #[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."]
652    pub r#expression: Vec<super::super::types::String>,
653}
654#[allow(clippy::derivable_impls)]
655impl Default for ClaimResponseError {
656    fn default() -> Self {
657        Self {
658            r#id: Default::default(),
659            r#extension: Default::default(),
660            r#modifier_extension: Default::default(),
661            r#item_sequence: Default::default(),
662            r#detail_sequence: Default::default(),
663            r#sub_detail_sequence: Default::default(),
664            r#code: Box::new(super::super::types::CodeableConcept {
665                id: Some("$invalid".to_string()),
666                ..Default::default()
667            }),
668            r#expression: Default::default(),
669        }
670    }
671}
672#[doc = "This resource provides the adjudication details from the processing of a Claim resource."]
673#[derive(Debug, Clone, PartialEq)]
674pub struct ClaimResponse {
675    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
676    pub r#id: Option<super::super::types::Id>,
677    #[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."]
678    pub r#meta: Option<Box<super::super::types::Meta>>,
679    #[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."]
680    pub r#implicit_rules: Option<super::super::types::Uri>,
681    #[doc = "The base language in which the resource is written."]
682    pub r#language: Option<super::super::types::Code>,
683    #[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."]
684    pub r#text: Option<Box<super::super::types::Narrative>>,
685    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, nor can they have their own independent transaction scope. This is allowed to be a Parameters resource if and only if it is referenced by a resource that provides context/meaning."]
686    pub r#contained: Vec<super::super::Resource>,
687    #[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 managable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
688    pub r#extension: Vec<super::super::types::Extension>,
689    #[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 managable, 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)."]
690    pub r#modifier_extension: Vec<super::super::types::Extension>,
691    #[doc = "A unique identifier assigned to this claim response."]
692    pub r#identifier: Vec<super::super::types::Identifier>,
693    #[doc = "Trace number for tracking purposes. May be defined at the jurisdiction level or between trading partners."]
694    pub r#trace_number: Vec<super::super::types::Identifier>,
695    #[doc = "The status of the resource instance."]
696    pub r#status: super::super::types::Code,
697    #[doc = "A finer grained suite of claim type codes which may convey additional information such as Inpatient vs Outpatient and/or a specialty service."]
698    pub r#type: Box<super::super::types::CodeableConcept>,
699    #[doc = "A finer grained suite of claim type codes which may convey additional information such as Inpatient vs Outpatient and/or a specialty service."]
700    pub r#sub_type: Option<Box<super::super::types::CodeableConcept>>,
701    #[doc = "A code to indicate whether the nature of the request is: Claim - A request to an Insurer to adjudicate the supplied charges for health care goods and services under the identified policy and to pay the determined Benefit amount, if any; Preauthorization - A request to an Insurer to adjudicate the supplied proposed future charges for health care goods and services under the identified policy and to approve the services and provide the expected benefit amounts and potentially to reserve funds to pay the benefits when Claims for the indicated services are later submitted; or, Pre-determination - A request to an Insurer to adjudicate the supplied 'what if' charges for health care goods and services under the identified policy and report back what the Benefit payable would be had the services actually been provided."]
702    pub r#use: super::super::types::Code,
703    #[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."]
704    pub r#patient: Box<super::super::types::Reference>,
705    #[doc = "The date this resource was created."]
706    pub r#created: super::super::types::DateTime,
707    #[doc = "The party responsible for authorization, adjudication and reimbursement."]
708    pub r#insurer: Option<Box<super::super::types::Reference>>,
709    #[doc = "The provider which is responsible for the claim, predetermination or preauthorization."]
710    pub r#requestor: Option<Box<super::super::types::Reference>>,
711    #[doc = "Original request resource reference."]
712    pub r#request: Option<Box<super::super::types::Reference>>,
713    #[doc = "The outcome of the claim, predetermination, or preauthorization processing."]
714    pub r#outcome: super::super::types::Code,
715    #[doc = "The result of the claim, predetermination, or preauthorization adjudication."]
716    pub r#decision: Option<Box<super::super::types::CodeableConcept>>,
717    #[doc = "A human readable description of the status of the adjudication."]
718    pub r#disposition: Option<super::super::types::String>,
719    #[doc = "Reference from the Insurer which is used in later communications which refers to this adjudication."]
720    pub r#pre_auth_ref: Option<super::super::types::String>,
721    #[doc = "The time frame during which this authorization is effective."]
722    pub r#pre_auth_period: Option<Box<super::super::types::Period>>,
723    #[doc = "Information code for an event with a corresponding date or period."]
724    pub r#event: Vec<ClaimResponseEvent>,
725    #[doc = "Type of Party to be reimbursed: subscriber, provider, other."]
726    pub r#payee_type: Option<Box<super::super::types::CodeableConcept>>,
727    #[doc = "Healthcare encounters related to this claim."]
728    pub r#encounter: Vec<super::super::types::Reference>,
729    #[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."]
730    pub r#diagnosis_related_group: Option<Box<super::super::types::CodeableConcept>>,
731    #[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."]
732    pub r#item: Vec<ClaimResponseItem>,
733    #[doc = "The first-tier service adjudications for payor added product or service lines."]
734    pub r#add_item: Vec<ClaimResponseAddItem>,
735    #[doc = "The adjudication results which are presented at the header level rather than at the line-item or add-item levels."]
736    pub r#adjudication: Vec<ClaimResponseItemAdjudication>,
737    #[doc = "Categorized monetary totals for the adjudication."]
738    pub r#total: Vec<ClaimResponseTotal>,
739    #[doc = "Payment details for the adjudication of the claim."]
740    pub r#payment: Option<ClaimResponsePayment>,
741    #[doc = "A code, used only on a response to a preauthorization, to indicate whether the benefits payable have been reserved and for whom."]
742    pub r#funds_reserve: Option<Box<super::super::types::CodeableConcept>>,
743    #[doc = "A code for the form to be used for printing the content."]
744    pub r#form_code: Option<Box<super::super::types::CodeableConcept>>,
745    #[doc = "The actual form, by reference or inclusion, for printing the content or an EOB."]
746    pub r#form: Option<Box<super::super::types::Attachment>>,
747    #[doc = "A note that describes or explains adjudication results in a human readable form."]
748    pub r#process_note: Vec<ClaimResponseProcessNote>,
749    #[doc = "Request for additional supporting or authorizing information."]
750    pub r#communication_request: Vec<super::super::types::Reference>,
751    #[doc = "Financial instruments for reimbursement for the health care products and services specified on the claim."]
752    pub r#insurance: Vec<ClaimResponseInsurance>,
753    #[doc = "Errors encountered during the processing of the adjudication."]
754    pub r#error: Vec<ClaimResponseError>,
755}
756#[allow(clippy::derivable_impls)]
757impl Default for ClaimResponse {
758    fn default() -> Self {
759        Self {
760            r#id: Default::default(),
761            r#meta: Default::default(),
762            r#implicit_rules: Default::default(),
763            r#language: Default::default(),
764            r#text: Default::default(),
765            r#contained: Default::default(),
766            r#extension: Default::default(),
767            r#modifier_extension: Default::default(),
768            r#identifier: Default::default(),
769            r#trace_number: Default::default(),
770            r#status: super::super::types::Code {
771                id: Some("$invalid".to_string()),
772                ..Default::default()
773            },
774            r#type: Box::new(super::super::types::CodeableConcept {
775                id: Some("$invalid".to_string()),
776                ..Default::default()
777            }),
778            r#sub_type: Default::default(),
779            r#use: super::super::types::Code {
780                id: Some("$invalid".to_string()),
781                ..Default::default()
782            },
783            r#patient: Box::new(super::super::types::Reference {
784                id: Some("$invalid".to_string()),
785                ..Default::default()
786            }),
787            r#created: super::super::types::DateTime {
788                id: Some("$invalid".to_string()),
789                ..Default::default()
790            },
791            r#insurer: Default::default(),
792            r#requestor: Default::default(),
793            r#request: Default::default(),
794            r#outcome: super::super::types::Code {
795                id: Some("$invalid".to_string()),
796                ..Default::default()
797            },
798            r#decision: Default::default(),
799            r#disposition: Default::default(),
800            r#pre_auth_ref: Default::default(),
801            r#pre_auth_period: Default::default(),
802            r#event: Default::default(),
803            r#payee_type: Default::default(),
804            r#encounter: Default::default(),
805            r#diagnosis_related_group: Default::default(),
806            r#item: Default::default(),
807            r#add_item: Default::default(),
808            r#adjudication: Default::default(),
809            r#total: Default::default(),
810            r#payment: Default::default(),
811            r#funds_reserve: Default::default(),
812            r#form_code: Default::default(),
813            r#form: Default::default(),
814            r#process_note: Default::default(),
815            r#communication_request: Default::default(),
816            r#insurance: Default::default(),
817            r#error: Default::default(),
818        }
819    }
820}