1#[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}