fhirbolt_model/generated/r5/resources/
test_script.rs

1// Generated on 2023-05-17 by fhirbolt-codegen v0.10.0
2#[doc = "Indicates the mechanism used to compare versions to determine which is more current."]
3#[derive(Default, Debug, Clone, PartialEq)]
4pub enum TestScriptVersionAlgorithm {
5    String(super::super::types::String),
6    Coding(Box<super::super::types::Coding>),
7    #[default]
8    Invalid,
9}
10#[doc = "Link or reference providing traceability to the testing requirement for this test."]
11#[derive(Default, Debug, Clone, PartialEq)]
12pub enum TestScriptSetupActionAssertRequirementLink {
13    Uri(super::super::types::Uri),
14    Canonical(super::super::types::Canonical),
15    #[default]
16    Invalid,
17}
18#[doc = "An abstract server used in operations within this test script in the origin element."]
19#[derive(Debug, Clone, PartialEq)]
20pub struct TestScriptOrigin {
21    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
22    pub r#id: Option<std::string::String>,
23    #[doc = "May be 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."]
24    pub r#extension: Vec<super::super::types::Extension>,
25    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/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)."]
26    pub r#modifier_extension: Vec<super::super::types::Extension>,
27    #[doc = "Abstract name given to an origin server in this test script.  The name is provided as a number starting at 1."]
28    pub r#index: super::super::types::Integer,
29    #[doc = "The type of origin profile the test system supports."]
30    pub r#profile: Box<super::super::types::Coding>,
31    #[doc = "The explicit url path of the origin server used in this test script."]
32    pub r#url: Option<super::super::types::Url>,
33}
34#[allow(clippy::derivable_impls)]
35impl Default for TestScriptOrigin {
36    fn default() -> Self {
37        Self {
38            r#id: Default::default(),
39            r#extension: Default::default(),
40            r#modifier_extension: Default::default(),
41            r#index: super::super::types::Integer {
42                id: Some("$invalid".to_string()),
43                ..Default::default()
44            },
45            r#profile: Box::new(super::super::types::Coding {
46                id: Some("$invalid".to_string()),
47                ..Default::default()
48            }),
49            r#url: Default::default(),
50        }
51    }
52}
53#[doc = "An abstract server used in operations within this test script in the destination element."]
54#[derive(Debug, Clone, PartialEq)]
55pub struct TestScriptDestination {
56    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
57    pub r#id: Option<std::string::String>,
58    #[doc = "May be 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."]
59    pub r#extension: Vec<super::super::types::Extension>,
60    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/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)."]
61    pub r#modifier_extension: Vec<super::super::types::Extension>,
62    #[doc = "Abstract name given to a destination server in this test script.  The name is provided as a number starting at 1."]
63    pub r#index: super::super::types::Integer,
64    #[doc = "The type of destination profile the test system supports."]
65    pub r#profile: Box<super::super::types::Coding>,
66    #[doc = "The explicit url path of the destination server used in this test script."]
67    pub r#url: Option<super::super::types::Url>,
68}
69#[allow(clippy::derivable_impls)]
70impl Default for TestScriptDestination {
71    fn default() -> Self {
72        Self {
73            r#id: Default::default(),
74            r#extension: Default::default(),
75            r#modifier_extension: Default::default(),
76            r#index: super::super::types::Integer {
77                id: Some("$invalid".to_string()),
78                ..Default::default()
79            },
80            r#profile: Box::new(super::super::types::Coding {
81                id: Some("$invalid".to_string()),
82                ..Default::default()
83            }),
84            r#url: Default::default(),
85        }
86    }
87}
88#[doc = "A link to the FHIR specification that this test is covering."]
89#[derive(Debug, Clone, PartialEq)]
90pub struct TestScriptMetadataLink {
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 = "URL to a particular requirement or feature within the FHIR specification."]
98    pub r#url: super::super::types::Uri,
99    #[doc = "Short description of the link."]
100    pub r#description: Option<super::super::types::String>,
101}
102#[allow(clippy::derivable_impls)]
103impl Default for TestScriptMetadataLink {
104    fn default() -> Self {
105        Self {
106            r#id: Default::default(),
107            r#extension: Default::default(),
108            r#modifier_extension: Default::default(),
109            r#url: super::super::types::Uri {
110                id: Some("$invalid".to_string()),
111                ..Default::default()
112            },
113            r#description: Default::default(),
114        }
115    }
116}
117#[doc = "Capabilities that must exist and are assumed to function correctly on the FHIR server being tested."]
118#[derive(Debug, Clone, PartialEq)]
119pub struct TestScriptMetadataCapability {
120    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
121    pub r#id: Option<std::string::String>,
122    #[doc = "May be 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."]
123    pub r#extension: Vec<super::super::types::Extension>,
124    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/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)."]
125    pub r#modifier_extension: Vec<super::super::types::Extension>,
126    #[doc = "Whether or not the test execution will require the given capabilities of the server in order for this test script to execute."]
127    pub r#required: super::super::types::Boolean,
128    #[doc = "Whether or not the test execution will validate the given capabilities of the server in order for this test script to execute."]
129    pub r#validated: super::super::types::Boolean,
130    #[doc = "Description of the capabilities that this test script is requiring the server to support."]
131    pub r#description: Option<super::super::types::String>,
132    #[doc = "Which origin server these requirements apply to."]
133    pub r#origin: Vec<super::super::types::Integer>,
134    #[doc = "Which server these requirements apply to."]
135    pub r#destination: Option<super::super::types::Integer>,
136    #[doc = "Links to the FHIR specification that describes this interaction and the resources involved in more detail."]
137    pub r#link: Vec<super::super::types::Uri>,
138    #[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."]
139    pub r#capabilities: super::super::types::Canonical,
140}
141#[allow(clippy::derivable_impls)]
142impl Default for TestScriptMetadataCapability {
143    fn default() -> Self {
144        Self {
145            r#id: Default::default(),
146            r#extension: Default::default(),
147            r#modifier_extension: Default::default(),
148            r#required: super::super::types::Boolean {
149                id: Some("$invalid".to_string()),
150                ..Default::default()
151            },
152            r#validated: super::super::types::Boolean {
153                id: Some("$invalid".to_string()),
154                ..Default::default()
155            },
156            r#description: Default::default(),
157            r#origin: Default::default(),
158            r#destination: Default::default(),
159            r#link: Default::default(),
160            r#capabilities: super::super::types::Canonical {
161                id: Some("$invalid".to_string()),
162                ..Default::default()
163            },
164        }
165    }
166}
167#[doc = "The required capability must exist and are assumed to function correctly on the FHIR server being tested."]
168#[derive(Debug, Clone, PartialEq)]
169pub struct TestScriptMetadata {
170    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
171    pub r#id: Option<std::string::String>,
172    #[doc = "May be 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."]
173    pub r#extension: Vec<super::super::types::Extension>,
174    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/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)."]
175    pub r#modifier_extension: Vec<super::super::types::Extension>,
176    #[doc = "A link to the FHIR specification that this test is covering."]
177    pub r#link: Vec<TestScriptMetadataLink>,
178    #[doc = "Capabilities that must exist and are assumed to function correctly on the FHIR server being tested."]
179    pub r#capability: Vec<TestScriptMetadataCapability>,
180}
181#[allow(clippy::derivable_impls)]
182impl Default for TestScriptMetadata {
183    fn default() -> Self {
184        Self {
185            r#id: Default::default(),
186            r#extension: Default::default(),
187            r#modifier_extension: Default::default(),
188            r#link: Default::default(),
189            r#capability: Default::default(),
190        }
191    }
192}
193#[doc = "The scope indicates a conformance artifact that is tested by the test(s) within this test case and the expectation of the test outcome(s) as well as the intended test phase inclusion."]
194#[derive(Debug, Clone, PartialEq)]
195pub struct TestScriptScope {
196    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
197    pub r#id: Option<std::string::String>,
198    #[doc = "May be 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."]
199    pub r#extension: Vec<super::super::types::Extension>,
200    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/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)."]
201    pub r#modifier_extension: Vec<super::super::types::Extension>,
202    #[doc = "The specific conformance artifact being tested. The canonical reference can be version-specific."]
203    pub r#artifact: super::super::types::Canonical,
204    #[doc = "The expectation of whether the test must pass for the system to be considered conformant with the artifact: required - all tests are expected to pass, optional - all test are expected to pass but non-pass status may be allowed, strict - all tests are expected to pass and warnings are treated as a failure."]
205    pub r#conformance: Option<Box<super::super::types::CodeableConcept>>,
206    #[doc = "The phase of testing for this artifact: unit - development / implementation phase, integration - internal system to system phase, production - live system to system phase (Note, this may involve pii/phi data)."]
207    pub r#phase: Option<Box<super::super::types::CodeableConcept>>,
208}
209#[allow(clippy::derivable_impls)]
210impl Default for TestScriptScope {
211    fn default() -> Self {
212        Self {
213            r#id: Default::default(),
214            r#extension: Default::default(),
215            r#modifier_extension: Default::default(),
216            r#artifact: super::super::types::Canonical {
217                id: Some("$invalid".to_string()),
218                ..Default::default()
219            },
220            r#conformance: Default::default(),
221            r#phase: Default::default(),
222        }
223    }
224}
225#[doc = "Fixture in the test script - by reference (uri). All fixtures are required for the test script to execute."]
226#[derive(Debug, Clone, PartialEq)]
227pub struct TestScriptFixture {
228    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
229    pub r#id: Option<std::string::String>,
230    #[doc = "May be 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."]
231    pub r#extension: Vec<super::super::types::Extension>,
232    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/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)."]
233    pub r#modifier_extension: Vec<super::super::types::Extension>,
234    #[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."]
235    pub r#autocreate: super::super::types::Boolean,
236    #[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."]
237    pub r#autodelete: super::super::types::Boolean,
238    #[doc = "Reference to the resource (containing the contents of the resource needed for operations). This is allowed to be a Parameters resource."]
239    pub r#resource: Option<Box<super::super::types::Reference>>,
240}
241#[allow(clippy::derivable_impls)]
242impl Default for TestScriptFixture {
243    fn default() -> Self {
244        Self {
245            r#id: Default::default(),
246            r#extension: Default::default(),
247            r#modifier_extension: Default::default(),
248            r#autocreate: super::super::types::Boolean {
249                id: Some("$invalid".to_string()),
250                ..Default::default()
251            },
252            r#autodelete: super::super::types::Boolean {
253                id: Some("$invalid".to_string()),
254                ..Default::default()
255            },
256            r#resource: Default::default(),
257        }
258    }
259}
260#[doc = "Variable is set based either on element value in response body or on header field value in the response headers."]
261#[derive(Debug, Clone, PartialEq)]
262pub struct TestScriptVariable {
263    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
264    pub r#id: Option<std::string::String>,
265    #[doc = "May be 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."]
266    pub r#extension: Vec<super::super::types::Extension>,
267    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/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)."]
268    pub r#modifier_extension: Vec<super::super::types::Extension>,
269    #[doc = "Descriptive name for this variable."]
270    pub r#name: super::super::types::String,
271    #[doc = "A default, hard-coded, or user-defined value for this variable."]
272    pub r#default_value: Option<super::super::types::String>,
273    #[doc = "A free text natural language description of the variable and its purpose."]
274    pub r#description: Option<super::super::types::String>,
275    #[doc = "The FHIRPath expression for a specific value to evaluate against the fixture body. When variables are defined, only one of either expression, headerField or path must be specified."]
276    pub r#expression: Option<super::super::types::String>,
277    #[doc = "Will be used to grab the HTTP header field value from the headers that sourceId is pointing to."]
278    pub r#header_field: Option<super::super::types::String>,
279    #[doc = "Displayable text string with hint help information to the user when entering a default value."]
280    pub r#hint: Option<super::super::types::String>,
281    #[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."]
282    pub r#path: Option<super::super::types::String>,
283    #[doc = "Fixture to evaluate the XPath/JSONPath expression or the headerField  against within this variable."]
284    pub r#source_id: Option<super::super::types::Id>,
285}
286#[allow(clippy::derivable_impls)]
287impl Default for TestScriptVariable {
288    fn default() -> Self {
289        Self {
290            r#id: Default::default(),
291            r#extension: Default::default(),
292            r#modifier_extension: Default::default(),
293            r#name: super::super::types::String {
294                id: Some("$invalid".to_string()),
295                ..Default::default()
296            },
297            r#default_value: Default::default(),
298            r#description: Default::default(),
299            r#expression: Default::default(),
300            r#header_field: Default::default(),
301            r#hint: Default::default(),
302            r#path: Default::default(),
303            r#source_id: Default::default(),
304        }
305    }
306}
307#[doc = "Header elements would be used to set HTTP headers."]
308#[derive(Debug, Clone, PartialEq)]
309pub struct TestScriptSetupActionOperationRequestHeader {
310    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
311    pub r#id: Option<std::string::String>,
312    #[doc = "May be 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."]
313    pub r#extension: Vec<super::super::types::Extension>,
314    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/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)."]
315    pub r#modifier_extension: Vec<super::super::types::Extension>,
316    #[doc = "The HTTP header field e.g. \"Accept\"."]
317    pub r#field: super::super::types::String,
318    #[doc = "The value of the header e.g. \"application/fhir+xml\"."]
319    pub r#value: super::super::types::String,
320}
321#[allow(clippy::derivable_impls)]
322impl Default for TestScriptSetupActionOperationRequestHeader {
323    fn default() -> Self {
324        Self {
325            r#id: Default::default(),
326            r#extension: Default::default(),
327            r#modifier_extension: Default::default(),
328            r#field: super::super::types::String {
329                id: Some("$invalid".to_string()),
330                ..Default::default()
331            },
332            r#value: super::super::types::String {
333                id: Some("$invalid".to_string()),
334                ..Default::default()
335            },
336        }
337    }
338}
339#[doc = "The operation to perform."]
340#[derive(Debug, Clone, PartialEq)]
341pub struct TestScriptSetupActionOperation {
342    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
343    pub r#id: Option<std::string::String>,
344    #[doc = "May be 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."]
345    pub r#extension: Vec<super::super::types::Extension>,
346    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/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)."]
347    pub r#modifier_extension: Vec<super::super::types::Extension>,
348    #[doc = "Server interaction or operation type."]
349    pub r#type: Option<Box<super::super::types::Coding>>,
350    #[doc = "The type of the FHIR resource. See the [resource list](https://hl7.org/FHIR/resourcelist.html)). Data type of uri is needed when non-HL7 artifacts are identified."]
351    pub r#resource: Option<super::super::types::Uri>,
352    #[doc = "The label would be used for tracking/logging purposes by test engines."]
353    pub r#label: Option<super::super::types::String>,
354    #[doc = "The description would be used by test engines for tracking and reporting purposes."]
355    pub r#description: Option<super::super::types::String>,
356    #[doc = "The mime-type to use for RESTful operation in the 'Accept' header."]
357    pub r#accept: Option<super::super::types::Code>,
358    #[doc = "The mime-type to use for RESTful operation in the 'Content-Type' header."]
359    pub r#content_type: Option<super::super::types::Code>,
360    #[doc = "The server where the request message is destined for.  Must be one of the server numbers listed in TestScript.destination section."]
361    pub r#destination: Option<super::super::types::Integer>,
362    #[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."]
363    pub r#encode_request_url: super::super::types::Boolean,
364    #[doc = "The HTTP method the test engine MUST use for this operation regardless of any other operation details."]
365    pub r#method: Option<super::super::types::Code>,
366    #[doc = "The server where the request message originates from.  Must be one of the server numbers listed in TestScript.origin section."]
367    pub r#origin: Option<super::super::types::Integer>,
368    #[doc = "Path plus parameters after `type`.  Used to set parts of the request URL explicitly."]
369    pub r#params: Option<super::super::types::String>,
370    #[doc = "Header elements would be used to set HTTP headers."]
371    pub r#request_header: Vec<TestScriptSetupActionOperationRequestHeader>,
372    #[doc = "The fixture id (maybe new) to map to the request."]
373    pub r#request_id: Option<super::super::types::Id>,
374    #[doc = "The fixture id (maybe new) to map to the response."]
375    pub r#response_id: Option<super::super::types::Id>,
376    #[doc = "The id of the fixture used as the body of a PUT or POST request."]
377    pub r#source_id: Option<super::super::types::Id>,
378    #[doc = "Id of fixture used for extracting the `id`,  `type`, and `vid` for GET requests."]
379    pub r#target_id: Option<super::super::types::Id>,
380    #[doc = "Complete request URL."]
381    pub r#url: Option<super::super::types::String>,
382}
383#[allow(clippy::derivable_impls)]
384impl Default for TestScriptSetupActionOperation {
385    fn default() -> Self {
386        Self {
387            r#id: Default::default(),
388            r#extension: Default::default(),
389            r#modifier_extension: Default::default(),
390            r#type: Default::default(),
391            r#resource: Default::default(),
392            r#label: Default::default(),
393            r#description: Default::default(),
394            r#accept: Default::default(),
395            r#content_type: Default::default(),
396            r#destination: Default::default(),
397            r#encode_request_url: super::super::types::Boolean {
398                id: Some("$invalid".to_string()),
399                ..Default::default()
400            },
401            r#method: Default::default(),
402            r#origin: Default::default(),
403            r#params: Default::default(),
404            r#request_header: Default::default(),
405            r#request_id: Default::default(),
406            r#response_id: Default::default(),
407            r#source_id: Default::default(),
408            r#target_id: Default::default(),
409            r#url: Default::default(),
410        }
411    }
412}
413#[doc = "Links or references providing traceability to the testing requirements for this assert."]
414#[derive(Debug, Clone, PartialEq)]
415pub struct TestScriptSetupActionAssertRequirement {
416    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
417    pub r#id: Option<std::string::String>,
418    #[doc = "May be 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."]
419    pub r#extension: Vec<super::super::types::Extension>,
420    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/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)."]
421    pub r#modifier_extension: Vec<super::super::types::Extension>,
422    #[doc = "Link or reference providing traceability to the testing requirement for this test."]
423    pub r#link: Option<TestScriptSetupActionAssertRequirementLink>,
424}
425#[allow(clippy::derivable_impls)]
426impl Default for TestScriptSetupActionAssertRequirement {
427    fn default() -> Self {
428        Self {
429            r#id: Default::default(),
430            r#extension: Default::default(),
431            r#modifier_extension: Default::default(),
432            r#link: Default::default(),
433        }
434    }
435}
436#[doc = "Evaluates the results of previous operations to determine if the server under test behaves appropriately."]
437#[derive(Debug, Clone, PartialEq)]
438pub struct TestScriptSetupActionAssert {
439    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
440    pub r#id: Option<std::string::String>,
441    #[doc = "May be 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."]
442    pub r#extension: Vec<super::super::types::Extension>,
443    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/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)."]
444    pub r#modifier_extension: Vec<super::super::types::Extension>,
445    #[doc = "The label would be used for tracking/logging purposes by test engines."]
446    pub r#label: Option<super::super::types::String>,
447    #[doc = "The description would be used by test engines for tracking and reporting purposes."]
448    pub r#description: Option<super::super::types::String>,
449    #[doc = "The direction to use for the assertion."]
450    pub r#direction: Option<super::super::types::Code>,
451    #[doc = "Id of the source fixture used as the contents to be evaluated by either the \"source/expression\" or \"sourceId/path\" definition."]
452    pub r#compare_to_source_id: Option<super::super::types::String>,
453    #[doc = "The FHIRPath expression for a specific value to evaluate against the source fixture. When compareToSourceId is defined, either compareToSourceExpression or compareToSourcePath must be defined, but not both."]
454    pub r#compare_to_source_expression: Option<super::super::types::String>,
455    #[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."]
456    pub r#compare_to_source_path: Option<super::super::types::String>,
457    #[doc = "The mime-type contents to compare against the request or response message 'Content-Type' header."]
458    pub r#content_type: Option<super::super::types::Code>,
459    #[doc = "The default manual completion outcome applied to this assertion."]
460    pub r#default_manual_completion: Option<super::super::types::Code>,
461    #[doc = "The FHIRPath expression to be evaluated against the request or response message contents - HTTP headers and payload."]
462    pub r#expression: Option<super::super::types::String>,
463    #[doc = "The HTTP header field name e.g. 'Location'."]
464    pub r#header_field: Option<super::super::types::String>,
465    #[doc = "The ID of a fixture. Asserts that the response contains at a minimum the fixture specified by minimumId."]
466    pub r#minimum_id: Option<super::super::types::String>,
467    #[doc = "Whether or not the test execution performs validation on the bundle navigation links."]
468    pub r#navigation_links: Option<super::super::types::Boolean>,
469    #[doc = "The operator type defines the conditional behavior of the assert."]
470    pub r#operator: Option<super::super::types::Code>,
471    #[doc = "The XPath or JSONPath expression to be evaluated against the fixture representing the response received from server."]
472    pub r#path: Option<super::super::types::String>,
473    #[doc = "The request method or HTTP operation code to compare against that used by the client system under test."]
474    pub r#request_method: Option<super::super::types::Code>,
475    #[doc = "The value to use in a comparison against the request URL path string."]
476    pub r#request_url: Option<super::super::types::String>,
477    #[doc = "The type of the resource.  See the [resource list](https://hl7.org/FHIR/resourcelist.html))."]
478    pub r#resource: Option<super::super::types::Uri>,
479    #[doc = "continue | switchingProtocols | okay | created | accepted | nonAuthoritativeInformation | noContent | resetContent | partialContent | multipleChoices | movedPermanently | found | seeOther | notModified | useProxy | temporaryRedirect | permanentRedirect | badRequest | unauthorized | paymentRequired | forbidden | notFound | methodNotAllowed | notAcceptable | proxyAuthenticationRequired | requestTimeout | conflict | gone | lengthRequired | preconditionFailed | contentTooLarge | uriTooLong | unsupportedMediaType | rangeNotSatisfiable | expectationFailed | misdirectedRequest | unprocessableContent | upgradeRequired | internalServerError | notImplemented | badGateway | serviceUnavailable | gatewayTimeout | <httpVersionNotSupported>."]
480    pub r#response: Option<super::super::types::Code>,
481    #[doc = "The value of the HTTP response code to be tested."]
482    pub r#response_code: Option<super::super::types::String>,
483    #[doc = "Fixture to evaluate the XPath/JSONPath expression or the headerField  against."]
484    pub r#source_id: Option<super::super::types::Id>,
485    #[doc = "Whether or not the current test execution will stop on failure for this assert."]
486    pub r#stop_test_on_fail: super::super::types::Boolean,
487    #[doc = "The ID of the Profile to validate against."]
488    pub r#validate_profile_id: Option<super::super::types::Id>,
489    #[doc = "The value to compare to."]
490    pub r#value: Option<super::super::types::String>,
491    #[doc = "Whether or not the test execution will produce a warning only on error for this assert."]
492    pub r#warning_only: super::super::types::Boolean,
493    #[doc = "Links or references providing traceability to the testing requirements for this assert."]
494    pub r#requirement: Vec<TestScriptSetupActionAssertRequirement>,
495}
496#[allow(clippy::derivable_impls)]
497impl Default for TestScriptSetupActionAssert {
498    fn default() -> Self {
499        Self {
500            r#id: Default::default(),
501            r#extension: Default::default(),
502            r#modifier_extension: Default::default(),
503            r#label: Default::default(),
504            r#description: Default::default(),
505            r#direction: Default::default(),
506            r#compare_to_source_id: Default::default(),
507            r#compare_to_source_expression: Default::default(),
508            r#compare_to_source_path: Default::default(),
509            r#content_type: Default::default(),
510            r#default_manual_completion: Default::default(),
511            r#expression: Default::default(),
512            r#header_field: Default::default(),
513            r#minimum_id: Default::default(),
514            r#navigation_links: Default::default(),
515            r#operator: Default::default(),
516            r#path: Default::default(),
517            r#request_method: Default::default(),
518            r#request_url: Default::default(),
519            r#resource: Default::default(),
520            r#response: Default::default(),
521            r#response_code: Default::default(),
522            r#source_id: Default::default(),
523            r#stop_test_on_fail: super::super::types::Boolean {
524                id: Some("$invalid".to_string()),
525                ..Default::default()
526            },
527            r#validate_profile_id: Default::default(),
528            r#value: Default::default(),
529            r#warning_only: super::super::types::Boolean {
530                id: Some("$invalid".to_string()),
531                ..Default::default()
532            },
533            r#requirement: Default::default(),
534        }
535    }
536}
537#[doc = "Action would contain either an operation or an assertion."]
538#[derive(Debug, Clone, PartialEq)]
539pub struct TestScriptSetupAction {
540    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
541    pub r#id: Option<std::string::String>,
542    #[doc = "May be 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."]
543    pub r#extension: Vec<super::super::types::Extension>,
544    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/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)."]
545    pub r#modifier_extension: Vec<super::super::types::Extension>,
546    #[doc = "The operation to perform."]
547    pub r#operation: Option<TestScriptSetupActionOperation>,
548    #[doc = "Evaluates the results of previous operations to determine if the server under test behaves appropriately."]
549    pub r#assert: Option<TestScriptSetupActionAssert>,
550}
551#[allow(clippy::derivable_impls)]
552impl Default for TestScriptSetupAction {
553    fn default() -> Self {
554        Self {
555            r#id: Default::default(),
556            r#extension: Default::default(),
557            r#modifier_extension: Default::default(),
558            r#operation: Default::default(),
559            r#assert: Default::default(),
560        }
561    }
562}
563#[doc = "A series of required setup operations before tests are executed."]
564#[derive(Debug, Clone, PartialEq)]
565pub struct TestScriptSetup {
566    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
567    pub r#id: Option<std::string::String>,
568    #[doc = "May be 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."]
569    pub r#extension: Vec<super::super::types::Extension>,
570    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/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)."]
571    pub r#modifier_extension: Vec<super::super::types::Extension>,
572    #[doc = "Action would contain either an operation or an assertion."]
573    pub r#action: Vec<TestScriptSetupAction>,
574}
575#[allow(clippy::derivable_impls)]
576impl Default for TestScriptSetup {
577    fn default() -> Self {
578        Self {
579            r#id: Default::default(),
580            r#extension: Default::default(),
581            r#modifier_extension: Default::default(),
582            r#action: Default::default(),
583        }
584    }
585}
586#[doc = "Action would contain either an operation or an assertion."]
587#[derive(Debug, Clone, PartialEq)]
588pub struct TestScriptTestAction {
589    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
590    pub r#id: Option<std::string::String>,
591    #[doc = "May be 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."]
592    pub r#extension: Vec<super::super::types::Extension>,
593    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/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)."]
594    pub r#modifier_extension: Vec<super::super::types::Extension>,
595    #[doc = "An operation would involve a REST request to a server."]
596    pub r#operation: Option<TestScriptSetupActionOperation>,
597    #[doc = "Evaluates the results of previous operations to determine if the server under test behaves appropriately."]
598    pub r#assert: Option<TestScriptSetupActionAssert>,
599}
600#[allow(clippy::derivable_impls)]
601impl Default for TestScriptTestAction {
602    fn default() -> Self {
603        Self {
604            r#id: Default::default(),
605            r#extension: Default::default(),
606            r#modifier_extension: Default::default(),
607            r#operation: Default::default(),
608            r#assert: Default::default(),
609        }
610    }
611}
612#[doc = "A test in this script."]
613#[derive(Debug, Clone, PartialEq)]
614pub struct TestScriptTest {
615    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
616    pub r#id: Option<std::string::String>,
617    #[doc = "May be 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."]
618    pub r#extension: Vec<super::super::types::Extension>,
619    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/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)."]
620    pub r#modifier_extension: Vec<super::super::types::Extension>,
621    #[doc = "The name of this test used for tracking/logging purposes by test engines."]
622    pub r#name: Option<super::super::types::String>,
623    #[doc = "A short description of the test used by test engines for tracking and reporting purposes."]
624    pub r#description: Option<super::super::types::String>,
625    #[doc = "Action would contain either an operation or an assertion."]
626    pub r#action: Vec<TestScriptTestAction>,
627}
628#[allow(clippy::derivable_impls)]
629impl Default for TestScriptTest {
630    fn default() -> Self {
631        Self {
632            r#id: Default::default(),
633            r#extension: Default::default(),
634            r#modifier_extension: Default::default(),
635            r#name: Default::default(),
636            r#description: Default::default(),
637            r#action: Default::default(),
638        }
639    }
640}
641#[doc = "The teardown action will only contain an operation."]
642#[derive(Debug, Clone, PartialEq)]
643pub struct TestScriptTeardownAction {
644    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
645    pub r#id: Option<std::string::String>,
646    #[doc = "May be 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."]
647    pub r#extension: Vec<super::super::types::Extension>,
648    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/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)."]
649    pub r#modifier_extension: Vec<super::super::types::Extension>,
650    #[doc = "An operation would involve a REST request to a server."]
651    pub r#operation: TestScriptSetupActionOperation,
652}
653#[allow(clippy::derivable_impls)]
654impl Default for TestScriptTeardownAction {
655    fn default() -> Self {
656        Self {
657            r#id: Default::default(),
658            r#extension: Default::default(),
659            r#modifier_extension: Default::default(),
660            r#operation: TestScriptSetupActionOperation {
661                id: Some("$invalid".to_string()),
662                ..Default::default()
663            },
664        }
665    }
666}
667#[doc = "A series of operations required to clean up after all the tests are executed (successfully or otherwise)."]
668#[derive(Debug, Clone, PartialEq)]
669pub struct TestScriptTeardown {
670    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
671    pub r#id: Option<std::string::String>,
672    #[doc = "May be 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."]
673    pub r#extension: Vec<super::super::types::Extension>,
674    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/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)."]
675    pub r#modifier_extension: Vec<super::super::types::Extension>,
676    #[doc = "The teardown action will only contain an operation."]
677    pub r#action: Vec<TestScriptTeardownAction>,
678}
679#[allow(clippy::derivable_impls)]
680impl Default for TestScriptTeardown {
681    fn default() -> Self {
682        Self {
683            r#id: Default::default(),
684            r#extension: Default::default(),
685            r#modifier_extension: Default::default(),
686            r#action: Default::default(),
687        }
688    }
689}
690#[doc = "A structured set of tests against a FHIR server or client implementation to determine compliance against the FHIR specification."]
691#[derive(Debug, Clone, PartialEq)]
692pub struct TestScript {
693    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
694    pub r#id: Option<super::super::types::Id>,
695    #[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."]
696    pub r#meta: Option<Box<super::super::types::Meta>>,
697    #[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."]
698    pub r#implicit_rules: Option<super::super::types::Uri>,
699    #[doc = "The base language in which the resource is written."]
700    pub r#language: Option<super::super::types::Code>,
701    #[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."]
702    pub r#text: Option<Box<super::super::types::Narrative>>,
703    #[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."]
704    pub r#contained: Vec<super::super::Resource>,
705    #[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."]
706    pub r#extension: Vec<super::super::types::Extension>,
707    #[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)."]
708    pub r#modifier_extension: Vec<super::super::types::Extension>,
709    #[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 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."]
710    pub r#url: Option<super::super::types::Uri>,
711    #[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."]
712    pub r#identifier: Vec<super::super::types::Identifier>,
713    #[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."]
714    pub r#version: Option<super::super::types::String>,
715    #[doc = "Indicates the mechanism used to compare versions to determine which is more current."]
716    pub r#version_algorithm: Option<TestScriptVersionAlgorithm>,
717    #[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."]
718    pub r#name: super::super::types::String,
719    #[doc = "A short, descriptive, user-friendly title for the test script."]
720    pub r#title: Option<super::super::types::String>,
721    #[doc = "The status of this test script. Enables tracking the life-cycle of the content."]
722    pub r#status: super::super::types::Code,
723    #[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."]
724    pub r#experimental: Option<super::super::types::Boolean>,
725    #[doc = "The date (and optionally time) when the test script was last significantly changed. 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."]
726    pub r#date: Option<super::super::types::DateTime>,
727    #[doc = "The name of the organization or individual responsible for the release and ongoing maintenance of the test script."]
728    pub r#publisher: Option<super::super::types::String>,
729    #[doc = "Contact details to assist a user in finding and communicating with the publisher."]
730    pub r#contact: Vec<super::super::types::ContactDetail>,
731    #[doc = "A free text natural language description of the test script from a consumer's perspective."]
732    pub r#description: Option<super::super::types::Markdown>,
733    #[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."]
734    pub r#use_context: Vec<super::super::types::UsageContext>,
735    #[doc = "A legal or geographic region in which the test script is intended to be used."]
736    pub r#jurisdiction: Vec<super::super::types::CodeableConcept>,
737    #[doc = "Explanation of why this test script is needed and why it has been designed as it has."]
738    pub r#purpose: Option<super::super::types::Markdown>,
739    #[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."]
740    pub r#copyright: Option<super::super::types::Markdown>,
741    #[doc = "A short string (<50 characters), suitable for inclusion in a page footer that identifies the copyright holder, effective period, and optionally whether rights are resctricted. (e.g. 'All rights reserved', 'Some rights reserved')."]
742    pub r#copyright_label: Option<super::super::types::String>,
743    #[doc = "An abstract server used in operations within this test script in the origin element."]
744    pub r#origin: Vec<TestScriptOrigin>,
745    #[doc = "An abstract server used in operations within this test script in the destination element."]
746    pub r#destination: Vec<TestScriptDestination>,
747    #[doc = "The required capability must exist and are assumed to function correctly on the FHIR server being tested."]
748    pub r#metadata: Option<TestScriptMetadata>,
749    #[doc = "The scope indicates a conformance artifact that is tested by the test(s) within this test case and the expectation of the test outcome(s) as well as the intended test phase inclusion."]
750    pub r#scope: Vec<TestScriptScope>,
751    #[doc = "Fixture in the test script - by reference (uri). All fixtures are required for the test script to execute."]
752    pub r#fixture: Vec<TestScriptFixture>,
753    #[doc = "Reference to the profile to be used for validation."]
754    pub r#profile: Vec<super::super::types::Canonical>,
755    #[doc = "Variable is set based either on element value in response body or on header field value in the response headers."]
756    pub r#variable: Vec<TestScriptVariable>,
757    #[doc = "A series of required setup operations before tests are executed."]
758    pub r#setup: Option<TestScriptSetup>,
759    #[doc = "A test in this script."]
760    pub r#test: Vec<TestScriptTest>,
761    #[doc = "A series of operations required to clean up after all the tests are executed (successfully or otherwise)."]
762    pub r#teardown: Option<TestScriptTeardown>,
763}
764#[allow(clippy::derivable_impls)]
765impl Default for TestScript {
766    fn default() -> Self {
767        Self {
768            r#id: Default::default(),
769            r#meta: Default::default(),
770            r#implicit_rules: Default::default(),
771            r#language: Default::default(),
772            r#text: Default::default(),
773            r#contained: Default::default(),
774            r#extension: Default::default(),
775            r#modifier_extension: Default::default(),
776            r#url: Default::default(),
777            r#identifier: Default::default(),
778            r#version: Default::default(),
779            r#version_algorithm: Default::default(),
780            r#name: super::super::types::String {
781                id: Some("$invalid".to_string()),
782                ..Default::default()
783            },
784            r#title: Default::default(),
785            r#status: super::super::types::Code {
786                id: Some("$invalid".to_string()),
787                ..Default::default()
788            },
789            r#experimental: Default::default(),
790            r#date: Default::default(),
791            r#publisher: Default::default(),
792            r#contact: Default::default(),
793            r#description: Default::default(),
794            r#use_context: Default::default(),
795            r#jurisdiction: Default::default(),
796            r#purpose: Default::default(),
797            r#copyright: Default::default(),
798            r#copyright_label: Default::default(),
799            r#origin: Default::default(),
800            r#destination: Default::default(),
801            r#metadata: Default::default(),
802            r#scope: Default::default(),
803            r#fixture: Default::default(),
804            r#profile: Default::default(),
805            r#variable: Default::default(),
806            r#setup: Default::default(),
807            r#test: Default::default(),
808            r#teardown: Default::default(),
809        }
810    }
811}