001package org.hl7.fhir.r5.model;
002
003
004/*
005  Copyright (c) 2011+, HL7, Inc.
006  All rights reserved.
007  
008  Redistribution and use in source and binary forms, with or without modification, \
009  are permitted provided that the following conditions are met:
010  
011   * Redistributions of source code must retain the above copyright notice, this \
012     list of conditions and the following disclaimer.
013   * Redistributions in binary form must reproduce the above copyright notice, \
014     this list of conditions and the following disclaimer in the documentation \
015     and/or other materials provided with the distribution.
016   * Neither the name of HL7 nor the names of its contributors may be used to 
017     endorse or promote products derived from this software without specific 
018     prior written permission.
019  
020  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND \
021  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED \
022  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. \
023  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, \
024  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT \
025  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR \
026  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, \
027  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) \
028  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE \
029  POSSIBILITY OF SUCH DAMAGE.
030  */
031
032// Generated on Tue, Dec 13, 2022 17:53+1100 for FHIR vcurrent
033
034import java.util.ArrayList;
035import java.util.Date;
036import java.util.List;
037import org.hl7.fhir.utilities.Utilities;
038import org.hl7.fhir.r5.model.Enumerations.*;
039import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
040import org.hl7.fhir.exceptions.FHIRException;
041import org.hl7.fhir.instance.model.api.ICompositeType;
042import ca.uhn.fhir.model.api.annotation.ResourceDef;
043import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
044import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
045import ca.uhn.fhir.model.api.annotation.Child;
046import ca.uhn.fhir.model.api.annotation.ChildOrder;
047import ca.uhn.fhir.model.api.annotation.Description;
048import ca.uhn.fhir.model.api.annotation.Block;
049
050/**
051 * A structured set of tests against a FHIR server or client implementation to determine compliance against the FHIR specification.
052 */
053@ResourceDef(name="TestScript", profile="http://hl7.org/fhir/StructureDefinition/TestScript")
054public class TestScript extends CanonicalResource {
055
056    public enum AssertionDirectionType {
057        /**
058         * The assertion is evaluated on the response. This is the default value.
059         */
060        RESPONSE, 
061        /**
062         * The assertion is evaluated on the request.
063         */
064        REQUEST, 
065        /**
066         * added to help the parsers with the generic types
067         */
068        NULL;
069        public static AssertionDirectionType fromCode(String codeString) throws FHIRException {
070            if (codeString == null || "".equals(codeString))
071                return null;
072        if ("response".equals(codeString))
073          return RESPONSE;
074        if ("request".equals(codeString))
075          return REQUEST;
076        if (Configuration.isAcceptInvalidEnums())
077          return null;
078        else
079          throw new FHIRException("Unknown AssertionDirectionType code '"+codeString+"'");
080        }
081        public String toCode() {
082          switch (this) {
083            case RESPONSE: return "response";
084            case REQUEST: return "request";
085            case NULL: return null;
086            default: return "?";
087          }
088        }
089        public String getSystem() {
090          switch (this) {
091            case RESPONSE: return "http://hl7.org/fhir/assert-direction-codes";
092            case REQUEST: return "http://hl7.org/fhir/assert-direction-codes";
093            case NULL: return null;
094            default: return "?";
095          }
096        }
097        public String getDefinition() {
098          switch (this) {
099            case RESPONSE: return "The assertion is evaluated on the response. This is the default value.";
100            case REQUEST: return "The assertion is evaluated on the request.";
101            case NULL: return null;
102            default: return "?";
103          }
104        }
105        public String getDisplay() {
106          switch (this) {
107            case RESPONSE: return "response";
108            case REQUEST: return "request";
109            case NULL: return null;
110            default: return "?";
111          }
112        }
113    }
114
115  public static class AssertionDirectionTypeEnumFactory implements EnumFactory<AssertionDirectionType> {
116    public AssertionDirectionType fromCode(String codeString) throws IllegalArgumentException {
117      if (codeString == null || "".equals(codeString))
118            if (codeString == null || "".equals(codeString))
119                return null;
120        if ("response".equals(codeString))
121          return AssertionDirectionType.RESPONSE;
122        if ("request".equals(codeString))
123          return AssertionDirectionType.REQUEST;
124        throw new IllegalArgumentException("Unknown AssertionDirectionType code '"+codeString+"'");
125        }
126        public Enumeration<AssertionDirectionType> fromType(PrimitiveType<?> code) throws FHIRException {
127          if (code == null)
128            return null;
129          if (code.isEmpty())
130            return new Enumeration<AssertionDirectionType>(this, AssertionDirectionType.NULL, code);
131          String codeString = ((PrimitiveType) code).asStringValue();
132          if (codeString == null || "".equals(codeString))
133            return new Enumeration<AssertionDirectionType>(this, AssertionDirectionType.NULL, code);
134        if ("response".equals(codeString))
135          return new Enumeration<AssertionDirectionType>(this, AssertionDirectionType.RESPONSE, code);
136        if ("request".equals(codeString))
137          return new Enumeration<AssertionDirectionType>(this, AssertionDirectionType.REQUEST, code);
138        throw new FHIRException("Unknown AssertionDirectionType code '"+codeString+"'");
139        }
140    public String toCode(AssertionDirectionType code) {
141      if (code == AssertionDirectionType.RESPONSE)
142        return "response";
143      if (code == AssertionDirectionType.REQUEST)
144        return "request";
145      return "?";
146      }
147    public String toSystem(AssertionDirectionType code) {
148      return code.getSystem();
149      }
150    }
151
152    public enum AssertionOperatorType {
153        /**
154         * Default value. Equals comparison.
155         */
156        EQUALS, 
157        /**
158         * Not equals comparison.
159         */
160        NOTEQUALS, 
161        /**
162         * Compare value within a known set of values.
163         */
164        IN, 
165        /**
166         * Compare value not within a known set of values.
167         */
168        NOTIN, 
169        /**
170         * Compare value to be greater than a known value.
171         */
172        GREATERTHAN, 
173        /**
174         * Compare value to be less than a known value.
175         */
176        LESSTHAN, 
177        /**
178         * Compare value is empty.
179         */
180        EMPTY, 
181        /**
182         * Compare value is not empty.
183         */
184        NOTEMPTY, 
185        /**
186         * Compare value string contains a known value.
187         */
188        CONTAINS, 
189        /**
190         * Compare value string does not contain a known value.
191         */
192        NOTCONTAINS, 
193        /**
194         * Evaluate the FHIRPath expression as a boolean condition.
195         */
196        EVAL, 
197        /**
198         * added to help the parsers with the generic types
199         */
200        NULL;
201        public static AssertionOperatorType fromCode(String codeString) throws FHIRException {
202            if (codeString == null || "".equals(codeString))
203                return null;
204        if ("equals".equals(codeString))
205          return EQUALS;
206        if ("notEquals".equals(codeString))
207          return NOTEQUALS;
208        if ("in".equals(codeString))
209          return IN;
210        if ("notIn".equals(codeString))
211          return NOTIN;
212        if ("greaterThan".equals(codeString))
213          return GREATERTHAN;
214        if ("lessThan".equals(codeString))
215          return LESSTHAN;
216        if ("empty".equals(codeString))
217          return EMPTY;
218        if ("notEmpty".equals(codeString))
219          return NOTEMPTY;
220        if ("contains".equals(codeString))
221          return CONTAINS;
222        if ("notContains".equals(codeString))
223          return NOTCONTAINS;
224        if ("eval".equals(codeString))
225          return EVAL;
226        if (Configuration.isAcceptInvalidEnums())
227          return null;
228        else
229          throw new FHIRException("Unknown AssertionOperatorType code '"+codeString+"'");
230        }
231        public String toCode() {
232          switch (this) {
233            case EQUALS: return "equals";
234            case NOTEQUALS: return "notEquals";
235            case IN: return "in";
236            case NOTIN: return "notIn";
237            case GREATERTHAN: return "greaterThan";
238            case LESSTHAN: return "lessThan";
239            case EMPTY: return "empty";
240            case NOTEMPTY: return "notEmpty";
241            case CONTAINS: return "contains";
242            case NOTCONTAINS: return "notContains";
243            case EVAL: return "eval";
244            case NULL: return null;
245            default: return "?";
246          }
247        }
248        public String getSystem() {
249          switch (this) {
250            case EQUALS: return "http://hl7.org/fhir/assert-operator-codes";
251            case NOTEQUALS: return "http://hl7.org/fhir/assert-operator-codes";
252            case IN: return "http://hl7.org/fhir/assert-operator-codes";
253            case NOTIN: return "http://hl7.org/fhir/assert-operator-codes";
254            case GREATERTHAN: return "http://hl7.org/fhir/assert-operator-codes";
255            case LESSTHAN: return "http://hl7.org/fhir/assert-operator-codes";
256            case EMPTY: return "http://hl7.org/fhir/assert-operator-codes";
257            case NOTEMPTY: return "http://hl7.org/fhir/assert-operator-codes";
258            case CONTAINS: return "http://hl7.org/fhir/assert-operator-codes";
259            case NOTCONTAINS: return "http://hl7.org/fhir/assert-operator-codes";
260            case EVAL: return "http://hl7.org/fhir/assert-operator-codes";
261            case NULL: return null;
262            default: return "?";
263          }
264        }
265        public String getDefinition() {
266          switch (this) {
267            case EQUALS: return "Default value. Equals comparison.";
268            case NOTEQUALS: return "Not equals comparison.";
269            case IN: return "Compare value within a known set of values.";
270            case NOTIN: return "Compare value not within a known set of values.";
271            case GREATERTHAN: return "Compare value to be greater than a known value.";
272            case LESSTHAN: return "Compare value to be less than a known value.";
273            case EMPTY: return "Compare value is empty.";
274            case NOTEMPTY: return "Compare value is not empty.";
275            case CONTAINS: return "Compare value string contains a known value.";
276            case NOTCONTAINS: return "Compare value string does not contain a known value.";
277            case EVAL: return "Evaluate the FHIRPath expression as a boolean condition.";
278            case NULL: return null;
279            default: return "?";
280          }
281        }
282        public String getDisplay() {
283          switch (this) {
284            case EQUALS: return "equals";
285            case NOTEQUALS: return "notEquals";
286            case IN: return "in";
287            case NOTIN: return "notIn";
288            case GREATERTHAN: return "greaterThan";
289            case LESSTHAN: return "lessThan";
290            case EMPTY: return "empty";
291            case NOTEMPTY: return "notEmpty";
292            case CONTAINS: return "contains";
293            case NOTCONTAINS: return "notContains";
294            case EVAL: return "evaluate";
295            case NULL: return null;
296            default: return "?";
297          }
298        }
299    }
300
301  public static class AssertionOperatorTypeEnumFactory implements EnumFactory<AssertionOperatorType> {
302    public AssertionOperatorType fromCode(String codeString) throws IllegalArgumentException {
303      if (codeString == null || "".equals(codeString))
304            if (codeString == null || "".equals(codeString))
305                return null;
306        if ("equals".equals(codeString))
307          return AssertionOperatorType.EQUALS;
308        if ("notEquals".equals(codeString))
309          return AssertionOperatorType.NOTEQUALS;
310        if ("in".equals(codeString))
311          return AssertionOperatorType.IN;
312        if ("notIn".equals(codeString))
313          return AssertionOperatorType.NOTIN;
314        if ("greaterThan".equals(codeString))
315          return AssertionOperatorType.GREATERTHAN;
316        if ("lessThan".equals(codeString))
317          return AssertionOperatorType.LESSTHAN;
318        if ("empty".equals(codeString))
319          return AssertionOperatorType.EMPTY;
320        if ("notEmpty".equals(codeString))
321          return AssertionOperatorType.NOTEMPTY;
322        if ("contains".equals(codeString))
323          return AssertionOperatorType.CONTAINS;
324        if ("notContains".equals(codeString))
325          return AssertionOperatorType.NOTCONTAINS;
326        if ("eval".equals(codeString))
327          return AssertionOperatorType.EVAL;
328        throw new IllegalArgumentException("Unknown AssertionOperatorType code '"+codeString+"'");
329        }
330        public Enumeration<AssertionOperatorType> fromType(PrimitiveType<?> code) throws FHIRException {
331          if (code == null)
332            return null;
333          if (code.isEmpty())
334            return new Enumeration<AssertionOperatorType>(this, AssertionOperatorType.NULL, code);
335          String codeString = ((PrimitiveType) code).asStringValue();
336          if (codeString == null || "".equals(codeString))
337            return new Enumeration<AssertionOperatorType>(this, AssertionOperatorType.NULL, code);
338        if ("equals".equals(codeString))
339          return new Enumeration<AssertionOperatorType>(this, AssertionOperatorType.EQUALS, code);
340        if ("notEquals".equals(codeString))
341          return new Enumeration<AssertionOperatorType>(this, AssertionOperatorType.NOTEQUALS, code);
342        if ("in".equals(codeString))
343          return new Enumeration<AssertionOperatorType>(this, AssertionOperatorType.IN, code);
344        if ("notIn".equals(codeString))
345          return new Enumeration<AssertionOperatorType>(this, AssertionOperatorType.NOTIN, code);
346        if ("greaterThan".equals(codeString))
347          return new Enumeration<AssertionOperatorType>(this, AssertionOperatorType.GREATERTHAN, code);
348        if ("lessThan".equals(codeString))
349          return new Enumeration<AssertionOperatorType>(this, AssertionOperatorType.LESSTHAN, code);
350        if ("empty".equals(codeString))
351          return new Enumeration<AssertionOperatorType>(this, AssertionOperatorType.EMPTY, code);
352        if ("notEmpty".equals(codeString))
353          return new Enumeration<AssertionOperatorType>(this, AssertionOperatorType.NOTEMPTY, code);
354        if ("contains".equals(codeString))
355          return new Enumeration<AssertionOperatorType>(this, AssertionOperatorType.CONTAINS, code);
356        if ("notContains".equals(codeString))
357          return new Enumeration<AssertionOperatorType>(this, AssertionOperatorType.NOTCONTAINS, code);
358        if ("eval".equals(codeString))
359          return new Enumeration<AssertionOperatorType>(this, AssertionOperatorType.EVAL, code);
360        throw new FHIRException("Unknown AssertionOperatorType code '"+codeString+"'");
361        }
362    public String toCode(AssertionOperatorType code) {
363      if (code == AssertionOperatorType.EQUALS)
364        return "equals";
365      if (code == AssertionOperatorType.NOTEQUALS)
366        return "notEquals";
367      if (code == AssertionOperatorType.IN)
368        return "in";
369      if (code == AssertionOperatorType.NOTIN)
370        return "notIn";
371      if (code == AssertionOperatorType.GREATERTHAN)
372        return "greaterThan";
373      if (code == AssertionOperatorType.LESSTHAN)
374        return "lessThan";
375      if (code == AssertionOperatorType.EMPTY)
376        return "empty";
377      if (code == AssertionOperatorType.NOTEMPTY)
378        return "notEmpty";
379      if (code == AssertionOperatorType.CONTAINS)
380        return "contains";
381      if (code == AssertionOperatorType.NOTCONTAINS)
382        return "notContains";
383      if (code == AssertionOperatorType.EVAL)
384        return "eval";
385      return "?";
386      }
387    public String toSystem(AssertionOperatorType code) {
388      return code.getSystem();
389      }
390    }
391
392    public enum AssertionResponseTypes {
393        /**
394         * Response code is 200.
395         */
396        OKAY, 
397        /**
398         * Response code is 201.
399         */
400        CREATED, 
401        /**
402         * Response code is 204.
403         */
404        NOCONTENT, 
405        /**
406         * Response code is 304.
407         */
408        NOTMODIFIED, 
409        /**
410         * Response code is 400.
411         */
412        BAD, 
413        /**
414         * Response code is 403.
415         */
416        FORBIDDEN, 
417        /**
418         * Response code is 404.
419         */
420        NOTFOUND, 
421        /**
422         * Response code is 405.
423         */
424        METHODNOTALLOWED, 
425        /**
426         * Response code is 409.
427         */
428        CONFLICT, 
429        /**
430         * Response code is 410.
431         */
432        GONE, 
433        /**
434         * Response code is 412.
435         */
436        PRECONDITIONFAILED, 
437        /**
438         * Response code is 422.
439         */
440        UNPROCESSABLE, 
441        /**
442         * added to help the parsers with the generic types
443         */
444        NULL;
445        public static AssertionResponseTypes fromCode(String codeString) throws FHIRException {
446            if (codeString == null || "".equals(codeString))
447                return null;
448        if ("okay".equals(codeString))
449          return OKAY;
450        if ("created".equals(codeString))
451          return CREATED;
452        if ("noContent".equals(codeString))
453          return NOCONTENT;
454        if ("notModified".equals(codeString))
455          return NOTMODIFIED;
456        if ("bad".equals(codeString))
457          return BAD;
458        if ("forbidden".equals(codeString))
459          return FORBIDDEN;
460        if ("notFound".equals(codeString))
461          return NOTFOUND;
462        if ("methodNotAllowed".equals(codeString))
463          return METHODNOTALLOWED;
464        if ("conflict".equals(codeString))
465          return CONFLICT;
466        if ("gone".equals(codeString))
467          return GONE;
468        if ("preconditionFailed".equals(codeString))
469          return PRECONDITIONFAILED;
470        if ("unprocessable".equals(codeString))
471          return UNPROCESSABLE;
472        if (Configuration.isAcceptInvalidEnums())
473          return null;
474        else
475          throw new FHIRException("Unknown AssertionResponseTypes code '"+codeString+"'");
476        }
477        public String toCode() {
478          switch (this) {
479            case OKAY: return "okay";
480            case CREATED: return "created";
481            case NOCONTENT: return "noContent";
482            case NOTMODIFIED: return "notModified";
483            case BAD: return "bad";
484            case FORBIDDEN: return "forbidden";
485            case NOTFOUND: return "notFound";
486            case METHODNOTALLOWED: return "methodNotAllowed";
487            case CONFLICT: return "conflict";
488            case GONE: return "gone";
489            case PRECONDITIONFAILED: return "preconditionFailed";
490            case UNPROCESSABLE: return "unprocessable";
491            case NULL: return null;
492            default: return "?";
493          }
494        }
495        public String getSystem() {
496          switch (this) {
497            case OKAY: return "http://hl7.org/fhir/assert-response-code-types";
498            case CREATED: return "http://hl7.org/fhir/assert-response-code-types";
499            case NOCONTENT: return "http://hl7.org/fhir/assert-response-code-types";
500            case NOTMODIFIED: return "http://hl7.org/fhir/assert-response-code-types";
501            case BAD: return "http://hl7.org/fhir/assert-response-code-types";
502            case FORBIDDEN: return "http://hl7.org/fhir/assert-response-code-types";
503            case NOTFOUND: return "http://hl7.org/fhir/assert-response-code-types";
504            case METHODNOTALLOWED: return "http://hl7.org/fhir/assert-response-code-types";
505            case CONFLICT: return "http://hl7.org/fhir/assert-response-code-types";
506            case GONE: return "http://hl7.org/fhir/assert-response-code-types";
507            case PRECONDITIONFAILED: return "http://hl7.org/fhir/assert-response-code-types";
508            case UNPROCESSABLE: return "http://hl7.org/fhir/assert-response-code-types";
509            case NULL: return null;
510            default: return "?";
511          }
512        }
513        public String getDefinition() {
514          switch (this) {
515            case OKAY: return "Response code is 200.";
516            case CREATED: return "Response code is 201.";
517            case NOCONTENT: return "Response code is 204.";
518            case NOTMODIFIED: return "Response code is 304.";
519            case BAD: return "Response code is 400.";
520            case FORBIDDEN: return "Response code is 403.";
521            case NOTFOUND: return "Response code is 404.";
522            case METHODNOTALLOWED: return "Response code is 405.";
523            case CONFLICT: return "Response code is 409.";
524            case GONE: return "Response code is 410.";
525            case PRECONDITIONFAILED: return "Response code is 412.";
526            case UNPROCESSABLE: return "Response code is 422.";
527            case NULL: return null;
528            default: return "?";
529          }
530        }
531        public String getDisplay() {
532          switch (this) {
533            case OKAY: return "okay";
534            case CREATED: return "created";
535            case NOCONTENT: return "noContent";
536            case NOTMODIFIED: return "notModified";
537            case BAD: return "bad";
538            case FORBIDDEN: return "forbidden";
539            case NOTFOUND: return "notFound";
540            case METHODNOTALLOWED: return "methodNotAllowed";
541            case CONFLICT: return "conflict";
542            case GONE: return "gone";
543            case PRECONDITIONFAILED: return "preconditionFailed";
544            case UNPROCESSABLE: return "unprocessable";
545            case NULL: return null;
546            default: return "?";
547          }
548        }
549    }
550
551  public static class AssertionResponseTypesEnumFactory implements EnumFactory<AssertionResponseTypes> {
552    public AssertionResponseTypes fromCode(String codeString) throws IllegalArgumentException {
553      if (codeString == null || "".equals(codeString))
554            if (codeString == null || "".equals(codeString))
555                return null;
556        if ("okay".equals(codeString))
557          return AssertionResponseTypes.OKAY;
558        if ("created".equals(codeString))
559          return AssertionResponseTypes.CREATED;
560        if ("noContent".equals(codeString))
561          return AssertionResponseTypes.NOCONTENT;
562        if ("notModified".equals(codeString))
563          return AssertionResponseTypes.NOTMODIFIED;
564        if ("bad".equals(codeString))
565          return AssertionResponseTypes.BAD;
566        if ("forbidden".equals(codeString))
567          return AssertionResponseTypes.FORBIDDEN;
568        if ("notFound".equals(codeString))
569          return AssertionResponseTypes.NOTFOUND;
570        if ("methodNotAllowed".equals(codeString))
571          return AssertionResponseTypes.METHODNOTALLOWED;
572        if ("conflict".equals(codeString))
573          return AssertionResponseTypes.CONFLICT;
574        if ("gone".equals(codeString))
575          return AssertionResponseTypes.GONE;
576        if ("preconditionFailed".equals(codeString))
577          return AssertionResponseTypes.PRECONDITIONFAILED;
578        if ("unprocessable".equals(codeString))
579          return AssertionResponseTypes.UNPROCESSABLE;
580        throw new IllegalArgumentException("Unknown AssertionResponseTypes code '"+codeString+"'");
581        }
582        public Enumeration<AssertionResponseTypes> fromType(PrimitiveType<?> code) throws FHIRException {
583          if (code == null)
584            return null;
585          if (code.isEmpty())
586            return new Enumeration<AssertionResponseTypes>(this, AssertionResponseTypes.NULL, code);
587          String codeString = ((PrimitiveType) code).asStringValue();
588          if (codeString == null || "".equals(codeString))
589            return new Enumeration<AssertionResponseTypes>(this, AssertionResponseTypes.NULL, code);
590        if ("okay".equals(codeString))
591          return new Enumeration<AssertionResponseTypes>(this, AssertionResponseTypes.OKAY, code);
592        if ("created".equals(codeString))
593          return new Enumeration<AssertionResponseTypes>(this, AssertionResponseTypes.CREATED, code);
594        if ("noContent".equals(codeString))
595          return new Enumeration<AssertionResponseTypes>(this, AssertionResponseTypes.NOCONTENT, code);
596        if ("notModified".equals(codeString))
597          return new Enumeration<AssertionResponseTypes>(this, AssertionResponseTypes.NOTMODIFIED, code);
598        if ("bad".equals(codeString))
599          return new Enumeration<AssertionResponseTypes>(this, AssertionResponseTypes.BAD, code);
600        if ("forbidden".equals(codeString))
601          return new Enumeration<AssertionResponseTypes>(this, AssertionResponseTypes.FORBIDDEN, code);
602        if ("notFound".equals(codeString))
603          return new Enumeration<AssertionResponseTypes>(this, AssertionResponseTypes.NOTFOUND, code);
604        if ("methodNotAllowed".equals(codeString))
605          return new Enumeration<AssertionResponseTypes>(this, AssertionResponseTypes.METHODNOTALLOWED, code);
606        if ("conflict".equals(codeString))
607          return new Enumeration<AssertionResponseTypes>(this, AssertionResponseTypes.CONFLICT, code);
608        if ("gone".equals(codeString))
609          return new Enumeration<AssertionResponseTypes>(this, AssertionResponseTypes.GONE, code);
610        if ("preconditionFailed".equals(codeString))
611          return new Enumeration<AssertionResponseTypes>(this, AssertionResponseTypes.PRECONDITIONFAILED, code);
612        if ("unprocessable".equals(codeString))
613          return new Enumeration<AssertionResponseTypes>(this, AssertionResponseTypes.UNPROCESSABLE, code);
614        throw new FHIRException("Unknown AssertionResponseTypes code '"+codeString+"'");
615        }
616    public String toCode(AssertionResponseTypes code) {
617      if (code == AssertionResponseTypes.OKAY)
618        return "okay";
619      if (code == AssertionResponseTypes.CREATED)
620        return "created";
621      if (code == AssertionResponseTypes.NOCONTENT)
622        return "noContent";
623      if (code == AssertionResponseTypes.NOTMODIFIED)
624        return "notModified";
625      if (code == AssertionResponseTypes.BAD)
626        return "bad";
627      if (code == AssertionResponseTypes.FORBIDDEN)
628        return "forbidden";
629      if (code == AssertionResponseTypes.NOTFOUND)
630        return "notFound";
631      if (code == AssertionResponseTypes.METHODNOTALLOWED)
632        return "methodNotAllowed";
633      if (code == AssertionResponseTypes.CONFLICT)
634        return "conflict";
635      if (code == AssertionResponseTypes.GONE)
636        return "gone";
637      if (code == AssertionResponseTypes.PRECONDITIONFAILED)
638        return "preconditionFailed";
639      if (code == AssertionResponseTypes.UNPROCESSABLE)
640        return "unprocessable";
641      return "?";
642      }
643    public String toSystem(AssertionResponseTypes code) {
644      return code.getSystem();
645      }
646    }
647
648    public enum TestScriptRequestMethodCode {
649        /**
650         * HTTP DELETE operation.
651         */
652        DELETE, 
653        /**
654         * HTTP GET operation.
655         */
656        GET, 
657        /**
658         * HTTP OPTIONS operation.
659         */
660        OPTIONS, 
661        /**
662         * HTTP PATCH operation.
663         */
664        PATCH, 
665        /**
666         * HTTP POST operation.
667         */
668        POST, 
669        /**
670         * HTTP PUT operation.
671         */
672        PUT, 
673        /**
674         * HTTP HEAD operation.
675         */
676        HEAD, 
677        /**
678         * added to help the parsers with the generic types
679         */
680        NULL;
681        public static TestScriptRequestMethodCode fromCode(String codeString) throws FHIRException {
682            if (codeString == null || "".equals(codeString))
683                return null;
684        if ("delete".equals(codeString))
685          return DELETE;
686        if ("get".equals(codeString))
687          return GET;
688        if ("options".equals(codeString))
689          return OPTIONS;
690        if ("patch".equals(codeString))
691          return PATCH;
692        if ("post".equals(codeString))
693          return POST;
694        if ("put".equals(codeString))
695          return PUT;
696        if ("head".equals(codeString))
697          return HEAD;
698        if (Configuration.isAcceptInvalidEnums())
699          return null;
700        else
701          throw new FHIRException("Unknown TestScriptRequestMethodCode code '"+codeString+"'");
702        }
703        public String toCode() {
704          switch (this) {
705            case DELETE: return "delete";
706            case GET: return "get";
707            case OPTIONS: return "options";
708            case PATCH: return "patch";
709            case POST: return "post";
710            case PUT: return "put";
711            case HEAD: return "head";
712            case NULL: return null;
713            default: return "?";
714          }
715        }
716        public String getSystem() {
717          switch (this) {
718            case DELETE: return "http://hl7.org/fhir/http-operations";
719            case GET: return "http://hl7.org/fhir/http-operations";
720            case OPTIONS: return "http://hl7.org/fhir/http-operations";
721            case PATCH: return "http://hl7.org/fhir/http-operations";
722            case POST: return "http://hl7.org/fhir/http-operations";
723            case PUT: return "http://hl7.org/fhir/http-operations";
724            case HEAD: return "http://hl7.org/fhir/http-operations";
725            case NULL: return null;
726            default: return "?";
727          }
728        }
729        public String getDefinition() {
730          switch (this) {
731            case DELETE: return "HTTP DELETE operation.";
732            case GET: return "HTTP GET operation.";
733            case OPTIONS: return "HTTP OPTIONS operation.";
734            case PATCH: return "HTTP PATCH operation.";
735            case POST: return "HTTP POST operation.";
736            case PUT: return "HTTP PUT operation.";
737            case HEAD: return "HTTP HEAD operation.";
738            case NULL: return null;
739            default: return "?";
740          }
741        }
742        public String getDisplay() {
743          switch (this) {
744            case DELETE: return "DELETE";
745            case GET: return "GET";
746            case OPTIONS: return "OPTIONS";
747            case PATCH: return "PATCH";
748            case POST: return "POST";
749            case PUT: return "PUT";
750            case HEAD: return "HEAD";
751            case NULL: return null;
752            default: return "?";
753          }
754        }
755    }
756
757  public static class TestScriptRequestMethodCodeEnumFactory implements EnumFactory<TestScriptRequestMethodCode> {
758    public TestScriptRequestMethodCode fromCode(String codeString) throws IllegalArgumentException {
759      if (codeString == null || "".equals(codeString))
760            if (codeString == null || "".equals(codeString))
761                return null;
762        if ("delete".equals(codeString))
763          return TestScriptRequestMethodCode.DELETE;
764        if ("get".equals(codeString))
765          return TestScriptRequestMethodCode.GET;
766        if ("options".equals(codeString))
767          return TestScriptRequestMethodCode.OPTIONS;
768        if ("patch".equals(codeString))
769          return TestScriptRequestMethodCode.PATCH;
770        if ("post".equals(codeString))
771          return TestScriptRequestMethodCode.POST;
772        if ("put".equals(codeString))
773          return TestScriptRequestMethodCode.PUT;
774        if ("head".equals(codeString))
775          return TestScriptRequestMethodCode.HEAD;
776        throw new IllegalArgumentException("Unknown TestScriptRequestMethodCode code '"+codeString+"'");
777        }
778        public Enumeration<TestScriptRequestMethodCode> fromType(PrimitiveType<?> code) throws FHIRException {
779          if (code == null)
780            return null;
781          if (code.isEmpty())
782            return new Enumeration<TestScriptRequestMethodCode>(this, TestScriptRequestMethodCode.NULL, code);
783          String codeString = ((PrimitiveType) code).asStringValue();
784          if (codeString == null || "".equals(codeString))
785            return new Enumeration<TestScriptRequestMethodCode>(this, TestScriptRequestMethodCode.NULL, code);
786        if ("delete".equals(codeString))
787          return new Enumeration<TestScriptRequestMethodCode>(this, TestScriptRequestMethodCode.DELETE, code);
788        if ("get".equals(codeString))
789          return new Enumeration<TestScriptRequestMethodCode>(this, TestScriptRequestMethodCode.GET, code);
790        if ("options".equals(codeString))
791          return new Enumeration<TestScriptRequestMethodCode>(this, TestScriptRequestMethodCode.OPTIONS, code);
792        if ("patch".equals(codeString))
793          return new Enumeration<TestScriptRequestMethodCode>(this, TestScriptRequestMethodCode.PATCH, code);
794        if ("post".equals(codeString))
795          return new Enumeration<TestScriptRequestMethodCode>(this, TestScriptRequestMethodCode.POST, code);
796        if ("put".equals(codeString))
797          return new Enumeration<TestScriptRequestMethodCode>(this, TestScriptRequestMethodCode.PUT, code);
798        if ("head".equals(codeString))
799          return new Enumeration<TestScriptRequestMethodCode>(this, TestScriptRequestMethodCode.HEAD, code);
800        throw new FHIRException("Unknown TestScriptRequestMethodCode code '"+codeString+"'");
801        }
802    public String toCode(TestScriptRequestMethodCode code) {
803      if (code == TestScriptRequestMethodCode.DELETE)
804        return "delete";
805      if (code == TestScriptRequestMethodCode.GET)
806        return "get";
807      if (code == TestScriptRequestMethodCode.OPTIONS)
808        return "options";
809      if (code == TestScriptRequestMethodCode.PATCH)
810        return "patch";
811      if (code == TestScriptRequestMethodCode.POST)
812        return "post";
813      if (code == TestScriptRequestMethodCode.PUT)
814        return "put";
815      if (code == TestScriptRequestMethodCode.HEAD)
816        return "head";
817      return "?";
818      }
819    public String toSystem(TestScriptRequestMethodCode code) {
820      return code.getSystem();
821      }
822    }
823
824    @Block()
825    public static class TestScriptOriginComponent extends BackboneElement implements IBaseBackboneElement {
826        /**
827         * Abstract name given to an origin server in this test script.  The name is provided as a number starting at 1.
828         */
829        @Child(name = "index", type = {IntegerType.class}, order=1, min=1, max=1, modifier=false, summary=false)
830        @Description(shortDefinition="The index of the abstract origin server starting at 1", formalDefinition="Abstract name given to an origin server in this test script.  The name is provided as a number starting at 1." )
831        protected IntegerType index;
832
833        /**
834         * The type of origin profile the test system supports.
835         */
836        @Child(name = "profile", type = {Coding.class}, order=2, min=1, max=1, modifier=false, summary=false)
837        @Description(shortDefinition="FHIR-Client | FHIR-SDC-FormFiller", formalDefinition="The type of origin profile the test system supports." )
838        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/testscript-profile-origin-types")
839        protected Coding profile;
840
841        /**
842         * The explicit url path of the origin server used in this test script.
843         */
844        @Child(name = "url", type = {UrlType.class}, order=3, min=0, max=1, modifier=false, summary=false)
845        @Description(shortDefinition="The url path of the origin server", formalDefinition="The explicit url path of the origin server used in this test script." )
846        protected UrlType url;
847
848        private static final long serialVersionUID = -188072923L;
849
850    /**
851     * Constructor
852     */
853      public TestScriptOriginComponent() {
854        super();
855      }
856
857    /**
858     * Constructor
859     */
860      public TestScriptOriginComponent(int index, Coding profile) {
861        super();
862        this.setIndex(index);
863        this.setProfile(profile);
864      }
865
866        /**
867         * @return {@link #index} (Abstract name given to an origin server in this test script.  The name is provided as a number starting at 1.). This is the underlying object with id, value and extensions. The accessor "getIndex" gives direct access to the value
868         */
869        public IntegerType getIndexElement() { 
870          if (this.index == null)
871            if (Configuration.errorOnAutoCreate())
872              throw new Error("Attempt to auto-create TestScriptOriginComponent.index");
873            else if (Configuration.doAutoCreate())
874              this.index = new IntegerType(); // bb
875          return this.index;
876        }
877
878        public boolean hasIndexElement() { 
879          return this.index != null && !this.index.isEmpty();
880        }
881
882        public boolean hasIndex() { 
883          return this.index != null && !this.index.isEmpty();
884        }
885
886        /**
887         * @param value {@link #index} (Abstract name given to an origin server in this test script.  The name is provided as a number starting at 1.). This is the underlying object with id, value and extensions. The accessor "getIndex" gives direct access to the value
888         */
889        public TestScriptOriginComponent setIndexElement(IntegerType value) { 
890          this.index = value;
891          return this;
892        }
893
894        /**
895         * @return Abstract name given to an origin server in this test script.  The name is provided as a number starting at 1.
896         */
897        public int getIndex() { 
898          return this.index == null || this.index.isEmpty() ? 0 : this.index.getValue();
899        }
900
901        /**
902         * @param value Abstract name given to an origin server in this test script.  The name is provided as a number starting at 1.
903         */
904        public TestScriptOriginComponent setIndex(int value) { 
905            if (this.index == null)
906              this.index = new IntegerType();
907            this.index.setValue(value);
908          return this;
909        }
910
911        /**
912         * @return {@link #profile} (The type of origin profile the test system supports.)
913         */
914        public Coding getProfile() { 
915          if (this.profile == null)
916            if (Configuration.errorOnAutoCreate())
917              throw new Error("Attempt to auto-create TestScriptOriginComponent.profile");
918            else if (Configuration.doAutoCreate())
919              this.profile = new Coding(); // cc
920          return this.profile;
921        }
922
923        public boolean hasProfile() { 
924          return this.profile != null && !this.profile.isEmpty();
925        }
926
927        /**
928         * @param value {@link #profile} (The type of origin profile the test system supports.)
929         */
930        public TestScriptOriginComponent setProfile(Coding value) { 
931          this.profile = value;
932          return this;
933        }
934
935        /**
936         * @return {@link #url} (The explicit url path of the origin server used in this test script.). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
937         */
938        public UrlType getUrlElement() { 
939          if (this.url == null)
940            if (Configuration.errorOnAutoCreate())
941              throw new Error("Attempt to auto-create TestScriptOriginComponent.url");
942            else if (Configuration.doAutoCreate())
943              this.url = new UrlType(); // bb
944          return this.url;
945        }
946
947        public boolean hasUrlElement() { 
948          return this.url != null && !this.url.isEmpty();
949        }
950
951        public boolean hasUrl() { 
952          return this.url != null && !this.url.isEmpty();
953        }
954
955        /**
956         * @param value {@link #url} (The explicit url path of the origin server used in this test script.). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
957         */
958        public TestScriptOriginComponent setUrlElement(UrlType value) { 
959          this.url = value;
960          return this;
961        }
962
963        /**
964         * @return The explicit url path of the origin server used in this test script.
965         */
966        public String getUrl() { 
967          return this.url == null ? null : this.url.getValue();
968        }
969
970        /**
971         * @param value The explicit url path of the origin server used in this test script.
972         */
973        public TestScriptOriginComponent setUrl(String value) { 
974          if (Utilities.noString(value))
975            this.url = null;
976          else {
977            if (this.url == null)
978              this.url = new UrlType();
979            this.url.setValue(value);
980          }
981          return this;
982        }
983
984        protected void listChildren(List<Property> children) {
985          super.listChildren(children);
986          children.add(new Property("index", "integer", "Abstract name given to an origin server in this test script.  The name is provided as a number starting at 1.", 0, 1, index));
987          children.add(new Property("profile", "Coding", "The type of origin profile the test system supports.", 0, 1, profile));
988          children.add(new Property("url", "url", "The explicit url path of the origin server used in this test script.", 0, 1, url));
989        }
990
991        @Override
992        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
993          switch (_hash) {
994          case 100346066: /*index*/  return new Property("index", "integer", "Abstract name given to an origin server in this test script.  The name is provided as a number starting at 1.", 0, 1, index);
995          case -309425751: /*profile*/  return new Property("profile", "Coding", "The type of origin profile the test system supports.", 0, 1, profile);
996          case 116079: /*url*/  return new Property("url", "url", "The explicit url path of the origin server used in this test script.", 0, 1, url);
997          default: return super.getNamedProperty(_hash, _name, _checkValid);
998          }
999
1000        }
1001
1002      @Override
1003      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1004        switch (hash) {
1005        case 100346066: /*index*/ return this.index == null ? new Base[0] : new Base[] {this.index}; // IntegerType
1006        case -309425751: /*profile*/ return this.profile == null ? new Base[0] : new Base[] {this.profile}; // Coding
1007        case 116079: /*url*/ return this.url == null ? new Base[0] : new Base[] {this.url}; // UrlType
1008        default: return super.getProperty(hash, name, checkValid);
1009        }
1010
1011      }
1012
1013      @Override
1014      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1015        switch (hash) {
1016        case 100346066: // index
1017          this.index = TypeConvertor.castToInteger(value); // IntegerType
1018          return value;
1019        case -309425751: // profile
1020          this.profile = TypeConvertor.castToCoding(value); // Coding
1021          return value;
1022        case 116079: // url
1023          this.url = TypeConvertor.castToUrl(value); // UrlType
1024          return value;
1025        default: return super.setProperty(hash, name, value);
1026        }
1027
1028      }
1029
1030      @Override
1031      public Base setProperty(String name, Base value) throws FHIRException {
1032        if (name.equals("index")) {
1033          this.index = TypeConvertor.castToInteger(value); // IntegerType
1034        } else if (name.equals("profile")) {
1035          this.profile = TypeConvertor.castToCoding(value); // Coding
1036        } else if (name.equals("url")) {
1037          this.url = TypeConvertor.castToUrl(value); // UrlType
1038        } else
1039          return super.setProperty(name, value);
1040        return value;
1041      }
1042
1043      @Override
1044      public Base makeProperty(int hash, String name) throws FHIRException {
1045        switch (hash) {
1046        case 100346066:  return getIndexElement();
1047        case -309425751:  return getProfile();
1048        case 116079:  return getUrlElement();
1049        default: return super.makeProperty(hash, name);
1050        }
1051
1052      }
1053
1054      @Override
1055      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1056        switch (hash) {
1057        case 100346066: /*index*/ return new String[] {"integer"};
1058        case -309425751: /*profile*/ return new String[] {"Coding"};
1059        case 116079: /*url*/ return new String[] {"url"};
1060        default: return super.getTypesForProperty(hash, name);
1061        }
1062
1063      }
1064
1065      @Override
1066      public Base addChild(String name) throws FHIRException {
1067        if (name.equals("index")) {
1068          throw new FHIRException("Cannot call addChild on a primitive type TestScript.origin.index");
1069        }
1070        else if (name.equals("profile")) {
1071          this.profile = new Coding();
1072          return this.profile;
1073        }
1074        else if (name.equals("url")) {
1075          throw new FHIRException("Cannot call addChild on a primitive type TestScript.origin.url");
1076        }
1077        else
1078          return super.addChild(name);
1079      }
1080
1081      public TestScriptOriginComponent copy() {
1082        TestScriptOriginComponent dst = new TestScriptOriginComponent();
1083        copyValues(dst);
1084        return dst;
1085      }
1086
1087      public void copyValues(TestScriptOriginComponent dst) {
1088        super.copyValues(dst);
1089        dst.index = index == null ? null : index.copy();
1090        dst.profile = profile == null ? null : profile.copy();
1091        dst.url = url == null ? null : url.copy();
1092      }
1093
1094      @Override
1095      public boolean equalsDeep(Base other_) {
1096        if (!super.equalsDeep(other_))
1097          return false;
1098        if (!(other_ instanceof TestScriptOriginComponent))
1099          return false;
1100        TestScriptOriginComponent o = (TestScriptOriginComponent) other_;
1101        return compareDeep(index, o.index, true) && compareDeep(profile, o.profile, true) && compareDeep(url, o.url, true)
1102          ;
1103      }
1104
1105      @Override
1106      public boolean equalsShallow(Base other_) {
1107        if (!super.equalsShallow(other_))
1108          return false;
1109        if (!(other_ instanceof TestScriptOriginComponent))
1110          return false;
1111        TestScriptOriginComponent o = (TestScriptOriginComponent) other_;
1112        return compareValues(index, o.index, true) && compareValues(url, o.url, true);
1113      }
1114
1115      public boolean isEmpty() {
1116        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(index, profile, url);
1117      }
1118
1119  public String fhirType() {
1120    return "TestScript.origin";
1121
1122  }
1123
1124  }
1125
1126    @Block()
1127    public static class TestScriptDestinationComponent extends BackboneElement implements IBaseBackboneElement {
1128        /**
1129         * Abstract name given to a destination server in this test script.  The name is provided as a number starting at 1.
1130         */
1131        @Child(name = "index", type = {IntegerType.class}, order=1, min=1, max=1, modifier=false, summary=false)
1132        @Description(shortDefinition="The index of the abstract destination server starting at 1", formalDefinition="Abstract name given to a destination server in this test script.  The name is provided as a number starting at 1." )
1133        protected IntegerType index;
1134
1135        /**
1136         * The type of destination profile the test system supports.
1137         */
1138        @Child(name = "profile", type = {Coding.class}, order=2, min=1, max=1, modifier=false, summary=false)
1139        @Description(shortDefinition="FHIR-Server | FHIR-SDC-FormManager | FHIR-SDC-FormReceiver | FHIR-SDC-FormProcessor", formalDefinition="The type of destination profile the test system supports." )
1140        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/testscript-profile-destination-types")
1141        protected Coding profile;
1142
1143        /**
1144         * The explicit url path of the destination server used in this test script.
1145         */
1146        @Child(name = "url", type = {UrlType.class}, order=3, min=0, max=1, modifier=false, summary=false)
1147        @Description(shortDefinition="The url path of the destination server", formalDefinition="The explicit url path of the destination server used in this test script." )
1148        protected UrlType url;
1149
1150        private static final long serialVersionUID = -188072923L;
1151
1152    /**
1153     * Constructor
1154     */
1155      public TestScriptDestinationComponent() {
1156        super();
1157      }
1158
1159    /**
1160     * Constructor
1161     */
1162      public TestScriptDestinationComponent(int index, Coding profile) {
1163        super();
1164        this.setIndex(index);
1165        this.setProfile(profile);
1166      }
1167
1168        /**
1169         * @return {@link #index} (Abstract name given to a destination server in this test script.  The name is provided as a number starting at 1.). This is the underlying object with id, value and extensions. The accessor "getIndex" gives direct access to the value
1170         */
1171        public IntegerType getIndexElement() { 
1172          if (this.index == null)
1173            if (Configuration.errorOnAutoCreate())
1174              throw new Error("Attempt to auto-create TestScriptDestinationComponent.index");
1175            else if (Configuration.doAutoCreate())
1176              this.index = new IntegerType(); // bb
1177          return this.index;
1178        }
1179
1180        public boolean hasIndexElement() { 
1181          return this.index != null && !this.index.isEmpty();
1182        }
1183
1184        public boolean hasIndex() { 
1185          return this.index != null && !this.index.isEmpty();
1186        }
1187
1188        /**
1189         * @param value {@link #index} (Abstract name given to a destination server in this test script.  The name is provided as a number starting at 1.). This is the underlying object with id, value and extensions. The accessor "getIndex" gives direct access to the value
1190         */
1191        public TestScriptDestinationComponent setIndexElement(IntegerType value) { 
1192          this.index = value;
1193          return this;
1194        }
1195
1196        /**
1197         * @return Abstract name given to a destination server in this test script.  The name is provided as a number starting at 1.
1198         */
1199        public int getIndex() { 
1200          return this.index == null || this.index.isEmpty() ? 0 : this.index.getValue();
1201        }
1202
1203        /**
1204         * @param value Abstract name given to a destination server in this test script.  The name is provided as a number starting at 1.
1205         */
1206        public TestScriptDestinationComponent setIndex(int value) { 
1207            if (this.index == null)
1208              this.index = new IntegerType();
1209            this.index.setValue(value);
1210          return this;
1211        }
1212
1213        /**
1214         * @return {@link #profile} (The type of destination profile the test system supports.)
1215         */
1216        public Coding getProfile() { 
1217          if (this.profile == null)
1218            if (Configuration.errorOnAutoCreate())
1219              throw new Error("Attempt to auto-create TestScriptDestinationComponent.profile");
1220            else if (Configuration.doAutoCreate())
1221              this.profile = new Coding(); // cc
1222          return this.profile;
1223        }
1224
1225        public boolean hasProfile() { 
1226          return this.profile != null && !this.profile.isEmpty();
1227        }
1228
1229        /**
1230         * @param value {@link #profile} (The type of destination profile the test system supports.)
1231         */
1232        public TestScriptDestinationComponent setProfile(Coding value) { 
1233          this.profile = value;
1234          return this;
1235        }
1236
1237        /**
1238         * @return {@link #url} (The explicit url path of the destination server used in this test script.). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
1239         */
1240        public UrlType getUrlElement() { 
1241          if (this.url == null)
1242            if (Configuration.errorOnAutoCreate())
1243              throw new Error("Attempt to auto-create TestScriptDestinationComponent.url");
1244            else if (Configuration.doAutoCreate())
1245              this.url = new UrlType(); // bb
1246          return this.url;
1247        }
1248
1249        public boolean hasUrlElement() { 
1250          return this.url != null && !this.url.isEmpty();
1251        }
1252
1253        public boolean hasUrl() { 
1254          return this.url != null && !this.url.isEmpty();
1255        }
1256
1257        /**
1258         * @param value {@link #url} (The explicit url path of the destination server used in this test script.). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
1259         */
1260        public TestScriptDestinationComponent setUrlElement(UrlType value) { 
1261          this.url = value;
1262          return this;
1263        }
1264
1265        /**
1266         * @return The explicit url path of the destination server used in this test script.
1267         */
1268        public String getUrl() { 
1269          return this.url == null ? null : this.url.getValue();
1270        }
1271
1272        /**
1273         * @param value The explicit url path of the destination server used in this test script.
1274         */
1275        public TestScriptDestinationComponent setUrl(String value) { 
1276          if (Utilities.noString(value))
1277            this.url = null;
1278          else {
1279            if (this.url == null)
1280              this.url = new UrlType();
1281            this.url.setValue(value);
1282          }
1283          return this;
1284        }
1285
1286        protected void listChildren(List<Property> children) {
1287          super.listChildren(children);
1288          children.add(new Property("index", "integer", "Abstract name given to a destination server in this test script.  The name is provided as a number starting at 1.", 0, 1, index));
1289          children.add(new Property("profile", "Coding", "The type of destination profile the test system supports.", 0, 1, profile));
1290          children.add(new Property("url", "url", "The explicit url path of the destination server used in this test script.", 0, 1, url));
1291        }
1292
1293        @Override
1294        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1295          switch (_hash) {
1296          case 100346066: /*index*/  return new Property("index", "integer", "Abstract name given to a destination server in this test script.  The name is provided as a number starting at 1.", 0, 1, index);
1297          case -309425751: /*profile*/  return new Property("profile", "Coding", "The type of destination profile the test system supports.", 0, 1, profile);
1298          case 116079: /*url*/  return new Property("url", "url", "The explicit url path of the destination server used in this test script.", 0, 1, url);
1299          default: return super.getNamedProperty(_hash, _name, _checkValid);
1300          }
1301
1302        }
1303
1304      @Override
1305      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1306        switch (hash) {
1307        case 100346066: /*index*/ return this.index == null ? new Base[0] : new Base[] {this.index}; // IntegerType
1308        case -309425751: /*profile*/ return this.profile == null ? new Base[0] : new Base[] {this.profile}; // Coding
1309        case 116079: /*url*/ return this.url == null ? new Base[0] : new Base[] {this.url}; // UrlType
1310        default: return super.getProperty(hash, name, checkValid);
1311        }
1312
1313      }
1314
1315      @Override
1316      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1317        switch (hash) {
1318        case 100346066: // index
1319          this.index = TypeConvertor.castToInteger(value); // IntegerType
1320          return value;
1321        case -309425751: // profile
1322          this.profile = TypeConvertor.castToCoding(value); // Coding
1323          return value;
1324        case 116079: // url
1325          this.url = TypeConvertor.castToUrl(value); // UrlType
1326          return value;
1327        default: return super.setProperty(hash, name, value);
1328        }
1329
1330      }
1331
1332      @Override
1333      public Base setProperty(String name, Base value) throws FHIRException {
1334        if (name.equals("index")) {
1335          this.index = TypeConvertor.castToInteger(value); // IntegerType
1336        } else if (name.equals("profile")) {
1337          this.profile = TypeConvertor.castToCoding(value); // Coding
1338        } else if (name.equals("url")) {
1339          this.url = TypeConvertor.castToUrl(value); // UrlType
1340        } else
1341          return super.setProperty(name, value);
1342        return value;
1343      }
1344
1345      @Override
1346      public Base makeProperty(int hash, String name) throws FHIRException {
1347        switch (hash) {
1348        case 100346066:  return getIndexElement();
1349        case -309425751:  return getProfile();
1350        case 116079:  return getUrlElement();
1351        default: return super.makeProperty(hash, name);
1352        }
1353
1354      }
1355
1356      @Override
1357      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1358        switch (hash) {
1359        case 100346066: /*index*/ return new String[] {"integer"};
1360        case -309425751: /*profile*/ return new String[] {"Coding"};
1361        case 116079: /*url*/ return new String[] {"url"};
1362        default: return super.getTypesForProperty(hash, name);
1363        }
1364
1365      }
1366
1367      @Override
1368      public Base addChild(String name) throws FHIRException {
1369        if (name.equals("index")) {
1370          throw new FHIRException("Cannot call addChild on a primitive type TestScript.destination.index");
1371        }
1372        else if (name.equals("profile")) {
1373          this.profile = new Coding();
1374          return this.profile;
1375        }
1376        else if (name.equals("url")) {
1377          throw new FHIRException("Cannot call addChild on a primitive type TestScript.destination.url");
1378        }
1379        else
1380          return super.addChild(name);
1381      }
1382
1383      public TestScriptDestinationComponent copy() {
1384        TestScriptDestinationComponent dst = new TestScriptDestinationComponent();
1385        copyValues(dst);
1386        return dst;
1387      }
1388
1389      public void copyValues(TestScriptDestinationComponent dst) {
1390        super.copyValues(dst);
1391        dst.index = index == null ? null : index.copy();
1392        dst.profile = profile == null ? null : profile.copy();
1393        dst.url = url == null ? null : url.copy();
1394      }
1395
1396      @Override
1397      public boolean equalsDeep(Base other_) {
1398        if (!super.equalsDeep(other_))
1399          return false;
1400        if (!(other_ instanceof TestScriptDestinationComponent))
1401          return false;
1402        TestScriptDestinationComponent o = (TestScriptDestinationComponent) other_;
1403        return compareDeep(index, o.index, true) && compareDeep(profile, o.profile, true) && compareDeep(url, o.url, true)
1404          ;
1405      }
1406
1407      @Override
1408      public boolean equalsShallow(Base other_) {
1409        if (!super.equalsShallow(other_))
1410          return false;
1411        if (!(other_ instanceof TestScriptDestinationComponent))
1412          return false;
1413        TestScriptDestinationComponent o = (TestScriptDestinationComponent) other_;
1414        return compareValues(index, o.index, true) && compareValues(url, o.url, true);
1415      }
1416
1417      public boolean isEmpty() {
1418        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(index, profile, url);
1419      }
1420
1421  public String fhirType() {
1422    return "TestScript.destination";
1423
1424  }
1425
1426  }
1427
1428    @Block()
1429    public static class TestScriptMetadataComponent extends BackboneElement implements IBaseBackboneElement {
1430        /**
1431         * A link to the FHIR specification that this test is covering.
1432         */
1433        @Child(name = "link", type = {}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1434        @Description(shortDefinition="Links to the FHIR specification", formalDefinition="A link to the FHIR specification that this test is covering." )
1435        protected List<TestScriptMetadataLinkComponent> link;
1436
1437        /**
1438         * Capabilities that must exist and are assumed to function correctly on the FHIR server being tested.
1439         */
1440        @Child(name = "capability", type = {}, order=2, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1441        @Description(shortDefinition="Capabilities  that are assumed to function correctly on the FHIR server being tested", formalDefinition="Capabilities that must exist and are assumed to function correctly on the FHIR server being tested." )
1442        protected List<TestScriptMetadataCapabilityComponent> capability;
1443
1444        private static final long serialVersionUID = 745183328L;
1445
1446    /**
1447     * Constructor
1448     */
1449      public TestScriptMetadataComponent() {
1450        super();
1451      }
1452
1453    /**
1454     * Constructor
1455     */
1456      public TestScriptMetadataComponent(TestScriptMetadataCapabilityComponent capability) {
1457        super();
1458        this.addCapability(capability);
1459      }
1460
1461        /**
1462         * @return {@link #link} (A link to the FHIR specification that this test is covering.)
1463         */
1464        public List<TestScriptMetadataLinkComponent> getLink() { 
1465          if (this.link == null)
1466            this.link = new ArrayList<TestScriptMetadataLinkComponent>();
1467          return this.link;
1468        }
1469
1470        /**
1471         * @return Returns a reference to <code>this</code> for easy method chaining
1472         */
1473        public TestScriptMetadataComponent setLink(List<TestScriptMetadataLinkComponent> theLink) { 
1474          this.link = theLink;
1475          return this;
1476        }
1477
1478        public boolean hasLink() { 
1479          if (this.link == null)
1480            return false;
1481          for (TestScriptMetadataLinkComponent item : this.link)
1482            if (!item.isEmpty())
1483              return true;
1484          return false;
1485        }
1486
1487        public TestScriptMetadataLinkComponent addLink() { //3
1488          TestScriptMetadataLinkComponent t = new TestScriptMetadataLinkComponent();
1489          if (this.link == null)
1490            this.link = new ArrayList<TestScriptMetadataLinkComponent>();
1491          this.link.add(t);
1492          return t;
1493        }
1494
1495        public TestScriptMetadataComponent addLink(TestScriptMetadataLinkComponent t) { //3
1496          if (t == null)
1497            return this;
1498          if (this.link == null)
1499            this.link = new ArrayList<TestScriptMetadataLinkComponent>();
1500          this.link.add(t);
1501          return this;
1502        }
1503
1504        /**
1505         * @return The first repetition of repeating field {@link #link}, creating it if it does not already exist {3}
1506         */
1507        public TestScriptMetadataLinkComponent getLinkFirstRep() { 
1508          if (getLink().isEmpty()) {
1509            addLink();
1510          }
1511          return getLink().get(0);
1512        }
1513
1514        /**
1515         * @return {@link #capability} (Capabilities that must exist and are assumed to function correctly on the FHIR server being tested.)
1516         */
1517        public List<TestScriptMetadataCapabilityComponent> getCapability() { 
1518          if (this.capability == null)
1519            this.capability = new ArrayList<TestScriptMetadataCapabilityComponent>();
1520          return this.capability;
1521        }
1522
1523        /**
1524         * @return Returns a reference to <code>this</code> for easy method chaining
1525         */
1526        public TestScriptMetadataComponent setCapability(List<TestScriptMetadataCapabilityComponent> theCapability) { 
1527          this.capability = theCapability;
1528          return this;
1529        }
1530
1531        public boolean hasCapability() { 
1532          if (this.capability == null)
1533            return false;
1534          for (TestScriptMetadataCapabilityComponent item : this.capability)
1535            if (!item.isEmpty())
1536              return true;
1537          return false;
1538        }
1539
1540        public TestScriptMetadataCapabilityComponent addCapability() { //3
1541          TestScriptMetadataCapabilityComponent t = new TestScriptMetadataCapabilityComponent();
1542          if (this.capability == null)
1543            this.capability = new ArrayList<TestScriptMetadataCapabilityComponent>();
1544          this.capability.add(t);
1545          return t;
1546        }
1547
1548        public TestScriptMetadataComponent addCapability(TestScriptMetadataCapabilityComponent t) { //3
1549          if (t == null)
1550            return this;
1551          if (this.capability == null)
1552            this.capability = new ArrayList<TestScriptMetadataCapabilityComponent>();
1553          this.capability.add(t);
1554          return this;
1555        }
1556
1557        /**
1558         * @return The first repetition of repeating field {@link #capability}, creating it if it does not already exist {3}
1559         */
1560        public TestScriptMetadataCapabilityComponent getCapabilityFirstRep() { 
1561          if (getCapability().isEmpty()) {
1562            addCapability();
1563          }
1564          return getCapability().get(0);
1565        }
1566
1567        protected void listChildren(List<Property> children) {
1568          super.listChildren(children);
1569          children.add(new Property("link", "", "A link to the FHIR specification that this test is covering.", 0, java.lang.Integer.MAX_VALUE, link));
1570          children.add(new Property("capability", "", "Capabilities that must exist and are assumed to function correctly on the FHIR server being tested.", 0, java.lang.Integer.MAX_VALUE, capability));
1571        }
1572
1573        @Override
1574        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1575          switch (_hash) {
1576          case 3321850: /*link*/  return new Property("link", "", "A link to the FHIR specification that this test is covering.", 0, java.lang.Integer.MAX_VALUE, link);
1577          case -783669992: /*capability*/  return new Property("capability", "", "Capabilities that must exist and are assumed to function correctly on the FHIR server being tested.", 0, java.lang.Integer.MAX_VALUE, capability);
1578          default: return super.getNamedProperty(_hash, _name, _checkValid);
1579          }
1580
1581        }
1582
1583      @Override
1584      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1585        switch (hash) {
1586        case 3321850: /*link*/ return this.link == null ? new Base[0] : this.link.toArray(new Base[this.link.size()]); // TestScriptMetadataLinkComponent
1587        case -783669992: /*capability*/ return this.capability == null ? new Base[0] : this.capability.toArray(new Base[this.capability.size()]); // TestScriptMetadataCapabilityComponent
1588        default: return super.getProperty(hash, name, checkValid);
1589        }
1590
1591      }
1592
1593      @Override
1594      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1595        switch (hash) {
1596        case 3321850: // link
1597          this.getLink().add((TestScriptMetadataLinkComponent) value); // TestScriptMetadataLinkComponent
1598          return value;
1599        case -783669992: // capability
1600          this.getCapability().add((TestScriptMetadataCapabilityComponent) value); // TestScriptMetadataCapabilityComponent
1601          return value;
1602        default: return super.setProperty(hash, name, value);
1603        }
1604
1605      }
1606
1607      @Override
1608      public Base setProperty(String name, Base value) throws FHIRException {
1609        if (name.equals("link")) {
1610          this.getLink().add((TestScriptMetadataLinkComponent) value);
1611        } else if (name.equals("capability")) {
1612          this.getCapability().add((TestScriptMetadataCapabilityComponent) value);
1613        } else
1614          return super.setProperty(name, value);
1615        return value;
1616      }
1617
1618      @Override
1619      public Base makeProperty(int hash, String name) throws FHIRException {
1620        switch (hash) {
1621        case 3321850:  return addLink(); 
1622        case -783669992:  return addCapability(); 
1623        default: return super.makeProperty(hash, name);
1624        }
1625
1626      }
1627
1628      @Override
1629      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1630        switch (hash) {
1631        case 3321850: /*link*/ return new String[] {};
1632        case -783669992: /*capability*/ return new String[] {};
1633        default: return super.getTypesForProperty(hash, name);
1634        }
1635
1636      }
1637
1638      @Override
1639      public Base addChild(String name) throws FHIRException {
1640        if (name.equals("link")) {
1641          return addLink();
1642        }
1643        else if (name.equals("capability")) {
1644          return addCapability();
1645        }
1646        else
1647          return super.addChild(name);
1648      }
1649
1650      public TestScriptMetadataComponent copy() {
1651        TestScriptMetadataComponent dst = new TestScriptMetadataComponent();
1652        copyValues(dst);
1653        return dst;
1654      }
1655
1656      public void copyValues(TestScriptMetadataComponent dst) {
1657        super.copyValues(dst);
1658        if (link != null) {
1659          dst.link = new ArrayList<TestScriptMetadataLinkComponent>();
1660          for (TestScriptMetadataLinkComponent i : link)
1661            dst.link.add(i.copy());
1662        };
1663        if (capability != null) {
1664          dst.capability = new ArrayList<TestScriptMetadataCapabilityComponent>();
1665          for (TestScriptMetadataCapabilityComponent i : capability)
1666            dst.capability.add(i.copy());
1667        };
1668      }
1669
1670      @Override
1671      public boolean equalsDeep(Base other_) {
1672        if (!super.equalsDeep(other_))
1673          return false;
1674        if (!(other_ instanceof TestScriptMetadataComponent))
1675          return false;
1676        TestScriptMetadataComponent o = (TestScriptMetadataComponent) other_;
1677        return compareDeep(link, o.link, true) && compareDeep(capability, o.capability, true);
1678      }
1679
1680      @Override
1681      public boolean equalsShallow(Base other_) {
1682        if (!super.equalsShallow(other_))
1683          return false;
1684        if (!(other_ instanceof TestScriptMetadataComponent))
1685          return false;
1686        TestScriptMetadataComponent o = (TestScriptMetadataComponent) other_;
1687        return true;
1688      }
1689
1690      public boolean isEmpty() {
1691        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(link, capability);
1692      }
1693
1694  public String fhirType() {
1695    return "TestScript.metadata";
1696
1697  }
1698
1699  }
1700
1701    @Block()
1702    public static class TestScriptMetadataLinkComponent extends BackboneElement implements IBaseBackboneElement {
1703        /**
1704         * URL to a particular requirement or feature within the FHIR specification.
1705         */
1706        @Child(name = "url", type = {UriType.class}, order=1, min=1, max=1, modifier=false, summary=false)
1707        @Description(shortDefinition="URL to the specification", formalDefinition="URL to a particular requirement or feature within the FHIR specification." )
1708        protected UriType url;
1709
1710        /**
1711         * Short description of the link.
1712         */
1713        @Child(name = "description", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=false)
1714        @Description(shortDefinition="Short description", formalDefinition="Short description of the link." )
1715        protected StringType description;
1716
1717        private static final long serialVersionUID = 213372298L;
1718
1719    /**
1720     * Constructor
1721     */
1722      public TestScriptMetadataLinkComponent() {
1723        super();
1724      }
1725
1726    /**
1727     * Constructor
1728     */
1729      public TestScriptMetadataLinkComponent(String url) {
1730        super();
1731        this.setUrl(url);
1732      }
1733
1734        /**
1735         * @return {@link #url} (URL to a particular requirement or feature within the FHIR specification.). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
1736         */
1737        public UriType getUrlElement() { 
1738          if (this.url == null)
1739            if (Configuration.errorOnAutoCreate())
1740              throw new Error("Attempt to auto-create TestScriptMetadataLinkComponent.url");
1741            else if (Configuration.doAutoCreate())
1742              this.url = new UriType(); // bb
1743          return this.url;
1744        }
1745
1746        public boolean hasUrlElement() { 
1747          return this.url != null && !this.url.isEmpty();
1748        }
1749
1750        public boolean hasUrl() { 
1751          return this.url != null && !this.url.isEmpty();
1752        }
1753
1754        /**
1755         * @param value {@link #url} (URL to a particular requirement or feature within the FHIR specification.). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
1756         */
1757        public TestScriptMetadataLinkComponent setUrlElement(UriType value) { 
1758          this.url = value;
1759          return this;
1760        }
1761
1762        /**
1763         * @return URL to a particular requirement or feature within the FHIR specification.
1764         */
1765        public String getUrl() { 
1766          return this.url == null ? null : this.url.getValue();
1767        }
1768
1769        /**
1770         * @param value URL to a particular requirement or feature within the FHIR specification.
1771         */
1772        public TestScriptMetadataLinkComponent setUrl(String value) { 
1773            if (this.url == null)
1774              this.url = new UriType();
1775            this.url.setValue(value);
1776          return this;
1777        }
1778
1779        /**
1780         * @return {@link #description} (Short description of the link.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
1781         */
1782        public StringType getDescriptionElement() { 
1783          if (this.description == null)
1784            if (Configuration.errorOnAutoCreate())
1785              throw new Error("Attempt to auto-create TestScriptMetadataLinkComponent.description");
1786            else if (Configuration.doAutoCreate())
1787              this.description = new StringType(); // bb
1788          return this.description;
1789        }
1790
1791        public boolean hasDescriptionElement() { 
1792          return this.description != null && !this.description.isEmpty();
1793        }
1794
1795        public boolean hasDescription() { 
1796          return this.description != null && !this.description.isEmpty();
1797        }
1798
1799        /**
1800         * @param value {@link #description} (Short description of the link.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
1801         */
1802        public TestScriptMetadataLinkComponent setDescriptionElement(StringType value) { 
1803          this.description = value;
1804          return this;
1805        }
1806
1807        /**
1808         * @return Short description of the link.
1809         */
1810        public String getDescription() { 
1811          return this.description == null ? null : this.description.getValue();
1812        }
1813
1814        /**
1815         * @param value Short description of the link.
1816         */
1817        public TestScriptMetadataLinkComponent setDescription(String value) { 
1818          if (Utilities.noString(value))
1819            this.description = null;
1820          else {
1821            if (this.description == null)
1822              this.description = new StringType();
1823            this.description.setValue(value);
1824          }
1825          return this;
1826        }
1827
1828        protected void listChildren(List<Property> children) {
1829          super.listChildren(children);
1830          children.add(new Property("url", "uri", "URL to a particular requirement or feature within the FHIR specification.", 0, 1, url));
1831          children.add(new Property("description", "string", "Short description of the link.", 0, 1, description));
1832        }
1833
1834        @Override
1835        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1836          switch (_hash) {
1837          case 116079: /*url*/  return new Property("url", "uri", "URL to a particular requirement or feature within the FHIR specification.", 0, 1, url);
1838          case -1724546052: /*description*/  return new Property("description", "string", "Short description of the link.", 0, 1, description);
1839          default: return super.getNamedProperty(_hash, _name, _checkValid);
1840          }
1841
1842        }
1843
1844      @Override
1845      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1846        switch (hash) {
1847        case 116079: /*url*/ return this.url == null ? new Base[0] : new Base[] {this.url}; // UriType
1848        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // StringType
1849        default: return super.getProperty(hash, name, checkValid);
1850        }
1851
1852      }
1853
1854      @Override
1855      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1856        switch (hash) {
1857        case 116079: // url
1858          this.url = TypeConvertor.castToUri(value); // UriType
1859          return value;
1860        case -1724546052: // description
1861          this.description = TypeConvertor.castToString(value); // StringType
1862          return value;
1863        default: return super.setProperty(hash, name, value);
1864        }
1865
1866      }
1867
1868      @Override
1869      public Base setProperty(String name, Base value) throws FHIRException {
1870        if (name.equals("url")) {
1871          this.url = TypeConvertor.castToUri(value); // UriType
1872        } else if (name.equals("description")) {
1873          this.description = TypeConvertor.castToString(value); // StringType
1874        } else
1875          return super.setProperty(name, value);
1876        return value;
1877      }
1878
1879      @Override
1880      public Base makeProperty(int hash, String name) throws FHIRException {
1881        switch (hash) {
1882        case 116079:  return getUrlElement();
1883        case -1724546052:  return getDescriptionElement();
1884        default: return super.makeProperty(hash, name);
1885        }
1886
1887      }
1888
1889      @Override
1890      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1891        switch (hash) {
1892        case 116079: /*url*/ return new String[] {"uri"};
1893        case -1724546052: /*description*/ return new String[] {"string"};
1894        default: return super.getTypesForProperty(hash, name);
1895        }
1896
1897      }
1898
1899      @Override
1900      public Base addChild(String name) throws FHIRException {
1901        if (name.equals("url")) {
1902          throw new FHIRException("Cannot call addChild on a primitive type TestScript.metadata.link.url");
1903        }
1904        else if (name.equals("description")) {
1905          throw new FHIRException("Cannot call addChild on a primitive type TestScript.metadata.link.description");
1906        }
1907        else
1908          return super.addChild(name);
1909      }
1910
1911      public TestScriptMetadataLinkComponent copy() {
1912        TestScriptMetadataLinkComponent dst = new TestScriptMetadataLinkComponent();
1913        copyValues(dst);
1914        return dst;
1915      }
1916
1917      public void copyValues(TestScriptMetadataLinkComponent dst) {
1918        super.copyValues(dst);
1919        dst.url = url == null ? null : url.copy();
1920        dst.description = description == null ? null : description.copy();
1921      }
1922
1923      @Override
1924      public boolean equalsDeep(Base other_) {
1925        if (!super.equalsDeep(other_))
1926          return false;
1927        if (!(other_ instanceof TestScriptMetadataLinkComponent))
1928          return false;
1929        TestScriptMetadataLinkComponent o = (TestScriptMetadataLinkComponent) other_;
1930        return compareDeep(url, o.url, true) && compareDeep(description, o.description, true);
1931      }
1932
1933      @Override
1934      public boolean equalsShallow(Base other_) {
1935        if (!super.equalsShallow(other_))
1936          return false;
1937        if (!(other_ instanceof TestScriptMetadataLinkComponent))
1938          return false;
1939        TestScriptMetadataLinkComponent o = (TestScriptMetadataLinkComponent) other_;
1940        return compareValues(url, o.url, true) && compareValues(description, o.description, true);
1941      }
1942
1943      public boolean isEmpty() {
1944        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(url, description);
1945      }
1946
1947  public String fhirType() {
1948    return "TestScript.metadata.link";
1949
1950  }
1951
1952  }
1953
1954    @Block()
1955    public static class TestScriptMetadataCapabilityComponent extends BackboneElement implements IBaseBackboneElement {
1956        /**
1957         * Whether or not the test execution will require the given capabilities of the server in order for this test script to execute.
1958         */
1959        @Child(name = "required", type = {BooleanType.class}, order=1, min=1, max=1, modifier=false, summary=false)
1960        @Description(shortDefinition="Are the capabilities required?", formalDefinition="Whether or not the test execution will require the given capabilities of the server in order for this test script to execute." )
1961        protected BooleanType required;
1962
1963        /**
1964         * Whether or not the test execution will validate the given capabilities of the server in order for this test script to execute.
1965         */
1966        @Child(name = "validated", type = {BooleanType.class}, order=2, min=1, max=1, modifier=false, summary=false)
1967        @Description(shortDefinition="Are the capabilities validated?", formalDefinition="Whether or not the test execution will validate the given capabilities of the server in order for this test script to execute." )
1968        protected BooleanType validated;
1969
1970        /**
1971         * Description of the capabilities that this test script is requiring the server to support.
1972         */
1973        @Child(name = "description", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=false)
1974        @Description(shortDefinition="The expected capabilities of the server", formalDefinition="Description of the capabilities that this test script is requiring the server to support." )
1975        protected StringType description;
1976
1977        /**
1978         * Which origin server these requirements apply to.
1979         */
1980        @Child(name = "origin", type = {IntegerType.class}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1981        @Description(shortDefinition="Which origin server these requirements apply to", formalDefinition="Which origin server these requirements apply to." )
1982        protected List<IntegerType> origin;
1983
1984        /**
1985         * Which server these requirements apply to.
1986         */
1987        @Child(name = "destination", type = {IntegerType.class}, order=5, min=0, max=1, modifier=false, summary=false)
1988        @Description(shortDefinition="Which server these requirements apply to", formalDefinition="Which server these requirements apply to." )
1989        protected IntegerType destination;
1990
1991        /**
1992         * Links to the FHIR specification that describes this interaction and the resources involved in more detail.
1993         */
1994        @Child(name = "link", type = {UriType.class}, order=6, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1995        @Description(shortDefinition="Links to the FHIR specification", formalDefinition="Links to the FHIR specification that describes this interaction and the resources involved in more detail." )
1996        protected List<UriType> link;
1997
1998        /**
1999         * 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.
2000         */
2001        @Child(name = "capabilities", type = {CanonicalType.class}, order=7, min=1, max=1, modifier=false, summary=false)
2002        @Description(shortDefinition="Required Capability Statement", formalDefinition="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." )
2003        protected CanonicalType capabilities;
2004
2005        private static final long serialVersionUID = -1368199288L;
2006
2007    /**
2008     * Constructor
2009     */
2010      public TestScriptMetadataCapabilityComponent() {
2011        super();
2012      }
2013
2014    /**
2015     * Constructor
2016     */
2017      public TestScriptMetadataCapabilityComponent(boolean required, boolean validated, String capabilities) {
2018        super();
2019        this.setRequired(required);
2020        this.setValidated(validated);
2021        this.setCapabilities(capabilities);
2022      }
2023
2024        /**
2025         * @return {@link #required} (Whether or not the test execution will require the given capabilities of the server in order for this test script to execute.). This is the underlying object with id, value and extensions. The accessor "getRequired" gives direct access to the value
2026         */
2027        public BooleanType getRequiredElement() { 
2028          if (this.required == null)
2029            if (Configuration.errorOnAutoCreate())
2030              throw new Error("Attempt to auto-create TestScriptMetadataCapabilityComponent.required");
2031            else if (Configuration.doAutoCreate())
2032              this.required = new BooleanType(); // bb
2033          return this.required;
2034        }
2035
2036        public boolean hasRequiredElement() { 
2037          return this.required != null && !this.required.isEmpty();
2038        }
2039
2040        public boolean hasRequired() { 
2041          return this.required != null && !this.required.isEmpty();
2042        }
2043
2044        /**
2045         * @param value {@link #required} (Whether or not the test execution will require the given capabilities of the server in order for this test script to execute.). This is the underlying object with id, value and extensions. The accessor "getRequired" gives direct access to the value
2046         */
2047        public TestScriptMetadataCapabilityComponent setRequiredElement(BooleanType value) { 
2048          this.required = value;
2049          return this;
2050        }
2051
2052        /**
2053         * @return Whether or not the test execution will require the given capabilities of the server in order for this test script to execute.
2054         */
2055        public boolean getRequired() { 
2056          return this.required == null || this.required.isEmpty() ? false : this.required.getValue();
2057        }
2058
2059        /**
2060         * @param value Whether or not the test execution will require the given capabilities of the server in order for this test script to execute.
2061         */
2062        public TestScriptMetadataCapabilityComponent setRequired(boolean value) { 
2063            if (this.required == null)
2064              this.required = new BooleanType();
2065            this.required.setValue(value);
2066          return this;
2067        }
2068
2069        /**
2070         * @return {@link #validated} (Whether or not the test execution will validate the given capabilities of the server in order for this test script to execute.). This is the underlying object with id, value and extensions. The accessor "getValidated" gives direct access to the value
2071         */
2072        public BooleanType getValidatedElement() { 
2073          if (this.validated == null)
2074            if (Configuration.errorOnAutoCreate())
2075              throw new Error("Attempt to auto-create TestScriptMetadataCapabilityComponent.validated");
2076            else if (Configuration.doAutoCreate())
2077              this.validated = new BooleanType(); // bb
2078          return this.validated;
2079        }
2080
2081        public boolean hasValidatedElement() { 
2082          return this.validated != null && !this.validated.isEmpty();
2083        }
2084
2085        public boolean hasValidated() { 
2086          return this.validated != null && !this.validated.isEmpty();
2087        }
2088
2089        /**
2090         * @param value {@link #validated} (Whether or not the test execution will validate the given capabilities of the server in order for this test script to execute.). This is the underlying object with id, value and extensions. The accessor "getValidated" gives direct access to the value
2091         */
2092        public TestScriptMetadataCapabilityComponent setValidatedElement(BooleanType value) { 
2093          this.validated = value;
2094          return this;
2095        }
2096
2097        /**
2098         * @return Whether or not the test execution will validate the given capabilities of the server in order for this test script to execute.
2099         */
2100        public boolean getValidated() { 
2101          return this.validated == null || this.validated.isEmpty() ? false : this.validated.getValue();
2102        }
2103
2104        /**
2105         * @param value Whether or not the test execution will validate the given capabilities of the server in order for this test script to execute.
2106         */
2107        public TestScriptMetadataCapabilityComponent setValidated(boolean value) { 
2108            if (this.validated == null)
2109              this.validated = new BooleanType();
2110            this.validated.setValue(value);
2111          return this;
2112        }
2113
2114        /**
2115         * @return {@link #description} (Description of the capabilities that this test script is requiring the server to support.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
2116         */
2117        public StringType getDescriptionElement() { 
2118          if (this.description == null)
2119            if (Configuration.errorOnAutoCreate())
2120              throw new Error("Attempt to auto-create TestScriptMetadataCapabilityComponent.description");
2121            else if (Configuration.doAutoCreate())
2122              this.description = new StringType(); // bb
2123          return this.description;
2124        }
2125
2126        public boolean hasDescriptionElement() { 
2127          return this.description != null && !this.description.isEmpty();
2128        }
2129
2130        public boolean hasDescription() { 
2131          return this.description != null && !this.description.isEmpty();
2132        }
2133
2134        /**
2135         * @param value {@link #description} (Description of the capabilities that this test script is requiring the server to support.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
2136         */
2137        public TestScriptMetadataCapabilityComponent setDescriptionElement(StringType value) { 
2138          this.description = value;
2139          return this;
2140        }
2141
2142        /**
2143         * @return Description of the capabilities that this test script is requiring the server to support.
2144         */
2145        public String getDescription() { 
2146          return this.description == null ? null : this.description.getValue();
2147        }
2148
2149        /**
2150         * @param value Description of the capabilities that this test script is requiring the server to support.
2151         */
2152        public TestScriptMetadataCapabilityComponent setDescription(String value) { 
2153          if (Utilities.noString(value))
2154            this.description = null;
2155          else {
2156            if (this.description == null)
2157              this.description = new StringType();
2158            this.description.setValue(value);
2159          }
2160          return this;
2161        }
2162
2163        /**
2164         * @return {@link #origin} (Which origin server these requirements apply to.)
2165         */
2166        public List<IntegerType> getOrigin() { 
2167          if (this.origin == null)
2168            this.origin = new ArrayList<IntegerType>();
2169          return this.origin;
2170        }
2171
2172        /**
2173         * @return Returns a reference to <code>this</code> for easy method chaining
2174         */
2175        public TestScriptMetadataCapabilityComponent setOrigin(List<IntegerType> theOrigin) { 
2176          this.origin = theOrigin;
2177          return this;
2178        }
2179
2180        public boolean hasOrigin() { 
2181          if (this.origin == null)
2182            return false;
2183          for (IntegerType item : this.origin)
2184            if (!item.isEmpty())
2185              return true;
2186          return false;
2187        }
2188
2189        /**
2190         * @return {@link #origin} (Which origin server these requirements apply to.)
2191         */
2192        public IntegerType addOriginElement() {//2 
2193          IntegerType t = new IntegerType();
2194          if (this.origin == null)
2195            this.origin = new ArrayList<IntegerType>();
2196          this.origin.add(t);
2197          return t;
2198        }
2199
2200        /**
2201         * @param value {@link #origin} (Which origin server these requirements apply to.)
2202         */
2203        public TestScriptMetadataCapabilityComponent addOrigin(int value) { //1
2204          IntegerType t = new IntegerType();
2205          t.setValue(value);
2206          if (this.origin == null)
2207            this.origin = new ArrayList<IntegerType>();
2208          this.origin.add(t);
2209          return this;
2210        }
2211
2212        /**
2213         * @param value {@link #origin} (Which origin server these requirements apply to.)
2214         */
2215        public boolean hasOrigin(int value) { 
2216          if (this.origin == null)
2217            return false;
2218          for (IntegerType v : this.origin)
2219            if (v.getValue().equals(value)) // integer
2220              return true;
2221          return false;
2222        }
2223
2224        /**
2225         * @return {@link #destination} (Which server these requirements apply to.). This is the underlying object with id, value and extensions. The accessor "getDestination" gives direct access to the value
2226         */
2227        public IntegerType getDestinationElement() { 
2228          if (this.destination == null)
2229            if (Configuration.errorOnAutoCreate())
2230              throw new Error("Attempt to auto-create TestScriptMetadataCapabilityComponent.destination");
2231            else if (Configuration.doAutoCreate())
2232              this.destination = new IntegerType(); // bb
2233          return this.destination;
2234        }
2235
2236        public boolean hasDestinationElement() { 
2237          return this.destination != null && !this.destination.isEmpty();
2238        }
2239
2240        public boolean hasDestination() { 
2241          return this.destination != null && !this.destination.isEmpty();
2242        }
2243
2244        /**
2245         * @param value {@link #destination} (Which server these requirements apply to.). This is the underlying object with id, value and extensions. The accessor "getDestination" gives direct access to the value
2246         */
2247        public TestScriptMetadataCapabilityComponent setDestinationElement(IntegerType value) { 
2248          this.destination = value;
2249          return this;
2250        }
2251
2252        /**
2253         * @return Which server these requirements apply to.
2254         */
2255        public int getDestination() { 
2256          return this.destination == null || this.destination.isEmpty() ? 0 : this.destination.getValue();
2257        }
2258
2259        /**
2260         * @param value Which server these requirements apply to.
2261         */
2262        public TestScriptMetadataCapabilityComponent setDestination(int value) { 
2263            if (this.destination == null)
2264              this.destination = new IntegerType();
2265            this.destination.setValue(value);
2266          return this;
2267        }
2268
2269        /**
2270         * @return {@link #link} (Links to the FHIR specification that describes this interaction and the resources involved in more detail.)
2271         */
2272        public List<UriType> getLink() { 
2273          if (this.link == null)
2274            this.link = new ArrayList<UriType>();
2275          return this.link;
2276        }
2277
2278        /**
2279         * @return Returns a reference to <code>this</code> for easy method chaining
2280         */
2281        public TestScriptMetadataCapabilityComponent setLink(List<UriType> theLink) { 
2282          this.link = theLink;
2283          return this;
2284        }
2285
2286        public boolean hasLink() { 
2287          if (this.link == null)
2288            return false;
2289          for (UriType item : this.link)
2290            if (!item.isEmpty())
2291              return true;
2292          return false;
2293        }
2294
2295        /**
2296         * @return {@link #link} (Links to the FHIR specification that describes this interaction and the resources involved in more detail.)
2297         */
2298        public UriType addLinkElement() {//2 
2299          UriType t = new UriType();
2300          if (this.link == null)
2301            this.link = new ArrayList<UriType>();
2302          this.link.add(t);
2303          return t;
2304        }
2305
2306        /**
2307         * @param value {@link #link} (Links to the FHIR specification that describes this interaction and the resources involved in more detail.)
2308         */
2309        public TestScriptMetadataCapabilityComponent addLink(String value) { //1
2310          UriType t = new UriType();
2311          t.setValue(value);
2312          if (this.link == null)
2313            this.link = new ArrayList<UriType>();
2314          this.link.add(t);
2315          return this;
2316        }
2317
2318        /**
2319         * @param value {@link #link} (Links to the FHIR specification that describes this interaction and the resources involved in more detail.)
2320         */
2321        public boolean hasLink(String value) { 
2322          if (this.link == null)
2323            return false;
2324          for (UriType v : this.link)
2325            if (v.getValue().equals(value)) // uri
2326              return true;
2327          return false;
2328        }
2329
2330        /**
2331         * @return {@link #capabilities} (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.). This is the underlying object with id, value and extensions. The accessor "getCapabilities" gives direct access to the value
2332         */
2333        public CanonicalType getCapabilitiesElement() { 
2334          if (this.capabilities == null)
2335            if (Configuration.errorOnAutoCreate())
2336              throw new Error("Attempt to auto-create TestScriptMetadataCapabilityComponent.capabilities");
2337            else if (Configuration.doAutoCreate())
2338              this.capabilities = new CanonicalType(); // bb
2339          return this.capabilities;
2340        }
2341
2342        public boolean hasCapabilitiesElement() { 
2343          return this.capabilities != null && !this.capabilities.isEmpty();
2344        }
2345
2346        public boolean hasCapabilities() { 
2347          return this.capabilities != null && !this.capabilities.isEmpty();
2348        }
2349
2350        /**
2351         * @param value {@link #capabilities} (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.). This is the underlying object with id, value and extensions. The accessor "getCapabilities" gives direct access to the value
2352         */
2353        public TestScriptMetadataCapabilityComponent setCapabilitiesElement(CanonicalType value) { 
2354          this.capabilities = value;
2355          return this;
2356        }
2357
2358        /**
2359         * @return 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.
2360         */
2361        public String getCapabilities() { 
2362          return this.capabilities == null ? null : this.capabilities.getValue();
2363        }
2364
2365        /**
2366         * @param value 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.
2367         */
2368        public TestScriptMetadataCapabilityComponent setCapabilities(String value) { 
2369            if (this.capabilities == null)
2370              this.capabilities = new CanonicalType();
2371            this.capabilities.setValue(value);
2372          return this;
2373        }
2374
2375        protected void listChildren(List<Property> children) {
2376          super.listChildren(children);
2377          children.add(new Property("required", "boolean", "Whether or not the test execution will require the given capabilities of the server in order for this test script to execute.", 0, 1, required));
2378          children.add(new Property("validated", "boolean", "Whether or not the test execution will validate the given capabilities of the server in order for this test script to execute.", 0, 1, validated));
2379          children.add(new Property("description", "string", "Description of the capabilities that this test script is requiring the server to support.", 0, 1, description));
2380          children.add(new Property("origin", "integer", "Which origin server these requirements apply to.", 0, java.lang.Integer.MAX_VALUE, origin));
2381          children.add(new Property("destination", "integer", "Which server these requirements apply to.", 0, 1, destination));
2382          children.add(new Property("link", "uri", "Links to the FHIR specification that describes this interaction and the resources involved in more detail.", 0, java.lang.Integer.MAX_VALUE, link));
2383          children.add(new Property("capabilities", "canonical(CapabilityStatement)", "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.", 0, 1, capabilities));
2384        }
2385
2386        @Override
2387        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
2388          switch (_hash) {
2389          case -393139297: /*required*/  return new Property("required", "boolean", "Whether or not the test execution will require the given capabilities of the server in order for this test script to execute.", 0, 1, required);
2390          case -1109784050: /*validated*/  return new Property("validated", "boolean", "Whether or not the test execution will validate the given capabilities of the server in order for this test script to execute.", 0, 1, validated);
2391          case -1724546052: /*description*/  return new Property("description", "string", "Description of the capabilities that this test script is requiring the server to support.", 0, 1, description);
2392          case -1008619738: /*origin*/  return new Property("origin", "integer", "Which origin server these requirements apply to.", 0, java.lang.Integer.MAX_VALUE, origin);
2393          case -1429847026: /*destination*/  return new Property("destination", "integer", "Which server these requirements apply to.", 0, 1, destination);
2394          case 3321850: /*link*/  return new Property("link", "uri", "Links to the FHIR specification that describes this interaction and the resources involved in more detail.", 0, java.lang.Integer.MAX_VALUE, link);
2395          case -1487597642: /*capabilities*/  return new Property("capabilities", "canonical(CapabilityStatement)", "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.", 0, 1, capabilities);
2396          default: return super.getNamedProperty(_hash, _name, _checkValid);
2397          }
2398
2399        }
2400
2401      @Override
2402      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
2403        switch (hash) {
2404        case -393139297: /*required*/ return this.required == null ? new Base[0] : new Base[] {this.required}; // BooleanType
2405        case -1109784050: /*validated*/ return this.validated == null ? new Base[0] : new Base[] {this.validated}; // BooleanType
2406        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // StringType
2407        case -1008619738: /*origin*/ return this.origin == null ? new Base[0] : this.origin.toArray(new Base[this.origin.size()]); // IntegerType
2408        case -1429847026: /*destination*/ return this.destination == null ? new Base[0] : new Base[] {this.destination}; // IntegerType
2409        case 3321850: /*link*/ return this.link == null ? new Base[0] : this.link.toArray(new Base[this.link.size()]); // UriType
2410        case -1487597642: /*capabilities*/ return this.capabilities == null ? new Base[0] : new Base[] {this.capabilities}; // CanonicalType
2411        default: return super.getProperty(hash, name, checkValid);
2412        }
2413
2414      }
2415
2416      @Override
2417      public Base setProperty(int hash, String name, Base value) throws FHIRException {
2418        switch (hash) {
2419        case -393139297: // required
2420          this.required = TypeConvertor.castToBoolean(value); // BooleanType
2421          return value;
2422        case -1109784050: // validated
2423          this.validated = TypeConvertor.castToBoolean(value); // BooleanType
2424          return value;
2425        case -1724546052: // description
2426          this.description = TypeConvertor.castToString(value); // StringType
2427          return value;
2428        case -1008619738: // origin
2429          this.getOrigin().add(TypeConvertor.castToInteger(value)); // IntegerType
2430          return value;
2431        case -1429847026: // destination
2432          this.destination = TypeConvertor.castToInteger(value); // IntegerType
2433          return value;
2434        case 3321850: // link
2435          this.getLink().add(TypeConvertor.castToUri(value)); // UriType
2436          return value;
2437        case -1487597642: // capabilities
2438          this.capabilities = TypeConvertor.castToCanonical(value); // CanonicalType
2439          return value;
2440        default: return super.setProperty(hash, name, value);
2441        }
2442
2443      }
2444
2445      @Override
2446      public Base setProperty(String name, Base value) throws FHIRException {
2447        if (name.equals("required")) {
2448          this.required = TypeConvertor.castToBoolean(value); // BooleanType
2449        } else if (name.equals("validated")) {
2450          this.validated = TypeConvertor.castToBoolean(value); // BooleanType
2451        } else if (name.equals("description")) {
2452          this.description = TypeConvertor.castToString(value); // StringType
2453        } else if (name.equals("origin")) {
2454          this.getOrigin().add(TypeConvertor.castToInteger(value));
2455        } else if (name.equals("destination")) {
2456          this.destination = TypeConvertor.castToInteger(value); // IntegerType
2457        } else if (name.equals("link")) {
2458          this.getLink().add(TypeConvertor.castToUri(value));
2459        } else if (name.equals("capabilities")) {
2460          this.capabilities = TypeConvertor.castToCanonical(value); // CanonicalType
2461        } else
2462          return super.setProperty(name, value);
2463        return value;
2464      }
2465
2466      @Override
2467      public Base makeProperty(int hash, String name) throws FHIRException {
2468        switch (hash) {
2469        case -393139297:  return getRequiredElement();
2470        case -1109784050:  return getValidatedElement();
2471        case -1724546052:  return getDescriptionElement();
2472        case -1008619738:  return addOriginElement();
2473        case -1429847026:  return getDestinationElement();
2474        case 3321850:  return addLinkElement();
2475        case -1487597642:  return getCapabilitiesElement();
2476        default: return super.makeProperty(hash, name);
2477        }
2478
2479      }
2480
2481      @Override
2482      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
2483        switch (hash) {
2484        case -393139297: /*required*/ return new String[] {"boolean"};
2485        case -1109784050: /*validated*/ return new String[] {"boolean"};
2486        case -1724546052: /*description*/ return new String[] {"string"};
2487        case -1008619738: /*origin*/ return new String[] {"integer"};
2488        case -1429847026: /*destination*/ return new String[] {"integer"};
2489        case 3321850: /*link*/ return new String[] {"uri"};
2490        case -1487597642: /*capabilities*/ return new String[] {"canonical"};
2491        default: return super.getTypesForProperty(hash, name);
2492        }
2493
2494      }
2495
2496      @Override
2497      public Base addChild(String name) throws FHIRException {
2498        if (name.equals("required")) {
2499          throw new FHIRException("Cannot call addChild on a primitive type TestScript.metadata.capability.required");
2500        }
2501        else if (name.equals("validated")) {
2502          throw new FHIRException("Cannot call addChild on a primitive type TestScript.metadata.capability.validated");
2503        }
2504        else if (name.equals("description")) {
2505          throw new FHIRException("Cannot call addChild on a primitive type TestScript.metadata.capability.description");
2506        }
2507        else if (name.equals("origin")) {
2508          throw new FHIRException("Cannot call addChild on a primitive type TestScript.metadata.capability.origin");
2509        }
2510        else if (name.equals("destination")) {
2511          throw new FHIRException("Cannot call addChild on a primitive type TestScript.metadata.capability.destination");
2512        }
2513        else if (name.equals("link")) {
2514          throw new FHIRException("Cannot call addChild on a primitive type TestScript.metadata.capability.link");
2515        }
2516        else if (name.equals("capabilities")) {
2517          throw new FHIRException("Cannot call addChild on a primitive type TestScript.metadata.capability.capabilities");
2518        }
2519        else
2520          return super.addChild(name);
2521      }
2522
2523      public TestScriptMetadataCapabilityComponent copy() {
2524        TestScriptMetadataCapabilityComponent dst = new TestScriptMetadataCapabilityComponent();
2525        copyValues(dst);
2526        return dst;
2527      }
2528
2529      public void copyValues(TestScriptMetadataCapabilityComponent dst) {
2530        super.copyValues(dst);
2531        dst.required = required == null ? null : required.copy();
2532        dst.validated = validated == null ? null : validated.copy();
2533        dst.description = description == null ? null : description.copy();
2534        if (origin != null) {
2535          dst.origin = new ArrayList<IntegerType>();
2536          for (IntegerType i : origin)
2537            dst.origin.add(i.copy());
2538        };
2539        dst.destination = destination == null ? null : destination.copy();
2540        if (link != null) {
2541          dst.link = new ArrayList<UriType>();
2542          for (UriType i : link)
2543            dst.link.add(i.copy());
2544        };
2545        dst.capabilities = capabilities == null ? null : capabilities.copy();
2546      }
2547
2548      @Override
2549      public boolean equalsDeep(Base other_) {
2550        if (!super.equalsDeep(other_))
2551          return false;
2552        if (!(other_ instanceof TestScriptMetadataCapabilityComponent))
2553          return false;
2554        TestScriptMetadataCapabilityComponent o = (TestScriptMetadataCapabilityComponent) other_;
2555        return compareDeep(required, o.required, true) && compareDeep(validated, o.validated, true) && compareDeep(description, o.description, true)
2556           && compareDeep(origin, o.origin, true) && compareDeep(destination, o.destination, true) && compareDeep(link, o.link, true)
2557           && compareDeep(capabilities, o.capabilities, true);
2558      }
2559
2560      @Override
2561      public boolean equalsShallow(Base other_) {
2562        if (!super.equalsShallow(other_))
2563          return false;
2564        if (!(other_ instanceof TestScriptMetadataCapabilityComponent))
2565          return false;
2566        TestScriptMetadataCapabilityComponent o = (TestScriptMetadataCapabilityComponent) other_;
2567        return compareValues(required, o.required, true) && compareValues(validated, o.validated, true) && compareValues(description, o.description, true)
2568           && compareValues(origin, o.origin, true) && compareValues(destination, o.destination, true) && compareValues(link, o.link, true)
2569           && compareValues(capabilities, o.capabilities, true);
2570      }
2571
2572      public boolean isEmpty() {
2573        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(required, validated, description
2574          , origin, destination, link, capabilities);
2575      }
2576
2577  public String fhirType() {
2578    return "TestScript.metadata.capability";
2579
2580  }
2581
2582  }
2583
2584    @Block()
2585    public static class TestScriptScopeComponent extends BackboneElement implements IBaseBackboneElement {
2586        /**
2587         * The specific conformance artifact being tested. The canonical reference can be version-specific.
2588         */
2589        @Child(name = "artifact", type = {CanonicalType.class}, order=1, min=1, max=1, modifier=false, summary=false)
2590        @Description(shortDefinition="The specific conformance artifact being tested", formalDefinition="The specific conformance artifact being tested. The canonical reference can be version-specific." )
2591        protected CanonicalType artifact;
2592
2593        /**
2594         * 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.
2595         */
2596        @Child(name = "conformance", type = {CodeableConcept.class}, order=2, min=0, max=1, modifier=false, summary=false)
2597        @Description(shortDefinition="required | optional | strict", formalDefinition="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." )
2598        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/testscript-scope-conformance-codes")
2599        protected CodeableConcept conformance;
2600
2601        /**
2602         * 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).
2603         */
2604        @Child(name = "phase", type = {CodeableConcept.class}, order=3, min=0, max=1, modifier=false, summary=false)
2605        @Description(shortDefinition="unit | integration | production", formalDefinition="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)." )
2606        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/testscript-scope-phase-codes")
2607        protected CodeableConcept phase;
2608
2609        private static final long serialVersionUID = 1236847076L;
2610
2611    /**
2612     * Constructor
2613     */
2614      public TestScriptScopeComponent() {
2615        super();
2616      }
2617
2618    /**
2619     * Constructor
2620     */
2621      public TestScriptScopeComponent(String artifact) {
2622        super();
2623        this.setArtifact(artifact);
2624      }
2625
2626        /**
2627         * @return {@link #artifact} (The specific conformance artifact being tested. The canonical reference can be version-specific.). This is the underlying object with id, value and extensions. The accessor "getArtifact" gives direct access to the value
2628         */
2629        public CanonicalType getArtifactElement() { 
2630          if (this.artifact == null)
2631            if (Configuration.errorOnAutoCreate())
2632              throw new Error("Attempt to auto-create TestScriptScopeComponent.artifact");
2633            else if (Configuration.doAutoCreate())
2634              this.artifact = new CanonicalType(); // bb
2635          return this.artifact;
2636        }
2637
2638        public boolean hasArtifactElement() { 
2639          return this.artifact != null && !this.artifact.isEmpty();
2640        }
2641
2642        public boolean hasArtifact() { 
2643          return this.artifact != null && !this.artifact.isEmpty();
2644        }
2645
2646        /**
2647         * @param value {@link #artifact} (The specific conformance artifact being tested. The canonical reference can be version-specific.). This is the underlying object with id, value and extensions. The accessor "getArtifact" gives direct access to the value
2648         */
2649        public TestScriptScopeComponent setArtifactElement(CanonicalType value) { 
2650          this.artifact = value;
2651          return this;
2652        }
2653
2654        /**
2655         * @return The specific conformance artifact being tested. The canonical reference can be version-specific.
2656         */
2657        public String getArtifact() { 
2658          return this.artifact == null ? null : this.artifact.getValue();
2659        }
2660
2661        /**
2662         * @param value The specific conformance artifact being tested. The canonical reference can be version-specific.
2663         */
2664        public TestScriptScopeComponent setArtifact(String value) { 
2665            if (this.artifact == null)
2666              this.artifact = new CanonicalType();
2667            this.artifact.setValue(value);
2668          return this;
2669        }
2670
2671        /**
2672         * @return {@link #conformance} (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.)
2673         */
2674        public CodeableConcept getConformance() { 
2675          if (this.conformance == null)
2676            if (Configuration.errorOnAutoCreate())
2677              throw new Error("Attempt to auto-create TestScriptScopeComponent.conformance");
2678            else if (Configuration.doAutoCreate())
2679              this.conformance = new CodeableConcept(); // cc
2680          return this.conformance;
2681        }
2682
2683        public boolean hasConformance() { 
2684          return this.conformance != null && !this.conformance.isEmpty();
2685        }
2686
2687        /**
2688         * @param value {@link #conformance} (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.)
2689         */
2690        public TestScriptScopeComponent setConformance(CodeableConcept value) { 
2691          this.conformance = value;
2692          return this;
2693        }
2694
2695        /**
2696         * @return {@link #phase} (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).)
2697         */
2698        public CodeableConcept getPhase() { 
2699          if (this.phase == null)
2700            if (Configuration.errorOnAutoCreate())
2701              throw new Error("Attempt to auto-create TestScriptScopeComponent.phase");
2702            else if (Configuration.doAutoCreate())
2703              this.phase = new CodeableConcept(); // cc
2704          return this.phase;
2705        }
2706
2707        public boolean hasPhase() { 
2708          return this.phase != null && !this.phase.isEmpty();
2709        }
2710
2711        /**
2712         * @param value {@link #phase} (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).)
2713         */
2714        public TestScriptScopeComponent setPhase(CodeableConcept value) { 
2715          this.phase = value;
2716          return this;
2717        }
2718
2719        protected void listChildren(List<Property> children) {
2720          super.listChildren(children);
2721          children.add(new Property("artifact", "canonical(Any)", "The specific conformance artifact being tested. The canonical reference can be version-specific.", 0, 1, artifact));
2722          children.add(new Property("conformance", "CodeableConcept", "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.", 0, 1, conformance));
2723          children.add(new Property("phase", "CodeableConcept", "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).", 0, 1, phase));
2724        }
2725
2726        @Override
2727        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
2728          switch (_hash) {
2729          case -1228798510: /*artifact*/  return new Property("artifact", "canonical(Any)", "The specific conformance artifact being tested. The canonical reference can be version-specific.", 0, 1, artifact);
2730          case 1374858133: /*conformance*/  return new Property("conformance", "CodeableConcept", "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.", 0, 1, conformance);
2731          case 106629499: /*phase*/  return new Property("phase", "CodeableConcept", "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).", 0, 1, phase);
2732          default: return super.getNamedProperty(_hash, _name, _checkValid);
2733          }
2734
2735        }
2736
2737      @Override
2738      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
2739        switch (hash) {
2740        case -1228798510: /*artifact*/ return this.artifact == null ? new Base[0] : new Base[] {this.artifact}; // CanonicalType
2741        case 1374858133: /*conformance*/ return this.conformance == null ? new Base[0] : new Base[] {this.conformance}; // CodeableConcept
2742        case 106629499: /*phase*/ return this.phase == null ? new Base[0] : new Base[] {this.phase}; // CodeableConcept
2743        default: return super.getProperty(hash, name, checkValid);
2744        }
2745
2746      }
2747
2748      @Override
2749      public Base setProperty(int hash, String name, Base value) throws FHIRException {
2750        switch (hash) {
2751        case -1228798510: // artifact
2752          this.artifact = TypeConvertor.castToCanonical(value); // CanonicalType
2753          return value;
2754        case 1374858133: // conformance
2755          this.conformance = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
2756          return value;
2757        case 106629499: // phase
2758          this.phase = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
2759          return value;
2760        default: return super.setProperty(hash, name, value);
2761        }
2762
2763      }
2764
2765      @Override
2766      public Base setProperty(String name, Base value) throws FHIRException {
2767        if (name.equals("artifact")) {
2768          this.artifact = TypeConvertor.castToCanonical(value); // CanonicalType
2769        } else if (name.equals("conformance")) {
2770          this.conformance = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
2771        } else if (name.equals("phase")) {
2772          this.phase = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
2773        } else
2774          return super.setProperty(name, value);
2775        return value;
2776      }
2777
2778      @Override
2779      public Base makeProperty(int hash, String name) throws FHIRException {
2780        switch (hash) {
2781        case -1228798510:  return getArtifactElement();
2782        case 1374858133:  return getConformance();
2783        case 106629499:  return getPhase();
2784        default: return super.makeProperty(hash, name);
2785        }
2786
2787      }
2788
2789      @Override
2790      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
2791        switch (hash) {
2792        case -1228798510: /*artifact*/ return new String[] {"canonical"};
2793        case 1374858133: /*conformance*/ return new String[] {"CodeableConcept"};
2794        case 106629499: /*phase*/ return new String[] {"CodeableConcept"};
2795        default: return super.getTypesForProperty(hash, name);
2796        }
2797
2798      }
2799
2800      @Override
2801      public Base addChild(String name) throws FHIRException {
2802        if (name.equals("artifact")) {
2803          throw new FHIRException("Cannot call addChild on a primitive type TestScript.scope.artifact");
2804        }
2805        else if (name.equals("conformance")) {
2806          this.conformance = new CodeableConcept();
2807          return this.conformance;
2808        }
2809        else if (name.equals("phase")) {
2810          this.phase = new CodeableConcept();
2811          return this.phase;
2812        }
2813        else
2814          return super.addChild(name);
2815      }
2816
2817      public TestScriptScopeComponent copy() {
2818        TestScriptScopeComponent dst = new TestScriptScopeComponent();
2819        copyValues(dst);
2820        return dst;
2821      }
2822
2823      public void copyValues(TestScriptScopeComponent dst) {
2824        super.copyValues(dst);
2825        dst.artifact = artifact == null ? null : artifact.copy();
2826        dst.conformance = conformance == null ? null : conformance.copy();
2827        dst.phase = phase == null ? null : phase.copy();
2828      }
2829
2830      @Override
2831      public boolean equalsDeep(Base other_) {
2832        if (!super.equalsDeep(other_))
2833          return false;
2834        if (!(other_ instanceof TestScriptScopeComponent))
2835          return false;
2836        TestScriptScopeComponent o = (TestScriptScopeComponent) other_;
2837        return compareDeep(artifact, o.artifact, true) && compareDeep(conformance, o.conformance, true)
2838           && compareDeep(phase, o.phase, true);
2839      }
2840
2841      @Override
2842      public boolean equalsShallow(Base other_) {
2843        if (!super.equalsShallow(other_))
2844          return false;
2845        if (!(other_ instanceof TestScriptScopeComponent))
2846          return false;
2847        TestScriptScopeComponent o = (TestScriptScopeComponent) other_;
2848        return compareValues(artifact, o.artifact, true);
2849      }
2850
2851      public boolean isEmpty() {
2852        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(artifact, conformance, phase
2853          );
2854      }
2855
2856  public String fhirType() {
2857    return "TestScript.scope";
2858
2859  }
2860
2861  }
2862
2863    @Block()
2864    public static class TestScriptFixtureComponent extends BackboneElement implements IBaseBackboneElement {
2865        /**
2866         * 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.
2867         */
2868        @Child(name = "autocreate", type = {BooleanType.class}, order=1, min=1, max=1, modifier=false, summary=false)
2869        @Description(shortDefinition="Whether or not to implicitly create the fixture during setup", formalDefinition="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." )
2870        protected BooleanType autocreate;
2871
2872        /**
2873         * 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.
2874         */
2875        @Child(name = "autodelete", type = {BooleanType.class}, order=2, min=1, max=1, modifier=false, summary=false)
2876        @Description(shortDefinition="Whether or not to implicitly delete the fixture during teardown", formalDefinition="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." )
2877        protected BooleanType autodelete;
2878
2879        /**
2880         * Reference to the resource (containing the contents of the resource needed for operations). This is allowed to be a Parameters resource.
2881         */
2882        @Child(name = "resource", type = {Reference.class}, order=3, min=0, max=1, modifier=false, summary=false)
2883        @Description(shortDefinition="Reference of the resource", formalDefinition="Reference to the resource (containing the contents of the resource needed for operations). This is allowed to be a Parameters resource." )
2884        protected Reference resource;
2885
2886        private static final long serialVersionUID = 672117234L;
2887
2888    /**
2889     * Constructor
2890     */
2891      public TestScriptFixtureComponent() {
2892        super();
2893      }
2894
2895    /**
2896     * Constructor
2897     */
2898      public TestScriptFixtureComponent(boolean autocreate, boolean autodelete) {
2899        super();
2900        this.setAutocreate(autocreate);
2901        this.setAutodelete(autodelete);
2902      }
2903
2904        /**
2905         * @return {@link #autocreate} (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.). This is the underlying object with id, value and extensions. The accessor "getAutocreate" gives direct access to the value
2906         */
2907        public BooleanType getAutocreateElement() { 
2908          if (this.autocreate == null)
2909            if (Configuration.errorOnAutoCreate())
2910              throw new Error("Attempt to auto-create TestScriptFixtureComponent.autocreate");
2911            else if (Configuration.doAutoCreate())
2912              this.autocreate = new BooleanType(); // bb
2913          return this.autocreate;
2914        }
2915
2916        public boolean hasAutocreateElement() { 
2917          return this.autocreate != null && !this.autocreate.isEmpty();
2918        }
2919
2920        public boolean hasAutocreate() { 
2921          return this.autocreate != null && !this.autocreate.isEmpty();
2922        }
2923
2924        /**
2925         * @param value {@link #autocreate} (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.). This is the underlying object with id, value and extensions. The accessor "getAutocreate" gives direct access to the value
2926         */
2927        public TestScriptFixtureComponent setAutocreateElement(BooleanType value) { 
2928          this.autocreate = value;
2929          return this;
2930        }
2931
2932        /**
2933         * @return 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.
2934         */
2935        public boolean getAutocreate() { 
2936          return this.autocreate == null || this.autocreate.isEmpty() ? false : this.autocreate.getValue();
2937        }
2938
2939        /**
2940         * @param value 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.
2941         */
2942        public TestScriptFixtureComponent setAutocreate(boolean value) { 
2943            if (this.autocreate == null)
2944              this.autocreate = new BooleanType();
2945            this.autocreate.setValue(value);
2946          return this;
2947        }
2948
2949        /**
2950         * @return {@link #autodelete} (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.). This is the underlying object with id, value and extensions. The accessor "getAutodelete" gives direct access to the value
2951         */
2952        public BooleanType getAutodeleteElement() { 
2953          if (this.autodelete == null)
2954            if (Configuration.errorOnAutoCreate())
2955              throw new Error("Attempt to auto-create TestScriptFixtureComponent.autodelete");
2956            else if (Configuration.doAutoCreate())
2957              this.autodelete = new BooleanType(); // bb
2958          return this.autodelete;
2959        }
2960
2961        public boolean hasAutodeleteElement() { 
2962          return this.autodelete != null && !this.autodelete.isEmpty();
2963        }
2964
2965        public boolean hasAutodelete() { 
2966          return this.autodelete != null && !this.autodelete.isEmpty();
2967        }
2968
2969        /**
2970         * @param value {@link #autodelete} (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.). This is the underlying object with id, value and extensions. The accessor "getAutodelete" gives direct access to the value
2971         */
2972        public TestScriptFixtureComponent setAutodeleteElement(BooleanType value) { 
2973          this.autodelete = value;
2974          return this;
2975        }
2976
2977        /**
2978         * @return 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.
2979         */
2980        public boolean getAutodelete() { 
2981          return this.autodelete == null || this.autodelete.isEmpty() ? false : this.autodelete.getValue();
2982        }
2983
2984        /**
2985         * @param value 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.
2986         */
2987        public TestScriptFixtureComponent setAutodelete(boolean value) { 
2988            if (this.autodelete == null)
2989              this.autodelete = new BooleanType();
2990            this.autodelete.setValue(value);
2991          return this;
2992        }
2993
2994        /**
2995         * @return {@link #resource} (Reference to the resource (containing the contents of the resource needed for operations). This is allowed to be a Parameters resource.)
2996         */
2997        public Reference getResource() { 
2998          if (this.resource == null)
2999            if (Configuration.errorOnAutoCreate())
3000              throw new Error("Attempt to auto-create TestScriptFixtureComponent.resource");
3001            else if (Configuration.doAutoCreate())
3002              this.resource = new Reference(); // cc
3003          return this.resource;
3004        }
3005
3006        public boolean hasResource() { 
3007          return this.resource != null && !this.resource.isEmpty();
3008        }
3009
3010        /**
3011         * @param value {@link #resource} (Reference to the resource (containing the contents of the resource needed for operations). This is allowed to be a Parameters resource.)
3012         */
3013        public TestScriptFixtureComponent setResource(Reference value) { 
3014          this.resource = value;
3015          return this;
3016        }
3017
3018        protected void listChildren(List<Property> children) {
3019          super.listChildren(children);
3020          children.add(new Property("autocreate", "boolean", "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.", 0, 1, autocreate));
3021          children.add(new Property("autodelete", "boolean", "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.", 0, 1, autodelete));
3022          children.add(new Property("resource", "Reference(Any)", "Reference to the resource (containing the contents of the resource needed for operations). This is allowed to be a Parameters resource.", 0, 1, resource));
3023        }
3024
3025        @Override
3026        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
3027          switch (_hash) {
3028          case 73154411: /*autocreate*/  return new Property("autocreate", "boolean", "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.", 0, 1, autocreate);
3029          case 89990170: /*autodelete*/  return new Property("autodelete", "boolean", "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.", 0, 1, autodelete);
3030          case -341064690: /*resource*/  return new Property("resource", "Reference(Any)", "Reference to the resource (containing the contents of the resource needed for operations). This is allowed to be a Parameters resource.", 0, 1, resource);
3031          default: return super.getNamedProperty(_hash, _name, _checkValid);
3032          }
3033
3034        }
3035
3036      @Override
3037      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
3038        switch (hash) {
3039        case 73154411: /*autocreate*/ return this.autocreate == null ? new Base[0] : new Base[] {this.autocreate}; // BooleanType
3040        case 89990170: /*autodelete*/ return this.autodelete == null ? new Base[0] : new Base[] {this.autodelete}; // BooleanType
3041        case -341064690: /*resource*/ return this.resource == null ? new Base[0] : new Base[] {this.resource}; // Reference
3042        default: return super.getProperty(hash, name, checkValid);
3043        }
3044
3045      }
3046
3047      @Override
3048      public Base setProperty(int hash, String name, Base value) throws FHIRException {
3049        switch (hash) {
3050        case 73154411: // autocreate
3051          this.autocreate = TypeConvertor.castToBoolean(value); // BooleanType
3052          return value;
3053        case 89990170: // autodelete
3054          this.autodelete = TypeConvertor.castToBoolean(value); // BooleanType
3055          return value;
3056        case -341064690: // resource
3057          this.resource = TypeConvertor.castToReference(value); // Reference
3058          return value;
3059        default: return super.setProperty(hash, name, value);
3060        }
3061
3062      }
3063
3064      @Override
3065      public Base setProperty(String name, Base value) throws FHIRException {
3066        if (name.equals("autocreate")) {
3067          this.autocreate = TypeConvertor.castToBoolean(value); // BooleanType
3068        } else if (name.equals("autodelete")) {
3069          this.autodelete = TypeConvertor.castToBoolean(value); // BooleanType
3070        } else if (name.equals("resource")) {
3071          this.resource = TypeConvertor.castToReference(value); // Reference
3072        } else
3073          return super.setProperty(name, value);
3074        return value;
3075      }
3076
3077      @Override
3078      public Base makeProperty(int hash, String name) throws FHIRException {
3079        switch (hash) {
3080        case 73154411:  return getAutocreateElement();
3081        case 89990170:  return getAutodeleteElement();
3082        case -341064690:  return getResource();
3083        default: return super.makeProperty(hash, name);
3084        }
3085
3086      }
3087
3088      @Override
3089      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
3090        switch (hash) {
3091        case 73154411: /*autocreate*/ return new String[] {"boolean"};
3092        case 89990170: /*autodelete*/ return new String[] {"boolean"};
3093        case -341064690: /*resource*/ return new String[] {"Reference"};
3094        default: return super.getTypesForProperty(hash, name);
3095        }
3096
3097      }
3098
3099      @Override
3100      public Base addChild(String name) throws FHIRException {
3101        if (name.equals("autocreate")) {
3102          throw new FHIRException("Cannot call addChild on a primitive type TestScript.fixture.autocreate");
3103        }
3104        else if (name.equals("autodelete")) {
3105          throw new FHIRException("Cannot call addChild on a primitive type TestScript.fixture.autodelete");
3106        }
3107        else if (name.equals("resource")) {
3108          this.resource = new Reference();
3109          return this.resource;
3110        }
3111        else
3112          return super.addChild(name);
3113      }
3114
3115      public TestScriptFixtureComponent copy() {
3116        TestScriptFixtureComponent dst = new TestScriptFixtureComponent();
3117        copyValues(dst);
3118        return dst;
3119      }
3120
3121      public void copyValues(TestScriptFixtureComponent dst) {
3122        super.copyValues(dst);
3123        dst.autocreate = autocreate == null ? null : autocreate.copy();
3124        dst.autodelete = autodelete == null ? null : autodelete.copy();
3125        dst.resource = resource == null ? null : resource.copy();
3126      }
3127
3128      @Override
3129      public boolean equalsDeep(Base other_) {
3130        if (!super.equalsDeep(other_))
3131          return false;
3132        if (!(other_ instanceof TestScriptFixtureComponent))
3133          return false;
3134        TestScriptFixtureComponent o = (TestScriptFixtureComponent) other_;
3135        return compareDeep(autocreate, o.autocreate, true) && compareDeep(autodelete, o.autodelete, true)
3136           && compareDeep(resource, o.resource, true);
3137      }
3138
3139      @Override
3140      public boolean equalsShallow(Base other_) {
3141        if (!super.equalsShallow(other_))
3142          return false;
3143        if (!(other_ instanceof TestScriptFixtureComponent))
3144          return false;
3145        TestScriptFixtureComponent o = (TestScriptFixtureComponent) other_;
3146        return compareValues(autocreate, o.autocreate, true) && compareValues(autodelete, o.autodelete, true)
3147          ;
3148      }
3149
3150      public boolean isEmpty() {
3151        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(autocreate, autodelete, resource
3152          );
3153      }
3154
3155  public String fhirType() {
3156    return "TestScript.fixture";
3157
3158  }
3159
3160  }
3161
3162    @Block()
3163    public static class TestScriptVariableComponent extends BackboneElement implements IBaseBackboneElement {
3164        /**
3165         * Descriptive name for this variable.
3166         */
3167        @Child(name = "name", type = {StringType.class}, order=1, min=1, max=1, modifier=false, summary=false)
3168        @Description(shortDefinition="Descriptive name for this variable", formalDefinition="Descriptive name for this variable." )
3169        protected StringType name;
3170
3171        /**
3172         * A default, hard-coded, or user-defined value for this variable.
3173         */
3174        @Child(name = "defaultValue", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=false)
3175        @Description(shortDefinition="Default, hard-coded, or user-defined value for this variable", formalDefinition="A default, hard-coded, or user-defined value for this variable." )
3176        protected StringType defaultValue;
3177
3178        /**
3179         * A free text natural language description of the variable and its purpose.
3180         */
3181        @Child(name = "description", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=false)
3182        @Description(shortDefinition="Natural language description of the variable", formalDefinition="A free text natural language description of the variable and its purpose." )
3183        protected StringType description;
3184
3185        /**
3186         * The FHIRPath expression to evaluate against the fixture body. When variables are defined, only one of either expression, headerField or path must be specified.
3187         */
3188        @Child(name = "expression", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=false)
3189        @Description(shortDefinition="The FHIRPath expression against the fixture body", formalDefinition="The FHIRPath expression to evaluate against the fixture body. When variables are defined, only one of either expression, headerField or path must be specified." )
3190        protected StringType expression;
3191
3192        /**
3193         * Will be used to grab the HTTP header field value from the headers that sourceId is pointing to.
3194         */
3195        @Child(name = "headerField", type = {StringType.class}, order=5, min=0, max=1, modifier=false, summary=false)
3196        @Description(shortDefinition="HTTP header field name for source", formalDefinition="Will be used to grab the HTTP header field value from the headers that sourceId is pointing to." )
3197        protected StringType headerField;
3198
3199        /**
3200         * Displayable text string with hint help information to the user when entering a default value.
3201         */
3202        @Child(name = "hint", type = {StringType.class}, order=6, min=0, max=1, modifier=false, summary=false)
3203        @Description(shortDefinition="Hint help text for default value to enter", formalDefinition="Displayable text string with hint help information to the user when entering a default value." )
3204        protected StringType hint;
3205
3206        /**
3207         * XPath or JSONPath to evaluate against the fixture body.  When variables are defined, only one of either expression, headerField or path must be specified.
3208         */
3209        @Child(name = "path", type = {StringType.class}, order=7, min=0, max=1, modifier=false, summary=false)
3210        @Description(shortDefinition="XPath or JSONPath against the fixture body", formalDefinition="XPath or JSONPath to evaluate against the fixture body.  When variables are defined, only one of either expression, headerField or path must be specified." )
3211        protected StringType path;
3212
3213        /**
3214         * Fixture to evaluate the XPath/JSONPath expression or the headerField  against within this variable.
3215         */
3216        @Child(name = "sourceId", type = {IdType.class}, order=8, min=0, max=1, modifier=false, summary=false)
3217        @Description(shortDefinition="Fixture Id of source expression or headerField within this variable", formalDefinition="Fixture to evaluate the XPath/JSONPath expression or the headerField  against within this variable." )
3218        protected IdType sourceId;
3219
3220        private static final long serialVersionUID = -1592325432L;
3221
3222    /**
3223     * Constructor
3224     */
3225      public TestScriptVariableComponent() {
3226        super();
3227      }
3228
3229    /**
3230     * Constructor
3231     */
3232      public TestScriptVariableComponent(String name) {
3233        super();
3234        this.setName(name);
3235      }
3236
3237        /**
3238         * @return {@link #name} (Descriptive name for this variable.). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
3239         */
3240        public StringType getNameElement() { 
3241          if (this.name == null)
3242            if (Configuration.errorOnAutoCreate())
3243              throw new Error("Attempt to auto-create TestScriptVariableComponent.name");
3244            else if (Configuration.doAutoCreate())
3245              this.name = new StringType(); // bb
3246          return this.name;
3247        }
3248
3249        public boolean hasNameElement() { 
3250          return this.name != null && !this.name.isEmpty();
3251        }
3252
3253        public boolean hasName() { 
3254          return this.name != null && !this.name.isEmpty();
3255        }
3256
3257        /**
3258         * @param value {@link #name} (Descriptive name for this variable.). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
3259         */
3260        public TestScriptVariableComponent setNameElement(StringType value) { 
3261          this.name = value;
3262          return this;
3263        }
3264
3265        /**
3266         * @return Descriptive name for this variable.
3267         */
3268        public String getName() { 
3269          return this.name == null ? null : this.name.getValue();
3270        }
3271
3272        /**
3273         * @param value Descriptive name for this variable.
3274         */
3275        public TestScriptVariableComponent setName(String value) { 
3276            if (this.name == null)
3277              this.name = new StringType();
3278            this.name.setValue(value);
3279          return this;
3280        }
3281
3282        /**
3283         * @return {@link #defaultValue} (A default, hard-coded, or user-defined value for this variable.). This is the underlying object with id, value and extensions. The accessor "getDefaultValue" gives direct access to the value
3284         */
3285        public StringType getDefaultValueElement() { 
3286          if (this.defaultValue == null)
3287            if (Configuration.errorOnAutoCreate())
3288              throw new Error("Attempt to auto-create TestScriptVariableComponent.defaultValue");
3289            else if (Configuration.doAutoCreate())
3290              this.defaultValue = new StringType(); // bb
3291          return this.defaultValue;
3292        }
3293
3294        public boolean hasDefaultValueElement() { 
3295          return this.defaultValue != null && !this.defaultValue.isEmpty();
3296        }
3297
3298        public boolean hasDefaultValue() { 
3299          return this.defaultValue != null && !this.defaultValue.isEmpty();
3300        }
3301
3302        /**
3303         * @param value {@link #defaultValue} (A default, hard-coded, or user-defined value for this variable.). This is the underlying object with id, value and extensions. The accessor "getDefaultValue" gives direct access to the value
3304         */
3305        public TestScriptVariableComponent setDefaultValueElement(StringType value) { 
3306          this.defaultValue = value;
3307          return this;
3308        }
3309
3310        /**
3311         * @return A default, hard-coded, or user-defined value for this variable.
3312         */
3313        public String getDefaultValue() { 
3314          return this.defaultValue == null ? null : this.defaultValue.getValue();
3315        }
3316
3317        /**
3318         * @param value A default, hard-coded, or user-defined value for this variable.
3319         */
3320        public TestScriptVariableComponent setDefaultValue(String value) { 
3321          if (Utilities.noString(value))
3322            this.defaultValue = null;
3323          else {
3324            if (this.defaultValue == null)
3325              this.defaultValue = new StringType();
3326            this.defaultValue.setValue(value);
3327          }
3328          return this;
3329        }
3330
3331        /**
3332         * @return {@link #description} (A free text natural language description of the variable and its purpose.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
3333         */
3334        public StringType getDescriptionElement() { 
3335          if (this.description == null)
3336            if (Configuration.errorOnAutoCreate())
3337              throw new Error("Attempt to auto-create TestScriptVariableComponent.description");
3338            else if (Configuration.doAutoCreate())
3339              this.description = new StringType(); // bb
3340          return this.description;
3341        }
3342
3343        public boolean hasDescriptionElement() { 
3344          return this.description != null && !this.description.isEmpty();
3345        }
3346
3347        public boolean hasDescription() { 
3348          return this.description != null && !this.description.isEmpty();
3349        }
3350
3351        /**
3352         * @param value {@link #description} (A free text natural language description of the variable and its purpose.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
3353         */
3354        public TestScriptVariableComponent setDescriptionElement(StringType value) { 
3355          this.description = value;
3356          return this;
3357        }
3358
3359        /**
3360         * @return A free text natural language description of the variable and its purpose.
3361         */
3362        public String getDescription() { 
3363          return this.description == null ? null : this.description.getValue();
3364        }
3365
3366        /**
3367         * @param value A free text natural language description of the variable and its purpose.
3368         */
3369        public TestScriptVariableComponent setDescription(String value) { 
3370          if (Utilities.noString(value))
3371            this.description = null;
3372          else {
3373            if (this.description == null)
3374              this.description = new StringType();
3375            this.description.setValue(value);
3376          }
3377          return this;
3378        }
3379
3380        /**
3381         * @return {@link #expression} (The FHIRPath expression to evaluate against the fixture body. When variables are defined, only one of either expression, headerField or path must be specified.). This is the underlying object with id, value and extensions. The accessor "getExpression" gives direct access to the value
3382         */
3383        public StringType getExpressionElement() { 
3384          if (this.expression == null)
3385            if (Configuration.errorOnAutoCreate())
3386              throw new Error("Attempt to auto-create TestScriptVariableComponent.expression");
3387            else if (Configuration.doAutoCreate())
3388              this.expression = new StringType(); // bb
3389          return this.expression;
3390        }
3391
3392        public boolean hasExpressionElement() { 
3393          return this.expression != null && !this.expression.isEmpty();
3394        }
3395
3396        public boolean hasExpression() { 
3397          return this.expression != null && !this.expression.isEmpty();
3398        }
3399
3400        /**
3401         * @param value {@link #expression} (The FHIRPath expression to evaluate against the fixture body. When variables are defined, only one of either expression, headerField or path must be specified.). This is the underlying object with id, value and extensions. The accessor "getExpression" gives direct access to the value
3402         */
3403        public TestScriptVariableComponent setExpressionElement(StringType value) { 
3404          this.expression = value;
3405          return this;
3406        }
3407
3408        /**
3409         * @return The FHIRPath expression to evaluate against the fixture body. When variables are defined, only one of either expression, headerField or path must be specified.
3410         */
3411        public String getExpression() { 
3412          return this.expression == null ? null : this.expression.getValue();
3413        }
3414
3415        /**
3416         * @param value The FHIRPath expression to evaluate against the fixture body. When variables are defined, only one of either expression, headerField or path must be specified.
3417         */
3418        public TestScriptVariableComponent setExpression(String value) { 
3419          if (Utilities.noString(value))
3420            this.expression = null;
3421          else {
3422            if (this.expression == null)
3423              this.expression = new StringType();
3424            this.expression.setValue(value);
3425          }
3426          return this;
3427        }
3428
3429        /**
3430         * @return {@link #headerField} (Will be used to grab the HTTP header field value from the headers that sourceId is pointing to.). This is the underlying object with id, value and extensions. The accessor "getHeaderField" gives direct access to the value
3431         */
3432        public StringType getHeaderFieldElement() { 
3433          if (this.headerField == null)
3434            if (Configuration.errorOnAutoCreate())
3435              throw new Error("Attempt to auto-create TestScriptVariableComponent.headerField");
3436            else if (Configuration.doAutoCreate())
3437              this.headerField = new StringType(); // bb
3438          return this.headerField;
3439        }
3440
3441        public boolean hasHeaderFieldElement() { 
3442          return this.headerField != null && !this.headerField.isEmpty();
3443        }
3444
3445        public boolean hasHeaderField() { 
3446          return this.headerField != null && !this.headerField.isEmpty();
3447        }
3448
3449        /**
3450         * @param value {@link #headerField} (Will be used to grab the HTTP header field value from the headers that sourceId is pointing to.). This is the underlying object with id, value and extensions. The accessor "getHeaderField" gives direct access to the value
3451         */
3452        public TestScriptVariableComponent setHeaderFieldElement(StringType value) { 
3453          this.headerField = value;
3454          return this;
3455        }
3456
3457        /**
3458         * @return Will be used to grab the HTTP header field value from the headers that sourceId is pointing to.
3459         */
3460        public String getHeaderField() { 
3461          return this.headerField == null ? null : this.headerField.getValue();
3462        }
3463
3464        /**
3465         * @param value Will be used to grab the HTTP header field value from the headers that sourceId is pointing to.
3466         */
3467        public TestScriptVariableComponent setHeaderField(String value) { 
3468          if (Utilities.noString(value))
3469            this.headerField = null;
3470          else {
3471            if (this.headerField == null)
3472              this.headerField = new StringType();
3473            this.headerField.setValue(value);
3474          }
3475          return this;
3476        }
3477
3478        /**
3479         * @return {@link #hint} (Displayable text string with hint help information to the user when entering a default value.). This is the underlying object with id, value and extensions. The accessor "getHint" gives direct access to the value
3480         */
3481        public StringType getHintElement() { 
3482          if (this.hint == null)
3483            if (Configuration.errorOnAutoCreate())
3484              throw new Error("Attempt to auto-create TestScriptVariableComponent.hint");
3485            else if (Configuration.doAutoCreate())
3486              this.hint = new StringType(); // bb
3487          return this.hint;
3488        }
3489
3490        public boolean hasHintElement() { 
3491          return this.hint != null && !this.hint.isEmpty();
3492        }
3493
3494        public boolean hasHint() { 
3495          return this.hint != null && !this.hint.isEmpty();
3496        }
3497
3498        /**
3499         * @param value {@link #hint} (Displayable text string with hint help information to the user when entering a default value.). This is the underlying object with id, value and extensions. The accessor "getHint" gives direct access to the value
3500         */
3501        public TestScriptVariableComponent setHintElement(StringType value) { 
3502          this.hint = value;
3503          return this;
3504        }
3505
3506        /**
3507         * @return Displayable text string with hint help information to the user when entering a default value.
3508         */
3509        public String getHint() { 
3510          return this.hint == null ? null : this.hint.getValue();
3511        }
3512
3513        /**
3514         * @param value Displayable text string with hint help information to the user when entering a default value.
3515         */
3516        public TestScriptVariableComponent setHint(String value) { 
3517          if (Utilities.noString(value))
3518            this.hint = null;
3519          else {
3520            if (this.hint == null)
3521              this.hint = new StringType();
3522            this.hint.setValue(value);
3523          }
3524          return this;
3525        }
3526
3527        /**
3528         * @return {@link #path} (XPath or JSONPath to evaluate against the fixture body.  When variables are defined, only one of either expression, headerField or path must be specified.). This is the underlying object with id, value and extensions. The accessor "getPath" gives direct access to the value
3529         */
3530        public StringType getPathElement() { 
3531          if (this.path == null)
3532            if (Configuration.errorOnAutoCreate())
3533              throw new Error("Attempt to auto-create TestScriptVariableComponent.path");
3534            else if (Configuration.doAutoCreate())
3535              this.path = new StringType(); // bb
3536          return this.path;
3537        }
3538
3539        public boolean hasPathElement() { 
3540          return this.path != null && !this.path.isEmpty();
3541        }
3542
3543        public boolean hasPath() { 
3544          return this.path != null && !this.path.isEmpty();
3545        }
3546
3547        /**
3548         * @param value {@link #path} (XPath or JSONPath to evaluate against the fixture body.  When variables are defined, only one of either expression, headerField or path must be specified.). This is the underlying object with id, value and extensions. The accessor "getPath" gives direct access to the value
3549         */
3550        public TestScriptVariableComponent setPathElement(StringType value) { 
3551          this.path = value;
3552          return this;
3553        }
3554
3555        /**
3556         * @return XPath or JSONPath to evaluate against the fixture body.  When variables are defined, only one of either expression, headerField or path must be specified.
3557         */
3558        public String getPath() { 
3559          return this.path == null ? null : this.path.getValue();
3560        }
3561
3562        /**
3563         * @param value XPath or JSONPath to evaluate against the fixture body.  When variables are defined, only one of either expression, headerField or path must be specified.
3564         */
3565        public TestScriptVariableComponent setPath(String value) { 
3566          if (Utilities.noString(value))
3567            this.path = null;
3568          else {
3569            if (this.path == null)
3570              this.path = new StringType();
3571            this.path.setValue(value);
3572          }
3573          return this;
3574        }
3575
3576        /**
3577         * @return {@link #sourceId} (Fixture to evaluate the XPath/JSONPath expression or the headerField  against within this variable.). This is the underlying object with id, value and extensions. The accessor "getSourceId" gives direct access to the value
3578         */
3579        public IdType getSourceIdElement() { 
3580          if (this.sourceId == null)
3581            if (Configuration.errorOnAutoCreate())
3582              throw new Error("Attempt to auto-create TestScriptVariableComponent.sourceId");
3583            else if (Configuration.doAutoCreate())
3584              this.sourceId = new IdType(); // bb
3585          return this.sourceId;
3586        }
3587
3588        public boolean hasSourceIdElement() { 
3589          return this.sourceId != null && !this.sourceId.isEmpty();
3590        }
3591
3592        public boolean hasSourceId() { 
3593          return this.sourceId != null && !this.sourceId.isEmpty();
3594        }
3595
3596        /**
3597         * @param value {@link #sourceId} (Fixture to evaluate the XPath/JSONPath expression or the headerField  against within this variable.). This is the underlying object with id, value and extensions. The accessor "getSourceId" gives direct access to the value
3598         */
3599        public TestScriptVariableComponent setSourceIdElement(IdType value) { 
3600          this.sourceId = value;
3601          return this;
3602        }
3603
3604        /**
3605         * @return Fixture to evaluate the XPath/JSONPath expression or the headerField  against within this variable.
3606         */
3607        public String getSourceId() { 
3608          return this.sourceId == null ? null : this.sourceId.getValue();
3609        }
3610
3611        /**
3612         * @param value Fixture to evaluate the XPath/JSONPath expression or the headerField  against within this variable.
3613         */
3614        public TestScriptVariableComponent setSourceId(String value) { 
3615          if (Utilities.noString(value))
3616            this.sourceId = null;
3617          else {
3618            if (this.sourceId == null)
3619              this.sourceId = new IdType();
3620            this.sourceId.setValue(value);
3621          }
3622          return this;
3623        }
3624
3625        protected void listChildren(List<Property> children) {
3626          super.listChildren(children);
3627          children.add(new Property("name", "string", "Descriptive name for this variable.", 0, 1, name));
3628          children.add(new Property("defaultValue", "string", "A default, hard-coded, or user-defined value for this variable.", 0, 1, defaultValue));
3629          children.add(new Property("description", "string", "A free text natural language description of the variable and its purpose.", 0, 1, description));
3630          children.add(new Property("expression", "string", "The FHIRPath expression to evaluate against the fixture body. When variables are defined, only one of either expression, headerField or path must be specified.", 0, 1, expression));
3631          children.add(new Property("headerField", "string", "Will be used to grab the HTTP header field value from the headers that sourceId is pointing to.", 0, 1, headerField));
3632          children.add(new Property("hint", "string", "Displayable text string with hint help information to the user when entering a default value.", 0, 1, hint));
3633          children.add(new Property("path", "string", "XPath or JSONPath to evaluate against the fixture body.  When variables are defined, only one of either expression, headerField or path must be specified.", 0, 1, path));
3634          children.add(new Property("sourceId", "id", "Fixture to evaluate the XPath/JSONPath expression or the headerField  against within this variable.", 0, 1, sourceId));
3635        }
3636
3637        @Override
3638        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
3639          switch (_hash) {
3640          case 3373707: /*name*/  return new Property("name", "string", "Descriptive name for this variable.", 0, 1, name);
3641          case -659125328: /*defaultValue*/  return new Property("defaultValue", "string", "A default, hard-coded, or user-defined value for this variable.", 0, 1, defaultValue);
3642          case -1724546052: /*description*/  return new Property("description", "string", "A free text natural language description of the variable and its purpose.", 0, 1, description);
3643          case -1795452264: /*expression*/  return new Property("expression", "string", "The FHIRPath expression to evaluate against the fixture body. When variables are defined, only one of either expression, headerField or path must be specified.", 0, 1, expression);
3644          case 1160732269: /*headerField*/  return new Property("headerField", "string", "Will be used to grab the HTTP header field value from the headers that sourceId is pointing to.", 0, 1, headerField);
3645          case 3202695: /*hint*/  return new Property("hint", "string", "Displayable text string with hint help information to the user when entering a default value.", 0, 1, hint);
3646          case 3433509: /*path*/  return new Property("path", "string", "XPath or JSONPath to evaluate against the fixture body.  When variables are defined, only one of either expression, headerField or path must be specified.", 0, 1, path);
3647          case 1746327190: /*sourceId*/  return new Property("sourceId", "id", "Fixture to evaluate the XPath/JSONPath expression or the headerField  against within this variable.", 0, 1, sourceId);
3648          default: return super.getNamedProperty(_hash, _name, _checkValid);
3649          }
3650
3651        }
3652
3653      @Override
3654      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
3655        switch (hash) {
3656        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
3657        case -659125328: /*defaultValue*/ return this.defaultValue == null ? new Base[0] : new Base[] {this.defaultValue}; // StringType
3658        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // StringType
3659        case -1795452264: /*expression*/ return this.expression == null ? new Base[0] : new Base[] {this.expression}; // StringType
3660        case 1160732269: /*headerField*/ return this.headerField == null ? new Base[0] : new Base[] {this.headerField}; // StringType
3661        case 3202695: /*hint*/ return this.hint == null ? new Base[0] : new Base[] {this.hint}; // StringType
3662        case 3433509: /*path*/ return this.path == null ? new Base[0] : new Base[] {this.path}; // StringType
3663        case 1746327190: /*sourceId*/ return this.sourceId == null ? new Base[0] : new Base[] {this.sourceId}; // IdType
3664        default: return super.getProperty(hash, name, checkValid);
3665        }
3666
3667      }
3668
3669      @Override
3670      public Base setProperty(int hash, String name, Base value) throws FHIRException {
3671        switch (hash) {
3672        case 3373707: // name
3673          this.name = TypeConvertor.castToString(value); // StringType
3674          return value;
3675        case -659125328: // defaultValue
3676          this.defaultValue = TypeConvertor.castToString(value); // StringType
3677          return value;
3678        case -1724546052: // description
3679          this.description = TypeConvertor.castToString(value); // StringType
3680          return value;
3681        case -1795452264: // expression
3682          this.expression = TypeConvertor.castToString(value); // StringType
3683          return value;
3684        case 1160732269: // headerField
3685          this.headerField = TypeConvertor.castToString(value); // StringType
3686          return value;
3687        case 3202695: // hint
3688          this.hint = TypeConvertor.castToString(value); // StringType
3689          return value;
3690        case 3433509: // path
3691          this.path = TypeConvertor.castToString(value); // StringType
3692          return value;
3693        case 1746327190: // sourceId
3694          this.sourceId = TypeConvertor.castToId(value); // IdType
3695          return value;
3696        default: return super.setProperty(hash, name, value);
3697        }
3698
3699      }
3700
3701      @Override
3702      public Base setProperty(String name, Base value) throws FHIRException {
3703        if (name.equals("name")) {
3704          this.name = TypeConvertor.castToString(value); // StringType
3705        } else if (name.equals("defaultValue")) {
3706          this.defaultValue = TypeConvertor.castToString(value); // StringType
3707        } else if (name.equals("description")) {
3708          this.description = TypeConvertor.castToString(value); // StringType
3709        } else if (name.equals("expression")) {
3710          this.expression = TypeConvertor.castToString(value); // StringType
3711        } else if (name.equals("headerField")) {
3712          this.headerField = TypeConvertor.castToString(value); // StringType
3713        } else if (name.equals("hint")) {
3714          this.hint = TypeConvertor.castToString(value); // StringType
3715        } else if (name.equals("path")) {
3716          this.path = TypeConvertor.castToString(value); // StringType
3717        } else if (name.equals("sourceId")) {
3718          this.sourceId = TypeConvertor.castToId(value); // IdType
3719        } else
3720          return super.setProperty(name, value);
3721        return value;
3722      }
3723
3724      @Override
3725      public Base makeProperty(int hash, String name) throws FHIRException {
3726        switch (hash) {
3727        case 3373707:  return getNameElement();
3728        case -659125328:  return getDefaultValueElement();
3729        case -1724546052:  return getDescriptionElement();
3730        case -1795452264:  return getExpressionElement();
3731        case 1160732269:  return getHeaderFieldElement();
3732        case 3202695:  return getHintElement();
3733        case 3433509:  return getPathElement();
3734        case 1746327190:  return getSourceIdElement();
3735        default: return super.makeProperty(hash, name);
3736        }
3737
3738      }
3739
3740      @Override
3741      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
3742        switch (hash) {
3743        case 3373707: /*name*/ return new String[] {"string"};
3744        case -659125328: /*defaultValue*/ return new String[] {"string"};
3745        case -1724546052: /*description*/ return new String[] {"string"};
3746        case -1795452264: /*expression*/ return new String[] {"string"};
3747        case 1160732269: /*headerField*/ return new String[] {"string"};
3748        case 3202695: /*hint*/ return new String[] {"string"};
3749        case 3433509: /*path*/ return new String[] {"string"};
3750        case 1746327190: /*sourceId*/ return new String[] {"id"};
3751        default: return super.getTypesForProperty(hash, name);
3752        }
3753
3754      }
3755
3756      @Override
3757      public Base addChild(String name) throws FHIRException {
3758        if (name.equals("name")) {
3759          throw new FHIRException("Cannot call addChild on a primitive type TestScript.variable.name");
3760        }
3761        else if (name.equals("defaultValue")) {
3762          throw new FHIRException("Cannot call addChild on a primitive type TestScript.variable.defaultValue");
3763        }
3764        else if (name.equals("description")) {
3765          throw new FHIRException("Cannot call addChild on a primitive type TestScript.variable.description");
3766        }
3767        else if (name.equals("expression")) {
3768          throw new FHIRException("Cannot call addChild on a primitive type TestScript.variable.expression");
3769        }
3770        else if (name.equals("headerField")) {
3771          throw new FHIRException("Cannot call addChild on a primitive type TestScript.variable.headerField");
3772        }
3773        else if (name.equals("hint")) {
3774          throw new FHIRException("Cannot call addChild on a primitive type TestScript.variable.hint");
3775        }
3776        else if (name.equals("path")) {
3777          throw new FHIRException("Cannot call addChild on a primitive type TestScript.variable.path");
3778        }
3779        else if (name.equals("sourceId")) {
3780          throw new FHIRException("Cannot call addChild on a primitive type TestScript.variable.sourceId");
3781        }
3782        else
3783          return super.addChild(name);
3784      }
3785
3786      public TestScriptVariableComponent copy() {
3787        TestScriptVariableComponent dst = new TestScriptVariableComponent();
3788        copyValues(dst);
3789        return dst;
3790      }
3791
3792      public void copyValues(TestScriptVariableComponent dst) {
3793        super.copyValues(dst);
3794        dst.name = name == null ? null : name.copy();
3795        dst.defaultValue = defaultValue == null ? null : defaultValue.copy();
3796        dst.description = description == null ? null : description.copy();
3797        dst.expression = expression == null ? null : expression.copy();
3798        dst.headerField = headerField == null ? null : headerField.copy();
3799        dst.hint = hint == null ? null : hint.copy();
3800        dst.path = path == null ? null : path.copy();
3801        dst.sourceId = sourceId == null ? null : sourceId.copy();
3802      }
3803
3804      @Override
3805      public boolean equalsDeep(Base other_) {
3806        if (!super.equalsDeep(other_))
3807          return false;
3808        if (!(other_ instanceof TestScriptVariableComponent))
3809          return false;
3810        TestScriptVariableComponent o = (TestScriptVariableComponent) other_;
3811        return compareDeep(name, o.name, true) && compareDeep(defaultValue, o.defaultValue, true) && compareDeep(description, o.description, true)
3812           && compareDeep(expression, o.expression, true) && compareDeep(headerField, o.headerField, true)
3813           && compareDeep(hint, o.hint, true) && compareDeep(path, o.path, true) && compareDeep(sourceId, o.sourceId, true)
3814          ;
3815      }
3816
3817      @Override
3818      public boolean equalsShallow(Base other_) {
3819        if (!super.equalsShallow(other_))
3820          return false;
3821        if (!(other_ instanceof TestScriptVariableComponent))
3822          return false;
3823        TestScriptVariableComponent o = (TestScriptVariableComponent) other_;
3824        return compareValues(name, o.name, true) && compareValues(defaultValue, o.defaultValue, true) && compareValues(description, o.description, true)
3825           && compareValues(expression, o.expression, true) && compareValues(headerField, o.headerField, true)
3826           && compareValues(hint, o.hint, true) && compareValues(path, o.path, true) && compareValues(sourceId, o.sourceId, true)
3827          ;
3828      }
3829
3830      public boolean isEmpty() {
3831        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(name, defaultValue, description
3832          , expression, headerField, hint, path, sourceId);
3833      }
3834
3835  public String fhirType() {
3836    return "TestScript.variable";
3837
3838  }
3839
3840  }
3841
3842    @Block()
3843    public static class TestScriptSetupComponent extends BackboneElement implements IBaseBackboneElement {
3844        /**
3845         * Action would contain either an operation or an assertion.
3846         */
3847        @Child(name = "action", type = {}, order=1, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
3848        @Description(shortDefinition="A setup operation or assert to perform", formalDefinition="Action would contain either an operation or an assertion." )
3849        protected List<SetupActionComponent> action;
3850
3851        private static final long serialVersionUID = -123374486L;
3852
3853    /**
3854     * Constructor
3855     */
3856      public TestScriptSetupComponent() {
3857        super();
3858      }
3859
3860    /**
3861     * Constructor
3862     */
3863      public TestScriptSetupComponent(SetupActionComponent action) {
3864        super();
3865        this.addAction(action);
3866      }
3867
3868        /**
3869         * @return {@link #action} (Action would contain either an operation or an assertion.)
3870         */
3871        public List<SetupActionComponent> getAction() { 
3872          if (this.action == null)
3873            this.action = new ArrayList<SetupActionComponent>();
3874          return this.action;
3875        }
3876
3877        /**
3878         * @return Returns a reference to <code>this</code> for easy method chaining
3879         */
3880        public TestScriptSetupComponent setAction(List<SetupActionComponent> theAction) { 
3881          this.action = theAction;
3882          return this;
3883        }
3884
3885        public boolean hasAction() { 
3886          if (this.action == null)
3887            return false;
3888          for (SetupActionComponent item : this.action)
3889            if (!item.isEmpty())
3890              return true;
3891          return false;
3892        }
3893
3894        public SetupActionComponent addAction() { //3
3895          SetupActionComponent t = new SetupActionComponent();
3896          if (this.action == null)
3897            this.action = new ArrayList<SetupActionComponent>();
3898          this.action.add(t);
3899          return t;
3900        }
3901
3902        public TestScriptSetupComponent addAction(SetupActionComponent t) { //3
3903          if (t == null)
3904            return this;
3905          if (this.action == null)
3906            this.action = new ArrayList<SetupActionComponent>();
3907          this.action.add(t);
3908          return this;
3909        }
3910
3911        /**
3912         * @return The first repetition of repeating field {@link #action}, creating it if it does not already exist {3}
3913         */
3914        public SetupActionComponent getActionFirstRep() { 
3915          if (getAction().isEmpty()) {
3916            addAction();
3917          }
3918          return getAction().get(0);
3919        }
3920
3921        protected void listChildren(List<Property> children) {
3922          super.listChildren(children);
3923          children.add(new Property("action", "", "Action would contain either an operation or an assertion.", 0, java.lang.Integer.MAX_VALUE, action));
3924        }
3925
3926        @Override
3927        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
3928          switch (_hash) {
3929          case -1422950858: /*action*/  return new Property("action", "", "Action would contain either an operation or an assertion.", 0, java.lang.Integer.MAX_VALUE, action);
3930          default: return super.getNamedProperty(_hash, _name, _checkValid);
3931          }
3932
3933        }
3934
3935      @Override
3936      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
3937        switch (hash) {
3938        case -1422950858: /*action*/ return this.action == null ? new Base[0] : this.action.toArray(new Base[this.action.size()]); // SetupActionComponent
3939        default: return super.getProperty(hash, name, checkValid);
3940        }
3941
3942      }
3943
3944      @Override
3945      public Base setProperty(int hash, String name, Base value) throws FHIRException {
3946        switch (hash) {
3947        case -1422950858: // action
3948          this.getAction().add((SetupActionComponent) value); // SetupActionComponent
3949          return value;
3950        default: return super.setProperty(hash, name, value);
3951        }
3952
3953      }
3954
3955      @Override
3956      public Base setProperty(String name, Base value) throws FHIRException {
3957        if (name.equals("action")) {
3958          this.getAction().add((SetupActionComponent) value);
3959        } else
3960          return super.setProperty(name, value);
3961        return value;
3962      }
3963
3964      @Override
3965      public Base makeProperty(int hash, String name) throws FHIRException {
3966        switch (hash) {
3967        case -1422950858:  return addAction(); 
3968        default: return super.makeProperty(hash, name);
3969        }
3970
3971      }
3972
3973      @Override
3974      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
3975        switch (hash) {
3976        case -1422950858: /*action*/ return new String[] {};
3977        default: return super.getTypesForProperty(hash, name);
3978        }
3979
3980      }
3981
3982      @Override
3983      public Base addChild(String name) throws FHIRException {
3984        if (name.equals("action")) {
3985          return addAction();
3986        }
3987        else
3988          return super.addChild(name);
3989      }
3990
3991      public TestScriptSetupComponent copy() {
3992        TestScriptSetupComponent dst = new TestScriptSetupComponent();
3993        copyValues(dst);
3994        return dst;
3995      }
3996
3997      public void copyValues(TestScriptSetupComponent dst) {
3998        super.copyValues(dst);
3999        if (action != null) {
4000          dst.action = new ArrayList<SetupActionComponent>();
4001          for (SetupActionComponent i : action)
4002            dst.action.add(i.copy());
4003        };
4004      }
4005
4006      @Override
4007      public boolean equalsDeep(Base other_) {
4008        if (!super.equalsDeep(other_))
4009          return false;
4010        if (!(other_ instanceof TestScriptSetupComponent))
4011          return false;
4012        TestScriptSetupComponent o = (TestScriptSetupComponent) other_;
4013        return compareDeep(action, o.action, true);
4014      }
4015
4016      @Override
4017      public boolean equalsShallow(Base other_) {
4018        if (!super.equalsShallow(other_))
4019          return false;
4020        if (!(other_ instanceof TestScriptSetupComponent))
4021          return false;
4022        TestScriptSetupComponent o = (TestScriptSetupComponent) other_;
4023        return true;
4024      }
4025
4026      public boolean isEmpty() {
4027        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(action);
4028      }
4029
4030  public String fhirType() {
4031    return "TestScript.setup";
4032
4033  }
4034
4035  }
4036
4037    @Block()
4038    public static class SetupActionComponent extends BackboneElement implements IBaseBackboneElement {
4039        /**
4040         * The operation to perform.
4041         */
4042        @Child(name = "operation", type = {}, order=1, min=0, max=1, modifier=false, summary=false)
4043        @Description(shortDefinition="The setup operation to perform", formalDefinition="The operation to perform." )
4044        protected SetupActionOperationComponent operation;
4045
4046        /**
4047         * Evaluates the results of previous operations to determine if the server under test behaves appropriately.
4048         */
4049        @Child(name = "assert", type = {}, order=2, min=0, max=1, modifier=false, summary=false)
4050        @Description(shortDefinition="The assertion to perform", formalDefinition="Evaluates the results of previous operations to determine if the server under test behaves appropriately." )
4051        protected SetupActionAssertComponent assert_;
4052
4053        private static final long serialVersionUID = -252088305L;
4054
4055    /**
4056     * Constructor
4057     */
4058      public SetupActionComponent() {
4059        super();
4060      }
4061
4062        /**
4063         * @return {@link #operation} (The operation to perform.)
4064         */
4065        public SetupActionOperationComponent getOperation() { 
4066          if (this.operation == null)
4067            if (Configuration.errorOnAutoCreate())
4068              throw new Error("Attempt to auto-create SetupActionComponent.operation");
4069            else if (Configuration.doAutoCreate())
4070              this.operation = new SetupActionOperationComponent(); // cc
4071          return this.operation;
4072        }
4073
4074        public boolean hasOperation() { 
4075          return this.operation != null && !this.operation.isEmpty();
4076        }
4077
4078        /**
4079         * @param value {@link #operation} (The operation to perform.)
4080         */
4081        public SetupActionComponent setOperation(SetupActionOperationComponent value) { 
4082          this.operation = value;
4083          return this;
4084        }
4085
4086        /**
4087         * @return {@link #assert_} (Evaluates the results of previous operations to determine if the server under test behaves appropriately.)
4088         */
4089        public SetupActionAssertComponent getAssert() { 
4090          if (this.assert_ == null)
4091            if (Configuration.errorOnAutoCreate())
4092              throw new Error("Attempt to auto-create SetupActionComponent.assert_");
4093            else if (Configuration.doAutoCreate())
4094              this.assert_ = new SetupActionAssertComponent(); // cc
4095          return this.assert_;
4096        }
4097
4098        public boolean hasAssert() { 
4099          return this.assert_ != null && !this.assert_.isEmpty();
4100        }
4101
4102        /**
4103         * @param value {@link #assert_} (Evaluates the results of previous operations to determine if the server under test behaves appropriately.)
4104         */
4105        public SetupActionComponent setAssert(SetupActionAssertComponent value) { 
4106          this.assert_ = value;
4107          return this;
4108        }
4109
4110        protected void listChildren(List<Property> children) {
4111          super.listChildren(children);
4112          children.add(new Property("operation", "", "The operation to perform.", 0, 1, operation));
4113          children.add(new Property("assert", "", "Evaluates the results of previous operations to determine if the server under test behaves appropriately.", 0, 1, assert_));
4114        }
4115
4116        @Override
4117        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
4118          switch (_hash) {
4119          case 1662702951: /*operation*/  return new Property("operation", "", "The operation to perform.", 0, 1, operation);
4120          case -1408208058: /*assert*/  return new Property("assert", "", "Evaluates the results of previous operations to determine if the server under test behaves appropriately.", 0, 1, assert_);
4121          default: return super.getNamedProperty(_hash, _name, _checkValid);
4122          }
4123
4124        }
4125
4126      @Override
4127      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
4128        switch (hash) {
4129        case 1662702951: /*operation*/ return this.operation == null ? new Base[0] : new Base[] {this.operation}; // SetupActionOperationComponent
4130        case -1408208058: /*assert*/ return this.assert_ == null ? new Base[0] : new Base[] {this.assert_}; // SetupActionAssertComponent
4131        default: return super.getProperty(hash, name, checkValid);
4132        }
4133
4134      }
4135
4136      @Override
4137      public Base setProperty(int hash, String name, Base value) throws FHIRException {
4138        switch (hash) {
4139        case 1662702951: // operation
4140          this.operation = (SetupActionOperationComponent) value; // SetupActionOperationComponent
4141          return value;
4142        case -1408208058: // assert
4143          this.assert_ = (SetupActionAssertComponent) value; // SetupActionAssertComponent
4144          return value;
4145        default: return super.setProperty(hash, name, value);
4146        }
4147
4148      }
4149
4150      @Override
4151      public Base setProperty(String name, Base value) throws FHIRException {
4152        if (name.equals("operation")) {
4153          this.operation = (SetupActionOperationComponent) value; // SetupActionOperationComponent
4154        } else if (name.equals("assert")) {
4155          this.assert_ = (SetupActionAssertComponent) value; // SetupActionAssertComponent
4156        } else
4157          return super.setProperty(name, value);
4158        return value;
4159      }
4160
4161      @Override
4162      public Base makeProperty(int hash, String name) throws FHIRException {
4163        switch (hash) {
4164        case 1662702951:  return getOperation();
4165        case -1408208058:  return getAssert();
4166        default: return super.makeProperty(hash, name);
4167        }
4168
4169      }
4170
4171      @Override
4172      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
4173        switch (hash) {
4174        case 1662702951: /*operation*/ return new String[] {};
4175        case -1408208058: /*assert*/ return new String[] {};
4176        default: return super.getTypesForProperty(hash, name);
4177        }
4178
4179      }
4180
4181      @Override
4182      public Base addChild(String name) throws FHIRException {
4183        if (name.equals("operation")) {
4184          this.operation = new SetupActionOperationComponent();
4185          return this.operation;
4186        }
4187        else if (name.equals("assert")) {
4188          this.assert_ = new SetupActionAssertComponent();
4189          return this.assert_;
4190        }
4191        else
4192          return super.addChild(name);
4193      }
4194
4195      public SetupActionComponent copy() {
4196        SetupActionComponent dst = new SetupActionComponent();
4197        copyValues(dst);
4198        return dst;
4199      }
4200
4201      public void copyValues(SetupActionComponent dst) {
4202        super.copyValues(dst);
4203        dst.operation = operation == null ? null : operation.copy();
4204        dst.assert_ = assert_ == null ? null : assert_.copy();
4205      }
4206
4207      @Override
4208      public boolean equalsDeep(Base other_) {
4209        if (!super.equalsDeep(other_))
4210          return false;
4211        if (!(other_ instanceof SetupActionComponent))
4212          return false;
4213        SetupActionComponent o = (SetupActionComponent) other_;
4214        return compareDeep(operation, o.operation, true) && compareDeep(assert_, o.assert_, true);
4215      }
4216
4217      @Override
4218      public boolean equalsShallow(Base other_) {
4219        if (!super.equalsShallow(other_))
4220          return false;
4221        if (!(other_ instanceof SetupActionComponent))
4222          return false;
4223        SetupActionComponent o = (SetupActionComponent) other_;
4224        return true;
4225      }
4226
4227      public boolean isEmpty() {
4228        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(operation, assert_);
4229      }
4230
4231  public String fhirType() {
4232    return "TestScript.setup.action";
4233
4234  }
4235
4236  }
4237
4238    @Block()
4239    public static class SetupActionOperationComponent extends BackboneElement implements IBaseBackboneElement {
4240        /**
4241         * Server interaction or operation type.
4242         */
4243        @Child(name = "type", type = {Coding.class}, order=1, min=0, max=1, modifier=false, summary=false)
4244        @Description(shortDefinition="The operation code type that will be executed", formalDefinition="Server interaction or operation type." )
4245        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/testscript-operation-codes")
4246        protected Coding type;
4247
4248        /**
4249         * The type of the FHIR resource. See the [resource list](resourcelist.html). Data type of uri is needed when non-HL7 artifacts are identified.
4250         */
4251        @Child(name = "resource", type = {UriType.class}, order=2, min=0, max=1, modifier=false, summary=false)
4252        @Description(shortDefinition="Resource type", formalDefinition="The type of the FHIR resource. See the [resource list](resourcelist.html). Data type of uri is needed when non-HL7 artifacts are identified." )
4253        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/concrete-fhir-types")
4254        protected UriType resource;
4255
4256        /**
4257         * The label would be used for tracking/logging purposes by test engines.
4258         */
4259        @Child(name = "label", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=false)
4260        @Description(shortDefinition="Tracking/logging operation label", formalDefinition="The label would be used for tracking/logging purposes by test engines." )
4261        protected StringType label;
4262
4263        /**
4264         * The description would be used by test engines for tracking and reporting purposes.
4265         */
4266        @Child(name = "description", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=false)
4267        @Description(shortDefinition="Tracking/reporting operation description", formalDefinition="The description would be used by test engines for tracking and reporting purposes." )
4268        protected StringType description;
4269
4270        /**
4271         * The mime-type to use for RESTful operation in the 'Accept' header.
4272         */
4273        @Child(name = "accept", type = {CodeType.class}, order=5, min=0, max=1, modifier=false, summary=false)
4274        @Description(shortDefinition="Mime type to accept in the payload of the response, with charset etc.", formalDefinition="The mime-type to use for RESTful operation in the 'Accept' header." )
4275        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/mimetypes")
4276        protected CodeType accept;
4277
4278        /**
4279         * The mime-type to use for RESTful operation in the 'Content-Type' header.
4280         */
4281        @Child(name = "contentType", type = {CodeType.class}, order=6, min=0, max=1, modifier=false, summary=false)
4282        @Description(shortDefinition="Mime type of the request payload contents, with charset etc.", formalDefinition="The mime-type to use for RESTful operation in the 'Content-Type' header." )
4283        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/mimetypes")
4284        protected CodeType contentType;
4285
4286        /**
4287         * The server where the request message is destined for.  Must be one of the server numbers listed in TestScript.destination section.
4288         */
4289        @Child(name = "destination", type = {IntegerType.class}, order=7, min=0, max=1, modifier=false, summary=false)
4290        @Description(shortDefinition="Server responding to the request", formalDefinition="The server where the request message is destined for.  Must be one of the server numbers listed in TestScript.destination section." )
4291        protected IntegerType destination;
4292
4293        /**
4294         * 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.
4295         */
4296        @Child(name = "encodeRequestUrl", type = {BooleanType.class}, order=8, min=1, max=1, modifier=false, summary=false)
4297        @Description(shortDefinition="Whether or not to send the request url in encoded format", formalDefinition="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." )
4298        protected BooleanType encodeRequestUrl;
4299
4300        /**
4301         * The HTTP method the test engine MUST use for this operation regardless of any other operation details.
4302         */
4303        @Child(name = "method", type = {CodeType.class}, order=9, min=0, max=1, modifier=false, summary=false)
4304        @Description(shortDefinition="delete | get | options | patch | post | put | head", formalDefinition="The HTTP method the test engine MUST use for this operation regardless of any other operation details." )
4305        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/http-operations")
4306        protected Enumeration<TestScriptRequestMethodCode> method;
4307
4308        /**
4309         * The server where the request message originates from.  Must be one of the server numbers listed in TestScript.origin section.
4310         */
4311        @Child(name = "origin", type = {IntegerType.class}, order=10, min=0, max=1, modifier=false, summary=false)
4312        @Description(shortDefinition="Server initiating the request", formalDefinition="The server where the request message originates from.  Must be one of the server numbers listed in TestScript.origin section." )
4313        protected IntegerType origin;
4314
4315        /**
4316         * Path plus parameters after [type].  Used to set parts of the request URL explicitly.
4317         */
4318        @Child(name = "params", type = {StringType.class}, order=11, min=0, max=1, modifier=false, summary=false)
4319        @Description(shortDefinition="Explicitly defined path parameters", formalDefinition="Path plus parameters after [type].  Used to set parts of the request URL explicitly." )
4320        protected StringType params;
4321
4322        /**
4323         * Header elements would be used to set HTTP headers.
4324         */
4325        @Child(name = "requestHeader", type = {}, order=12, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
4326        @Description(shortDefinition="Each operation can have one or more header elements", formalDefinition="Header elements would be used to set HTTP headers." )
4327        protected List<SetupActionOperationRequestHeaderComponent> requestHeader;
4328
4329        /**
4330         * The fixture id (maybe new) to map to the request.
4331         */
4332        @Child(name = "requestId", type = {IdType.class}, order=13, min=0, max=1, modifier=false, summary=false)
4333        @Description(shortDefinition="Fixture Id of mapped request", formalDefinition="The fixture id (maybe new) to map to the request." )
4334        protected IdType requestId;
4335
4336        /**
4337         * The fixture id (maybe new) to map to the response.
4338         */
4339        @Child(name = "responseId", type = {IdType.class}, order=14, min=0, max=1, modifier=false, summary=false)
4340        @Description(shortDefinition="Fixture Id of mapped response", formalDefinition="The fixture id (maybe new) to map to the response." )
4341        protected IdType responseId;
4342
4343        /**
4344         * The id of the fixture used as the body of a PUT or POST request.
4345         */
4346        @Child(name = "sourceId", type = {IdType.class}, order=15, min=0, max=1, modifier=false, summary=false)
4347        @Description(shortDefinition="Fixture Id of body for PUT and POST requests", formalDefinition="The id of the fixture used as the body of a PUT or POST request." )
4348        protected IdType sourceId;
4349
4350        /**
4351         * Id of fixture used for extracting the [id],  [type], and [vid] for GET requests.
4352         */
4353        @Child(name = "targetId", type = {IdType.class}, order=16, min=0, max=1, modifier=false, summary=false)
4354        @Description(shortDefinition="Id of fixture used for extracting the [id],  [type], and [vid] for GET requests", formalDefinition="Id of fixture used for extracting the [id],  [type], and [vid] for GET requests." )
4355        protected IdType targetId;
4356
4357        /**
4358         * Complete request URL.
4359         */
4360        @Child(name = "url", type = {StringType.class}, order=17, min=0, max=1, modifier=false, summary=false)
4361        @Description(shortDefinition="Request URL", formalDefinition="Complete request URL." )
4362        protected StringType url;
4363
4364        private static final long serialVersionUID = 308704897L;
4365
4366    /**
4367     * Constructor
4368     */
4369      public SetupActionOperationComponent() {
4370        super();
4371      }
4372
4373    /**
4374     * Constructor
4375     */
4376      public SetupActionOperationComponent(boolean encodeRequestUrl) {
4377        super();
4378        this.setEncodeRequestUrl(encodeRequestUrl);
4379      }
4380
4381        /**
4382         * @return {@link #type} (Server interaction or operation type.)
4383         */
4384        public Coding getType() { 
4385          if (this.type == null)
4386            if (Configuration.errorOnAutoCreate())
4387              throw new Error("Attempt to auto-create SetupActionOperationComponent.type");
4388            else if (Configuration.doAutoCreate())
4389              this.type = new Coding(); // cc
4390          return this.type;
4391        }
4392
4393        public boolean hasType() { 
4394          return this.type != null && !this.type.isEmpty();
4395        }
4396
4397        /**
4398         * @param value {@link #type} (Server interaction or operation type.)
4399         */
4400        public SetupActionOperationComponent setType(Coding value) { 
4401          this.type = value;
4402          return this;
4403        }
4404
4405        /**
4406         * @return {@link #resource} (The type of the FHIR resource. See the [resource list](resourcelist.html). Data type of uri is needed when non-HL7 artifacts are identified.). This is the underlying object with id, value and extensions. The accessor "getResource" gives direct access to the value
4407         */
4408        public UriType getResourceElement() { 
4409          if (this.resource == null)
4410            if (Configuration.errorOnAutoCreate())
4411              throw new Error("Attempt to auto-create SetupActionOperationComponent.resource");
4412            else if (Configuration.doAutoCreate())
4413              this.resource = new UriType(); // bb
4414          return this.resource;
4415        }
4416
4417        public boolean hasResourceElement() { 
4418          return this.resource != null && !this.resource.isEmpty();
4419        }
4420
4421        public boolean hasResource() { 
4422          return this.resource != null && !this.resource.isEmpty();
4423        }
4424
4425        /**
4426         * @param value {@link #resource} (The type of the FHIR resource. See the [resource list](resourcelist.html). Data type of uri is needed when non-HL7 artifacts are identified.). This is the underlying object with id, value and extensions. The accessor "getResource" gives direct access to the value
4427         */
4428        public SetupActionOperationComponent setResourceElement(UriType value) { 
4429          this.resource = value;
4430          return this;
4431        }
4432
4433        /**
4434         * @return The type of the FHIR resource. See the [resource list](resourcelist.html). Data type of uri is needed when non-HL7 artifacts are identified.
4435         */
4436        public String getResource() { 
4437          return this.resource == null ? null : this.resource.getValue();
4438        }
4439
4440        /**
4441         * @param value The type of the FHIR resource. See the [resource list](resourcelist.html). Data type of uri is needed when non-HL7 artifacts are identified.
4442         */
4443        public SetupActionOperationComponent setResource(String value) { 
4444          if (Utilities.noString(value))
4445            this.resource = null;
4446          else {
4447            if (this.resource == null)
4448              this.resource = new UriType();
4449            this.resource.setValue(value);
4450          }
4451          return this;
4452        }
4453
4454        /**
4455         * @return {@link #label} (The label would be used for tracking/logging purposes by test engines.). This is the underlying object with id, value and extensions. The accessor "getLabel" gives direct access to the value
4456         */
4457        public StringType getLabelElement() { 
4458          if (this.label == null)
4459            if (Configuration.errorOnAutoCreate())
4460              throw new Error("Attempt to auto-create SetupActionOperationComponent.label");
4461            else if (Configuration.doAutoCreate())
4462              this.label = new StringType(); // bb
4463          return this.label;
4464        }
4465
4466        public boolean hasLabelElement() { 
4467          return this.label != null && !this.label.isEmpty();
4468        }
4469
4470        public boolean hasLabel() { 
4471          return this.label != null && !this.label.isEmpty();
4472        }
4473
4474        /**
4475         * @param value {@link #label} (The label would be used for tracking/logging purposes by test engines.). This is the underlying object with id, value and extensions. The accessor "getLabel" gives direct access to the value
4476         */
4477        public SetupActionOperationComponent setLabelElement(StringType value) { 
4478          this.label = value;
4479          return this;
4480        }
4481
4482        /**
4483         * @return The label would be used for tracking/logging purposes by test engines.
4484         */
4485        public String getLabel() { 
4486          return this.label == null ? null : this.label.getValue();
4487        }
4488
4489        /**
4490         * @param value The label would be used for tracking/logging purposes by test engines.
4491         */
4492        public SetupActionOperationComponent setLabel(String value) { 
4493          if (Utilities.noString(value))
4494            this.label = null;
4495          else {
4496            if (this.label == null)
4497              this.label = new StringType();
4498            this.label.setValue(value);
4499          }
4500          return this;
4501        }
4502
4503        /**
4504         * @return {@link #description} (The description would be used by test engines for tracking and reporting purposes.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
4505         */
4506        public StringType getDescriptionElement() { 
4507          if (this.description == null)
4508            if (Configuration.errorOnAutoCreate())
4509              throw new Error("Attempt to auto-create SetupActionOperationComponent.description");
4510            else if (Configuration.doAutoCreate())
4511              this.description = new StringType(); // bb
4512          return this.description;
4513        }
4514
4515        public boolean hasDescriptionElement() { 
4516          return this.description != null && !this.description.isEmpty();
4517        }
4518
4519        public boolean hasDescription() { 
4520          return this.description != null && !this.description.isEmpty();
4521        }
4522
4523        /**
4524         * @param value {@link #description} (The description would be used by test engines for tracking and reporting purposes.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
4525         */
4526        public SetupActionOperationComponent setDescriptionElement(StringType value) { 
4527          this.description = value;
4528          return this;
4529        }
4530
4531        /**
4532         * @return The description would be used by test engines for tracking and reporting purposes.
4533         */
4534        public String getDescription() { 
4535          return this.description == null ? null : this.description.getValue();
4536        }
4537
4538        /**
4539         * @param value The description would be used by test engines for tracking and reporting purposes.
4540         */
4541        public SetupActionOperationComponent setDescription(String value) { 
4542          if (Utilities.noString(value))
4543            this.description = null;
4544          else {
4545            if (this.description == null)
4546              this.description = new StringType();
4547            this.description.setValue(value);
4548          }
4549          return this;
4550        }
4551
4552        /**
4553         * @return {@link #accept} (The mime-type to use for RESTful operation in the 'Accept' header.). This is the underlying object with id, value and extensions. The accessor "getAccept" gives direct access to the value
4554         */
4555        public CodeType getAcceptElement() { 
4556          if (this.accept == null)
4557            if (Configuration.errorOnAutoCreate())
4558              throw new Error("Attempt to auto-create SetupActionOperationComponent.accept");
4559            else if (Configuration.doAutoCreate())
4560              this.accept = new CodeType(); // bb
4561          return this.accept;
4562        }
4563
4564        public boolean hasAcceptElement() { 
4565          return this.accept != null && !this.accept.isEmpty();
4566        }
4567
4568        public boolean hasAccept() { 
4569          return this.accept != null && !this.accept.isEmpty();
4570        }
4571
4572        /**
4573         * @param value {@link #accept} (The mime-type to use for RESTful operation in the 'Accept' header.). This is the underlying object with id, value and extensions. The accessor "getAccept" gives direct access to the value
4574         */
4575        public SetupActionOperationComponent setAcceptElement(CodeType value) { 
4576          this.accept = value;
4577          return this;
4578        }
4579
4580        /**
4581         * @return The mime-type to use for RESTful operation in the 'Accept' header.
4582         */
4583        public String getAccept() { 
4584          return this.accept == null ? null : this.accept.getValue();
4585        }
4586
4587        /**
4588         * @param value The mime-type to use for RESTful operation in the 'Accept' header.
4589         */
4590        public SetupActionOperationComponent setAccept(String value) { 
4591          if (Utilities.noString(value))
4592            this.accept = null;
4593          else {
4594            if (this.accept == null)
4595              this.accept = new CodeType();
4596            this.accept.setValue(value);
4597          }
4598          return this;
4599        }
4600
4601        /**
4602         * @return {@link #contentType} (The mime-type to use for RESTful operation in the 'Content-Type' header.). This is the underlying object with id, value and extensions. The accessor "getContentType" gives direct access to the value
4603         */
4604        public CodeType getContentTypeElement() { 
4605          if (this.contentType == null)
4606            if (Configuration.errorOnAutoCreate())
4607              throw new Error("Attempt to auto-create SetupActionOperationComponent.contentType");
4608            else if (Configuration.doAutoCreate())
4609              this.contentType = new CodeType(); // bb
4610          return this.contentType;
4611        }
4612
4613        public boolean hasContentTypeElement() { 
4614          return this.contentType != null && !this.contentType.isEmpty();
4615        }
4616
4617        public boolean hasContentType() { 
4618          return this.contentType != null && !this.contentType.isEmpty();
4619        }
4620
4621        /**
4622         * @param value {@link #contentType} (The mime-type to use for RESTful operation in the 'Content-Type' header.). This is the underlying object with id, value and extensions. The accessor "getContentType" gives direct access to the value
4623         */
4624        public SetupActionOperationComponent setContentTypeElement(CodeType value) { 
4625          this.contentType = value;
4626          return this;
4627        }
4628
4629        /**
4630         * @return The mime-type to use for RESTful operation in the 'Content-Type' header.
4631         */
4632        public String getContentType() { 
4633          return this.contentType == null ? null : this.contentType.getValue();
4634        }
4635
4636        /**
4637         * @param value The mime-type to use for RESTful operation in the 'Content-Type' header.
4638         */
4639        public SetupActionOperationComponent setContentType(String value) { 
4640          if (Utilities.noString(value))
4641            this.contentType = null;
4642          else {
4643            if (this.contentType == null)
4644              this.contentType = new CodeType();
4645            this.contentType.setValue(value);
4646          }
4647          return this;
4648        }
4649
4650        /**
4651         * @return {@link #destination} (The server where the request message is destined for.  Must be one of the server numbers listed in TestScript.destination section.). This is the underlying object with id, value and extensions. The accessor "getDestination" gives direct access to the value
4652         */
4653        public IntegerType getDestinationElement() { 
4654          if (this.destination == null)
4655            if (Configuration.errorOnAutoCreate())
4656              throw new Error("Attempt to auto-create SetupActionOperationComponent.destination");
4657            else if (Configuration.doAutoCreate())
4658              this.destination = new IntegerType(); // bb
4659          return this.destination;
4660        }
4661
4662        public boolean hasDestinationElement() { 
4663          return this.destination != null && !this.destination.isEmpty();
4664        }
4665
4666        public boolean hasDestination() { 
4667          return this.destination != null && !this.destination.isEmpty();
4668        }
4669
4670        /**
4671         * @param value {@link #destination} (The server where the request message is destined for.  Must be one of the server numbers listed in TestScript.destination section.). This is the underlying object with id, value and extensions. The accessor "getDestination" gives direct access to the value
4672         */
4673        public SetupActionOperationComponent setDestinationElement(IntegerType value) { 
4674          this.destination = value;
4675          return this;
4676        }
4677
4678        /**
4679         * @return The server where the request message is destined for.  Must be one of the server numbers listed in TestScript.destination section.
4680         */
4681        public int getDestination() { 
4682          return this.destination == null || this.destination.isEmpty() ? 0 : this.destination.getValue();
4683        }
4684
4685        /**
4686         * @param value The server where the request message is destined for.  Must be one of the server numbers listed in TestScript.destination section.
4687         */
4688        public SetupActionOperationComponent setDestination(int value) { 
4689            if (this.destination == null)
4690              this.destination = new IntegerType();
4691            this.destination.setValue(value);
4692          return this;
4693        }
4694
4695        /**
4696         * @return {@link #encodeRequestUrl} (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.). This is the underlying object with id, value and extensions. The accessor "getEncodeRequestUrl" gives direct access to the value
4697         */
4698        public BooleanType getEncodeRequestUrlElement() { 
4699          if (this.encodeRequestUrl == null)
4700            if (Configuration.errorOnAutoCreate())
4701              throw new Error("Attempt to auto-create SetupActionOperationComponent.encodeRequestUrl");
4702            else if (Configuration.doAutoCreate())
4703              this.encodeRequestUrl = new BooleanType(); // bb
4704          return this.encodeRequestUrl;
4705        }
4706
4707        public boolean hasEncodeRequestUrlElement() { 
4708          return this.encodeRequestUrl != null && !this.encodeRequestUrl.isEmpty();
4709        }
4710
4711        public boolean hasEncodeRequestUrl() { 
4712          return this.encodeRequestUrl != null && !this.encodeRequestUrl.isEmpty();
4713        }
4714
4715        /**
4716         * @param value {@link #encodeRequestUrl} (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.). This is the underlying object with id, value and extensions. The accessor "getEncodeRequestUrl" gives direct access to the value
4717         */
4718        public SetupActionOperationComponent setEncodeRequestUrlElement(BooleanType value) { 
4719          this.encodeRequestUrl = value;
4720          return this;
4721        }
4722
4723        /**
4724         * @return 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.
4725         */
4726        public boolean getEncodeRequestUrl() { 
4727          return this.encodeRequestUrl == null || this.encodeRequestUrl.isEmpty() ? false : this.encodeRequestUrl.getValue();
4728        }
4729
4730        /**
4731         * @param value 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.
4732         */
4733        public SetupActionOperationComponent setEncodeRequestUrl(boolean value) { 
4734            if (this.encodeRequestUrl == null)
4735              this.encodeRequestUrl = new BooleanType();
4736            this.encodeRequestUrl.setValue(value);
4737          return this;
4738        }
4739
4740        /**
4741         * @return {@link #method} (The HTTP method the test engine MUST use for this operation regardless of any other operation details.). This is the underlying object with id, value and extensions. The accessor "getMethod" gives direct access to the value
4742         */
4743        public Enumeration<TestScriptRequestMethodCode> getMethodElement() { 
4744          if (this.method == null)
4745            if (Configuration.errorOnAutoCreate())
4746              throw new Error("Attempt to auto-create SetupActionOperationComponent.method");
4747            else if (Configuration.doAutoCreate())
4748              this.method = new Enumeration<TestScriptRequestMethodCode>(new TestScriptRequestMethodCodeEnumFactory()); // bb
4749          return this.method;
4750        }
4751
4752        public boolean hasMethodElement() { 
4753          return this.method != null && !this.method.isEmpty();
4754        }
4755
4756        public boolean hasMethod() { 
4757          return this.method != null && !this.method.isEmpty();
4758        }
4759
4760        /**
4761         * @param value {@link #method} (The HTTP method the test engine MUST use for this operation regardless of any other operation details.). This is the underlying object with id, value and extensions. The accessor "getMethod" gives direct access to the value
4762         */
4763        public SetupActionOperationComponent setMethodElement(Enumeration<TestScriptRequestMethodCode> value) { 
4764          this.method = value;
4765          return this;
4766        }
4767
4768        /**
4769         * @return The HTTP method the test engine MUST use for this operation regardless of any other operation details.
4770         */
4771        public TestScriptRequestMethodCode getMethod() { 
4772          return this.method == null ? null : this.method.getValue();
4773        }
4774
4775        /**
4776         * @param value The HTTP method the test engine MUST use for this operation regardless of any other operation details.
4777         */
4778        public SetupActionOperationComponent setMethod(TestScriptRequestMethodCode value) { 
4779          if (value == null)
4780            this.method = null;
4781          else {
4782            if (this.method == null)
4783              this.method = new Enumeration<TestScriptRequestMethodCode>(new TestScriptRequestMethodCodeEnumFactory());
4784            this.method.setValue(value);
4785          }
4786          return this;
4787        }
4788
4789        /**
4790         * @return {@link #origin} (The server where the request message originates from.  Must be one of the server numbers listed in TestScript.origin section.). This is the underlying object with id, value and extensions. The accessor "getOrigin" gives direct access to the value
4791         */
4792        public IntegerType getOriginElement() { 
4793          if (this.origin == null)
4794            if (Configuration.errorOnAutoCreate())
4795              throw new Error("Attempt to auto-create SetupActionOperationComponent.origin");
4796            else if (Configuration.doAutoCreate())
4797              this.origin = new IntegerType(); // bb
4798          return this.origin;
4799        }
4800
4801        public boolean hasOriginElement() { 
4802          return this.origin != null && !this.origin.isEmpty();
4803        }
4804
4805        public boolean hasOrigin() { 
4806          return this.origin != null && !this.origin.isEmpty();
4807        }
4808
4809        /**
4810         * @param value {@link #origin} (The server where the request message originates from.  Must be one of the server numbers listed in TestScript.origin section.). This is the underlying object with id, value and extensions. The accessor "getOrigin" gives direct access to the value
4811         */
4812        public SetupActionOperationComponent setOriginElement(IntegerType value) { 
4813          this.origin = value;
4814          return this;
4815        }
4816
4817        /**
4818         * @return The server where the request message originates from.  Must be one of the server numbers listed in TestScript.origin section.
4819         */
4820        public int getOrigin() { 
4821          return this.origin == null || this.origin.isEmpty() ? 0 : this.origin.getValue();
4822        }
4823
4824        /**
4825         * @param value The server where the request message originates from.  Must be one of the server numbers listed in TestScript.origin section.
4826         */
4827        public SetupActionOperationComponent setOrigin(int value) { 
4828            if (this.origin == null)
4829              this.origin = new IntegerType();
4830            this.origin.setValue(value);
4831          return this;
4832        }
4833
4834        /**
4835         * @return {@link #params} (Path plus parameters after [type].  Used to set parts of the request URL explicitly.). This is the underlying object with id, value and extensions. The accessor "getParams" gives direct access to the value
4836         */
4837        public StringType getParamsElement() { 
4838          if (this.params == null)
4839            if (Configuration.errorOnAutoCreate())
4840              throw new Error("Attempt to auto-create SetupActionOperationComponent.params");
4841            else if (Configuration.doAutoCreate())
4842              this.params = new StringType(); // bb
4843          return this.params;
4844        }
4845
4846        public boolean hasParamsElement() { 
4847          return this.params != null && !this.params.isEmpty();
4848        }
4849
4850        public boolean hasParams() { 
4851          return this.params != null && !this.params.isEmpty();
4852        }
4853
4854        /**
4855         * @param value {@link #params} (Path plus parameters after [type].  Used to set parts of the request URL explicitly.). This is the underlying object with id, value and extensions. The accessor "getParams" gives direct access to the value
4856         */
4857        public SetupActionOperationComponent setParamsElement(StringType value) { 
4858          this.params = value;
4859          return this;
4860        }
4861
4862        /**
4863         * @return Path plus parameters after [type].  Used to set parts of the request URL explicitly.
4864         */
4865        public String getParams() { 
4866          return this.params == null ? null : this.params.getValue();
4867        }
4868
4869        /**
4870         * @param value Path plus parameters after [type].  Used to set parts of the request URL explicitly.
4871         */
4872        public SetupActionOperationComponent setParams(String value) { 
4873          if (Utilities.noString(value))
4874            this.params = null;
4875          else {
4876            if (this.params == null)
4877              this.params = new StringType();
4878            this.params.setValue(value);
4879          }
4880          return this;
4881        }
4882
4883        /**
4884         * @return {@link #requestHeader} (Header elements would be used to set HTTP headers.)
4885         */
4886        public List<SetupActionOperationRequestHeaderComponent> getRequestHeader() { 
4887          if (this.requestHeader == null)
4888            this.requestHeader = new ArrayList<SetupActionOperationRequestHeaderComponent>();
4889          return this.requestHeader;
4890        }
4891
4892        /**
4893         * @return Returns a reference to <code>this</code> for easy method chaining
4894         */
4895        public SetupActionOperationComponent setRequestHeader(List<SetupActionOperationRequestHeaderComponent> theRequestHeader) { 
4896          this.requestHeader = theRequestHeader;
4897          return this;
4898        }
4899
4900        public boolean hasRequestHeader() { 
4901          if (this.requestHeader == null)
4902            return false;
4903          for (SetupActionOperationRequestHeaderComponent item : this.requestHeader)
4904            if (!item.isEmpty())
4905              return true;
4906          return false;
4907        }
4908
4909        public SetupActionOperationRequestHeaderComponent addRequestHeader() { //3
4910          SetupActionOperationRequestHeaderComponent t = new SetupActionOperationRequestHeaderComponent();
4911          if (this.requestHeader == null)
4912            this.requestHeader = new ArrayList<SetupActionOperationRequestHeaderComponent>();
4913          this.requestHeader.add(t);
4914          return t;
4915        }
4916
4917        public SetupActionOperationComponent addRequestHeader(SetupActionOperationRequestHeaderComponent t) { //3
4918          if (t == null)
4919            return this;
4920          if (this.requestHeader == null)
4921            this.requestHeader = new ArrayList<SetupActionOperationRequestHeaderComponent>();
4922          this.requestHeader.add(t);
4923          return this;
4924        }
4925
4926        /**
4927         * @return The first repetition of repeating field {@link #requestHeader}, creating it if it does not already exist {3}
4928         */
4929        public SetupActionOperationRequestHeaderComponent getRequestHeaderFirstRep() { 
4930          if (getRequestHeader().isEmpty()) {
4931            addRequestHeader();
4932          }
4933          return getRequestHeader().get(0);
4934        }
4935
4936        /**
4937         * @return {@link #requestId} (The fixture id (maybe new) to map to the request.). This is the underlying object with id, value and extensions. The accessor "getRequestId" gives direct access to the value
4938         */
4939        public IdType getRequestIdElement() { 
4940          if (this.requestId == null)
4941            if (Configuration.errorOnAutoCreate())
4942              throw new Error("Attempt to auto-create SetupActionOperationComponent.requestId");
4943            else if (Configuration.doAutoCreate())
4944              this.requestId = new IdType(); // bb
4945          return this.requestId;
4946        }
4947
4948        public boolean hasRequestIdElement() { 
4949          return this.requestId != null && !this.requestId.isEmpty();
4950        }
4951
4952        public boolean hasRequestId() { 
4953          return this.requestId != null && !this.requestId.isEmpty();
4954        }
4955
4956        /**
4957         * @param value {@link #requestId} (The fixture id (maybe new) to map to the request.). This is the underlying object with id, value and extensions. The accessor "getRequestId" gives direct access to the value
4958         */
4959        public SetupActionOperationComponent setRequestIdElement(IdType value) { 
4960          this.requestId = value;
4961          return this;
4962        }
4963
4964        /**
4965         * @return The fixture id (maybe new) to map to the request.
4966         */
4967        public String getRequestId() { 
4968          return this.requestId == null ? null : this.requestId.getValue();
4969        }
4970
4971        /**
4972         * @param value The fixture id (maybe new) to map to the request.
4973         */
4974        public SetupActionOperationComponent setRequestId(String value) { 
4975          if (Utilities.noString(value))
4976            this.requestId = null;
4977          else {
4978            if (this.requestId == null)
4979              this.requestId = new IdType();
4980            this.requestId.setValue(value);
4981          }
4982          return this;
4983        }
4984
4985        /**
4986         * @return {@link #responseId} (The fixture id (maybe new) to map to the response.). This is the underlying object with id, value and extensions. The accessor "getResponseId" gives direct access to the value
4987         */
4988        public IdType getResponseIdElement() { 
4989          if (this.responseId == null)
4990            if (Configuration.errorOnAutoCreate())
4991              throw new Error("Attempt to auto-create SetupActionOperationComponent.responseId");
4992            else if (Configuration.doAutoCreate())
4993              this.responseId = new IdType(); // bb
4994          return this.responseId;
4995        }
4996
4997        public boolean hasResponseIdElement() { 
4998          return this.responseId != null && !this.responseId.isEmpty();
4999        }
5000
5001        public boolean hasResponseId() { 
5002          return this.responseId != null && !this.responseId.isEmpty();
5003        }
5004
5005        /**
5006         * @param value {@link #responseId} (The fixture id (maybe new) to map to the response.). This is the underlying object with id, value and extensions. The accessor "getResponseId" gives direct access to the value
5007         */
5008        public SetupActionOperationComponent setResponseIdElement(IdType value) { 
5009          this.responseId = value;
5010          return this;
5011        }
5012
5013        /**
5014         * @return The fixture id (maybe new) to map to the response.
5015         */
5016        public String getResponseId() { 
5017          return this.responseId == null ? null : this.responseId.getValue();
5018        }
5019
5020        /**
5021         * @param value The fixture id (maybe new) to map to the response.
5022         */
5023        public SetupActionOperationComponent setResponseId(String value) { 
5024          if (Utilities.noString(value))
5025            this.responseId = null;
5026          else {
5027            if (this.responseId == null)
5028              this.responseId = new IdType();
5029            this.responseId.setValue(value);
5030          }
5031          return this;
5032        }
5033
5034        /**
5035         * @return {@link #sourceId} (The id of the fixture used as the body of a PUT or POST request.). This is the underlying object with id, value and extensions. The accessor "getSourceId" gives direct access to the value
5036         */
5037        public IdType getSourceIdElement() { 
5038          if (this.sourceId == null)
5039            if (Configuration.errorOnAutoCreate())
5040              throw new Error("Attempt to auto-create SetupActionOperationComponent.sourceId");
5041            else if (Configuration.doAutoCreate())
5042              this.sourceId = new IdType(); // bb
5043          return this.sourceId;
5044        }
5045
5046        public boolean hasSourceIdElement() { 
5047          return this.sourceId != null && !this.sourceId.isEmpty();
5048        }
5049
5050        public boolean hasSourceId() { 
5051          return this.sourceId != null && !this.sourceId.isEmpty();
5052        }
5053
5054        /**
5055         * @param value {@link #sourceId} (The id of the fixture used as the body of a PUT or POST request.). This is the underlying object with id, value and extensions. The accessor "getSourceId" gives direct access to the value
5056         */
5057        public SetupActionOperationComponent setSourceIdElement(IdType value) { 
5058          this.sourceId = value;
5059          return this;
5060        }
5061
5062        /**
5063         * @return The id of the fixture used as the body of a PUT or POST request.
5064         */
5065        public String getSourceId() { 
5066          return this.sourceId == null ? null : this.sourceId.getValue();
5067        }
5068
5069        /**
5070         * @param value The id of the fixture used as the body of a PUT or POST request.
5071         */
5072        public SetupActionOperationComponent setSourceId(String value) { 
5073          if (Utilities.noString(value))
5074            this.sourceId = null;
5075          else {
5076            if (this.sourceId == null)
5077              this.sourceId = new IdType();
5078            this.sourceId.setValue(value);
5079          }
5080          return this;
5081        }
5082
5083        /**
5084         * @return {@link #targetId} (Id of fixture used for extracting the [id],  [type], and [vid] for GET requests.). This is the underlying object with id, value and extensions. The accessor "getTargetId" gives direct access to the value
5085         */
5086        public IdType getTargetIdElement() { 
5087          if (this.targetId == null)
5088            if (Configuration.errorOnAutoCreate())
5089              throw new Error("Attempt to auto-create SetupActionOperationComponent.targetId");
5090            else if (Configuration.doAutoCreate())
5091              this.targetId = new IdType(); // bb
5092          return this.targetId;
5093        }
5094
5095        public boolean hasTargetIdElement() { 
5096          return this.targetId != null && !this.targetId.isEmpty();
5097        }
5098
5099        public boolean hasTargetId() { 
5100          return this.targetId != null && !this.targetId.isEmpty();
5101        }
5102
5103        /**
5104         * @param value {@link #targetId} (Id of fixture used for extracting the [id],  [type], and [vid] for GET requests.). This is the underlying object with id, value and extensions. The accessor "getTargetId" gives direct access to the value
5105         */
5106        public SetupActionOperationComponent setTargetIdElement(IdType value) { 
5107          this.targetId = value;
5108          return this;
5109        }
5110
5111        /**
5112         * @return Id of fixture used for extracting the [id],  [type], and [vid] for GET requests.
5113         */
5114        public String getTargetId() { 
5115          return this.targetId == null ? null : this.targetId.getValue();
5116        }
5117
5118        /**
5119         * @param value Id of fixture used for extracting the [id],  [type], and [vid] for GET requests.
5120         */
5121        public SetupActionOperationComponent setTargetId(String value) { 
5122          if (Utilities.noString(value))
5123            this.targetId = null;
5124          else {
5125            if (this.targetId == null)
5126              this.targetId = new IdType();
5127            this.targetId.setValue(value);
5128          }
5129          return this;
5130        }
5131
5132        /**
5133         * @return {@link #url} (Complete request URL.). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
5134         */
5135        public StringType getUrlElement() { 
5136          if (this.url == null)
5137            if (Configuration.errorOnAutoCreate())
5138              throw new Error("Attempt to auto-create SetupActionOperationComponent.url");
5139            else if (Configuration.doAutoCreate())
5140              this.url = new StringType(); // bb
5141          return this.url;
5142        }
5143
5144        public boolean hasUrlElement() { 
5145          return this.url != null && !this.url.isEmpty();
5146        }
5147
5148        public boolean hasUrl() { 
5149          return this.url != null && !this.url.isEmpty();
5150        }
5151
5152        /**
5153         * @param value {@link #url} (Complete request URL.). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
5154         */
5155        public SetupActionOperationComponent setUrlElement(StringType value) { 
5156          this.url = value;
5157          return this;
5158        }
5159
5160        /**
5161         * @return Complete request URL.
5162         */
5163        public String getUrl() { 
5164          return this.url == null ? null : this.url.getValue();
5165        }
5166
5167        /**
5168         * @param value Complete request URL.
5169         */
5170        public SetupActionOperationComponent setUrl(String value) { 
5171          if (Utilities.noString(value))
5172            this.url = null;
5173          else {
5174            if (this.url == null)
5175              this.url = new StringType();
5176            this.url.setValue(value);
5177          }
5178          return this;
5179        }
5180
5181        protected void listChildren(List<Property> children) {
5182          super.listChildren(children);
5183          children.add(new Property("type", "Coding", "Server interaction or operation type.", 0, 1, type));
5184          children.add(new Property("resource", "uri", "The type of the FHIR resource. See the [resource list](resourcelist.html). Data type of uri is needed when non-HL7 artifacts are identified.", 0, 1, resource));
5185          children.add(new Property("label", "string", "The label would be used for tracking/logging purposes by test engines.", 0, 1, label));
5186          children.add(new Property("description", "string", "The description would be used by test engines for tracking and reporting purposes.", 0, 1, description));
5187          children.add(new Property("accept", "code", "The mime-type to use for RESTful operation in the 'Accept' header.", 0, 1, accept));
5188          children.add(new Property("contentType", "code", "The mime-type to use for RESTful operation in the 'Content-Type' header.", 0, 1, contentType));
5189          children.add(new Property("destination", "integer", "The server where the request message is destined for.  Must be one of the server numbers listed in TestScript.destination section.", 0, 1, destination));
5190          children.add(new Property("encodeRequestUrl", "boolean", "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.", 0, 1, encodeRequestUrl));
5191          children.add(new Property("method", "code", "The HTTP method the test engine MUST use for this operation regardless of any other operation details.", 0, 1, method));
5192          children.add(new Property("origin", "integer", "The server where the request message originates from.  Must be one of the server numbers listed in TestScript.origin section.", 0, 1, origin));
5193          children.add(new Property("params", "string", "Path plus parameters after [type].  Used to set parts of the request URL explicitly.", 0, 1, params));
5194          children.add(new Property("requestHeader", "", "Header elements would be used to set HTTP headers.", 0, java.lang.Integer.MAX_VALUE, requestHeader));
5195          children.add(new Property("requestId", "id", "The fixture id (maybe new) to map to the request.", 0, 1, requestId));
5196          children.add(new Property("responseId", "id", "The fixture id (maybe new) to map to the response.", 0, 1, responseId));
5197          children.add(new Property("sourceId", "id", "The id of the fixture used as the body of a PUT or POST request.", 0, 1, sourceId));
5198          children.add(new Property("targetId", "id", "Id of fixture used for extracting the [id],  [type], and [vid] for GET requests.", 0, 1, targetId));
5199          children.add(new Property("url", "string", "Complete request URL.", 0, 1, url));
5200        }
5201
5202        @Override
5203        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
5204          switch (_hash) {
5205          case 3575610: /*type*/  return new Property("type", "Coding", "Server interaction or operation type.", 0, 1, type);
5206          case -341064690: /*resource*/  return new Property("resource", "uri", "The type of the FHIR resource. See the [resource list](resourcelist.html). Data type of uri is needed when non-HL7 artifacts are identified.", 0, 1, resource);
5207          case 102727412: /*label*/  return new Property("label", "string", "The label would be used for tracking/logging purposes by test engines.", 0, 1, label);
5208          case -1724546052: /*description*/  return new Property("description", "string", "The description would be used by test engines for tracking and reporting purposes.", 0, 1, description);
5209          case -1423461112: /*accept*/  return new Property("accept", "code", "The mime-type to use for RESTful operation in the 'Accept' header.", 0, 1, accept);
5210          case -389131437: /*contentType*/  return new Property("contentType", "code", "The mime-type to use for RESTful operation in the 'Content-Type' header.", 0, 1, contentType);
5211          case -1429847026: /*destination*/  return new Property("destination", "integer", "The server where the request message is destined for.  Must be one of the server numbers listed in TestScript.destination section.", 0, 1, destination);
5212          case -1760554218: /*encodeRequestUrl*/  return new Property("encodeRequestUrl", "boolean", "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.", 0, 1, encodeRequestUrl);
5213          case -1077554975: /*method*/  return new Property("method", "code", "The HTTP method the test engine MUST use for this operation regardless of any other operation details.", 0, 1, method);
5214          case -1008619738: /*origin*/  return new Property("origin", "integer", "The server where the request message originates from.  Must be one of the server numbers listed in TestScript.origin section.", 0, 1, origin);
5215          case -995427962: /*params*/  return new Property("params", "string", "Path plus parameters after [type].  Used to set parts of the request URL explicitly.", 0, 1, params);
5216          case 1074158076: /*requestHeader*/  return new Property("requestHeader", "", "Header elements would be used to set HTTP headers.", 0, java.lang.Integer.MAX_VALUE, requestHeader);
5217          case 693933066: /*requestId*/  return new Property("requestId", "id", "The fixture id (maybe new) to map to the request.", 0, 1, requestId);
5218          case -633138884: /*responseId*/  return new Property("responseId", "id", "The fixture id (maybe new) to map to the response.", 0, 1, responseId);
5219          case 1746327190: /*sourceId*/  return new Property("sourceId", "id", "The id of the fixture used as the body of a PUT or POST request.", 0, 1, sourceId);
5220          case -441951604: /*targetId*/  return new Property("targetId", "id", "Id of fixture used for extracting the [id],  [type], and [vid] for GET requests.", 0, 1, targetId);
5221          case 116079: /*url*/  return new Property("url", "string", "Complete request URL.", 0, 1, url);
5222          default: return super.getNamedProperty(_hash, _name, _checkValid);
5223          }
5224
5225        }
5226
5227      @Override
5228      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
5229        switch (hash) {
5230        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // Coding
5231        case -341064690: /*resource*/ return this.resource == null ? new Base[0] : new Base[] {this.resource}; // UriType
5232        case 102727412: /*label*/ return this.label == null ? new Base[0] : new Base[] {this.label}; // StringType
5233        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // StringType
5234        case -1423461112: /*accept*/ return this.accept == null ? new Base[0] : new Base[] {this.accept}; // CodeType
5235        case -389131437: /*contentType*/ return this.contentType == null ? new Base[0] : new Base[] {this.contentType}; // CodeType
5236        case -1429847026: /*destination*/ return this.destination == null ? new Base[0] : new Base[] {this.destination}; // IntegerType
5237        case -1760554218: /*encodeRequestUrl*/ return this.encodeRequestUrl == null ? new Base[0] : new Base[] {this.encodeRequestUrl}; // BooleanType
5238        case -1077554975: /*method*/ return this.method == null ? new Base[0] : new Base[] {this.method}; // Enumeration<TestScriptRequestMethodCode>
5239        case -1008619738: /*origin*/ return this.origin == null ? new Base[0] : new Base[] {this.origin}; // IntegerType
5240        case -995427962: /*params*/ return this.params == null ? new Base[0] : new Base[] {this.params}; // StringType
5241        case 1074158076: /*requestHeader*/ return this.requestHeader == null ? new Base[0] : this.requestHeader.toArray(new Base[this.requestHeader.size()]); // SetupActionOperationRequestHeaderComponent
5242        case 693933066: /*requestId*/ return this.requestId == null ? new Base[0] : new Base[] {this.requestId}; // IdType
5243        case -633138884: /*responseId*/ return this.responseId == null ? new Base[0] : new Base[] {this.responseId}; // IdType
5244        case 1746327190: /*sourceId*/ return this.sourceId == null ? new Base[0] : new Base[] {this.sourceId}; // IdType
5245        case -441951604: /*targetId*/ return this.targetId == null ? new Base[0] : new Base[] {this.targetId}; // IdType
5246        case 116079: /*url*/ return this.url == null ? new Base[0] : new Base[] {this.url}; // StringType
5247        default: return super.getProperty(hash, name, checkValid);
5248        }
5249
5250      }
5251
5252      @Override
5253      public Base setProperty(int hash, String name, Base value) throws FHIRException {
5254        switch (hash) {
5255        case 3575610: // type
5256          this.type = TypeConvertor.castToCoding(value); // Coding
5257          return value;
5258        case -341064690: // resource
5259          this.resource = TypeConvertor.castToUri(value); // UriType
5260          return value;
5261        case 102727412: // label
5262          this.label = TypeConvertor.castToString(value); // StringType
5263          return value;
5264        case -1724546052: // description
5265          this.description = TypeConvertor.castToString(value); // StringType
5266          return value;
5267        case -1423461112: // accept
5268          this.accept = TypeConvertor.castToCode(value); // CodeType
5269          return value;
5270        case -389131437: // contentType
5271          this.contentType = TypeConvertor.castToCode(value); // CodeType
5272          return value;
5273        case -1429847026: // destination
5274          this.destination = TypeConvertor.castToInteger(value); // IntegerType
5275          return value;
5276        case -1760554218: // encodeRequestUrl
5277          this.encodeRequestUrl = TypeConvertor.castToBoolean(value); // BooleanType
5278          return value;
5279        case -1077554975: // method
5280          value = new TestScriptRequestMethodCodeEnumFactory().fromType(TypeConvertor.castToCode(value));
5281          this.method = (Enumeration) value; // Enumeration<TestScriptRequestMethodCode>
5282          return value;
5283        case -1008619738: // origin
5284          this.origin = TypeConvertor.castToInteger(value); // IntegerType
5285          return value;
5286        case -995427962: // params
5287          this.params = TypeConvertor.castToString(value); // StringType
5288          return value;
5289        case 1074158076: // requestHeader
5290          this.getRequestHeader().add((SetupActionOperationRequestHeaderComponent) value); // SetupActionOperationRequestHeaderComponent
5291          return value;
5292        case 693933066: // requestId
5293          this.requestId = TypeConvertor.castToId(value); // IdType
5294          return value;
5295        case -633138884: // responseId
5296          this.responseId = TypeConvertor.castToId(value); // IdType
5297          return value;
5298        case 1746327190: // sourceId
5299          this.sourceId = TypeConvertor.castToId(value); // IdType
5300          return value;
5301        case -441951604: // targetId
5302          this.targetId = TypeConvertor.castToId(value); // IdType
5303          return value;
5304        case 116079: // url
5305          this.url = TypeConvertor.castToString(value); // StringType
5306          return value;
5307        default: return super.setProperty(hash, name, value);
5308        }
5309
5310      }
5311
5312      @Override
5313      public Base setProperty(String name, Base value) throws FHIRException {
5314        if (name.equals("type")) {
5315          this.type = TypeConvertor.castToCoding(value); // Coding
5316        } else if (name.equals("resource")) {
5317          this.resource = TypeConvertor.castToUri(value); // UriType
5318        } else if (name.equals("label")) {
5319          this.label = TypeConvertor.castToString(value); // StringType
5320        } else if (name.equals("description")) {
5321          this.description = TypeConvertor.castToString(value); // StringType
5322        } else if (name.equals("accept")) {
5323          this.accept = TypeConvertor.castToCode(value); // CodeType
5324        } else if (name.equals("contentType")) {
5325          this.contentType = TypeConvertor.castToCode(value); // CodeType
5326        } else if (name.equals("destination")) {
5327          this.destination = TypeConvertor.castToInteger(value); // IntegerType
5328        } else if (name.equals("encodeRequestUrl")) {
5329          this.encodeRequestUrl = TypeConvertor.castToBoolean(value); // BooleanType
5330        } else if (name.equals("method")) {
5331          value = new TestScriptRequestMethodCodeEnumFactory().fromType(TypeConvertor.castToCode(value));
5332          this.method = (Enumeration) value; // Enumeration<TestScriptRequestMethodCode>
5333        } else if (name.equals("origin")) {
5334          this.origin = TypeConvertor.castToInteger(value); // IntegerType
5335        } else if (name.equals("params")) {
5336          this.params = TypeConvertor.castToString(value); // StringType
5337        } else if (name.equals("requestHeader")) {
5338          this.getRequestHeader().add((SetupActionOperationRequestHeaderComponent) value);
5339        } else if (name.equals("requestId")) {
5340          this.requestId = TypeConvertor.castToId(value); // IdType
5341        } else if (name.equals("responseId")) {
5342          this.responseId = TypeConvertor.castToId(value); // IdType
5343        } else if (name.equals("sourceId")) {
5344          this.sourceId = TypeConvertor.castToId(value); // IdType
5345        } else if (name.equals("targetId")) {
5346          this.targetId = TypeConvertor.castToId(value); // IdType
5347        } else if (name.equals("url")) {
5348          this.url = TypeConvertor.castToString(value); // StringType
5349        } else
5350          return super.setProperty(name, value);
5351        return value;
5352      }
5353
5354      @Override
5355      public Base makeProperty(int hash, String name) throws FHIRException {
5356        switch (hash) {
5357        case 3575610:  return getType();
5358        case -341064690:  return getResourceElement();
5359        case 102727412:  return getLabelElement();
5360        case -1724546052:  return getDescriptionElement();
5361        case -1423461112:  return getAcceptElement();
5362        case -389131437:  return getContentTypeElement();
5363        case -1429847026:  return getDestinationElement();
5364        case -1760554218:  return getEncodeRequestUrlElement();
5365        case -1077554975:  return getMethodElement();
5366        case -1008619738:  return getOriginElement();
5367        case -995427962:  return getParamsElement();
5368        case 1074158076:  return addRequestHeader(); 
5369        case 693933066:  return getRequestIdElement();
5370        case -633138884:  return getResponseIdElement();
5371        case 1746327190:  return getSourceIdElement();
5372        case -441951604:  return getTargetIdElement();
5373        case 116079:  return getUrlElement();
5374        default: return super.makeProperty(hash, name);
5375        }
5376
5377      }
5378
5379      @Override
5380      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
5381        switch (hash) {
5382        case 3575610: /*type*/ return new String[] {"Coding"};
5383        case -341064690: /*resource*/ return new String[] {"uri"};
5384        case 102727412: /*label*/ return new String[] {"string"};
5385        case -1724546052: /*description*/ return new String[] {"string"};
5386        case -1423461112: /*accept*/ return new String[] {"code"};
5387        case -389131437: /*contentType*/ return new String[] {"code"};
5388        case -1429847026: /*destination*/ return new String[] {"integer"};
5389        case -1760554218: /*encodeRequestUrl*/ return new String[] {"boolean"};
5390        case -1077554975: /*method*/ return new String[] {"code"};
5391        case -1008619738: /*origin*/ return new String[] {"integer"};
5392        case -995427962: /*params*/ return new String[] {"string"};
5393        case 1074158076: /*requestHeader*/ return new String[] {};
5394        case 693933066: /*requestId*/ return new String[] {"id"};
5395        case -633138884: /*responseId*/ return new String[] {"id"};
5396        case 1746327190: /*sourceId*/ return new String[] {"id"};
5397        case -441951604: /*targetId*/ return new String[] {"id"};
5398        case 116079: /*url*/ return new String[] {"string"};
5399        default: return super.getTypesForProperty(hash, name);
5400        }
5401
5402      }
5403
5404      @Override
5405      public Base addChild(String name) throws FHIRException {
5406        if (name.equals("type")) {
5407          this.type = new Coding();
5408          return this.type;
5409        }
5410        else if (name.equals("resource")) {
5411          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.operation.resource");
5412        }
5413        else if (name.equals("label")) {
5414          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.operation.label");
5415        }
5416        else if (name.equals("description")) {
5417          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.operation.description");
5418        }
5419        else if (name.equals("accept")) {
5420          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.operation.accept");
5421        }
5422        else if (name.equals("contentType")) {
5423          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.operation.contentType");
5424        }
5425        else if (name.equals("destination")) {
5426          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.operation.destination");
5427        }
5428        else if (name.equals("encodeRequestUrl")) {
5429          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.operation.encodeRequestUrl");
5430        }
5431        else if (name.equals("method")) {
5432          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.operation.method");
5433        }
5434        else if (name.equals("origin")) {
5435          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.operation.origin");
5436        }
5437        else if (name.equals("params")) {
5438          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.operation.params");
5439        }
5440        else if (name.equals("requestHeader")) {
5441          return addRequestHeader();
5442        }
5443        else if (name.equals("requestId")) {
5444          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.operation.requestId");
5445        }
5446        else if (name.equals("responseId")) {
5447          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.operation.responseId");
5448        }
5449        else if (name.equals("sourceId")) {
5450          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.operation.sourceId");
5451        }
5452        else if (name.equals("targetId")) {
5453          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.operation.targetId");
5454        }
5455        else if (name.equals("url")) {
5456          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.operation.url");
5457        }
5458        else
5459          return super.addChild(name);
5460      }
5461
5462      public SetupActionOperationComponent copy() {
5463        SetupActionOperationComponent dst = new SetupActionOperationComponent();
5464        copyValues(dst);
5465        return dst;
5466      }
5467
5468      public void copyValues(SetupActionOperationComponent dst) {
5469        super.copyValues(dst);
5470        dst.type = type == null ? null : type.copy();
5471        dst.resource = resource == null ? null : resource.copy();
5472        dst.label = label == null ? null : label.copy();
5473        dst.description = description == null ? null : description.copy();
5474        dst.accept = accept == null ? null : accept.copy();
5475        dst.contentType = contentType == null ? null : contentType.copy();
5476        dst.destination = destination == null ? null : destination.copy();
5477        dst.encodeRequestUrl = encodeRequestUrl == null ? null : encodeRequestUrl.copy();
5478        dst.method = method == null ? null : method.copy();
5479        dst.origin = origin == null ? null : origin.copy();
5480        dst.params = params == null ? null : params.copy();
5481        if (requestHeader != null) {
5482          dst.requestHeader = new ArrayList<SetupActionOperationRequestHeaderComponent>();
5483          for (SetupActionOperationRequestHeaderComponent i : requestHeader)
5484            dst.requestHeader.add(i.copy());
5485        };
5486        dst.requestId = requestId == null ? null : requestId.copy();
5487        dst.responseId = responseId == null ? null : responseId.copy();
5488        dst.sourceId = sourceId == null ? null : sourceId.copy();
5489        dst.targetId = targetId == null ? null : targetId.copy();
5490        dst.url = url == null ? null : url.copy();
5491      }
5492
5493      @Override
5494      public boolean equalsDeep(Base other_) {
5495        if (!super.equalsDeep(other_))
5496          return false;
5497        if (!(other_ instanceof SetupActionOperationComponent))
5498          return false;
5499        SetupActionOperationComponent o = (SetupActionOperationComponent) other_;
5500        return compareDeep(type, o.type, true) && compareDeep(resource, o.resource, true) && compareDeep(label, o.label, true)
5501           && compareDeep(description, o.description, true) && compareDeep(accept, o.accept, true) && compareDeep(contentType, o.contentType, true)
5502           && compareDeep(destination, o.destination, true) && compareDeep(encodeRequestUrl, o.encodeRequestUrl, true)
5503           && compareDeep(method, o.method, true) && compareDeep(origin, o.origin, true) && compareDeep(params, o.params, true)
5504           && compareDeep(requestHeader, o.requestHeader, true) && compareDeep(requestId, o.requestId, true)
5505           && compareDeep(responseId, o.responseId, true) && compareDeep(sourceId, o.sourceId, true) && compareDeep(targetId, o.targetId, true)
5506           && compareDeep(url, o.url, true);
5507      }
5508
5509      @Override
5510      public boolean equalsShallow(Base other_) {
5511        if (!super.equalsShallow(other_))
5512          return false;
5513        if (!(other_ instanceof SetupActionOperationComponent))
5514          return false;
5515        SetupActionOperationComponent o = (SetupActionOperationComponent) other_;
5516        return compareValues(resource, o.resource, true) && compareValues(label, o.label, true) && compareValues(description, o.description, true)
5517           && compareValues(accept, o.accept, true) && compareValues(contentType, o.contentType, true) && compareValues(destination, o.destination, true)
5518           && compareValues(encodeRequestUrl, o.encodeRequestUrl, true) && compareValues(method, o.method, true)
5519           && compareValues(origin, o.origin, true) && compareValues(params, o.params, true) && compareValues(requestId, o.requestId, true)
5520           && compareValues(responseId, o.responseId, true) && compareValues(sourceId, o.sourceId, true) && compareValues(targetId, o.targetId, true)
5521           && compareValues(url, o.url, true);
5522      }
5523
5524      public boolean isEmpty() {
5525        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(type, resource, label, description
5526          , accept, contentType, destination, encodeRequestUrl, method, origin, params, requestHeader
5527          , requestId, responseId, sourceId, targetId, url);
5528      }
5529
5530  public String fhirType() {
5531    return "TestScript.setup.action.operation";
5532
5533  }
5534
5535  }
5536
5537    @Block()
5538    public static class SetupActionOperationRequestHeaderComponent extends BackboneElement implements IBaseBackboneElement {
5539        /**
5540         * The HTTP header field e.g. "Accept".
5541         */
5542        @Child(name = "field", type = {StringType.class}, order=1, min=1, max=1, modifier=false, summary=false)
5543        @Description(shortDefinition="HTTP header field name", formalDefinition="The HTTP header field e.g. \"Accept\"." )
5544        protected StringType field;
5545
5546        /**
5547         * The value of the header e.g. "application/fhir+xml".
5548         */
5549        @Child(name = "value", type = {StringType.class}, order=2, min=1, max=1, modifier=false, summary=false)
5550        @Description(shortDefinition="HTTP headerfield value", formalDefinition="The value of the header e.g. \"application/fhir+xml\"." )
5551        protected StringType value;
5552
5553        private static final long serialVersionUID = 274395337L;
5554
5555    /**
5556     * Constructor
5557     */
5558      public SetupActionOperationRequestHeaderComponent() {
5559        super();
5560      }
5561
5562    /**
5563     * Constructor
5564     */
5565      public SetupActionOperationRequestHeaderComponent(String field, String value) {
5566        super();
5567        this.setField(field);
5568        this.setValue(value);
5569      }
5570
5571        /**
5572         * @return {@link #field} (The HTTP header field e.g. "Accept".). This is the underlying object with id, value and extensions. The accessor "getField" gives direct access to the value
5573         */
5574        public StringType getFieldElement() { 
5575          if (this.field == null)
5576            if (Configuration.errorOnAutoCreate())
5577              throw new Error("Attempt to auto-create SetupActionOperationRequestHeaderComponent.field");
5578            else if (Configuration.doAutoCreate())
5579              this.field = new StringType(); // bb
5580          return this.field;
5581        }
5582
5583        public boolean hasFieldElement() { 
5584          return this.field != null && !this.field.isEmpty();
5585        }
5586
5587        public boolean hasField() { 
5588          return this.field != null && !this.field.isEmpty();
5589        }
5590
5591        /**
5592         * @param value {@link #field} (The HTTP header field e.g. "Accept".). This is the underlying object with id, value and extensions. The accessor "getField" gives direct access to the value
5593         */
5594        public SetupActionOperationRequestHeaderComponent setFieldElement(StringType value) { 
5595          this.field = value;
5596          return this;
5597        }
5598
5599        /**
5600         * @return The HTTP header field e.g. "Accept".
5601         */
5602        public String getField() { 
5603          return this.field == null ? null : this.field.getValue();
5604        }
5605
5606        /**
5607         * @param value The HTTP header field e.g. "Accept".
5608         */
5609        public SetupActionOperationRequestHeaderComponent setField(String value) { 
5610            if (this.field == null)
5611              this.field = new StringType();
5612            this.field.setValue(value);
5613          return this;
5614        }
5615
5616        /**
5617         * @return {@link #value} (The value of the header e.g. "application/fhir+xml".). This is the underlying object with id, value and extensions. The accessor "getValue" gives direct access to the value
5618         */
5619        public StringType getValueElement() { 
5620          if (this.value == null)
5621            if (Configuration.errorOnAutoCreate())
5622              throw new Error("Attempt to auto-create SetupActionOperationRequestHeaderComponent.value");
5623            else if (Configuration.doAutoCreate())
5624              this.value = new StringType(); // bb
5625          return this.value;
5626        }
5627
5628        public boolean hasValueElement() { 
5629          return this.value != null && !this.value.isEmpty();
5630        }
5631
5632        public boolean hasValue() { 
5633          return this.value != null && !this.value.isEmpty();
5634        }
5635
5636        /**
5637         * @param value {@link #value} (The value of the header e.g. "application/fhir+xml".). This is the underlying object with id, value and extensions. The accessor "getValue" gives direct access to the value
5638         */
5639        public SetupActionOperationRequestHeaderComponent setValueElement(StringType value) { 
5640          this.value = value;
5641          return this;
5642        }
5643
5644        /**
5645         * @return The value of the header e.g. "application/fhir+xml".
5646         */
5647        public String getValue() { 
5648          return this.value == null ? null : this.value.getValue();
5649        }
5650
5651        /**
5652         * @param value The value of the header e.g. "application/fhir+xml".
5653         */
5654        public SetupActionOperationRequestHeaderComponent setValue(String value) { 
5655            if (this.value == null)
5656              this.value = new StringType();
5657            this.value.setValue(value);
5658          return this;
5659        }
5660
5661        protected void listChildren(List<Property> children) {
5662          super.listChildren(children);
5663          children.add(new Property("field", "string", "The HTTP header field e.g. \"Accept\".", 0, 1, field));
5664          children.add(new Property("value", "string", "The value of the header e.g. \"application/fhir+xml\".", 0, 1, value));
5665        }
5666
5667        @Override
5668        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
5669          switch (_hash) {
5670          case 97427706: /*field*/  return new Property("field", "string", "The HTTP header field e.g. \"Accept\".", 0, 1, field);
5671          case 111972721: /*value*/  return new Property("value", "string", "The value of the header e.g. \"application/fhir+xml\".", 0, 1, value);
5672          default: return super.getNamedProperty(_hash, _name, _checkValid);
5673          }
5674
5675        }
5676
5677      @Override
5678      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
5679        switch (hash) {
5680        case 97427706: /*field*/ return this.field == null ? new Base[0] : new Base[] {this.field}; // StringType
5681        case 111972721: /*value*/ return this.value == null ? new Base[0] : new Base[] {this.value}; // StringType
5682        default: return super.getProperty(hash, name, checkValid);
5683        }
5684
5685      }
5686
5687      @Override
5688      public Base setProperty(int hash, String name, Base value) throws FHIRException {
5689        switch (hash) {
5690        case 97427706: // field
5691          this.field = TypeConvertor.castToString(value); // StringType
5692          return value;
5693        case 111972721: // value
5694          this.value = TypeConvertor.castToString(value); // StringType
5695          return value;
5696        default: return super.setProperty(hash, name, value);
5697        }
5698
5699      }
5700
5701      @Override
5702      public Base setProperty(String name, Base value) throws FHIRException {
5703        if (name.equals("field")) {
5704          this.field = TypeConvertor.castToString(value); // StringType
5705        } else if (name.equals("value")) {
5706          this.value = TypeConvertor.castToString(value); // StringType
5707        } else
5708          return super.setProperty(name, value);
5709        return value;
5710      }
5711
5712      @Override
5713      public Base makeProperty(int hash, String name) throws FHIRException {
5714        switch (hash) {
5715        case 97427706:  return getFieldElement();
5716        case 111972721:  return getValueElement();
5717        default: return super.makeProperty(hash, name);
5718        }
5719
5720      }
5721
5722      @Override
5723      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
5724        switch (hash) {
5725        case 97427706: /*field*/ return new String[] {"string"};
5726        case 111972721: /*value*/ return new String[] {"string"};
5727        default: return super.getTypesForProperty(hash, name);
5728        }
5729
5730      }
5731
5732      @Override
5733      public Base addChild(String name) throws FHIRException {
5734        if (name.equals("field")) {
5735          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.operation.requestHeader.field");
5736        }
5737        else if (name.equals("value")) {
5738          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.operation.requestHeader.value");
5739        }
5740        else
5741          return super.addChild(name);
5742      }
5743
5744      public SetupActionOperationRequestHeaderComponent copy() {
5745        SetupActionOperationRequestHeaderComponent dst = new SetupActionOperationRequestHeaderComponent();
5746        copyValues(dst);
5747        return dst;
5748      }
5749
5750      public void copyValues(SetupActionOperationRequestHeaderComponent dst) {
5751        super.copyValues(dst);
5752        dst.field = field == null ? null : field.copy();
5753        dst.value = value == null ? null : value.copy();
5754      }
5755
5756      @Override
5757      public boolean equalsDeep(Base other_) {
5758        if (!super.equalsDeep(other_))
5759          return false;
5760        if (!(other_ instanceof SetupActionOperationRequestHeaderComponent))
5761          return false;
5762        SetupActionOperationRequestHeaderComponent o = (SetupActionOperationRequestHeaderComponent) other_;
5763        return compareDeep(field, o.field, true) && compareDeep(value, o.value, true);
5764      }
5765
5766      @Override
5767      public boolean equalsShallow(Base other_) {
5768        if (!super.equalsShallow(other_))
5769          return false;
5770        if (!(other_ instanceof SetupActionOperationRequestHeaderComponent))
5771          return false;
5772        SetupActionOperationRequestHeaderComponent o = (SetupActionOperationRequestHeaderComponent) other_;
5773        return compareValues(field, o.field, true) && compareValues(value, o.value, true);
5774      }
5775
5776      public boolean isEmpty() {
5777        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(field, value);
5778      }
5779
5780  public String fhirType() {
5781    return "TestScript.setup.action.operation.requestHeader";
5782
5783  }
5784
5785  }
5786
5787    @Block()
5788    public static class SetupActionAssertComponent extends BackboneElement implements IBaseBackboneElement {
5789        /**
5790         * The label would be used for tracking/logging purposes by test engines.
5791         */
5792        @Child(name = "label", type = {StringType.class}, order=1, min=0, max=1, modifier=false, summary=false)
5793        @Description(shortDefinition="Tracking/logging assertion label", formalDefinition="The label would be used for tracking/logging purposes by test engines." )
5794        protected StringType label;
5795
5796        /**
5797         * The description would be used by test engines for tracking and reporting purposes.
5798         */
5799        @Child(name = "description", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=false)
5800        @Description(shortDefinition="Tracking/reporting assertion description", formalDefinition="The description would be used by test engines for tracking and reporting purposes." )
5801        protected StringType description;
5802
5803        /**
5804         * The direction to use for the assertion.
5805         */
5806        @Child(name = "direction", type = {CodeType.class}, order=3, min=0, max=1, modifier=false, summary=false)
5807        @Description(shortDefinition="response | request", formalDefinition="The direction to use for the assertion." )
5808        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/assert-direction-codes")
5809        protected Enumeration<AssertionDirectionType> direction;
5810
5811        /**
5812         * Id of the source fixture used as the contents to be evaluated by either the "source/expression" or "sourceId/path" definition.
5813         */
5814        @Child(name = "compareToSourceId", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=false)
5815        @Description(shortDefinition="Id of the source fixture to be evaluated", formalDefinition="Id of the source fixture used as the contents to be evaluated by either the \"source/expression\" or \"sourceId/path\" definition." )
5816        protected StringType compareToSourceId;
5817
5818        /**
5819         * The FHIRPath expression to evaluate against the source fixture. When compareToSourceId is defined, either compareToSourceExpression or compareToSourcePath must be defined, but not both.
5820         */
5821        @Child(name = "compareToSourceExpression", type = {StringType.class}, order=5, min=0, max=1, modifier=false, summary=false)
5822        @Description(shortDefinition="The FHIRPath expression to evaluate against the source fixture", formalDefinition="The FHIRPath expression to evaluate against the source fixture. When compareToSourceId is defined, either compareToSourceExpression or compareToSourcePath must be defined, but not both." )
5823        protected StringType compareToSourceExpression;
5824
5825        /**
5826         * XPath or JSONPath expression to evaluate against the source fixture. When compareToSourceId is defined, either compareToSourceExpression or compareToSourcePath must be defined, but not both.
5827         */
5828        @Child(name = "compareToSourcePath", type = {StringType.class}, order=6, min=0, max=1, modifier=false, summary=false)
5829        @Description(shortDefinition="XPath or JSONPath expression to evaluate against the source fixture", formalDefinition="XPath or JSONPath expression to evaluate against the source fixture. When compareToSourceId is defined, either compareToSourceExpression or compareToSourcePath must be defined, but not both." )
5830        protected StringType compareToSourcePath;
5831
5832        /**
5833         * The mime-type contents to compare against the request or response message 'Content-Type' header.
5834         */
5835        @Child(name = "contentType", type = {CodeType.class}, order=7, min=0, max=1, modifier=false, summary=false)
5836        @Description(shortDefinition="Mime type to compare against the 'Content-Type' header", formalDefinition="The mime-type contents to compare against the request or response message 'Content-Type' header." )
5837        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/mimetypes")
5838        protected CodeType contentType;
5839
5840        /**
5841         * The FHIRPath expression to be evaluated against the request or response message contents - HTTP headers and payload.
5842         */
5843        @Child(name = "expression", type = {StringType.class}, order=8, min=0, max=1, modifier=false, summary=false)
5844        @Description(shortDefinition="The FHIRPath expression to be evaluated", formalDefinition="The FHIRPath expression to be evaluated against the request or response message contents - HTTP headers and payload." )
5845        protected StringType expression;
5846
5847        /**
5848         * The HTTP header field name e.g. 'Location'.
5849         */
5850        @Child(name = "headerField", type = {StringType.class}, order=9, min=0, max=1, modifier=false, summary=false)
5851        @Description(shortDefinition="HTTP header field name", formalDefinition="The HTTP header field name e.g. 'Location'." )
5852        protected StringType headerField;
5853
5854        /**
5855         * The ID of a fixture.  Asserts that the response contains at a minimum the fixture specified by minimumId.
5856         */
5857        @Child(name = "minimumId", type = {StringType.class}, order=10, min=0, max=1, modifier=false, summary=false)
5858        @Description(shortDefinition="Fixture Id of minimum content resource", formalDefinition="The ID of a fixture.  Asserts that the response contains at a minimum the fixture specified by minimumId." )
5859        protected StringType minimumId;
5860
5861        /**
5862         * Whether or not the test execution performs validation on the bundle navigation links.
5863         */
5864        @Child(name = "navigationLinks", type = {BooleanType.class}, order=11, min=0, max=1, modifier=false, summary=false)
5865        @Description(shortDefinition="Perform validation on navigation links?", formalDefinition="Whether or not the test execution performs validation on the bundle navigation links." )
5866        protected BooleanType navigationLinks;
5867
5868        /**
5869         * The operator type defines the conditional behavior of the assert. If not defined, the default is equals.
5870         */
5871        @Child(name = "operator", type = {CodeType.class}, order=12, min=0, max=1, modifier=false, summary=false)
5872        @Description(shortDefinition="equals | notEquals | in | notIn | greaterThan | lessThan | empty | notEmpty | contains | notContains | eval", formalDefinition="The operator type defines the conditional behavior of the assert. If not defined, the default is equals." )
5873        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/assert-operator-codes")
5874        protected Enumeration<AssertionOperatorType> operator;
5875
5876        /**
5877         * The XPath or JSONPath expression to be evaluated against the fixture representing the response received from server.
5878         */
5879        @Child(name = "path", type = {StringType.class}, order=13, min=0, max=1, modifier=false, summary=false)
5880        @Description(shortDefinition="XPath or JSONPath expression", formalDefinition="The XPath or JSONPath expression to be evaluated against the fixture representing the response received from server." )
5881        protected StringType path;
5882
5883        /**
5884         * The request method or HTTP operation code to compare against that used by the client system under test.
5885         */
5886        @Child(name = "requestMethod", type = {CodeType.class}, order=14, min=0, max=1, modifier=false, summary=false)
5887        @Description(shortDefinition="delete | get | options | patch | post | put | head", formalDefinition="The request method or HTTP operation code to compare against that used by the client system under test." )
5888        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/http-operations")
5889        protected Enumeration<TestScriptRequestMethodCode> requestMethod;
5890
5891        /**
5892         * The value to use in a comparison against the request URL path string.
5893         */
5894        @Child(name = "requestURL", type = {StringType.class}, order=15, min=0, max=1, modifier=false, summary=false)
5895        @Description(shortDefinition="Request URL comparison value", formalDefinition="The value to use in a comparison against the request URL path string." )
5896        protected StringType requestURL;
5897
5898        /**
5899         * The type of the resource.  See the [resource list](resourcelist.html).
5900         */
5901        @Child(name = "resource", type = {UriType.class}, order=16, min=0, max=1, modifier=false, summary=false)
5902        @Description(shortDefinition="Resource type", formalDefinition="The type of the resource.  See the [resource list](resourcelist.html)." )
5903        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/concrete-fhir-types")
5904        protected UriType resource;
5905
5906        /**
5907         * okay | created | noContent | notModified | bad | forbidden | notFound | methodNotAllowed | conflict | gone | preconditionFailed | unprocessable.
5908         */
5909        @Child(name = "response", type = {CodeType.class}, order=17, min=0, max=1, modifier=false, summary=false)
5910        @Description(shortDefinition="okay | created | noContent | notModified | bad | forbidden | notFound | methodNotAllowed | conflict | gone | preconditionFailed | unprocessable", formalDefinition="okay | created | noContent | notModified | bad | forbidden | notFound | methodNotAllowed | conflict | gone | preconditionFailed | unprocessable." )
5911        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/assert-response-code-types")
5912        protected Enumeration<AssertionResponseTypes> response;
5913
5914        /**
5915         * The value of the HTTP response code to be tested.
5916         */
5917        @Child(name = "responseCode", type = {StringType.class}, order=18, min=0, max=1, modifier=false, summary=false)
5918        @Description(shortDefinition="HTTP response code to test", formalDefinition="The value of the HTTP response code to be tested." )
5919        protected StringType responseCode;
5920
5921        /**
5922         * Fixture to evaluate the XPath/JSONPath expression or the headerField  against.
5923         */
5924        @Child(name = "sourceId", type = {IdType.class}, order=19, min=0, max=1, modifier=false, summary=false)
5925        @Description(shortDefinition="Fixture Id of source expression or headerField", formalDefinition="Fixture to evaluate the XPath/JSONPath expression or the headerField  against." )
5926        protected IdType sourceId;
5927
5928        /**
5929         * Whether or not the current test execution will stop on failure for this assert.
5930         */
5931        @Child(name = "stopTestOnFail", type = {BooleanType.class}, order=20, min=1, max=1, modifier=false, summary=false)
5932        @Description(shortDefinition="If this assert fails, will the current test execution stop?", formalDefinition="Whether or not the current test execution will stop on failure for this assert." )
5933        protected BooleanType stopTestOnFail;
5934
5935        /**
5936         * The ID of the Profile to validate against.
5937         */
5938        @Child(name = "validateProfileId", type = {IdType.class}, order=21, min=0, max=1, modifier=false, summary=false)
5939        @Description(shortDefinition="Profile Id of validation profile reference", formalDefinition="The ID of the Profile to validate against." )
5940        protected IdType validateProfileId;
5941
5942        /**
5943         * The value to compare to.
5944         */
5945        @Child(name = "value", type = {StringType.class}, order=22, min=0, max=1, modifier=false, summary=false)
5946        @Description(shortDefinition="The value to compare to", formalDefinition="The value to compare to." )
5947        protected StringType value;
5948
5949        /**
5950         * Whether or not the test execution will produce a warning only on error for this assert.
5951         */
5952        @Child(name = "warningOnly", type = {BooleanType.class}, order=23, min=1, max=1, modifier=false, summary=false)
5953        @Description(shortDefinition="Will this assert produce a warning only on error?", formalDefinition="Whether or not the test execution will produce a warning only on error for this assert." )
5954        protected BooleanType warningOnly;
5955
5956        private static final long serialVersionUID = -350031410L;
5957
5958    /**
5959     * Constructor
5960     */
5961      public SetupActionAssertComponent() {
5962        super();
5963      }
5964
5965    /**
5966     * Constructor
5967     */
5968      public SetupActionAssertComponent(boolean stopTestOnFail, boolean warningOnly) {
5969        super();
5970        this.setStopTestOnFail(stopTestOnFail);
5971        this.setWarningOnly(warningOnly);
5972      }
5973
5974        /**
5975         * @return {@link #label} (The label would be used for tracking/logging purposes by test engines.). This is the underlying object with id, value and extensions. The accessor "getLabel" gives direct access to the value
5976         */
5977        public StringType getLabelElement() { 
5978          if (this.label == null)
5979            if (Configuration.errorOnAutoCreate())
5980              throw new Error("Attempt to auto-create SetupActionAssertComponent.label");
5981            else if (Configuration.doAutoCreate())
5982              this.label = new StringType(); // bb
5983          return this.label;
5984        }
5985
5986        public boolean hasLabelElement() { 
5987          return this.label != null && !this.label.isEmpty();
5988        }
5989
5990        public boolean hasLabel() { 
5991          return this.label != null && !this.label.isEmpty();
5992        }
5993
5994        /**
5995         * @param value {@link #label} (The label would be used for tracking/logging purposes by test engines.). This is the underlying object with id, value and extensions. The accessor "getLabel" gives direct access to the value
5996         */
5997        public SetupActionAssertComponent setLabelElement(StringType value) { 
5998          this.label = value;
5999          return this;
6000        }
6001
6002        /**
6003         * @return The label would be used for tracking/logging purposes by test engines.
6004         */
6005        public String getLabel() { 
6006          return this.label == null ? null : this.label.getValue();
6007        }
6008
6009        /**
6010         * @param value The label would be used for tracking/logging purposes by test engines.
6011         */
6012        public SetupActionAssertComponent setLabel(String value) { 
6013          if (Utilities.noString(value))
6014            this.label = null;
6015          else {
6016            if (this.label == null)
6017              this.label = new StringType();
6018            this.label.setValue(value);
6019          }
6020          return this;
6021        }
6022
6023        /**
6024         * @return {@link #description} (The description would be used by test engines for tracking and reporting purposes.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
6025         */
6026        public StringType getDescriptionElement() { 
6027          if (this.description == null)
6028            if (Configuration.errorOnAutoCreate())
6029              throw new Error("Attempt to auto-create SetupActionAssertComponent.description");
6030            else if (Configuration.doAutoCreate())
6031              this.description = new StringType(); // bb
6032          return this.description;
6033        }
6034
6035        public boolean hasDescriptionElement() { 
6036          return this.description != null && !this.description.isEmpty();
6037        }
6038
6039        public boolean hasDescription() { 
6040          return this.description != null && !this.description.isEmpty();
6041        }
6042
6043        /**
6044         * @param value {@link #description} (The description would be used by test engines for tracking and reporting purposes.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
6045         */
6046        public SetupActionAssertComponent setDescriptionElement(StringType value) { 
6047          this.description = value;
6048          return this;
6049        }
6050
6051        /**
6052         * @return The description would be used by test engines for tracking and reporting purposes.
6053         */
6054        public String getDescription() { 
6055          return this.description == null ? null : this.description.getValue();
6056        }
6057
6058        /**
6059         * @param value The description would be used by test engines for tracking and reporting purposes.
6060         */
6061        public SetupActionAssertComponent setDescription(String value) { 
6062          if (Utilities.noString(value))
6063            this.description = null;
6064          else {
6065            if (this.description == null)
6066              this.description = new StringType();
6067            this.description.setValue(value);
6068          }
6069          return this;
6070        }
6071
6072        /**
6073         * @return {@link #direction} (The direction to use for the assertion.). This is the underlying object with id, value and extensions. The accessor "getDirection" gives direct access to the value
6074         */
6075        public Enumeration<AssertionDirectionType> getDirectionElement() { 
6076          if (this.direction == null)
6077            if (Configuration.errorOnAutoCreate())
6078              throw new Error("Attempt to auto-create SetupActionAssertComponent.direction");
6079            else if (Configuration.doAutoCreate())
6080              this.direction = new Enumeration<AssertionDirectionType>(new AssertionDirectionTypeEnumFactory()); // bb
6081          return this.direction;
6082        }
6083
6084        public boolean hasDirectionElement() { 
6085          return this.direction != null && !this.direction.isEmpty();
6086        }
6087
6088        public boolean hasDirection() { 
6089          return this.direction != null && !this.direction.isEmpty();
6090        }
6091
6092        /**
6093         * @param value {@link #direction} (The direction to use for the assertion.). This is the underlying object with id, value and extensions. The accessor "getDirection" gives direct access to the value
6094         */
6095        public SetupActionAssertComponent setDirectionElement(Enumeration<AssertionDirectionType> value) { 
6096          this.direction = value;
6097          return this;
6098        }
6099
6100        /**
6101         * @return The direction to use for the assertion.
6102         */
6103        public AssertionDirectionType getDirection() { 
6104          return this.direction == null ? null : this.direction.getValue();
6105        }
6106
6107        /**
6108         * @param value The direction to use for the assertion.
6109         */
6110        public SetupActionAssertComponent setDirection(AssertionDirectionType value) { 
6111          if (value == null)
6112            this.direction = null;
6113          else {
6114            if (this.direction == null)
6115              this.direction = new Enumeration<AssertionDirectionType>(new AssertionDirectionTypeEnumFactory());
6116            this.direction.setValue(value);
6117          }
6118          return this;
6119        }
6120
6121        /**
6122         * @return {@link #compareToSourceId} (Id of the source fixture used as the contents to be evaluated by either the "source/expression" or "sourceId/path" definition.). This is the underlying object with id, value and extensions. The accessor "getCompareToSourceId" gives direct access to the value
6123         */
6124        public StringType getCompareToSourceIdElement() { 
6125          if (this.compareToSourceId == null)
6126            if (Configuration.errorOnAutoCreate())
6127              throw new Error("Attempt to auto-create SetupActionAssertComponent.compareToSourceId");
6128            else if (Configuration.doAutoCreate())
6129              this.compareToSourceId = new StringType(); // bb
6130          return this.compareToSourceId;
6131        }
6132
6133        public boolean hasCompareToSourceIdElement() { 
6134          return this.compareToSourceId != null && !this.compareToSourceId.isEmpty();
6135        }
6136
6137        public boolean hasCompareToSourceId() { 
6138          return this.compareToSourceId != null && !this.compareToSourceId.isEmpty();
6139        }
6140
6141        /**
6142         * @param value {@link #compareToSourceId} (Id of the source fixture used as the contents to be evaluated by either the "source/expression" or "sourceId/path" definition.). This is the underlying object with id, value and extensions. The accessor "getCompareToSourceId" gives direct access to the value
6143         */
6144        public SetupActionAssertComponent setCompareToSourceIdElement(StringType value) { 
6145          this.compareToSourceId = value;
6146          return this;
6147        }
6148
6149        /**
6150         * @return Id of the source fixture used as the contents to be evaluated by either the "source/expression" or "sourceId/path" definition.
6151         */
6152        public String getCompareToSourceId() { 
6153          return this.compareToSourceId == null ? null : this.compareToSourceId.getValue();
6154        }
6155
6156        /**
6157         * @param value Id of the source fixture used as the contents to be evaluated by either the "source/expression" or "sourceId/path" definition.
6158         */
6159        public SetupActionAssertComponent setCompareToSourceId(String value) { 
6160          if (Utilities.noString(value))
6161            this.compareToSourceId = null;
6162          else {
6163            if (this.compareToSourceId == null)
6164              this.compareToSourceId = new StringType();
6165            this.compareToSourceId.setValue(value);
6166          }
6167          return this;
6168        }
6169
6170        /**
6171         * @return {@link #compareToSourceExpression} (The FHIRPath expression to evaluate against the source fixture. When compareToSourceId is defined, either compareToSourceExpression or compareToSourcePath must be defined, but not both.). This is the underlying object with id, value and extensions. The accessor "getCompareToSourceExpression" gives direct access to the value
6172         */
6173        public StringType getCompareToSourceExpressionElement() { 
6174          if (this.compareToSourceExpression == null)
6175            if (Configuration.errorOnAutoCreate())
6176              throw new Error("Attempt to auto-create SetupActionAssertComponent.compareToSourceExpression");
6177            else if (Configuration.doAutoCreate())
6178              this.compareToSourceExpression = new StringType(); // bb
6179          return this.compareToSourceExpression;
6180        }
6181
6182        public boolean hasCompareToSourceExpressionElement() { 
6183          return this.compareToSourceExpression != null && !this.compareToSourceExpression.isEmpty();
6184        }
6185
6186        public boolean hasCompareToSourceExpression() { 
6187          return this.compareToSourceExpression != null && !this.compareToSourceExpression.isEmpty();
6188        }
6189
6190        /**
6191         * @param value {@link #compareToSourceExpression} (The FHIRPath expression to evaluate against the source fixture. When compareToSourceId is defined, either compareToSourceExpression or compareToSourcePath must be defined, but not both.). This is the underlying object with id, value and extensions. The accessor "getCompareToSourceExpression" gives direct access to the value
6192         */
6193        public SetupActionAssertComponent setCompareToSourceExpressionElement(StringType value) { 
6194          this.compareToSourceExpression = value;
6195          return this;
6196        }
6197
6198        /**
6199         * @return The FHIRPath expression to evaluate against the source fixture. When compareToSourceId is defined, either compareToSourceExpression or compareToSourcePath must be defined, but not both.
6200         */
6201        public String getCompareToSourceExpression() { 
6202          return this.compareToSourceExpression == null ? null : this.compareToSourceExpression.getValue();
6203        }
6204
6205        /**
6206         * @param value The FHIRPath expression to evaluate against the source fixture. When compareToSourceId is defined, either compareToSourceExpression or compareToSourcePath must be defined, but not both.
6207         */
6208        public SetupActionAssertComponent setCompareToSourceExpression(String value) { 
6209          if (Utilities.noString(value))
6210            this.compareToSourceExpression = null;
6211          else {
6212            if (this.compareToSourceExpression == null)
6213              this.compareToSourceExpression = new StringType();
6214            this.compareToSourceExpression.setValue(value);
6215          }
6216          return this;
6217        }
6218
6219        /**
6220         * @return {@link #compareToSourcePath} (XPath or JSONPath expression to evaluate against the source fixture. When compareToSourceId is defined, either compareToSourceExpression or compareToSourcePath must be defined, but not both.). This is the underlying object with id, value and extensions. The accessor "getCompareToSourcePath" gives direct access to the value
6221         */
6222        public StringType getCompareToSourcePathElement() { 
6223          if (this.compareToSourcePath == null)
6224            if (Configuration.errorOnAutoCreate())
6225              throw new Error("Attempt to auto-create SetupActionAssertComponent.compareToSourcePath");
6226            else if (Configuration.doAutoCreate())
6227              this.compareToSourcePath = new StringType(); // bb
6228          return this.compareToSourcePath;
6229        }
6230
6231        public boolean hasCompareToSourcePathElement() { 
6232          return this.compareToSourcePath != null && !this.compareToSourcePath.isEmpty();
6233        }
6234
6235        public boolean hasCompareToSourcePath() { 
6236          return this.compareToSourcePath != null && !this.compareToSourcePath.isEmpty();
6237        }
6238
6239        /**
6240         * @param value {@link #compareToSourcePath} (XPath or JSONPath expression to evaluate against the source fixture. When compareToSourceId is defined, either compareToSourceExpression or compareToSourcePath must be defined, but not both.). This is the underlying object with id, value and extensions. The accessor "getCompareToSourcePath" gives direct access to the value
6241         */
6242        public SetupActionAssertComponent setCompareToSourcePathElement(StringType value) { 
6243          this.compareToSourcePath = value;
6244          return this;
6245        }
6246
6247        /**
6248         * @return XPath or JSONPath expression to evaluate against the source fixture. When compareToSourceId is defined, either compareToSourceExpression or compareToSourcePath must be defined, but not both.
6249         */
6250        public String getCompareToSourcePath() { 
6251          return this.compareToSourcePath == null ? null : this.compareToSourcePath.getValue();
6252        }
6253
6254        /**
6255         * @param value XPath or JSONPath expression to evaluate against the source fixture. When compareToSourceId is defined, either compareToSourceExpression or compareToSourcePath must be defined, but not both.
6256         */
6257        public SetupActionAssertComponent setCompareToSourcePath(String value) { 
6258          if (Utilities.noString(value))
6259            this.compareToSourcePath = null;
6260          else {
6261            if (this.compareToSourcePath == null)
6262              this.compareToSourcePath = new StringType();
6263            this.compareToSourcePath.setValue(value);
6264          }
6265          return this;
6266        }
6267
6268        /**
6269         * @return {@link #contentType} (The mime-type contents to compare against the request or response message 'Content-Type' header.). This is the underlying object with id, value and extensions. The accessor "getContentType" gives direct access to the value
6270         */
6271        public CodeType getContentTypeElement() { 
6272          if (this.contentType == null)
6273            if (Configuration.errorOnAutoCreate())
6274              throw new Error("Attempt to auto-create SetupActionAssertComponent.contentType");
6275            else if (Configuration.doAutoCreate())
6276              this.contentType = new CodeType(); // bb
6277          return this.contentType;
6278        }
6279
6280        public boolean hasContentTypeElement() { 
6281          return this.contentType != null && !this.contentType.isEmpty();
6282        }
6283
6284        public boolean hasContentType() { 
6285          return this.contentType != null && !this.contentType.isEmpty();
6286        }
6287
6288        /**
6289         * @param value {@link #contentType} (The mime-type contents to compare against the request or response message 'Content-Type' header.). This is the underlying object with id, value and extensions. The accessor "getContentType" gives direct access to the value
6290         */
6291        public SetupActionAssertComponent setContentTypeElement(CodeType value) { 
6292          this.contentType = value;
6293          return this;
6294        }
6295
6296        /**
6297         * @return The mime-type contents to compare against the request or response message 'Content-Type' header.
6298         */
6299        public String getContentType() { 
6300          return this.contentType == null ? null : this.contentType.getValue();
6301        }
6302
6303        /**
6304         * @param value The mime-type contents to compare against the request or response message 'Content-Type' header.
6305         */
6306        public SetupActionAssertComponent setContentType(String value) { 
6307          if (Utilities.noString(value))
6308            this.contentType = null;
6309          else {
6310            if (this.contentType == null)
6311              this.contentType = new CodeType();
6312            this.contentType.setValue(value);
6313          }
6314          return this;
6315        }
6316
6317        /**
6318         * @return {@link #expression} (The FHIRPath expression to be evaluated against the request or response message contents - HTTP headers and payload.). This is the underlying object with id, value and extensions. The accessor "getExpression" gives direct access to the value
6319         */
6320        public StringType getExpressionElement() { 
6321          if (this.expression == null)
6322            if (Configuration.errorOnAutoCreate())
6323              throw new Error("Attempt to auto-create SetupActionAssertComponent.expression");
6324            else if (Configuration.doAutoCreate())
6325              this.expression = new StringType(); // bb
6326          return this.expression;
6327        }
6328
6329        public boolean hasExpressionElement() { 
6330          return this.expression != null && !this.expression.isEmpty();
6331        }
6332
6333        public boolean hasExpression() { 
6334          return this.expression != null && !this.expression.isEmpty();
6335        }
6336
6337        /**
6338         * @param value {@link #expression} (The FHIRPath expression to be evaluated against the request or response message contents - HTTP headers and payload.). This is the underlying object with id, value and extensions. The accessor "getExpression" gives direct access to the value
6339         */
6340        public SetupActionAssertComponent setExpressionElement(StringType value) { 
6341          this.expression = value;
6342          return this;
6343        }
6344
6345        /**
6346         * @return The FHIRPath expression to be evaluated against the request or response message contents - HTTP headers and payload.
6347         */
6348        public String getExpression() { 
6349          return this.expression == null ? null : this.expression.getValue();
6350        }
6351
6352        /**
6353         * @param value The FHIRPath expression to be evaluated against the request or response message contents - HTTP headers and payload.
6354         */
6355        public SetupActionAssertComponent setExpression(String value) { 
6356          if (Utilities.noString(value))
6357            this.expression = null;
6358          else {
6359            if (this.expression == null)
6360              this.expression = new StringType();
6361            this.expression.setValue(value);
6362          }
6363          return this;
6364        }
6365
6366        /**
6367         * @return {@link #headerField} (The HTTP header field name e.g. 'Location'.). This is the underlying object with id, value and extensions. The accessor "getHeaderField" gives direct access to the value
6368         */
6369        public StringType getHeaderFieldElement() { 
6370          if (this.headerField == null)
6371            if (Configuration.errorOnAutoCreate())
6372              throw new Error("Attempt to auto-create SetupActionAssertComponent.headerField");
6373            else if (Configuration.doAutoCreate())
6374              this.headerField = new StringType(); // bb
6375          return this.headerField;
6376        }
6377
6378        public boolean hasHeaderFieldElement() { 
6379          return this.headerField != null && !this.headerField.isEmpty();
6380        }
6381
6382        public boolean hasHeaderField() { 
6383          return this.headerField != null && !this.headerField.isEmpty();
6384        }
6385
6386        /**
6387         * @param value {@link #headerField} (The HTTP header field name e.g. 'Location'.). This is the underlying object with id, value and extensions. The accessor "getHeaderField" gives direct access to the value
6388         */
6389        public SetupActionAssertComponent setHeaderFieldElement(StringType value) { 
6390          this.headerField = value;
6391          return this;
6392        }
6393
6394        /**
6395         * @return The HTTP header field name e.g. 'Location'.
6396         */
6397        public String getHeaderField() { 
6398          return this.headerField == null ? null : this.headerField.getValue();
6399        }
6400
6401        /**
6402         * @param value The HTTP header field name e.g. 'Location'.
6403         */
6404        public SetupActionAssertComponent setHeaderField(String value) { 
6405          if (Utilities.noString(value))
6406            this.headerField = null;
6407          else {
6408            if (this.headerField == null)
6409              this.headerField = new StringType();
6410            this.headerField.setValue(value);
6411          }
6412          return this;
6413        }
6414
6415        /**
6416         * @return {@link #minimumId} (The ID of a fixture.  Asserts that the response contains at a minimum the fixture specified by minimumId.). This is the underlying object with id, value and extensions. The accessor "getMinimumId" gives direct access to the value
6417         */
6418        public StringType getMinimumIdElement() { 
6419          if (this.minimumId == null)
6420            if (Configuration.errorOnAutoCreate())
6421              throw new Error("Attempt to auto-create SetupActionAssertComponent.minimumId");
6422            else if (Configuration.doAutoCreate())
6423              this.minimumId = new StringType(); // bb
6424          return this.minimumId;
6425        }
6426
6427        public boolean hasMinimumIdElement() { 
6428          return this.minimumId != null && !this.minimumId.isEmpty();
6429        }
6430
6431        public boolean hasMinimumId() { 
6432          return this.minimumId != null && !this.minimumId.isEmpty();
6433        }
6434
6435        /**
6436         * @param value {@link #minimumId} (The ID of a fixture.  Asserts that the response contains at a minimum the fixture specified by minimumId.). This is the underlying object with id, value and extensions. The accessor "getMinimumId" gives direct access to the value
6437         */
6438        public SetupActionAssertComponent setMinimumIdElement(StringType value) { 
6439          this.minimumId = value;
6440          return this;
6441        }
6442
6443        /**
6444         * @return The ID of a fixture.  Asserts that the response contains at a minimum the fixture specified by minimumId.
6445         */
6446        public String getMinimumId() { 
6447          return this.minimumId == null ? null : this.minimumId.getValue();
6448        }
6449
6450        /**
6451         * @param value The ID of a fixture.  Asserts that the response contains at a minimum the fixture specified by minimumId.
6452         */
6453        public SetupActionAssertComponent setMinimumId(String value) { 
6454          if (Utilities.noString(value))
6455            this.minimumId = null;
6456          else {
6457            if (this.minimumId == null)
6458              this.minimumId = new StringType();
6459            this.minimumId.setValue(value);
6460          }
6461          return this;
6462        }
6463
6464        /**
6465         * @return {@link #navigationLinks} (Whether or not the test execution performs validation on the bundle navigation links.). This is the underlying object with id, value and extensions. The accessor "getNavigationLinks" gives direct access to the value
6466         */
6467        public BooleanType getNavigationLinksElement() { 
6468          if (this.navigationLinks == null)
6469            if (Configuration.errorOnAutoCreate())
6470              throw new Error("Attempt to auto-create SetupActionAssertComponent.navigationLinks");
6471            else if (Configuration.doAutoCreate())
6472              this.navigationLinks = new BooleanType(); // bb
6473          return this.navigationLinks;
6474        }
6475
6476        public boolean hasNavigationLinksElement() { 
6477          return this.navigationLinks != null && !this.navigationLinks.isEmpty();
6478        }
6479
6480        public boolean hasNavigationLinks() { 
6481          return this.navigationLinks != null && !this.navigationLinks.isEmpty();
6482        }
6483
6484        /**
6485         * @param value {@link #navigationLinks} (Whether or not the test execution performs validation on the bundle navigation links.). This is the underlying object with id, value and extensions. The accessor "getNavigationLinks" gives direct access to the value
6486         */
6487        public SetupActionAssertComponent setNavigationLinksElement(BooleanType value) { 
6488          this.navigationLinks = value;
6489          return this;
6490        }
6491
6492        /**
6493         * @return Whether or not the test execution performs validation on the bundle navigation links.
6494         */
6495        public boolean getNavigationLinks() { 
6496          return this.navigationLinks == null || this.navigationLinks.isEmpty() ? false : this.navigationLinks.getValue();
6497        }
6498
6499        /**
6500         * @param value Whether or not the test execution performs validation on the bundle navigation links.
6501         */
6502        public SetupActionAssertComponent setNavigationLinks(boolean value) { 
6503            if (this.navigationLinks == null)
6504              this.navigationLinks = new BooleanType();
6505            this.navigationLinks.setValue(value);
6506          return this;
6507        }
6508
6509        /**
6510         * @return {@link #operator} (The operator type defines the conditional behavior of the assert. If not defined, the default is equals.). This is the underlying object with id, value and extensions. The accessor "getOperator" gives direct access to the value
6511         */
6512        public Enumeration<AssertionOperatorType> getOperatorElement() { 
6513          if (this.operator == null)
6514            if (Configuration.errorOnAutoCreate())
6515              throw new Error("Attempt to auto-create SetupActionAssertComponent.operator");
6516            else if (Configuration.doAutoCreate())
6517              this.operator = new Enumeration<AssertionOperatorType>(new AssertionOperatorTypeEnumFactory()); // bb
6518          return this.operator;
6519        }
6520
6521        public boolean hasOperatorElement() { 
6522          return this.operator != null && !this.operator.isEmpty();
6523        }
6524
6525        public boolean hasOperator() { 
6526          return this.operator != null && !this.operator.isEmpty();
6527        }
6528
6529        /**
6530         * @param value {@link #operator} (The operator type defines the conditional behavior of the assert. If not defined, the default is equals.). This is the underlying object with id, value and extensions. The accessor "getOperator" gives direct access to the value
6531         */
6532        public SetupActionAssertComponent setOperatorElement(Enumeration<AssertionOperatorType> value) { 
6533          this.operator = value;
6534          return this;
6535        }
6536
6537        /**
6538         * @return The operator type defines the conditional behavior of the assert. If not defined, the default is equals.
6539         */
6540        public AssertionOperatorType getOperator() { 
6541          return this.operator == null ? null : this.operator.getValue();
6542        }
6543
6544        /**
6545         * @param value The operator type defines the conditional behavior of the assert. If not defined, the default is equals.
6546         */
6547        public SetupActionAssertComponent setOperator(AssertionOperatorType value) { 
6548          if (value == null)
6549            this.operator = null;
6550          else {
6551            if (this.operator == null)
6552              this.operator = new Enumeration<AssertionOperatorType>(new AssertionOperatorTypeEnumFactory());
6553            this.operator.setValue(value);
6554          }
6555          return this;
6556        }
6557
6558        /**
6559         * @return {@link #path} (The XPath or JSONPath expression to be evaluated against the fixture representing the response received from server.). This is the underlying object with id, value and extensions. The accessor "getPath" gives direct access to the value
6560         */
6561        public StringType getPathElement() { 
6562          if (this.path == null)
6563            if (Configuration.errorOnAutoCreate())
6564              throw new Error("Attempt to auto-create SetupActionAssertComponent.path");
6565            else if (Configuration.doAutoCreate())
6566              this.path = new StringType(); // bb
6567          return this.path;
6568        }
6569
6570        public boolean hasPathElement() { 
6571          return this.path != null && !this.path.isEmpty();
6572        }
6573
6574        public boolean hasPath() { 
6575          return this.path != null && !this.path.isEmpty();
6576        }
6577
6578        /**
6579         * @param value {@link #path} (The XPath or JSONPath expression to be evaluated against the fixture representing the response received from server.). This is the underlying object with id, value and extensions. The accessor "getPath" gives direct access to the value
6580         */
6581        public SetupActionAssertComponent setPathElement(StringType value) { 
6582          this.path = value;
6583          return this;
6584        }
6585
6586        /**
6587         * @return The XPath or JSONPath expression to be evaluated against the fixture representing the response received from server.
6588         */
6589        public String getPath() { 
6590          return this.path == null ? null : this.path.getValue();
6591        }
6592
6593        /**
6594         * @param value The XPath or JSONPath expression to be evaluated against the fixture representing the response received from server.
6595         */
6596        public SetupActionAssertComponent setPath(String value) { 
6597          if (Utilities.noString(value))
6598            this.path = null;
6599          else {
6600            if (this.path == null)
6601              this.path = new StringType();
6602            this.path.setValue(value);
6603          }
6604          return this;
6605        }
6606
6607        /**
6608         * @return {@link #requestMethod} (The request method or HTTP operation code to compare against that used by the client system under test.). This is the underlying object with id, value and extensions. The accessor "getRequestMethod" gives direct access to the value
6609         */
6610        public Enumeration<TestScriptRequestMethodCode> getRequestMethodElement() { 
6611          if (this.requestMethod == null)
6612            if (Configuration.errorOnAutoCreate())
6613              throw new Error("Attempt to auto-create SetupActionAssertComponent.requestMethod");
6614            else if (Configuration.doAutoCreate())
6615              this.requestMethod = new Enumeration<TestScriptRequestMethodCode>(new TestScriptRequestMethodCodeEnumFactory()); // bb
6616          return this.requestMethod;
6617        }
6618
6619        public boolean hasRequestMethodElement() { 
6620          return this.requestMethod != null && !this.requestMethod.isEmpty();
6621        }
6622
6623        public boolean hasRequestMethod() { 
6624          return this.requestMethod != null && !this.requestMethod.isEmpty();
6625        }
6626
6627        /**
6628         * @param value {@link #requestMethod} (The request method or HTTP operation code to compare against that used by the client system under test.). This is the underlying object with id, value and extensions. The accessor "getRequestMethod" gives direct access to the value
6629         */
6630        public SetupActionAssertComponent setRequestMethodElement(Enumeration<TestScriptRequestMethodCode> value) { 
6631          this.requestMethod = value;
6632          return this;
6633        }
6634
6635        /**
6636         * @return The request method or HTTP operation code to compare against that used by the client system under test.
6637         */
6638        public TestScriptRequestMethodCode getRequestMethod() { 
6639          return this.requestMethod == null ? null : this.requestMethod.getValue();
6640        }
6641
6642        /**
6643         * @param value The request method or HTTP operation code to compare against that used by the client system under test.
6644         */
6645        public SetupActionAssertComponent setRequestMethod(TestScriptRequestMethodCode value) { 
6646          if (value == null)
6647            this.requestMethod = null;
6648          else {
6649            if (this.requestMethod == null)
6650              this.requestMethod = new Enumeration<TestScriptRequestMethodCode>(new TestScriptRequestMethodCodeEnumFactory());
6651            this.requestMethod.setValue(value);
6652          }
6653          return this;
6654        }
6655
6656        /**
6657         * @return {@link #requestURL} (The value to use in a comparison against the request URL path string.). This is the underlying object with id, value and extensions. The accessor "getRequestURL" gives direct access to the value
6658         */
6659        public StringType getRequestURLElement() { 
6660          if (this.requestURL == null)
6661            if (Configuration.errorOnAutoCreate())
6662              throw new Error("Attempt to auto-create SetupActionAssertComponent.requestURL");
6663            else if (Configuration.doAutoCreate())
6664              this.requestURL = new StringType(); // bb
6665          return this.requestURL;
6666        }
6667
6668        public boolean hasRequestURLElement() { 
6669          return this.requestURL != null && !this.requestURL.isEmpty();
6670        }
6671
6672        public boolean hasRequestURL() { 
6673          return this.requestURL != null && !this.requestURL.isEmpty();
6674        }
6675
6676        /**
6677         * @param value {@link #requestURL} (The value to use in a comparison against the request URL path string.). This is the underlying object with id, value and extensions. The accessor "getRequestURL" gives direct access to the value
6678         */
6679        public SetupActionAssertComponent setRequestURLElement(StringType value) { 
6680          this.requestURL = value;
6681          return this;
6682        }
6683
6684        /**
6685         * @return The value to use in a comparison against the request URL path string.
6686         */
6687        public String getRequestURL() { 
6688          return this.requestURL == null ? null : this.requestURL.getValue();
6689        }
6690
6691        /**
6692         * @param value The value to use in a comparison against the request URL path string.
6693         */
6694        public SetupActionAssertComponent setRequestURL(String value) { 
6695          if (Utilities.noString(value))
6696            this.requestURL = null;
6697          else {
6698            if (this.requestURL == null)
6699              this.requestURL = new StringType();
6700            this.requestURL.setValue(value);
6701          }
6702          return this;
6703        }
6704
6705        /**
6706         * @return {@link #resource} (The type of the resource.  See the [resource list](resourcelist.html).). This is the underlying object with id, value and extensions. The accessor "getResource" gives direct access to the value
6707         */
6708        public UriType getResourceElement() { 
6709          if (this.resource == null)
6710            if (Configuration.errorOnAutoCreate())
6711              throw new Error("Attempt to auto-create SetupActionAssertComponent.resource");
6712            else if (Configuration.doAutoCreate())
6713              this.resource = new UriType(); // bb
6714          return this.resource;
6715        }
6716
6717        public boolean hasResourceElement() { 
6718          return this.resource != null && !this.resource.isEmpty();
6719        }
6720
6721        public boolean hasResource() { 
6722          return this.resource != null && !this.resource.isEmpty();
6723        }
6724
6725        /**
6726         * @param value {@link #resource} (The type of the resource.  See the [resource list](resourcelist.html).). This is the underlying object with id, value and extensions. The accessor "getResource" gives direct access to the value
6727         */
6728        public SetupActionAssertComponent setResourceElement(UriType value) { 
6729          this.resource = value;
6730          return this;
6731        }
6732
6733        /**
6734         * @return The type of the resource.  See the [resource list](resourcelist.html).
6735         */
6736        public String getResource() { 
6737          return this.resource == null ? null : this.resource.getValue();
6738        }
6739
6740        /**
6741         * @param value The type of the resource.  See the [resource list](resourcelist.html).
6742         */
6743        public SetupActionAssertComponent setResource(String value) { 
6744          if (Utilities.noString(value))
6745            this.resource = null;
6746          else {
6747            if (this.resource == null)
6748              this.resource = new UriType();
6749            this.resource.setValue(value);
6750          }
6751          return this;
6752        }
6753
6754        /**
6755         * @return {@link #response} (okay | created | noContent | notModified | bad | forbidden | notFound | methodNotAllowed | conflict | gone | preconditionFailed | unprocessable.). This is the underlying object with id, value and extensions. The accessor "getResponse" gives direct access to the value
6756         */
6757        public Enumeration<AssertionResponseTypes> getResponseElement() { 
6758          if (this.response == null)
6759            if (Configuration.errorOnAutoCreate())
6760              throw new Error("Attempt to auto-create SetupActionAssertComponent.response");
6761            else if (Configuration.doAutoCreate())
6762              this.response = new Enumeration<AssertionResponseTypes>(new AssertionResponseTypesEnumFactory()); // bb
6763          return this.response;
6764        }
6765
6766        public boolean hasResponseElement() { 
6767          return this.response != null && !this.response.isEmpty();
6768        }
6769
6770        public boolean hasResponse() { 
6771          return this.response != null && !this.response.isEmpty();
6772        }
6773
6774        /**
6775         * @param value {@link #response} (okay | created | noContent | notModified | bad | forbidden | notFound | methodNotAllowed | conflict | gone | preconditionFailed | unprocessable.). This is the underlying object with id, value and extensions. The accessor "getResponse" gives direct access to the value
6776         */
6777        public SetupActionAssertComponent setResponseElement(Enumeration<AssertionResponseTypes> value) { 
6778          this.response = value;
6779          return this;
6780        }
6781
6782        /**
6783         * @return okay | created | noContent | notModified | bad | forbidden | notFound | methodNotAllowed | conflict | gone | preconditionFailed | unprocessable.
6784         */
6785        public AssertionResponseTypes getResponse() { 
6786          return this.response == null ? null : this.response.getValue();
6787        }
6788
6789        /**
6790         * @param value okay | created | noContent | notModified | bad | forbidden | notFound | methodNotAllowed | conflict | gone | preconditionFailed | unprocessable.
6791         */
6792        public SetupActionAssertComponent setResponse(AssertionResponseTypes value) { 
6793          if (value == null)
6794            this.response = null;
6795          else {
6796            if (this.response == null)
6797              this.response = new Enumeration<AssertionResponseTypes>(new AssertionResponseTypesEnumFactory());
6798            this.response.setValue(value);
6799          }
6800          return this;
6801        }
6802
6803        /**
6804         * @return {@link #responseCode} (The value of the HTTP response code to be tested.). This is the underlying object with id, value and extensions. The accessor "getResponseCode" gives direct access to the value
6805         */
6806        public StringType getResponseCodeElement() { 
6807          if (this.responseCode == null)
6808            if (Configuration.errorOnAutoCreate())
6809              throw new Error("Attempt to auto-create SetupActionAssertComponent.responseCode");
6810            else if (Configuration.doAutoCreate())
6811              this.responseCode = new StringType(); // bb
6812          return this.responseCode;
6813        }
6814
6815        public boolean hasResponseCodeElement() { 
6816          return this.responseCode != null && !this.responseCode.isEmpty();
6817        }
6818
6819        public boolean hasResponseCode() { 
6820          return this.responseCode != null && !this.responseCode.isEmpty();
6821        }
6822
6823        /**
6824         * @param value {@link #responseCode} (The value of the HTTP response code to be tested.). This is the underlying object with id, value and extensions. The accessor "getResponseCode" gives direct access to the value
6825         */
6826        public SetupActionAssertComponent setResponseCodeElement(StringType value) { 
6827          this.responseCode = value;
6828          return this;
6829        }
6830
6831        /**
6832         * @return The value of the HTTP response code to be tested.
6833         */
6834        public String getResponseCode() { 
6835          return this.responseCode == null ? null : this.responseCode.getValue();
6836        }
6837
6838        /**
6839         * @param value The value of the HTTP response code to be tested.
6840         */
6841        public SetupActionAssertComponent setResponseCode(String value) { 
6842          if (Utilities.noString(value))
6843            this.responseCode = null;
6844          else {
6845            if (this.responseCode == null)
6846              this.responseCode = new StringType();
6847            this.responseCode.setValue(value);
6848          }
6849          return this;
6850        }
6851
6852        /**
6853         * @return {@link #sourceId} (Fixture to evaluate the XPath/JSONPath expression or the headerField  against.). This is the underlying object with id, value and extensions. The accessor "getSourceId" gives direct access to the value
6854         */
6855        public IdType getSourceIdElement() { 
6856          if (this.sourceId == null)
6857            if (Configuration.errorOnAutoCreate())
6858              throw new Error("Attempt to auto-create SetupActionAssertComponent.sourceId");
6859            else if (Configuration.doAutoCreate())
6860              this.sourceId = new IdType(); // bb
6861          return this.sourceId;
6862        }
6863
6864        public boolean hasSourceIdElement() { 
6865          return this.sourceId != null && !this.sourceId.isEmpty();
6866        }
6867
6868        public boolean hasSourceId() { 
6869          return this.sourceId != null && !this.sourceId.isEmpty();
6870        }
6871
6872        /**
6873         * @param value {@link #sourceId} (Fixture to evaluate the XPath/JSONPath expression or the headerField  against.). This is the underlying object with id, value and extensions. The accessor "getSourceId" gives direct access to the value
6874         */
6875        public SetupActionAssertComponent setSourceIdElement(IdType value) { 
6876          this.sourceId = value;
6877          return this;
6878        }
6879
6880        /**
6881         * @return Fixture to evaluate the XPath/JSONPath expression or the headerField  against.
6882         */
6883        public String getSourceId() { 
6884          return this.sourceId == null ? null : this.sourceId.getValue();
6885        }
6886
6887        /**
6888         * @param value Fixture to evaluate the XPath/JSONPath expression or the headerField  against.
6889         */
6890        public SetupActionAssertComponent setSourceId(String value) { 
6891          if (Utilities.noString(value))
6892            this.sourceId = null;
6893          else {
6894            if (this.sourceId == null)
6895              this.sourceId = new IdType();
6896            this.sourceId.setValue(value);
6897          }
6898          return this;
6899        }
6900
6901        /**
6902         * @return {@link #stopTestOnFail} (Whether or not the current test execution will stop on failure for this assert.). This is the underlying object with id, value and extensions. The accessor "getStopTestOnFail" gives direct access to the value
6903         */
6904        public BooleanType getStopTestOnFailElement() { 
6905          if (this.stopTestOnFail == null)
6906            if (Configuration.errorOnAutoCreate())
6907              throw new Error("Attempt to auto-create SetupActionAssertComponent.stopTestOnFail");
6908            else if (Configuration.doAutoCreate())
6909              this.stopTestOnFail = new BooleanType(); // bb
6910          return this.stopTestOnFail;
6911        }
6912
6913        public boolean hasStopTestOnFailElement() { 
6914          return this.stopTestOnFail != null && !this.stopTestOnFail.isEmpty();
6915        }
6916
6917        public boolean hasStopTestOnFail() { 
6918          return this.stopTestOnFail != null && !this.stopTestOnFail.isEmpty();
6919        }
6920
6921        /**
6922         * @param value {@link #stopTestOnFail} (Whether or not the current test execution will stop on failure for this assert.). This is the underlying object with id, value and extensions. The accessor "getStopTestOnFail" gives direct access to the value
6923         */
6924        public SetupActionAssertComponent setStopTestOnFailElement(BooleanType value) { 
6925          this.stopTestOnFail = value;
6926          return this;
6927        }
6928
6929        /**
6930         * @return Whether or not the current test execution will stop on failure for this assert.
6931         */
6932        public boolean getStopTestOnFail() { 
6933          return this.stopTestOnFail == null || this.stopTestOnFail.isEmpty() ? false : this.stopTestOnFail.getValue();
6934        }
6935
6936        /**
6937         * @param value Whether or not the current test execution will stop on failure for this assert.
6938         */
6939        public SetupActionAssertComponent setStopTestOnFail(boolean value) { 
6940            if (this.stopTestOnFail == null)
6941              this.stopTestOnFail = new BooleanType();
6942            this.stopTestOnFail.setValue(value);
6943          return this;
6944        }
6945
6946        /**
6947         * @return {@link #validateProfileId} (The ID of the Profile to validate against.). This is the underlying object with id, value and extensions. The accessor "getValidateProfileId" gives direct access to the value
6948         */
6949        public IdType getValidateProfileIdElement() { 
6950          if (this.validateProfileId == null)
6951            if (Configuration.errorOnAutoCreate())
6952              throw new Error("Attempt to auto-create SetupActionAssertComponent.validateProfileId");
6953            else if (Configuration.doAutoCreate())
6954              this.validateProfileId = new IdType(); // bb
6955          return this.validateProfileId;
6956        }
6957
6958        public boolean hasValidateProfileIdElement() { 
6959          return this.validateProfileId != null && !this.validateProfileId.isEmpty();
6960        }
6961
6962        public boolean hasValidateProfileId() { 
6963          return this.validateProfileId != null && !this.validateProfileId.isEmpty();
6964        }
6965
6966        /**
6967         * @param value {@link #validateProfileId} (The ID of the Profile to validate against.). This is the underlying object with id, value and extensions. The accessor "getValidateProfileId" gives direct access to the value
6968         */
6969        public SetupActionAssertComponent setValidateProfileIdElement(IdType value) { 
6970          this.validateProfileId = value;
6971          return this;
6972        }
6973
6974        /**
6975         * @return The ID of the Profile to validate against.
6976         */
6977        public String getValidateProfileId() { 
6978          return this.validateProfileId == null ? null : this.validateProfileId.getValue();
6979        }
6980
6981        /**
6982         * @param value The ID of the Profile to validate against.
6983         */
6984        public SetupActionAssertComponent setValidateProfileId(String value) { 
6985          if (Utilities.noString(value))
6986            this.validateProfileId = null;
6987          else {
6988            if (this.validateProfileId == null)
6989              this.validateProfileId = new IdType();
6990            this.validateProfileId.setValue(value);
6991          }
6992          return this;
6993        }
6994
6995        /**
6996         * @return {@link #value} (The value to compare to.). This is the underlying object with id, value and extensions. The accessor "getValue" gives direct access to the value
6997         */
6998        public StringType getValueElement() { 
6999          if (this.value == null)
7000            if (Configuration.errorOnAutoCreate())
7001              throw new Error("Attempt to auto-create SetupActionAssertComponent.value");
7002            else if (Configuration.doAutoCreate())
7003              this.value = new StringType(); // bb
7004          return this.value;
7005        }
7006
7007        public boolean hasValueElement() { 
7008          return this.value != null && !this.value.isEmpty();
7009        }
7010
7011        public boolean hasValue() { 
7012          return this.value != null && !this.value.isEmpty();
7013        }
7014
7015        /**
7016         * @param value {@link #value} (The value to compare to.). This is the underlying object with id, value and extensions. The accessor "getValue" gives direct access to the value
7017         */
7018        public SetupActionAssertComponent setValueElement(StringType value) { 
7019          this.value = value;
7020          return this;
7021        }
7022
7023        /**
7024         * @return The value to compare to.
7025         */
7026        public String getValue() { 
7027          return this.value == null ? null : this.value.getValue();
7028        }
7029
7030        /**
7031         * @param value The value to compare to.
7032         */
7033        public SetupActionAssertComponent setValue(String value) { 
7034          if (Utilities.noString(value))
7035            this.value = null;
7036          else {
7037            if (this.value == null)
7038              this.value = new StringType();
7039            this.value.setValue(value);
7040          }
7041          return this;
7042        }
7043
7044        /**
7045         * @return {@link #warningOnly} (Whether or not the test execution will produce a warning only on error for this assert.). This is the underlying object with id, value and extensions. The accessor "getWarningOnly" gives direct access to the value
7046         */
7047        public BooleanType getWarningOnlyElement() { 
7048          if (this.warningOnly == null)
7049            if (Configuration.errorOnAutoCreate())
7050              throw new Error("Attempt to auto-create SetupActionAssertComponent.warningOnly");
7051            else if (Configuration.doAutoCreate())
7052              this.warningOnly = new BooleanType(); // bb
7053          return this.warningOnly;
7054        }
7055
7056        public boolean hasWarningOnlyElement() { 
7057          return this.warningOnly != null && !this.warningOnly.isEmpty();
7058        }
7059
7060        public boolean hasWarningOnly() { 
7061          return this.warningOnly != null && !this.warningOnly.isEmpty();
7062        }
7063
7064        /**
7065         * @param value {@link #warningOnly} (Whether or not the test execution will produce a warning only on error for this assert.). This is the underlying object with id, value and extensions. The accessor "getWarningOnly" gives direct access to the value
7066         */
7067        public SetupActionAssertComponent setWarningOnlyElement(BooleanType value) { 
7068          this.warningOnly = value;
7069          return this;
7070        }
7071
7072        /**
7073         * @return Whether or not the test execution will produce a warning only on error for this assert.
7074         */
7075        public boolean getWarningOnly() { 
7076          return this.warningOnly == null || this.warningOnly.isEmpty() ? false : this.warningOnly.getValue();
7077        }
7078
7079        /**
7080         * @param value Whether or not the test execution will produce a warning only on error for this assert.
7081         */
7082        public SetupActionAssertComponent setWarningOnly(boolean value) { 
7083            if (this.warningOnly == null)
7084              this.warningOnly = new BooleanType();
7085            this.warningOnly.setValue(value);
7086          return this;
7087        }
7088
7089        protected void listChildren(List<Property> children) {
7090          super.listChildren(children);
7091          children.add(new Property("label", "string", "The label would be used for tracking/logging purposes by test engines.", 0, 1, label));
7092          children.add(new Property("description", "string", "The description would be used by test engines for tracking and reporting purposes.", 0, 1, description));
7093          children.add(new Property("direction", "code", "The direction to use for the assertion.", 0, 1, direction));
7094          children.add(new Property("compareToSourceId", "string", "Id of the source fixture used as the contents to be evaluated by either the \"source/expression\" or \"sourceId/path\" definition.", 0, 1, compareToSourceId));
7095          children.add(new Property("compareToSourceExpression", "string", "The FHIRPath expression to evaluate against the source fixture. When compareToSourceId is defined, either compareToSourceExpression or compareToSourcePath must be defined, but not both.", 0, 1, compareToSourceExpression));
7096          children.add(new Property("compareToSourcePath", "string", "XPath or JSONPath expression to evaluate against the source fixture. When compareToSourceId is defined, either compareToSourceExpression or compareToSourcePath must be defined, but not both.", 0, 1, compareToSourcePath));
7097          children.add(new Property("contentType", "code", "The mime-type contents to compare against the request or response message 'Content-Type' header.", 0, 1, contentType));
7098          children.add(new Property("expression", "string", "The FHIRPath expression to be evaluated against the request or response message contents - HTTP headers and payload.", 0, 1, expression));
7099          children.add(new Property("headerField", "string", "The HTTP header field name e.g. 'Location'.", 0, 1, headerField));
7100          children.add(new Property("minimumId", "string", "The ID of a fixture.  Asserts that the response contains at a minimum the fixture specified by minimumId.", 0, 1, minimumId));
7101          children.add(new Property("navigationLinks", "boolean", "Whether or not the test execution performs validation on the bundle navigation links.", 0, 1, navigationLinks));
7102          children.add(new Property("operator", "code", "The operator type defines the conditional behavior of the assert. If not defined, the default is equals.", 0, 1, operator));
7103          children.add(new Property("path", "string", "The XPath or JSONPath expression to be evaluated against the fixture representing the response received from server.", 0, 1, path));
7104          children.add(new Property("requestMethod", "code", "The request method or HTTP operation code to compare against that used by the client system under test.", 0, 1, requestMethod));
7105          children.add(new Property("requestURL", "string", "The value to use in a comparison against the request URL path string.", 0, 1, requestURL));
7106          children.add(new Property("resource", "uri", "The type of the resource.  See the [resource list](resourcelist.html).", 0, 1, resource));
7107          children.add(new Property("response", "code", "okay | created | noContent | notModified | bad | forbidden | notFound | methodNotAllowed | conflict | gone | preconditionFailed | unprocessable.", 0, 1, response));
7108          children.add(new Property("responseCode", "string", "The value of the HTTP response code to be tested.", 0, 1, responseCode));
7109          children.add(new Property("sourceId", "id", "Fixture to evaluate the XPath/JSONPath expression or the headerField  against.", 0, 1, sourceId));
7110          children.add(new Property("stopTestOnFail", "boolean", "Whether or not the current test execution will stop on failure for this assert.", 0, 1, stopTestOnFail));
7111          children.add(new Property("validateProfileId", "id", "The ID of the Profile to validate against.", 0, 1, validateProfileId));
7112          children.add(new Property("value", "string", "The value to compare to.", 0, 1, value));
7113          children.add(new Property("warningOnly", "boolean", "Whether or not the test execution will produce a warning only on error for this assert.", 0, 1, warningOnly));
7114        }
7115
7116        @Override
7117        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
7118          switch (_hash) {
7119          case 102727412: /*label*/  return new Property("label", "string", "The label would be used for tracking/logging purposes by test engines.", 0, 1, label);
7120          case -1724546052: /*description*/  return new Property("description", "string", "The description would be used by test engines for tracking and reporting purposes.", 0, 1, description);
7121          case -962590849: /*direction*/  return new Property("direction", "code", "The direction to use for the assertion.", 0, 1, direction);
7122          case 2081856758: /*compareToSourceId*/  return new Property("compareToSourceId", "string", "Id of the source fixture used as the contents to be evaluated by either the \"source/expression\" or \"sourceId/path\" definition.", 0, 1, compareToSourceId);
7123          case -1415702669: /*compareToSourceExpression*/  return new Property("compareToSourceExpression", "string", "The FHIRPath expression to evaluate against the source fixture. When compareToSourceId is defined, either compareToSourceExpression or compareToSourcePath must be defined, but not both.", 0, 1, compareToSourceExpression);
7124          case -790206144: /*compareToSourcePath*/  return new Property("compareToSourcePath", "string", "XPath or JSONPath expression to evaluate against the source fixture. When compareToSourceId is defined, either compareToSourceExpression or compareToSourcePath must be defined, but not both.", 0, 1, compareToSourcePath);
7125          case -389131437: /*contentType*/  return new Property("contentType", "code", "The mime-type contents to compare against the request or response message 'Content-Type' header.", 0, 1, contentType);
7126          case -1795452264: /*expression*/  return new Property("expression", "string", "The FHIRPath expression to be evaluated against the request or response message contents - HTTP headers and payload.", 0, 1, expression);
7127          case 1160732269: /*headerField*/  return new Property("headerField", "string", "The HTTP header field name e.g. 'Location'.", 0, 1, headerField);
7128          case 818925001: /*minimumId*/  return new Property("minimumId", "string", "The ID of a fixture.  Asserts that the response contains at a minimum the fixture specified by minimumId.", 0, 1, minimumId);
7129          case 1001488901: /*navigationLinks*/  return new Property("navigationLinks", "boolean", "Whether or not the test execution performs validation on the bundle navigation links.", 0, 1, navigationLinks);
7130          case -500553564: /*operator*/  return new Property("operator", "code", "The operator type defines the conditional behavior of the assert. If not defined, the default is equals.", 0, 1, operator);
7131          case 3433509: /*path*/  return new Property("path", "string", "The XPath or JSONPath expression to be evaluated against the fixture representing the response received from server.", 0, 1, path);
7132          case 1217874000: /*requestMethod*/  return new Property("requestMethod", "code", "The request method or HTTP operation code to compare against that used by the client system under test.", 0, 1, requestMethod);
7133          case 37099616: /*requestURL*/  return new Property("requestURL", "string", "The value to use in a comparison against the request URL path string.", 0, 1, requestURL);
7134          case -341064690: /*resource*/  return new Property("resource", "uri", "The type of the resource.  See the [resource list](resourcelist.html).", 0, 1, resource);
7135          case -340323263: /*response*/  return new Property("response", "code", "okay | created | noContent | notModified | bad | forbidden | notFound | methodNotAllowed | conflict | gone | preconditionFailed | unprocessable.", 0, 1, response);
7136          case 1438723534: /*responseCode*/  return new Property("responseCode", "string", "The value of the HTTP response code to be tested.", 0, 1, responseCode);
7137          case 1746327190: /*sourceId*/  return new Property("sourceId", "id", "Fixture to evaluate the XPath/JSONPath expression or the headerField  against.", 0, 1, sourceId);
7138          case -626616719: /*stopTestOnFail*/  return new Property("stopTestOnFail", "boolean", "Whether or not the current test execution will stop on failure for this assert.", 0, 1, stopTestOnFail);
7139          case 1555541038: /*validateProfileId*/  return new Property("validateProfileId", "id", "The ID of the Profile to validate against.", 0, 1, validateProfileId);
7140          case 111972721: /*value*/  return new Property("value", "string", "The value to compare to.", 0, 1, value);
7141          case -481159832: /*warningOnly*/  return new Property("warningOnly", "boolean", "Whether or not the test execution will produce a warning only on error for this assert.", 0, 1, warningOnly);
7142          default: return super.getNamedProperty(_hash, _name, _checkValid);
7143          }
7144
7145        }
7146
7147      @Override
7148      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
7149        switch (hash) {
7150        case 102727412: /*label*/ return this.label == null ? new Base[0] : new Base[] {this.label}; // StringType
7151        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // StringType
7152        case -962590849: /*direction*/ return this.direction == null ? new Base[0] : new Base[] {this.direction}; // Enumeration<AssertionDirectionType>
7153        case 2081856758: /*compareToSourceId*/ return this.compareToSourceId == null ? new Base[0] : new Base[] {this.compareToSourceId}; // StringType
7154        case -1415702669: /*compareToSourceExpression*/ return this.compareToSourceExpression == null ? new Base[0] : new Base[] {this.compareToSourceExpression}; // StringType
7155        case -790206144: /*compareToSourcePath*/ return this.compareToSourcePath == null ? new Base[0] : new Base[] {this.compareToSourcePath}; // StringType
7156        case -389131437: /*contentType*/ return this.contentType == null ? new Base[0] : new Base[] {this.contentType}; // CodeType
7157        case -1795452264: /*expression*/ return this.expression == null ? new Base[0] : new Base[] {this.expression}; // StringType
7158        case 1160732269: /*headerField*/ return this.headerField == null ? new Base[0] : new Base[] {this.headerField}; // StringType
7159        case 818925001: /*minimumId*/ return this.minimumId == null ? new Base[0] : new Base[] {this.minimumId}; // StringType
7160        case 1001488901: /*navigationLinks*/ return this.navigationLinks == null ? new Base[0] : new Base[] {this.navigationLinks}; // BooleanType
7161        case -500553564: /*operator*/ return this.operator == null ? new Base[0] : new Base[] {this.operator}; // Enumeration<AssertionOperatorType>
7162        case 3433509: /*path*/ return this.path == null ? new Base[0] : new Base[] {this.path}; // StringType
7163        case 1217874000: /*requestMethod*/ return this.requestMethod == null ? new Base[0] : new Base[] {this.requestMethod}; // Enumeration<TestScriptRequestMethodCode>
7164        case 37099616: /*requestURL*/ return this.requestURL == null ? new Base[0] : new Base[] {this.requestURL}; // StringType
7165        case -341064690: /*resource*/ return this.resource == null ? new Base[0] : new Base[] {this.resource}; // UriType
7166        case -340323263: /*response*/ return this.response == null ? new Base[0] : new Base[] {this.response}; // Enumeration<AssertionResponseTypes>
7167        case 1438723534: /*responseCode*/ return this.responseCode == null ? new Base[0] : new Base[] {this.responseCode}; // StringType
7168        case 1746327190: /*sourceId*/ return this.sourceId == null ? new Base[0] : new Base[] {this.sourceId}; // IdType
7169        case -626616719: /*stopTestOnFail*/ return this.stopTestOnFail == null ? new Base[0] : new Base[] {this.stopTestOnFail}; // BooleanType
7170        case 1555541038: /*validateProfileId*/ return this.validateProfileId == null ? new Base[0] : new Base[] {this.validateProfileId}; // IdType
7171        case 111972721: /*value*/ return this.value == null ? new Base[0] : new Base[] {this.value}; // StringType
7172        case -481159832: /*warningOnly*/ return this.warningOnly == null ? new Base[0] : new Base[] {this.warningOnly}; // BooleanType
7173        default: return super.getProperty(hash, name, checkValid);
7174        }
7175
7176      }
7177
7178      @Override
7179      public Base setProperty(int hash, String name, Base value) throws FHIRException {
7180        switch (hash) {
7181        case 102727412: // label
7182          this.label = TypeConvertor.castToString(value); // StringType
7183          return value;
7184        case -1724546052: // description
7185          this.description = TypeConvertor.castToString(value); // StringType
7186          return value;
7187        case -962590849: // direction
7188          value = new AssertionDirectionTypeEnumFactory().fromType(TypeConvertor.castToCode(value));
7189          this.direction = (Enumeration) value; // Enumeration<AssertionDirectionType>
7190          return value;
7191        case 2081856758: // compareToSourceId
7192          this.compareToSourceId = TypeConvertor.castToString(value); // StringType
7193          return value;
7194        case -1415702669: // compareToSourceExpression
7195          this.compareToSourceExpression = TypeConvertor.castToString(value); // StringType
7196          return value;
7197        case -790206144: // compareToSourcePath
7198          this.compareToSourcePath = TypeConvertor.castToString(value); // StringType
7199          return value;
7200        case -389131437: // contentType
7201          this.contentType = TypeConvertor.castToCode(value); // CodeType
7202          return value;
7203        case -1795452264: // expression
7204          this.expression = TypeConvertor.castToString(value); // StringType
7205          return value;
7206        case 1160732269: // headerField
7207          this.headerField = TypeConvertor.castToString(value); // StringType
7208          return value;
7209        case 818925001: // minimumId
7210          this.minimumId = TypeConvertor.castToString(value); // StringType
7211          return value;
7212        case 1001488901: // navigationLinks
7213          this.navigationLinks = TypeConvertor.castToBoolean(value); // BooleanType
7214          return value;
7215        case -500553564: // operator
7216          value = new AssertionOperatorTypeEnumFactory().fromType(TypeConvertor.castToCode(value));
7217          this.operator = (Enumeration) value; // Enumeration<AssertionOperatorType>
7218          return value;
7219        case 3433509: // path
7220          this.path = TypeConvertor.castToString(value); // StringType
7221          return value;
7222        case 1217874000: // requestMethod
7223          value = new TestScriptRequestMethodCodeEnumFactory().fromType(TypeConvertor.castToCode(value));
7224          this.requestMethod = (Enumeration) value; // Enumeration<TestScriptRequestMethodCode>
7225          return value;
7226        case 37099616: // requestURL
7227          this.requestURL = TypeConvertor.castToString(value); // StringType
7228          return value;
7229        case -341064690: // resource
7230          this.resource = TypeConvertor.castToUri(value); // UriType
7231          return value;
7232        case -340323263: // response
7233          value = new AssertionResponseTypesEnumFactory().fromType(TypeConvertor.castToCode(value));
7234          this.response = (Enumeration) value; // Enumeration<AssertionResponseTypes>
7235          return value;
7236        case 1438723534: // responseCode
7237          this.responseCode = TypeConvertor.castToString(value); // StringType
7238          return value;
7239        case 1746327190: // sourceId
7240          this.sourceId = TypeConvertor.castToId(value); // IdType
7241          return value;
7242        case -626616719: // stopTestOnFail
7243          this.stopTestOnFail = TypeConvertor.castToBoolean(value); // BooleanType
7244          return value;
7245        case 1555541038: // validateProfileId
7246          this.validateProfileId = TypeConvertor.castToId(value); // IdType
7247          return value;
7248        case 111972721: // value
7249          this.value = TypeConvertor.castToString(value); // StringType
7250          return value;
7251        case -481159832: // warningOnly
7252          this.warningOnly = TypeConvertor.castToBoolean(value); // BooleanType
7253          return value;
7254        default: return super.setProperty(hash, name, value);
7255        }
7256
7257      }
7258
7259      @Override
7260      public Base setProperty(String name, Base value) throws FHIRException {
7261        if (name.equals("label")) {
7262          this.label = TypeConvertor.castToString(value); // StringType
7263        } else if (name.equals("description")) {
7264          this.description = TypeConvertor.castToString(value); // StringType
7265        } else if (name.equals("direction")) {
7266          value = new AssertionDirectionTypeEnumFactory().fromType(TypeConvertor.castToCode(value));
7267          this.direction = (Enumeration) value; // Enumeration<AssertionDirectionType>
7268        } else if (name.equals("compareToSourceId")) {
7269          this.compareToSourceId = TypeConvertor.castToString(value); // StringType
7270        } else if (name.equals("compareToSourceExpression")) {
7271          this.compareToSourceExpression = TypeConvertor.castToString(value); // StringType
7272        } else if (name.equals("compareToSourcePath")) {
7273          this.compareToSourcePath = TypeConvertor.castToString(value); // StringType
7274        } else if (name.equals("contentType")) {
7275          this.contentType = TypeConvertor.castToCode(value); // CodeType
7276        } else if (name.equals("expression")) {
7277          this.expression = TypeConvertor.castToString(value); // StringType
7278        } else if (name.equals("headerField")) {
7279          this.headerField = TypeConvertor.castToString(value); // StringType
7280        } else if (name.equals("minimumId")) {
7281          this.minimumId = TypeConvertor.castToString(value); // StringType
7282        } else if (name.equals("navigationLinks")) {
7283          this.navigationLinks = TypeConvertor.castToBoolean(value); // BooleanType
7284        } else if (name.equals("operator")) {
7285          value = new AssertionOperatorTypeEnumFactory().fromType(TypeConvertor.castToCode(value));
7286          this.operator = (Enumeration) value; // Enumeration<AssertionOperatorType>
7287        } else if (name.equals("path")) {
7288          this.path = TypeConvertor.castToString(value); // StringType
7289        } else if (name.equals("requestMethod")) {
7290          value = new TestScriptRequestMethodCodeEnumFactory().fromType(TypeConvertor.castToCode(value));
7291          this.requestMethod = (Enumeration) value; // Enumeration<TestScriptRequestMethodCode>
7292        } else if (name.equals("requestURL")) {
7293          this.requestURL = TypeConvertor.castToString(value); // StringType
7294        } else if (name.equals("resource")) {
7295          this.resource = TypeConvertor.castToUri(value); // UriType
7296        } else if (name.equals("response")) {
7297          value = new AssertionResponseTypesEnumFactory().fromType(TypeConvertor.castToCode(value));
7298          this.response = (Enumeration) value; // Enumeration<AssertionResponseTypes>
7299        } else if (name.equals("responseCode")) {
7300          this.responseCode = TypeConvertor.castToString(value); // StringType
7301        } else if (name.equals("sourceId")) {
7302          this.sourceId = TypeConvertor.castToId(value); // IdType
7303        } else if (name.equals("stopTestOnFail")) {
7304          this.stopTestOnFail = TypeConvertor.castToBoolean(value); // BooleanType
7305        } else if (name.equals("validateProfileId")) {
7306          this.validateProfileId = TypeConvertor.castToId(value); // IdType
7307        } else if (name.equals("value")) {
7308          this.value = TypeConvertor.castToString(value); // StringType
7309        } else if (name.equals("warningOnly")) {
7310          this.warningOnly = TypeConvertor.castToBoolean(value); // BooleanType
7311        } else
7312          return super.setProperty(name, value);
7313        return value;
7314      }
7315
7316      @Override
7317      public Base makeProperty(int hash, String name) throws FHIRException {
7318        switch (hash) {
7319        case 102727412:  return getLabelElement();
7320        case -1724546052:  return getDescriptionElement();
7321        case -962590849:  return getDirectionElement();
7322        case 2081856758:  return getCompareToSourceIdElement();
7323        case -1415702669:  return getCompareToSourceExpressionElement();
7324        case -790206144:  return getCompareToSourcePathElement();
7325        case -389131437:  return getContentTypeElement();
7326        case -1795452264:  return getExpressionElement();
7327        case 1160732269:  return getHeaderFieldElement();
7328        case 818925001:  return getMinimumIdElement();
7329        case 1001488901:  return getNavigationLinksElement();
7330        case -500553564:  return getOperatorElement();
7331        case 3433509:  return getPathElement();
7332        case 1217874000:  return getRequestMethodElement();
7333        case 37099616:  return getRequestURLElement();
7334        case -341064690:  return getResourceElement();
7335        case -340323263:  return getResponseElement();
7336        case 1438723534:  return getResponseCodeElement();
7337        case 1746327190:  return getSourceIdElement();
7338        case -626616719:  return getStopTestOnFailElement();
7339        case 1555541038:  return getValidateProfileIdElement();
7340        case 111972721:  return getValueElement();
7341        case -481159832:  return getWarningOnlyElement();
7342        default: return super.makeProperty(hash, name);
7343        }
7344
7345      }
7346
7347      @Override
7348      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
7349        switch (hash) {
7350        case 102727412: /*label*/ return new String[] {"string"};
7351        case -1724546052: /*description*/ return new String[] {"string"};
7352        case -962590849: /*direction*/ return new String[] {"code"};
7353        case 2081856758: /*compareToSourceId*/ return new String[] {"string"};
7354        case -1415702669: /*compareToSourceExpression*/ return new String[] {"string"};
7355        case -790206144: /*compareToSourcePath*/ return new String[] {"string"};
7356        case -389131437: /*contentType*/ return new String[] {"code"};
7357        case -1795452264: /*expression*/ return new String[] {"string"};
7358        case 1160732269: /*headerField*/ return new String[] {"string"};
7359        case 818925001: /*minimumId*/ return new String[] {"string"};
7360        case 1001488901: /*navigationLinks*/ return new String[] {"boolean"};
7361        case -500553564: /*operator*/ return new String[] {"code"};
7362        case 3433509: /*path*/ return new String[] {"string"};
7363        case 1217874000: /*requestMethod*/ return new String[] {"code"};
7364        case 37099616: /*requestURL*/ return new String[] {"string"};
7365        case -341064690: /*resource*/ return new String[] {"uri"};
7366        case -340323263: /*response*/ return new String[] {"code"};
7367        case 1438723534: /*responseCode*/ return new String[] {"string"};
7368        case 1746327190: /*sourceId*/ return new String[] {"id"};
7369        case -626616719: /*stopTestOnFail*/ return new String[] {"boolean"};
7370        case 1555541038: /*validateProfileId*/ return new String[] {"id"};
7371        case 111972721: /*value*/ return new String[] {"string"};
7372        case -481159832: /*warningOnly*/ return new String[] {"boolean"};
7373        default: return super.getTypesForProperty(hash, name);
7374        }
7375
7376      }
7377
7378      @Override
7379      public Base addChild(String name) throws FHIRException {
7380        if (name.equals("label")) {
7381          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.assert.label");
7382        }
7383        else if (name.equals("description")) {
7384          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.assert.description");
7385        }
7386        else if (name.equals("direction")) {
7387          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.assert.direction");
7388        }
7389        else if (name.equals("compareToSourceId")) {
7390          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.assert.compareToSourceId");
7391        }
7392        else if (name.equals("compareToSourceExpression")) {
7393          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.assert.compareToSourceExpression");
7394        }
7395        else if (name.equals("compareToSourcePath")) {
7396          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.assert.compareToSourcePath");
7397        }
7398        else if (name.equals("contentType")) {
7399          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.assert.contentType");
7400        }
7401        else if (name.equals("expression")) {
7402          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.assert.expression");
7403        }
7404        else if (name.equals("headerField")) {
7405          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.assert.headerField");
7406        }
7407        else if (name.equals("minimumId")) {
7408          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.assert.minimumId");
7409        }
7410        else if (name.equals("navigationLinks")) {
7411          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.assert.navigationLinks");
7412        }
7413        else if (name.equals("operator")) {
7414          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.assert.operator");
7415        }
7416        else if (name.equals("path")) {
7417          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.assert.path");
7418        }
7419        else if (name.equals("requestMethod")) {
7420          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.assert.requestMethod");
7421        }
7422        else if (name.equals("requestURL")) {
7423          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.assert.requestURL");
7424        }
7425        else if (name.equals("resource")) {
7426          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.assert.resource");
7427        }
7428        else if (name.equals("response")) {
7429          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.assert.response");
7430        }
7431        else if (name.equals("responseCode")) {
7432          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.assert.responseCode");
7433        }
7434        else if (name.equals("sourceId")) {
7435          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.assert.sourceId");
7436        }
7437        else if (name.equals("stopTestOnFail")) {
7438          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.assert.stopTestOnFail");
7439        }
7440        else if (name.equals("validateProfileId")) {
7441          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.assert.validateProfileId");
7442        }
7443        else if (name.equals("value")) {
7444          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.assert.value");
7445        }
7446        else if (name.equals("warningOnly")) {
7447          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.assert.warningOnly");
7448        }
7449        else
7450          return super.addChild(name);
7451      }
7452
7453      public SetupActionAssertComponent copy() {
7454        SetupActionAssertComponent dst = new SetupActionAssertComponent();
7455        copyValues(dst);
7456        return dst;
7457      }
7458
7459      public void copyValues(SetupActionAssertComponent dst) {
7460        super.copyValues(dst);
7461        dst.label = label == null ? null : label.copy();
7462        dst.description = description == null ? null : description.copy();
7463        dst.direction = direction == null ? null : direction.copy();
7464        dst.compareToSourceId = compareToSourceId == null ? null : compareToSourceId.copy();
7465        dst.compareToSourceExpression = compareToSourceExpression == null ? null : compareToSourceExpression.copy();
7466        dst.compareToSourcePath = compareToSourcePath == null ? null : compareToSourcePath.copy();
7467        dst.contentType = contentType == null ? null : contentType.copy();
7468        dst.expression = expression == null ? null : expression.copy();
7469        dst.headerField = headerField == null ? null : headerField.copy();
7470        dst.minimumId = minimumId == null ? null : minimumId.copy();
7471        dst.navigationLinks = navigationLinks == null ? null : navigationLinks.copy();
7472        dst.operator = operator == null ? null : operator.copy();
7473        dst.path = path == null ? null : path.copy();
7474        dst.requestMethod = requestMethod == null ? null : requestMethod.copy();
7475        dst.requestURL = requestURL == null ? null : requestURL.copy();
7476        dst.resource = resource == null ? null : resource.copy();
7477        dst.response = response == null ? null : response.copy();
7478        dst.responseCode = responseCode == null ? null : responseCode.copy();
7479        dst.sourceId = sourceId == null ? null : sourceId.copy();
7480        dst.stopTestOnFail = stopTestOnFail == null ? null : stopTestOnFail.copy();
7481        dst.validateProfileId = validateProfileId == null ? null : validateProfileId.copy();
7482        dst.value = value == null ? null : value.copy();
7483        dst.warningOnly = warningOnly == null ? null : warningOnly.copy();
7484      }
7485
7486      @Override
7487      public boolean equalsDeep(Base other_) {
7488        if (!super.equalsDeep(other_))
7489          return false;
7490        if (!(other_ instanceof SetupActionAssertComponent))
7491          return false;
7492        SetupActionAssertComponent o = (SetupActionAssertComponent) other_;
7493        return compareDeep(label, o.label, true) && compareDeep(description, o.description, true) && compareDeep(direction, o.direction, true)
7494           && compareDeep(compareToSourceId, o.compareToSourceId, true) && compareDeep(compareToSourceExpression, o.compareToSourceExpression, true)
7495           && compareDeep(compareToSourcePath, o.compareToSourcePath, true) && compareDeep(contentType, o.contentType, true)
7496           && compareDeep(expression, o.expression, true) && compareDeep(headerField, o.headerField, true)
7497           && compareDeep(minimumId, o.minimumId, true) && compareDeep(navigationLinks, o.navigationLinks, true)
7498           && compareDeep(operator, o.operator, true) && compareDeep(path, o.path, true) && compareDeep(requestMethod, o.requestMethod, true)
7499           && compareDeep(requestURL, o.requestURL, true) && compareDeep(resource, o.resource, true) && compareDeep(response, o.response, true)
7500           && compareDeep(responseCode, o.responseCode, true) && compareDeep(sourceId, o.sourceId, true) && compareDeep(stopTestOnFail, o.stopTestOnFail, true)
7501           && compareDeep(validateProfileId, o.validateProfileId, true) && compareDeep(value, o.value, true)
7502           && compareDeep(warningOnly, o.warningOnly, true);
7503      }
7504
7505      @Override
7506      public boolean equalsShallow(Base other_) {
7507        if (!super.equalsShallow(other_))
7508          return false;
7509        if (!(other_ instanceof SetupActionAssertComponent))
7510          return false;
7511        SetupActionAssertComponent o = (SetupActionAssertComponent) other_;
7512        return compareValues(label, o.label, true) && compareValues(description, o.description, true) && compareValues(direction, o.direction, true)
7513           && compareValues(compareToSourceId, o.compareToSourceId, true) && compareValues(compareToSourceExpression, o.compareToSourceExpression, true)
7514           && compareValues(compareToSourcePath, o.compareToSourcePath, true) && compareValues(contentType, o.contentType, true)
7515           && compareValues(expression, o.expression, true) && compareValues(headerField, o.headerField, true)
7516           && compareValues(minimumId, o.minimumId, true) && compareValues(navigationLinks, o.navigationLinks, true)
7517           && compareValues(operator, o.operator, true) && compareValues(path, o.path, true) && compareValues(requestMethod, o.requestMethod, true)
7518           && compareValues(requestURL, o.requestURL, true) && compareValues(resource, o.resource, true) && compareValues(response, o.response, true)
7519           && compareValues(responseCode, o.responseCode, true) && compareValues(sourceId, o.sourceId, true) && compareValues(stopTestOnFail, o.stopTestOnFail, true)
7520           && compareValues(validateProfileId, o.validateProfileId, true) && compareValues(value, o.value, true)
7521           && compareValues(warningOnly, o.warningOnly, true);
7522      }
7523
7524      public boolean isEmpty() {
7525        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(label, description, direction
7526          , compareToSourceId, compareToSourceExpression, compareToSourcePath, contentType, expression
7527          , headerField, minimumId, navigationLinks, operator, path, requestMethod, requestURL
7528          , resource, response, responseCode, sourceId, stopTestOnFail, validateProfileId
7529          , value, warningOnly);
7530      }
7531
7532  public String fhirType() {
7533    return "TestScript.setup.action.assert";
7534
7535  }
7536
7537  }
7538
7539    @Block()
7540    public static class TestScriptTestComponent extends BackboneElement implements IBaseBackboneElement {
7541        /**
7542         * The name of this test used for tracking/logging purposes by test engines.
7543         */
7544        @Child(name = "name", type = {StringType.class}, order=1, min=0, max=1, modifier=false, summary=false)
7545        @Description(shortDefinition="Tracking/logging name of this test", formalDefinition="The name of this test used for tracking/logging purposes by test engines." )
7546        protected StringType name;
7547
7548        /**
7549         * A short description of the test used by test engines for tracking and reporting purposes.
7550         */
7551        @Child(name = "description", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=false)
7552        @Description(shortDefinition="Tracking/reporting short description of the test", formalDefinition="A short description of the test used by test engines for tracking and reporting purposes." )
7553        protected StringType description;
7554
7555        /**
7556         * Action would contain either an operation or an assertion.
7557         */
7558        @Child(name = "action", type = {}, order=3, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
7559        @Description(shortDefinition="A test operation or assert to perform", formalDefinition="Action would contain either an operation or an assertion." )
7560        protected List<TestActionComponent> action;
7561
7562        private static final long serialVersionUID = -865006110L;
7563
7564    /**
7565     * Constructor
7566     */
7567      public TestScriptTestComponent() {
7568        super();
7569      }
7570
7571    /**
7572     * Constructor
7573     */
7574      public TestScriptTestComponent(TestActionComponent action) {
7575        super();
7576        this.addAction(action);
7577      }
7578
7579        /**
7580         * @return {@link #name} (The name of this test used for tracking/logging purposes by test engines.). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
7581         */
7582        public StringType getNameElement() { 
7583          if (this.name == null)
7584            if (Configuration.errorOnAutoCreate())
7585              throw new Error("Attempt to auto-create TestScriptTestComponent.name");
7586            else if (Configuration.doAutoCreate())
7587              this.name = new StringType(); // bb
7588          return this.name;
7589        }
7590
7591        public boolean hasNameElement() { 
7592          return this.name != null && !this.name.isEmpty();
7593        }
7594
7595        public boolean hasName() { 
7596          return this.name != null && !this.name.isEmpty();
7597        }
7598
7599        /**
7600         * @param value {@link #name} (The name of this test used for tracking/logging purposes by test engines.). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
7601         */
7602        public TestScriptTestComponent setNameElement(StringType value) { 
7603          this.name = value;
7604          return this;
7605        }
7606
7607        /**
7608         * @return The name of this test used for tracking/logging purposes by test engines.
7609         */
7610        public String getName() { 
7611          return this.name == null ? null : this.name.getValue();
7612        }
7613
7614        /**
7615         * @param value The name of this test used for tracking/logging purposes by test engines.
7616         */
7617        public TestScriptTestComponent setName(String value) { 
7618          if (Utilities.noString(value))
7619            this.name = null;
7620          else {
7621            if (this.name == null)
7622              this.name = new StringType();
7623            this.name.setValue(value);
7624          }
7625          return this;
7626        }
7627
7628        /**
7629         * @return {@link #description} (A short description of the test used by test engines for tracking and reporting purposes.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
7630         */
7631        public StringType getDescriptionElement() { 
7632          if (this.description == null)
7633            if (Configuration.errorOnAutoCreate())
7634              throw new Error("Attempt to auto-create TestScriptTestComponent.description");
7635            else if (Configuration.doAutoCreate())
7636              this.description = new StringType(); // bb
7637          return this.description;
7638        }
7639
7640        public boolean hasDescriptionElement() { 
7641          return this.description != null && !this.description.isEmpty();
7642        }
7643
7644        public boolean hasDescription() { 
7645          return this.description != null && !this.description.isEmpty();
7646        }
7647
7648        /**
7649         * @param value {@link #description} (A short description of the test used by test engines for tracking and reporting purposes.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
7650         */
7651        public TestScriptTestComponent setDescriptionElement(StringType value) { 
7652          this.description = value;
7653          return this;
7654        }
7655
7656        /**
7657         * @return A short description of the test used by test engines for tracking and reporting purposes.
7658         */
7659        public String getDescription() { 
7660          return this.description == null ? null : this.description.getValue();
7661        }
7662
7663        /**
7664         * @param value A short description of the test used by test engines for tracking and reporting purposes.
7665         */
7666        public TestScriptTestComponent setDescription(String value) { 
7667          if (Utilities.noString(value))
7668            this.description = null;
7669          else {
7670            if (this.description == null)
7671              this.description = new StringType();
7672            this.description.setValue(value);
7673          }
7674          return this;
7675        }
7676
7677        /**
7678         * @return {@link #action} (Action would contain either an operation or an assertion.)
7679         */
7680        public List<TestActionComponent> getAction() { 
7681          if (this.action == null)
7682            this.action = new ArrayList<TestActionComponent>();
7683          return this.action;
7684        }
7685
7686        /**
7687         * @return Returns a reference to <code>this</code> for easy method chaining
7688         */
7689        public TestScriptTestComponent setAction(List<TestActionComponent> theAction) { 
7690          this.action = theAction;
7691          return this;
7692        }
7693
7694        public boolean hasAction() { 
7695          if (this.action == null)
7696            return false;
7697          for (TestActionComponent item : this.action)
7698            if (!item.isEmpty())
7699              return true;
7700          return false;
7701        }
7702
7703        public TestActionComponent addAction() { //3
7704          TestActionComponent t = new TestActionComponent();
7705          if (this.action == null)
7706            this.action = new ArrayList<TestActionComponent>();
7707          this.action.add(t);
7708          return t;
7709        }
7710
7711        public TestScriptTestComponent addAction(TestActionComponent t) { //3
7712          if (t == null)
7713            return this;
7714          if (this.action == null)
7715            this.action = new ArrayList<TestActionComponent>();
7716          this.action.add(t);
7717          return this;
7718        }
7719
7720        /**
7721         * @return The first repetition of repeating field {@link #action}, creating it if it does not already exist {3}
7722         */
7723        public TestActionComponent getActionFirstRep() { 
7724          if (getAction().isEmpty()) {
7725            addAction();
7726          }
7727          return getAction().get(0);
7728        }
7729
7730        protected void listChildren(List<Property> children) {
7731          super.listChildren(children);
7732          children.add(new Property("name", "string", "The name of this test used for tracking/logging purposes by test engines.", 0, 1, name));
7733          children.add(new Property("description", "string", "A short description of the test used by test engines for tracking and reporting purposes.", 0, 1, description));
7734          children.add(new Property("action", "", "Action would contain either an operation or an assertion.", 0, java.lang.Integer.MAX_VALUE, action));
7735        }
7736
7737        @Override
7738        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
7739          switch (_hash) {
7740          case 3373707: /*name*/  return new Property("name", "string", "The name of this test used for tracking/logging purposes by test engines.", 0, 1, name);
7741          case -1724546052: /*description*/  return new Property("description", "string", "A short description of the test used by test engines for tracking and reporting purposes.", 0, 1, description);
7742          case -1422950858: /*action*/  return new Property("action", "", "Action would contain either an operation or an assertion.", 0, java.lang.Integer.MAX_VALUE, action);
7743          default: return super.getNamedProperty(_hash, _name, _checkValid);
7744          }
7745
7746        }
7747
7748      @Override
7749      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
7750        switch (hash) {
7751        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
7752        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // StringType
7753        case -1422950858: /*action*/ return this.action == null ? new Base[0] : this.action.toArray(new Base[this.action.size()]); // TestActionComponent
7754        default: return super.getProperty(hash, name, checkValid);
7755        }
7756
7757      }
7758
7759      @Override
7760      public Base setProperty(int hash, String name, Base value) throws FHIRException {
7761        switch (hash) {
7762        case 3373707: // name
7763          this.name = TypeConvertor.castToString(value); // StringType
7764          return value;
7765        case -1724546052: // description
7766          this.description = TypeConvertor.castToString(value); // StringType
7767          return value;
7768        case -1422950858: // action
7769          this.getAction().add((TestActionComponent) value); // TestActionComponent
7770          return value;
7771        default: return super.setProperty(hash, name, value);
7772        }
7773
7774      }
7775
7776      @Override
7777      public Base setProperty(String name, Base value) throws FHIRException {
7778        if (name.equals("name")) {
7779          this.name = TypeConvertor.castToString(value); // StringType
7780        } else if (name.equals("description")) {
7781          this.description = TypeConvertor.castToString(value); // StringType
7782        } else if (name.equals("action")) {
7783          this.getAction().add((TestActionComponent) value);
7784        } else
7785          return super.setProperty(name, value);
7786        return value;
7787      }
7788
7789      @Override
7790      public Base makeProperty(int hash, String name) throws FHIRException {
7791        switch (hash) {
7792        case 3373707:  return getNameElement();
7793        case -1724546052:  return getDescriptionElement();
7794        case -1422950858:  return addAction(); 
7795        default: return super.makeProperty(hash, name);
7796        }
7797
7798      }
7799
7800      @Override
7801      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
7802        switch (hash) {
7803        case 3373707: /*name*/ return new String[] {"string"};
7804        case -1724546052: /*description*/ return new String[] {"string"};
7805        case -1422950858: /*action*/ return new String[] {};
7806        default: return super.getTypesForProperty(hash, name);
7807        }
7808
7809      }
7810
7811      @Override
7812      public Base addChild(String name) throws FHIRException {
7813        if (name.equals("name")) {
7814          throw new FHIRException("Cannot call addChild on a primitive type TestScript.test.name");
7815        }
7816        else if (name.equals("description")) {
7817          throw new FHIRException("Cannot call addChild on a primitive type TestScript.test.description");
7818        }
7819        else if (name.equals("action")) {
7820          return addAction();
7821        }
7822        else
7823          return super.addChild(name);
7824      }
7825
7826      public TestScriptTestComponent copy() {
7827        TestScriptTestComponent dst = new TestScriptTestComponent();
7828        copyValues(dst);
7829        return dst;
7830      }
7831
7832      public void copyValues(TestScriptTestComponent dst) {
7833        super.copyValues(dst);
7834        dst.name = name == null ? null : name.copy();
7835        dst.description = description == null ? null : description.copy();
7836        if (action != null) {
7837          dst.action = new ArrayList<TestActionComponent>();
7838          for (TestActionComponent i : action)
7839            dst.action.add(i.copy());
7840        };
7841      }
7842
7843      @Override
7844      public boolean equalsDeep(Base other_) {
7845        if (!super.equalsDeep(other_))
7846          return false;
7847        if (!(other_ instanceof TestScriptTestComponent))
7848          return false;
7849        TestScriptTestComponent o = (TestScriptTestComponent) other_;
7850        return compareDeep(name, o.name, true) && compareDeep(description, o.description, true) && compareDeep(action, o.action, true)
7851          ;
7852      }
7853
7854      @Override
7855      public boolean equalsShallow(Base other_) {
7856        if (!super.equalsShallow(other_))
7857          return false;
7858        if (!(other_ instanceof TestScriptTestComponent))
7859          return false;
7860        TestScriptTestComponent o = (TestScriptTestComponent) other_;
7861        return compareValues(name, o.name, true) && compareValues(description, o.description, true);
7862      }
7863
7864      public boolean isEmpty() {
7865        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(name, description, action
7866          );
7867      }
7868
7869  public String fhirType() {
7870    return "TestScript.test";
7871
7872  }
7873
7874  }
7875
7876    @Block()
7877    public static class TestActionComponent extends BackboneElement implements IBaseBackboneElement {
7878        /**
7879         * An operation would involve a REST request to a server.
7880         */
7881        @Child(name = "operation", type = {SetupActionOperationComponent.class}, order=1, min=0, max=1, modifier=false, summary=false)
7882        @Description(shortDefinition="The setup operation to perform", formalDefinition="An operation would involve a REST request to a server." )
7883        protected SetupActionOperationComponent operation;
7884
7885        /**
7886         * Evaluates the results of previous operations to determine if the server under test behaves appropriately.
7887         */
7888        @Child(name = "assert", type = {SetupActionAssertComponent.class}, order=2, min=0, max=1, modifier=false, summary=false)
7889        @Description(shortDefinition="The setup assertion to perform", formalDefinition="Evaluates the results of previous operations to determine if the server under test behaves appropriately." )
7890        protected SetupActionAssertComponent assert_;
7891
7892        private static final long serialVersionUID = -252088305L;
7893
7894    /**
7895     * Constructor
7896     */
7897      public TestActionComponent() {
7898        super();
7899      }
7900
7901        /**
7902         * @return {@link #operation} (An operation would involve a REST request to a server.)
7903         */
7904        public SetupActionOperationComponent getOperation() { 
7905          if (this.operation == null)
7906            if (Configuration.errorOnAutoCreate())
7907              throw new Error("Attempt to auto-create TestActionComponent.operation");
7908            else if (Configuration.doAutoCreate())
7909              this.operation = new SetupActionOperationComponent(); // cc
7910          return this.operation;
7911        }
7912
7913        public boolean hasOperation() { 
7914          return this.operation != null && !this.operation.isEmpty();
7915        }
7916
7917        /**
7918         * @param value {@link #operation} (An operation would involve a REST request to a server.)
7919         */
7920        public TestActionComponent setOperation(SetupActionOperationComponent value) { 
7921          this.operation = value;
7922          return this;
7923        }
7924
7925        /**
7926         * @return {@link #assert_} (Evaluates the results of previous operations to determine if the server under test behaves appropriately.)
7927         */
7928        public SetupActionAssertComponent getAssert() { 
7929          if (this.assert_ == null)
7930            if (Configuration.errorOnAutoCreate())
7931              throw new Error("Attempt to auto-create TestActionComponent.assert_");
7932            else if (Configuration.doAutoCreate())
7933              this.assert_ = new SetupActionAssertComponent(); // cc
7934          return this.assert_;
7935        }
7936
7937        public boolean hasAssert() { 
7938          return this.assert_ != null && !this.assert_.isEmpty();
7939        }
7940
7941        /**
7942         * @param value {@link #assert_} (Evaluates the results of previous operations to determine if the server under test behaves appropriately.)
7943         */
7944        public TestActionComponent setAssert(SetupActionAssertComponent value) { 
7945          this.assert_ = value;
7946          return this;
7947        }
7948
7949        protected void listChildren(List<Property> children) {
7950          super.listChildren(children);
7951          children.add(new Property("operation", "@TestScript.setup.action.operation", "An operation would involve a REST request to a server.", 0, 1, operation));
7952          children.add(new Property("assert", "@TestScript.setup.action.assert", "Evaluates the results of previous operations to determine if the server under test behaves appropriately.", 0, 1, assert_));
7953        }
7954
7955        @Override
7956        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
7957          switch (_hash) {
7958          case 1662702951: /*operation*/  return new Property("operation", "@TestScript.setup.action.operation", "An operation would involve a REST request to a server.", 0, 1, operation);
7959          case -1408208058: /*assert*/  return new Property("assert", "@TestScript.setup.action.assert", "Evaluates the results of previous operations to determine if the server under test behaves appropriately.", 0, 1, assert_);
7960          default: return super.getNamedProperty(_hash, _name, _checkValid);
7961          }
7962
7963        }
7964
7965      @Override
7966      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
7967        switch (hash) {
7968        case 1662702951: /*operation*/ return this.operation == null ? new Base[0] : new Base[] {this.operation}; // SetupActionOperationComponent
7969        case -1408208058: /*assert*/ return this.assert_ == null ? new Base[0] : new Base[] {this.assert_}; // SetupActionAssertComponent
7970        default: return super.getProperty(hash, name, checkValid);
7971        }
7972
7973      }
7974
7975      @Override
7976      public Base setProperty(int hash, String name, Base value) throws FHIRException {
7977        switch (hash) {
7978        case 1662702951: // operation
7979          this.operation = (SetupActionOperationComponent) value; // SetupActionOperationComponent
7980          return value;
7981        case -1408208058: // assert
7982          this.assert_ = (SetupActionAssertComponent) value; // SetupActionAssertComponent
7983          return value;
7984        default: return super.setProperty(hash, name, value);
7985        }
7986
7987      }
7988
7989      @Override
7990      public Base setProperty(String name, Base value) throws FHIRException {
7991        if (name.equals("operation")) {
7992          this.operation = (SetupActionOperationComponent) value; // SetupActionOperationComponent
7993        } else if (name.equals("assert")) {
7994          this.assert_ = (SetupActionAssertComponent) value; // SetupActionAssertComponent
7995        } else
7996          return super.setProperty(name, value);
7997        return value;
7998      }
7999
8000      @Override
8001      public Base makeProperty(int hash, String name) throws FHIRException {
8002        switch (hash) {
8003        case 1662702951:  return getOperation();
8004        case -1408208058:  return getAssert();
8005        default: return super.makeProperty(hash, name);
8006        }
8007
8008      }
8009
8010      @Override
8011      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
8012        switch (hash) {
8013        case 1662702951: /*operation*/ return new String[] {"@TestScript.setup.action.operation"};
8014        case -1408208058: /*assert*/ return new String[] {"@TestScript.setup.action.assert"};
8015        default: return super.getTypesForProperty(hash, name);
8016        }
8017
8018      }
8019
8020      @Override
8021      public Base addChild(String name) throws FHIRException {
8022        if (name.equals("operation")) {
8023          this.operation = new SetupActionOperationComponent();
8024          return this.operation;
8025        }
8026        else if (name.equals("assert")) {
8027          this.assert_ = new SetupActionAssertComponent();
8028          return this.assert_;
8029        }
8030        else
8031          return super.addChild(name);
8032      }
8033
8034      public TestActionComponent copy() {
8035        TestActionComponent dst = new TestActionComponent();
8036        copyValues(dst);
8037        return dst;
8038      }
8039
8040      public void copyValues(TestActionComponent dst) {
8041        super.copyValues(dst);
8042        dst.operation = operation == null ? null : operation.copy();
8043        dst.assert_ = assert_ == null ? null : assert_.copy();
8044      }
8045
8046      @Override
8047      public boolean equalsDeep(Base other_) {
8048        if (!super.equalsDeep(other_))
8049          return false;
8050        if (!(other_ instanceof TestActionComponent))
8051          return false;
8052        TestActionComponent o = (TestActionComponent) other_;
8053        return compareDeep(operation, o.operation, true) && compareDeep(assert_, o.assert_, true);
8054      }
8055
8056      @Override
8057      public boolean equalsShallow(Base other_) {
8058        if (!super.equalsShallow(other_))
8059          return false;
8060        if (!(other_ instanceof TestActionComponent))
8061          return false;
8062        TestActionComponent o = (TestActionComponent) other_;
8063        return true;
8064      }
8065
8066      public boolean isEmpty() {
8067        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(operation, assert_);
8068      }
8069
8070  public String fhirType() {
8071    return "TestScript.test.action";
8072
8073  }
8074
8075  }
8076
8077    @Block()
8078    public static class TestScriptTeardownComponent extends BackboneElement implements IBaseBackboneElement {
8079        /**
8080         * The teardown action will only contain an operation.
8081         */
8082        @Child(name = "action", type = {}, order=1, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
8083        @Description(shortDefinition="One or more teardown operations to perform", formalDefinition="The teardown action will only contain an operation." )
8084        protected List<TeardownActionComponent> action;
8085
8086        private static final long serialVersionUID = 1168638089L;
8087
8088    /**
8089     * Constructor
8090     */
8091      public TestScriptTeardownComponent() {
8092        super();
8093      }
8094
8095    /**
8096     * Constructor
8097     */
8098      public TestScriptTeardownComponent(TeardownActionComponent action) {
8099        super();
8100        this.addAction(action);
8101      }
8102
8103        /**
8104         * @return {@link #action} (The teardown action will only contain an operation.)
8105         */
8106        public List<TeardownActionComponent> getAction() { 
8107          if (this.action == null)
8108            this.action = new ArrayList<TeardownActionComponent>();
8109          return this.action;
8110        }
8111
8112        /**
8113         * @return Returns a reference to <code>this</code> for easy method chaining
8114         */
8115        public TestScriptTeardownComponent setAction(List<TeardownActionComponent> theAction) { 
8116          this.action = theAction;
8117          return this;
8118        }
8119
8120        public boolean hasAction() { 
8121          if (this.action == null)
8122            return false;
8123          for (TeardownActionComponent item : this.action)
8124            if (!item.isEmpty())
8125              return true;
8126          return false;
8127        }
8128
8129        public TeardownActionComponent addAction() { //3
8130          TeardownActionComponent t = new TeardownActionComponent();
8131          if (this.action == null)
8132            this.action = new ArrayList<TeardownActionComponent>();
8133          this.action.add(t);
8134          return t;
8135        }
8136
8137        public TestScriptTeardownComponent addAction(TeardownActionComponent t) { //3
8138          if (t == null)
8139            return this;
8140          if (this.action == null)
8141            this.action = new ArrayList<TeardownActionComponent>();
8142          this.action.add(t);
8143          return this;
8144        }
8145
8146        /**
8147         * @return The first repetition of repeating field {@link #action}, creating it if it does not already exist {3}
8148         */
8149        public TeardownActionComponent getActionFirstRep() { 
8150          if (getAction().isEmpty()) {
8151            addAction();
8152          }
8153          return getAction().get(0);
8154        }
8155
8156        protected void listChildren(List<Property> children) {
8157          super.listChildren(children);
8158          children.add(new Property("action", "", "The teardown action will only contain an operation.", 0, java.lang.Integer.MAX_VALUE, action));
8159        }
8160
8161        @Override
8162        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
8163          switch (_hash) {
8164          case -1422950858: /*action*/  return new Property("action", "", "The teardown action will only contain an operation.", 0, java.lang.Integer.MAX_VALUE, action);
8165          default: return super.getNamedProperty(_hash, _name, _checkValid);
8166          }
8167
8168        }
8169
8170      @Override
8171      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
8172        switch (hash) {
8173        case -1422950858: /*action*/ return this.action == null ? new Base[0] : this.action.toArray(new Base[this.action.size()]); // TeardownActionComponent
8174        default: return super.getProperty(hash, name, checkValid);
8175        }
8176
8177      }
8178
8179      @Override
8180      public Base setProperty(int hash, String name, Base value) throws FHIRException {
8181        switch (hash) {
8182        case -1422950858: // action
8183          this.getAction().add((TeardownActionComponent) value); // TeardownActionComponent
8184          return value;
8185        default: return super.setProperty(hash, name, value);
8186        }
8187
8188      }
8189
8190      @Override
8191      public Base setProperty(String name, Base value) throws FHIRException {
8192        if (name.equals("action")) {
8193          this.getAction().add((TeardownActionComponent) value);
8194        } else
8195          return super.setProperty(name, value);
8196        return value;
8197      }
8198
8199      @Override
8200      public Base makeProperty(int hash, String name) throws FHIRException {
8201        switch (hash) {
8202        case -1422950858:  return addAction(); 
8203        default: return super.makeProperty(hash, name);
8204        }
8205
8206      }
8207
8208      @Override
8209      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
8210        switch (hash) {
8211        case -1422950858: /*action*/ return new String[] {};
8212        default: return super.getTypesForProperty(hash, name);
8213        }
8214
8215      }
8216
8217      @Override
8218      public Base addChild(String name) throws FHIRException {
8219        if (name.equals("action")) {
8220          return addAction();
8221        }
8222        else
8223          return super.addChild(name);
8224      }
8225
8226      public TestScriptTeardownComponent copy() {
8227        TestScriptTeardownComponent dst = new TestScriptTeardownComponent();
8228        copyValues(dst);
8229        return dst;
8230      }
8231
8232      public void copyValues(TestScriptTeardownComponent dst) {
8233        super.copyValues(dst);
8234        if (action != null) {
8235          dst.action = new ArrayList<TeardownActionComponent>();
8236          for (TeardownActionComponent i : action)
8237            dst.action.add(i.copy());
8238        };
8239      }
8240
8241      @Override
8242      public boolean equalsDeep(Base other_) {
8243        if (!super.equalsDeep(other_))
8244          return false;
8245        if (!(other_ instanceof TestScriptTeardownComponent))
8246          return false;
8247        TestScriptTeardownComponent o = (TestScriptTeardownComponent) other_;
8248        return compareDeep(action, o.action, true);
8249      }
8250
8251      @Override
8252      public boolean equalsShallow(Base other_) {
8253        if (!super.equalsShallow(other_))
8254          return false;
8255        if (!(other_ instanceof TestScriptTeardownComponent))
8256          return false;
8257        TestScriptTeardownComponent o = (TestScriptTeardownComponent) other_;
8258        return true;
8259      }
8260
8261      public boolean isEmpty() {
8262        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(action);
8263      }
8264
8265  public String fhirType() {
8266    return "TestScript.teardown";
8267
8268  }
8269
8270  }
8271
8272    @Block()
8273    public static class TeardownActionComponent extends BackboneElement implements IBaseBackboneElement {
8274        /**
8275         * An operation would involve a REST request to a server.
8276         */
8277        @Child(name = "operation", type = {SetupActionOperationComponent.class}, order=1, min=1, max=1, modifier=false, summary=false)
8278        @Description(shortDefinition="The teardown operation to perform", formalDefinition="An operation would involve a REST request to a server." )
8279        protected SetupActionOperationComponent operation;
8280
8281        private static final long serialVersionUID = -1099598054L;
8282
8283    /**
8284     * Constructor
8285     */
8286      public TeardownActionComponent() {
8287        super();
8288      }
8289
8290    /**
8291     * Constructor
8292     */
8293      public TeardownActionComponent(SetupActionOperationComponent operation) {
8294        super();
8295        this.setOperation(operation);
8296      }
8297
8298        /**
8299         * @return {@link #operation} (An operation would involve a REST request to a server.)
8300         */
8301        public SetupActionOperationComponent getOperation() { 
8302          if (this.operation == null)
8303            if (Configuration.errorOnAutoCreate())
8304              throw new Error("Attempt to auto-create TeardownActionComponent.operation");
8305            else if (Configuration.doAutoCreate())
8306              this.operation = new SetupActionOperationComponent(); // cc
8307          return this.operation;
8308        }
8309
8310        public boolean hasOperation() { 
8311          return this.operation != null && !this.operation.isEmpty();
8312        }
8313
8314        /**
8315         * @param value {@link #operation} (An operation would involve a REST request to a server.)
8316         */
8317        public TeardownActionComponent setOperation(SetupActionOperationComponent value) { 
8318          this.operation = value;
8319          return this;
8320        }
8321
8322        protected void listChildren(List<Property> children) {
8323          super.listChildren(children);
8324          children.add(new Property("operation", "@TestScript.setup.action.operation", "An operation would involve a REST request to a server.", 0, 1, operation));
8325        }
8326
8327        @Override
8328        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
8329          switch (_hash) {
8330          case 1662702951: /*operation*/  return new Property("operation", "@TestScript.setup.action.operation", "An operation would involve a REST request to a server.", 0, 1, operation);
8331          default: return super.getNamedProperty(_hash, _name, _checkValid);
8332          }
8333
8334        }
8335
8336      @Override
8337      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
8338        switch (hash) {
8339        case 1662702951: /*operation*/ return this.operation == null ? new Base[0] : new Base[] {this.operation}; // SetupActionOperationComponent
8340        default: return super.getProperty(hash, name, checkValid);
8341        }
8342
8343      }
8344
8345      @Override
8346      public Base setProperty(int hash, String name, Base value) throws FHIRException {
8347        switch (hash) {
8348        case 1662702951: // operation
8349          this.operation = (SetupActionOperationComponent) value; // SetupActionOperationComponent
8350          return value;
8351        default: return super.setProperty(hash, name, value);
8352        }
8353
8354      }
8355
8356      @Override
8357      public Base setProperty(String name, Base value) throws FHIRException {
8358        if (name.equals("operation")) {
8359          this.operation = (SetupActionOperationComponent) value; // SetupActionOperationComponent
8360        } else
8361          return super.setProperty(name, value);
8362        return value;
8363      }
8364
8365      @Override
8366      public Base makeProperty(int hash, String name) throws FHIRException {
8367        switch (hash) {
8368        case 1662702951:  return getOperation();
8369        default: return super.makeProperty(hash, name);
8370        }
8371
8372      }
8373
8374      @Override
8375      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
8376        switch (hash) {
8377        case 1662702951: /*operation*/ return new String[] {"@TestScript.setup.action.operation"};
8378        default: return super.getTypesForProperty(hash, name);
8379        }
8380
8381      }
8382
8383      @Override
8384      public Base addChild(String name) throws FHIRException {
8385        if (name.equals("operation")) {
8386          this.operation = new SetupActionOperationComponent();
8387          return this.operation;
8388        }
8389        else
8390          return super.addChild(name);
8391      }
8392
8393      public TeardownActionComponent copy() {
8394        TeardownActionComponent dst = new TeardownActionComponent();
8395        copyValues(dst);
8396        return dst;
8397      }
8398
8399      public void copyValues(TeardownActionComponent dst) {
8400        super.copyValues(dst);
8401        dst.operation = operation == null ? null : operation.copy();
8402      }
8403
8404      @Override
8405      public boolean equalsDeep(Base other_) {
8406        if (!super.equalsDeep(other_))
8407          return false;
8408        if (!(other_ instanceof TeardownActionComponent))
8409          return false;
8410        TeardownActionComponent o = (TeardownActionComponent) other_;
8411        return compareDeep(operation, o.operation, true);
8412      }
8413
8414      @Override
8415      public boolean equalsShallow(Base other_) {
8416        if (!super.equalsShallow(other_))
8417          return false;
8418        if (!(other_ instanceof TeardownActionComponent))
8419          return false;
8420        TeardownActionComponent o = (TeardownActionComponent) other_;
8421        return true;
8422      }
8423
8424      public boolean isEmpty() {
8425        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(operation);
8426      }
8427
8428  public String fhirType() {
8429    return "TestScript.teardown.action";
8430
8431  }
8432
8433  }
8434
8435    /**
8436     * 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.
8437     */
8438    @Child(name = "url", type = {UriType.class}, order=0, min=0, max=1, modifier=false, summary=true)
8439    @Description(shortDefinition="Canonical identifier for this test script, represented as a URI (globally unique)", formalDefinition="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." )
8440    protected UriType url;
8441
8442    /**
8443     * 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.
8444     */
8445    @Child(name = "identifier", type = {Identifier.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
8446    @Description(shortDefinition="Additional identifier for the test script", formalDefinition="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." )
8447    protected List<Identifier> identifier;
8448
8449    /**
8450     * 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.
8451     */
8452    @Child(name = "version", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=true)
8453    @Description(shortDefinition="Business version of the test script", formalDefinition="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." )
8454    protected StringType version;
8455
8456    /**
8457     * Indicates the mechanism used to compare versions to determine which is more current.
8458     */
8459    @Child(name = "versionAlgorithm", type = {StringType.class, Coding.class}, order=3, min=0, max=1, modifier=false, summary=true)
8460    @Description(shortDefinition="How to compare versions", formalDefinition="Indicates the mechanism used to compare versions to determine which is more current." )
8461    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/version-algorithm")
8462    protected DataType versionAlgorithm;
8463
8464    /**
8465     * 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.
8466     */
8467    @Child(name = "name", type = {StringType.class}, order=4, min=1, max=1, modifier=false, summary=true)
8468    @Description(shortDefinition="Name for this test script (computer friendly)", formalDefinition="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." )
8469    protected StringType name;
8470
8471    /**
8472     * A short, descriptive, user-friendly title for the test script.
8473     */
8474    @Child(name = "title", type = {StringType.class}, order=5, min=0, max=1, modifier=false, summary=true)
8475    @Description(shortDefinition="Name for this test script (human friendly)", formalDefinition="A short, descriptive, user-friendly title for the test script." )
8476    protected StringType title;
8477
8478    /**
8479     * The status of this test script. Enables tracking the life-cycle of the content.
8480     */
8481    @Child(name = "status", type = {CodeType.class}, order=6, min=1, max=1, modifier=true, summary=true)
8482    @Description(shortDefinition="draft | active | retired | unknown", formalDefinition="The status of this test script. Enables tracking the life-cycle of the content." )
8483    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/publication-status")
8484    protected Enumeration<PublicationStatus> status;
8485
8486    /**
8487     * 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.
8488     */
8489    @Child(name = "experimental", type = {BooleanType.class}, order=7, min=0, max=1, modifier=false, summary=true)
8490    @Description(shortDefinition="For testing purposes, not real usage", formalDefinition="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." )
8491    protected BooleanType experimental;
8492
8493    /**
8494     * 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.
8495     */
8496    @Child(name = "date", type = {DateTimeType.class}, order=8, min=0, max=1, modifier=false, summary=true)
8497    @Description(shortDefinition="Date last changed", formalDefinition="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." )
8498    protected DateTimeType date;
8499
8500    /**
8501     * The name of the organization or individual responsible for the release and ongoing maintenance of the test script.
8502     */
8503    @Child(name = "publisher", type = {StringType.class}, order=9, min=0, max=1, modifier=false, summary=true)
8504    @Description(shortDefinition="Name of the publisher/steward (organization or individual)", formalDefinition="The name of the organization or individual responsible for the release and ongoing maintenance of the test script." )
8505    protected StringType publisher;
8506
8507    /**
8508     * Contact details to assist a user in finding and communicating with the publisher.
8509     */
8510    @Child(name = "contact", type = {ContactDetail.class}, order=10, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
8511    @Description(shortDefinition="Contact details for the publisher", formalDefinition="Contact details to assist a user in finding and communicating with the publisher." )
8512    protected List<ContactDetail> contact;
8513
8514    /**
8515     * A free text natural language description of the test script from a consumer's perspective.
8516     */
8517    @Child(name = "description", type = {MarkdownType.class}, order=11, min=0, max=1, modifier=false, summary=false)
8518    @Description(shortDefinition="Natural language description of the test script", formalDefinition="A free text natural language description of the test script from a consumer's perspective." )
8519    protected MarkdownType description;
8520
8521    /**
8522     * 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.
8523     */
8524    @Child(name = "useContext", type = {UsageContext.class}, order=12, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
8525    @Description(shortDefinition="The context that the content is intended to support", formalDefinition="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." )
8526    protected List<UsageContext> useContext;
8527
8528    /**
8529     * A legal or geographic region in which the test script is intended to be used.
8530     */
8531    @Child(name = "jurisdiction", type = {CodeableConcept.class}, order=13, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
8532    @Description(shortDefinition="Intended jurisdiction for test script (if applicable)", formalDefinition="A legal or geographic region in which the test script is intended to be used." )
8533    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/jurisdiction")
8534    protected List<CodeableConcept> jurisdiction;
8535
8536    /**
8537     * Explanation of why this test script is needed and why it has been designed as it has.
8538     */
8539    @Child(name = "purpose", type = {MarkdownType.class}, order=14, min=0, max=1, modifier=false, summary=false)
8540    @Description(shortDefinition="Why this test script is defined", formalDefinition="Explanation of why this test script is needed and why it has been designed as it has." )
8541    protected MarkdownType purpose;
8542
8543    /**
8544     * 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.
8545     */
8546    @Child(name = "copyright", type = {MarkdownType.class}, order=15, min=0, max=1, modifier=false, summary=false)
8547    @Description(shortDefinition="Use and/or publishing restrictions", formalDefinition="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." )
8548    protected MarkdownType copyright;
8549
8550    /**
8551     * 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').
8552     */
8553    @Child(name = "copyrightLabel", type = {StringType.class}, order=16, min=0, max=1, modifier=false, summary=false)
8554    @Description(shortDefinition="Copyright holder and year(s)", formalDefinition="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')." )
8555    protected StringType copyrightLabel;
8556
8557    /**
8558     * An abstract server used in operations within this test script in the origin element.
8559     */
8560    @Child(name = "origin", type = {}, order=17, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
8561    @Description(shortDefinition="An abstract server representing a client or sender in a message exchange", formalDefinition="An abstract server used in operations within this test script in the origin element." )
8562    protected List<TestScriptOriginComponent> origin;
8563
8564    /**
8565     * An abstract server used in operations within this test script in the destination element.
8566     */
8567    @Child(name = "destination", type = {}, order=18, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
8568    @Description(shortDefinition="An abstract server representing a destination or receiver in a message exchange", formalDefinition="An abstract server used in operations within this test script in the destination element." )
8569    protected List<TestScriptDestinationComponent> destination;
8570
8571    /**
8572     * The required capability must exist and are assumed to function correctly on the FHIR server being tested.
8573     */
8574    @Child(name = "metadata", type = {}, order=19, min=0, max=1, modifier=false, summary=false)
8575    @Description(shortDefinition="Required capability that is assumed to function correctly on the FHIR server being tested", formalDefinition="The required capability must exist and are assumed to function correctly on the FHIR server being tested." )
8576    protected TestScriptMetadataComponent metadata;
8577
8578    /**
8579     * 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.
8580     */
8581    @Child(name = "scope", type = {}, order=20, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
8582    @Description(shortDefinition="Indication of the artifact(s) that are tested by this test case", formalDefinition="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." )
8583    protected List<TestScriptScopeComponent> scope;
8584
8585    /**
8586     * Fixture in the test script - by reference (uri). All fixtures are required for the test script to execute.
8587     */
8588    @Child(name = "fixture", type = {}, order=21, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
8589    @Description(shortDefinition="Fixture in the test script - by reference (uri)", formalDefinition="Fixture in the test script - by reference (uri). All fixtures are required for the test script to execute." )
8590    protected List<TestScriptFixtureComponent> fixture;
8591
8592    /**
8593     * Reference to the profile to be used for validation.
8594     */
8595    @Child(name = "profile", type = {CanonicalType.class}, order=22, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
8596    @Description(shortDefinition="Reference of the validation profile", formalDefinition="Reference to the profile to be used for validation." )
8597    protected List<CanonicalType> profile;
8598
8599    /**
8600     * Variable is set based either on element value in response body or on header field value in the response headers.
8601     */
8602    @Child(name = "variable", type = {}, order=23, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
8603    @Description(shortDefinition="Placeholder for evaluated elements", formalDefinition="Variable is set based either on element value in response body or on header field value in the response headers." )
8604    protected List<TestScriptVariableComponent> variable;
8605
8606    /**
8607     * A series of required setup operations before tests are executed.
8608     */
8609    @Child(name = "setup", type = {}, order=24, min=0, max=1, modifier=false, summary=false)
8610    @Description(shortDefinition="A series of required setup operations before tests are executed", formalDefinition="A series of required setup operations before tests are executed." )
8611    protected TestScriptSetupComponent setup;
8612
8613    /**
8614     * A test in this script.
8615     */
8616    @Child(name = "test", type = {}, order=25, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
8617    @Description(shortDefinition="A test in this script", formalDefinition="A test in this script." )
8618    protected List<TestScriptTestComponent> test;
8619
8620    /**
8621     * A series of operations required to clean up after all the tests are executed (successfully or otherwise).
8622     */
8623    @Child(name = "teardown", type = {}, order=26, min=0, max=1, modifier=false, summary=false)
8624    @Description(shortDefinition="A series of required clean up steps", formalDefinition="A series of operations required to clean up after all the tests are executed (successfully or otherwise)." )
8625    protected TestScriptTeardownComponent teardown;
8626
8627    private static final long serialVersionUID = 1566648997L;
8628
8629  /**
8630   * Constructor
8631   */
8632    public TestScript() {
8633      super();
8634    }
8635
8636  /**
8637   * Constructor
8638   */
8639    public TestScript(String name, PublicationStatus status) {
8640      super();
8641      this.setName(name);
8642      this.setStatus(status);
8643    }
8644
8645    /**
8646     * @return {@link #url} (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.). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
8647     */
8648    public UriType getUrlElement() { 
8649      if (this.url == null)
8650        if (Configuration.errorOnAutoCreate())
8651          throw new Error("Attempt to auto-create TestScript.url");
8652        else if (Configuration.doAutoCreate())
8653          this.url = new UriType(); // bb
8654      return this.url;
8655    }
8656
8657    public boolean hasUrlElement() { 
8658      return this.url != null && !this.url.isEmpty();
8659    }
8660
8661    public boolean hasUrl() { 
8662      return this.url != null && !this.url.isEmpty();
8663    }
8664
8665    /**
8666     * @param value {@link #url} (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.). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
8667     */
8668    public TestScript setUrlElement(UriType value) { 
8669      this.url = value;
8670      return this;
8671    }
8672
8673    /**
8674     * @return 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.
8675     */
8676    public String getUrl() { 
8677      return this.url == null ? null : this.url.getValue();
8678    }
8679
8680    /**
8681     * @param value 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.
8682     */
8683    public TestScript setUrl(String value) { 
8684      if (Utilities.noString(value))
8685        this.url = null;
8686      else {
8687        if (this.url == null)
8688          this.url = new UriType();
8689        this.url.setValue(value);
8690      }
8691      return this;
8692    }
8693
8694    /**
8695     * @return {@link #identifier} (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.)
8696     */
8697    public List<Identifier> getIdentifier() { 
8698      if (this.identifier == null)
8699        this.identifier = new ArrayList<Identifier>();
8700      return this.identifier;
8701    }
8702
8703    /**
8704     * @return Returns a reference to <code>this</code> for easy method chaining
8705     */
8706    public TestScript setIdentifier(List<Identifier> theIdentifier) { 
8707      this.identifier = theIdentifier;
8708      return this;
8709    }
8710
8711    public boolean hasIdentifier() { 
8712      if (this.identifier == null)
8713        return false;
8714      for (Identifier item : this.identifier)
8715        if (!item.isEmpty())
8716          return true;
8717      return false;
8718    }
8719
8720    public Identifier addIdentifier() { //3
8721      Identifier t = new Identifier();
8722      if (this.identifier == null)
8723        this.identifier = new ArrayList<Identifier>();
8724      this.identifier.add(t);
8725      return t;
8726    }
8727
8728    public TestScript addIdentifier(Identifier t) { //3
8729      if (t == null)
8730        return this;
8731      if (this.identifier == null)
8732        this.identifier = new ArrayList<Identifier>();
8733      this.identifier.add(t);
8734      return this;
8735    }
8736
8737    /**
8738     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {3}
8739     */
8740    public Identifier getIdentifierFirstRep() { 
8741      if (getIdentifier().isEmpty()) {
8742        addIdentifier();
8743      }
8744      return getIdentifier().get(0);
8745    }
8746
8747    /**
8748     * @return {@link #version} (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.). This is the underlying object with id, value and extensions. The accessor "getVersion" gives direct access to the value
8749     */
8750    public StringType getVersionElement() { 
8751      if (this.version == null)
8752        if (Configuration.errorOnAutoCreate())
8753          throw new Error("Attempt to auto-create TestScript.version");
8754        else if (Configuration.doAutoCreate())
8755          this.version = new StringType(); // bb
8756      return this.version;
8757    }
8758
8759    public boolean hasVersionElement() { 
8760      return this.version != null && !this.version.isEmpty();
8761    }
8762
8763    public boolean hasVersion() { 
8764      return this.version != null && !this.version.isEmpty();
8765    }
8766
8767    /**
8768     * @param value {@link #version} (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.). This is the underlying object with id, value and extensions. The accessor "getVersion" gives direct access to the value
8769     */
8770    public TestScript setVersionElement(StringType value) { 
8771      this.version = value;
8772      return this;
8773    }
8774
8775    /**
8776     * @return 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.
8777     */
8778    public String getVersion() { 
8779      return this.version == null ? null : this.version.getValue();
8780    }
8781
8782    /**
8783     * @param value 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.
8784     */
8785    public TestScript setVersion(String value) { 
8786      if (Utilities.noString(value))
8787        this.version = null;
8788      else {
8789        if (this.version == null)
8790          this.version = new StringType();
8791        this.version.setValue(value);
8792      }
8793      return this;
8794    }
8795
8796    /**
8797     * @return {@link #versionAlgorithm} (Indicates the mechanism used to compare versions to determine which is more current.)
8798     */
8799    public DataType getVersionAlgorithm() { 
8800      return this.versionAlgorithm;
8801    }
8802
8803    /**
8804     * @return {@link #versionAlgorithm} (Indicates the mechanism used to compare versions to determine which is more current.)
8805     */
8806    public StringType getVersionAlgorithmStringType() throws FHIRException { 
8807      if (this.versionAlgorithm == null)
8808        this.versionAlgorithm = new StringType();
8809      if (!(this.versionAlgorithm instanceof StringType))
8810        throw new FHIRException("Type mismatch: the type StringType was expected, but "+this.versionAlgorithm.getClass().getName()+" was encountered");
8811      return (StringType) this.versionAlgorithm;
8812    }
8813
8814    public boolean hasVersionAlgorithmStringType() { 
8815      return this != null && this.versionAlgorithm instanceof StringType;
8816    }
8817
8818    /**
8819     * @return {@link #versionAlgorithm} (Indicates the mechanism used to compare versions to determine which is more current.)
8820     */
8821    public Coding getVersionAlgorithmCoding() throws FHIRException { 
8822      if (this.versionAlgorithm == null)
8823        this.versionAlgorithm = new Coding();
8824      if (!(this.versionAlgorithm instanceof Coding))
8825        throw new FHIRException("Type mismatch: the type Coding was expected, but "+this.versionAlgorithm.getClass().getName()+" was encountered");
8826      return (Coding) this.versionAlgorithm;
8827    }
8828
8829    public boolean hasVersionAlgorithmCoding() { 
8830      return this != null && this.versionAlgorithm instanceof Coding;
8831    }
8832
8833    public boolean hasVersionAlgorithm() { 
8834      return this.versionAlgorithm != null && !this.versionAlgorithm.isEmpty();
8835    }
8836
8837    /**
8838     * @param value {@link #versionAlgorithm} (Indicates the mechanism used to compare versions to determine which is more current.)
8839     */
8840    public TestScript setVersionAlgorithm(DataType value) { 
8841      if (value != null && !(value instanceof StringType || value instanceof Coding))
8842        throw new Error("Not the right type for TestScript.versionAlgorithm[x]: "+value.fhirType());
8843      this.versionAlgorithm = value;
8844      return this;
8845    }
8846
8847    /**
8848     * @return {@link #name} (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.). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
8849     */
8850    public StringType getNameElement() { 
8851      if (this.name == null)
8852        if (Configuration.errorOnAutoCreate())
8853          throw new Error("Attempt to auto-create TestScript.name");
8854        else if (Configuration.doAutoCreate())
8855          this.name = new StringType(); // bb
8856      return this.name;
8857    }
8858
8859    public boolean hasNameElement() { 
8860      return this.name != null && !this.name.isEmpty();
8861    }
8862
8863    public boolean hasName() { 
8864      return this.name != null && !this.name.isEmpty();
8865    }
8866
8867    /**
8868     * @param value {@link #name} (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.). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
8869     */
8870    public TestScript setNameElement(StringType value) { 
8871      this.name = value;
8872      return this;
8873    }
8874
8875    /**
8876     * @return 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.
8877     */
8878    public String getName() { 
8879      return this.name == null ? null : this.name.getValue();
8880    }
8881
8882    /**
8883     * @param value 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.
8884     */
8885    public TestScript setName(String value) { 
8886        if (this.name == null)
8887          this.name = new StringType();
8888        this.name.setValue(value);
8889      return this;
8890    }
8891
8892    /**
8893     * @return {@link #title} (A short, descriptive, user-friendly title for the test script.). This is the underlying object with id, value and extensions. The accessor "getTitle" gives direct access to the value
8894     */
8895    public StringType getTitleElement() { 
8896      if (this.title == null)
8897        if (Configuration.errorOnAutoCreate())
8898          throw new Error("Attempt to auto-create TestScript.title");
8899        else if (Configuration.doAutoCreate())
8900          this.title = new StringType(); // bb
8901      return this.title;
8902    }
8903
8904    public boolean hasTitleElement() { 
8905      return this.title != null && !this.title.isEmpty();
8906    }
8907
8908    public boolean hasTitle() { 
8909      return this.title != null && !this.title.isEmpty();
8910    }
8911
8912    /**
8913     * @param value {@link #title} (A short, descriptive, user-friendly title for the test script.). This is the underlying object with id, value and extensions. The accessor "getTitle" gives direct access to the value
8914     */
8915    public TestScript setTitleElement(StringType value) { 
8916      this.title = value;
8917      return this;
8918    }
8919
8920    /**
8921     * @return A short, descriptive, user-friendly title for the test script.
8922     */
8923    public String getTitle() { 
8924      return this.title == null ? null : this.title.getValue();
8925    }
8926
8927    /**
8928     * @param value A short, descriptive, user-friendly title for the test script.
8929     */
8930    public TestScript setTitle(String value) { 
8931      if (Utilities.noString(value))
8932        this.title = null;
8933      else {
8934        if (this.title == null)
8935          this.title = new StringType();
8936        this.title.setValue(value);
8937      }
8938      return this;
8939    }
8940
8941    /**
8942     * @return {@link #status} (The status of this test script. Enables tracking the life-cycle of the content.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
8943     */
8944    public Enumeration<PublicationStatus> getStatusElement() { 
8945      if (this.status == null)
8946        if (Configuration.errorOnAutoCreate())
8947          throw new Error("Attempt to auto-create TestScript.status");
8948        else if (Configuration.doAutoCreate())
8949          this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory()); // bb
8950      return this.status;
8951    }
8952
8953    public boolean hasStatusElement() { 
8954      return this.status != null && !this.status.isEmpty();
8955    }
8956
8957    public boolean hasStatus() { 
8958      return this.status != null && !this.status.isEmpty();
8959    }
8960
8961    /**
8962     * @param value {@link #status} (The status of this test script. Enables tracking the life-cycle of the content.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
8963     */
8964    public TestScript setStatusElement(Enumeration<PublicationStatus> value) { 
8965      this.status = value;
8966      return this;
8967    }
8968
8969    /**
8970     * @return The status of this test script. Enables tracking the life-cycle of the content.
8971     */
8972    public PublicationStatus getStatus() { 
8973      return this.status == null ? null : this.status.getValue();
8974    }
8975
8976    /**
8977     * @param value The status of this test script. Enables tracking the life-cycle of the content.
8978     */
8979    public TestScript setStatus(PublicationStatus value) { 
8980        if (this.status == null)
8981          this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory());
8982        this.status.setValue(value);
8983      return this;
8984    }
8985
8986    /**
8987     * @return {@link #experimental} (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.). This is the underlying object with id, value and extensions. The accessor "getExperimental" gives direct access to the value
8988     */
8989    public BooleanType getExperimentalElement() { 
8990      if (this.experimental == null)
8991        if (Configuration.errorOnAutoCreate())
8992          throw new Error("Attempt to auto-create TestScript.experimental");
8993        else if (Configuration.doAutoCreate())
8994          this.experimental = new BooleanType(); // bb
8995      return this.experimental;
8996    }
8997
8998    public boolean hasExperimentalElement() { 
8999      return this.experimental != null && !this.experimental.isEmpty();
9000    }
9001
9002    public boolean hasExperimental() { 
9003      return this.experimental != null && !this.experimental.isEmpty();
9004    }
9005
9006    /**
9007     * @param value {@link #experimental} (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.). This is the underlying object with id, value and extensions. The accessor "getExperimental" gives direct access to the value
9008     */
9009    public TestScript setExperimentalElement(BooleanType value) { 
9010      this.experimental = value;
9011      return this;
9012    }
9013
9014    /**
9015     * @return 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.
9016     */
9017    public boolean getExperimental() { 
9018      return this.experimental == null || this.experimental.isEmpty() ? false : this.experimental.getValue();
9019    }
9020
9021    /**
9022     * @param value 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.
9023     */
9024    public TestScript setExperimental(boolean value) { 
9025        if (this.experimental == null)
9026          this.experimental = new BooleanType();
9027        this.experimental.setValue(value);
9028      return this;
9029    }
9030
9031    /**
9032     * @return {@link #date} (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.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
9033     */
9034    public DateTimeType getDateElement() { 
9035      if (this.date == null)
9036        if (Configuration.errorOnAutoCreate())
9037          throw new Error("Attempt to auto-create TestScript.date");
9038        else if (Configuration.doAutoCreate())
9039          this.date = new DateTimeType(); // bb
9040      return this.date;
9041    }
9042
9043    public boolean hasDateElement() { 
9044      return this.date != null && !this.date.isEmpty();
9045    }
9046
9047    public boolean hasDate() { 
9048      return this.date != null && !this.date.isEmpty();
9049    }
9050
9051    /**
9052     * @param value {@link #date} (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.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
9053     */
9054    public TestScript setDateElement(DateTimeType value) { 
9055      this.date = value;
9056      return this;
9057    }
9058
9059    /**
9060     * @return 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.
9061     */
9062    public Date getDate() { 
9063      return this.date == null ? null : this.date.getValue();
9064    }
9065
9066    /**
9067     * @param value 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.
9068     */
9069    public TestScript setDate(Date value) { 
9070      if (value == null)
9071        this.date = null;
9072      else {
9073        if (this.date == null)
9074          this.date = new DateTimeType();
9075        this.date.setValue(value);
9076      }
9077      return this;
9078    }
9079
9080    /**
9081     * @return {@link #publisher} (The name of the organization or individual responsible for the release and ongoing maintenance of the test script.). This is the underlying object with id, value and extensions. The accessor "getPublisher" gives direct access to the value
9082     */
9083    public StringType getPublisherElement() { 
9084      if (this.publisher == null)
9085        if (Configuration.errorOnAutoCreate())
9086          throw new Error("Attempt to auto-create TestScript.publisher");
9087        else if (Configuration.doAutoCreate())
9088          this.publisher = new StringType(); // bb
9089      return this.publisher;
9090    }
9091
9092    public boolean hasPublisherElement() { 
9093      return this.publisher != null && !this.publisher.isEmpty();
9094    }
9095
9096    public boolean hasPublisher() { 
9097      return this.publisher != null && !this.publisher.isEmpty();
9098    }
9099
9100    /**
9101     * @param value {@link #publisher} (The name of the organization or individual responsible for the release and ongoing maintenance of the test script.). This is the underlying object with id, value and extensions. The accessor "getPublisher" gives direct access to the value
9102     */
9103    public TestScript setPublisherElement(StringType value) { 
9104      this.publisher = value;
9105      return this;
9106    }
9107
9108    /**
9109     * @return The name of the organization or individual responsible for the release and ongoing maintenance of the test script.
9110     */
9111    public String getPublisher() { 
9112      return this.publisher == null ? null : this.publisher.getValue();
9113    }
9114
9115    /**
9116     * @param value The name of the organization or individual responsible for the release and ongoing maintenance of the test script.
9117     */
9118    public TestScript setPublisher(String value) { 
9119      if (Utilities.noString(value))
9120        this.publisher = null;
9121      else {
9122        if (this.publisher == null)
9123          this.publisher = new StringType();
9124        this.publisher.setValue(value);
9125      }
9126      return this;
9127    }
9128
9129    /**
9130     * @return {@link #contact} (Contact details to assist a user in finding and communicating with the publisher.)
9131     */
9132    public List<ContactDetail> getContact() { 
9133      if (this.contact == null)
9134        this.contact = new ArrayList<ContactDetail>();
9135      return this.contact;
9136    }
9137
9138    /**
9139     * @return Returns a reference to <code>this</code> for easy method chaining
9140     */
9141    public TestScript setContact(List<ContactDetail> theContact) { 
9142      this.contact = theContact;
9143      return this;
9144    }
9145
9146    public boolean hasContact() { 
9147      if (this.contact == null)
9148        return false;
9149      for (ContactDetail item : this.contact)
9150        if (!item.isEmpty())
9151          return true;
9152      return false;
9153    }
9154
9155    public ContactDetail addContact() { //3
9156      ContactDetail t = new ContactDetail();
9157      if (this.contact == null)
9158        this.contact = new ArrayList<ContactDetail>();
9159      this.contact.add(t);
9160      return t;
9161    }
9162
9163    public TestScript addContact(ContactDetail t) { //3
9164      if (t == null)
9165        return this;
9166      if (this.contact == null)
9167        this.contact = new ArrayList<ContactDetail>();
9168      this.contact.add(t);
9169      return this;
9170    }
9171
9172    /**
9173     * @return The first repetition of repeating field {@link #contact}, creating it if it does not already exist {3}
9174     */
9175    public ContactDetail getContactFirstRep() { 
9176      if (getContact().isEmpty()) {
9177        addContact();
9178      }
9179      return getContact().get(0);
9180    }
9181
9182    /**
9183     * @return {@link #description} (A free text natural language description of the test script from a consumer's perspective.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
9184     */
9185    public MarkdownType getDescriptionElement() { 
9186      if (this.description == null)
9187        if (Configuration.errorOnAutoCreate())
9188          throw new Error("Attempt to auto-create TestScript.description");
9189        else if (Configuration.doAutoCreate())
9190          this.description = new MarkdownType(); // bb
9191      return this.description;
9192    }
9193
9194    public boolean hasDescriptionElement() { 
9195      return this.description != null && !this.description.isEmpty();
9196    }
9197
9198    public boolean hasDescription() { 
9199      return this.description != null && !this.description.isEmpty();
9200    }
9201
9202    /**
9203     * @param value {@link #description} (A free text natural language description of the test script from a consumer's perspective.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
9204     */
9205    public TestScript setDescriptionElement(MarkdownType value) { 
9206      this.description = value;
9207      return this;
9208    }
9209
9210    /**
9211     * @return A free text natural language description of the test script from a consumer's perspective.
9212     */
9213    public String getDescription() { 
9214      return this.description == null ? null : this.description.getValue();
9215    }
9216
9217    /**
9218     * @param value A free text natural language description of the test script from a consumer's perspective.
9219     */
9220    public TestScript setDescription(String value) { 
9221      if (value == null)
9222        this.description = null;
9223      else {
9224        if (this.description == null)
9225          this.description = new MarkdownType();
9226        this.description.setValue(value);
9227      }
9228      return this;
9229    }
9230
9231    /**
9232     * @return {@link #useContext} (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.)
9233     */
9234    public List<UsageContext> getUseContext() { 
9235      if (this.useContext == null)
9236        this.useContext = new ArrayList<UsageContext>();
9237      return this.useContext;
9238    }
9239
9240    /**
9241     * @return Returns a reference to <code>this</code> for easy method chaining
9242     */
9243    public TestScript setUseContext(List<UsageContext> theUseContext) { 
9244      this.useContext = theUseContext;
9245      return this;
9246    }
9247
9248    public boolean hasUseContext() { 
9249      if (this.useContext == null)
9250        return false;
9251      for (UsageContext item : this.useContext)
9252        if (!item.isEmpty())
9253          return true;
9254      return false;
9255    }
9256
9257    public UsageContext addUseContext() { //3
9258      UsageContext t = new UsageContext();
9259      if (this.useContext == null)
9260        this.useContext = new ArrayList<UsageContext>();
9261      this.useContext.add(t);
9262      return t;
9263    }
9264
9265    public TestScript addUseContext(UsageContext t) { //3
9266      if (t == null)
9267        return this;
9268      if (this.useContext == null)
9269        this.useContext = new ArrayList<UsageContext>();
9270      this.useContext.add(t);
9271      return this;
9272    }
9273
9274    /**
9275     * @return The first repetition of repeating field {@link #useContext}, creating it if it does not already exist {3}
9276     */
9277    public UsageContext getUseContextFirstRep() { 
9278      if (getUseContext().isEmpty()) {
9279        addUseContext();
9280      }
9281      return getUseContext().get(0);
9282    }
9283
9284    /**
9285     * @return {@link #jurisdiction} (A legal or geographic region in which the test script is intended to be used.)
9286     */
9287    public List<CodeableConcept> getJurisdiction() { 
9288      if (this.jurisdiction == null)
9289        this.jurisdiction = new ArrayList<CodeableConcept>();
9290      return this.jurisdiction;
9291    }
9292
9293    /**
9294     * @return Returns a reference to <code>this</code> for easy method chaining
9295     */
9296    public TestScript setJurisdiction(List<CodeableConcept> theJurisdiction) { 
9297      this.jurisdiction = theJurisdiction;
9298      return this;
9299    }
9300
9301    public boolean hasJurisdiction() { 
9302      if (this.jurisdiction == null)
9303        return false;
9304      for (CodeableConcept item : this.jurisdiction)
9305        if (!item.isEmpty())
9306          return true;
9307      return false;
9308    }
9309
9310    public CodeableConcept addJurisdiction() { //3
9311      CodeableConcept t = new CodeableConcept();
9312      if (this.jurisdiction == null)
9313        this.jurisdiction = new ArrayList<CodeableConcept>();
9314      this.jurisdiction.add(t);
9315      return t;
9316    }
9317
9318    public TestScript addJurisdiction(CodeableConcept t) { //3
9319      if (t == null)
9320        return this;
9321      if (this.jurisdiction == null)
9322        this.jurisdiction = new ArrayList<CodeableConcept>();
9323      this.jurisdiction.add(t);
9324      return this;
9325    }
9326
9327    /**
9328     * @return The first repetition of repeating field {@link #jurisdiction}, creating it if it does not already exist {3}
9329     */
9330    public CodeableConcept getJurisdictionFirstRep() { 
9331      if (getJurisdiction().isEmpty()) {
9332        addJurisdiction();
9333      }
9334      return getJurisdiction().get(0);
9335    }
9336
9337    /**
9338     * @return {@link #purpose} (Explanation of why this test script is needed and why it has been designed as it has.). This is the underlying object with id, value and extensions. The accessor "getPurpose" gives direct access to the value
9339     */
9340    public MarkdownType getPurposeElement() { 
9341      if (this.purpose == null)
9342        if (Configuration.errorOnAutoCreate())
9343          throw new Error("Attempt to auto-create TestScript.purpose");
9344        else if (Configuration.doAutoCreate())
9345          this.purpose = new MarkdownType(); // bb
9346      return this.purpose;
9347    }
9348
9349    public boolean hasPurposeElement() { 
9350      return this.purpose != null && !this.purpose.isEmpty();
9351    }
9352
9353    public boolean hasPurpose() { 
9354      return this.purpose != null && !this.purpose.isEmpty();
9355    }
9356
9357    /**
9358     * @param value {@link #purpose} (Explanation of why this test script is needed and why it has been designed as it has.). This is the underlying object with id, value and extensions. The accessor "getPurpose" gives direct access to the value
9359     */
9360    public TestScript setPurposeElement(MarkdownType value) { 
9361      this.purpose = value;
9362      return this;
9363    }
9364
9365    /**
9366     * @return Explanation of why this test script is needed and why it has been designed as it has.
9367     */
9368    public String getPurpose() { 
9369      return this.purpose == null ? null : this.purpose.getValue();
9370    }
9371
9372    /**
9373     * @param value Explanation of why this test script is needed and why it has been designed as it has.
9374     */
9375    public TestScript setPurpose(String value) { 
9376      if (value == null)
9377        this.purpose = null;
9378      else {
9379        if (this.purpose == null)
9380          this.purpose = new MarkdownType();
9381        this.purpose.setValue(value);
9382      }
9383      return this;
9384    }
9385
9386    /**
9387     * @return {@link #copyright} (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.). This is the underlying object with id, value and extensions. The accessor "getCopyright" gives direct access to the value
9388     */
9389    public MarkdownType getCopyrightElement() { 
9390      if (this.copyright == null)
9391        if (Configuration.errorOnAutoCreate())
9392          throw new Error("Attempt to auto-create TestScript.copyright");
9393        else if (Configuration.doAutoCreate())
9394          this.copyright = new MarkdownType(); // bb
9395      return this.copyright;
9396    }
9397
9398    public boolean hasCopyrightElement() { 
9399      return this.copyright != null && !this.copyright.isEmpty();
9400    }
9401
9402    public boolean hasCopyright() { 
9403      return this.copyright != null && !this.copyright.isEmpty();
9404    }
9405
9406    /**
9407     * @param value {@link #copyright} (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.). This is the underlying object with id, value and extensions. The accessor "getCopyright" gives direct access to the value
9408     */
9409    public TestScript setCopyrightElement(MarkdownType value) { 
9410      this.copyright = value;
9411      return this;
9412    }
9413
9414    /**
9415     * @return 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.
9416     */
9417    public String getCopyright() { 
9418      return this.copyright == null ? null : this.copyright.getValue();
9419    }
9420
9421    /**
9422     * @param value 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.
9423     */
9424    public TestScript setCopyright(String value) { 
9425      if (value == null)
9426        this.copyright = null;
9427      else {
9428        if (this.copyright == null)
9429          this.copyright = new MarkdownType();
9430        this.copyright.setValue(value);
9431      }
9432      return this;
9433    }
9434
9435    /**
9436     * @return {@link #copyrightLabel} (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').). This is the underlying object with id, value and extensions. The accessor "getCopyrightLabel" gives direct access to the value
9437     */
9438    public StringType getCopyrightLabelElement() { 
9439      if (this.copyrightLabel == null)
9440        if (Configuration.errorOnAutoCreate())
9441          throw new Error("Attempt to auto-create TestScript.copyrightLabel");
9442        else if (Configuration.doAutoCreate())
9443          this.copyrightLabel = new StringType(); // bb
9444      return this.copyrightLabel;
9445    }
9446
9447    public boolean hasCopyrightLabelElement() { 
9448      return this.copyrightLabel != null && !this.copyrightLabel.isEmpty();
9449    }
9450
9451    public boolean hasCopyrightLabel() { 
9452      return this.copyrightLabel != null && !this.copyrightLabel.isEmpty();
9453    }
9454
9455    /**
9456     * @param value {@link #copyrightLabel} (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').). This is the underlying object with id, value and extensions. The accessor "getCopyrightLabel" gives direct access to the value
9457     */
9458    public TestScript setCopyrightLabelElement(StringType value) { 
9459      this.copyrightLabel = value;
9460      return this;
9461    }
9462
9463    /**
9464     * @return 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').
9465     */
9466    public String getCopyrightLabel() { 
9467      return this.copyrightLabel == null ? null : this.copyrightLabel.getValue();
9468    }
9469
9470    /**
9471     * @param value 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').
9472     */
9473    public TestScript setCopyrightLabel(String value) { 
9474      if (Utilities.noString(value))
9475        this.copyrightLabel = null;
9476      else {
9477        if (this.copyrightLabel == null)
9478          this.copyrightLabel = new StringType();
9479        this.copyrightLabel.setValue(value);
9480      }
9481      return this;
9482    }
9483
9484    /**
9485     * @return {@link #origin} (An abstract server used in operations within this test script in the origin element.)
9486     */
9487    public List<TestScriptOriginComponent> getOrigin() { 
9488      if (this.origin == null)
9489        this.origin = new ArrayList<TestScriptOriginComponent>();
9490      return this.origin;
9491    }
9492
9493    /**
9494     * @return Returns a reference to <code>this</code> for easy method chaining
9495     */
9496    public TestScript setOrigin(List<TestScriptOriginComponent> theOrigin) { 
9497      this.origin = theOrigin;
9498      return this;
9499    }
9500
9501    public boolean hasOrigin() { 
9502      if (this.origin == null)
9503        return false;
9504      for (TestScriptOriginComponent item : this.origin)
9505        if (!item.isEmpty())
9506          return true;
9507      return false;
9508    }
9509
9510    public TestScriptOriginComponent addOrigin() { //3
9511      TestScriptOriginComponent t = new TestScriptOriginComponent();
9512      if (this.origin == null)
9513        this.origin = new ArrayList<TestScriptOriginComponent>();
9514      this.origin.add(t);
9515      return t;
9516    }
9517
9518    public TestScript addOrigin(TestScriptOriginComponent t) { //3
9519      if (t == null)
9520        return this;
9521      if (this.origin == null)
9522        this.origin = new ArrayList<TestScriptOriginComponent>();
9523      this.origin.add(t);
9524      return this;
9525    }
9526
9527    /**
9528     * @return The first repetition of repeating field {@link #origin}, creating it if it does not already exist {3}
9529     */
9530    public TestScriptOriginComponent getOriginFirstRep() { 
9531      if (getOrigin().isEmpty()) {
9532        addOrigin();
9533      }
9534      return getOrigin().get(0);
9535    }
9536
9537    /**
9538     * @return {@link #destination} (An abstract server used in operations within this test script in the destination element.)
9539     */
9540    public List<TestScriptDestinationComponent> getDestination() { 
9541      if (this.destination == null)
9542        this.destination = new ArrayList<TestScriptDestinationComponent>();
9543      return this.destination;
9544    }
9545
9546    /**
9547     * @return Returns a reference to <code>this</code> for easy method chaining
9548     */
9549    public TestScript setDestination(List<TestScriptDestinationComponent> theDestination) { 
9550      this.destination = theDestination;
9551      return this;
9552    }
9553
9554    public boolean hasDestination() { 
9555      if (this.destination == null)
9556        return false;
9557      for (TestScriptDestinationComponent item : this.destination)
9558        if (!item.isEmpty())
9559          return true;
9560      return false;
9561    }
9562
9563    public TestScriptDestinationComponent addDestination() { //3
9564      TestScriptDestinationComponent t = new TestScriptDestinationComponent();
9565      if (this.destination == null)
9566        this.destination = new ArrayList<TestScriptDestinationComponent>();
9567      this.destination.add(t);
9568      return t;
9569    }
9570
9571    public TestScript addDestination(TestScriptDestinationComponent t) { //3
9572      if (t == null)
9573        return this;
9574      if (this.destination == null)
9575        this.destination = new ArrayList<TestScriptDestinationComponent>();
9576      this.destination.add(t);
9577      return this;
9578    }
9579
9580    /**
9581     * @return The first repetition of repeating field {@link #destination}, creating it if it does not already exist {3}
9582     */
9583    public TestScriptDestinationComponent getDestinationFirstRep() { 
9584      if (getDestination().isEmpty()) {
9585        addDestination();
9586      }
9587      return getDestination().get(0);
9588    }
9589
9590    /**
9591     * @return {@link #metadata} (The required capability must exist and are assumed to function correctly on the FHIR server being tested.)
9592     */
9593    public TestScriptMetadataComponent getMetadata() { 
9594      if (this.metadata == null)
9595        if (Configuration.errorOnAutoCreate())
9596          throw new Error("Attempt to auto-create TestScript.metadata");
9597        else if (Configuration.doAutoCreate())
9598          this.metadata = new TestScriptMetadataComponent(); // cc
9599      return this.metadata;
9600    }
9601
9602    public boolean hasMetadata() { 
9603      return this.metadata != null && !this.metadata.isEmpty();
9604    }
9605
9606    /**
9607     * @param value {@link #metadata} (The required capability must exist and are assumed to function correctly on the FHIR server being tested.)
9608     */
9609    public TestScript setMetadata(TestScriptMetadataComponent value) { 
9610      this.metadata = value;
9611      return this;
9612    }
9613
9614    /**
9615     * @return {@link #scope} (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.)
9616     */
9617    public List<TestScriptScopeComponent> getScope() { 
9618      if (this.scope == null)
9619        this.scope = new ArrayList<TestScriptScopeComponent>();
9620      return this.scope;
9621    }
9622
9623    /**
9624     * @return Returns a reference to <code>this</code> for easy method chaining
9625     */
9626    public TestScript setScope(List<TestScriptScopeComponent> theScope) { 
9627      this.scope = theScope;
9628      return this;
9629    }
9630
9631    public boolean hasScope() { 
9632      if (this.scope == null)
9633        return false;
9634      for (TestScriptScopeComponent item : this.scope)
9635        if (!item.isEmpty())
9636          return true;
9637      return false;
9638    }
9639
9640    public TestScriptScopeComponent addScope() { //3
9641      TestScriptScopeComponent t = new TestScriptScopeComponent();
9642      if (this.scope == null)
9643        this.scope = new ArrayList<TestScriptScopeComponent>();
9644      this.scope.add(t);
9645      return t;
9646    }
9647
9648    public TestScript addScope(TestScriptScopeComponent t) { //3
9649      if (t == null)
9650        return this;
9651      if (this.scope == null)
9652        this.scope = new ArrayList<TestScriptScopeComponent>();
9653      this.scope.add(t);
9654      return this;
9655    }
9656
9657    /**
9658     * @return The first repetition of repeating field {@link #scope}, creating it if it does not already exist {3}
9659     */
9660    public TestScriptScopeComponent getScopeFirstRep() { 
9661      if (getScope().isEmpty()) {
9662        addScope();
9663      }
9664      return getScope().get(0);
9665    }
9666
9667    /**
9668     * @return {@link #fixture} (Fixture in the test script - by reference (uri). All fixtures are required for the test script to execute.)
9669     */
9670    public List<TestScriptFixtureComponent> getFixture() { 
9671      if (this.fixture == null)
9672        this.fixture = new ArrayList<TestScriptFixtureComponent>();
9673      return this.fixture;
9674    }
9675
9676    /**
9677     * @return Returns a reference to <code>this</code> for easy method chaining
9678     */
9679    public TestScript setFixture(List<TestScriptFixtureComponent> theFixture) { 
9680      this.fixture = theFixture;
9681      return this;
9682    }
9683
9684    public boolean hasFixture() { 
9685      if (this.fixture == null)
9686        return false;
9687      for (TestScriptFixtureComponent item : this.fixture)
9688        if (!item.isEmpty())
9689          return true;
9690      return false;
9691    }
9692
9693    public TestScriptFixtureComponent addFixture() { //3
9694      TestScriptFixtureComponent t = new TestScriptFixtureComponent();
9695      if (this.fixture == null)
9696        this.fixture = new ArrayList<TestScriptFixtureComponent>();
9697      this.fixture.add(t);
9698      return t;
9699    }
9700
9701    public TestScript addFixture(TestScriptFixtureComponent t) { //3
9702      if (t == null)
9703        return this;
9704      if (this.fixture == null)
9705        this.fixture = new ArrayList<TestScriptFixtureComponent>();
9706      this.fixture.add(t);
9707      return this;
9708    }
9709
9710    /**
9711     * @return The first repetition of repeating field {@link #fixture}, creating it if it does not already exist {3}
9712     */
9713    public TestScriptFixtureComponent getFixtureFirstRep() { 
9714      if (getFixture().isEmpty()) {
9715        addFixture();
9716      }
9717      return getFixture().get(0);
9718    }
9719
9720    /**
9721     * @return {@link #profile} (Reference to the profile to be used for validation.)
9722     */
9723    public List<CanonicalType> getProfile() { 
9724      if (this.profile == null)
9725        this.profile = new ArrayList<CanonicalType>();
9726      return this.profile;
9727    }
9728
9729    /**
9730     * @return Returns a reference to <code>this</code> for easy method chaining
9731     */
9732    public TestScript setProfile(List<CanonicalType> theProfile) { 
9733      this.profile = theProfile;
9734      return this;
9735    }
9736
9737    public boolean hasProfile() { 
9738      if (this.profile == null)
9739        return false;
9740      for (CanonicalType item : this.profile)
9741        if (!item.isEmpty())
9742          return true;
9743      return false;
9744    }
9745
9746    /**
9747     * @return {@link #profile} (Reference to the profile to be used for validation.)
9748     */
9749    public CanonicalType addProfileElement() {//2 
9750      CanonicalType t = new CanonicalType();
9751      if (this.profile == null)
9752        this.profile = new ArrayList<CanonicalType>();
9753      this.profile.add(t);
9754      return t;
9755    }
9756
9757    /**
9758     * @param value {@link #profile} (Reference to the profile to be used for validation.)
9759     */
9760    public TestScript addProfile(String value) { //1
9761      CanonicalType t = new CanonicalType();
9762      t.setValue(value);
9763      if (this.profile == null)
9764        this.profile = new ArrayList<CanonicalType>();
9765      this.profile.add(t);
9766      return this;
9767    }
9768
9769    /**
9770     * @param value {@link #profile} (Reference to the profile to be used for validation.)
9771     */
9772    public boolean hasProfile(String value) { 
9773      if (this.profile == null)
9774        return false;
9775      for (CanonicalType v : this.profile)
9776        if (v.getValue().equals(value)) // canonical
9777          return true;
9778      return false;
9779    }
9780
9781    /**
9782     * @return {@link #variable} (Variable is set based either on element value in response body or on header field value in the response headers.)
9783     */
9784    public List<TestScriptVariableComponent> getVariable() { 
9785      if (this.variable == null)
9786        this.variable = new ArrayList<TestScriptVariableComponent>();
9787      return this.variable;
9788    }
9789
9790    /**
9791     * @return Returns a reference to <code>this</code> for easy method chaining
9792     */
9793    public TestScript setVariable(List<TestScriptVariableComponent> theVariable) { 
9794      this.variable = theVariable;
9795      return this;
9796    }
9797
9798    public boolean hasVariable() { 
9799      if (this.variable == null)
9800        return false;
9801      for (TestScriptVariableComponent item : this.variable)
9802        if (!item.isEmpty())
9803          return true;
9804      return false;
9805    }
9806
9807    public TestScriptVariableComponent addVariable() { //3
9808      TestScriptVariableComponent t = new TestScriptVariableComponent();
9809      if (this.variable == null)
9810        this.variable = new ArrayList<TestScriptVariableComponent>();
9811      this.variable.add(t);
9812      return t;
9813    }
9814
9815    public TestScript addVariable(TestScriptVariableComponent t) { //3
9816      if (t == null)
9817        return this;
9818      if (this.variable == null)
9819        this.variable = new ArrayList<TestScriptVariableComponent>();
9820      this.variable.add(t);
9821      return this;
9822    }
9823
9824    /**
9825     * @return The first repetition of repeating field {@link #variable}, creating it if it does not already exist {3}
9826     */
9827    public TestScriptVariableComponent getVariableFirstRep() { 
9828      if (getVariable().isEmpty()) {
9829        addVariable();
9830      }
9831      return getVariable().get(0);
9832    }
9833
9834    /**
9835     * @return {@link #setup} (A series of required setup operations before tests are executed.)
9836     */
9837    public TestScriptSetupComponent getSetup() { 
9838      if (this.setup == null)
9839        if (Configuration.errorOnAutoCreate())
9840          throw new Error("Attempt to auto-create TestScript.setup");
9841        else if (Configuration.doAutoCreate())
9842          this.setup = new TestScriptSetupComponent(); // cc
9843      return this.setup;
9844    }
9845
9846    public boolean hasSetup() { 
9847      return this.setup != null && !this.setup.isEmpty();
9848    }
9849
9850    /**
9851     * @param value {@link #setup} (A series of required setup operations before tests are executed.)
9852     */
9853    public TestScript setSetup(TestScriptSetupComponent value) { 
9854      this.setup = value;
9855      return this;
9856    }
9857
9858    /**
9859     * @return {@link #test} (A test in this script.)
9860     */
9861    public List<TestScriptTestComponent> getTest() { 
9862      if (this.test == null)
9863        this.test = new ArrayList<TestScriptTestComponent>();
9864      return this.test;
9865    }
9866
9867    /**
9868     * @return Returns a reference to <code>this</code> for easy method chaining
9869     */
9870    public TestScript setTest(List<TestScriptTestComponent> theTest) { 
9871      this.test = theTest;
9872      return this;
9873    }
9874
9875    public boolean hasTest() { 
9876      if (this.test == null)
9877        return false;
9878      for (TestScriptTestComponent item : this.test)
9879        if (!item.isEmpty())
9880          return true;
9881      return false;
9882    }
9883
9884    public TestScriptTestComponent addTest() { //3
9885      TestScriptTestComponent t = new TestScriptTestComponent();
9886      if (this.test == null)
9887        this.test = new ArrayList<TestScriptTestComponent>();
9888      this.test.add(t);
9889      return t;
9890    }
9891
9892    public TestScript addTest(TestScriptTestComponent t) { //3
9893      if (t == null)
9894        return this;
9895      if (this.test == null)
9896        this.test = new ArrayList<TestScriptTestComponent>();
9897      this.test.add(t);
9898      return this;
9899    }
9900
9901    /**
9902     * @return The first repetition of repeating field {@link #test}, creating it if it does not already exist {3}
9903     */
9904    public TestScriptTestComponent getTestFirstRep() { 
9905      if (getTest().isEmpty()) {
9906        addTest();
9907      }
9908      return getTest().get(0);
9909    }
9910
9911    /**
9912     * @return {@link #teardown} (A series of operations required to clean up after all the tests are executed (successfully or otherwise).)
9913     */
9914    public TestScriptTeardownComponent getTeardown() { 
9915      if (this.teardown == null)
9916        if (Configuration.errorOnAutoCreate())
9917          throw new Error("Attempt to auto-create TestScript.teardown");
9918        else if (Configuration.doAutoCreate())
9919          this.teardown = new TestScriptTeardownComponent(); // cc
9920      return this.teardown;
9921    }
9922
9923    public boolean hasTeardown() { 
9924      return this.teardown != null && !this.teardown.isEmpty();
9925    }
9926
9927    /**
9928     * @param value {@link #teardown} (A series of operations required to clean up after all the tests are executed (successfully or otherwise).)
9929     */
9930    public TestScript setTeardown(TestScriptTeardownComponent value) { 
9931      this.teardown = value;
9932      return this;
9933    }
9934
9935      protected void listChildren(List<Property> children) {
9936        super.listChildren(children);
9937        children.add(new Property("url", "uri", "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.", 0, 1, url));
9938        children.add(new Property("identifier", "Identifier", "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.", 0, java.lang.Integer.MAX_VALUE, identifier));
9939        children.add(new Property("version", "string", "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.", 0, 1, version));
9940        children.add(new Property("versionAlgorithm[x]", "string|Coding", "Indicates the mechanism used to compare versions to determine which is more current.", 0, 1, versionAlgorithm));
9941        children.add(new Property("name", "string", "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.", 0, 1, name));
9942        children.add(new Property("title", "string", "A short, descriptive, user-friendly title for the test script.", 0, 1, title));
9943        children.add(new Property("status", "code", "The status of this test script. Enables tracking the life-cycle of the content.", 0, 1, status));
9944        children.add(new Property("experimental", "boolean", "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.", 0, 1, experimental));
9945        children.add(new Property("date", "dateTime", "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.", 0, 1, date));
9946        children.add(new Property("publisher", "string", "The name of the organization or individual responsible for the release and ongoing maintenance of the test script.", 0, 1, publisher));
9947        children.add(new Property("contact", "ContactDetail", "Contact details to assist a user in finding and communicating with the publisher.", 0, java.lang.Integer.MAX_VALUE, contact));
9948        children.add(new Property("description", "markdown", "A free text natural language description of the test script from a consumer's perspective.", 0, 1, description));
9949        children.add(new Property("useContext", "UsageContext", "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.", 0, java.lang.Integer.MAX_VALUE, useContext));
9950        children.add(new Property("jurisdiction", "CodeableConcept", "A legal or geographic region in which the test script is intended to be used.", 0, java.lang.Integer.MAX_VALUE, jurisdiction));
9951        children.add(new Property("purpose", "markdown", "Explanation of why this test script is needed and why it has been designed as it has.", 0, 1, purpose));
9952        children.add(new Property("copyright", "markdown", "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.", 0, 1, copyright));
9953        children.add(new Property("copyrightLabel", "string", "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').", 0, 1, copyrightLabel));
9954        children.add(new Property("origin", "", "An abstract server used in operations within this test script in the origin element.", 0, java.lang.Integer.MAX_VALUE, origin));
9955        children.add(new Property("destination", "", "An abstract server used in operations within this test script in the destination element.", 0, java.lang.Integer.MAX_VALUE, destination));
9956        children.add(new Property("metadata", "", "The required capability must exist and are assumed to function correctly on the FHIR server being tested.", 0, 1, metadata));
9957        children.add(new Property("scope", "", "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.", 0, java.lang.Integer.MAX_VALUE, scope));
9958        children.add(new Property("fixture", "", "Fixture in the test script - by reference (uri). All fixtures are required for the test script to execute.", 0, java.lang.Integer.MAX_VALUE, fixture));
9959        children.add(new Property("profile", "canonical(StructureDefinition)", "Reference to the profile to be used for validation.", 0, java.lang.Integer.MAX_VALUE, profile));
9960        children.add(new Property("variable", "", "Variable is set based either on element value in response body or on header field value in the response headers.", 0, java.lang.Integer.MAX_VALUE, variable));
9961        children.add(new Property("setup", "", "A series of required setup operations before tests are executed.", 0, 1, setup));
9962        children.add(new Property("test", "", "A test in this script.", 0, java.lang.Integer.MAX_VALUE, test));
9963        children.add(new Property("teardown", "", "A series of operations required to clean up after all the tests are executed (successfully or otherwise).", 0, 1, teardown));
9964      }
9965
9966      @Override
9967      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
9968        switch (_hash) {
9969        case 116079: /*url*/  return new Property("url", "uri", "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.", 0, 1, url);
9970        case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "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.", 0, java.lang.Integer.MAX_VALUE, identifier);
9971        case 351608024: /*version*/  return new Property("version", "string", "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.", 0, 1, version);
9972        case -115699031: /*versionAlgorithm[x]*/  return new Property("versionAlgorithm[x]", "string|Coding", "Indicates the mechanism used to compare versions to determine which is more current.", 0, 1, versionAlgorithm);
9973        case 1508158071: /*versionAlgorithm*/  return new Property("versionAlgorithm[x]", "string|Coding", "Indicates the mechanism used to compare versions to determine which is more current.", 0, 1, versionAlgorithm);
9974        case 1836908904: /*versionAlgorithmString*/  return new Property("versionAlgorithm[x]", "string", "Indicates the mechanism used to compare versions to determine which is more current.", 0, 1, versionAlgorithm);
9975        case 1373807809: /*versionAlgorithmCoding*/  return new Property("versionAlgorithm[x]", "Coding", "Indicates the mechanism used to compare versions to determine which is more current.", 0, 1, versionAlgorithm);
9976        case 3373707: /*name*/  return new Property("name", "string", "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.", 0, 1, name);
9977        case 110371416: /*title*/  return new Property("title", "string", "A short, descriptive, user-friendly title for the test script.", 0, 1, title);
9978        case -892481550: /*status*/  return new Property("status", "code", "The status of this test script. Enables tracking the life-cycle of the content.", 0, 1, status);
9979        case -404562712: /*experimental*/  return new Property("experimental", "boolean", "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.", 0, 1, experimental);
9980        case 3076014: /*date*/  return new Property("date", "dateTime", "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.", 0, 1, date);
9981        case 1447404028: /*publisher*/  return new Property("publisher", "string", "The name of the organization or individual responsible for the release and ongoing maintenance of the test script.", 0, 1, publisher);
9982        case 951526432: /*contact*/  return new Property("contact", "ContactDetail", "Contact details to assist a user in finding and communicating with the publisher.", 0, java.lang.Integer.MAX_VALUE, contact);
9983        case -1724546052: /*description*/  return new Property("description", "markdown", "A free text natural language description of the test script from a consumer's perspective.", 0, 1, description);
9984        case -669707736: /*useContext*/  return new Property("useContext", "UsageContext", "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.", 0, java.lang.Integer.MAX_VALUE, useContext);
9985        case -507075711: /*jurisdiction*/  return new Property("jurisdiction", "CodeableConcept", "A legal or geographic region in which the test script is intended to be used.", 0, java.lang.Integer.MAX_VALUE, jurisdiction);
9986        case -220463842: /*purpose*/  return new Property("purpose", "markdown", "Explanation of why this test script is needed and why it has been designed as it has.", 0, 1, purpose);
9987        case 1522889671: /*copyright*/  return new Property("copyright", "markdown", "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.", 0, 1, copyright);
9988        case 765157229: /*copyrightLabel*/  return new Property("copyrightLabel", "string", "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').", 0, 1, copyrightLabel);
9989        case -1008619738: /*origin*/  return new Property("origin", "", "An abstract server used in operations within this test script in the origin element.", 0, java.lang.Integer.MAX_VALUE, origin);
9990        case -1429847026: /*destination*/  return new Property("destination", "", "An abstract server used in operations within this test script in the destination element.", 0, java.lang.Integer.MAX_VALUE, destination);
9991        case -450004177: /*metadata*/  return new Property("metadata", "", "The required capability must exist and are assumed to function correctly on the FHIR server being tested.", 0, 1, metadata);
9992        case 109264468: /*scope*/  return new Property("scope", "", "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.", 0, java.lang.Integer.MAX_VALUE, scope);
9993        case -843449847: /*fixture*/  return new Property("fixture", "", "Fixture in the test script - by reference (uri). All fixtures are required for the test script to execute.", 0, java.lang.Integer.MAX_VALUE, fixture);
9994        case -309425751: /*profile*/  return new Property("profile", "canonical(StructureDefinition)", "Reference to the profile to be used for validation.", 0, java.lang.Integer.MAX_VALUE, profile);
9995        case -1249586564: /*variable*/  return new Property("variable", "", "Variable is set based either on element value in response body or on header field value in the response headers.", 0, java.lang.Integer.MAX_VALUE, variable);
9996        case 109329021: /*setup*/  return new Property("setup", "", "A series of required setup operations before tests are executed.", 0, 1, setup);
9997        case 3556498: /*test*/  return new Property("test", "", "A test in this script.", 0, java.lang.Integer.MAX_VALUE, test);
9998        case -1663474172: /*teardown*/  return new Property("teardown", "", "A series of operations required to clean up after all the tests are executed (successfully or otherwise).", 0, 1, teardown);
9999        default: return super.getNamedProperty(_hash, _name, _checkValid);
10000        }
10001
10002      }
10003
10004      @Override
10005      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
10006        switch (hash) {
10007        case 116079: /*url*/ return this.url == null ? new Base[0] : new Base[] {this.url}; // UriType
10008        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
10009        case 351608024: /*version*/ return this.version == null ? new Base[0] : new Base[] {this.version}; // StringType
10010        case 1508158071: /*versionAlgorithm*/ return this.versionAlgorithm == null ? new Base[0] : new Base[] {this.versionAlgorithm}; // DataType
10011        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
10012        case 110371416: /*title*/ return this.title == null ? new Base[0] : new Base[] {this.title}; // StringType
10013        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<PublicationStatus>
10014        case -404562712: /*experimental*/ return this.experimental == null ? new Base[0] : new Base[] {this.experimental}; // BooleanType
10015        case 3076014: /*date*/ return this.date == null ? new Base[0] : new Base[] {this.date}; // DateTimeType
10016        case 1447404028: /*publisher*/ return this.publisher == null ? new Base[0] : new Base[] {this.publisher}; // StringType
10017        case 951526432: /*contact*/ return this.contact == null ? new Base[0] : this.contact.toArray(new Base[this.contact.size()]); // ContactDetail
10018        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // MarkdownType
10019        case -669707736: /*useContext*/ return this.useContext == null ? new Base[0] : this.useContext.toArray(new Base[this.useContext.size()]); // UsageContext
10020        case -507075711: /*jurisdiction*/ return this.jurisdiction == null ? new Base[0] : this.jurisdiction.toArray(new Base[this.jurisdiction.size()]); // CodeableConcept
10021        case -220463842: /*purpose*/ return this.purpose == null ? new Base[0] : new Base[] {this.purpose}; // MarkdownType
10022        case 1522889671: /*copyright*/ return this.copyright == null ? new Base[0] : new Base[] {this.copyright}; // MarkdownType
10023        case 765157229: /*copyrightLabel*/ return this.copyrightLabel == null ? new Base[0] : new Base[] {this.copyrightLabel}; // StringType
10024        case -1008619738: /*origin*/ return this.origin == null ? new Base[0] : this.origin.toArray(new Base[this.origin.size()]); // TestScriptOriginComponent
10025        case -1429847026: /*destination*/ return this.destination == null ? new Base[0] : this.destination.toArray(new Base[this.destination.size()]); // TestScriptDestinationComponent
10026        case -450004177: /*metadata*/ return this.metadata == null ? new Base[0] : new Base[] {this.metadata}; // TestScriptMetadataComponent
10027        case 109264468: /*scope*/ return this.scope == null ? new Base[0] : this.scope.toArray(new Base[this.scope.size()]); // TestScriptScopeComponent
10028        case -843449847: /*fixture*/ return this.fixture == null ? new Base[0] : this.fixture.toArray(new Base[this.fixture.size()]); // TestScriptFixtureComponent
10029        case -309425751: /*profile*/ return this.profile == null ? new Base[0] : this.profile.toArray(new Base[this.profile.size()]); // CanonicalType
10030        case -1249586564: /*variable*/ return this.variable == null ? new Base[0] : this.variable.toArray(new Base[this.variable.size()]); // TestScriptVariableComponent
10031        case 109329021: /*setup*/ return this.setup == null ? new Base[0] : new Base[] {this.setup}; // TestScriptSetupComponent
10032        case 3556498: /*test*/ return this.test == null ? new Base[0] : this.test.toArray(new Base[this.test.size()]); // TestScriptTestComponent
10033        case -1663474172: /*teardown*/ return this.teardown == null ? new Base[0] : new Base[] {this.teardown}; // TestScriptTeardownComponent
10034        default: return super.getProperty(hash, name, checkValid);
10035        }
10036
10037      }
10038
10039      @Override
10040      public Base setProperty(int hash, String name, Base value) throws FHIRException {
10041        switch (hash) {
10042        case 116079: // url
10043          this.url = TypeConvertor.castToUri(value); // UriType
10044          return value;
10045        case -1618432855: // identifier
10046          this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier
10047          return value;
10048        case 351608024: // version
10049          this.version = TypeConvertor.castToString(value); // StringType
10050          return value;
10051        case 1508158071: // versionAlgorithm
10052          this.versionAlgorithm = TypeConvertor.castToType(value); // DataType
10053          return value;
10054        case 3373707: // name
10055          this.name = TypeConvertor.castToString(value); // StringType
10056          return value;
10057        case 110371416: // title
10058          this.title = TypeConvertor.castToString(value); // StringType
10059          return value;
10060        case -892481550: // status
10061          value = new PublicationStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
10062          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
10063          return value;
10064        case -404562712: // experimental
10065          this.experimental = TypeConvertor.castToBoolean(value); // BooleanType
10066          return value;
10067        case 3076014: // date
10068          this.date = TypeConvertor.castToDateTime(value); // DateTimeType
10069          return value;
10070        case 1447404028: // publisher
10071          this.publisher = TypeConvertor.castToString(value); // StringType
10072          return value;
10073        case 951526432: // contact
10074          this.getContact().add(TypeConvertor.castToContactDetail(value)); // ContactDetail
10075          return value;
10076        case -1724546052: // description
10077          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
10078          return value;
10079        case -669707736: // useContext
10080          this.getUseContext().add(TypeConvertor.castToUsageContext(value)); // UsageContext
10081          return value;
10082        case -507075711: // jurisdiction
10083          this.getJurisdiction().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
10084          return value;
10085        case -220463842: // purpose
10086          this.purpose = TypeConvertor.castToMarkdown(value); // MarkdownType
10087          return value;
10088        case 1522889671: // copyright
10089          this.copyright = TypeConvertor.castToMarkdown(value); // MarkdownType
10090          return value;
10091        case 765157229: // copyrightLabel
10092          this.copyrightLabel = TypeConvertor.castToString(value); // StringType
10093          return value;
10094        case -1008619738: // origin
10095          this.getOrigin().add((TestScriptOriginComponent) value); // TestScriptOriginComponent
10096          return value;
10097        case -1429847026: // destination
10098          this.getDestination().add((TestScriptDestinationComponent) value); // TestScriptDestinationComponent
10099          return value;
10100        case -450004177: // metadata
10101          this.metadata = (TestScriptMetadataComponent) value; // TestScriptMetadataComponent
10102          return value;
10103        case 109264468: // scope
10104          this.getScope().add((TestScriptScopeComponent) value); // TestScriptScopeComponent
10105          return value;
10106        case -843449847: // fixture
10107          this.getFixture().add((TestScriptFixtureComponent) value); // TestScriptFixtureComponent
10108          return value;
10109        case -309425751: // profile
10110          this.getProfile().add(TypeConvertor.castToCanonical(value)); // CanonicalType
10111          return value;
10112        case -1249586564: // variable
10113          this.getVariable().add((TestScriptVariableComponent) value); // TestScriptVariableComponent
10114          return value;
10115        case 109329021: // setup
10116          this.setup = (TestScriptSetupComponent) value; // TestScriptSetupComponent
10117          return value;
10118        case 3556498: // test
10119          this.getTest().add((TestScriptTestComponent) value); // TestScriptTestComponent
10120          return value;
10121        case -1663474172: // teardown
10122          this.teardown = (TestScriptTeardownComponent) value; // TestScriptTeardownComponent
10123          return value;
10124        default: return super.setProperty(hash, name, value);
10125        }
10126
10127      }
10128
10129      @Override
10130      public Base setProperty(String name, Base value) throws FHIRException {
10131        if (name.equals("url")) {
10132          this.url = TypeConvertor.castToUri(value); // UriType
10133        } else if (name.equals("identifier")) {
10134          this.getIdentifier().add(TypeConvertor.castToIdentifier(value));
10135        } else if (name.equals("version")) {
10136          this.version = TypeConvertor.castToString(value); // StringType
10137        } else if (name.equals("versionAlgorithm[x]")) {
10138          this.versionAlgorithm = TypeConvertor.castToType(value); // DataType
10139        } else if (name.equals("name")) {
10140          this.name = TypeConvertor.castToString(value); // StringType
10141        } else if (name.equals("title")) {
10142          this.title = TypeConvertor.castToString(value); // StringType
10143        } else if (name.equals("status")) {
10144          value = new PublicationStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
10145          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
10146        } else if (name.equals("experimental")) {
10147          this.experimental = TypeConvertor.castToBoolean(value); // BooleanType
10148        } else if (name.equals("date")) {
10149          this.date = TypeConvertor.castToDateTime(value); // DateTimeType
10150        } else if (name.equals("publisher")) {
10151          this.publisher = TypeConvertor.castToString(value); // StringType
10152        } else if (name.equals("contact")) {
10153          this.getContact().add(TypeConvertor.castToContactDetail(value));
10154        } else if (name.equals("description")) {
10155          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
10156        } else if (name.equals("useContext")) {
10157          this.getUseContext().add(TypeConvertor.castToUsageContext(value));
10158        } else if (name.equals("jurisdiction")) {
10159          this.getJurisdiction().add(TypeConvertor.castToCodeableConcept(value));
10160        } else if (name.equals("purpose")) {
10161          this.purpose = TypeConvertor.castToMarkdown(value); // MarkdownType
10162        } else if (name.equals("copyright")) {
10163          this.copyright = TypeConvertor.castToMarkdown(value); // MarkdownType
10164        } else if (name.equals("copyrightLabel")) {
10165          this.copyrightLabel = TypeConvertor.castToString(value); // StringType
10166        } else if (name.equals("origin")) {
10167          this.getOrigin().add((TestScriptOriginComponent) value);
10168        } else if (name.equals("destination")) {
10169          this.getDestination().add((TestScriptDestinationComponent) value);
10170        } else if (name.equals("metadata")) {
10171          this.metadata = (TestScriptMetadataComponent) value; // TestScriptMetadataComponent
10172        } else if (name.equals("scope")) {
10173          this.getScope().add((TestScriptScopeComponent) value);
10174        } else if (name.equals("fixture")) {
10175          this.getFixture().add((TestScriptFixtureComponent) value);
10176        } else if (name.equals("profile")) {
10177          this.getProfile().add(TypeConvertor.castToCanonical(value));
10178        } else if (name.equals("variable")) {
10179          this.getVariable().add((TestScriptVariableComponent) value);
10180        } else if (name.equals("setup")) {
10181          this.setup = (TestScriptSetupComponent) value; // TestScriptSetupComponent
10182        } else if (name.equals("test")) {
10183          this.getTest().add((TestScriptTestComponent) value);
10184        } else if (name.equals("teardown")) {
10185          this.teardown = (TestScriptTeardownComponent) value; // TestScriptTeardownComponent
10186        } else
10187          return super.setProperty(name, value);
10188        return value;
10189      }
10190
10191      @Override
10192      public Base makeProperty(int hash, String name) throws FHIRException {
10193        switch (hash) {
10194        case 116079:  return getUrlElement();
10195        case -1618432855:  return addIdentifier(); 
10196        case 351608024:  return getVersionElement();
10197        case -115699031:  return getVersionAlgorithm();
10198        case 1508158071:  return getVersionAlgorithm();
10199        case 3373707:  return getNameElement();
10200        case 110371416:  return getTitleElement();
10201        case -892481550:  return getStatusElement();
10202        case -404562712:  return getExperimentalElement();
10203        case 3076014:  return getDateElement();
10204        case 1447404028:  return getPublisherElement();
10205        case 951526432:  return addContact(); 
10206        case -1724546052:  return getDescriptionElement();
10207        case -669707736:  return addUseContext(); 
10208        case -507075711:  return addJurisdiction(); 
10209        case -220463842:  return getPurposeElement();
10210        case 1522889671:  return getCopyrightElement();
10211        case 765157229:  return getCopyrightLabelElement();
10212        case -1008619738:  return addOrigin(); 
10213        case -1429847026:  return addDestination(); 
10214        case -450004177:  return getMetadata();
10215        case 109264468:  return addScope(); 
10216        case -843449847:  return addFixture(); 
10217        case -309425751:  return addProfileElement();
10218        case -1249586564:  return addVariable(); 
10219        case 109329021:  return getSetup();
10220        case 3556498:  return addTest(); 
10221        case -1663474172:  return getTeardown();
10222        default: return super.makeProperty(hash, name);
10223        }
10224
10225      }
10226
10227      @Override
10228      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
10229        switch (hash) {
10230        case 116079: /*url*/ return new String[] {"uri"};
10231        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
10232        case 351608024: /*version*/ return new String[] {"string"};
10233        case 1508158071: /*versionAlgorithm*/ return new String[] {"string", "Coding"};
10234        case 3373707: /*name*/ return new String[] {"string"};
10235        case 110371416: /*title*/ return new String[] {"string"};
10236        case -892481550: /*status*/ return new String[] {"code"};
10237        case -404562712: /*experimental*/ return new String[] {"boolean"};
10238        case 3076014: /*date*/ return new String[] {"dateTime"};
10239        case 1447404028: /*publisher*/ return new String[] {"string"};
10240        case 951526432: /*contact*/ return new String[] {"ContactDetail"};
10241        case -1724546052: /*description*/ return new String[] {"markdown"};
10242        case -669707736: /*useContext*/ return new String[] {"UsageContext"};
10243        case -507075711: /*jurisdiction*/ return new String[] {"CodeableConcept"};
10244        case -220463842: /*purpose*/ return new String[] {"markdown"};
10245        case 1522889671: /*copyright*/ return new String[] {"markdown"};
10246        case 765157229: /*copyrightLabel*/ return new String[] {"string"};
10247        case -1008619738: /*origin*/ return new String[] {};
10248        case -1429847026: /*destination*/ return new String[] {};
10249        case -450004177: /*metadata*/ return new String[] {};
10250        case 109264468: /*scope*/ return new String[] {};
10251        case -843449847: /*fixture*/ return new String[] {};
10252        case -309425751: /*profile*/ return new String[] {"canonical"};
10253        case -1249586564: /*variable*/ return new String[] {};
10254        case 109329021: /*setup*/ return new String[] {};
10255        case 3556498: /*test*/ return new String[] {};
10256        case -1663474172: /*teardown*/ return new String[] {};
10257        default: return super.getTypesForProperty(hash, name);
10258        }
10259
10260      }
10261
10262      @Override
10263      public Base addChild(String name) throws FHIRException {
10264        if (name.equals("url")) {
10265          throw new FHIRException("Cannot call addChild on a primitive type TestScript.url");
10266        }
10267        else if (name.equals("identifier")) {
10268          return addIdentifier();
10269        }
10270        else if (name.equals("version")) {
10271          throw new FHIRException("Cannot call addChild on a primitive type TestScript.version");
10272        }
10273        else if (name.equals("versionAlgorithmString")) {
10274          this.versionAlgorithm = new StringType();
10275          return this.versionAlgorithm;
10276        }
10277        else if (name.equals("versionAlgorithmCoding")) {
10278          this.versionAlgorithm = new Coding();
10279          return this.versionAlgorithm;
10280        }
10281        else if (name.equals("name")) {
10282          throw new FHIRException("Cannot call addChild on a primitive type TestScript.name");
10283        }
10284        else if (name.equals("title")) {
10285          throw new FHIRException("Cannot call addChild on a primitive type TestScript.title");
10286        }
10287        else if (name.equals("status")) {
10288          throw new FHIRException("Cannot call addChild on a primitive type TestScript.status");
10289        }
10290        else if (name.equals("experimental")) {
10291          throw new FHIRException("Cannot call addChild on a primitive type TestScript.experimental");
10292        }
10293        else if (name.equals("date")) {
10294          throw new FHIRException("Cannot call addChild on a primitive type TestScript.date");
10295        }
10296        else if (name.equals("publisher")) {
10297          throw new FHIRException("Cannot call addChild on a primitive type TestScript.publisher");
10298        }
10299        else if (name.equals("contact")) {
10300          return addContact();
10301        }
10302        else if (name.equals("description")) {
10303          throw new FHIRException("Cannot call addChild on a primitive type TestScript.description");
10304        }
10305        else if (name.equals("useContext")) {
10306          return addUseContext();
10307        }
10308        else if (name.equals("jurisdiction")) {
10309          return addJurisdiction();
10310        }
10311        else if (name.equals("purpose")) {
10312          throw new FHIRException("Cannot call addChild on a primitive type TestScript.purpose");
10313        }
10314        else if (name.equals("copyright")) {
10315          throw new FHIRException("Cannot call addChild on a primitive type TestScript.copyright");
10316        }
10317        else if (name.equals("copyrightLabel")) {
10318          throw new FHIRException("Cannot call addChild on a primitive type TestScript.copyrightLabel");
10319        }
10320        else if (name.equals("origin")) {
10321          return addOrigin();
10322        }
10323        else if (name.equals("destination")) {
10324          return addDestination();
10325        }
10326        else if (name.equals("metadata")) {
10327          this.metadata = new TestScriptMetadataComponent();
10328          return this.metadata;
10329        }
10330        else if (name.equals("scope")) {
10331          return addScope();
10332        }
10333        else if (name.equals("fixture")) {
10334          return addFixture();
10335        }
10336        else if (name.equals("profile")) {
10337          throw new FHIRException("Cannot call addChild on a primitive type TestScript.profile");
10338        }
10339        else if (name.equals("variable")) {
10340          return addVariable();
10341        }
10342        else if (name.equals("setup")) {
10343          this.setup = new TestScriptSetupComponent();
10344          return this.setup;
10345        }
10346        else if (name.equals("test")) {
10347          return addTest();
10348        }
10349        else if (name.equals("teardown")) {
10350          this.teardown = new TestScriptTeardownComponent();
10351          return this.teardown;
10352        }
10353        else
10354          return super.addChild(name);
10355      }
10356
10357  public String fhirType() {
10358    return "TestScript";
10359
10360  }
10361
10362      public TestScript copy() {
10363        TestScript dst = new TestScript();
10364        copyValues(dst);
10365        return dst;
10366      }
10367
10368      public void copyValues(TestScript dst) {
10369        super.copyValues(dst);
10370        dst.url = url == null ? null : url.copy();
10371        if (identifier != null) {
10372          dst.identifier = new ArrayList<Identifier>();
10373          for (Identifier i : identifier)
10374            dst.identifier.add(i.copy());
10375        };
10376        dst.version = version == null ? null : version.copy();
10377        dst.versionAlgorithm = versionAlgorithm == null ? null : versionAlgorithm.copy();
10378        dst.name = name == null ? null : name.copy();
10379        dst.title = title == null ? null : title.copy();
10380        dst.status = status == null ? null : status.copy();
10381        dst.experimental = experimental == null ? null : experimental.copy();
10382        dst.date = date == null ? null : date.copy();
10383        dst.publisher = publisher == null ? null : publisher.copy();
10384        if (contact != null) {
10385          dst.contact = new ArrayList<ContactDetail>();
10386          for (ContactDetail i : contact)
10387            dst.contact.add(i.copy());
10388        };
10389        dst.description = description == null ? null : description.copy();
10390        if (useContext != null) {
10391          dst.useContext = new ArrayList<UsageContext>();
10392          for (UsageContext i : useContext)
10393            dst.useContext.add(i.copy());
10394        };
10395        if (jurisdiction != null) {
10396          dst.jurisdiction = new ArrayList<CodeableConcept>();
10397          for (CodeableConcept i : jurisdiction)
10398            dst.jurisdiction.add(i.copy());
10399        };
10400        dst.purpose = purpose == null ? null : purpose.copy();
10401        dst.copyright = copyright == null ? null : copyright.copy();
10402        dst.copyrightLabel = copyrightLabel == null ? null : copyrightLabel.copy();
10403        if (origin != null) {
10404          dst.origin = new ArrayList<TestScriptOriginComponent>();
10405          for (TestScriptOriginComponent i : origin)
10406            dst.origin.add(i.copy());
10407        };
10408        if (destination != null) {
10409          dst.destination = new ArrayList<TestScriptDestinationComponent>();
10410          for (TestScriptDestinationComponent i : destination)
10411            dst.destination.add(i.copy());
10412        };
10413        dst.metadata = metadata == null ? null : metadata.copy();
10414        if (scope != null) {
10415          dst.scope = new ArrayList<TestScriptScopeComponent>();
10416          for (TestScriptScopeComponent i : scope)
10417            dst.scope.add(i.copy());
10418        };
10419        if (fixture != null) {
10420          dst.fixture = new ArrayList<TestScriptFixtureComponent>();
10421          for (TestScriptFixtureComponent i : fixture)
10422            dst.fixture.add(i.copy());
10423        };
10424        if (profile != null) {
10425          dst.profile = new ArrayList<CanonicalType>();
10426          for (CanonicalType i : profile)
10427            dst.profile.add(i.copy());
10428        };
10429        if (variable != null) {
10430          dst.variable = new ArrayList<TestScriptVariableComponent>();
10431          for (TestScriptVariableComponent i : variable)
10432            dst.variable.add(i.copy());
10433        };
10434        dst.setup = setup == null ? null : setup.copy();
10435        if (test != null) {
10436          dst.test = new ArrayList<TestScriptTestComponent>();
10437          for (TestScriptTestComponent i : test)
10438            dst.test.add(i.copy());
10439        };
10440        dst.teardown = teardown == null ? null : teardown.copy();
10441      }
10442
10443      protected TestScript typedCopy() {
10444        return copy();
10445      }
10446
10447      @Override
10448      public boolean equalsDeep(Base other_) {
10449        if (!super.equalsDeep(other_))
10450          return false;
10451        if (!(other_ instanceof TestScript))
10452          return false;
10453        TestScript o = (TestScript) other_;
10454        return compareDeep(url, o.url, true) && compareDeep(identifier, o.identifier, true) && compareDeep(version, o.version, true)
10455           && compareDeep(versionAlgorithm, o.versionAlgorithm, true) && compareDeep(name, o.name, true) && compareDeep(title, o.title, true)
10456           && compareDeep(status, o.status, true) && compareDeep(experimental, o.experimental, true) && compareDeep(date, o.date, true)
10457           && compareDeep(publisher, o.publisher, true) && compareDeep(contact, o.contact, true) && compareDeep(description, o.description, true)
10458           && compareDeep(useContext, o.useContext, true) && compareDeep(jurisdiction, o.jurisdiction, true)
10459           && compareDeep(purpose, o.purpose, true) && compareDeep(copyright, o.copyright, true) && compareDeep(copyrightLabel, o.copyrightLabel, true)
10460           && compareDeep(origin, o.origin, true) && compareDeep(destination, o.destination, true) && compareDeep(metadata, o.metadata, true)
10461           && compareDeep(scope, o.scope, true) && compareDeep(fixture, o.fixture, true) && compareDeep(profile, o.profile, true)
10462           && compareDeep(variable, o.variable, true) && compareDeep(setup, o.setup, true) && compareDeep(test, o.test, true)
10463           && compareDeep(teardown, o.teardown, true);
10464      }
10465
10466      @Override
10467      public boolean equalsShallow(Base other_) {
10468        if (!super.equalsShallow(other_))
10469          return false;
10470        if (!(other_ instanceof TestScript))
10471          return false;
10472        TestScript o = (TestScript) other_;
10473        return compareValues(url, o.url, true) && compareValues(version, o.version, true) && compareValues(name, o.name, true)
10474           && compareValues(title, o.title, true) && compareValues(status, o.status, true) && compareValues(experimental, o.experimental, true)
10475           && compareValues(date, o.date, true) && compareValues(publisher, o.publisher, true) && compareValues(description, o.description, true)
10476           && compareValues(purpose, o.purpose, true) && compareValues(copyright, o.copyright, true) && compareValues(copyrightLabel, o.copyrightLabel, true)
10477           && compareValues(profile, o.profile, true);
10478      }
10479
10480      public boolean isEmpty() {
10481        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(url, identifier, version
10482          , versionAlgorithm, name, title, status, experimental, date, publisher, contact
10483          , description, useContext, jurisdiction, purpose, copyright, copyrightLabel, origin
10484          , destination, metadata, scope, fixture, profile, variable, setup, test, teardown
10485          );
10486      }
10487
10488  @Override
10489  public ResourceType getResourceType() {
10490    return ResourceType.TestScript;
10491   }
10492
10493 /**
10494   * Search parameter: <b>context-quantity</b>
10495   * <p>
10496   * Description: <b>Multiple Resources: 
10497
10498* [ActivityDefinition](activitydefinition.html): A quantity- or range-valued use context assigned to the activity definition
10499* [ActorDefinition](actordefinition.html): A quantity- or range-valued use context assigned to the Actor Definition
10500* [CapabilityStatement](capabilitystatement.html): A quantity- or range-valued use context assigned to the capability statement
10501* [ChargeItemDefinition](chargeitemdefinition.html): A quantity- or range-valued use context assigned to the charge item definition
10502* [Citation](citation.html): A quantity- or range-valued use context assigned to the citation
10503* [CodeSystem](codesystem.html): A quantity- or range-valued use context assigned to the code system
10504* [CompartmentDefinition](compartmentdefinition.html): A quantity- or range-valued use context assigned to the compartment definition
10505* [ConceptMap](conceptmap.html): A quantity- or range-valued use context assigned to the concept map
10506* [ConditionDefinition](conditiondefinition.html): A quantity- or range-valued use context assigned to the condition definition
10507* [EventDefinition](eventdefinition.html): A quantity- or range-valued use context assigned to the event definition
10508* [Evidence](evidence.html): A quantity- or range-valued use context assigned to the evidence
10509* [EvidenceReport](evidencereport.html): A quantity- or range-valued use context assigned to the evidence report
10510* [EvidenceVariable](evidencevariable.html): A quantity- or range-valued use context assigned to the evidence variable
10511* [ExampleScenario](examplescenario.html): A quantity- or range-valued use context assigned to the example scenario
10512* [GraphDefinition](graphdefinition.html): A quantity- or range-valued use context assigned to the graph definition
10513* [ImplementationGuide](implementationguide.html): A quantity- or range-valued use context assigned to the implementation guide
10514* [Library](library.html): A quantity- or range-valued use context assigned to the library
10515* [Measure](measure.html): A quantity- or range-valued use context assigned to the measure
10516* [MessageDefinition](messagedefinition.html): A quantity- or range-valued use context assigned to the message definition
10517* [NamingSystem](namingsystem.html): A quantity- or range-valued use context assigned to the naming system
10518* [OperationDefinition](operationdefinition.html): A quantity- or range-valued use context assigned to the operation definition
10519* [PlanDefinition](plandefinition.html): A quantity- or range-valued use context assigned to the plan definition
10520* [Questionnaire](questionnaire.html): A quantity- or range-valued use context assigned to the questionnaire
10521* [Requirements](requirements.html): A quantity- or range-valued use context assigned to the requirements
10522* [SearchParameter](searchparameter.html): A quantity- or range-valued use context assigned to the search parameter
10523* [StructureDefinition](structuredefinition.html): A quantity- or range-valued use context assigned to the structure definition
10524* [StructureMap](structuremap.html): A quantity- or range-valued use context assigned to the structure map
10525* [TerminologyCapabilities](terminologycapabilities.html): A quantity- or range-valued use context assigned to the terminology capabilities
10526* [TestScript](testscript.html): A quantity- or range-valued use context assigned to the test script
10527* [ValueSet](valueset.html): A quantity- or range-valued use context assigned to the value set
10528</b><br>
10529   * Type: <b>quantity</b><br>
10530   * Path: <b>(ActivityDefinition.useContext.value as Quantity) | (ActivityDefinition.useContext.value as Range) | (ActorDefinition.useContext.value as Quantity) | (ActorDefinition.useContext.value as Range) | (CapabilityStatement.useContext.value as Quantity) | (CapabilityStatement.useContext.value as Range) | (ChargeItemDefinition.useContext.value as Quantity) | (ChargeItemDefinition.useContext.value as Range) | (Citation.useContext.value as Quantity) | (Citation.useContext.value as Range) | (CodeSystem.useContext.value as Quantity) | (CodeSystem.useContext.value as Range) | (CompartmentDefinition.useContext.value as Quantity) | (CompartmentDefinition.useContext.value as Range) | (ConceptMap.useContext.value as Quantity) | (ConceptMap.useContext.value as Range) | (ConditionDefinition.useContext.value as Quantity) | (ConditionDefinition.useContext.value as Range) | (EventDefinition.useContext.value as Quantity) | (EventDefinition.useContext.value as Range) | (Evidence.useContext.value as Quantity) | (Evidence.useContext.value as Range) | (EvidenceReport.useContext.value as Quantity) | (EvidenceReport.useContext.value as Range) | (EvidenceVariable.useContext.value as Quantity) | (EvidenceVariable.useContext.value as Range) | (ExampleScenario.useContext.value as Quantity) | (ExampleScenario.useContext.value as Range) | (GraphDefinition.useContext.value as Quantity) | (GraphDefinition.useContext.value as Range) | (ImplementationGuide.useContext.value as Quantity) | (ImplementationGuide.useContext.value as Range) | (Library.useContext.value as Quantity) | (Library.useContext.value as Range) | (Measure.useContext.value as Quantity) | (Measure.useContext.value as Range) | (MessageDefinition.useContext.value as Quantity) | (MessageDefinition.useContext.value as Range) | (NamingSystem.useContext.value as Quantity) | (NamingSystem.useContext.value as Range) | (OperationDefinition.useContext.value as Quantity) | (OperationDefinition.useContext.value as Range) | (PlanDefinition.useContext.value as Quantity) | (PlanDefinition.useContext.value as Range) | (Questionnaire.useContext.value as Quantity) | (Questionnaire.useContext.value as Range) | (Requirements.useContext.value as Quantity) | (Requirements.useContext.value as Range) | (SearchParameter.useContext.value as Quantity) | (SearchParameter.useContext.value as Range) | (StructureDefinition.useContext.value as Quantity) | (StructureDefinition.useContext.value as Range) | (StructureMap.useContext.value as Quantity) | (StructureMap.useContext.value as Range) | (TerminologyCapabilities.useContext.value as Quantity) | (TerminologyCapabilities.useContext.value as Range) | (TestScript.useContext.value as Quantity) | (TestScript.useContext.value as Range) | (ValueSet.useContext.value as Quantity) | (ValueSet.useContext.value as Range)</b><br>
10531   * </p>
10532   */
10533  @SearchParamDefinition(name="context-quantity", path="(ActivityDefinition.useContext.value as Quantity) | (ActivityDefinition.useContext.value as Range) | (ActorDefinition.useContext.value as Quantity) | (ActorDefinition.useContext.value as Range) | (CapabilityStatement.useContext.value as Quantity) | (CapabilityStatement.useContext.value as Range) | (ChargeItemDefinition.useContext.value as Quantity) | (ChargeItemDefinition.useContext.value as Range) | (Citation.useContext.value as Quantity) | (Citation.useContext.value as Range) | (CodeSystem.useContext.value as Quantity) | (CodeSystem.useContext.value as Range) | (CompartmentDefinition.useContext.value as Quantity) | (CompartmentDefinition.useContext.value as Range) | (ConceptMap.useContext.value as Quantity) | (ConceptMap.useContext.value as Range) | (ConditionDefinition.useContext.value as Quantity) | (ConditionDefinition.useContext.value as Range) | (EventDefinition.useContext.value as Quantity) | (EventDefinition.useContext.value as Range) | (Evidence.useContext.value as Quantity) | (Evidence.useContext.value as Range) | (EvidenceReport.useContext.value as Quantity) | (EvidenceReport.useContext.value as Range) | (EvidenceVariable.useContext.value as Quantity) | (EvidenceVariable.useContext.value as Range) | (ExampleScenario.useContext.value as Quantity) | (ExampleScenario.useContext.value as Range) | (GraphDefinition.useContext.value as Quantity) | (GraphDefinition.useContext.value as Range) | (ImplementationGuide.useContext.value as Quantity) | (ImplementationGuide.useContext.value as Range) | (Library.useContext.value as Quantity) | (Library.useContext.value as Range) | (Measure.useContext.value as Quantity) | (Measure.useContext.value as Range) | (MessageDefinition.useContext.value as Quantity) | (MessageDefinition.useContext.value as Range) | (NamingSystem.useContext.value as Quantity) | (NamingSystem.useContext.value as Range) | (OperationDefinition.useContext.value as Quantity) | (OperationDefinition.useContext.value as Range) | (PlanDefinition.useContext.value as Quantity) | (PlanDefinition.useContext.value as Range) | (Questionnaire.useContext.value as Quantity) | (Questionnaire.useContext.value as Range) | (Requirements.useContext.value as Quantity) | (Requirements.useContext.value as Range) | (SearchParameter.useContext.value as Quantity) | (SearchParameter.useContext.value as Range) | (StructureDefinition.useContext.value as Quantity) | (StructureDefinition.useContext.value as Range) | (StructureMap.useContext.value as Quantity) | (StructureMap.useContext.value as Range) | (TerminologyCapabilities.useContext.value as Quantity) | (TerminologyCapabilities.useContext.value as Range) | (TestScript.useContext.value as Quantity) | (TestScript.useContext.value as Range) | (ValueSet.useContext.value as Quantity) | (ValueSet.useContext.value as Range)", description="Multiple Resources: \r\n\r\n* [ActivityDefinition](activitydefinition.html): A quantity- or range-valued use context assigned to the activity definition\r\n* [ActorDefinition](actordefinition.html): A quantity- or range-valued use context assigned to the Actor Definition\r\n* [CapabilityStatement](capabilitystatement.html): A quantity- or range-valued use context assigned to the capability statement\r\n* [ChargeItemDefinition](chargeitemdefinition.html): A quantity- or range-valued use context assigned to the charge item definition\r\n* [Citation](citation.html): A quantity- or range-valued use context assigned to the citation\r\n* [CodeSystem](codesystem.html): A quantity- or range-valued use context assigned to the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): A quantity- or range-valued use context assigned to the compartment definition\r\n* [ConceptMap](conceptmap.html): A quantity- or range-valued use context assigned to the concept map\r\n* [ConditionDefinition](conditiondefinition.html): A quantity- or range-valued use context assigned to the condition definition\r\n* [EventDefinition](eventdefinition.html): A quantity- or range-valued use context assigned to the event definition\r\n* [Evidence](evidence.html): A quantity- or range-valued use context assigned to the evidence\r\n* [EvidenceReport](evidencereport.html): A quantity- or range-valued use context assigned to the evidence report\r\n* [EvidenceVariable](evidencevariable.html): A quantity- or range-valued use context assigned to the evidence variable\r\n* [ExampleScenario](examplescenario.html): A quantity- or range-valued use context assigned to the example scenario\r\n* [GraphDefinition](graphdefinition.html): A quantity- or range-valued use context assigned to the graph definition\r\n* [ImplementationGuide](implementationguide.html): A quantity- or range-valued use context assigned to the implementation guide\r\n* [Library](library.html): A quantity- or range-valued use context assigned to the library\r\n* [Measure](measure.html): A quantity- or range-valued use context assigned to the measure\r\n* [MessageDefinition](messagedefinition.html): A quantity- or range-valued use context assigned to the message definition\r\n* [NamingSystem](namingsystem.html): A quantity- or range-valued use context assigned to the naming system\r\n* [OperationDefinition](operationdefinition.html): A quantity- or range-valued use context assigned to the operation definition\r\n* [PlanDefinition](plandefinition.html): A quantity- or range-valued use context assigned to the plan definition\r\n* [Questionnaire](questionnaire.html): A quantity- or range-valued use context assigned to the questionnaire\r\n* [Requirements](requirements.html): A quantity- or range-valued use context assigned to the requirements\r\n* [SearchParameter](searchparameter.html): A quantity- or range-valued use context assigned to the search parameter\r\n* [StructureDefinition](structuredefinition.html): A quantity- or range-valued use context assigned to the structure definition\r\n* [StructureMap](structuremap.html): A quantity- or range-valued use context assigned to the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): A quantity- or range-valued use context assigned to the terminology capabilities\r\n* [TestScript](testscript.html): A quantity- or range-valued use context assigned to the test script\r\n* [ValueSet](valueset.html): A quantity- or range-valued use context assigned to the value set\r\n", type="quantity" )
10534  public static final String SP_CONTEXT_QUANTITY = "context-quantity";
10535 /**
10536   * <b>Fluent Client</b> search parameter constant for <b>context-quantity</b>
10537   * <p>
10538   * Description: <b>Multiple Resources: 
10539
10540* [ActivityDefinition](activitydefinition.html): A quantity- or range-valued use context assigned to the activity definition
10541* [ActorDefinition](actordefinition.html): A quantity- or range-valued use context assigned to the Actor Definition
10542* [CapabilityStatement](capabilitystatement.html): A quantity- or range-valued use context assigned to the capability statement
10543* [ChargeItemDefinition](chargeitemdefinition.html): A quantity- or range-valued use context assigned to the charge item definition
10544* [Citation](citation.html): A quantity- or range-valued use context assigned to the citation
10545* [CodeSystem](codesystem.html): A quantity- or range-valued use context assigned to the code system
10546* [CompartmentDefinition](compartmentdefinition.html): A quantity- or range-valued use context assigned to the compartment definition
10547* [ConceptMap](conceptmap.html): A quantity- or range-valued use context assigned to the concept map
10548* [ConditionDefinition](conditiondefinition.html): A quantity- or range-valued use context assigned to the condition definition
10549* [EventDefinition](eventdefinition.html): A quantity- or range-valued use context assigned to the event definition
10550* [Evidence](evidence.html): A quantity- or range-valued use context assigned to the evidence
10551* [EvidenceReport](evidencereport.html): A quantity- or range-valued use context assigned to the evidence report
10552* [EvidenceVariable](evidencevariable.html): A quantity- or range-valued use context assigned to the evidence variable
10553* [ExampleScenario](examplescenario.html): A quantity- or range-valued use context assigned to the example scenario
10554* [GraphDefinition](graphdefinition.html): A quantity- or range-valued use context assigned to the graph definition
10555* [ImplementationGuide](implementationguide.html): A quantity- or range-valued use context assigned to the implementation guide
10556* [Library](library.html): A quantity- or range-valued use context assigned to the library
10557* [Measure](measure.html): A quantity- or range-valued use context assigned to the measure
10558* [MessageDefinition](messagedefinition.html): A quantity- or range-valued use context assigned to the message definition
10559* [NamingSystem](namingsystem.html): A quantity- or range-valued use context assigned to the naming system
10560* [OperationDefinition](operationdefinition.html): A quantity- or range-valued use context assigned to the operation definition
10561* [PlanDefinition](plandefinition.html): A quantity- or range-valued use context assigned to the plan definition
10562* [Questionnaire](questionnaire.html): A quantity- or range-valued use context assigned to the questionnaire
10563* [Requirements](requirements.html): A quantity- or range-valued use context assigned to the requirements
10564* [SearchParameter](searchparameter.html): A quantity- or range-valued use context assigned to the search parameter
10565* [StructureDefinition](structuredefinition.html): A quantity- or range-valued use context assigned to the structure definition
10566* [StructureMap](structuremap.html): A quantity- or range-valued use context assigned to the structure map
10567* [TerminologyCapabilities](terminologycapabilities.html): A quantity- or range-valued use context assigned to the terminology capabilities
10568* [TestScript](testscript.html): A quantity- or range-valued use context assigned to the test script
10569* [ValueSet](valueset.html): A quantity- or range-valued use context assigned to the value set
10570</b><br>
10571   * Type: <b>quantity</b><br>
10572   * Path: <b>(ActivityDefinition.useContext.value as Quantity) | (ActivityDefinition.useContext.value as Range) | (ActorDefinition.useContext.value as Quantity) | (ActorDefinition.useContext.value as Range) | (CapabilityStatement.useContext.value as Quantity) | (CapabilityStatement.useContext.value as Range) | (ChargeItemDefinition.useContext.value as Quantity) | (ChargeItemDefinition.useContext.value as Range) | (Citation.useContext.value as Quantity) | (Citation.useContext.value as Range) | (CodeSystem.useContext.value as Quantity) | (CodeSystem.useContext.value as Range) | (CompartmentDefinition.useContext.value as Quantity) | (CompartmentDefinition.useContext.value as Range) | (ConceptMap.useContext.value as Quantity) | (ConceptMap.useContext.value as Range) | (ConditionDefinition.useContext.value as Quantity) | (ConditionDefinition.useContext.value as Range) | (EventDefinition.useContext.value as Quantity) | (EventDefinition.useContext.value as Range) | (Evidence.useContext.value as Quantity) | (Evidence.useContext.value as Range) | (EvidenceReport.useContext.value as Quantity) | (EvidenceReport.useContext.value as Range) | (EvidenceVariable.useContext.value as Quantity) | (EvidenceVariable.useContext.value as Range) | (ExampleScenario.useContext.value as Quantity) | (ExampleScenario.useContext.value as Range) | (GraphDefinition.useContext.value as Quantity) | (GraphDefinition.useContext.value as Range) | (ImplementationGuide.useContext.value as Quantity) | (ImplementationGuide.useContext.value as Range) | (Library.useContext.value as Quantity) | (Library.useContext.value as Range) | (Measure.useContext.value as Quantity) | (Measure.useContext.value as Range) | (MessageDefinition.useContext.value as Quantity) | (MessageDefinition.useContext.value as Range) | (NamingSystem.useContext.value as Quantity) | (NamingSystem.useContext.value as Range) | (OperationDefinition.useContext.value as Quantity) | (OperationDefinition.useContext.value as Range) | (PlanDefinition.useContext.value as Quantity) | (PlanDefinition.useContext.value as Range) | (Questionnaire.useContext.value as Quantity) | (Questionnaire.useContext.value as Range) | (Requirements.useContext.value as Quantity) | (Requirements.useContext.value as Range) | (SearchParameter.useContext.value as Quantity) | (SearchParameter.useContext.value as Range) | (StructureDefinition.useContext.value as Quantity) | (StructureDefinition.useContext.value as Range) | (StructureMap.useContext.value as Quantity) | (StructureMap.useContext.value as Range) | (TerminologyCapabilities.useContext.value as Quantity) | (TerminologyCapabilities.useContext.value as Range) | (TestScript.useContext.value as Quantity) | (TestScript.useContext.value as Range) | (ValueSet.useContext.value as Quantity) | (ValueSet.useContext.value as Range)</b><br>
10573   * </p>
10574   */
10575  public static final ca.uhn.fhir.rest.gclient.QuantityClientParam CONTEXT_QUANTITY = new ca.uhn.fhir.rest.gclient.QuantityClientParam(SP_CONTEXT_QUANTITY);
10576
10577 /**
10578   * Search parameter: <b>context-type-quantity</b>
10579   * <p>
10580   * Description: <b>Multiple Resources: 
10581
10582* [ActivityDefinition](activitydefinition.html): A use context type and quantity- or range-based value assigned to the activity definition
10583* [ActorDefinition](actordefinition.html): A use context type and quantity- or range-based value assigned to the Actor Definition
10584* [CapabilityStatement](capabilitystatement.html): A use context type and quantity- or range-based value assigned to the capability statement
10585* [ChargeItemDefinition](chargeitemdefinition.html): A use context type and quantity- or range-based value assigned to the charge item definition
10586* [Citation](citation.html): A use context type and quantity- or range-based value assigned to the citation
10587* [CodeSystem](codesystem.html): A use context type and quantity- or range-based value assigned to the code system
10588* [CompartmentDefinition](compartmentdefinition.html): A use context type and quantity- or range-based value assigned to the compartment definition
10589* [ConceptMap](conceptmap.html): A use context type and quantity- or range-based value assigned to the concept map
10590* [ConditionDefinition](conditiondefinition.html): A use context type and quantity- or range-based value assigned to the condition definition
10591* [EventDefinition](eventdefinition.html): A use context type and quantity- or range-based value assigned to the event definition
10592* [Evidence](evidence.html): A use context type and quantity- or range-based value assigned to the evidence
10593* [EvidenceReport](evidencereport.html): A use context type and quantity- or range-based value assigned to the evidence report
10594* [EvidenceVariable](evidencevariable.html): A use context type and quantity- or range-based value assigned to the evidence variable
10595* [ExampleScenario](examplescenario.html): A use context type and quantity- or range-based value assigned to the example scenario
10596* [GraphDefinition](graphdefinition.html): A use context type and quantity- or range-based value assigned to the graph definition
10597* [ImplementationGuide](implementationguide.html): A use context type and quantity- or range-based value assigned to the implementation guide
10598* [Library](library.html): A use context type and quantity- or range-based value assigned to the library
10599* [Measure](measure.html): A use context type and quantity- or range-based value assigned to the measure
10600* [MessageDefinition](messagedefinition.html): A use context type and quantity- or range-based value assigned to the message definition
10601* [NamingSystem](namingsystem.html): A use context type and quantity- or range-based value assigned to the naming system
10602* [OperationDefinition](operationdefinition.html): A use context type and quantity- or range-based value assigned to the operation definition
10603* [PlanDefinition](plandefinition.html): A use context type and quantity- or range-based value assigned to the plan definition
10604* [Questionnaire](questionnaire.html): A use context type and quantity- or range-based value assigned to the questionnaire
10605* [Requirements](requirements.html): A use context type and quantity- or range-based value assigned to the requirements
10606* [SearchParameter](searchparameter.html): A use context type and quantity- or range-based value assigned to the search parameter
10607* [StructureDefinition](structuredefinition.html): A use context type and quantity- or range-based value assigned to the structure definition
10608* [StructureMap](structuremap.html): A use context type and quantity- or range-based value assigned to the structure map
10609* [TerminologyCapabilities](terminologycapabilities.html): A use context type and quantity- or range-based value assigned to the terminology capabilities
10610* [TestScript](testscript.html): A use context type and quantity- or range-based value assigned to the test script
10611* [ValueSet](valueset.html): A use context type and quantity- or range-based value assigned to the value set
10612</b><br>
10613   * Type: <b>composite</b><br>
10614   * Path: <b>ActivityDefinition.useContext | ActorDefinition.useContext | CapabilityStatement.useContext | ChargeItemDefinition.useContext | Citation.useContext | CodeSystem.useContext | CompartmentDefinition.useContext | ConceptMap.useContext | ConditionDefinition.useContext | EventDefinition.useContext | Evidence.useContext | EvidenceReport.useContext | EvidenceVariable.useContext | ExampleScenario.useContext | GraphDefinition.useContext | ImplementationGuide.useContext | Library.useContext | Measure.useContext | MessageDefinition.useContext | NamingSystem.useContext | OperationDefinition.useContext | PlanDefinition.useContext | Questionnaire.useContext | Requirements.useContext | SearchParameter.useContext | StructureDefinition.useContext | StructureMap.useContext | TerminologyCapabilities.useContext | TestScript.useContext | ValueSet.useContext</b><br>
10615   * </p>
10616   */
10617  @SearchParamDefinition(name="context-type-quantity", path="ActivityDefinition.useContext | ActorDefinition.useContext | CapabilityStatement.useContext | ChargeItemDefinition.useContext | Citation.useContext | CodeSystem.useContext | CompartmentDefinition.useContext | ConceptMap.useContext | ConditionDefinition.useContext | EventDefinition.useContext | Evidence.useContext | EvidenceReport.useContext | EvidenceVariable.useContext | ExampleScenario.useContext | GraphDefinition.useContext | ImplementationGuide.useContext | Library.useContext | Measure.useContext | MessageDefinition.useContext | NamingSystem.useContext | OperationDefinition.useContext | PlanDefinition.useContext | Questionnaire.useContext | Requirements.useContext | SearchParameter.useContext | StructureDefinition.useContext | StructureMap.useContext | TerminologyCapabilities.useContext | TestScript.useContext | ValueSet.useContext", description="Multiple Resources: \r\n\r\n* [ActivityDefinition](activitydefinition.html): A use context type and quantity- or range-based value assigned to the activity definition\r\n* [ActorDefinition](actordefinition.html): A use context type and quantity- or range-based value assigned to the Actor Definition\r\n* [CapabilityStatement](capabilitystatement.html): A use context type and quantity- or range-based value assigned to the capability statement\r\n* [ChargeItemDefinition](chargeitemdefinition.html): A use context type and quantity- or range-based value assigned to the charge item definition\r\n* [Citation](citation.html): A use context type and quantity- or range-based value assigned to the citation\r\n* [CodeSystem](codesystem.html): A use context type and quantity- or range-based value assigned to the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): A use context type and quantity- or range-based value assigned to the compartment definition\r\n* [ConceptMap](conceptmap.html): A use context type and quantity- or range-based value assigned to the concept map\r\n* [ConditionDefinition](conditiondefinition.html): A use context type and quantity- or range-based value assigned to the condition definition\r\n* [EventDefinition](eventdefinition.html): A use context type and quantity- or range-based value assigned to the event definition\r\n* [Evidence](evidence.html): A use context type and quantity- or range-based value assigned to the evidence\r\n* [EvidenceReport](evidencereport.html): A use context type and quantity- or range-based value assigned to the evidence report\r\n* [EvidenceVariable](evidencevariable.html): A use context type and quantity- or range-based value assigned to the evidence variable\r\n* [ExampleScenario](examplescenario.html): A use context type and quantity- or range-based value assigned to the example scenario\r\n* [GraphDefinition](graphdefinition.html): A use context type and quantity- or range-based value assigned to the graph definition\r\n* [ImplementationGuide](implementationguide.html): A use context type and quantity- or range-based value assigned to the implementation guide\r\n* [Library](library.html): A use context type and quantity- or range-based value assigned to the library\r\n* [Measure](measure.html): A use context type and quantity- or range-based value assigned to the measure\r\n* [MessageDefinition](messagedefinition.html): A use context type and quantity- or range-based value assigned to the message definition\r\n* [NamingSystem](namingsystem.html): A use context type and quantity- or range-based value assigned to the naming system\r\n* [OperationDefinition](operationdefinition.html): A use context type and quantity- or range-based value assigned to the operation definition\r\n* [PlanDefinition](plandefinition.html): A use context type and quantity- or range-based value assigned to the plan definition\r\n* [Questionnaire](questionnaire.html): A use context type and quantity- or range-based value assigned to the questionnaire\r\n* [Requirements](requirements.html): A use context type and quantity- or range-based value assigned to the requirements\r\n* [SearchParameter](searchparameter.html): A use context type and quantity- or range-based value assigned to the search parameter\r\n* [StructureDefinition](structuredefinition.html): A use context type and quantity- or range-based value assigned to the structure definition\r\n* [StructureMap](structuremap.html): A use context type and quantity- or range-based value assigned to the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): A use context type and quantity- or range-based value assigned to the terminology capabilities\r\n* [TestScript](testscript.html): A use context type and quantity- or range-based value assigned to the test script\r\n* [ValueSet](valueset.html): A use context type and quantity- or range-based value assigned to the value set\r\n", type="composite", compositeOf={"context-type", "context-quantity"} )
10618  public static final String SP_CONTEXT_TYPE_QUANTITY = "context-type-quantity";
10619 /**
10620   * <b>Fluent Client</b> search parameter constant for <b>context-type-quantity</b>
10621   * <p>
10622   * Description: <b>Multiple Resources: 
10623
10624* [ActivityDefinition](activitydefinition.html): A use context type and quantity- or range-based value assigned to the activity definition
10625* [ActorDefinition](actordefinition.html): A use context type and quantity- or range-based value assigned to the Actor Definition
10626* [CapabilityStatement](capabilitystatement.html): A use context type and quantity- or range-based value assigned to the capability statement
10627* [ChargeItemDefinition](chargeitemdefinition.html): A use context type and quantity- or range-based value assigned to the charge item definition
10628* [Citation](citation.html): A use context type and quantity- or range-based value assigned to the citation
10629* [CodeSystem](codesystem.html): A use context type and quantity- or range-based value assigned to the code system
10630* [CompartmentDefinition](compartmentdefinition.html): A use context type and quantity- or range-based value assigned to the compartment definition
10631* [ConceptMap](conceptmap.html): A use context type and quantity- or range-based value assigned to the concept map
10632* [ConditionDefinition](conditiondefinition.html): A use context type and quantity- or range-based value assigned to the condition definition
10633* [EventDefinition](eventdefinition.html): A use context type and quantity- or range-based value assigned to the event definition
10634* [Evidence](evidence.html): A use context type and quantity- or range-based value assigned to the evidence
10635* [EvidenceReport](evidencereport.html): A use context type and quantity- or range-based value assigned to the evidence report
10636* [EvidenceVariable](evidencevariable.html): A use context type and quantity- or range-based value assigned to the evidence variable
10637* [ExampleScenario](examplescenario.html): A use context type and quantity- or range-based value assigned to the example scenario
10638* [GraphDefinition](graphdefinition.html): A use context type and quantity- or range-based value assigned to the graph definition
10639* [ImplementationGuide](implementationguide.html): A use context type and quantity- or range-based value assigned to the implementation guide
10640* [Library](library.html): A use context type and quantity- or range-based value assigned to the library
10641* [Measure](measure.html): A use context type and quantity- or range-based value assigned to the measure
10642* [MessageDefinition](messagedefinition.html): A use context type and quantity- or range-based value assigned to the message definition
10643* [NamingSystem](namingsystem.html): A use context type and quantity- or range-based value assigned to the naming system
10644* [OperationDefinition](operationdefinition.html): A use context type and quantity- or range-based value assigned to the operation definition
10645* [PlanDefinition](plandefinition.html): A use context type and quantity- or range-based value assigned to the plan definition
10646* [Questionnaire](questionnaire.html): A use context type and quantity- or range-based value assigned to the questionnaire
10647* [Requirements](requirements.html): A use context type and quantity- or range-based value assigned to the requirements
10648* [SearchParameter](searchparameter.html): A use context type and quantity- or range-based value assigned to the search parameter
10649* [StructureDefinition](structuredefinition.html): A use context type and quantity- or range-based value assigned to the structure definition
10650* [StructureMap](structuremap.html): A use context type and quantity- or range-based value assigned to the structure map
10651* [TerminologyCapabilities](terminologycapabilities.html): A use context type and quantity- or range-based value assigned to the terminology capabilities
10652* [TestScript](testscript.html): A use context type and quantity- or range-based value assigned to the test script
10653* [ValueSet](valueset.html): A use context type and quantity- or range-based value assigned to the value set
10654</b><br>
10655   * Type: <b>composite</b><br>
10656   * Path: <b>ActivityDefinition.useContext | ActorDefinition.useContext | CapabilityStatement.useContext | ChargeItemDefinition.useContext | Citation.useContext | CodeSystem.useContext | CompartmentDefinition.useContext | ConceptMap.useContext | ConditionDefinition.useContext | EventDefinition.useContext | Evidence.useContext | EvidenceReport.useContext | EvidenceVariable.useContext | ExampleScenario.useContext | GraphDefinition.useContext | ImplementationGuide.useContext | Library.useContext | Measure.useContext | MessageDefinition.useContext | NamingSystem.useContext | OperationDefinition.useContext | PlanDefinition.useContext | Questionnaire.useContext | Requirements.useContext | SearchParameter.useContext | StructureDefinition.useContext | StructureMap.useContext | TerminologyCapabilities.useContext | TestScript.useContext | ValueSet.useContext</b><br>
10657   * </p>
10658   */
10659  public static final ca.uhn.fhir.rest.gclient.CompositeClientParam<ca.uhn.fhir.rest.gclient.TokenClientParam, ca.uhn.fhir.rest.gclient.QuantityClientParam> CONTEXT_TYPE_QUANTITY = new ca.uhn.fhir.rest.gclient.CompositeClientParam<ca.uhn.fhir.rest.gclient.TokenClientParam, ca.uhn.fhir.rest.gclient.QuantityClientParam>(SP_CONTEXT_TYPE_QUANTITY);
10660
10661 /**
10662   * Search parameter: <b>context-type-value</b>
10663   * <p>
10664   * Description: <b>Multiple Resources: 
10665
10666* [ActivityDefinition](activitydefinition.html): A use context type and value assigned to the activity definition
10667* [ActorDefinition](actordefinition.html): A use context type and value assigned to the Actor Definition
10668* [CapabilityStatement](capabilitystatement.html): A use context type and value assigned to the capability statement
10669* [ChargeItemDefinition](chargeitemdefinition.html): A use context type and value assigned to the charge item definition
10670* [Citation](citation.html): A use context type and value assigned to the citation
10671* [CodeSystem](codesystem.html): A use context type and value assigned to the code system
10672* [CompartmentDefinition](compartmentdefinition.html): A use context type and value assigned to the compartment definition
10673* [ConceptMap](conceptmap.html): A use context type and value assigned to the concept map
10674* [ConditionDefinition](conditiondefinition.html): A use context type and value assigned to the condition definition
10675* [EventDefinition](eventdefinition.html): A use context type and value assigned to the event definition
10676* [Evidence](evidence.html): A use context type and value assigned to the evidence
10677* [EvidenceReport](evidencereport.html): A use context type and value assigned to the evidence report
10678* [EvidenceVariable](evidencevariable.html): A use context type and value assigned to the evidence variable
10679* [ExampleScenario](examplescenario.html): A use context type and value assigned to the example scenario
10680* [GraphDefinition](graphdefinition.html): A use context type and value assigned to the graph definition
10681* [ImplementationGuide](implementationguide.html): A use context type and value assigned to the implementation guide
10682* [Library](library.html): A use context type and value assigned to the library
10683* [Measure](measure.html): A use context type and value assigned to the measure
10684* [MessageDefinition](messagedefinition.html): A use context type and value assigned to the message definition
10685* [NamingSystem](namingsystem.html): A use context type and value assigned to the naming system
10686* [OperationDefinition](operationdefinition.html): A use context type and value assigned to the operation definition
10687* [PlanDefinition](plandefinition.html): A use context type and value assigned to the plan definition
10688* [Questionnaire](questionnaire.html): A use context type and value assigned to the questionnaire
10689* [Requirements](requirements.html): A use context type and value assigned to the requirements
10690* [SearchParameter](searchparameter.html): A use context type and value assigned to the search parameter
10691* [StructureDefinition](structuredefinition.html): A use context type and value assigned to the structure definition
10692* [StructureMap](structuremap.html): A use context type and value assigned to the structure map
10693* [TerminologyCapabilities](terminologycapabilities.html): A use context type and value assigned to the terminology capabilities
10694* [TestScript](testscript.html): A use context type and value assigned to the test script
10695* [ValueSet](valueset.html): A use context type and value assigned to the value set
10696</b><br>
10697   * Type: <b>composite</b><br>
10698   * Path: <b>ActivityDefinition.useContext | ActorDefinition.useContext | CapabilityStatement.useContext | ChargeItemDefinition.useContext | Citation.useContext | CodeSystem.useContext | CompartmentDefinition.useContext | ConceptMap.useContext | ConditionDefinition.useContext | EventDefinition.useContext | Evidence.useContext | EvidenceReport.useContext | EvidenceVariable.useContext | ExampleScenario.useContext | GraphDefinition.useContext | ImplementationGuide.useContext | Library.useContext | Measure.useContext | MessageDefinition.useContext | NamingSystem.useContext | OperationDefinition.useContext | PlanDefinition.useContext | Questionnaire.useContext | Requirements.useContext | SearchParameter.useContext | StructureDefinition.useContext | StructureMap.useContext | TerminologyCapabilities.useContext | TestScript.useContext | ValueSet.useContext</b><br>
10699   * </p>
10700   */
10701  @SearchParamDefinition(name="context-type-value", path="ActivityDefinition.useContext | ActorDefinition.useContext | CapabilityStatement.useContext | ChargeItemDefinition.useContext | Citation.useContext | CodeSystem.useContext | CompartmentDefinition.useContext | ConceptMap.useContext | ConditionDefinition.useContext | EventDefinition.useContext | Evidence.useContext | EvidenceReport.useContext | EvidenceVariable.useContext | ExampleScenario.useContext | GraphDefinition.useContext | ImplementationGuide.useContext | Library.useContext | Measure.useContext | MessageDefinition.useContext | NamingSystem.useContext | OperationDefinition.useContext | PlanDefinition.useContext | Questionnaire.useContext | Requirements.useContext | SearchParameter.useContext | StructureDefinition.useContext | StructureMap.useContext | TerminologyCapabilities.useContext | TestScript.useContext | ValueSet.useContext", description="Multiple Resources: \r\n\r\n* [ActivityDefinition](activitydefinition.html): A use context type and value assigned to the activity definition\r\n* [ActorDefinition](actordefinition.html): A use context type and value assigned to the Actor Definition\r\n* [CapabilityStatement](capabilitystatement.html): A use context type and value assigned to the capability statement\r\n* [ChargeItemDefinition](chargeitemdefinition.html): A use context type and value assigned to the charge item definition\r\n* [Citation](citation.html): A use context type and value assigned to the citation\r\n* [CodeSystem](codesystem.html): A use context type and value assigned to the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): A use context type and value assigned to the compartment definition\r\n* [ConceptMap](conceptmap.html): A use context type and value assigned to the concept map\r\n* [ConditionDefinition](conditiondefinition.html): A use context type and value assigned to the condition definition\r\n* [EventDefinition](eventdefinition.html): A use context type and value assigned to the event definition\r\n* [Evidence](evidence.html): A use context type and value assigned to the evidence\r\n* [EvidenceReport](evidencereport.html): A use context type and value assigned to the evidence report\r\n* [EvidenceVariable](evidencevariable.html): A use context type and value assigned to the evidence variable\r\n* [ExampleScenario](examplescenario.html): A use context type and value assigned to the example scenario\r\n* [GraphDefinition](graphdefinition.html): A use context type and value assigned to the graph definition\r\n* [ImplementationGuide](implementationguide.html): A use context type and value assigned to the implementation guide\r\n* [Library](library.html): A use context type and value assigned to the library\r\n* [Measure](measure.html): A use context type and value assigned to the measure\r\n* [MessageDefinition](messagedefinition.html): A use context type and value assigned to the message definition\r\n* [NamingSystem](namingsystem.html): A use context type and value assigned to the naming system\r\n* [OperationDefinition](operationdefinition.html): A use context type and value assigned to the operation definition\r\n* [PlanDefinition](plandefinition.html): A use context type and value assigned to the plan definition\r\n* [Questionnaire](questionnaire.html): A use context type and value assigned to the questionnaire\r\n* [Requirements](requirements.html): A use context type and value assigned to the requirements\r\n* [SearchParameter](searchparameter.html): A use context type and value assigned to the search parameter\r\n* [StructureDefinition](structuredefinition.html): A use context type and value assigned to the structure definition\r\n* [StructureMap](structuremap.html): A use context type and value assigned to the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): A use context type and value assigned to the terminology capabilities\r\n* [TestScript](testscript.html): A use context type and value assigned to the test script\r\n* [ValueSet](valueset.html): A use context type and value assigned to the value set\r\n", type="composite", compositeOf={"context-type", "context"} )
10702  public static final String SP_CONTEXT_TYPE_VALUE = "context-type-value";
10703 /**
10704   * <b>Fluent Client</b> search parameter constant for <b>context-type-value</b>
10705   * <p>
10706   * Description: <b>Multiple Resources: 
10707
10708* [ActivityDefinition](activitydefinition.html): A use context type and value assigned to the activity definition
10709* [ActorDefinition](actordefinition.html): A use context type and value assigned to the Actor Definition
10710* [CapabilityStatement](capabilitystatement.html): A use context type and value assigned to the capability statement
10711* [ChargeItemDefinition](chargeitemdefinition.html): A use context type and value assigned to the charge item definition
10712* [Citation](citation.html): A use context type and value assigned to the citation
10713* [CodeSystem](codesystem.html): A use context type and value assigned to the code system
10714* [CompartmentDefinition](compartmentdefinition.html): A use context type and value assigned to the compartment definition
10715* [ConceptMap](conceptmap.html): A use context type and value assigned to the concept map
10716* [ConditionDefinition](conditiondefinition.html): A use context type and value assigned to the condition definition
10717* [EventDefinition](eventdefinition.html): A use context type and value assigned to the event definition
10718* [Evidence](evidence.html): A use context type and value assigned to the evidence
10719* [EvidenceReport](evidencereport.html): A use context type and value assigned to the evidence report
10720* [EvidenceVariable](evidencevariable.html): A use context type and value assigned to the evidence variable
10721* [ExampleScenario](examplescenario.html): A use context type and value assigned to the example scenario
10722* [GraphDefinition](graphdefinition.html): A use context type and value assigned to the graph definition
10723* [ImplementationGuide](implementationguide.html): A use context type and value assigned to the implementation guide
10724* [Library](library.html): A use context type and value assigned to the library
10725* [Measure](measure.html): A use context type and value assigned to the measure
10726* [MessageDefinition](messagedefinition.html): A use context type and value assigned to the message definition
10727* [NamingSystem](namingsystem.html): A use context type and value assigned to the naming system
10728* [OperationDefinition](operationdefinition.html): A use context type and value assigned to the operation definition
10729* [PlanDefinition](plandefinition.html): A use context type and value assigned to the plan definition
10730* [Questionnaire](questionnaire.html): A use context type and value assigned to the questionnaire
10731* [Requirements](requirements.html): A use context type and value assigned to the requirements
10732* [SearchParameter](searchparameter.html): A use context type and value assigned to the search parameter
10733* [StructureDefinition](structuredefinition.html): A use context type and value assigned to the structure definition
10734* [StructureMap](structuremap.html): A use context type and value assigned to the structure map
10735* [TerminologyCapabilities](terminologycapabilities.html): A use context type and value assigned to the terminology capabilities
10736* [TestScript](testscript.html): A use context type and value assigned to the test script
10737* [ValueSet](valueset.html): A use context type and value assigned to the value set
10738</b><br>
10739   * Type: <b>composite</b><br>
10740   * Path: <b>ActivityDefinition.useContext | ActorDefinition.useContext | CapabilityStatement.useContext | ChargeItemDefinition.useContext | Citation.useContext | CodeSystem.useContext | CompartmentDefinition.useContext | ConceptMap.useContext | ConditionDefinition.useContext | EventDefinition.useContext | Evidence.useContext | EvidenceReport.useContext | EvidenceVariable.useContext | ExampleScenario.useContext | GraphDefinition.useContext | ImplementationGuide.useContext | Library.useContext | Measure.useContext | MessageDefinition.useContext | NamingSystem.useContext | OperationDefinition.useContext | PlanDefinition.useContext | Questionnaire.useContext | Requirements.useContext | SearchParameter.useContext | StructureDefinition.useContext | StructureMap.useContext | TerminologyCapabilities.useContext | TestScript.useContext | ValueSet.useContext</b><br>
10741   * </p>
10742   */
10743  public static final ca.uhn.fhir.rest.gclient.CompositeClientParam<ca.uhn.fhir.rest.gclient.TokenClientParam, ca.uhn.fhir.rest.gclient.TokenClientParam> CONTEXT_TYPE_VALUE = new ca.uhn.fhir.rest.gclient.CompositeClientParam<ca.uhn.fhir.rest.gclient.TokenClientParam, ca.uhn.fhir.rest.gclient.TokenClientParam>(SP_CONTEXT_TYPE_VALUE);
10744
10745 /**
10746   * Search parameter: <b>context-type</b>
10747   * <p>
10748   * Description: <b>Multiple Resources: 
10749
10750* [ActivityDefinition](activitydefinition.html): A type of use context assigned to the activity definition
10751* [ActorDefinition](actordefinition.html): A type of use context assigned to the Actor Definition
10752* [CapabilityStatement](capabilitystatement.html): A type of use context assigned to the capability statement
10753* [ChargeItemDefinition](chargeitemdefinition.html): A type of use context assigned to the charge item definition
10754* [Citation](citation.html): A type of use context assigned to the citation
10755* [CodeSystem](codesystem.html): A type of use context assigned to the code system
10756* [CompartmentDefinition](compartmentdefinition.html): A type of use context assigned to the compartment definition
10757* [ConceptMap](conceptmap.html): A type of use context assigned to the concept map
10758* [ConditionDefinition](conditiondefinition.html): A type of use context assigned to the condition definition
10759* [EventDefinition](eventdefinition.html): A type of use context assigned to the event definition
10760* [Evidence](evidence.html): A type of use context assigned to the evidence
10761* [EvidenceReport](evidencereport.html): A type of use context assigned to the evidence report
10762* [EvidenceVariable](evidencevariable.html): A type of use context assigned to the evidence variable
10763* [ExampleScenario](examplescenario.html): A type of use context assigned to the example scenario
10764* [GraphDefinition](graphdefinition.html): A type of use context assigned to the graph definition
10765* [ImplementationGuide](implementationguide.html): A type of use context assigned to the implementation guide
10766* [Library](library.html): A type of use context assigned to the library
10767* [Measure](measure.html): A type of use context assigned to the measure
10768* [MessageDefinition](messagedefinition.html): A type of use context assigned to the message definition
10769* [NamingSystem](namingsystem.html): A type of use context assigned to the naming system
10770* [OperationDefinition](operationdefinition.html): A type of use context assigned to the operation definition
10771* [PlanDefinition](plandefinition.html): A type of use context assigned to the plan definition
10772* [Questionnaire](questionnaire.html): A type of use context assigned to the questionnaire
10773* [Requirements](requirements.html): A type of use context assigned to the requirements
10774* [SearchParameter](searchparameter.html): A type of use context assigned to the search parameter
10775* [StructureDefinition](structuredefinition.html): A type of use context assigned to the structure definition
10776* [StructureMap](structuremap.html): A type of use context assigned to the structure map
10777* [TerminologyCapabilities](terminologycapabilities.html): A type of use context assigned to the terminology capabilities
10778* [TestScript](testscript.html): A type of use context assigned to the test script
10779* [ValueSet](valueset.html): A type of use context assigned to the value set
10780</b><br>
10781   * Type: <b>token</b><br>
10782   * Path: <b>ActivityDefinition.useContext.code | ActorDefinition.useContext.code | CapabilityStatement.useContext.code | ChargeItemDefinition.useContext.code | Citation.useContext.code | CodeSystem.useContext.code | CompartmentDefinition.useContext.code | ConceptMap.useContext.code | ConditionDefinition.useContext.code | EventDefinition.useContext.code | Evidence.useContext.code | EvidenceReport.useContext.code | EvidenceVariable.useContext.code | ExampleScenario.useContext.code | GraphDefinition.useContext.code | ImplementationGuide.useContext.code | Library.useContext.code | Measure.useContext.code | MessageDefinition.useContext.code | NamingSystem.useContext.code | OperationDefinition.useContext.code | PlanDefinition.useContext.code | Questionnaire.useContext.code | Requirements.useContext.code | SearchParameter.useContext.code | StructureDefinition.useContext.code | StructureMap.useContext.code | TerminologyCapabilities.useContext.code | TestScript.useContext.code | ValueSet.useContext.code</b><br>
10783   * </p>
10784   */
10785  @SearchParamDefinition(name="context-type", path="ActivityDefinition.useContext.code | ActorDefinition.useContext.code | CapabilityStatement.useContext.code | ChargeItemDefinition.useContext.code | Citation.useContext.code | CodeSystem.useContext.code | CompartmentDefinition.useContext.code | ConceptMap.useContext.code | ConditionDefinition.useContext.code | EventDefinition.useContext.code | Evidence.useContext.code | EvidenceReport.useContext.code | EvidenceVariable.useContext.code | ExampleScenario.useContext.code | GraphDefinition.useContext.code | ImplementationGuide.useContext.code | Library.useContext.code | Measure.useContext.code | MessageDefinition.useContext.code | NamingSystem.useContext.code | OperationDefinition.useContext.code | PlanDefinition.useContext.code | Questionnaire.useContext.code | Requirements.useContext.code | SearchParameter.useContext.code | StructureDefinition.useContext.code | StructureMap.useContext.code | TerminologyCapabilities.useContext.code | TestScript.useContext.code | ValueSet.useContext.code", description="Multiple Resources: \r\n\r\n* [ActivityDefinition](activitydefinition.html): A type of use context assigned to the activity definition\r\n* [ActorDefinition](actordefinition.html): A type of use context assigned to the Actor Definition\r\n* [CapabilityStatement](capabilitystatement.html): A type of use context assigned to the capability statement\r\n* [ChargeItemDefinition](chargeitemdefinition.html): A type of use context assigned to the charge item definition\r\n* [Citation](citation.html): A type of use context assigned to the citation\r\n* [CodeSystem](codesystem.html): A type of use context assigned to the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): A type of use context assigned to the compartment definition\r\n* [ConceptMap](conceptmap.html): A type of use context assigned to the concept map\r\n* [ConditionDefinition](conditiondefinition.html): A type of use context assigned to the condition definition\r\n* [EventDefinition](eventdefinition.html): A type of use context assigned to the event definition\r\n* [Evidence](evidence.html): A type of use context assigned to the evidence\r\n* [EvidenceReport](evidencereport.html): A type of use context assigned to the evidence report\r\n* [EvidenceVariable](evidencevariable.html): A type of use context assigned to the evidence variable\r\n* [ExampleScenario](examplescenario.html): A type of use context assigned to the example scenario\r\n* [GraphDefinition](graphdefinition.html): A type of use context assigned to the graph definition\r\n* [ImplementationGuide](implementationguide.html): A type of use context assigned to the implementation guide\r\n* [Library](library.html): A type of use context assigned to the library\r\n* [Measure](measure.html): A type of use context assigned to the measure\r\n* [MessageDefinition](messagedefinition.html): A type of use context assigned to the message definition\r\n* [NamingSystem](namingsystem.html): A type of use context assigned to the naming system\r\n* [OperationDefinition](operationdefinition.html): A type of use context assigned to the operation definition\r\n* [PlanDefinition](plandefinition.html): A type of use context assigned to the plan definition\r\n* [Questionnaire](questionnaire.html): A type of use context assigned to the questionnaire\r\n* [Requirements](requirements.html): A type of use context assigned to the requirements\r\n* [SearchParameter](searchparameter.html): A type of use context assigned to the search parameter\r\n* [StructureDefinition](structuredefinition.html): A type of use context assigned to the structure definition\r\n* [StructureMap](structuremap.html): A type of use context assigned to the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): A type of use context assigned to the terminology capabilities\r\n* [TestScript](testscript.html): A type of use context assigned to the test script\r\n* [ValueSet](valueset.html): A type of use context assigned to the value set\r\n", type="token" )
10786  public static final String SP_CONTEXT_TYPE = "context-type";
10787 /**
10788   * <b>Fluent Client</b> search parameter constant for <b>context-type</b>
10789   * <p>
10790   * Description: <b>Multiple Resources: 
10791
10792* [ActivityDefinition](activitydefinition.html): A type of use context assigned to the activity definition
10793* [ActorDefinition](actordefinition.html): A type of use context assigned to the Actor Definition
10794* [CapabilityStatement](capabilitystatement.html): A type of use context assigned to the capability statement
10795* [ChargeItemDefinition](chargeitemdefinition.html): A type of use context assigned to the charge item definition
10796* [Citation](citation.html): A type of use context assigned to the citation
10797* [CodeSystem](codesystem.html): A type of use context assigned to the code system
10798* [CompartmentDefinition](compartmentdefinition.html): A type of use context assigned to the compartment definition
10799* [ConceptMap](conceptmap.html): A type of use context assigned to the concept map
10800* [ConditionDefinition](conditiondefinition.html): A type of use context assigned to the condition definition
10801* [EventDefinition](eventdefinition.html): A type of use context assigned to the event definition
10802* [Evidence](evidence.html): A type of use context assigned to the evidence
10803* [EvidenceReport](evidencereport.html): A type of use context assigned to the evidence report
10804* [EvidenceVariable](evidencevariable.html): A type of use context assigned to the evidence variable
10805* [ExampleScenario](examplescenario.html): A type of use context assigned to the example scenario
10806* [GraphDefinition](graphdefinition.html): A type of use context assigned to the graph definition
10807* [ImplementationGuide](implementationguide.html): A type of use context assigned to the implementation guide
10808* [Library](library.html): A type of use context assigned to the library
10809* [Measure](measure.html): A type of use context assigned to the measure
10810* [MessageDefinition](messagedefinition.html): A type of use context assigned to the message definition
10811* [NamingSystem](namingsystem.html): A type of use context assigned to the naming system
10812* [OperationDefinition](operationdefinition.html): A type of use context assigned to the operation definition
10813* [PlanDefinition](plandefinition.html): A type of use context assigned to the plan definition
10814* [Questionnaire](questionnaire.html): A type of use context assigned to the questionnaire
10815* [Requirements](requirements.html): A type of use context assigned to the requirements
10816* [SearchParameter](searchparameter.html): A type of use context assigned to the search parameter
10817* [StructureDefinition](structuredefinition.html): A type of use context assigned to the structure definition
10818* [StructureMap](structuremap.html): A type of use context assigned to the structure map
10819* [TerminologyCapabilities](terminologycapabilities.html): A type of use context assigned to the terminology capabilities
10820* [TestScript](testscript.html): A type of use context assigned to the test script
10821* [ValueSet](valueset.html): A type of use context assigned to the value set
10822</b><br>
10823   * Type: <b>token</b><br>
10824   * Path: <b>ActivityDefinition.useContext.code | ActorDefinition.useContext.code | CapabilityStatement.useContext.code | ChargeItemDefinition.useContext.code | Citation.useContext.code | CodeSystem.useContext.code | CompartmentDefinition.useContext.code | ConceptMap.useContext.code | ConditionDefinition.useContext.code | EventDefinition.useContext.code | Evidence.useContext.code | EvidenceReport.useContext.code | EvidenceVariable.useContext.code | ExampleScenario.useContext.code | GraphDefinition.useContext.code | ImplementationGuide.useContext.code | Library.useContext.code | Measure.useContext.code | MessageDefinition.useContext.code | NamingSystem.useContext.code | OperationDefinition.useContext.code | PlanDefinition.useContext.code | Questionnaire.useContext.code | Requirements.useContext.code | SearchParameter.useContext.code | StructureDefinition.useContext.code | StructureMap.useContext.code | TerminologyCapabilities.useContext.code | TestScript.useContext.code | ValueSet.useContext.code</b><br>
10825   * </p>
10826   */
10827  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT_TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTEXT_TYPE);
10828
10829 /**
10830   * Search parameter: <b>context</b>
10831   * <p>
10832   * Description: <b>Multiple Resources: 
10833
10834* [ActivityDefinition](activitydefinition.html): A use context assigned to the activity definition
10835* [ActorDefinition](actordefinition.html): A use context assigned to the Actor Definition
10836* [CapabilityStatement](capabilitystatement.html): A use context assigned to the capability statement
10837* [ChargeItemDefinition](chargeitemdefinition.html): A use context assigned to the charge item definition
10838* [Citation](citation.html): A use context assigned to the citation
10839* [CodeSystem](codesystem.html): A use context assigned to the code system
10840* [CompartmentDefinition](compartmentdefinition.html): A use context assigned to the compartment definition
10841* [ConceptMap](conceptmap.html): A use context assigned to the concept map
10842* [ConditionDefinition](conditiondefinition.html): A use context assigned to the condition definition
10843* [EventDefinition](eventdefinition.html): A use context assigned to the event definition
10844* [Evidence](evidence.html): A use context assigned to the evidence
10845* [EvidenceReport](evidencereport.html): A use context assigned to the evidence report
10846* [EvidenceVariable](evidencevariable.html): A use context assigned to the evidence variable
10847* [ExampleScenario](examplescenario.html): A use context assigned to the example scenario
10848* [GraphDefinition](graphdefinition.html): A use context assigned to the graph definition
10849* [ImplementationGuide](implementationguide.html): A use context assigned to the implementation guide
10850* [Library](library.html): A use context assigned to the library
10851* [Measure](measure.html): A use context assigned to the measure
10852* [MessageDefinition](messagedefinition.html): A use context assigned to the message definition
10853* [NamingSystem](namingsystem.html): A use context assigned to the naming system
10854* [OperationDefinition](operationdefinition.html): A use context assigned to the operation definition
10855* [PlanDefinition](plandefinition.html): A use context assigned to the plan definition
10856* [Questionnaire](questionnaire.html): A use context assigned to the questionnaire
10857* [Requirements](requirements.html): A use context assigned to the requirements
10858* [SearchParameter](searchparameter.html): A use context assigned to the search parameter
10859* [StructureDefinition](structuredefinition.html): A use context assigned to the structure definition
10860* [StructureMap](structuremap.html): A use context assigned to the structure map
10861* [TerminologyCapabilities](terminologycapabilities.html): A use context assigned to the terminology capabilities
10862* [TestScript](testscript.html): A use context assigned to the test script
10863* [ValueSet](valueset.html): A use context assigned to the value set
10864</b><br>
10865   * Type: <b>token</b><br>
10866   * Path: <b>(ActivityDefinition.useContext.value as CodeableConcept) | (ActorDefinition.useContext.value as CodeableConcept) | (CapabilityStatement.useContext.value as CodeableConcept) | (ChargeItemDefinition.useContext.value as CodeableConcept) | (Citation.useContext.value as CodeableConcept) | (CodeSystem.useContext.value as CodeableConcept) | (CompartmentDefinition.useContext.value as CodeableConcept) | (ConceptMap.useContext.value as CodeableConcept) | (ConditionDefinition.useContext.value as CodeableConcept) | (EventDefinition.useContext.value as CodeableConcept) | (Evidence.useContext.value as CodeableConcept) | (EvidenceReport.useContext.value as CodeableConcept) | (EvidenceVariable.useContext.value as CodeableConcept) | (ExampleScenario.useContext.value as CodeableConcept) | (GraphDefinition.useContext.value as CodeableConcept) | (ImplementationGuide.useContext.value as CodeableConcept) | (Library.useContext.value as CodeableConcept) | (Measure.useContext.value as CodeableConcept) | (MessageDefinition.useContext.value as CodeableConcept) | (NamingSystem.useContext.value as CodeableConcept) | (OperationDefinition.useContext.value as CodeableConcept) | (PlanDefinition.useContext.value as CodeableConcept) | (Questionnaire.useContext.value as CodeableConcept) | (Requirements.useContext.value as CodeableConcept) | (SearchParameter.useContext.value as CodeableConcept) | (StructureDefinition.useContext.value as CodeableConcept) | (StructureMap.useContext.value as CodeableConcept) | (TerminologyCapabilities.useContext.value as CodeableConcept) | (TestScript.useContext.value as CodeableConcept) | (ValueSet.useContext.value as CodeableConcept)</b><br>
10867   * </p>
10868   */
10869  @SearchParamDefinition(name="context", path="(ActivityDefinition.useContext.value as CodeableConcept) | (ActorDefinition.useContext.value as CodeableConcept) | (CapabilityStatement.useContext.value as CodeableConcept) | (ChargeItemDefinition.useContext.value as CodeableConcept) | (Citation.useContext.value as CodeableConcept) | (CodeSystem.useContext.value as CodeableConcept) | (CompartmentDefinition.useContext.value as CodeableConcept) | (ConceptMap.useContext.value as CodeableConcept) | (ConditionDefinition.useContext.value as CodeableConcept) | (EventDefinition.useContext.value as CodeableConcept) | (Evidence.useContext.value as CodeableConcept) | (EvidenceReport.useContext.value as CodeableConcept) | (EvidenceVariable.useContext.value as CodeableConcept) | (ExampleScenario.useContext.value as CodeableConcept) | (GraphDefinition.useContext.value as CodeableConcept) | (ImplementationGuide.useContext.value as CodeableConcept) | (Library.useContext.value as CodeableConcept) | (Measure.useContext.value as CodeableConcept) | (MessageDefinition.useContext.value as CodeableConcept) | (NamingSystem.useContext.value as CodeableConcept) | (OperationDefinition.useContext.value as CodeableConcept) | (PlanDefinition.useContext.value as CodeableConcept) | (Questionnaire.useContext.value as CodeableConcept) | (Requirements.useContext.value as CodeableConcept) | (SearchParameter.useContext.value as CodeableConcept) | (StructureDefinition.useContext.value as CodeableConcept) | (StructureMap.useContext.value as CodeableConcept) | (TerminologyCapabilities.useContext.value as CodeableConcept) | (TestScript.useContext.value as CodeableConcept) | (ValueSet.useContext.value as CodeableConcept)", description="Multiple Resources: \r\n\r\n* [ActivityDefinition](activitydefinition.html): A use context assigned to the activity definition\r\n* [ActorDefinition](actordefinition.html): A use context assigned to the Actor Definition\r\n* [CapabilityStatement](capabilitystatement.html): A use context assigned to the capability statement\r\n* [ChargeItemDefinition](chargeitemdefinition.html): A use context assigned to the charge item definition\r\n* [Citation](citation.html): A use context assigned to the citation\r\n* [CodeSystem](codesystem.html): A use context assigned to the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): A use context assigned to the compartment definition\r\n* [ConceptMap](conceptmap.html): A use context assigned to the concept map\r\n* [ConditionDefinition](conditiondefinition.html): A use context assigned to the condition definition\r\n* [EventDefinition](eventdefinition.html): A use context assigned to the event definition\r\n* [Evidence](evidence.html): A use context assigned to the evidence\r\n* [EvidenceReport](evidencereport.html): A use context assigned to the evidence report\r\n* [EvidenceVariable](evidencevariable.html): A use context assigned to the evidence variable\r\n* [ExampleScenario](examplescenario.html): A use context assigned to the example scenario\r\n* [GraphDefinition](graphdefinition.html): A use context assigned to the graph definition\r\n* [ImplementationGuide](implementationguide.html): A use context assigned to the implementation guide\r\n* [Library](library.html): A use context assigned to the library\r\n* [Measure](measure.html): A use context assigned to the measure\r\n* [MessageDefinition](messagedefinition.html): A use context assigned to the message definition\r\n* [NamingSystem](namingsystem.html): A use context assigned to the naming system\r\n* [OperationDefinition](operationdefinition.html): A use context assigned to the operation definition\r\n* [PlanDefinition](plandefinition.html): A use context assigned to the plan definition\r\n* [Questionnaire](questionnaire.html): A use context assigned to the questionnaire\r\n* [Requirements](requirements.html): A use context assigned to the requirements\r\n* [SearchParameter](searchparameter.html): A use context assigned to the search parameter\r\n* [StructureDefinition](structuredefinition.html): A use context assigned to the structure definition\r\n* [StructureMap](structuremap.html): A use context assigned to the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): A use context assigned to the terminology capabilities\r\n* [TestScript](testscript.html): A use context assigned to the test script\r\n* [ValueSet](valueset.html): A use context assigned to the value set\r\n", type="token" )
10870  public static final String SP_CONTEXT = "context";
10871 /**
10872   * <b>Fluent Client</b> search parameter constant for <b>context</b>
10873   * <p>
10874   * Description: <b>Multiple Resources: 
10875
10876* [ActivityDefinition](activitydefinition.html): A use context assigned to the activity definition
10877* [ActorDefinition](actordefinition.html): A use context assigned to the Actor Definition
10878* [CapabilityStatement](capabilitystatement.html): A use context assigned to the capability statement
10879* [ChargeItemDefinition](chargeitemdefinition.html): A use context assigned to the charge item definition
10880* [Citation](citation.html): A use context assigned to the citation
10881* [CodeSystem](codesystem.html): A use context assigned to the code system
10882* [CompartmentDefinition](compartmentdefinition.html): A use context assigned to the compartment definition
10883* [ConceptMap](conceptmap.html): A use context assigned to the concept map
10884* [ConditionDefinition](conditiondefinition.html): A use context assigned to the condition definition
10885* [EventDefinition](eventdefinition.html): A use context assigned to the event definition
10886* [Evidence](evidence.html): A use context assigned to the evidence
10887* [EvidenceReport](evidencereport.html): A use context assigned to the evidence report
10888* [EvidenceVariable](evidencevariable.html): A use context assigned to the evidence variable
10889* [ExampleScenario](examplescenario.html): A use context assigned to the example scenario
10890* [GraphDefinition](graphdefinition.html): A use context assigned to the graph definition
10891* [ImplementationGuide](implementationguide.html): A use context assigned to the implementation guide
10892* [Library](library.html): A use context assigned to the library
10893* [Measure](measure.html): A use context assigned to the measure
10894* [MessageDefinition](messagedefinition.html): A use context assigned to the message definition
10895* [NamingSystem](namingsystem.html): A use context assigned to the naming system
10896* [OperationDefinition](operationdefinition.html): A use context assigned to the operation definition
10897* [PlanDefinition](plandefinition.html): A use context assigned to the plan definition
10898* [Questionnaire](questionnaire.html): A use context assigned to the questionnaire
10899* [Requirements](requirements.html): A use context assigned to the requirements
10900* [SearchParameter](searchparameter.html): A use context assigned to the search parameter
10901* [StructureDefinition](structuredefinition.html): A use context assigned to the structure definition
10902* [StructureMap](structuremap.html): A use context assigned to the structure map
10903* [TerminologyCapabilities](terminologycapabilities.html): A use context assigned to the terminology capabilities
10904* [TestScript](testscript.html): A use context assigned to the test script
10905* [ValueSet](valueset.html): A use context assigned to the value set
10906</b><br>
10907   * Type: <b>token</b><br>
10908   * Path: <b>(ActivityDefinition.useContext.value as CodeableConcept) | (ActorDefinition.useContext.value as CodeableConcept) | (CapabilityStatement.useContext.value as CodeableConcept) | (ChargeItemDefinition.useContext.value as CodeableConcept) | (Citation.useContext.value as CodeableConcept) | (CodeSystem.useContext.value as CodeableConcept) | (CompartmentDefinition.useContext.value as CodeableConcept) | (ConceptMap.useContext.value as CodeableConcept) | (ConditionDefinition.useContext.value as CodeableConcept) | (EventDefinition.useContext.value as CodeableConcept) | (Evidence.useContext.value as CodeableConcept) | (EvidenceReport.useContext.value as CodeableConcept) | (EvidenceVariable.useContext.value as CodeableConcept) | (ExampleScenario.useContext.value as CodeableConcept) | (GraphDefinition.useContext.value as CodeableConcept) | (ImplementationGuide.useContext.value as CodeableConcept) | (Library.useContext.value as CodeableConcept) | (Measure.useContext.value as CodeableConcept) | (MessageDefinition.useContext.value as CodeableConcept) | (NamingSystem.useContext.value as CodeableConcept) | (OperationDefinition.useContext.value as CodeableConcept) | (PlanDefinition.useContext.value as CodeableConcept) | (Questionnaire.useContext.value as CodeableConcept) | (Requirements.useContext.value as CodeableConcept) | (SearchParameter.useContext.value as CodeableConcept) | (StructureDefinition.useContext.value as CodeableConcept) | (StructureMap.useContext.value as CodeableConcept) | (TerminologyCapabilities.useContext.value as CodeableConcept) | (TestScript.useContext.value as CodeableConcept) | (ValueSet.useContext.value as CodeableConcept)</b><br>
10909   * </p>
10910   */
10911  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTEXT);
10912
10913 /**
10914   * Search parameter: <b>date</b>
10915   * <p>
10916   * Description: <b>Multiple Resources: 
10917
10918* [ActivityDefinition](activitydefinition.html): The activity definition publication date
10919* [ActorDefinition](actordefinition.html): The Actor Definition publication date
10920* [CapabilityStatement](capabilitystatement.html): The capability statement publication date
10921* [ChargeItemDefinition](chargeitemdefinition.html): The charge item definition publication date
10922* [Citation](citation.html): The citation publication date
10923* [CodeSystem](codesystem.html): The code system publication date
10924* [CompartmentDefinition](compartmentdefinition.html): The compartment definition publication date
10925* [ConceptMap](conceptmap.html): The concept map publication date
10926* [ConditionDefinition](conditiondefinition.html): The condition definition publication date
10927* [EventDefinition](eventdefinition.html): The event definition publication date
10928* [Evidence](evidence.html): The evidence publication date
10929* [EvidenceVariable](evidencevariable.html): The evidence variable publication date
10930* [ExampleScenario](examplescenario.html): The example scenario publication date
10931* [GraphDefinition](graphdefinition.html): The graph definition publication date
10932* [ImplementationGuide](implementationguide.html): The implementation guide publication date
10933* [Library](library.html): The library publication date
10934* [Measure](measure.html): The measure publication date
10935* [MessageDefinition](messagedefinition.html): The message definition publication date
10936* [NamingSystem](namingsystem.html): The naming system publication date
10937* [OperationDefinition](operationdefinition.html): The operation definition publication date
10938* [PlanDefinition](plandefinition.html): The plan definition publication date
10939* [Questionnaire](questionnaire.html): The questionnaire publication date
10940* [Requirements](requirements.html): The requirements publication date
10941* [SearchParameter](searchparameter.html): The search parameter publication date
10942* [StructureDefinition](structuredefinition.html): The structure definition publication date
10943* [StructureMap](structuremap.html): The structure map publication date
10944* [SubscriptionTopic](subscriptiontopic.html): Date status first applied
10945* [TerminologyCapabilities](terminologycapabilities.html): The terminology capabilities publication date
10946* [TestScript](testscript.html): The test script publication date
10947* [ValueSet](valueset.html): The value set publication date
10948</b><br>
10949   * Type: <b>date</b><br>
10950   * Path: <b>ActivityDefinition.date | ActorDefinition.date | CapabilityStatement.date | ChargeItemDefinition.date | Citation.date | CodeSystem.date | CompartmentDefinition.date | ConceptMap.date | ConditionDefinition.date | EventDefinition.date | Evidence.date | EvidenceVariable.date | ExampleScenario.date | GraphDefinition.date | ImplementationGuide.date | Library.date | Measure.date | MessageDefinition.date | NamingSystem.date | OperationDefinition.date | PlanDefinition.date | Questionnaire.date | Requirements.date | SearchParameter.date | StructureDefinition.date | StructureMap.date | SubscriptionTopic.date | TerminologyCapabilities.date | TestScript.date | ValueSet.date</b><br>
10951   * </p>
10952   */
10953  @SearchParamDefinition(name="date", path="ActivityDefinition.date | ActorDefinition.date | CapabilityStatement.date | ChargeItemDefinition.date | Citation.date | CodeSystem.date | CompartmentDefinition.date | ConceptMap.date | ConditionDefinition.date | EventDefinition.date | Evidence.date | EvidenceVariable.date | ExampleScenario.date | GraphDefinition.date | ImplementationGuide.date | Library.date | Measure.date | MessageDefinition.date | NamingSystem.date | OperationDefinition.date | PlanDefinition.date | Questionnaire.date | Requirements.date | SearchParameter.date | StructureDefinition.date | StructureMap.date | SubscriptionTopic.date | TerminologyCapabilities.date | TestScript.date | ValueSet.date", description="Multiple Resources: \r\n\r\n* [ActivityDefinition](activitydefinition.html): The activity definition publication date\r\n* [ActorDefinition](actordefinition.html): The Actor Definition publication date\r\n* [CapabilityStatement](capabilitystatement.html): The capability statement publication date\r\n* [ChargeItemDefinition](chargeitemdefinition.html): The charge item definition publication date\r\n* [Citation](citation.html): The citation publication date\r\n* [CodeSystem](codesystem.html): The code system publication date\r\n* [CompartmentDefinition](compartmentdefinition.html): The compartment definition publication date\r\n* [ConceptMap](conceptmap.html): The concept map publication date\r\n* [ConditionDefinition](conditiondefinition.html): The condition definition publication date\r\n* [EventDefinition](eventdefinition.html): The event definition publication date\r\n* [Evidence](evidence.html): The evidence publication date\r\n* [EvidenceVariable](evidencevariable.html): The evidence variable publication date\r\n* [ExampleScenario](examplescenario.html): The example scenario publication date\r\n* [GraphDefinition](graphdefinition.html): The graph definition publication date\r\n* [ImplementationGuide](implementationguide.html): The implementation guide publication date\r\n* [Library](library.html): The library publication date\r\n* [Measure](measure.html): The measure publication date\r\n* [MessageDefinition](messagedefinition.html): The message definition publication date\r\n* [NamingSystem](namingsystem.html): The naming system publication date\r\n* [OperationDefinition](operationdefinition.html): The operation definition publication date\r\n* [PlanDefinition](plandefinition.html): The plan definition publication date\r\n* [Questionnaire](questionnaire.html): The questionnaire publication date\r\n* [Requirements](requirements.html): The requirements publication date\r\n* [SearchParameter](searchparameter.html): The search parameter publication date\r\n* [StructureDefinition](structuredefinition.html): The structure definition publication date\r\n* [StructureMap](structuremap.html): The structure map publication date\r\n* [SubscriptionTopic](subscriptiontopic.html): Date status first applied\r\n* [TerminologyCapabilities](terminologycapabilities.html): The terminology capabilities publication date\r\n* [TestScript](testscript.html): The test script publication date\r\n* [ValueSet](valueset.html): The value set publication date\r\n", type="date" )
10954  public static final String SP_DATE = "date";
10955 /**
10956   * <b>Fluent Client</b> search parameter constant for <b>date</b>
10957   * <p>
10958   * Description: <b>Multiple Resources: 
10959
10960* [ActivityDefinition](activitydefinition.html): The activity definition publication date
10961* [ActorDefinition](actordefinition.html): The Actor Definition publication date
10962* [CapabilityStatement](capabilitystatement.html): The capability statement publication date
10963* [ChargeItemDefinition](chargeitemdefinition.html): The charge item definition publication date
10964* [Citation](citation.html): The citation publication date
10965* [CodeSystem](codesystem.html): The code system publication date
10966* [CompartmentDefinition](compartmentdefinition.html): The compartment definition publication date
10967* [ConceptMap](conceptmap.html): The concept map publication date
10968* [ConditionDefinition](conditiondefinition.html): The condition definition publication date
10969* [EventDefinition](eventdefinition.html): The event definition publication date
10970* [Evidence](evidence.html): The evidence publication date
10971* [EvidenceVariable](evidencevariable.html): The evidence variable publication date
10972* [ExampleScenario](examplescenario.html): The example scenario publication date
10973* [GraphDefinition](graphdefinition.html): The graph definition publication date
10974* [ImplementationGuide](implementationguide.html): The implementation guide publication date
10975* [Library](library.html): The library publication date
10976* [Measure](measure.html): The measure publication date
10977* [MessageDefinition](messagedefinition.html): The message definition publication date
10978* [NamingSystem](namingsystem.html): The naming system publication date
10979* [OperationDefinition](operationdefinition.html): The operation definition publication date
10980* [PlanDefinition](plandefinition.html): The plan definition publication date
10981* [Questionnaire](questionnaire.html): The questionnaire publication date
10982* [Requirements](requirements.html): The requirements publication date
10983* [SearchParameter](searchparameter.html): The search parameter publication date
10984* [StructureDefinition](structuredefinition.html): The structure definition publication date
10985* [StructureMap](structuremap.html): The structure map publication date
10986* [SubscriptionTopic](subscriptiontopic.html): Date status first applied
10987* [TerminologyCapabilities](terminologycapabilities.html): The terminology capabilities publication date
10988* [TestScript](testscript.html): The test script publication date
10989* [ValueSet](valueset.html): The value set publication date
10990</b><br>
10991   * Type: <b>date</b><br>
10992   * Path: <b>ActivityDefinition.date | ActorDefinition.date | CapabilityStatement.date | ChargeItemDefinition.date | Citation.date | CodeSystem.date | CompartmentDefinition.date | ConceptMap.date | ConditionDefinition.date | EventDefinition.date | Evidence.date | EvidenceVariable.date | ExampleScenario.date | GraphDefinition.date | ImplementationGuide.date | Library.date | Measure.date | MessageDefinition.date | NamingSystem.date | OperationDefinition.date | PlanDefinition.date | Questionnaire.date | Requirements.date | SearchParameter.date | StructureDefinition.date | StructureMap.date | SubscriptionTopic.date | TerminologyCapabilities.date | TestScript.date | ValueSet.date</b><br>
10993   * </p>
10994   */
10995  public static final ca.uhn.fhir.rest.gclient.DateClientParam DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_DATE);
10996
10997 /**
10998   * Search parameter: <b>description</b>
10999   * <p>
11000   * Description: <b>Multiple Resources: 
11001
11002* [ActivityDefinition](activitydefinition.html): The description of the activity definition
11003* [ActorDefinition](actordefinition.html): The description of the Actor Definition
11004* [CapabilityStatement](capabilitystatement.html): The description of the capability statement
11005* [ChargeItemDefinition](chargeitemdefinition.html): The description of the charge item definition
11006* [Citation](citation.html): The description of the citation
11007* [CodeSystem](codesystem.html): The description of the code system
11008* [CompartmentDefinition](compartmentdefinition.html): The description of the compartment definition
11009* [ConceptMap](conceptmap.html): The description of the concept map
11010* [ConditionDefinition](conditiondefinition.html): The description of the condition definition
11011* [EventDefinition](eventdefinition.html): The description of the event definition
11012* [Evidence](evidence.html): The description of the evidence
11013* [EvidenceVariable](evidencevariable.html): The description of the evidence variable
11014* [GraphDefinition](graphdefinition.html): The description of the graph definition
11015* [ImplementationGuide](implementationguide.html): The description of the implementation guide
11016* [Library](library.html): The description of the library
11017* [Measure](measure.html): The description of the measure
11018* [MessageDefinition](messagedefinition.html): The description of the message definition
11019* [NamingSystem](namingsystem.html): The description of the naming system
11020* [OperationDefinition](operationdefinition.html): The description of the operation definition
11021* [PlanDefinition](plandefinition.html): The description of the plan definition
11022* [Questionnaire](questionnaire.html): The description of the questionnaire
11023* [Requirements](requirements.html): The description of the requirements
11024* [SearchParameter](searchparameter.html): The description of the search parameter
11025* [StructureDefinition](structuredefinition.html): The description of the structure definition
11026* [StructureMap](structuremap.html): The description of the structure map
11027* [TerminologyCapabilities](terminologycapabilities.html): The description of the terminology capabilities
11028* [TestScript](testscript.html): The description of the test script
11029* [ValueSet](valueset.html): The description of the value set
11030</b><br>
11031   * Type: <b>string</b><br>
11032   * Path: <b>ActivityDefinition.description | ActorDefinition.description | CapabilityStatement.description | ChargeItemDefinition.description | Citation.description | CodeSystem.description | CompartmentDefinition.description | ConceptMap.description | ConditionDefinition.description | EventDefinition.description | Evidence.description | EvidenceVariable.description | GraphDefinition.description | ImplementationGuide.description | Library.description | Measure.description | MessageDefinition.description | NamingSystem.description | OperationDefinition.description | PlanDefinition.description | Questionnaire.description | Requirements.description | SearchParameter.description | StructureDefinition.description | StructureMap.description | TerminologyCapabilities.description | TestScript.description | ValueSet.description</b><br>
11033   * </p>
11034   */
11035  @SearchParamDefinition(name="description", path="ActivityDefinition.description | ActorDefinition.description | CapabilityStatement.description | ChargeItemDefinition.description | Citation.description | CodeSystem.description | CompartmentDefinition.description | ConceptMap.description | ConditionDefinition.description | EventDefinition.description | Evidence.description | EvidenceVariable.description | GraphDefinition.description | ImplementationGuide.description | Library.description | Measure.description | MessageDefinition.description | NamingSystem.description | OperationDefinition.description | PlanDefinition.description | Questionnaire.description | Requirements.description | SearchParameter.description | StructureDefinition.description | StructureMap.description | TerminologyCapabilities.description | TestScript.description | ValueSet.description", description="Multiple Resources: \r\n\r\n* [ActivityDefinition](activitydefinition.html): The description of the activity definition\r\n* [ActorDefinition](actordefinition.html): The description of the Actor Definition\r\n* [CapabilityStatement](capabilitystatement.html): The description of the capability statement\r\n* [ChargeItemDefinition](chargeitemdefinition.html): The description of the charge item definition\r\n* [Citation](citation.html): The description of the citation\r\n* [CodeSystem](codesystem.html): The description of the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): The description of the compartment definition\r\n* [ConceptMap](conceptmap.html): The description of the concept map\r\n* [ConditionDefinition](conditiondefinition.html): The description of the condition definition\r\n* [EventDefinition](eventdefinition.html): The description of the event definition\r\n* [Evidence](evidence.html): The description of the evidence\r\n* [EvidenceVariable](evidencevariable.html): The description of the evidence variable\r\n* [GraphDefinition](graphdefinition.html): The description of the graph definition\r\n* [ImplementationGuide](implementationguide.html): The description of the implementation guide\r\n* [Library](library.html): The description of the library\r\n* [Measure](measure.html): The description of the measure\r\n* [MessageDefinition](messagedefinition.html): The description of the message definition\r\n* [NamingSystem](namingsystem.html): The description of the naming system\r\n* [OperationDefinition](operationdefinition.html): The description of the operation definition\r\n* [PlanDefinition](plandefinition.html): The description of the plan definition\r\n* [Questionnaire](questionnaire.html): The description of the questionnaire\r\n* [Requirements](requirements.html): The description of the requirements\r\n* [SearchParameter](searchparameter.html): The description of the search parameter\r\n* [StructureDefinition](structuredefinition.html): The description of the structure definition\r\n* [StructureMap](structuremap.html): The description of the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): The description of the terminology capabilities\r\n* [TestScript](testscript.html): The description of the test script\r\n* [ValueSet](valueset.html): The description of the value set\r\n", type="string" )
11036  public static final String SP_DESCRIPTION = "description";
11037 /**
11038   * <b>Fluent Client</b> search parameter constant for <b>description</b>
11039   * <p>
11040   * Description: <b>Multiple Resources: 
11041
11042* [ActivityDefinition](activitydefinition.html): The description of the activity definition
11043* [ActorDefinition](actordefinition.html): The description of the Actor Definition
11044* [CapabilityStatement](capabilitystatement.html): The description of the capability statement
11045* [ChargeItemDefinition](chargeitemdefinition.html): The description of the charge item definition
11046* [Citation](citation.html): The description of the citation
11047* [CodeSystem](codesystem.html): The description of the code system
11048* [CompartmentDefinition](compartmentdefinition.html): The description of the compartment definition
11049* [ConceptMap](conceptmap.html): The description of the concept map
11050* [ConditionDefinition](conditiondefinition.html): The description of the condition definition
11051* [EventDefinition](eventdefinition.html): The description of the event definition
11052* [Evidence](evidence.html): The description of the evidence
11053* [EvidenceVariable](evidencevariable.html): The description of the evidence variable
11054* [GraphDefinition](graphdefinition.html): The description of the graph definition
11055* [ImplementationGuide](implementationguide.html): The description of the implementation guide
11056* [Library](library.html): The description of the library
11057* [Measure](measure.html): The description of the measure
11058* [MessageDefinition](messagedefinition.html): The description of the message definition
11059* [NamingSystem](namingsystem.html): The description of the naming system
11060* [OperationDefinition](operationdefinition.html): The description of the operation definition
11061* [PlanDefinition](plandefinition.html): The description of the plan definition
11062* [Questionnaire](questionnaire.html): The description of the questionnaire
11063* [Requirements](requirements.html): The description of the requirements
11064* [SearchParameter](searchparameter.html): The description of the search parameter
11065* [StructureDefinition](structuredefinition.html): The description of the structure definition
11066* [StructureMap](structuremap.html): The description of the structure map
11067* [TerminologyCapabilities](terminologycapabilities.html): The description of the terminology capabilities
11068* [TestScript](testscript.html): The description of the test script
11069* [ValueSet](valueset.html): The description of the value set
11070</b><br>
11071   * Type: <b>string</b><br>
11072   * Path: <b>ActivityDefinition.description | ActorDefinition.description | CapabilityStatement.description | ChargeItemDefinition.description | Citation.description | CodeSystem.description | CompartmentDefinition.description | ConceptMap.description | ConditionDefinition.description | EventDefinition.description | Evidence.description | EvidenceVariable.description | GraphDefinition.description | ImplementationGuide.description | Library.description | Measure.description | MessageDefinition.description | NamingSystem.description | OperationDefinition.description | PlanDefinition.description | Questionnaire.description | Requirements.description | SearchParameter.description | StructureDefinition.description | StructureMap.description | TerminologyCapabilities.description | TestScript.description | ValueSet.description</b><br>
11073   * </p>
11074   */
11075  public static final ca.uhn.fhir.rest.gclient.StringClientParam DESCRIPTION = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_DESCRIPTION);
11076
11077 /**
11078   * Search parameter: <b>identifier</b>
11079   * <p>
11080   * Description: <b>Multiple Resources: 
11081
11082* [ActivityDefinition](activitydefinition.html): External identifier for the activity definition
11083* [ActorDefinition](actordefinition.html): External identifier for the Actor Definition
11084* [ChargeItemDefinition](chargeitemdefinition.html): External identifier for the charge item definition
11085* [Citation](citation.html): External identifier for the citation
11086* [CodeSystem](codesystem.html): External identifier for the code system
11087* [ConceptMap](conceptmap.html): External identifier for the concept map
11088* [ConditionDefinition](conditiondefinition.html): External identifier for the condition definition
11089* [EventDefinition](eventdefinition.html): External identifier for the event definition
11090* [Evidence](evidence.html): External identifier for the evidence
11091* [EvidenceReport](evidencereport.html): External identifier for the evidence report
11092* [EvidenceVariable](evidencevariable.html): External identifier for the evidence variable
11093* [ExampleScenario](examplescenario.html): External identifier for the example scenario
11094* [Library](library.html): External identifier for the library
11095* [Measure](measure.html): External identifier for the measure
11096* [MedicationKnowledge](medicationknowledge.html): Business identifier for this medication
11097* [MessageDefinition](messagedefinition.html): External identifier for the message definition
11098* [NamingSystem](namingsystem.html): External identifier for the naming system
11099* [ObservationDefinition](observationdefinition.html): The unique identifier associated with the specimen definition
11100* [PlanDefinition](plandefinition.html): External identifier for the plan definition
11101* [Questionnaire](questionnaire.html): External identifier for the questionnaire
11102* [Requirements](requirements.html): External identifier for the requirements
11103* [SpecimenDefinition](specimendefinition.html): The unique identifier associated with the SpecimenDefinition
11104* [StructureDefinition](structuredefinition.html): External identifier for the structure definition
11105* [StructureMap](structuremap.html): External identifier for the structure map
11106* [SubscriptionTopic](subscriptiontopic.html): Business Identifier for SubscriptionTopic
11107* [TerminologyCapabilities](terminologycapabilities.html): External identifier for the terminology capabilities
11108* [TestScript](testscript.html): External identifier for the test script
11109* [ValueSet](valueset.html): External identifier for the value set
11110</b><br>
11111   * Type: <b>token</b><br>
11112   * Path: <b>ActivityDefinition.identifier | ActorDefinition.identifier | ChargeItemDefinition.identifier | Citation.identifier | CodeSystem.identifier | ConceptMap.identifier | ConditionDefinition.identifier | EventDefinition.identifier | Evidence.identifier | EvidenceReport.identifier | EvidenceVariable.identifier | ExampleScenario.identifier | Library.identifier | Measure.identifier | MedicationKnowledge.identifier | MessageDefinition.identifier | NamingSystem.identifier | ObservationDefinition.identifier | PlanDefinition.identifier | Questionnaire.identifier | Requirements.identifier | SpecimenDefinition.identifier | StructureDefinition.identifier | StructureMap.identifier | SubscriptionTopic.identifier | TerminologyCapabilities.identifier | TestScript.identifier | ValueSet.identifier</b><br>
11113   * </p>
11114   */
11115  @SearchParamDefinition(name="identifier", path="ActivityDefinition.identifier | ActorDefinition.identifier | ChargeItemDefinition.identifier | Citation.identifier | CodeSystem.identifier | ConceptMap.identifier | ConditionDefinition.identifier | EventDefinition.identifier | Evidence.identifier | EvidenceReport.identifier | EvidenceVariable.identifier | ExampleScenario.identifier | Library.identifier | Measure.identifier | MedicationKnowledge.identifier | MessageDefinition.identifier | NamingSystem.identifier | ObservationDefinition.identifier | PlanDefinition.identifier | Questionnaire.identifier | Requirements.identifier | SpecimenDefinition.identifier | StructureDefinition.identifier | StructureMap.identifier | SubscriptionTopic.identifier | TerminologyCapabilities.identifier | TestScript.identifier | ValueSet.identifier", description="Multiple Resources: \r\n\r\n* [ActivityDefinition](activitydefinition.html): External identifier for the activity definition\r\n* [ActorDefinition](actordefinition.html): External identifier for the Actor Definition\r\n* [ChargeItemDefinition](chargeitemdefinition.html): External identifier for the charge item definition\r\n* [Citation](citation.html): External identifier for the citation\r\n* [CodeSystem](codesystem.html): External identifier for the code system\r\n* [ConceptMap](conceptmap.html): External identifier for the concept map\r\n* [ConditionDefinition](conditiondefinition.html): External identifier for the condition definition\r\n* [EventDefinition](eventdefinition.html): External identifier for the event definition\r\n* [Evidence](evidence.html): External identifier for the evidence\r\n* [EvidenceReport](evidencereport.html): External identifier for the evidence report\r\n* [EvidenceVariable](evidencevariable.html): External identifier for the evidence variable\r\n* [ExampleScenario](examplescenario.html): External identifier for the example scenario\r\n* [Library](library.html): External identifier for the library\r\n* [Measure](measure.html): External identifier for the measure\r\n* [MedicationKnowledge](medicationknowledge.html): Business identifier for this medication\r\n* [MessageDefinition](messagedefinition.html): External identifier for the message definition\r\n* [NamingSystem](namingsystem.html): External identifier for the naming system\r\n* [ObservationDefinition](observationdefinition.html): The unique identifier associated with the specimen definition\r\n* [PlanDefinition](plandefinition.html): External identifier for the plan definition\r\n* [Questionnaire](questionnaire.html): External identifier for the questionnaire\r\n* [Requirements](requirements.html): External identifier for the requirements\r\n* [SpecimenDefinition](specimendefinition.html): The unique identifier associated with the SpecimenDefinition\r\n* [StructureDefinition](structuredefinition.html): External identifier for the structure definition\r\n* [StructureMap](structuremap.html): External identifier for the structure map\r\n* [SubscriptionTopic](subscriptiontopic.html): Business Identifier for SubscriptionTopic\r\n* [TerminologyCapabilities](terminologycapabilities.html): External identifier for the terminology capabilities\r\n* [TestScript](testscript.html): External identifier for the test script\r\n* [ValueSet](valueset.html): External identifier for the value set\r\n", type="token" )
11116  public static final String SP_IDENTIFIER = "identifier";
11117 /**
11118   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
11119   * <p>
11120   * Description: <b>Multiple Resources: 
11121
11122* [ActivityDefinition](activitydefinition.html): External identifier for the activity definition
11123* [ActorDefinition](actordefinition.html): External identifier for the Actor Definition
11124* [ChargeItemDefinition](chargeitemdefinition.html): External identifier for the charge item definition
11125* [Citation](citation.html): External identifier for the citation
11126* [CodeSystem](codesystem.html): External identifier for the code system
11127* [ConceptMap](conceptmap.html): External identifier for the concept map
11128* [ConditionDefinition](conditiondefinition.html): External identifier for the condition definition
11129* [EventDefinition](eventdefinition.html): External identifier for the event definition
11130* [Evidence](evidence.html): External identifier for the evidence
11131* [EvidenceReport](evidencereport.html): External identifier for the evidence report
11132* [EvidenceVariable](evidencevariable.html): External identifier for the evidence variable
11133* [ExampleScenario](examplescenario.html): External identifier for the example scenario
11134* [Library](library.html): External identifier for the library
11135* [Measure](measure.html): External identifier for the measure
11136* [MedicationKnowledge](medicationknowledge.html): Business identifier for this medication
11137* [MessageDefinition](messagedefinition.html): External identifier for the message definition
11138* [NamingSystem](namingsystem.html): External identifier for the naming system
11139* [ObservationDefinition](observationdefinition.html): The unique identifier associated with the specimen definition
11140* [PlanDefinition](plandefinition.html): External identifier for the plan definition
11141* [Questionnaire](questionnaire.html): External identifier for the questionnaire
11142* [Requirements](requirements.html): External identifier for the requirements
11143* [SpecimenDefinition](specimendefinition.html): The unique identifier associated with the SpecimenDefinition
11144* [StructureDefinition](structuredefinition.html): External identifier for the structure definition
11145* [StructureMap](structuremap.html): External identifier for the structure map
11146* [SubscriptionTopic](subscriptiontopic.html): Business Identifier for SubscriptionTopic
11147* [TerminologyCapabilities](terminologycapabilities.html): External identifier for the terminology capabilities
11148* [TestScript](testscript.html): External identifier for the test script
11149* [ValueSet](valueset.html): External identifier for the value set
11150</b><br>
11151   * Type: <b>token</b><br>
11152   * Path: <b>ActivityDefinition.identifier | ActorDefinition.identifier | ChargeItemDefinition.identifier | Citation.identifier | CodeSystem.identifier | ConceptMap.identifier | ConditionDefinition.identifier | EventDefinition.identifier | Evidence.identifier | EvidenceReport.identifier | EvidenceVariable.identifier | ExampleScenario.identifier | Library.identifier | Measure.identifier | MedicationKnowledge.identifier | MessageDefinition.identifier | NamingSystem.identifier | ObservationDefinition.identifier | PlanDefinition.identifier | Questionnaire.identifier | Requirements.identifier | SpecimenDefinition.identifier | StructureDefinition.identifier | StructureMap.identifier | SubscriptionTopic.identifier | TerminologyCapabilities.identifier | TestScript.identifier | ValueSet.identifier</b><br>
11153   * </p>
11154   */
11155  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
11156
11157 /**
11158   * Search parameter: <b>jurisdiction</b>
11159   * <p>
11160   * Description: <b>Multiple Resources: 
11161
11162* [ActivityDefinition](activitydefinition.html): Intended jurisdiction for the activity definition
11163* [ActorDefinition](actordefinition.html): Intended jurisdiction for the Actor Definition
11164* [CapabilityStatement](capabilitystatement.html): Intended jurisdiction for the capability statement
11165* [ChargeItemDefinition](chargeitemdefinition.html): Intended jurisdiction for the charge item definition
11166* [Citation](citation.html): Intended jurisdiction for the citation
11167* [CodeSystem](codesystem.html): Intended jurisdiction for the code system
11168* [ConceptMap](conceptmap.html): Intended jurisdiction for the concept map
11169* [ConditionDefinition](conditiondefinition.html): Intended jurisdiction for the condition definition
11170* [EventDefinition](eventdefinition.html): Intended jurisdiction for the event definition
11171* [ExampleScenario](examplescenario.html): Intended jurisdiction for the example scenario
11172* [GraphDefinition](graphdefinition.html): Intended jurisdiction for the graph definition
11173* [ImplementationGuide](implementationguide.html): Intended jurisdiction for the implementation guide
11174* [Library](library.html): Intended jurisdiction for the library
11175* [Measure](measure.html): Intended jurisdiction for the measure
11176* [MessageDefinition](messagedefinition.html): Intended jurisdiction for the message definition
11177* [NamingSystem](namingsystem.html): Intended jurisdiction for the naming system
11178* [OperationDefinition](operationdefinition.html): Intended jurisdiction for the operation definition
11179* [PlanDefinition](plandefinition.html): Intended jurisdiction for the plan definition
11180* [Questionnaire](questionnaire.html): Intended jurisdiction for the questionnaire
11181* [Requirements](requirements.html): Intended jurisdiction for the requirements
11182* [SearchParameter](searchparameter.html): Intended jurisdiction for the search parameter
11183* [StructureDefinition](structuredefinition.html): Intended jurisdiction for the structure definition
11184* [StructureMap](structuremap.html): Intended jurisdiction for the structure map
11185* [TerminologyCapabilities](terminologycapabilities.html): Intended jurisdiction for the terminology capabilities
11186* [TestScript](testscript.html): Intended jurisdiction for the test script
11187* [ValueSet](valueset.html): Intended jurisdiction for the value set
11188</b><br>
11189   * Type: <b>token</b><br>
11190   * Path: <b>ActivityDefinition.jurisdiction | ActorDefinition.jurisdiction | CapabilityStatement.jurisdiction | ChargeItemDefinition.jurisdiction | Citation.jurisdiction | CodeSystem.jurisdiction | ConceptMap.jurisdiction | ConditionDefinition.jurisdiction | EventDefinition.jurisdiction | ExampleScenario.jurisdiction | GraphDefinition.jurisdiction | ImplementationGuide.jurisdiction | Library.jurisdiction | Measure.jurisdiction | MessageDefinition.jurisdiction | NamingSystem.jurisdiction | OperationDefinition.jurisdiction | PlanDefinition.jurisdiction | Questionnaire.jurisdiction | Requirements.jurisdiction | SearchParameter.jurisdiction | StructureDefinition.jurisdiction | StructureMap.jurisdiction | TerminologyCapabilities.jurisdiction | TestScript.jurisdiction | ValueSet.jurisdiction</b><br>
11191   * </p>
11192   */
11193  @SearchParamDefinition(name="jurisdiction", path="ActivityDefinition.jurisdiction | ActorDefinition.jurisdiction | CapabilityStatement.jurisdiction | ChargeItemDefinition.jurisdiction | Citation.jurisdiction | CodeSystem.jurisdiction | ConceptMap.jurisdiction | ConditionDefinition.jurisdiction | EventDefinition.jurisdiction | ExampleScenario.jurisdiction | GraphDefinition.jurisdiction | ImplementationGuide.jurisdiction | Library.jurisdiction | Measure.jurisdiction | MessageDefinition.jurisdiction | NamingSystem.jurisdiction | OperationDefinition.jurisdiction | PlanDefinition.jurisdiction | Questionnaire.jurisdiction | Requirements.jurisdiction | SearchParameter.jurisdiction | StructureDefinition.jurisdiction | StructureMap.jurisdiction | TerminologyCapabilities.jurisdiction | TestScript.jurisdiction | ValueSet.jurisdiction", description="Multiple Resources: \r\n\r\n* [ActivityDefinition](activitydefinition.html): Intended jurisdiction for the activity definition\r\n* [ActorDefinition](actordefinition.html): Intended jurisdiction for the Actor Definition\r\n* [CapabilityStatement](capabilitystatement.html): Intended jurisdiction for the capability statement\r\n* [ChargeItemDefinition](chargeitemdefinition.html): Intended jurisdiction for the charge item definition\r\n* [Citation](citation.html): Intended jurisdiction for the citation\r\n* [CodeSystem](codesystem.html): Intended jurisdiction for the code system\r\n* [ConceptMap](conceptmap.html): Intended jurisdiction for the concept map\r\n* [ConditionDefinition](conditiondefinition.html): Intended jurisdiction for the condition definition\r\n* [EventDefinition](eventdefinition.html): Intended jurisdiction for the event definition\r\n* [ExampleScenario](examplescenario.html): Intended jurisdiction for the example scenario\r\n* [GraphDefinition](graphdefinition.html): Intended jurisdiction for the graph definition\r\n* [ImplementationGuide](implementationguide.html): Intended jurisdiction for the implementation guide\r\n* [Library](library.html): Intended jurisdiction for the library\r\n* [Measure](measure.html): Intended jurisdiction for the measure\r\n* [MessageDefinition](messagedefinition.html): Intended jurisdiction for the message definition\r\n* [NamingSystem](namingsystem.html): Intended jurisdiction for the naming system\r\n* [OperationDefinition](operationdefinition.html): Intended jurisdiction for the operation definition\r\n* [PlanDefinition](plandefinition.html): Intended jurisdiction for the plan definition\r\n* [Questionnaire](questionnaire.html): Intended jurisdiction for the questionnaire\r\n* [Requirements](requirements.html): Intended jurisdiction for the requirements\r\n* [SearchParameter](searchparameter.html): Intended jurisdiction for the search parameter\r\n* [StructureDefinition](structuredefinition.html): Intended jurisdiction for the structure definition\r\n* [StructureMap](structuremap.html): Intended jurisdiction for the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): Intended jurisdiction for the terminology capabilities\r\n* [TestScript](testscript.html): Intended jurisdiction for the test script\r\n* [ValueSet](valueset.html): Intended jurisdiction for the value set\r\n", type="token" )
11194  public static final String SP_JURISDICTION = "jurisdiction";
11195 /**
11196   * <b>Fluent Client</b> search parameter constant for <b>jurisdiction</b>
11197   * <p>
11198   * Description: <b>Multiple Resources: 
11199
11200* [ActivityDefinition](activitydefinition.html): Intended jurisdiction for the activity definition
11201* [ActorDefinition](actordefinition.html): Intended jurisdiction for the Actor Definition
11202* [CapabilityStatement](capabilitystatement.html): Intended jurisdiction for the capability statement
11203* [ChargeItemDefinition](chargeitemdefinition.html): Intended jurisdiction for the charge item definition
11204* [Citation](citation.html): Intended jurisdiction for the citation
11205* [CodeSystem](codesystem.html): Intended jurisdiction for the code system
11206* [ConceptMap](conceptmap.html): Intended jurisdiction for the concept map
11207* [ConditionDefinition](conditiondefinition.html): Intended jurisdiction for the condition definition
11208* [EventDefinition](eventdefinition.html): Intended jurisdiction for the event definition
11209* [ExampleScenario](examplescenario.html): Intended jurisdiction for the example scenario
11210* [GraphDefinition](graphdefinition.html): Intended jurisdiction for the graph definition
11211* [ImplementationGuide](implementationguide.html): Intended jurisdiction for the implementation guide
11212* [Library](library.html): Intended jurisdiction for the library
11213* [Measure](measure.html): Intended jurisdiction for the measure
11214* [MessageDefinition](messagedefinition.html): Intended jurisdiction for the message definition
11215* [NamingSystem](namingsystem.html): Intended jurisdiction for the naming system
11216* [OperationDefinition](operationdefinition.html): Intended jurisdiction for the operation definition
11217* [PlanDefinition](plandefinition.html): Intended jurisdiction for the plan definition
11218* [Questionnaire](questionnaire.html): Intended jurisdiction for the questionnaire
11219* [Requirements](requirements.html): Intended jurisdiction for the requirements
11220* [SearchParameter](searchparameter.html): Intended jurisdiction for the search parameter
11221* [StructureDefinition](structuredefinition.html): Intended jurisdiction for the structure definition
11222* [StructureMap](structuremap.html): Intended jurisdiction for the structure map
11223* [TerminologyCapabilities](terminologycapabilities.html): Intended jurisdiction for the terminology capabilities
11224* [TestScript](testscript.html): Intended jurisdiction for the test script
11225* [ValueSet](valueset.html): Intended jurisdiction for the value set
11226</b><br>
11227   * Type: <b>token</b><br>
11228   * Path: <b>ActivityDefinition.jurisdiction | ActorDefinition.jurisdiction | CapabilityStatement.jurisdiction | ChargeItemDefinition.jurisdiction | Citation.jurisdiction | CodeSystem.jurisdiction | ConceptMap.jurisdiction | ConditionDefinition.jurisdiction | EventDefinition.jurisdiction | ExampleScenario.jurisdiction | GraphDefinition.jurisdiction | ImplementationGuide.jurisdiction | Library.jurisdiction | Measure.jurisdiction | MessageDefinition.jurisdiction | NamingSystem.jurisdiction | OperationDefinition.jurisdiction | PlanDefinition.jurisdiction | Questionnaire.jurisdiction | Requirements.jurisdiction | SearchParameter.jurisdiction | StructureDefinition.jurisdiction | StructureMap.jurisdiction | TerminologyCapabilities.jurisdiction | TestScript.jurisdiction | ValueSet.jurisdiction</b><br>
11229   * </p>
11230   */
11231  public static final ca.uhn.fhir.rest.gclient.TokenClientParam JURISDICTION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_JURISDICTION);
11232
11233 /**
11234   * Search parameter: <b>name</b>
11235   * <p>
11236   * Description: <b>Multiple Resources: 
11237
11238* [ActivityDefinition](activitydefinition.html): Computationally friendly name of the activity definition
11239* [CapabilityStatement](capabilitystatement.html): Computationally friendly name of the capability statement
11240* [Citation](citation.html): Computationally friendly name of the citation
11241* [CodeSystem](codesystem.html): Computationally friendly name of the code system
11242* [CompartmentDefinition](compartmentdefinition.html): Computationally friendly name of the compartment definition
11243* [ConceptMap](conceptmap.html): Computationally friendly name of the concept map
11244* [ConditionDefinition](conditiondefinition.html): Computationally friendly name of the condition definition
11245* [EventDefinition](eventdefinition.html): Computationally friendly name of the event definition
11246* [EvidenceVariable](evidencevariable.html): Computationally friendly name of the evidence variable
11247* [ExampleScenario](examplescenario.html): Computationally friendly name of the example scenario
11248* [GraphDefinition](graphdefinition.html): Computationally friendly name of the graph definition
11249* [ImplementationGuide](implementationguide.html): Computationally friendly name of the implementation guide
11250* [Library](library.html): Computationally friendly name of the library
11251* [Measure](measure.html): Computationally friendly name of the measure
11252* [MessageDefinition](messagedefinition.html): Computationally friendly name of the message definition
11253* [NamingSystem](namingsystem.html): Computationally friendly name of the naming system
11254* [OperationDefinition](operationdefinition.html): Computationally friendly name of the operation definition
11255* [PlanDefinition](plandefinition.html): Computationally friendly name of the plan definition
11256* [Questionnaire](questionnaire.html): Computationally friendly name of the questionnaire
11257* [Requirements](requirements.html): Computationally friendly name of the requirements
11258* [SearchParameter](searchparameter.html): Computationally friendly name of the search parameter
11259* [StructureDefinition](structuredefinition.html): Computationally friendly name of the structure definition
11260* [StructureMap](structuremap.html): Computationally friendly name of the structure map
11261* [TerminologyCapabilities](terminologycapabilities.html): Computationally friendly name of the terminology capabilities
11262* [TestScript](testscript.html): Computationally friendly name of the test script
11263* [ValueSet](valueset.html): Computationally friendly name of the value set
11264</b><br>
11265   * Type: <b>string</b><br>
11266   * Path: <b>ActivityDefinition.name | CapabilityStatement.name | Citation.name | CodeSystem.name | CompartmentDefinition.name | ConceptMap.name | ConditionDefinition.name | EventDefinition.name | EvidenceVariable.name | ExampleScenario.name | GraphDefinition.name | ImplementationGuide.name | Library.name | Measure.name | MessageDefinition.name | NamingSystem.name | OperationDefinition.name | PlanDefinition.name | Questionnaire.name | Requirements.name | SearchParameter.name | StructureDefinition.name | StructureMap.name | TerminologyCapabilities.name | TestScript.name | ValueSet.name</b><br>
11267   * </p>
11268   */
11269  @SearchParamDefinition(name="name", path="ActivityDefinition.name | CapabilityStatement.name | Citation.name | CodeSystem.name | CompartmentDefinition.name | ConceptMap.name | ConditionDefinition.name | EventDefinition.name | EvidenceVariable.name | ExampleScenario.name | GraphDefinition.name | ImplementationGuide.name | Library.name | Measure.name | MessageDefinition.name | NamingSystem.name | OperationDefinition.name | PlanDefinition.name | Questionnaire.name | Requirements.name | SearchParameter.name | StructureDefinition.name | StructureMap.name | TerminologyCapabilities.name | TestScript.name | ValueSet.name", description="Multiple Resources: \r\n\r\n* [ActivityDefinition](activitydefinition.html): Computationally friendly name of the activity definition\r\n* [CapabilityStatement](capabilitystatement.html): Computationally friendly name of the capability statement\r\n* [Citation](citation.html): Computationally friendly name of the citation\r\n* [CodeSystem](codesystem.html): Computationally friendly name of the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): Computationally friendly name of the compartment definition\r\n* [ConceptMap](conceptmap.html): Computationally friendly name of the concept map\r\n* [ConditionDefinition](conditiondefinition.html): Computationally friendly name of the condition definition\r\n* [EventDefinition](eventdefinition.html): Computationally friendly name of the event definition\r\n* [EvidenceVariable](evidencevariable.html): Computationally friendly name of the evidence variable\r\n* [ExampleScenario](examplescenario.html): Computationally friendly name of the example scenario\r\n* [GraphDefinition](graphdefinition.html): Computationally friendly name of the graph definition\r\n* [ImplementationGuide](implementationguide.html): Computationally friendly name of the implementation guide\r\n* [Library](library.html): Computationally friendly name of the library\r\n* [Measure](measure.html): Computationally friendly name of the measure\r\n* [MessageDefinition](messagedefinition.html): Computationally friendly name of the message definition\r\n* [NamingSystem](namingsystem.html): Computationally friendly name of the naming system\r\n* [OperationDefinition](operationdefinition.html): Computationally friendly name of the operation definition\r\n* [PlanDefinition](plandefinition.html): Computationally friendly name of the plan definition\r\n* [Questionnaire](questionnaire.html): Computationally friendly name of the questionnaire\r\n* [Requirements](requirements.html): Computationally friendly name of the requirements\r\n* [SearchParameter](searchparameter.html): Computationally friendly name of the search parameter\r\n* [StructureDefinition](structuredefinition.html): Computationally friendly name of the structure definition\r\n* [StructureMap](structuremap.html): Computationally friendly name of the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): Computationally friendly name of the terminology capabilities\r\n* [TestScript](testscript.html): Computationally friendly name of the test script\r\n* [ValueSet](valueset.html): Computationally friendly name of the value set\r\n", type="string" )
11270  public static final String SP_NAME = "name";
11271 /**
11272   * <b>Fluent Client</b> search parameter constant for <b>name</b>
11273   * <p>
11274   * Description: <b>Multiple Resources: 
11275
11276* [ActivityDefinition](activitydefinition.html): Computationally friendly name of the activity definition
11277* [CapabilityStatement](capabilitystatement.html): Computationally friendly name of the capability statement
11278* [Citation](citation.html): Computationally friendly name of the citation
11279* [CodeSystem](codesystem.html): Computationally friendly name of the code system
11280* [CompartmentDefinition](compartmentdefinition.html): Computationally friendly name of the compartment definition
11281* [ConceptMap](conceptmap.html): Computationally friendly name of the concept map
11282* [ConditionDefinition](conditiondefinition.html): Computationally friendly name of the condition definition
11283* [EventDefinition](eventdefinition.html): Computationally friendly name of the event definition
11284* [EvidenceVariable](evidencevariable.html): Computationally friendly name of the evidence variable
11285* [ExampleScenario](examplescenario.html): Computationally friendly name of the example scenario
11286* [GraphDefinition](graphdefinition.html): Computationally friendly name of the graph definition
11287* [ImplementationGuide](implementationguide.html): Computationally friendly name of the implementation guide
11288* [Library](library.html): Computationally friendly name of the library
11289* [Measure](measure.html): Computationally friendly name of the measure
11290* [MessageDefinition](messagedefinition.html): Computationally friendly name of the message definition
11291* [NamingSystem](namingsystem.html): Computationally friendly name of the naming system
11292* [OperationDefinition](operationdefinition.html): Computationally friendly name of the operation definition
11293* [PlanDefinition](plandefinition.html): Computationally friendly name of the plan definition
11294* [Questionnaire](questionnaire.html): Computationally friendly name of the questionnaire
11295* [Requirements](requirements.html): Computationally friendly name of the requirements
11296* [SearchParameter](searchparameter.html): Computationally friendly name of the search parameter
11297* [StructureDefinition](structuredefinition.html): Computationally friendly name of the structure definition
11298* [StructureMap](structuremap.html): Computationally friendly name of the structure map
11299* [TerminologyCapabilities](terminologycapabilities.html): Computationally friendly name of the terminology capabilities
11300* [TestScript](testscript.html): Computationally friendly name of the test script
11301* [ValueSet](valueset.html): Computationally friendly name of the value set
11302</b><br>
11303   * Type: <b>string</b><br>
11304   * Path: <b>ActivityDefinition.name | CapabilityStatement.name | Citation.name | CodeSystem.name | CompartmentDefinition.name | ConceptMap.name | ConditionDefinition.name | EventDefinition.name | EvidenceVariable.name | ExampleScenario.name | GraphDefinition.name | ImplementationGuide.name | Library.name | Measure.name | MessageDefinition.name | NamingSystem.name | OperationDefinition.name | PlanDefinition.name | Questionnaire.name | Requirements.name | SearchParameter.name | StructureDefinition.name | StructureMap.name | TerminologyCapabilities.name | TestScript.name | ValueSet.name</b><br>
11305   * </p>
11306   */
11307  public static final ca.uhn.fhir.rest.gclient.StringClientParam NAME = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_NAME);
11308
11309 /**
11310   * Search parameter: <b>publisher</b>
11311   * <p>
11312   * Description: <b>Multiple Resources: 
11313
11314* [ActivityDefinition](activitydefinition.html): Name of the publisher of the activity definition
11315* [ActorDefinition](actordefinition.html): Name of the publisher of the Actor Definition
11316* [CapabilityStatement](capabilitystatement.html): Name of the publisher of the capability statement
11317* [ChargeItemDefinition](chargeitemdefinition.html): Name of the publisher of the charge item definition
11318* [Citation](citation.html): Name of the publisher of the citation
11319* [CodeSystem](codesystem.html): Name of the publisher of the code system
11320* [CompartmentDefinition](compartmentdefinition.html): Name of the publisher of the compartment definition
11321* [ConceptMap](conceptmap.html): Name of the publisher of the concept map
11322* [ConditionDefinition](conditiondefinition.html): Name of the publisher of the condition definition
11323* [EventDefinition](eventdefinition.html): Name of the publisher of the event definition
11324* [Evidence](evidence.html): Name of the publisher of the evidence
11325* [EvidenceReport](evidencereport.html): Name of the publisher of the evidence report
11326* [EvidenceVariable](evidencevariable.html): Name of the publisher of the evidence variable
11327* [ExampleScenario](examplescenario.html): Name of the publisher of the example scenario
11328* [GraphDefinition](graphdefinition.html): Name of the publisher of the graph definition
11329* [ImplementationGuide](implementationguide.html): Name of the publisher of the implementation guide
11330* [Library](library.html): Name of the publisher of the library
11331* [Measure](measure.html): Name of the publisher of the measure
11332* [MessageDefinition](messagedefinition.html): Name of the publisher of the message definition
11333* [NamingSystem](namingsystem.html): Name of the publisher of the naming system
11334* [OperationDefinition](operationdefinition.html): Name of the publisher of the operation definition
11335* [PlanDefinition](plandefinition.html): Name of the publisher of the plan definition
11336* [Questionnaire](questionnaire.html): Name of the publisher of the questionnaire
11337* [Requirements](requirements.html): Name of the publisher of the requirements
11338* [SearchParameter](searchparameter.html): Name of the publisher of the search parameter
11339* [StructureDefinition](structuredefinition.html): Name of the publisher of the structure definition
11340* [StructureMap](structuremap.html): Name of the publisher of the structure map
11341* [TerminologyCapabilities](terminologycapabilities.html): Name of the publisher of the terminology capabilities
11342* [TestScript](testscript.html): Name of the publisher of the test script
11343* [ValueSet](valueset.html): Name of the publisher of the value set
11344</b><br>
11345   * Type: <b>string</b><br>
11346   * Path: <b>ActivityDefinition.publisher | ActorDefinition.publisher | CapabilityStatement.publisher | ChargeItemDefinition.publisher | Citation.publisher | CodeSystem.publisher | CompartmentDefinition.publisher | ConceptMap.publisher | ConditionDefinition.publisher | EventDefinition.publisher | Evidence.publisher | EvidenceReport.publisher | EvidenceVariable.publisher | ExampleScenario.publisher | GraphDefinition.publisher | ImplementationGuide.publisher | Library.publisher | Measure.publisher | MessageDefinition.publisher | NamingSystem.publisher | OperationDefinition.publisher | PlanDefinition.publisher | Questionnaire.publisher | Requirements.publisher | SearchParameter.publisher | StructureDefinition.publisher | StructureMap.publisher | TerminologyCapabilities.publisher | TestScript.publisher | ValueSet.publisher</b><br>
11347   * </p>
11348   */
11349  @SearchParamDefinition(name="publisher", path="ActivityDefinition.publisher | ActorDefinition.publisher | CapabilityStatement.publisher | ChargeItemDefinition.publisher | Citation.publisher | CodeSystem.publisher | CompartmentDefinition.publisher | ConceptMap.publisher | ConditionDefinition.publisher | EventDefinition.publisher | Evidence.publisher | EvidenceReport.publisher | EvidenceVariable.publisher | ExampleScenario.publisher | GraphDefinition.publisher | ImplementationGuide.publisher | Library.publisher | Measure.publisher | MessageDefinition.publisher | NamingSystem.publisher | OperationDefinition.publisher | PlanDefinition.publisher | Questionnaire.publisher | Requirements.publisher | SearchParameter.publisher | StructureDefinition.publisher | StructureMap.publisher | TerminologyCapabilities.publisher | TestScript.publisher | ValueSet.publisher", description="Multiple Resources: \r\n\r\n* [ActivityDefinition](activitydefinition.html): Name of the publisher of the activity definition\r\n* [ActorDefinition](actordefinition.html): Name of the publisher of the Actor Definition\r\n* [CapabilityStatement](capabilitystatement.html): Name of the publisher of the capability statement\r\n* [ChargeItemDefinition](chargeitemdefinition.html): Name of the publisher of the charge item definition\r\n* [Citation](citation.html): Name of the publisher of the citation\r\n* [CodeSystem](codesystem.html): Name of the publisher of the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): Name of the publisher of the compartment definition\r\n* [ConceptMap](conceptmap.html): Name of the publisher of the concept map\r\n* [ConditionDefinition](conditiondefinition.html): Name of the publisher of the condition definition\r\n* [EventDefinition](eventdefinition.html): Name of the publisher of the event definition\r\n* [Evidence](evidence.html): Name of the publisher of the evidence\r\n* [EvidenceReport](evidencereport.html): Name of the publisher of the evidence report\r\n* [EvidenceVariable](evidencevariable.html): Name of the publisher of the evidence variable\r\n* [ExampleScenario](examplescenario.html): Name of the publisher of the example scenario\r\n* [GraphDefinition](graphdefinition.html): Name of the publisher of the graph definition\r\n* [ImplementationGuide](implementationguide.html): Name of the publisher of the implementation guide\r\n* [Library](library.html): Name of the publisher of the library\r\n* [Measure](measure.html): Name of the publisher of the measure\r\n* [MessageDefinition](messagedefinition.html): Name of the publisher of the message definition\r\n* [NamingSystem](namingsystem.html): Name of the publisher of the naming system\r\n* [OperationDefinition](operationdefinition.html): Name of the publisher of the operation definition\r\n* [PlanDefinition](plandefinition.html): Name of the publisher of the plan definition\r\n* [Questionnaire](questionnaire.html): Name of the publisher of the questionnaire\r\n* [Requirements](requirements.html): Name of the publisher of the requirements\r\n* [SearchParameter](searchparameter.html): Name of the publisher of the search parameter\r\n* [StructureDefinition](structuredefinition.html): Name of the publisher of the structure definition\r\n* [StructureMap](structuremap.html): Name of the publisher of the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): Name of the publisher of the terminology capabilities\r\n* [TestScript](testscript.html): Name of the publisher of the test script\r\n* [ValueSet](valueset.html): Name of the publisher of the value set\r\n", type="string" )
11350  public static final String SP_PUBLISHER = "publisher";
11351 /**
11352   * <b>Fluent Client</b> search parameter constant for <b>publisher</b>
11353   * <p>
11354   * Description: <b>Multiple Resources: 
11355
11356* [ActivityDefinition](activitydefinition.html): Name of the publisher of the activity definition
11357* [ActorDefinition](actordefinition.html): Name of the publisher of the Actor Definition
11358* [CapabilityStatement](capabilitystatement.html): Name of the publisher of the capability statement
11359* [ChargeItemDefinition](chargeitemdefinition.html): Name of the publisher of the charge item definition
11360* [Citation](citation.html): Name of the publisher of the citation
11361* [CodeSystem](codesystem.html): Name of the publisher of the code system
11362* [CompartmentDefinition](compartmentdefinition.html): Name of the publisher of the compartment definition
11363* [ConceptMap](conceptmap.html): Name of the publisher of the concept map
11364* [ConditionDefinition](conditiondefinition.html): Name of the publisher of the condition definition
11365* [EventDefinition](eventdefinition.html): Name of the publisher of the event definition
11366* [Evidence](evidence.html): Name of the publisher of the evidence
11367* [EvidenceReport](evidencereport.html): Name of the publisher of the evidence report
11368* [EvidenceVariable](evidencevariable.html): Name of the publisher of the evidence variable
11369* [ExampleScenario](examplescenario.html): Name of the publisher of the example scenario
11370* [GraphDefinition](graphdefinition.html): Name of the publisher of the graph definition
11371* [ImplementationGuide](implementationguide.html): Name of the publisher of the implementation guide
11372* [Library](library.html): Name of the publisher of the library
11373* [Measure](measure.html): Name of the publisher of the measure
11374* [MessageDefinition](messagedefinition.html): Name of the publisher of the message definition
11375* [NamingSystem](namingsystem.html): Name of the publisher of the naming system
11376* [OperationDefinition](operationdefinition.html): Name of the publisher of the operation definition
11377* [PlanDefinition](plandefinition.html): Name of the publisher of the plan definition
11378* [Questionnaire](questionnaire.html): Name of the publisher of the questionnaire
11379* [Requirements](requirements.html): Name of the publisher of the requirements
11380* [SearchParameter](searchparameter.html): Name of the publisher of the search parameter
11381* [StructureDefinition](structuredefinition.html): Name of the publisher of the structure definition
11382* [StructureMap](structuremap.html): Name of the publisher of the structure map
11383* [TerminologyCapabilities](terminologycapabilities.html): Name of the publisher of the terminology capabilities
11384* [TestScript](testscript.html): Name of the publisher of the test script
11385* [ValueSet](valueset.html): Name of the publisher of the value set
11386</b><br>
11387   * Type: <b>string</b><br>
11388   * Path: <b>ActivityDefinition.publisher | ActorDefinition.publisher | CapabilityStatement.publisher | ChargeItemDefinition.publisher | Citation.publisher | CodeSystem.publisher | CompartmentDefinition.publisher | ConceptMap.publisher | ConditionDefinition.publisher | EventDefinition.publisher | Evidence.publisher | EvidenceReport.publisher | EvidenceVariable.publisher | ExampleScenario.publisher | GraphDefinition.publisher | ImplementationGuide.publisher | Library.publisher | Measure.publisher | MessageDefinition.publisher | NamingSystem.publisher | OperationDefinition.publisher | PlanDefinition.publisher | Questionnaire.publisher | Requirements.publisher | SearchParameter.publisher | StructureDefinition.publisher | StructureMap.publisher | TerminologyCapabilities.publisher | TestScript.publisher | ValueSet.publisher</b><br>
11389   * </p>
11390   */
11391  public static final ca.uhn.fhir.rest.gclient.StringClientParam PUBLISHER = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_PUBLISHER);
11392
11393 /**
11394   * Search parameter: <b>status</b>
11395   * <p>
11396   * Description: <b>Multiple Resources: 
11397
11398* [ActivityDefinition](activitydefinition.html): The current status of the activity definition
11399* [ActorDefinition](actordefinition.html): The current status of the Actor Definition
11400* [CapabilityStatement](capabilitystatement.html): The current status of the capability statement
11401* [ChargeItemDefinition](chargeitemdefinition.html): The current status of the charge item definition
11402* [Citation](citation.html): The current status of the citation
11403* [CodeSystem](codesystem.html): The current status of the code system
11404* [CompartmentDefinition](compartmentdefinition.html): The current status of the compartment definition
11405* [ConceptMap](conceptmap.html): The current status of the concept map
11406* [ConditionDefinition](conditiondefinition.html): The current status of the condition definition
11407* [EventDefinition](eventdefinition.html): The current status of the event definition
11408* [Evidence](evidence.html): The current status of the evidence
11409* [EvidenceReport](evidencereport.html): The current status of the evidence report
11410* [EvidenceVariable](evidencevariable.html): The current status of the evidence variable
11411* [ExampleScenario](examplescenario.html): The current status of the example scenario
11412* [GraphDefinition](graphdefinition.html): The current status of the graph definition
11413* [ImplementationGuide](implementationguide.html): The current status of the implementation guide
11414* [Library](library.html): The current status of the library
11415* [Measure](measure.html): The current status of the measure
11416* [MedicationKnowledge](medicationknowledge.html): active | inactive | entered-in-error
11417* [MessageDefinition](messagedefinition.html): The current status of the message definition
11418* [NamingSystem](namingsystem.html): The current status of the naming system
11419* [ObservationDefinition](observationdefinition.html): Publication status of the ObservationDefinition: draft, active, retired, unknown
11420* [OperationDefinition](operationdefinition.html): The current status of the operation definition
11421* [PlanDefinition](plandefinition.html): The current status of the plan definition
11422* [Questionnaire](questionnaire.html): The current status of the questionnaire
11423* [Requirements](requirements.html): The current status of the requirements
11424* [SearchParameter](searchparameter.html): The current status of the search parameter
11425* [SpecimenDefinition](specimendefinition.html): Publication status of the SpecimenDefinition: draft, active, retired, unknown
11426* [StructureDefinition](structuredefinition.html): The current status of the structure definition
11427* [StructureMap](structuremap.html): The current status of the structure map
11428* [SubscriptionTopic](subscriptiontopic.html): draft | active | retired | unknown
11429* [TerminologyCapabilities](terminologycapabilities.html): The current status of the terminology capabilities
11430* [TestScript](testscript.html): The current status of the test script
11431* [ValueSet](valueset.html): The current status of the value set
11432</b><br>
11433   * Type: <b>token</b><br>
11434   * Path: <b>ActivityDefinition.status | ActorDefinition.status | CapabilityStatement.status | ChargeItemDefinition.status | Citation.status | CodeSystem.status | CompartmentDefinition.status | ConceptMap.status | ConditionDefinition.status | EventDefinition.status | Evidence.status | EvidenceReport.status | EvidenceVariable.status | ExampleScenario.status | GraphDefinition.status | ImplementationGuide.status | Library.status | Measure.status | MedicationKnowledge.status | MessageDefinition.status | NamingSystem.status | ObservationDefinition.status | OperationDefinition.status | PlanDefinition.status | Questionnaire.status | Requirements.status | SearchParameter.status | SpecimenDefinition.status | StructureDefinition.status | StructureMap.status | SubscriptionTopic.status | TerminologyCapabilities.status | TestScript.status | ValueSet.status</b><br>
11435   * </p>
11436   */
11437  @SearchParamDefinition(name="status", path="ActivityDefinition.status | ActorDefinition.status | CapabilityStatement.status | ChargeItemDefinition.status | Citation.status | CodeSystem.status | CompartmentDefinition.status | ConceptMap.status | ConditionDefinition.status | EventDefinition.status | Evidence.status | EvidenceReport.status | EvidenceVariable.status | ExampleScenario.status | GraphDefinition.status | ImplementationGuide.status | Library.status | Measure.status | MedicationKnowledge.status | MessageDefinition.status | NamingSystem.status | ObservationDefinition.status | OperationDefinition.status | PlanDefinition.status | Questionnaire.status | Requirements.status | SearchParameter.status | SpecimenDefinition.status | StructureDefinition.status | StructureMap.status | SubscriptionTopic.status | TerminologyCapabilities.status | TestScript.status | ValueSet.status", description="Multiple Resources: \r\n\r\n* [ActivityDefinition](activitydefinition.html): The current status of the activity definition\r\n* [ActorDefinition](actordefinition.html): The current status of the Actor Definition\r\n* [CapabilityStatement](capabilitystatement.html): The current status of the capability statement\r\n* [ChargeItemDefinition](chargeitemdefinition.html): The current status of the charge item definition\r\n* [Citation](citation.html): The current status of the citation\r\n* [CodeSystem](codesystem.html): The current status of the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): The current status of the compartment definition\r\n* [ConceptMap](conceptmap.html): The current status of the concept map\r\n* [ConditionDefinition](conditiondefinition.html): The current status of the condition definition\r\n* [EventDefinition](eventdefinition.html): The current status of the event definition\r\n* [Evidence](evidence.html): The current status of the evidence\r\n* [EvidenceReport](evidencereport.html): The current status of the evidence report\r\n* [EvidenceVariable](evidencevariable.html): The current status of the evidence variable\r\n* [ExampleScenario](examplescenario.html): The current status of the example scenario\r\n* [GraphDefinition](graphdefinition.html): The current status of the graph definition\r\n* [ImplementationGuide](implementationguide.html): The current status of the implementation guide\r\n* [Library](library.html): The current status of the library\r\n* [Measure](measure.html): The current status of the measure\r\n* [MedicationKnowledge](medicationknowledge.html): active | inactive | entered-in-error\r\n* [MessageDefinition](messagedefinition.html): The current status of the message definition\r\n* [NamingSystem](namingsystem.html): The current status of the naming system\r\n* [ObservationDefinition](observationdefinition.html): Publication status of the ObservationDefinition: draft, active, retired, unknown\r\n* [OperationDefinition](operationdefinition.html): The current status of the operation definition\r\n* [PlanDefinition](plandefinition.html): The current status of the plan definition\r\n* [Questionnaire](questionnaire.html): The current status of the questionnaire\r\n* [Requirements](requirements.html): The current status of the requirements\r\n* [SearchParameter](searchparameter.html): The current status of the search parameter\r\n* [SpecimenDefinition](specimendefinition.html): Publication status of the SpecimenDefinition: draft, active, retired, unknown\r\n* [StructureDefinition](structuredefinition.html): The current status of the structure definition\r\n* [StructureMap](structuremap.html): The current status of the structure map\r\n* [SubscriptionTopic](subscriptiontopic.html): draft | active | retired | unknown\r\n* [TerminologyCapabilities](terminologycapabilities.html): The current status of the terminology capabilities\r\n* [TestScript](testscript.html): The current status of the test script\r\n* [ValueSet](valueset.html): The current status of the value set\r\n", type="token" )
11438  public static final String SP_STATUS = "status";
11439 /**
11440   * <b>Fluent Client</b> search parameter constant for <b>status</b>
11441   * <p>
11442   * Description: <b>Multiple Resources: 
11443
11444* [ActivityDefinition](activitydefinition.html): The current status of the activity definition
11445* [ActorDefinition](actordefinition.html): The current status of the Actor Definition
11446* [CapabilityStatement](capabilitystatement.html): The current status of the capability statement
11447* [ChargeItemDefinition](chargeitemdefinition.html): The current status of the charge item definition
11448* [Citation](citation.html): The current status of the citation
11449* [CodeSystem](codesystem.html): The current status of the code system
11450* [CompartmentDefinition](compartmentdefinition.html): The current status of the compartment definition
11451* [ConceptMap](conceptmap.html): The current status of the concept map
11452* [ConditionDefinition](conditiondefinition.html): The current status of the condition definition
11453* [EventDefinition](eventdefinition.html): The current status of the event definition
11454* [Evidence](evidence.html): The current status of the evidence
11455* [EvidenceReport](evidencereport.html): The current status of the evidence report
11456* [EvidenceVariable](evidencevariable.html): The current status of the evidence variable
11457* [ExampleScenario](examplescenario.html): The current status of the example scenario
11458* [GraphDefinition](graphdefinition.html): The current status of the graph definition
11459* [ImplementationGuide](implementationguide.html): The current status of the implementation guide
11460* [Library](library.html): The current status of the library
11461* [Measure](measure.html): The current status of the measure
11462* [MedicationKnowledge](medicationknowledge.html): active | inactive | entered-in-error
11463* [MessageDefinition](messagedefinition.html): The current status of the message definition
11464* [NamingSystem](namingsystem.html): The current status of the naming system
11465* [ObservationDefinition](observationdefinition.html): Publication status of the ObservationDefinition: draft, active, retired, unknown
11466* [OperationDefinition](operationdefinition.html): The current status of the operation definition
11467* [PlanDefinition](plandefinition.html): The current status of the plan definition
11468* [Questionnaire](questionnaire.html): The current status of the questionnaire
11469* [Requirements](requirements.html): The current status of the requirements
11470* [SearchParameter](searchparameter.html): The current status of the search parameter
11471* [SpecimenDefinition](specimendefinition.html): Publication status of the SpecimenDefinition: draft, active, retired, unknown
11472* [StructureDefinition](structuredefinition.html): The current status of the structure definition
11473* [StructureMap](structuremap.html): The current status of the structure map
11474* [SubscriptionTopic](subscriptiontopic.html): draft | active | retired | unknown
11475* [TerminologyCapabilities](terminologycapabilities.html): The current status of the terminology capabilities
11476* [TestScript](testscript.html): The current status of the test script
11477* [ValueSet](valueset.html): The current status of the value set
11478</b><br>
11479   * Type: <b>token</b><br>
11480   * Path: <b>ActivityDefinition.status | ActorDefinition.status | CapabilityStatement.status | ChargeItemDefinition.status | Citation.status | CodeSystem.status | CompartmentDefinition.status | ConceptMap.status | ConditionDefinition.status | EventDefinition.status | Evidence.status | EvidenceReport.status | EvidenceVariable.status | ExampleScenario.status | GraphDefinition.status | ImplementationGuide.status | Library.status | Measure.status | MedicationKnowledge.status | MessageDefinition.status | NamingSystem.status | ObservationDefinition.status | OperationDefinition.status | PlanDefinition.status | Questionnaire.status | Requirements.status | SearchParameter.status | SpecimenDefinition.status | StructureDefinition.status | StructureMap.status | SubscriptionTopic.status | TerminologyCapabilities.status | TestScript.status | ValueSet.status</b><br>
11481   * </p>
11482   */
11483  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
11484
11485 /**
11486   * Search parameter: <b>title</b>
11487   * <p>
11488   * Description: <b>Multiple Resources: 
11489
11490* [ActivityDefinition](activitydefinition.html): The human-friendly name of the activity definition
11491* [ActorDefinition](actordefinition.html): The human-friendly name of the Actor Definition
11492* [CapabilityStatement](capabilitystatement.html): The human-friendly name of the capability statement
11493* [ChargeItemDefinition](chargeitemdefinition.html): The human-friendly name of the charge item definition
11494* [Citation](citation.html): The human-friendly name of the citation
11495* [CodeSystem](codesystem.html): The human-friendly name of the code system
11496* [ConceptMap](conceptmap.html): The human-friendly name of the concept map
11497* [ConditionDefinition](conditiondefinition.html): The human-friendly name of the condition definition
11498* [EventDefinition](eventdefinition.html): The human-friendly name of the event definition
11499* [Evidence](evidence.html): The human-friendly name of the evidence
11500* [EvidenceVariable](evidencevariable.html): The human-friendly name of the evidence variable
11501* [ImplementationGuide](implementationguide.html): The human-friendly name of the implementation guide
11502* [Library](library.html): The human-friendly name of the library
11503* [Measure](measure.html): The human-friendly name of the measure
11504* [MessageDefinition](messagedefinition.html): The human-friendly name of the message definition
11505* [ObservationDefinition](observationdefinition.html): Human-friendly name of the ObservationDefinition
11506* [OperationDefinition](operationdefinition.html): The human-friendly name of the operation definition
11507* [PlanDefinition](plandefinition.html): The human-friendly name of the plan definition
11508* [Questionnaire](questionnaire.html): The human-friendly name of the questionnaire
11509* [Requirements](requirements.html): The human-friendly name of the requirements
11510* [SpecimenDefinition](specimendefinition.html): Human-friendly name of the SpecimenDefinition
11511* [StructureDefinition](structuredefinition.html): The human-friendly name of the structure definition
11512* [StructureMap](structuremap.html): The human-friendly name of the structure map
11513* [SubscriptionTopic](subscriptiontopic.html): Name for this SubscriptionTopic (Human friendly)
11514* [TerminologyCapabilities](terminologycapabilities.html): The human-friendly name of the terminology capabilities
11515* [TestScript](testscript.html): The human-friendly name of the test script
11516* [ValueSet](valueset.html): The human-friendly name of the value set
11517</b><br>
11518   * Type: <b>string</b><br>
11519   * Path: <b>ActivityDefinition.title | ActorDefinition.title | CapabilityStatement.title | ChargeItemDefinition.title | Citation.title | CodeSystem.title | ConceptMap.title | ConditionDefinition.title | EventDefinition.title | Evidence.title | EvidenceVariable.title | ImplementationGuide.title | Library.title | Measure.title | MessageDefinition.title | ObservationDefinition.title | OperationDefinition.title | PlanDefinition.title | Questionnaire.title | Requirements.title | SpecimenDefinition.title | StructureDefinition.title | StructureMap.title | SubscriptionTopic.title | TerminologyCapabilities.title | TestScript.title | ValueSet.title</b><br>
11520   * </p>
11521   */
11522  @SearchParamDefinition(name="title", path="ActivityDefinition.title | ActorDefinition.title | CapabilityStatement.title | ChargeItemDefinition.title | Citation.title | CodeSystem.title | ConceptMap.title | ConditionDefinition.title | EventDefinition.title | Evidence.title | EvidenceVariable.title | ImplementationGuide.title | Library.title | Measure.title | MessageDefinition.title | ObservationDefinition.title | OperationDefinition.title | PlanDefinition.title | Questionnaire.title | Requirements.title | SpecimenDefinition.title | StructureDefinition.title | StructureMap.title | SubscriptionTopic.title | TerminologyCapabilities.title | TestScript.title | ValueSet.title", description="Multiple Resources: \r\n\r\n* [ActivityDefinition](activitydefinition.html): The human-friendly name of the activity definition\r\n* [ActorDefinition](actordefinition.html): The human-friendly name of the Actor Definition\r\n* [CapabilityStatement](capabilitystatement.html): The human-friendly name of the capability statement\r\n* [ChargeItemDefinition](chargeitemdefinition.html): The human-friendly name of the charge item definition\r\n* [Citation](citation.html): The human-friendly name of the citation\r\n* [CodeSystem](codesystem.html): The human-friendly name of the code system\r\n* [ConceptMap](conceptmap.html): The human-friendly name of the concept map\r\n* [ConditionDefinition](conditiondefinition.html): The human-friendly name of the condition definition\r\n* [EventDefinition](eventdefinition.html): The human-friendly name of the event definition\r\n* [Evidence](evidence.html): The human-friendly name of the evidence\r\n* [EvidenceVariable](evidencevariable.html): The human-friendly name of the evidence variable\r\n* [ImplementationGuide](implementationguide.html): The human-friendly name of the implementation guide\r\n* [Library](library.html): The human-friendly name of the library\r\n* [Measure](measure.html): The human-friendly name of the measure\r\n* [MessageDefinition](messagedefinition.html): The human-friendly name of the message definition\r\n* [ObservationDefinition](observationdefinition.html): Human-friendly name of the ObservationDefinition\r\n* [OperationDefinition](operationdefinition.html): The human-friendly name of the operation definition\r\n* [PlanDefinition](plandefinition.html): The human-friendly name of the plan definition\r\n* [Questionnaire](questionnaire.html): The human-friendly name of the questionnaire\r\n* [Requirements](requirements.html): The human-friendly name of the requirements\r\n* [SpecimenDefinition](specimendefinition.html): Human-friendly name of the SpecimenDefinition\r\n* [StructureDefinition](structuredefinition.html): The human-friendly name of the structure definition\r\n* [StructureMap](structuremap.html): The human-friendly name of the structure map\r\n* [SubscriptionTopic](subscriptiontopic.html): Name for this SubscriptionTopic (Human friendly)\r\n* [TerminologyCapabilities](terminologycapabilities.html): The human-friendly name of the terminology capabilities\r\n* [TestScript](testscript.html): The human-friendly name of the test script\r\n* [ValueSet](valueset.html): The human-friendly name of the value set\r\n", type="string" )
11523  public static final String SP_TITLE = "title";
11524 /**
11525   * <b>Fluent Client</b> search parameter constant for <b>title</b>
11526   * <p>
11527   * Description: <b>Multiple Resources: 
11528
11529* [ActivityDefinition](activitydefinition.html): The human-friendly name of the activity definition
11530* [ActorDefinition](actordefinition.html): The human-friendly name of the Actor Definition
11531* [CapabilityStatement](capabilitystatement.html): The human-friendly name of the capability statement
11532* [ChargeItemDefinition](chargeitemdefinition.html): The human-friendly name of the charge item definition
11533* [Citation](citation.html): The human-friendly name of the citation
11534* [CodeSystem](codesystem.html): The human-friendly name of the code system
11535* [ConceptMap](conceptmap.html): The human-friendly name of the concept map
11536* [ConditionDefinition](conditiondefinition.html): The human-friendly name of the condition definition
11537* [EventDefinition](eventdefinition.html): The human-friendly name of the event definition
11538* [Evidence](evidence.html): The human-friendly name of the evidence
11539* [EvidenceVariable](evidencevariable.html): The human-friendly name of the evidence variable
11540* [ImplementationGuide](implementationguide.html): The human-friendly name of the implementation guide
11541* [Library](library.html): The human-friendly name of the library
11542* [Measure](measure.html): The human-friendly name of the measure
11543* [MessageDefinition](messagedefinition.html): The human-friendly name of the message definition
11544* [ObservationDefinition](observationdefinition.html): Human-friendly name of the ObservationDefinition
11545* [OperationDefinition](operationdefinition.html): The human-friendly name of the operation definition
11546* [PlanDefinition](plandefinition.html): The human-friendly name of the plan definition
11547* [Questionnaire](questionnaire.html): The human-friendly name of the questionnaire
11548* [Requirements](requirements.html): The human-friendly name of the requirements
11549* [SpecimenDefinition](specimendefinition.html): Human-friendly name of the SpecimenDefinition
11550* [StructureDefinition](structuredefinition.html): The human-friendly name of the structure definition
11551* [StructureMap](structuremap.html): The human-friendly name of the structure map
11552* [SubscriptionTopic](subscriptiontopic.html): Name for this SubscriptionTopic (Human friendly)
11553* [TerminologyCapabilities](terminologycapabilities.html): The human-friendly name of the terminology capabilities
11554* [TestScript](testscript.html): The human-friendly name of the test script
11555* [ValueSet](valueset.html): The human-friendly name of the value set
11556</b><br>
11557   * Type: <b>string</b><br>
11558   * Path: <b>ActivityDefinition.title | ActorDefinition.title | CapabilityStatement.title | ChargeItemDefinition.title | Citation.title | CodeSystem.title | ConceptMap.title | ConditionDefinition.title | EventDefinition.title | Evidence.title | EvidenceVariable.title | ImplementationGuide.title | Library.title | Measure.title | MessageDefinition.title | ObservationDefinition.title | OperationDefinition.title | PlanDefinition.title | Questionnaire.title | Requirements.title | SpecimenDefinition.title | StructureDefinition.title | StructureMap.title | SubscriptionTopic.title | TerminologyCapabilities.title | TestScript.title | ValueSet.title</b><br>
11559   * </p>
11560   */
11561  public static final ca.uhn.fhir.rest.gclient.StringClientParam TITLE = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_TITLE);
11562
11563 /**
11564   * Search parameter: <b>url</b>
11565   * <p>
11566   * Description: <b>Multiple Resources: 
11567
11568* [ActivityDefinition](activitydefinition.html): The uri that identifies the activity definition
11569* [ActorDefinition](actordefinition.html): The uri that identifies the Actor Definition
11570* [CapabilityStatement](capabilitystatement.html): The uri that identifies the capability statement
11571* [ChargeItemDefinition](chargeitemdefinition.html): The uri that identifies the charge item definition
11572* [Citation](citation.html): The uri that identifies the citation
11573* [CodeSystem](codesystem.html): The uri that identifies the code system
11574* [CompartmentDefinition](compartmentdefinition.html): The uri that identifies the compartment definition
11575* [ConceptMap](conceptmap.html): The URI that identifies the concept map
11576* [ConditionDefinition](conditiondefinition.html): The uri that identifies the condition definition
11577* [EventDefinition](eventdefinition.html): The uri that identifies the event definition
11578* [Evidence](evidence.html): The uri that identifies the evidence
11579* [EvidenceReport](evidencereport.html): The uri that identifies the evidence report
11580* [EvidenceVariable](evidencevariable.html): The uri that identifies the evidence variable
11581* [ExampleScenario](examplescenario.html): The uri that identifies the example scenario
11582* [GraphDefinition](graphdefinition.html): The uri that identifies the graph definition
11583* [ImplementationGuide](implementationguide.html): The uri that identifies the implementation guide
11584* [Library](library.html): The uri that identifies the library
11585* [Measure](measure.html): The uri that identifies the measure
11586* [MessageDefinition](messagedefinition.html): The uri that identifies the message definition
11587* [NamingSystem](namingsystem.html): The uri that identifies the naming system
11588* [ObservationDefinition](observationdefinition.html): The uri that identifies the observation definition
11589* [OperationDefinition](operationdefinition.html): The uri that identifies the operation definition
11590* [PlanDefinition](plandefinition.html): The uri that identifies the plan definition
11591* [Questionnaire](questionnaire.html): The uri that identifies the questionnaire
11592* [Requirements](requirements.html): The uri that identifies the requirements
11593* [SearchParameter](searchparameter.html): The uri that identifies the search parameter
11594* [SpecimenDefinition](specimendefinition.html): The uri that identifies the specimen definition
11595* [StructureDefinition](structuredefinition.html): The uri that identifies the structure definition
11596* [StructureMap](structuremap.html): The uri that identifies the structure map
11597* [SubscriptionTopic](subscriptiontopic.html): Logical canonical URL to reference this SubscriptionTopic (globally unique)
11598* [TerminologyCapabilities](terminologycapabilities.html): The uri that identifies the terminology capabilities
11599* [TestScript](testscript.html): The uri that identifies the test script
11600* [ValueSet](valueset.html): The uri that identifies the value set
11601</b><br>
11602   * Type: <b>uri</b><br>
11603   * Path: <b>ActivityDefinition.url | ActorDefinition.url | CapabilityStatement.url | ChargeItemDefinition.url | Citation.url | CodeSystem.url | CompartmentDefinition.url | ConceptMap.url | ConditionDefinition.url | EventDefinition.url | Evidence.url | EvidenceReport.url | EvidenceVariable.url | ExampleScenario.url | GraphDefinition.url | ImplementationGuide.url | Library.url | Measure.url | MessageDefinition.url | NamingSystem.url | ObservationDefinition.url | OperationDefinition.url | PlanDefinition.url | Questionnaire.url | Requirements.url | SearchParameter.url | SpecimenDefinition.url | StructureDefinition.url | StructureMap.url | SubscriptionTopic.url | TerminologyCapabilities.url | TestScript.url | ValueSet.url</b><br>
11604   * </p>
11605   */
11606  @SearchParamDefinition(name="url", path="ActivityDefinition.url | ActorDefinition.url | CapabilityStatement.url | ChargeItemDefinition.url | Citation.url | CodeSystem.url | CompartmentDefinition.url | ConceptMap.url | ConditionDefinition.url | EventDefinition.url | Evidence.url | EvidenceReport.url | EvidenceVariable.url | ExampleScenario.url | GraphDefinition.url | ImplementationGuide.url | Library.url | Measure.url | MessageDefinition.url | NamingSystem.url | ObservationDefinition.url | OperationDefinition.url | PlanDefinition.url | Questionnaire.url | Requirements.url | SearchParameter.url | SpecimenDefinition.url | StructureDefinition.url | StructureMap.url | SubscriptionTopic.url | TerminologyCapabilities.url | TestScript.url | ValueSet.url", description="Multiple Resources: \r\n\r\n* [ActivityDefinition](activitydefinition.html): The uri that identifies the activity definition\r\n* [ActorDefinition](actordefinition.html): The uri that identifies the Actor Definition\r\n* [CapabilityStatement](capabilitystatement.html): The uri that identifies the capability statement\r\n* [ChargeItemDefinition](chargeitemdefinition.html): The uri that identifies the charge item definition\r\n* [Citation](citation.html): The uri that identifies the citation\r\n* [CodeSystem](codesystem.html): The uri that identifies the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): The uri that identifies the compartment definition\r\n* [ConceptMap](conceptmap.html): The URI that identifies the concept map\r\n* [ConditionDefinition](conditiondefinition.html): The uri that identifies the condition definition\r\n* [EventDefinition](eventdefinition.html): The uri that identifies the event definition\r\n* [Evidence](evidence.html): The uri that identifies the evidence\r\n* [EvidenceReport](evidencereport.html): The uri that identifies the evidence report\r\n* [EvidenceVariable](evidencevariable.html): The uri that identifies the evidence variable\r\n* [ExampleScenario](examplescenario.html): The uri that identifies the example scenario\r\n* [GraphDefinition](graphdefinition.html): The uri that identifies the graph definition\r\n* [ImplementationGuide](implementationguide.html): The uri that identifies the implementation guide\r\n* [Library](library.html): The uri that identifies the library\r\n* [Measure](measure.html): The uri that identifies the measure\r\n* [MessageDefinition](messagedefinition.html): The uri that identifies the message definition\r\n* [NamingSystem](namingsystem.html): The uri that identifies the naming system\r\n* [ObservationDefinition](observationdefinition.html): The uri that identifies the observation definition\r\n* [OperationDefinition](operationdefinition.html): The uri that identifies the operation definition\r\n* [PlanDefinition](plandefinition.html): The uri that identifies the plan definition\r\n* [Questionnaire](questionnaire.html): The uri that identifies the questionnaire\r\n* [Requirements](requirements.html): The uri that identifies the requirements\r\n* [SearchParameter](searchparameter.html): The uri that identifies the search parameter\r\n* [SpecimenDefinition](specimendefinition.html): The uri that identifies the specimen definition\r\n* [StructureDefinition](structuredefinition.html): The uri that identifies the structure definition\r\n* [StructureMap](structuremap.html): The uri that identifies the structure map\r\n* [SubscriptionTopic](subscriptiontopic.html): Logical canonical URL to reference this SubscriptionTopic (globally unique)\r\n* [TerminologyCapabilities](terminologycapabilities.html): The uri that identifies the terminology capabilities\r\n* [TestScript](testscript.html): The uri that identifies the test script\r\n* [ValueSet](valueset.html): The uri that identifies the value set\r\n", type="uri" )
11607  public static final String SP_URL = "url";
11608 /**
11609   * <b>Fluent Client</b> search parameter constant for <b>url</b>
11610   * <p>
11611   * Description: <b>Multiple Resources: 
11612
11613* [ActivityDefinition](activitydefinition.html): The uri that identifies the activity definition
11614* [ActorDefinition](actordefinition.html): The uri that identifies the Actor Definition
11615* [CapabilityStatement](capabilitystatement.html): The uri that identifies the capability statement
11616* [ChargeItemDefinition](chargeitemdefinition.html): The uri that identifies the charge item definition
11617* [Citation](citation.html): The uri that identifies the citation
11618* [CodeSystem](codesystem.html): The uri that identifies the code system
11619* [CompartmentDefinition](compartmentdefinition.html): The uri that identifies the compartment definition
11620* [ConceptMap](conceptmap.html): The URI that identifies the concept map
11621* [ConditionDefinition](conditiondefinition.html): The uri that identifies the condition definition
11622* [EventDefinition](eventdefinition.html): The uri that identifies the event definition
11623* [Evidence](evidence.html): The uri that identifies the evidence
11624* [EvidenceReport](evidencereport.html): The uri that identifies the evidence report
11625* [EvidenceVariable](evidencevariable.html): The uri that identifies the evidence variable
11626* [ExampleScenario](examplescenario.html): The uri that identifies the example scenario
11627* [GraphDefinition](graphdefinition.html): The uri that identifies the graph definition
11628* [ImplementationGuide](implementationguide.html): The uri that identifies the implementation guide
11629* [Library](library.html): The uri that identifies the library
11630* [Measure](measure.html): The uri that identifies the measure
11631* [MessageDefinition](messagedefinition.html): The uri that identifies the message definition
11632* [NamingSystem](namingsystem.html): The uri that identifies the naming system
11633* [ObservationDefinition](observationdefinition.html): The uri that identifies the observation definition
11634* [OperationDefinition](operationdefinition.html): The uri that identifies the operation definition
11635* [PlanDefinition](plandefinition.html): The uri that identifies the plan definition
11636* [Questionnaire](questionnaire.html): The uri that identifies the questionnaire
11637* [Requirements](requirements.html): The uri that identifies the requirements
11638* [SearchParameter](searchparameter.html): The uri that identifies the search parameter
11639* [SpecimenDefinition](specimendefinition.html): The uri that identifies the specimen definition
11640* [StructureDefinition](structuredefinition.html): The uri that identifies the structure definition
11641* [StructureMap](structuremap.html): The uri that identifies the structure map
11642* [SubscriptionTopic](subscriptiontopic.html): Logical canonical URL to reference this SubscriptionTopic (globally unique)
11643* [TerminologyCapabilities](terminologycapabilities.html): The uri that identifies the terminology capabilities
11644* [TestScript](testscript.html): The uri that identifies the test script
11645* [ValueSet](valueset.html): The uri that identifies the value set
11646</b><br>
11647   * Type: <b>uri</b><br>
11648   * Path: <b>ActivityDefinition.url | ActorDefinition.url | CapabilityStatement.url | ChargeItemDefinition.url | Citation.url | CodeSystem.url | CompartmentDefinition.url | ConceptMap.url | ConditionDefinition.url | EventDefinition.url | Evidence.url | EvidenceReport.url | EvidenceVariable.url | ExampleScenario.url | GraphDefinition.url | ImplementationGuide.url | Library.url | Measure.url | MessageDefinition.url | NamingSystem.url | ObservationDefinition.url | OperationDefinition.url | PlanDefinition.url | Questionnaire.url | Requirements.url | SearchParameter.url | SpecimenDefinition.url | StructureDefinition.url | StructureMap.url | SubscriptionTopic.url | TerminologyCapabilities.url | TestScript.url | ValueSet.url</b><br>
11649   * </p>
11650   */
11651  public static final ca.uhn.fhir.rest.gclient.UriClientParam URL = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_URL);
11652
11653 /**
11654   * Search parameter: <b>version</b>
11655   * <p>
11656   * Description: <b>Multiple Resources: 
11657
11658* [ActivityDefinition](activitydefinition.html): The business version of the activity definition
11659* [ActorDefinition](actordefinition.html): The business version of the Actor Definition
11660* [CapabilityStatement](capabilitystatement.html): The business version of the capability statement
11661* [ChargeItemDefinition](chargeitemdefinition.html): The business version of the charge item definition
11662* [Citation](citation.html): The business version of the citation
11663* [CodeSystem](codesystem.html): The business version of the code system
11664* [CompartmentDefinition](compartmentdefinition.html): The business version of the compartment definition
11665* [ConceptMap](conceptmap.html): The business version of the concept map
11666* [ConditionDefinition](conditiondefinition.html): The business version of the condition definition
11667* [EventDefinition](eventdefinition.html): The business version of the event definition
11668* [Evidence](evidence.html): The business version of the evidence
11669* [EvidenceVariable](evidencevariable.html): The business version of the evidence variable
11670* [ExampleScenario](examplescenario.html): The business version of the example scenario
11671* [GraphDefinition](graphdefinition.html): The business version of the graph definition
11672* [ImplementationGuide](implementationguide.html): The business version of the implementation guide
11673* [Library](library.html): The business version of the library
11674* [Measure](measure.html): The business version of the measure
11675* [MessageDefinition](messagedefinition.html): The business version of the message definition
11676* [NamingSystem](namingsystem.html): The business version of the naming system
11677* [OperationDefinition](operationdefinition.html): The business version of the operation definition
11678* [PlanDefinition](plandefinition.html): The business version of the plan definition
11679* [Questionnaire](questionnaire.html): The business version of the questionnaire
11680* [Requirements](requirements.html): The business version of the requirements
11681* [SearchParameter](searchparameter.html): The business version of the search parameter
11682* [StructureDefinition](structuredefinition.html): The business version of the structure definition
11683* [StructureMap](structuremap.html): The business version of the structure map
11684* [SubscriptionTopic](subscriptiontopic.html): Business version of the SubscriptionTopic
11685* [TerminologyCapabilities](terminologycapabilities.html): The business version of the terminology capabilities
11686* [TestScript](testscript.html): The business version of the test script
11687* [ValueSet](valueset.html): The business version of the value set
11688</b><br>
11689   * Type: <b>token</b><br>
11690   * Path: <b>ActivityDefinition.version | ActorDefinition.version | CapabilityStatement.version | ChargeItemDefinition.version | Citation.version | CodeSystem.version | CompartmentDefinition.version | ConceptMap.version | ConditionDefinition.version | EventDefinition.version | Evidence.version | EvidenceVariable.version | ExampleScenario.version | GraphDefinition.version | ImplementationGuide.version | Library.version | Measure.version | MessageDefinition.version | NamingSystem.version | OperationDefinition.version | PlanDefinition.version | Questionnaire.version | Requirements.version | SearchParameter.version | StructureDefinition.version | StructureMap.version | SubscriptionTopic.version | TerminologyCapabilities.version | TestScript.version | ValueSet.version</b><br>
11691   * </p>
11692   */
11693  @SearchParamDefinition(name="version", path="ActivityDefinition.version | ActorDefinition.version | CapabilityStatement.version | ChargeItemDefinition.version | Citation.version | CodeSystem.version | CompartmentDefinition.version | ConceptMap.version | ConditionDefinition.version | EventDefinition.version | Evidence.version | EvidenceVariable.version | ExampleScenario.version | GraphDefinition.version | ImplementationGuide.version | Library.version | Measure.version | MessageDefinition.version | NamingSystem.version | OperationDefinition.version | PlanDefinition.version | Questionnaire.version | Requirements.version | SearchParameter.version | StructureDefinition.version | StructureMap.version | SubscriptionTopic.version | TerminologyCapabilities.version | TestScript.version | ValueSet.version", description="Multiple Resources: \r\n\r\n* [ActivityDefinition](activitydefinition.html): The business version of the activity definition\r\n* [ActorDefinition](actordefinition.html): The business version of the Actor Definition\r\n* [CapabilityStatement](capabilitystatement.html): The business version of the capability statement\r\n* [ChargeItemDefinition](chargeitemdefinition.html): The business version of the charge item definition\r\n* [Citation](citation.html): The business version of the citation\r\n* [CodeSystem](codesystem.html): The business version of the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): The business version of the compartment definition\r\n* [ConceptMap](conceptmap.html): The business version of the concept map\r\n* [ConditionDefinition](conditiondefinition.html): The business version of the condition definition\r\n* [EventDefinition](eventdefinition.html): The business version of the event definition\r\n* [Evidence](evidence.html): The business version of the evidence\r\n* [EvidenceVariable](evidencevariable.html): The business version of the evidence variable\r\n* [ExampleScenario](examplescenario.html): The business version of the example scenario\r\n* [GraphDefinition](graphdefinition.html): The business version of the graph definition\r\n* [ImplementationGuide](implementationguide.html): The business version of the implementation guide\r\n* [Library](library.html): The business version of the library\r\n* [Measure](measure.html): The business version of the measure\r\n* [MessageDefinition](messagedefinition.html): The business version of the message definition\r\n* [NamingSystem](namingsystem.html): The business version of the naming system\r\n* [OperationDefinition](operationdefinition.html): The business version of the operation definition\r\n* [PlanDefinition](plandefinition.html): The business version of the plan definition\r\n* [Questionnaire](questionnaire.html): The business version of the questionnaire\r\n* [Requirements](requirements.html): The business version of the requirements\r\n* [SearchParameter](searchparameter.html): The business version of the search parameter\r\n* [StructureDefinition](structuredefinition.html): The business version of the structure definition\r\n* [StructureMap](structuremap.html): The business version of the structure map\r\n* [SubscriptionTopic](subscriptiontopic.html): Business version of the SubscriptionTopic\r\n* [TerminologyCapabilities](terminologycapabilities.html): The business version of the terminology capabilities\r\n* [TestScript](testscript.html): The business version of the test script\r\n* [ValueSet](valueset.html): The business version of the value set\r\n", type="token" )
11694  public static final String SP_VERSION = "version";
11695 /**
11696   * <b>Fluent Client</b> search parameter constant for <b>version</b>
11697   * <p>
11698   * Description: <b>Multiple Resources: 
11699
11700* [ActivityDefinition](activitydefinition.html): The business version of the activity definition
11701* [ActorDefinition](actordefinition.html): The business version of the Actor Definition
11702* [CapabilityStatement](capabilitystatement.html): The business version of the capability statement
11703* [ChargeItemDefinition](chargeitemdefinition.html): The business version of the charge item definition
11704* [Citation](citation.html): The business version of the citation
11705* [CodeSystem](codesystem.html): The business version of the code system
11706* [CompartmentDefinition](compartmentdefinition.html): The business version of the compartment definition
11707* [ConceptMap](conceptmap.html): The business version of the concept map
11708* [ConditionDefinition](conditiondefinition.html): The business version of the condition definition
11709* [EventDefinition](eventdefinition.html): The business version of the event definition
11710* [Evidence](evidence.html): The business version of the evidence
11711* [EvidenceVariable](evidencevariable.html): The business version of the evidence variable
11712* [ExampleScenario](examplescenario.html): The business version of the example scenario
11713* [GraphDefinition](graphdefinition.html): The business version of the graph definition
11714* [ImplementationGuide](implementationguide.html): The business version of the implementation guide
11715* [Library](library.html): The business version of the library
11716* [Measure](measure.html): The business version of the measure
11717* [MessageDefinition](messagedefinition.html): The business version of the message definition
11718* [NamingSystem](namingsystem.html): The business version of the naming system
11719* [OperationDefinition](operationdefinition.html): The business version of the operation definition
11720* [PlanDefinition](plandefinition.html): The business version of the plan definition
11721* [Questionnaire](questionnaire.html): The business version of the questionnaire
11722* [Requirements](requirements.html): The business version of the requirements
11723* [SearchParameter](searchparameter.html): The business version of the search parameter
11724* [StructureDefinition](structuredefinition.html): The business version of the structure definition
11725* [StructureMap](structuremap.html): The business version of the structure map
11726* [SubscriptionTopic](subscriptiontopic.html): Business version of the SubscriptionTopic
11727* [TerminologyCapabilities](terminologycapabilities.html): The business version of the terminology capabilities
11728* [TestScript](testscript.html): The business version of the test script
11729* [ValueSet](valueset.html): The business version of the value set
11730</b><br>
11731   * Type: <b>token</b><br>
11732   * Path: <b>ActivityDefinition.version | ActorDefinition.version | CapabilityStatement.version | ChargeItemDefinition.version | Citation.version | CodeSystem.version | CompartmentDefinition.version | ConceptMap.version | ConditionDefinition.version | EventDefinition.version | Evidence.version | EvidenceVariable.version | ExampleScenario.version | GraphDefinition.version | ImplementationGuide.version | Library.version | Measure.version | MessageDefinition.version | NamingSystem.version | OperationDefinition.version | PlanDefinition.version | Questionnaire.version | Requirements.version | SearchParameter.version | StructureDefinition.version | StructureMap.version | SubscriptionTopic.version | TerminologyCapabilities.version | TestScript.version | ValueSet.version</b><br>
11733   * </p>
11734   */
11735  public static final ca.uhn.fhir.rest.gclient.TokenClientParam VERSION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_VERSION);
11736
11737 /**
11738   * Search parameter: <b>scope-artifact</b>
11739   * <p>
11740   * Description: <b>The artifact under test</b><br>
11741   * Type: <b>reference</b><br>
11742   * Path: <b>TestScript.scope.artifact</b><br>
11743   * </p>
11744   */
11745  @SearchParamDefinition(name="scope-artifact", path="TestScript.scope.artifact", description="The artifact under test", type="reference", target={Account.class, ActivityDefinition.class, ActorDefinition.class, AdministrableProductDefinition.class, AdverseEvent.class, AllergyIntolerance.class, Appointment.class, AppointmentResponse.class, ArtifactAssessment.class, AuditEvent.class, Basic.class, Binary.class, BiologicallyDerivedProduct.class, BodyStructure.class, Bundle.class, CapabilityStatement.class, CarePlan.class, CareTeam.class, ChargeItem.class, ChargeItemDefinition.class, Citation.class, Claim.class, ClaimResponse.class, ClinicalImpression.class, ClinicalUseDefinition.class, CodeSystem.class, Communication.class, CommunicationRequest.class, CompartmentDefinition.class, Composition.class, ConceptMap.class, Condition.class, ConditionDefinition.class, Consent.class, Contract.class, Coverage.class, CoverageEligibilityRequest.class, CoverageEligibilityResponse.class, DetectedIssue.class, Device.class, DeviceDefinition.class, DeviceDispense.class, DeviceMetric.class, DeviceRequest.class, DeviceUsage.class, DiagnosticReport.class, DocumentManifest.class, DocumentReference.class, Encounter.class, Endpoint.class, EnrollmentRequest.class, EnrollmentResponse.class, EpisodeOfCare.class, EventDefinition.class, Evidence.class, EvidenceReport.class, EvidenceVariable.class, ExampleScenario.class, ExplanationOfBenefit.class, FamilyMemberHistory.class, Flag.class, FormularyItem.class, GenomicStudy.class, Goal.class, GraphDefinition.class, Group.class, GuidanceResponse.class, HealthcareService.class, ImagingSelection.class, ImagingStudy.class, Immunization.class, ImmunizationEvaluation.class, ImmunizationRecommendation.class, ImplementationGuide.class, Ingredient.class, InsurancePlan.class, InventoryReport.class, Invoice.class, Library.class, Linkage.class, ListResource.class, Location.class, ManufacturedItemDefinition.class, Measure.class, MeasureReport.class, Medication.class, MedicationAdministration.class, MedicationDispense.class, MedicationKnowledge.class, MedicationRequest.class, MedicationUsage.class, MedicinalProductDefinition.class, MessageDefinition.class, MessageHeader.class, MolecularSequence.class, NamingSystem.class, NutritionIntake.class, NutritionOrder.class, NutritionProduct.class, Observation.class, ObservationDefinition.class, OperationDefinition.class, OperationOutcome.class, Organization.class, OrganizationAffiliation.class, PackagedProductDefinition.class, Patient.class, PaymentNotice.class, PaymentReconciliation.class, Permission.class, Person.class, PlanDefinition.class, Practitioner.class, PractitionerRole.class, Procedure.class, Provenance.class, Questionnaire.class, QuestionnaireResponse.class, RegulatedAuthorization.class, RelatedPerson.class, RequestOrchestration.class, Requirements.class, ResearchStudy.class, ResearchSubject.class, RiskAssessment.class, Schedule.class, SearchParameter.class, ServiceRequest.class, Slot.class, Specimen.class, SpecimenDefinition.class, StructureDefinition.class, StructureMap.class, Subscription.class, SubscriptionStatus.class, SubscriptionTopic.class, Substance.class, SubstanceDefinition.class, SubstanceNucleicAcid.class, SubstancePolymer.class, SubstanceProtein.class, SubstanceReferenceInformation.class, SubstanceSourceMaterial.class, SupplyDelivery.class, SupplyRequest.class, Task.class, TerminologyCapabilities.class, TestReport.class, TestScript.class, Transport.class, ValueSet.class, VerificationResult.class, VisionPrescription.class } )
11746  public static final String SP_SCOPE_ARTIFACT = "scope-artifact";
11747 /**
11748   * <b>Fluent Client</b> search parameter constant for <b>scope-artifact</b>
11749   * <p>
11750   * Description: <b>The artifact under test</b><br>
11751   * Type: <b>reference</b><br>
11752   * Path: <b>TestScript.scope.artifact</b><br>
11753   * </p>
11754   */
11755  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SCOPE_ARTIFACT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SCOPE_ARTIFACT);
11756
11757/**
11758   * Constant for fluent queries to be used to add include statements. Specifies
11759   * the path value of "<b>TestScript:scope-artifact</b>".
11760   */
11761  public static final ca.uhn.fhir.model.api.Include INCLUDE_SCOPE_ARTIFACT = new ca.uhn.fhir.model.api.Include("TestScript:scope-artifact").toLocked();
11762
11763 /**
11764   * Search parameter: <b>testscript-capability</b>
11765   * <p>
11766   * Description: <b>TestScript required and validated capability</b><br>
11767   * Type: <b>string</b><br>
11768   * Path: <b>TestScript.metadata.capability.description</b><br>
11769   * </p>
11770   */
11771  @SearchParamDefinition(name="testscript-capability", path="TestScript.metadata.capability.description", description="TestScript required and validated capability", type="string" )
11772  public static final String SP_TESTSCRIPT_CAPABILITY = "testscript-capability";
11773 /**
11774   * <b>Fluent Client</b> search parameter constant for <b>testscript-capability</b>
11775   * <p>
11776   * Description: <b>TestScript required and validated capability</b><br>
11777   * Type: <b>string</b><br>
11778   * Path: <b>TestScript.metadata.capability.description</b><br>
11779   * </p>
11780   */
11781  public static final ca.uhn.fhir.rest.gclient.StringClientParam TESTSCRIPT_CAPABILITY = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_TESTSCRIPT_CAPABILITY);
11782
11783
11784}