001package org.hl7.fhir.r4b.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 Fri, Dec 31, 2021 05:58+1100 for FHIR v4.3.0-snapshot1
033
034import java.util.ArrayList;
035import java.util.Date;
036import java.util.List;
037import org.hl7.fhir.utilities.Utilities;
038import org.hl7.fhir.r4b.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 DomainResource {
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(Base code) throws FHIRException {
127          if (code == null)
128            return null;
129          if (code.isEmpty())
130            return new Enumeration<AssertionDirectionType>(this);
131          String codeString = ((PrimitiveType) code).asStringValue();
132          if (codeString == null || "".equals(codeString))
133            return null;
134        if ("response".equals(codeString))
135          return new Enumeration<AssertionDirectionType>(this, AssertionDirectionType.RESPONSE);
136        if ("request".equals(codeString))
137          return new Enumeration<AssertionDirectionType>(this, AssertionDirectionType.REQUEST);
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(Base code) throws FHIRException {
331          if (code == null)
332            return null;
333          if (code.isEmpty())
334            return new Enumeration<AssertionOperatorType>(this);
335          String codeString = ((PrimitiveType) code).asStringValue();
336          if (codeString == null || "".equals(codeString))
337            return null;
338        if ("equals".equals(codeString))
339          return new Enumeration<AssertionOperatorType>(this, AssertionOperatorType.EQUALS);
340        if ("notEquals".equals(codeString))
341          return new Enumeration<AssertionOperatorType>(this, AssertionOperatorType.NOTEQUALS);
342        if ("in".equals(codeString))
343          return new Enumeration<AssertionOperatorType>(this, AssertionOperatorType.IN);
344        if ("notIn".equals(codeString))
345          return new Enumeration<AssertionOperatorType>(this, AssertionOperatorType.NOTIN);
346        if ("greaterThan".equals(codeString))
347          return new Enumeration<AssertionOperatorType>(this, AssertionOperatorType.GREATERTHAN);
348        if ("lessThan".equals(codeString))
349          return new Enumeration<AssertionOperatorType>(this, AssertionOperatorType.LESSTHAN);
350        if ("empty".equals(codeString))
351          return new Enumeration<AssertionOperatorType>(this, AssertionOperatorType.EMPTY);
352        if ("notEmpty".equals(codeString))
353          return new Enumeration<AssertionOperatorType>(this, AssertionOperatorType.NOTEMPTY);
354        if ("contains".equals(codeString))
355          return new Enumeration<AssertionOperatorType>(this, AssertionOperatorType.CONTAINS);
356        if ("notContains".equals(codeString))
357          return new Enumeration<AssertionOperatorType>(this, AssertionOperatorType.NOTCONTAINS);
358        if ("eval".equals(codeString))
359          return new Enumeration<AssertionOperatorType>(this, AssertionOperatorType.EVAL);
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(Base code) throws FHIRException {
583          if (code == null)
584            return null;
585          if (code.isEmpty())
586            return new Enumeration<AssertionResponseTypes>(this);
587          String codeString = ((PrimitiveType) code).asStringValue();
588          if (codeString == null || "".equals(codeString))
589            return null;
590        if ("okay".equals(codeString))
591          return new Enumeration<AssertionResponseTypes>(this, AssertionResponseTypes.OKAY);
592        if ("created".equals(codeString))
593          return new Enumeration<AssertionResponseTypes>(this, AssertionResponseTypes.CREATED);
594        if ("noContent".equals(codeString))
595          return new Enumeration<AssertionResponseTypes>(this, AssertionResponseTypes.NOCONTENT);
596        if ("notModified".equals(codeString))
597          return new Enumeration<AssertionResponseTypes>(this, AssertionResponseTypes.NOTMODIFIED);
598        if ("bad".equals(codeString))
599          return new Enumeration<AssertionResponseTypes>(this, AssertionResponseTypes.BAD);
600        if ("forbidden".equals(codeString))
601          return new Enumeration<AssertionResponseTypes>(this, AssertionResponseTypes.FORBIDDEN);
602        if ("notFound".equals(codeString))
603          return new Enumeration<AssertionResponseTypes>(this, AssertionResponseTypes.NOTFOUND);
604        if ("methodNotAllowed".equals(codeString))
605          return new Enumeration<AssertionResponseTypes>(this, AssertionResponseTypes.METHODNOTALLOWED);
606        if ("conflict".equals(codeString))
607          return new Enumeration<AssertionResponseTypes>(this, AssertionResponseTypes.CONFLICT);
608        if ("gone".equals(codeString))
609          return new Enumeration<AssertionResponseTypes>(this, AssertionResponseTypes.GONE);
610        if ("preconditionFailed".equals(codeString))
611          return new Enumeration<AssertionResponseTypes>(this, AssertionResponseTypes.PRECONDITIONFAILED);
612        if ("unprocessable".equals(codeString))
613          return new Enumeration<AssertionResponseTypes>(this, AssertionResponseTypes.UNPROCESSABLE);
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 FHIRDefinedType {
649        /**
650         * An address expressed using postal conventions (as opposed to GPS or other location definition formats).  This data type may be used to convey addresses for use in delivering mail as well as for visiting locations which might not be valid for mail delivery.  There are a variety of postal address formats defined around the world.
651         */
652        ADDRESS, 
653        /**
654         * A duration of time during which an organism (or a process) has existed.
655         */
656        AGE, 
657        /**
658         * A  text note which also  contains information about who made the statement and when.
659         */
660        ANNOTATION, 
661        /**
662         * For referring to data content defined in other formats.
663         */
664        ATTACHMENT, 
665        /**
666         * Base definition for all elements that are defined inside a resource - but not those in a data type.
667         */
668        BACKBONEELEMENT, 
669        /**
670         * A concept that may be defined by a formal reference to a terminology or ontology or may be provided by text.
671         */
672        CODEABLECONCEPT, 
673        /**
674         * A reference to a resource (by instance), or instead, a reference to a cencept defined in a terminology or ontology (by class).
675         */
676        CODEABLEREFERENCE, 
677        /**
678         * A reference to a code defined by a terminology system.
679         */
680        CODING, 
681        /**
682         * Specifies contact information for a person or organization.
683         */
684        CONTACTDETAIL, 
685        /**
686         * Details for all kinds of technology mediated contact points for a person or organization, including telephone, email, etc.
687         */
688        CONTACTPOINT, 
689        /**
690         * A contributor to the content of a knowledge asset, including authors, editors, reviewers, and endorsers.
691         */
692        CONTRIBUTOR, 
693        /**
694         * A measured amount (or an amount that can potentially be measured). Note that measured amounts include amounts that are not precisely quantified, including amounts involving arbitrary units and floating currencies.
695         */
696        COUNT, 
697        /**
698         * Describes a required data item for evaluation in terms of the type of data, and optional code or date-based filters of the data.
699         */
700        DATAREQUIREMENT, 
701        /**
702         * The base class for all re-useable types defined as part of the FHIR Specification.
703         */
704        DATATYPE, 
705        /**
706         * A length - a value with a unit that is a physical distance.
707         */
708        DISTANCE, 
709        /**
710         * Indicates how the medication is/was taken or should be taken by the patient.
711         */
712        DOSAGE, 
713        /**
714         * A length of time.
715         */
716        DURATION, 
717        /**
718         * Base definition for all elements in a resource.
719         */
720        ELEMENT, 
721        /**
722         * Captures constraints on each element within the resource, profile, or extension.
723         */
724        ELEMENTDEFINITION, 
725        /**
726         * A expression that is evaluated in a specified context and returns a value. The context of use of the expression must specify the context in which the expression is evaluated, and how the result of the expression is used.
727         */
728        EXPRESSION, 
729        /**
730         * Optional Extension Element - found in all resources.
731         */
732        EXTENSION, 
733        /**
734         * A human's name with the ability to identify parts and usage.
735         */
736        HUMANNAME, 
737        /**
738         * An identifier - identifies some entity uniquely and unambiguously. Typically this is used for business identifiers.
739         */
740        IDENTIFIER, 
741        /**
742         * The marketing status describes the date when a medicinal product is actually put on the market or the date as of which it is no longer available.
743         */
744        MARKETINGSTATUS, 
745        /**
746         * The metadata about a resource. This is content in the resource that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource.
747         */
748        META, 
749        /**
750         * An amount of economic utility in some recognized currency.
751         */
752        MONEY, 
753        /**
754         * 
755         */
756        MONEYQUANTITY, 
757        /**
758         * A human-readable summary of the resource conveying the essential clinical and business information for the resource.
759         */
760        NARRATIVE, 
761        /**
762         * The parameters to the module. This collection specifies both the input and output parameters. Input parameters are provided by the caller as part of the $evaluate operation. Output parameters are included in the GuidanceResponse.
763         */
764        PARAMETERDEFINITION, 
765        /**
766         * A time period defined by a start and end date and optionally time.
767         */
768        PERIOD, 
769        /**
770         * A populatioof people with some set of grouping criteria.
771         */
772        POPULATION, 
773        /**
774         * The marketing status describes the date when a medicinal product is actually put on the market or the date as of which it is no longer available.
775         */
776        PRODCHARACTERISTIC, 
777        /**
778         * The shelf-life and storage information for a medicinal product item or container can be described using this class.
779         */
780        PRODUCTSHELFLIFE, 
781        /**
782         * A measured amount (or an amount that can potentially be measured). Note that measured amounts include amounts that are not precisely quantified, including amounts involving arbitrary units and floating currencies.
783         */
784        QUANTITY, 
785        /**
786         * A set of ordered Quantities defined by a low and high limit.
787         */
788        RANGE, 
789        /**
790         * A relationship of two Quantity values - expressed as a numerator and a denominator.
791         */
792        RATIO, 
793        /**
794         * A range of ratios expressed as a low and high numerator and a denominator.
795         */
796        RATIORANGE, 
797        /**
798         * A reference from one resource to another.
799         */
800        REFERENCE, 
801        /**
802         * Related artifacts such as additional documentation, justification, or bibliographic references.
803         */
804        RELATEDARTIFACT, 
805        /**
806         * A series of measurements taken by a device, with upper and lower limits. There may be more than one dimension in the data.
807         */
808        SAMPLEDDATA, 
809        /**
810         * A signature along with supporting context. The signature may be a digital signature that is cryptographic in nature, or some other signature acceptable to the domain. This other signature may be as simple as a graphical image representing a hand-written signature, or a signature ceremony Different signature approaches have different utilities.
811         */
812        SIGNATURE, 
813        /**
814         * 
815         */
816        SIMPLEQUANTITY, 
817        /**
818         * Specifies an event that may occur multiple times. Timing schedules are used to record when things are planned, expected or requested to occur. The most common usage is in dosage instructions for medications. They are also used when planning care of various kinds, and may be used for reporting the schedule to which past regular activities were carried out.
819         */
820        TIMING, 
821        /**
822         * A description of a triggering event. Triggering events can be named events, data events, or periodic, as determined by the type element.
823         */
824        TRIGGERDEFINITION, 
825        /**
826         * Specifies clinical/business/etc. metadata that can be used to retrieve, index and/or categorize an artifact. This metadata can either be specific to the applicable population (e.g., age category, DRG) or the specific context of care (e.g., venue, care setting, provider of care).
827         */
828        USAGECONTEXT, 
829        /**
830         * A stream of bytes
831         */
832        BASE64BINARY, 
833        /**
834         * Value of \"true\" or \"false\"
835         */
836        BOOLEAN, 
837        /**
838         * A URI that is a reference to a canonical URL on a FHIR resource
839         */
840        CANONICAL, 
841        /**
842         * A string which has at least one character and no leading or trailing whitespace and where there is no whitespace other than single spaces in the contents
843         */
844        CODE, 
845        /**
846         * A date or partial date (e.g. just year or year + month). There is no time zone. The format is a union of the schema types gYear, gYearMonth and date.  Dates SHALL be valid dates.
847         */
848        DATE, 
849        /**
850         * A date, date-time or partial date (e.g. just year or year + month).  If hours and minutes are specified, a time zone SHALL be populated. The format is a union of the schema types gYear, gYearMonth, date and dateTime. Seconds must be provided due to schema type constraints but may be zero-filled and may be ignored.                 Dates SHALL be valid dates.
851         */
852        DATETIME, 
853        /**
854         * A rational number with implicit precision
855         */
856        DECIMAL, 
857        /**
858         * Any combination of letters, numerals, \"-\" and \".\", with a length limit of 64 characters.  (This might be an integer, an unprefixed OID, UUID or any other identifier pattern that meets these constraints.)  Ids are case-insensitive.
859         */
860        ID, 
861        /**
862         * An instant in time - known at least to the second
863         */
864        INSTANT, 
865        /**
866         * A whole number
867         */
868        INTEGER, 
869        /**
870         * A string that may contain Github Flavored Markdown syntax for optional processing by a mark down presentation engine
871         */
872        MARKDOWN, 
873        /**
874         * An OID represented as a URI
875         */
876        OID, 
877        /**
878         * An integer with a value that is positive (e.g. >0)
879         */
880        POSITIVEINT, 
881        /**
882         * A sequence of Unicode characters
883         */
884        STRING, 
885        /**
886         * A time during the day, with no date specified
887         */
888        TIME, 
889        /**
890         * An integer with a value that is not negative (e.g. >= 0)
891         */
892        UNSIGNEDINT, 
893        /**
894         * String of characters used to identify a name or a resource
895         */
896        URI, 
897        /**
898         * A URI that is a literal reference
899         */
900        URL, 
901        /**
902         * A UUID, represented as a URI
903         */
904        UUID, 
905        /**
906         * XHTML format, as defined by W3C, but restricted usage (mainly, no active content)
907         */
908        XHTML, 
909        /**
910         * --- Abstract Type! ---This is the base resource type for everything.
911         */
912        RESOURCE, 
913        /**
914         * A resource that represents the data of a single raw artifact as digital content accessible in its native format.  A Binary resource can contain any content, whether text, image, pdf, zip archive, etc.
915         */
916        BINARY, 
917        /**
918         * A container for a collection of resources.
919         */
920        BUNDLE, 
921        /**
922         * --- Abstract Type! ---A resource that includes narrative, extensions, and contained resources.
923         */
924        DOMAINRESOURCE, 
925        /**
926         * A financial tool for tracking value accrued for a particular purpose.  In the healthcare field, used to track charges for a patient, cost centers, etc.
927         */
928        ACCOUNT, 
929        /**
930         * This resource allows for the definition of some activity to be performed, independent of a particular patient, practitioner, or other performance context.
931         */
932        ACTIVITYDEFINITION, 
933        /**
934         * A medicinal product in the final form which is suitable for administering to a patient (after any mixing of multiple components, dissolution etc. has been performed).
935         */
936        ADMINISTRABLEPRODUCTDEFINITION, 
937        /**
938         * Actual or  potential/avoided event causing unintended physical injury resulting from or contributed to by medical care, a research study or other healthcare setting factors that requires additional monitoring, treatment, or hospitalization, or that results in death.
939         */
940        ADVERSEEVENT, 
941        /**
942         * Risk of harmful or undesirable, physiological response which is unique to an individual and associated with exposure to a substance.
943         */
944        ALLERGYINTOLERANCE, 
945        /**
946         * A booking of a healthcare event among patient(s), practitioner(s), related person(s) and/or device(s) for a specific date/time. This may result in one or more Encounter(s).
947         */
948        APPOINTMENT, 
949        /**
950         * A reply to an appointment request for a patient and/or practitioner(s), such as a confirmation or rejection.
951         */
952        APPOINTMENTRESPONSE, 
953        /**
954         * A record of an event made for purposes of maintaining a security log. Typical uses include detection of intrusion attempts and monitoring for inappropriate usage.
955         */
956        AUDITEVENT, 
957        /**
958         * Basic is used for handling concepts not yet defined in FHIR, narrative-only resources that don't map to an existing resource, and custom resources not appropriate for inclusion in the FHIR specification.
959         */
960        BASIC, 
961        /**
962         * A material substance originating from a biological entity intended to be transplanted or infused\ninto another (possibly the same) biological entity.
963         */
964        BIOLOGICALLYDERIVEDPRODUCT, 
965        /**
966         * Record details about an anatomical structure.  This resource may be used when a coded concept does not provide the necessary detail needed for the use case.
967         */
968        BODYSTRUCTURE, 
969        /**
970         * A Capability Statement documents a set of capabilities (behaviors) of a FHIR Server for a particular version of FHIR that may be used as a statement of actual server functionality or a statement of required or desired server implementation.
971         */
972        CAPABILITYSTATEMENT, 
973        /**
974         * Describes the intention of how one or more practitioners intend to deliver care for a particular patient, group or community for a period of time, possibly limited to care for a specific condition or set of conditions.
975         */
976        CAREPLAN, 
977        /**
978         * The Care Team includes all the people and organizations who plan to participate in the coordination and delivery of care for a patient.
979         */
980        CARETEAM, 
981        /**
982         * Catalog entries are wrappers that contextualize items included in a catalog.
983         */
984        CATALOGENTRY, 
985        /**
986         * The resource ChargeItem describes the provision of healthcare provider products for a certain patient, therefore referring not only to the product, but containing in addition details of the provision, like date, time, amounts and participating organizations and persons. Main Usage of the ChargeItem is to enable the billing process and internal cost allocation.
987         */
988        CHARGEITEM, 
989        /**
990         * The ChargeItemDefinition resource provides the properties that apply to the (billing) codes necessary to calculate costs and prices. The properties may differ largely depending on type and realm, therefore this resource gives only a rough structure and requires profiling for each type of billing code system.
991         */
992        CHARGEITEMDEFINITION, 
993        /**
994         * The Citation Resource enables reference to any knowledge artifact for purposes of identification and attribution. The Citation Resource supports existing reference structures and developing publication practices such as versioning, expressing complex contributorship roles, and referencing computable resources.
995         */
996        CITATION, 
997        /**
998         * A provider issued list of professional services and products which have been provided, or are to be provided, to a patient which is sent to an insurer for reimbursement.
999         */
1000        CLAIM, 
1001        /**
1002         * This resource provides the adjudication details from the processing of a Claim resource.
1003         */
1004        CLAIMRESPONSE, 
1005        /**
1006         * A record of a clinical assessment performed to determine what problem(s) may affect the patient and before planning the treatments or management strategies that are best to manage a patient's condition. Assessments are often 1:1 with a clinical consultation / encounter,  but this varies greatly depending on the clinical workflow. This resource is called \"ClinicalImpression\" rather than \"ClinicalAssessment\" to avoid confusion with the recording of assessment tools such as Apgar score.
1007         */
1008        CLINICALIMPRESSION, 
1009        /**
1010         * A single issue - either an indication, contraindication, interaction or an undesirable effect for a medicinal product, medication, device or procedure.
1011         */
1012        CLINICALUSEDEFINITION, 
1013        /**
1014         * The CodeSystem resource is used to declare the existence of and describe a code system or code system supplement and its key properties, and optionally define a part or all of its content.
1015         */
1016        CODESYSTEM, 
1017        /**
1018         * An occurrence of information being transmitted; e.g. an alert that was sent to a responsible provider, a public health agency that was notified about a reportable condition.
1019         */
1020        COMMUNICATION, 
1021        /**
1022         * A request to convey information; e.g. the CDS system proposes that an alert be sent to a responsible provider, the CDS system proposes that the public health agency be notified about a reportable condition.
1023         */
1024        COMMUNICATIONREQUEST, 
1025        /**
1026         * A compartment definition that defines how resources are accessed on a server.
1027         */
1028        COMPARTMENTDEFINITION, 
1029        /**
1030         * A set of healthcare-related information that is assembled together into a single logical package that provides a single coherent statement of meaning, establishes its own context and that has clinical attestation with regard to who is making the statement. A Composition defines the structure and narrative content necessary for a document. However, a Composition alone does not constitute a document. Rather, the Composition must be the first entry in a Bundle where Bundle.type=document, and any other resources referenced from Composition must be included as subsequent entries in the Bundle (for example Patient, Practitioner, Encounter, etc.).
1031         */
1032        COMPOSITION, 
1033        /**
1034         * A statement of relationships from one set of concepts to one or more other concepts - either concepts in code systems, or data element/data element concepts, or classes in class models.
1035         */
1036        CONCEPTMAP, 
1037        /**
1038         * A clinical condition, problem, diagnosis, or other event, situation, issue, or clinical concept that has risen to a level of concern.
1039         */
1040        CONDITION, 
1041        /**
1042         * A record of a healthcare consumer’s  choices, which permits or denies identified recipient(s) or recipient role(s) to perform one or more actions within a given policy context, for specific purposes and periods of time.
1043         */
1044        CONSENT, 
1045        /**
1046         * Legally enforceable, formally recorded unilateral or bilateral directive i.e., a policy or agreement.
1047         */
1048        CONTRACT, 
1049        /**
1050         * Financial instrument which may be used to reimburse or pay for health care products and services. Includes both insurance and self-payment.
1051         */
1052        COVERAGE, 
1053        /**
1054         * The CoverageEligibilityRequest provides patient and insurance coverage information to an insurer for them to respond, in the form of an CoverageEligibilityResponse, with information regarding whether the stated coverage is valid and in-force and optionally to provide the insurance details of the policy.
1055         */
1056        COVERAGEELIGIBILITYREQUEST, 
1057        /**
1058         * This resource provides eligibility and plan details from the processing of an CoverageEligibilityRequest resource.
1059         */
1060        COVERAGEELIGIBILITYRESPONSE, 
1061        /**
1062         * Indicates an actual or potential clinical issue with or between one or more active or proposed clinical actions for a patient; e.g. Drug-drug interaction, Ineffective treatment frequency, Procedure-condition conflict, etc.
1063         */
1064        DETECTEDISSUE, 
1065        /**
1066         * A type of a manufactured item that is used in the provision of healthcare without being substantially changed through that activity. The device may be a medical or non-medical device.
1067         */
1068        DEVICE, 
1069        /**
1070         * The characteristics, operational status and capabilities of a medical-related component of a medical device.
1071         */
1072        DEVICEDEFINITION, 
1073        /**
1074         * Describes a measurement, calculation or setting capability of a medical device.
1075         */
1076        DEVICEMETRIC, 
1077        /**
1078         * Represents a request for a patient to employ a medical device. The device may be an implantable device, or an external assistive device, such as a walker.
1079         */
1080        DEVICEREQUEST, 
1081        /**
1082         * A record of a device being used by a patient where the record is the result of a report from the patient or another clinician.
1083         */
1084        DEVICEUSESTATEMENT, 
1085        /**
1086         * The findings and interpretation of diagnostic  tests performed on patients, groups of patients, devices, and locations, and/or specimens derived from these. The report includes clinical context such as requesting and provider information, and some mix of atomic results, images, textual and coded interpretations, and formatted representation of diagnostic reports.
1087         */
1088        DIAGNOSTICREPORT, 
1089        /**
1090         * A collection of documents compiled for a purpose together with metadata that applies to the collection.
1091         */
1092        DOCUMENTMANIFEST, 
1093        /**
1094         * A reference to a document of any kind for any purpose. Provides metadata about the document so that the document can be discovered and managed. The scope of a document is any seralized object with a mime-type, so includes formal patient centric documents (CDA), cliical notes, scanned paper, and non-patient specific documents like policy text.
1095         */
1096        DOCUMENTREFERENCE, 
1097        /**
1098         * An interaction between a patient and healthcare provider(s) for the purpose of providing healthcare service(s) or assessing the health status of a patient.
1099         */
1100        ENCOUNTER, 
1101        /**
1102         * The technical details of an endpoint that can be used for electronic services, such as for web services providing XDS.b or a REST endpoint for another FHIR server. This may include any security context information.
1103         */
1104        ENDPOINT, 
1105        /**
1106         * This resource provides the insurance enrollment details to the insurer regarding a specified coverage.
1107         */
1108        ENROLLMENTREQUEST, 
1109        /**
1110         * This resource provides enrollment and plan details from the processing of an EnrollmentRequest resource.
1111         */
1112        ENROLLMENTRESPONSE, 
1113        /**
1114         * An association between a patient and an organization / healthcare provider(s) during which time encounters may occur. The managing organization assumes a level of responsibility for the patient during this time.
1115         */
1116        EPISODEOFCARE, 
1117        /**
1118         * The EventDefinition resource provides a reusable description of when a particular event can occur.
1119         */
1120        EVENTDEFINITION, 
1121        /**
1122         * The Evidence Resource provides a machine-interpretable expression of an evidence concept including the evidence variables (eg population, exposures/interventions, comparators, outcomes, measured variables, confounding variables), the statistics, and the certainty of this evidence.
1123         */
1124        EVIDENCE, 
1125        /**
1126         * The EvidenceReport Resource is a specialized container for a collection of resources and codable concepts, adapted to support compositions of Evidence, EvidenceVariable, and Citation resources and related concepts.
1127         */
1128        EVIDENCEREPORT, 
1129        /**
1130         * The EvidenceVariable resource describes an element that knowledge (Evidence) is about.
1131         */
1132        EVIDENCEVARIABLE, 
1133        /**
1134         * Example of workflow instance.
1135         */
1136        EXAMPLESCENARIO, 
1137        /**
1138         * This resource provides: the claim details; adjudication details from the processing of a Claim; and optionally account balance information, for informing the subscriber of the benefits provided.
1139         */
1140        EXPLANATIONOFBENEFIT, 
1141        /**
1142         * Significant health conditions for a person related to the patient relevant in the context of care for the patient.
1143         */
1144        FAMILYMEMBERHISTORY, 
1145        /**
1146         * Prospective warnings of potential issues when providing care to the patient.
1147         */
1148        FLAG, 
1149        /**
1150         * Describes the intended objective(s) for a patient, group or organization care, for example, weight loss, restoring an activity of daily living, obtaining herd immunity via immunization, meeting a process improvement objective, etc.
1151         */
1152        GOAL, 
1153        /**
1154         * A formal computable definition of a graph of resources - that is, a coherent set of resources that form a graph by following references. The Graph Definition resource defines a set and makes rules about the set.
1155         */
1156        GRAPHDEFINITION, 
1157        /**
1158         * Represents a defined collection of entities that may be discussed or acted upon collectively but which are not expected to act collectively, and are not formally or legally recognized; i.e. a collection of entities that isn't an Organization.
1159         */
1160        GROUP, 
1161        /**
1162         * A guidance response is the formal response to a guidance request, including any output parameters returned by the evaluation, as well as the description of any proposed actions to be taken.
1163         */
1164        GUIDANCERESPONSE, 
1165        /**
1166         * The details of a healthcare service available at a location.
1167         */
1168        HEALTHCARESERVICE, 
1169        /**
1170         * Representation of the content produced in a DICOM imaging study. A study comprises a set of series, each of which includes a set of Service-Object Pair Instances (SOP Instances - images or other data) acquired or produced in a common context.  A series is of only one modality (e.g. X-ray, CT, MR, ultrasound), but a study may have multiple series of different modalities.
1171         */
1172        IMAGINGSTUDY, 
1173        /**
1174         * Describes the event of a patient being administered a vaccine or a record of an immunization as reported by a patient, a clinician or another party.
1175         */
1176        IMMUNIZATION, 
1177        /**
1178         * Describes a comparison of an immunization event against published recommendations to determine if the administration is \"valid\" in relation to those  recommendations.
1179         */
1180        IMMUNIZATIONEVALUATION, 
1181        /**
1182         * A patient's point-in-time set of recommendations (i.e. forecasting) according to a published schedule with optional supporting justification.
1183         */
1184        IMMUNIZATIONRECOMMENDATION, 
1185        /**
1186         * A set of rules of how a particular interoperability or standards problem is solved - typically through the use of FHIR resources. This resource is used to gather all the parts of an implementation guide into a logical whole and to publish a computable definition of all the parts.
1187         */
1188        IMPLEMENTATIONGUIDE, 
1189        /**
1190         * An ingredient of a manufactured item or pharmaceutical product.
1191         */
1192        INGREDIENT, 
1193        /**
1194         * Details of a Health Insurance product/plan provided by an organization.
1195         */
1196        INSURANCEPLAN, 
1197        /**
1198         * Invoice containing collected ChargeItems from an Account with calculated individual and total price for Billing purpose.
1199         */
1200        INVOICE, 
1201        /**
1202         * The Library resource is a general-purpose container for knowledge asset definitions. It can be used to describe and expose existing knowledge assets such as logic libraries and information model descriptions, as well as to describe a collection of knowledge assets.
1203         */
1204        LIBRARY, 
1205        /**
1206         * Identifies two or more records (resource instances) that refer to the same real-world \"occurrence\".
1207         */
1208        LINKAGE, 
1209        /**
1210         * A list is a curated collection of resources.
1211         */
1212        LIST, 
1213        /**
1214         * Details and position information for a physical place where services are provided and resources and participants may be stored, found, contained, or accommodated.
1215         */
1216        LOCATION, 
1217        /**
1218         * The definition and characteristics of a medicinal manufactured item, such as a tablet or capsule, as contained in a packaged medicinal product.
1219         */
1220        MANUFACTUREDITEMDEFINITION, 
1221        /**
1222         * The Measure resource provides the definition of a quality measure.
1223         */
1224        MEASURE, 
1225        /**
1226         * The MeasureReport resource contains the results of the calculation of a measure; and optionally a reference to the resources involved in that calculation.
1227         */
1228        MEASUREREPORT, 
1229        /**
1230         * A photo, video, or audio recording acquired or used in healthcare. The actual content may be inline or provided by direct reference.
1231         */
1232        MEDIA, 
1233        /**
1234         * This resource is primarily used for the identification and definition of a medication for the purposes of prescribing, dispensing, and administering a medication as well as for making statements about medication use.
1235         */
1236        MEDICATION, 
1237        /**
1238         * Describes the event of a patient consuming or otherwise being administered a medication.  This may be as simple as swallowing a tablet or it may be a long running infusion.  Related resources tie this event to the authorizing prescription, and the specific encounter between patient and health care practitioner.
1239         */
1240        MEDICATIONADMINISTRATION, 
1241        /**
1242         * Indicates that a medication product is to be or has been dispensed for a named person/patient.  This includes a description of the medication product (supply) provided and the instructions for administering the medication.  The medication dispense is the result of a pharmacy system responding to a medication order.
1243         */
1244        MEDICATIONDISPENSE, 
1245        /**
1246         * Information about a medication that is used to support knowledge.
1247         */
1248        MEDICATIONKNOWLEDGE, 
1249        /**
1250         * An order or request for both supply of the medication and the instructions for administration of the medication to a patient. The resource is called \"MedicationRequest\" rather than \"MedicationPrescription\" or \"MedicationOrder\" to generalize the use across inpatient and outpatient settings, including care plans, etc., and to harmonize with workflow patterns.
1251         */
1252        MEDICATIONREQUEST, 
1253        /**
1254         * A record of a medication that is being consumed by a patient.   A MedicationStatement may indicate that the patient may be taking the medication now or has taken the medication in the past or will be taking the medication in the future.  The source of this information can be the patient, significant other (such as a family member or spouse), or a clinician.  A common scenario where this information is captured is during the history taking process during a patient visit or stay.   The medication information may come from sources such as the patient's memory, from a prescription bottle,  or from a list of medications the patient, clinician or other party maintains. \n\nThe primary difference between a medication statement and a medication administration is that the medication administration has complete administration information and is based on actual administration information from the person who administered the medication.  A medication statement is often, if not always, less specific.  There is no required date/time when the medication was administered, in fact we only know that a source has reported the patient is taking this medication, where details such as time, quantity, or rate or even medication product may be incomplete or missing or less precise.  As stated earlier, the medication statement information may come from the patient's memory, from a prescription bottle or from a list of medications the patient, clinician or other party maintains.  Medication administration is more formal and is not missing detailed information.
1255         */
1256        MEDICATIONSTATEMENT, 
1257        /**
1258         * Detailed definition of a medicinal product, typically for uses other than direct patient care (e.g. regulatory use, drug catalogs).
1259         */
1260        MEDICINALPRODUCTDEFINITION, 
1261        /**
1262         * Defines the characteristics of a message that can be shared between systems, including the type of event that initiates the message, the content to be transmitted and what response(s), if any, are permitted.
1263         */
1264        MESSAGEDEFINITION, 
1265        /**
1266         * The header for a message exchange that is either requesting or responding to an action.  The reference(s) that are the subject of the action as well as other information related to the action are typically transmitted in a bundle in which the MessageHeader resource instance is the first resource in the bundle.
1267         */
1268        MESSAGEHEADER, 
1269        /**
1270         * Raw data describing a biological sequence.
1271         */
1272        MOLECULARSEQUENCE, 
1273        /**
1274         * A curated namespace that issues unique symbols within that namespace for the identification of concepts, people, devices, etc.  Represents a \"System\" used within the Identifier and Coding data types.
1275         */
1276        NAMINGSYSTEM, 
1277        /**
1278         * A request to supply a diet, formula feeding (enteral) or oral nutritional supplement to a patient/resident.
1279         */
1280        NUTRITIONORDER, 
1281        /**
1282         * A food or fluid product that is consumed by patients.
1283         */
1284        NUTRITIONPRODUCT, 
1285        /**
1286         * Measurements and simple assertions made about a patient, device or other subject.
1287         */
1288        OBSERVATION, 
1289        /**
1290         * Set of definitional characteristics for a kind of observation or measurement produced or consumed by an orderable health care service.
1291         */
1292        OBSERVATIONDEFINITION, 
1293        /**
1294         * A formal computable definition of an operation (on the RESTful interface) or a named query (using the search interaction).
1295         */
1296        OPERATIONDEFINITION, 
1297        /**
1298         * A collection of error, warning, or information messages that result from a system action.
1299         */
1300        OPERATIONOUTCOME, 
1301        /**
1302         * A formally or informally recognized grouping of people or organizations formed for the purpose of achieving some form of collective action.  Includes companies, institutions, corporations, departments, community groups, healthcare practice groups, payer/insurer, etc.
1303         */
1304        ORGANIZATION, 
1305        /**
1306         * Defines an affiliation/assotiation/relationship between 2 distinct oganizations, that is not a part-of relationship/sub-division relationship.
1307         */
1308        ORGANIZATIONAFFILIATION, 
1309        /**
1310         * A medically related item or items, in a container or package.
1311         */
1312        PACKAGEDPRODUCTDEFINITION, 
1313        /**
1314         * Demographics and other administrative information about an individual or animal receiving care or other health-related services.
1315         */
1316        PATIENT, 
1317        /**
1318         * This resource provides the status of the payment for goods and services rendered, and the request and response resource references.
1319         */
1320        PAYMENTNOTICE, 
1321        /**
1322         * This resource provides the details including amount of a payment and allocates the payment items being paid.
1323         */
1324        PAYMENTRECONCILIATION, 
1325        /**
1326         * Demographics and administrative information about a person independent of a specific health-related context.
1327         */
1328        PERSON, 
1329        /**
1330         * This resource allows for the definition of various types of plans as a sharable, consumable, and executable artifact. The resource is general enough to support the description of a broad range of clinical and non-clinical artifacts such as clinical decision support rules, order sets, protocols, and drug quality specifications.
1331         */
1332        PLANDEFINITION, 
1333        /**
1334         * A person who is directly or indirectly involved in the provisioning of healthcare.
1335         */
1336        PRACTITIONER, 
1337        /**
1338         * A specific set of Roles/Locations/specialties/services that a practitioner may perform at an organization for a period of time.
1339         */
1340        PRACTITIONERROLE, 
1341        /**
1342         * An action that is or was performed on or for a patient. This can be a physical intervention like an operation, or less invasive like long term services, counseling, or hypnotherapy.
1343         */
1344        PROCEDURE, 
1345        /**
1346         * Provenance of a resource is a record that describes entities and processes involved in producing and delivering or otherwise influencing that resource. Provenance provides a critical foundation for assessing authenticity, enabling trust, and allowing reproducibility. Provenance assertions are a form of contextual metadata and can themselves become important records with their own provenance. Provenance statement indicates clinical significance in terms of confidence in authenticity, reliability, and trustworthiness, integrity, and stage in lifecycle (e.g. Document Completion - has the artifact been legally authenticated), all of which may impact security, privacy, and trust policies.
1347         */
1348        PROVENANCE, 
1349        /**
1350         * A structured set of questions intended to guide the collection of answers from end-users. Questionnaires provide detailed control over order, presentation, phraseology and grouping to allow coherent, consistent data collection.
1351         */
1352        QUESTIONNAIRE, 
1353        /**
1354         * A structured set of questions and their answers. The questions are ordered and grouped into coherent subsets, corresponding to the structure of the grouping of the questionnaire being responded to.
1355         */
1356        QUESTIONNAIRERESPONSE, 
1357        /**
1358         * Regulatory approval, clearance or licencing related to a regulated product, treatment, facility or activity that is cited in a guidance, regulation, rule or legislative act. An example is Market Authorization relating to a Medicinal Product.
1359         */
1360        REGULATEDAUTHORIZATION, 
1361        /**
1362         * Information about a person that is involved in the care for a patient, but who is not the target of healthcare, nor has a formal responsibility in the care process.
1363         */
1364        RELATEDPERSON, 
1365        /**
1366         * A group of related requests that can be used to capture intended activities that have inter-dependencies such as \"give this medication after that one\".
1367         */
1368        REQUESTGROUP, 
1369        /**
1370         * The ResearchDefinition resource describes the conditional state (population and any exposures being compared within the population) and outcome (if specified) that the knowledge (evidence, assertion, recommendation) is about.
1371         */
1372        RESEARCHDEFINITION, 
1373        /**
1374         * The ResearchElementDefinition resource describes a \"PICO\" element that knowledge (evidence, assertion, recommendation) is about.
1375         */
1376        RESEARCHELEMENTDEFINITION, 
1377        /**
1378         * A process where a researcher or organization plans and then executes a series of steps intended to increase the field of healthcare-related knowledge.  This includes studies of safety, efficacy, comparative effectiveness and other information about medications, devices, therapies and other interventional and investigative techniques.  A ResearchStudy involves the gathering of information about human or animal subjects.
1379         */
1380        RESEARCHSTUDY, 
1381        /**
1382         * A physical entity which is the primary unit of operational and/or administrative interest in a study.
1383         */
1384        RESEARCHSUBJECT, 
1385        /**
1386         * An assessment of the likely outcome(s) for a patient or other subject as well as the likelihood of each outcome.
1387         */
1388        RISKASSESSMENT, 
1389        /**
1390         * A container for slots of time that may be available for booking appointments.
1391         */
1392        SCHEDULE, 
1393        /**
1394         * A search parameter that defines a named search item that can be used to search/filter on a resource.
1395         */
1396        SEARCHPARAMETER, 
1397        /**
1398         * A record of a request for service such as diagnostic investigations, treatments, or operations to be performed.
1399         */
1400        SERVICEREQUEST, 
1401        /**
1402         * A slot of time on a schedule that may be available for booking appointments.
1403         */
1404        SLOT, 
1405        /**
1406         * A sample to be used for analysis.
1407         */
1408        SPECIMEN, 
1409        /**
1410         * A kind of specimen with associated set of requirements.
1411         */
1412        SPECIMENDEFINITION, 
1413        /**
1414         * A definition of a FHIR structure. This resource is used to describe the underlying resources, data types defined in FHIR, and also for describing extensions and constraints on resources and data types.
1415         */
1416        STRUCTUREDEFINITION, 
1417        /**
1418         * A Map of relationships between 2 structures that can be used to transform data.
1419         */
1420        STRUCTUREMAP, 
1421        /**
1422         * The subscription resource is used to define a push-based subscription from a server to another system. Once a subscription is registered with the server, the server checks every resource that is created or updated, and if the resource matches the given criteria, it sends a message on the defined \"channel\" so that another system can take an appropriate action.
1423         */
1424        SUBSCRIPTION, 
1425        /**
1426         * The SubscriptionStatus resource describes the state of a Subscription during notifications.
1427         */
1428        SUBSCRIPTIONSTATUS, 
1429        /**
1430         * Describes a stream of resource state changes identified by trigger criteria and annotated with labels useful to filter projections from this topic.
1431         */
1432        SUBSCRIPTIONTOPIC, 
1433        /**
1434         * A homogeneous material with a definite composition.
1435         */
1436        SUBSTANCE, 
1437        /**
1438         * The detailed description of a substance, typically at a level beyond what is used for prescribing.
1439         */
1440        SUBSTANCEDEFINITION, 
1441        /**
1442         * Record of delivery of what is supplied.
1443         */
1444        SUPPLYDELIVERY, 
1445        /**
1446         * A record of a request for a medication, substance or device used in the healthcare setting.
1447         */
1448        SUPPLYREQUEST, 
1449        /**
1450         * A task to be performed.
1451         */
1452        TASK, 
1453        /**
1454         * A TerminologyCapabilities resource documents a set of capabilities (behaviors) of a FHIR Terminology Server that may be used as a statement of actual server functionality or a statement of required or desired server implementation.
1455         */
1456        TERMINOLOGYCAPABILITIES, 
1457        /**
1458         * A summary of information based on the results of executing a TestScript.
1459         */
1460        TESTREPORT, 
1461        /**
1462         * A structured set of tests against a FHIR server or client implementation to determine compliance against the FHIR specification.
1463         */
1464        TESTSCRIPT, 
1465        /**
1466         * A ValueSet resource instance specifies a set of codes drawn from one or more code systems, intended for use in a particular context. Value sets link between [[[CodeSystem]]] definitions and their use in [coded elements](terminologies.html).
1467         */
1468        VALUESET, 
1469        /**
1470         * Describes validation requirements, source(s), status and dates for one or more elements.
1471         */
1472        VERIFICATIONRESULT, 
1473        /**
1474         * An authorization for the provision of glasses and/or contact lenses to a patient.
1475         */
1476        VISIONPRESCRIPTION, 
1477        /**
1478         * This resource is a non-persisted resource used to pass information into and back from an [operation](operations.html). It has no other use, and there is no RESTful endpoint associated with it.
1479         */
1480        PARAMETERS, 
1481        /**
1482         * added to help the parsers with the generic types
1483         */
1484        NULL;
1485        public static FHIRDefinedType fromCode(String codeString) throws FHIRException {
1486            if (codeString == null || "".equals(codeString))
1487                return null;
1488        if ("Address".equals(codeString))
1489          return ADDRESS;
1490        if ("Age".equals(codeString))
1491          return AGE;
1492        if ("Annotation".equals(codeString))
1493          return ANNOTATION;
1494        if ("Attachment".equals(codeString))
1495          return ATTACHMENT;
1496        if ("BackboneElement".equals(codeString))
1497          return BACKBONEELEMENT;
1498        if ("CodeableConcept".equals(codeString))
1499          return CODEABLECONCEPT;
1500        if ("CodeableReference".equals(codeString))
1501          return CODEABLEREFERENCE;
1502        if ("Coding".equals(codeString))
1503          return CODING;
1504        if ("ContactDetail".equals(codeString))
1505          return CONTACTDETAIL;
1506        if ("ContactPoint".equals(codeString))
1507          return CONTACTPOINT;
1508        if ("Contributor".equals(codeString))
1509          return CONTRIBUTOR;
1510        if ("Count".equals(codeString))
1511          return COUNT;
1512        if ("DataRequirement".equals(codeString))
1513          return DATAREQUIREMENT;
1514        if ("DataType".equals(codeString))
1515          return DATATYPE;
1516        if ("Distance".equals(codeString))
1517          return DISTANCE;
1518        if ("Dosage".equals(codeString))
1519          return DOSAGE;
1520        if ("Duration".equals(codeString))
1521          return DURATION;
1522        if ("Element".equals(codeString))
1523          return ELEMENT;
1524        if ("ElementDefinition".equals(codeString))
1525          return ELEMENTDEFINITION;
1526        if ("Expression".equals(codeString))
1527          return EXPRESSION;
1528        if ("Extension".equals(codeString))
1529          return EXTENSION;
1530        if ("HumanName".equals(codeString))
1531          return HUMANNAME;
1532        if ("Identifier".equals(codeString))
1533          return IDENTIFIER;
1534        if ("MarketingStatus".equals(codeString))
1535          return MARKETINGSTATUS;
1536        if ("Meta".equals(codeString))
1537          return META;
1538        if ("Money".equals(codeString))
1539          return MONEY;
1540        if ("MoneyQuantity".equals(codeString))
1541          return MONEYQUANTITY;
1542        if ("Narrative".equals(codeString))
1543          return NARRATIVE;
1544        if ("ParameterDefinition".equals(codeString))
1545          return PARAMETERDEFINITION;
1546        if ("Period".equals(codeString))
1547          return PERIOD;
1548        if ("Population".equals(codeString))
1549          return POPULATION;
1550        if ("ProdCharacteristic".equals(codeString))
1551          return PRODCHARACTERISTIC;
1552        if ("ProductShelfLife".equals(codeString))
1553          return PRODUCTSHELFLIFE;
1554        if ("Quantity".equals(codeString))
1555          return QUANTITY;
1556        if ("Range".equals(codeString))
1557          return RANGE;
1558        if ("Ratio".equals(codeString))
1559          return RATIO;
1560        if ("RatioRange".equals(codeString))
1561          return RATIORANGE;
1562        if ("Reference".equals(codeString))
1563          return REFERENCE;
1564        if ("RelatedArtifact".equals(codeString))
1565          return RELATEDARTIFACT;
1566        if ("SampledData".equals(codeString))
1567          return SAMPLEDDATA;
1568        if ("Signature".equals(codeString))
1569          return SIGNATURE;
1570        if ("SimpleQuantity".equals(codeString))
1571          return SIMPLEQUANTITY;
1572        if ("Timing".equals(codeString))
1573          return TIMING;
1574        if ("TriggerDefinition".equals(codeString))
1575          return TRIGGERDEFINITION;
1576        if ("UsageContext".equals(codeString))
1577          return USAGECONTEXT;
1578        if ("base64Binary".equals(codeString))
1579          return BASE64BINARY;
1580        if ("boolean".equals(codeString))
1581          return BOOLEAN;
1582        if ("canonical".equals(codeString))
1583          return CANONICAL;
1584        if ("code".equals(codeString))
1585          return CODE;
1586        if ("date".equals(codeString))
1587          return DATE;
1588        if ("dateTime".equals(codeString))
1589          return DATETIME;
1590        if ("decimal".equals(codeString))
1591          return DECIMAL;
1592        if ("id".equals(codeString))
1593          return ID;
1594        if ("instant".equals(codeString))
1595          return INSTANT;
1596        if ("integer".equals(codeString))
1597          return INTEGER;
1598        if ("markdown".equals(codeString))
1599          return MARKDOWN;
1600        if ("oid".equals(codeString))
1601          return OID;
1602        if ("positiveInt".equals(codeString))
1603          return POSITIVEINT;
1604        if ("string".equals(codeString))
1605          return STRING;
1606        if ("time".equals(codeString))
1607          return TIME;
1608        if ("unsignedInt".equals(codeString))
1609          return UNSIGNEDINT;
1610        if ("uri".equals(codeString))
1611          return URI;
1612        if ("url".equals(codeString))
1613          return URL;
1614        if ("uuid".equals(codeString))
1615          return UUID;
1616        if ("xhtml".equals(codeString))
1617          return XHTML;
1618        if ("Resource".equals(codeString))
1619          return RESOURCE;
1620        if ("Binary".equals(codeString))
1621          return BINARY;
1622        if ("Bundle".equals(codeString))
1623          return BUNDLE;
1624        if ("DomainResource".equals(codeString))
1625          return DOMAINRESOURCE;
1626        if ("Account".equals(codeString))
1627          return ACCOUNT;
1628        if ("ActivityDefinition".equals(codeString))
1629          return ACTIVITYDEFINITION;
1630        if ("AdministrableProductDefinition".equals(codeString))
1631          return ADMINISTRABLEPRODUCTDEFINITION;
1632        if ("AdverseEvent".equals(codeString))
1633          return ADVERSEEVENT;
1634        if ("AllergyIntolerance".equals(codeString))
1635          return ALLERGYINTOLERANCE;
1636        if ("Appointment".equals(codeString))
1637          return APPOINTMENT;
1638        if ("AppointmentResponse".equals(codeString))
1639          return APPOINTMENTRESPONSE;
1640        if ("AuditEvent".equals(codeString))
1641          return AUDITEVENT;
1642        if ("Basic".equals(codeString))
1643          return BASIC;
1644        if ("BiologicallyDerivedProduct".equals(codeString))
1645          return BIOLOGICALLYDERIVEDPRODUCT;
1646        if ("BodyStructure".equals(codeString))
1647          return BODYSTRUCTURE;
1648        if ("CapabilityStatement".equals(codeString))
1649          return CAPABILITYSTATEMENT;
1650        if ("CarePlan".equals(codeString))
1651          return CAREPLAN;
1652        if ("CareTeam".equals(codeString))
1653          return CARETEAM;
1654        if ("CatalogEntry".equals(codeString))
1655          return CATALOGENTRY;
1656        if ("ChargeItem".equals(codeString))
1657          return CHARGEITEM;
1658        if ("ChargeItemDefinition".equals(codeString))
1659          return CHARGEITEMDEFINITION;
1660        if ("Citation".equals(codeString))
1661          return CITATION;
1662        if ("Claim".equals(codeString))
1663          return CLAIM;
1664        if ("ClaimResponse".equals(codeString))
1665          return CLAIMRESPONSE;
1666        if ("ClinicalImpression".equals(codeString))
1667          return CLINICALIMPRESSION;
1668        if ("ClinicalUseDefinition".equals(codeString))
1669          return CLINICALUSEDEFINITION;
1670        if ("CodeSystem".equals(codeString))
1671          return CODESYSTEM;
1672        if ("Communication".equals(codeString))
1673          return COMMUNICATION;
1674        if ("CommunicationRequest".equals(codeString))
1675          return COMMUNICATIONREQUEST;
1676        if ("CompartmentDefinition".equals(codeString))
1677          return COMPARTMENTDEFINITION;
1678        if ("Composition".equals(codeString))
1679          return COMPOSITION;
1680        if ("ConceptMap".equals(codeString))
1681          return CONCEPTMAP;
1682        if ("Condition".equals(codeString))
1683          return CONDITION;
1684        if ("Consent".equals(codeString))
1685          return CONSENT;
1686        if ("Contract".equals(codeString))
1687          return CONTRACT;
1688        if ("Coverage".equals(codeString))
1689          return COVERAGE;
1690        if ("CoverageEligibilityRequest".equals(codeString))
1691          return COVERAGEELIGIBILITYREQUEST;
1692        if ("CoverageEligibilityResponse".equals(codeString))
1693          return COVERAGEELIGIBILITYRESPONSE;
1694        if ("DetectedIssue".equals(codeString))
1695          return DETECTEDISSUE;
1696        if ("Device".equals(codeString))
1697          return DEVICE;
1698        if ("DeviceDefinition".equals(codeString))
1699          return DEVICEDEFINITION;
1700        if ("DeviceMetric".equals(codeString))
1701          return DEVICEMETRIC;
1702        if ("DeviceRequest".equals(codeString))
1703          return DEVICEREQUEST;
1704        if ("DeviceUseStatement".equals(codeString))
1705          return DEVICEUSESTATEMENT;
1706        if ("DiagnosticReport".equals(codeString))
1707          return DIAGNOSTICREPORT;
1708        if ("DocumentManifest".equals(codeString))
1709          return DOCUMENTMANIFEST;
1710        if ("DocumentReference".equals(codeString))
1711          return DOCUMENTREFERENCE;
1712        if ("Encounter".equals(codeString))
1713          return ENCOUNTER;
1714        if ("Endpoint".equals(codeString))
1715          return ENDPOINT;
1716        if ("EnrollmentRequest".equals(codeString))
1717          return ENROLLMENTREQUEST;
1718        if ("EnrollmentResponse".equals(codeString))
1719          return ENROLLMENTRESPONSE;
1720        if ("EpisodeOfCare".equals(codeString))
1721          return EPISODEOFCARE;
1722        if ("EventDefinition".equals(codeString))
1723          return EVENTDEFINITION;
1724        if ("Evidence".equals(codeString))
1725          return EVIDENCE;
1726        if ("EvidenceReport".equals(codeString))
1727          return EVIDENCEREPORT;
1728        if ("EvidenceVariable".equals(codeString))
1729          return EVIDENCEVARIABLE;
1730        if ("ExampleScenario".equals(codeString))
1731          return EXAMPLESCENARIO;
1732        if ("ExplanationOfBenefit".equals(codeString))
1733          return EXPLANATIONOFBENEFIT;
1734        if ("FamilyMemberHistory".equals(codeString))
1735          return FAMILYMEMBERHISTORY;
1736        if ("Flag".equals(codeString))
1737          return FLAG;
1738        if ("Goal".equals(codeString))
1739          return GOAL;
1740        if ("GraphDefinition".equals(codeString))
1741          return GRAPHDEFINITION;
1742        if ("Group".equals(codeString))
1743          return GROUP;
1744        if ("GuidanceResponse".equals(codeString))
1745          return GUIDANCERESPONSE;
1746        if ("HealthcareService".equals(codeString))
1747          return HEALTHCARESERVICE;
1748        if ("ImagingStudy".equals(codeString))
1749          return IMAGINGSTUDY;
1750        if ("Immunization".equals(codeString))
1751          return IMMUNIZATION;
1752        if ("ImmunizationEvaluation".equals(codeString))
1753          return IMMUNIZATIONEVALUATION;
1754        if ("ImmunizationRecommendation".equals(codeString))
1755          return IMMUNIZATIONRECOMMENDATION;
1756        if ("ImplementationGuide".equals(codeString))
1757          return IMPLEMENTATIONGUIDE;
1758        if ("Ingredient".equals(codeString))
1759          return INGREDIENT;
1760        if ("InsurancePlan".equals(codeString))
1761          return INSURANCEPLAN;
1762        if ("Invoice".equals(codeString))
1763          return INVOICE;
1764        if ("Library".equals(codeString))
1765          return LIBRARY;
1766        if ("Linkage".equals(codeString))
1767          return LINKAGE;
1768        if ("List".equals(codeString))
1769          return LIST;
1770        if ("Location".equals(codeString))
1771          return LOCATION;
1772        if ("ManufacturedItemDefinition".equals(codeString))
1773          return MANUFACTUREDITEMDEFINITION;
1774        if ("Measure".equals(codeString))
1775          return MEASURE;
1776        if ("MeasureReport".equals(codeString))
1777          return MEASUREREPORT;
1778        if ("Media".equals(codeString))
1779          return MEDIA;
1780        if ("Medication".equals(codeString))
1781          return MEDICATION;
1782        if ("MedicationAdministration".equals(codeString))
1783          return MEDICATIONADMINISTRATION;
1784        if ("MedicationDispense".equals(codeString))
1785          return MEDICATIONDISPENSE;
1786        if ("MedicationKnowledge".equals(codeString))
1787          return MEDICATIONKNOWLEDGE;
1788        if ("MedicationRequest".equals(codeString))
1789          return MEDICATIONREQUEST;
1790        if ("MedicationStatement".equals(codeString))
1791          return MEDICATIONSTATEMENT;
1792        if ("MedicinalProductDefinition".equals(codeString))
1793          return MEDICINALPRODUCTDEFINITION;
1794        if ("MessageDefinition".equals(codeString))
1795          return MESSAGEDEFINITION;
1796        if ("MessageHeader".equals(codeString))
1797          return MESSAGEHEADER;
1798        if ("MolecularSequence".equals(codeString))
1799          return MOLECULARSEQUENCE;
1800        if ("NamingSystem".equals(codeString))
1801          return NAMINGSYSTEM;
1802        if ("NutritionOrder".equals(codeString))
1803          return NUTRITIONORDER;
1804        if ("NutritionProduct".equals(codeString))
1805          return NUTRITIONPRODUCT;
1806        if ("Observation".equals(codeString))
1807          return OBSERVATION;
1808        if ("ObservationDefinition".equals(codeString))
1809          return OBSERVATIONDEFINITION;
1810        if ("OperationDefinition".equals(codeString))
1811          return OPERATIONDEFINITION;
1812        if ("OperationOutcome".equals(codeString))
1813          return OPERATIONOUTCOME;
1814        if ("Organization".equals(codeString))
1815          return ORGANIZATION;
1816        if ("OrganizationAffiliation".equals(codeString))
1817          return ORGANIZATIONAFFILIATION;
1818        if ("PackagedProductDefinition".equals(codeString))
1819          return PACKAGEDPRODUCTDEFINITION;
1820        if ("Patient".equals(codeString))
1821          return PATIENT;
1822        if ("PaymentNotice".equals(codeString))
1823          return PAYMENTNOTICE;
1824        if ("PaymentReconciliation".equals(codeString))
1825          return PAYMENTRECONCILIATION;
1826        if ("Person".equals(codeString))
1827          return PERSON;
1828        if ("PlanDefinition".equals(codeString))
1829          return PLANDEFINITION;
1830        if ("Practitioner".equals(codeString))
1831          return PRACTITIONER;
1832        if ("PractitionerRole".equals(codeString))
1833          return PRACTITIONERROLE;
1834        if ("Procedure".equals(codeString))
1835          return PROCEDURE;
1836        if ("Provenance".equals(codeString))
1837          return PROVENANCE;
1838        if ("Questionnaire".equals(codeString))
1839          return QUESTIONNAIRE;
1840        if ("QuestionnaireResponse".equals(codeString))
1841          return QUESTIONNAIRERESPONSE;
1842        if ("RegulatedAuthorization".equals(codeString))
1843          return REGULATEDAUTHORIZATION;
1844        if ("RelatedPerson".equals(codeString))
1845          return RELATEDPERSON;
1846        if ("RequestGroup".equals(codeString))
1847          return REQUESTGROUP;
1848        if ("ResearchDefinition".equals(codeString))
1849          return RESEARCHDEFINITION;
1850        if ("ResearchElementDefinition".equals(codeString))
1851          return RESEARCHELEMENTDEFINITION;
1852        if ("ResearchStudy".equals(codeString))
1853          return RESEARCHSTUDY;
1854        if ("ResearchSubject".equals(codeString))
1855          return RESEARCHSUBJECT;
1856        if ("RiskAssessment".equals(codeString))
1857          return RISKASSESSMENT;
1858        if ("Schedule".equals(codeString))
1859          return SCHEDULE;
1860        if ("SearchParameter".equals(codeString))
1861          return SEARCHPARAMETER;
1862        if ("ServiceRequest".equals(codeString))
1863          return SERVICEREQUEST;
1864        if ("Slot".equals(codeString))
1865          return SLOT;
1866        if ("Specimen".equals(codeString))
1867          return SPECIMEN;
1868        if ("SpecimenDefinition".equals(codeString))
1869          return SPECIMENDEFINITION;
1870        if ("StructureDefinition".equals(codeString))
1871          return STRUCTUREDEFINITION;
1872        if ("StructureMap".equals(codeString))
1873          return STRUCTUREMAP;
1874        if ("Subscription".equals(codeString))
1875          return SUBSCRIPTION;
1876        if ("SubscriptionStatus".equals(codeString))
1877          return SUBSCRIPTIONSTATUS;
1878        if ("SubscriptionTopic".equals(codeString))
1879          return SUBSCRIPTIONTOPIC;
1880        if ("Substance".equals(codeString))
1881          return SUBSTANCE;
1882        if ("SubstanceDefinition".equals(codeString))
1883          return SUBSTANCEDEFINITION;
1884        if ("SupplyDelivery".equals(codeString))
1885          return SUPPLYDELIVERY;
1886        if ("SupplyRequest".equals(codeString))
1887          return SUPPLYREQUEST;
1888        if ("Task".equals(codeString))
1889          return TASK;
1890        if ("TerminologyCapabilities".equals(codeString))
1891          return TERMINOLOGYCAPABILITIES;
1892        if ("TestReport".equals(codeString))
1893          return TESTREPORT;
1894        if ("TestScript".equals(codeString))
1895          return TESTSCRIPT;
1896        if ("ValueSet".equals(codeString))
1897          return VALUESET;
1898        if ("VerificationResult".equals(codeString))
1899          return VERIFICATIONRESULT;
1900        if ("VisionPrescription".equals(codeString))
1901          return VISIONPRESCRIPTION;
1902        if ("Parameters".equals(codeString))
1903          return PARAMETERS;
1904        if (Configuration.isAcceptInvalidEnums())
1905          return null;
1906        else
1907          throw new FHIRException("Unknown FHIRDefinedType code '"+codeString+"'");
1908        }
1909        public String toCode() {
1910          switch (this) {
1911            case ADDRESS: return "Address";
1912            case AGE: return "Age";
1913            case ANNOTATION: return "Annotation";
1914            case ATTACHMENT: return "Attachment";
1915            case BACKBONEELEMENT: return "BackboneElement";
1916            case CODEABLECONCEPT: return "CodeableConcept";
1917            case CODEABLEREFERENCE: return "CodeableReference";
1918            case CODING: return "Coding";
1919            case CONTACTDETAIL: return "ContactDetail";
1920            case CONTACTPOINT: return "ContactPoint";
1921            case CONTRIBUTOR: return "Contributor";
1922            case COUNT: return "Count";
1923            case DATAREQUIREMENT: return "DataRequirement";
1924            case DATATYPE: return "DataType";
1925            case DISTANCE: return "Distance";
1926            case DOSAGE: return "Dosage";
1927            case DURATION: return "Duration";
1928            case ELEMENT: return "Element";
1929            case ELEMENTDEFINITION: return "ElementDefinition";
1930            case EXPRESSION: return "Expression";
1931            case EXTENSION: return "Extension";
1932            case HUMANNAME: return "HumanName";
1933            case IDENTIFIER: return "Identifier";
1934            case MARKETINGSTATUS: return "MarketingStatus";
1935            case META: return "Meta";
1936            case MONEY: return "Money";
1937            case MONEYQUANTITY: return "MoneyQuantity";
1938            case NARRATIVE: return "Narrative";
1939            case PARAMETERDEFINITION: return "ParameterDefinition";
1940            case PERIOD: return "Period";
1941            case POPULATION: return "Population";
1942            case PRODCHARACTERISTIC: return "ProdCharacteristic";
1943            case PRODUCTSHELFLIFE: return "ProductShelfLife";
1944            case QUANTITY: return "Quantity";
1945            case RANGE: return "Range";
1946            case RATIO: return "Ratio";
1947            case RATIORANGE: return "RatioRange";
1948            case REFERENCE: return "Reference";
1949            case RELATEDARTIFACT: return "RelatedArtifact";
1950            case SAMPLEDDATA: return "SampledData";
1951            case SIGNATURE: return "Signature";
1952            case SIMPLEQUANTITY: return "SimpleQuantity";
1953            case TIMING: return "Timing";
1954            case TRIGGERDEFINITION: return "TriggerDefinition";
1955            case USAGECONTEXT: return "UsageContext";
1956            case BASE64BINARY: return "base64Binary";
1957            case BOOLEAN: return "boolean";
1958            case CANONICAL: return "canonical";
1959            case CODE: return "code";
1960            case DATE: return "date";
1961            case DATETIME: return "dateTime";
1962            case DECIMAL: return "decimal";
1963            case ID: return "id";
1964            case INSTANT: return "instant";
1965            case INTEGER: return "integer";
1966            case MARKDOWN: return "markdown";
1967            case OID: return "oid";
1968            case POSITIVEINT: return "positiveInt";
1969            case STRING: return "string";
1970            case TIME: return "time";
1971            case UNSIGNEDINT: return "unsignedInt";
1972            case URI: return "uri";
1973            case URL: return "url";
1974            case UUID: return "uuid";
1975            case XHTML: return "xhtml";
1976            case RESOURCE: return "Resource";
1977            case BINARY: return "Binary";
1978            case BUNDLE: return "Bundle";
1979            case DOMAINRESOURCE: return "DomainResource";
1980            case ACCOUNT: return "Account";
1981            case ACTIVITYDEFINITION: return "ActivityDefinition";
1982            case ADMINISTRABLEPRODUCTDEFINITION: return "AdministrableProductDefinition";
1983            case ADVERSEEVENT: return "AdverseEvent";
1984            case ALLERGYINTOLERANCE: return "AllergyIntolerance";
1985            case APPOINTMENT: return "Appointment";
1986            case APPOINTMENTRESPONSE: return "AppointmentResponse";
1987            case AUDITEVENT: return "AuditEvent";
1988            case BASIC: return "Basic";
1989            case BIOLOGICALLYDERIVEDPRODUCT: return "BiologicallyDerivedProduct";
1990            case BODYSTRUCTURE: return "BodyStructure";
1991            case CAPABILITYSTATEMENT: return "CapabilityStatement";
1992            case CAREPLAN: return "CarePlan";
1993            case CARETEAM: return "CareTeam";
1994            case CATALOGENTRY: return "CatalogEntry";
1995            case CHARGEITEM: return "ChargeItem";
1996            case CHARGEITEMDEFINITION: return "ChargeItemDefinition";
1997            case CITATION: return "Citation";
1998            case CLAIM: return "Claim";
1999            case CLAIMRESPONSE: return "ClaimResponse";
2000            case CLINICALIMPRESSION: return "ClinicalImpression";
2001            case CLINICALUSEDEFINITION: return "ClinicalUseDefinition";
2002            case CODESYSTEM: return "CodeSystem";
2003            case COMMUNICATION: return "Communication";
2004            case COMMUNICATIONREQUEST: return "CommunicationRequest";
2005            case COMPARTMENTDEFINITION: return "CompartmentDefinition";
2006            case COMPOSITION: return "Composition";
2007            case CONCEPTMAP: return "ConceptMap";
2008            case CONDITION: return "Condition";
2009            case CONSENT: return "Consent";
2010            case CONTRACT: return "Contract";
2011            case COVERAGE: return "Coverage";
2012            case COVERAGEELIGIBILITYREQUEST: return "CoverageEligibilityRequest";
2013            case COVERAGEELIGIBILITYRESPONSE: return "CoverageEligibilityResponse";
2014            case DETECTEDISSUE: return "DetectedIssue";
2015            case DEVICE: return "Device";
2016            case DEVICEDEFINITION: return "DeviceDefinition";
2017            case DEVICEMETRIC: return "DeviceMetric";
2018            case DEVICEREQUEST: return "DeviceRequest";
2019            case DEVICEUSESTATEMENT: return "DeviceUseStatement";
2020            case DIAGNOSTICREPORT: return "DiagnosticReport";
2021            case DOCUMENTMANIFEST: return "DocumentManifest";
2022            case DOCUMENTREFERENCE: return "DocumentReference";
2023            case ENCOUNTER: return "Encounter";
2024            case ENDPOINT: return "Endpoint";
2025            case ENROLLMENTREQUEST: return "EnrollmentRequest";
2026            case ENROLLMENTRESPONSE: return "EnrollmentResponse";
2027            case EPISODEOFCARE: return "EpisodeOfCare";
2028            case EVENTDEFINITION: return "EventDefinition";
2029            case EVIDENCE: return "Evidence";
2030            case EVIDENCEREPORT: return "EvidenceReport";
2031            case EVIDENCEVARIABLE: return "EvidenceVariable";
2032            case EXAMPLESCENARIO: return "ExampleScenario";
2033            case EXPLANATIONOFBENEFIT: return "ExplanationOfBenefit";
2034            case FAMILYMEMBERHISTORY: return "FamilyMemberHistory";
2035            case FLAG: return "Flag";
2036            case GOAL: return "Goal";
2037            case GRAPHDEFINITION: return "GraphDefinition";
2038            case GROUP: return "Group";
2039            case GUIDANCERESPONSE: return "GuidanceResponse";
2040            case HEALTHCARESERVICE: return "HealthcareService";
2041            case IMAGINGSTUDY: return "ImagingStudy";
2042            case IMMUNIZATION: return "Immunization";
2043            case IMMUNIZATIONEVALUATION: return "ImmunizationEvaluation";
2044            case IMMUNIZATIONRECOMMENDATION: return "ImmunizationRecommendation";
2045            case IMPLEMENTATIONGUIDE: return "ImplementationGuide";
2046            case INGREDIENT: return "Ingredient";
2047            case INSURANCEPLAN: return "InsurancePlan";
2048            case INVOICE: return "Invoice";
2049            case LIBRARY: return "Library";
2050            case LINKAGE: return "Linkage";
2051            case LIST: return "List";
2052            case LOCATION: return "Location";
2053            case MANUFACTUREDITEMDEFINITION: return "ManufacturedItemDefinition";
2054            case MEASURE: return "Measure";
2055            case MEASUREREPORT: return "MeasureReport";
2056            case MEDIA: return "Media";
2057            case MEDICATION: return "Medication";
2058            case MEDICATIONADMINISTRATION: return "MedicationAdministration";
2059            case MEDICATIONDISPENSE: return "MedicationDispense";
2060            case MEDICATIONKNOWLEDGE: return "MedicationKnowledge";
2061            case MEDICATIONREQUEST: return "MedicationRequest";
2062            case MEDICATIONSTATEMENT: return "MedicationStatement";
2063            case MEDICINALPRODUCTDEFINITION: return "MedicinalProductDefinition";
2064            case MESSAGEDEFINITION: return "MessageDefinition";
2065            case MESSAGEHEADER: return "MessageHeader";
2066            case MOLECULARSEQUENCE: return "MolecularSequence";
2067            case NAMINGSYSTEM: return "NamingSystem";
2068            case NUTRITIONORDER: return "NutritionOrder";
2069            case NUTRITIONPRODUCT: return "NutritionProduct";
2070            case OBSERVATION: return "Observation";
2071            case OBSERVATIONDEFINITION: return "ObservationDefinition";
2072            case OPERATIONDEFINITION: return "OperationDefinition";
2073            case OPERATIONOUTCOME: return "OperationOutcome";
2074            case ORGANIZATION: return "Organization";
2075            case ORGANIZATIONAFFILIATION: return "OrganizationAffiliation";
2076            case PACKAGEDPRODUCTDEFINITION: return "PackagedProductDefinition";
2077            case PATIENT: return "Patient";
2078            case PAYMENTNOTICE: return "PaymentNotice";
2079            case PAYMENTRECONCILIATION: return "PaymentReconciliation";
2080            case PERSON: return "Person";
2081            case PLANDEFINITION: return "PlanDefinition";
2082            case PRACTITIONER: return "Practitioner";
2083            case PRACTITIONERROLE: return "PractitionerRole";
2084            case PROCEDURE: return "Procedure";
2085            case PROVENANCE: return "Provenance";
2086            case QUESTIONNAIRE: return "Questionnaire";
2087            case QUESTIONNAIRERESPONSE: return "QuestionnaireResponse";
2088            case REGULATEDAUTHORIZATION: return "RegulatedAuthorization";
2089            case RELATEDPERSON: return "RelatedPerson";
2090            case REQUESTGROUP: return "RequestGroup";
2091            case RESEARCHDEFINITION: return "ResearchDefinition";
2092            case RESEARCHELEMENTDEFINITION: return "ResearchElementDefinition";
2093            case RESEARCHSTUDY: return "ResearchStudy";
2094            case RESEARCHSUBJECT: return "ResearchSubject";
2095            case RISKASSESSMENT: return "RiskAssessment";
2096            case SCHEDULE: return "Schedule";
2097            case SEARCHPARAMETER: return "SearchParameter";
2098            case SERVICEREQUEST: return "ServiceRequest";
2099            case SLOT: return "Slot";
2100            case SPECIMEN: return "Specimen";
2101            case SPECIMENDEFINITION: return "SpecimenDefinition";
2102            case STRUCTUREDEFINITION: return "StructureDefinition";
2103            case STRUCTUREMAP: return "StructureMap";
2104            case SUBSCRIPTION: return "Subscription";
2105            case SUBSCRIPTIONSTATUS: return "SubscriptionStatus";
2106            case SUBSCRIPTIONTOPIC: return "SubscriptionTopic";
2107            case SUBSTANCE: return "Substance";
2108            case SUBSTANCEDEFINITION: return "SubstanceDefinition";
2109            case SUPPLYDELIVERY: return "SupplyDelivery";
2110            case SUPPLYREQUEST: return "SupplyRequest";
2111            case TASK: return "Task";
2112            case TERMINOLOGYCAPABILITIES: return "TerminologyCapabilities";
2113            case TESTREPORT: return "TestReport";
2114            case TESTSCRIPT: return "TestScript";
2115            case VALUESET: return "ValueSet";
2116            case VERIFICATIONRESULT: return "VerificationResult";
2117            case VISIONPRESCRIPTION: return "VisionPrescription";
2118            case PARAMETERS: return "Parameters";
2119            case NULL: return null;
2120            default: return "?";
2121          }
2122        }
2123        public String getSystem() {
2124          switch (this) {
2125            case ADDRESS: return "http://hl7.org/fhir/data-types";
2126            case AGE: return "http://hl7.org/fhir/data-types";
2127            case ANNOTATION: return "http://hl7.org/fhir/data-types";
2128            case ATTACHMENT: return "http://hl7.org/fhir/data-types";
2129            case BACKBONEELEMENT: return "http://hl7.org/fhir/data-types";
2130            case CODEABLECONCEPT: return "http://hl7.org/fhir/data-types";
2131            case CODEABLEREFERENCE: return "http://hl7.org/fhir/data-types";
2132            case CODING: return "http://hl7.org/fhir/data-types";
2133            case CONTACTDETAIL: return "http://hl7.org/fhir/data-types";
2134            case CONTACTPOINT: return "http://hl7.org/fhir/data-types";
2135            case CONTRIBUTOR: return "http://hl7.org/fhir/data-types";
2136            case COUNT: return "http://hl7.org/fhir/data-types";
2137            case DATAREQUIREMENT: return "http://hl7.org/fhir/data-types";
2138            case DATATYPE: return "http://hl7.org/fhir/data-types";
2139            case DISTANCE: return "http://hl7.org/fhir/data-types";
2140            case DOSAGE: return "http://hl7.org/fhir/data-types";
2141            case DURATION: return "http://hl7.org/fhir/data-types";
2142            case ELEMENT: return "http://hl7.org/fhir/data-types";
2143            case ELEMENTDEFINITION: return "http://hl7.org/fhir/data-types";
2144            case EXPRESSION: return "http://hl7.org/fhir/data-types";
2145            case EXTENSION: return "http://hl7.org/fhir/data-types";
2146            case HUMANNAME: return "http://hl7.org/fhir/data-types";
2147            case IDENTIFIER: return "http://hl7.org/fhir/data-types";
2148            case MARKETINGSTATUS: return "http://hl7.org/fhir/data-types";
2149            case META: return "http://hl7.org/fhir/data-types";
2150            case MONEY: return "http://hl7.org/fhir/data-types";
2151            case MONEYQUANTITY: return "http://hl7.org/fhir/data-types";
2152            case NARRATIVE: return "http://hl7.org/fhir/data-types";
2153            case PARAMETERDEFINITION: return "http://hl7.org/fhir/data-types";
2154            case PERIOD: return "http://hl7.org/fhir/data-types";
2155            case POPULATION: return "http://hl7.org/fhir/data-types";
2156            case PRODCHARACTERISTIC: return "http://hl7.org/fhir/data-types";
2157            case PRODUCTSHELFLIFE: return "http://hl7.org/fhir/data-types";
2158            case QUANTITY: return "http://hl7.org/fhir/data-types";
2159            case RANGE: return "http://hl7.org/fhir/data-types";
2160            case RATIO: return "http://hl7.org/fhir/data-types";
2161            case RATIORANGE: return "http://hl7.org/fhir/data-types";
2162            case REFERENCE: return "http://hl7.org/fhir/data-types";
2163            case RELATEDARTIFACT: return "http://hl7.org/fhir/data-types";
2164            case SAMPLEDDATA: return "http://hl7.org/fhir/data-types";
2165            case SIGNATURE: return "http://hl7.org/fhir/data-types";
2166            case SIMPLEQUANTITY: return "http://hl7.org/fhir/data-types";
2167            case TIMING: return "http://hl7.org/fhir/data-types";
2168            case TRIGGERDEFINITION: return "http://hl7.org/fhir/data-types";
2169            case USAGECONTEXT: return "http://hl7.org/fhir/data-types";
2170            case BASE64BINARY: return "http://hl7.org/fhir/data-types";
2171            case BOOLEAN: return "http://hl7.org/fhir/data-types";
2172            case CANONICAL: return "http://hl7.org/fhir/data-types";
2173            case CODE: return "http://hl7.org/fhir/data-types";
2174            case DATE: return "http://hl7.org/fhir/data-types";
2175            case DATETIME: return "http://hl7.org/fhir/data-types";
2176            case DECIMAL: return "http://hl7.org/fhir/data-types";
2177            case ID: return "http://hl7.org/fhir/data-types";
2178            case INSTANT: return "http://hl7.org/fhir/data-types";
2179            case INTEGER: return "http://hl7.org/fhir/data-types";
2180            case MARKDOWN: return "http://hl7.org/fhir/data-types";
2181            case OID: return "http://hl7.org/fhir/data-types";
2182            case POSITIVEINT: return "http://hl7.org/fhir/data-types";
2183            case STRING: return "http://hl7.org/fhir/data-types";
2184            case TIME: return "http://hl7.org/fhir/data-types";
2185            case UNSIGNEDINT: return "http://hl7.org/fhir/data-types";
2186            case URI: return "http://hl7.org/fhir/data-types";
2187            case URL: return "http://hl7.org/fhir/data-types";
2188            case UUID: return "http://hl7.org/fhir/data-types";
2189            case XHTML: return "http://hl7.org/fhir/data-types";
2190            case RESOURCE: return "http://hl7.org/fhir/resource-types";
2191            case BINARY: return "http://hl7.org/fhir/resource-types";
2192            case BUNDLE: return "http://hl7.org/fhir/resource-types";
2193            case DOMAINRESOURCE: return "http://hl7.org/fhir/resource-types";
2194            case ACCOUNT: return "http://hl7.org/fhir/resource-types";
2195            case ACTIVITYDEFINITION: return "http://hl7.org/fhir/resource-types";
2196            case ADMINISTRABLEPRODUCTDEFINITION: return "http://hl7.org/fhir/resource-types";
2197            case ADVERSEEVENT: return "http://hl7.org/fhir/resource-types";
2198            case ALLERGYINTOLERANCE: return "http://hl7.org/fhir/resource-types";
2199            case APPOINTMENT: return "http://hl7.org/fhir/resource-types";
2200            case APPOINTMENTRESPONSE: return "http://hl7.org/fhir/resource-types";
2201            case AUDITEVENT: return "http://hl7.org/fhir/resource-types";
2202            case BASIC: return "http://hl7.org/fhir/resource-types";
2203            case BIOLOGICALLYDERIVEDPRODUCT: return "http://hl7.org/fhir/resource-types";
2204            case BODYSTRUCTURE: return "http://hl7.org/fhir/resource-types";
2205            case CAPABILITYSTATEMENT: return "http://hl7.org/fhir/resource-types";
2206            case CAREPLAN: return "http://hl7.org/fhir/resource-types";
2207            case CARETEAM: return "http://hl7.org/fhir/resource-types";
2208            case CATALOGENTRY: return "http://hl7.org/fhir/resource-types";
2209            case CHARGEITEM: return "http://hl7.org/fhir/resource-types";
2210            case CHARGEITEMDEFINITION: return "http://hl7.org/fhir/resource-types";
2211            case CITATION: return "http://hl7.org/fhir/resource-types";
2212            case CLAIM: return "http://hl7.org/fhir/resource-types";
2213            case CLAIMRESPONSE: return "http://hl7.org/fhir/resource-types";
2214            case CLINICALIMPRESSION: return "http://hl7.org/fhir/resource-types";
2215            case CLINICALUSEDEFINITION: return "http://hl7.org/fhir/resource-types";
2216            case CODESYSTEM: return "http://hl7.org/fhir/resource-types";
2217            case COMMUNICATION: return "http://hl7.org/fhir/resource-types";
2218            case COMMUNICATIONREQUEST: return "http://hl7.org/fhir/resource-types";
2219            case COMPARTMENTDEFINITION: return "http://hl7.org/fhir/resource-types";
2220            case COMPOSITION: return "http://hl7.org/fhir/resource-types";
2221            case CONCEPTMAP: return "http://hl7.org/fhir/resource-types";
2222            case CONDITION: return "http://hl7.org/fhir/resource-types";
2223            case CONSENT: return "http://hl7.org/fhir/resource-types";
2224            case CONTRACT: return "http://hl7.org/fhir/resource-types";
2225            case COVERAGE: return "http://hl7.org/fhir/resource-types";
2226            case COVERAGEELIGIBILITYREQUEST: return "http://hl7.org/fhir/resource-types";
2227            case COVERAGEELIGIBILITYRESPONSE: return "http://hl7.org/fhir/resource-types";
2228            case DETECTEDISSUE: return "http://hl7.org/fhir/resource-types";
2229            case DEVICE: return "http://hl7.org/fhir/resource-types";
2230            case DEVICEDEFINITION: return "http://hl7.org/fhir/resource-types";
2231            case DEVICEMETRIC: return "http://hl7.org/fhir/resource-types";
2232            case DEVICEREQUEST: return "http://hl7.org/fhir/resource-types";
2233            case DEVICEUSESTATEMENT: return "http://hl7.org/fhir/resource-types";
2234            case DIAGNOSTICREPORT: return "http://hl7.org/fhir/resource-types";
2235            case DOCUMENTMANIFEST: return "http://hl7.org/fhir/resource-types";
2236            case DOCUMENTREFERENCE: return "http://hl7.org/fhir/resource-types";
2237            case ENCOUNTER: return "http://hl7.org/fhir/resource-types";
2238            case ENDPOINT: return "http://hl7.org/fhir/resource-types";
2239            case ENROLLMENTREQUEST: return "http://hl7.org/fhir/resource-types";
2240            case ENROLLMENTRESPONSE: return "http://hl7.org/fhir/resource-types";
2241            case EPISODEOFCARE: return "http://hl7.org/fhir/resource-types";
2242            case EVENTDEFINITION: return "http://hl7.org/fhir/resource-types";
2243            case EVIDENCE: return "http://hl7.org/fhir/resource-types";
2244            case EVIDENCEREPORT: return "http://hl7.org/fhir/resource-types";
2245            case EVIDENCEVARIABLE: return "http://hl7.org/fhir/resource-types";
2246            case EXAMPLESCENARIO: return "http://hl7.org/fhir/resource-types";
2247            case EXPLANATIONOFBENEFIT: return "http://hl7.org/fhir/resource-types";
2248            case FAMILYMEMBERHISTORY: return "http://hl7.org/fhir/resource-types";
2249            case FLAG: return "http://hl7.org/fhir/resource-types";
2250            case GOAL: return "http://hl7.org/fhir/resource-types";
2251            case GRAPHDEFINITION: return "http://hl7.org/fhir/resource-types";
2252            case GROUP: return "http://hl7.org/fhir/resource-types";
2253            case GUIDANCERESPONSE: return "http://hl7.org/fhir/resource-types";
2254            case HEALTHCARESERVICE: return "http://hl7.org/fhir/resource-types";
2255            case IMAGINGSTUDY: return "http://hl7.org/fhir/resource-types";
2256            case IMMUNIZATION: return "http://hl7.org/fhir/resource-types";
2257            case IMMUNIZATIONEVALUATION: return "http://hl7.org/fhir/resource-types";
2258            case IMMUNIZATIONRECOMMENDATION: return "http://hl7.org/fhir/resource-types";
2259            case IMPLEMENTATIONGUIDE: return "http://hl7.org/fhir/resource-types";
2260            case INGREDIENT: return "http://hl7.org/fhir/resource-types";
2261            case INSURANCEPLAN: return "http://hl7.org/fhir/resource-types";
2262            case INVOICE: return "http://hl7.org/fhir/resource-types";
2263            case LIBRARY: return "http://hl7.org/fhir/resource-types";
2264            case LINKAGE: return "http://hl7.org/fhir/resource-types";
2265            case LIST: return "http://hl7.org/fhir/resource-types";
2266            case LOCATION: return "http://hl7.org/fhir/resource-types";
2267            case MANUFACTUREDITEMDEFINITION: return "http://hl7.org/fhir/resource-types";
2268            case MEASURE: return "http://hl7.org/fhir/resource-types";
2269            case MEASUREREPORT: return "http://hl7.org/fhir/resource-types";
2270            case MEDIA: return "http://hl7.org/fhir/resource-types";
2271            case MEDICATION: return "http://hl7.org/fhir/resource-types";
2272            case MEDICATIONADMINISTRATION: return "http://hl7.org/fhir/resource-types";
2273            case MEDICATIONDISPENSE: return "http://hl7.org/fhir/resource-types";
2274            case MEDICATIONKNOWLEDGE: return "http://hl7.org/fhir/resource-types";
2275            case MEDICATIONREQUEST: return "http://hl7.org/fhir/resource-types";
2276            case MEDICATIONSTATEMENT: return "http://hl7.org/fhir/resource-types";
2277            case MEDICINALPRODUCTDEFINITION: return "http://hl7.org/fhir/resource-types";
2278            case MESSAGEDEFINITION: return "http://hl7.org/fhir/resource-types";
2279            case MESSAGEHEADER: return "http://hl7.org/fhir/resource-types";
2280            case MOLECULARSEQUENCE: return "http://hl7.org/fhir/resource-types";
2281            case NAMINGSYSTEM: return "http://hl7.org/fhir/resource-types";
2282            case NUTRITIONORDER: return "http://hl7.org/fhir/resource-types";
2283            case NUTRITIONPRODUCT: return "http://hl7.org/fhir/resource-types";
2284            case OBSERVATION: return "http://hl7.org/fhir/resource-types";
2285            case OBSERVATIONDEFINITION: return "http://hl7.org/fhir/resource-types";
2286            case OPERATIONDEFINITION: return "http://hl7.org/fhir/resource-types";
2287            case OPERATIONOUTCOME: return "http://hl7.org/fhir/resource-types";
2288            case ORGANIZATION: return "http://hl7.org/fhir/resource-types";
2289            case ORGANIZATIONAFFILIATION: return "http://hl7.org/fhir/resource-types";
2290            case PACKAGEDPRODUCTDEFINITION: return "http://hl7.org/fhir/resource-types";
2291            case PATIENT: return "http://hl7.org/fhir/resource-types";
2292            case PAYMENTNOTICE: return "http://hl7.org/fhir/resource-types";
2293            case PAYMENTRECONCILIATION: return "http://hl7.org/fhir/resource-types";
2294            case PERSON: return "http://hl7.org/fhir/resource-types";
2295            case PLANDEFINITION: return "http://hl7.org/fhir/resource-types";
2296            case PRACTITIONER: return "http://hl7.org/fhir/resource-types";
2297            case PRACTITIONERROLE: return "http://hl7.org/fhir/resource-types";
2298            case PROCEDURE: return "http://hl7.org/fhir/resource-types";
2299            case PROVENANCE: return "http://hl7.org/fhir/resource-types";
2300            case QUESTIONNAIRE: return "http://hl7.org/fhir/resource-types";
2301            case QUESTIONNAIRERESPONSE: return "http://hl7.org/fhir/resource-types";
2302            case REGULATEDAUTHORIZATION: return "http://hl7.org/fhir/resource-types";
2303            case RELATEDPERSON: return "http://hl7.org/fhir/resource-types";
2304            case REQUESTGROUP: return "http://hl7.org/fhir/resource-types";
2305            case RESEARCHDEFINITION: return "http://hl7.org/fhir/resource-types";
2306            case RESEARCHELEMENTDEFINITION: return "http://hl7.org/fhir/resource-types";
2307            case RESEARCHSTUDY: return "http://hl7.org/fhir/resource-types";
2308            case RESEARCHSUBJECT: return "http://hl7.org/fhir/resource-types";
2309            case RISKASSESSMENT: return "http://hl7.org/fhir/resource-types";
2310            case SCHEDULE: return "http://hl7.org/fhir/resource-types";
2311            case SEARCHPARAMETER: return "http://hl7.org/fhir/resource-types";
2312            case SERVICEREQUEST: return "http://hl7.org/fhir/resource-types";
2313            case SLOT: return "http://hl7.org/fhir/resource-types";
2314            case SPECIMEN: return "http://hl7.org/fhir/resource-types";
2315            case SPECIMENDEFINITION: return "http://hl7.org/fhir/resource-types";
2316            case STRUCTUREDEFINITION: return "http://hl7.org/fhir/resource-types";
2317            case STRUCTUREMAP: return "http://hl7.org/fhir/resource-types";
2318            case SUBSCRIPTION: return "http://hl7.org/fhir/resource-types";
2319            case SUBSCRIPTIONSTATUS: return "http://hl7.org/fhir/resource-types";
2320            case SUBSCRIPTIONTOPIC: return "http://hl7.org/fhir/resource-types";
2321            case SUBSTANCE: return "http://hl7.org/fhir/resource-types";
2322            case SUBSTANCEDEFINITION: return "http://hl7.org/fhir/resource-types";
2323            case SUPPLYDELIVERY: return "http://hl7.org/fhir/resource-types";
2324            case SUPPLYREQUEST: return "http://hl7.org/fhir/resource-types";
2325            case TASK: return "http://hl7.org/fhir/resource-types";
2326            case TERMINOLOGYCAPABILITIES: return "http://hl7.org/fhir/resource-types";
2327            case TESTREPORT: return "http://hl7.org/fhir/resource-types";
2328            case TESTSCRIPT: return "http://hl7.org/fhir/resource-types";
2329            case VALUESET: return "http://hl7.org/fhir/resource-types";
2330            case VERIFICATIONRESULT: return "http://hl7.org/fhir/resource-types";
2331            case VISIONPRESCRIPTION: return "http://hl7.org/fhir/resource-types";
2332            case PARAMETERS: return "http://hl7.org/fhir/resource-types";
2333            case NULL: return null;
2334            default: return "?";
2335          }
2336        }
2337        public String getDefinition() {
2338          switch (this) {
2339            case ADDRESS: return "An address expressed using postal conventions (as opposed to GPS or other location definition formats).  This data type may be used to convey addresses for use in delivering mail as well as for visiting locations which might not be valid for mail delivery.  There are a variety of postal address formats defined around the world.";
2340            case AGE: return "A duration of time during which an organism (or a process) has existed.";
2341            case ANNOTATION: return "A  text note which also  contains information about who made the statement and when.";
2342            case ATTACHMENT: return "For referring to data content defined in other formats.";
2343            case BACKBONEELEMENT: return "Base definition for all elements that are defined inside a resource - but not those in a data type.";
2344            case CODEABLECONCEPT: return "A concept that may be defined by a formal reference to a terminology or ontology or may be provided by text.";
2345            case CODEABLEREFERENCE: return "A reference to a resource (by instance), or instead, a reference to a cencept defined in a terminology or ontology (by class).";
2346            case CODING: return "A reference to a code defined by a terminology system.";
2347            case CONTACTDETAIL: return "Specifies contact information for a person or organization.";
2348            case CONTACTPOINT: return "Details for all kinds of technology mediated contact points for a person or organization, including telephone, email, etc.";
2349            case CONTRIBUTOR: return "A contributor to the content of a knowledge asset, including authors, editors, reviewers, and endorsers.";
2350            case COUNT: return "A measured amount (or an amount that can potentially be measured). Note that measured amounts include amounts that are not precisely quantified, including amounts involving arbitrary units and floating currencies.";
2351            case DATAREQUIREMENT: return "Describes a required data item for evaluation in terms of the type of data, and optional code or date-based filters of the data.";
2352            case DATATYPE: return "The base class for all re-useable types defined as part of the FHIR Specification.";
2353            case DISTANCE: return "A length - a value with a unit that is a physical distance.";
2354            case DOSAGE: return "Indicates how the medication is/was taken or should be taken by the patient.";
2355            case DURATION: return "A length of time.";
2356            case ELEMENT: return "Base definition for all elements in a resource.";
2357            case ELEMENTDEFINITION: return "Captures constraints on each element within the resource, profile, or extension.";
2358            case EXPRESSION: return "A expression that is evaluated in a specified context and returns a value. The context of use of the expression must specify the context in which the expression is evaluated, and how the result of the expression is used.";
2359            case EXTENSION: return "Optional Extension Element - found in all resources.";
2360            case HUMANNAME: return "A human's name with the ability to identify parts and usage.";
2361            case IDENTIFIER: return "An identifier - identifies some entity uniquely and unambiguously. Typically this is used for business identifiers.";
2362            case MARKETINGSTATUS: return "The marketing status describes the date when a medicinal product is actually put on the market or the date as of which it is no longer available.";
2363            case META: return "The metadata about a resource. This is content in the resource that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource.";
2364            case MONEY: return "An amount of economic utility in some recognized currency.";
2365            case MONEYQUANTITY: return "";
2366            case NARRATIVE: return "A human-readable summary of the resource conveying the essential clinical and business information for the resource.";
2367            case PARAMETERDEFINITION: return "The parameters to the module. This collection specifies both the input and output parameters. Input parameters are provided by the caller as part of the $evaluate operation. Output parameters are included in the GuidanceResponse.";
2368            case PERIOD: return "A time period defined by a start and end date and optionally time.";
2369            case POPULATION: return "A populatioof people with some set of grouping criteria.";
2370            case PRODCHARACTERISTIC: return "The marketing status describes the date when a medicinal product is actually put on the market or the date as of which it is no longer available.";
2371            case PRODUCTSHELFLIFE: return "The shelf-life and storage information for a medicinal product item or container can be described using this class.";
2372            case QUANTITY: return "A measured amount (or an amount that can potentially be measured). Note that measured amounts include amounts that are not precisely quantified, including amounts involving arbitrary units and floating currencies.";
2373            case RANGE: return "A set of ordered Quantities defined by a low and high limit.";
2374            case RATIO: return "A relationship of two Quantity values - expressed as a numerator and a denominator.";
2375            case RATIORANGE: return "A range of ratios expressed as a low and high numerator and a denominator.";
2376            case REFERENCE: return "A reference from one resource to another.";
2377            case RELATEDARTIFACT: return "Related artifacts such as additional documentation, justification, or bibliographic references.";
2378            case SAMPLEDDATA: return "A series of measurements taken by a device, with upper and lower limits. There may be more than one dimension in the data.";
2379            case SIGNATURE: return "A signature along with supporting context. The signature may be a digital signature that is cryptographic in nature, or some other signature acceptable to the domain. This other signature may be as simple as a graphical image representing a hand-written signature, or a signature ceremony Different signature approaches have different utilities.";
2380            case SIMPLEQUANTITY: return "";
2381            case TIMING: return "Specifies an event that may occur multiple times. Timing schedules are used to record when things are planned, expected or requested to occur. The most common usage is in dosage instructions for medications. They are also used when planning care of various kinds, and may be used for reporting the schedule to which past regular activities were carried out.";
2382            case TRIGGERDEFINITION: return "A description of a triggering event. Triggering events can be named events, data events, or periodic, as determined by the type element.";
2383            case USAGECONTEXT: return "Specifies clinical/business/etc. metadata that can be used to retrieve, index and/or categorize an artifact. This metadata can either be specific to the applicable population (e.g., age category, DRG) or the specific context of care (e.g., venue, care setting, provider of care).";
2384            case BASE64BINARY: return "A stream of bytes";
2385            case BOOLEAN: return "Value of \"true\" or \"false\"";
2386            case CANONICAL: return "A URI that is a reference to a canonical URL on a FHIR resource";
2387            case CODE: return "A string which has at least one character and no leading or trailing whitespace and where there is no whitespace other than single spaces in the contents";
2388            case DATE: return "A date or partial date (e.g. just year or year + month). There is no time zone. The format is a union of the schema types gYear, gYearMonth and date.  Dates SHALL be valid dates.";
2389            case DATETIME: return "A date, date-time or partial date (e.g. just year or year + month).  If hours and minutes are specified, a time zone SHALL be populated. The format is a union of the schema types gYear, gYearMonth, date and dateTime. Seconds must be provided due to schema type constraints but may be zero-filled and may be ignored.                 Dates SHALL be valid dates.";
2390            case DECIMAL: return "A rational number with implicit precision";
2391            case ID: return "Any combination of letters, numerals, \"-\" and \".\", with a length limit of 64 characters.  (This might be an integer, an unprefixed OID, UUID or any other identifier pattern that meets these constraints.)  Ids are case-insensitive.";
2392            case INSTANT: return "An instant in time - known at least to the second";
2393            case INTEGER: return "A whole number";
2394            case MARKDOWN: return "A string that may contain Github Flavored Markdown syntax for optional processing by a mark down presentation engine";
2395            case OID: return "An OID represented as a URI";
2396            case POSITIVEINT: return "An integer with a value that is positive (e.g. >0)";
2397            case STRING: return "A sequence of Unicode characters";
2398            case TIME: return "A time during the day, with no date specified";
2399            case UNSIGNEDINT: return "An integer with a value that is not negative (e.g. >= 0)";
2400            case URI: return "String of characters used to identify a name or a resource";
2401            case URL: return "A URI that is a literal reference";
2402            case UUID: return "A UUID, represented as a URI";
2403            case XHTML: return "XHTML format, as defined by W3C, but restricted usage (mainly, no active content)";
2404            case RESOURCE: return "--- Abstract Type! ---This is the base resource type for everything.";
2405            case BINARY: return "A resource that represents the data of a single raw artifact as digital content accessible in its native format.  A Binary resource can contain any content, whether text, image, pdf, zip archive, etc.";
2406            case BUNDLE: return "A container for a collection of resources.";
2407            case DOMAINRESOURCE: return "--- Abstract Type! ---A resource that includes narrative, extensions, and contained resources.";
2408            case ACCOUNT: return "A financial tool for tracking value accrued for a particular purpose.  In the healthcare field, used to track charges for a patient, cost centers, etc.";
2409            case ACTIVITYDEFINITION: return "This resource allows for the definition of some activity to be performed, independent of a particular patient, practitioner, or other performance context.";
2410            case ADMINISTRABLEPRODUCTDEFINITION: return "A medicinal product in the final form which is suitable for administering to a patient (after any mixing of multiple components, dissolution etc. has been performed).";
2411            case ADVERSEEVENT: return "Actual or  potential/avoided event causing unintended physical injury resulting from or contributed to by medical care, a research study or other healthcare setting factors that requires additional monitoring, treatment, or hospitalization, or that results in death.";
2412            case ALLERGYINTOLERANCE: return "Risk of harmful or undesirable, physiological response which is unique to an individual and associated with exposure to a substance.";
2413            case APPOINTMENT: return "A booking of a healthcare event among patient(s), practitioner(s), related person(s) and/or device(s) for a specific date/time. This may result in one or more Encounter(s).";
2414            case APPOINTMENTRESPONSE: return "A reply to an appointment request for a patient and/or practitioner(s), such as a confirmation or rejection.";
2415            case AUDITEVENT: return "A record of an event made for purposes of maintaining a security log. Typical uses include detection of intrusion attempts and monitoring for inappropriate usage.";
2416            case BASIC: return "Basic is used for handling concepts not yet defined in FHIR, narrative-only resources that don't map to an existing resource, and custom resources not appropriate for inclusion in the FHIR specification.";
2417            case BIOLOGICALLYDERIVEDPRODUCT: return "A material substance originating from a biological entity intended to be transplanted or infused\ninto another (possibly the same) biological entity.";
2418            case BODYSTRUCTURE: return "Record details about an anatomical structure.  This resource may be used when a coded concept does not provide the necessary detail needed for the use case.";
2419            case CAPABILITYSTATEMENT: return "A Capability Statement documents a set of capabilities (behaviors) of a FHIR Server for a particular version of FHIR that may be used as a statement of actual server functionality or a statement of required or desired server implementation.";
2420            case CAREPLAN: return "Describes the intention of how one or more practitioners intend to deliver care for a particular patient, group or community for a period of time, possibly limited to care for a specific condition or set of conditions.";
2421            case CARETEAM: return "The Care Team includes all the people and organizations who plan to participate in the coordination and delivery of care for a patient.";
2422            case CATALOGENTRY: return "Catalog entries are wrappers that contextualize items included in a catalog.";
2423            case CHARGEITEM: return "The resource ChargeItem describes the provision of healthcare provider products for a certain patient, therefore referring not only to the product, but containing in addition details of the provision, like date, time, amounts and participating organizations and persons. Main Usage of the ChargeItem is to enable the billing process and internal cost allocation.";
2424            case CHARGEITEMDEFINITION: return "The ChargeItemDefinition resource provides the properties that apply to the (billing) codes necessary to calculate costs and prices. The properties may differ largely depending on type and realm, therefore this resource gives only a rough structure and requires profiling for each type of billing code system.";
2425            case CITATION: return "The Citation Resource enables reference to any knowledge artifact for purposes of identification and attribution. The Citation Resource supports existing reference structures and developing publication practices such as versioning, expressing complex contributorship roles, and referencing computable resources.";
2426            case CLAIM: return "A provider issued list of professional services and products which have been provided, or are to be provided, to a patient which is sent to an insurer for reimbursement.";
2427            case CLAIMRESPONSE: return "This resource provides the adjudication details from the processing of a Claim resource.";
2428            case CLINICALIMPRESSION: return "A record of a clinical assessment performed to determine what problem(s) may affect the patient and before planning the treatments or management strategies that are best to manage a patient's condition. Assessments are often 1:1 with a clinical consultation / encounter,  but this varies greatly depending on the clinical workflow. This resource is called \"ClinicalImpression\" rather than \"ClinicalAssessment\" to avoid confusion with the recording of assessment tools such as Apgar score.";
2429            case CLINICALUSEDEFINITION: return "A single issue - either an indication, contraindication, interaction or an undesirable effect for a medicinal product, medication, device or procedure.";
2430            case CODESYSTEM: return "The CodeSystem resource is used to declare the existence of and describe a code system or code system supplement and its key properties, and optionally define a part or all of its content.";
2431            case COMMUNICATION: return "An occurrence of information being transmitted; e.g. an alert that was sent to a responsible provider, a public health agency that was notified about a reportable condition.";
2432            case COMMUNICATIONREQUEST: return "A request to convey information; e.g. the CDS system proposes that an alert be sent to a responsible provider, the CDS system proposes that the public health agency be notified about a reportable condition.";
2433            case COMPARTMENTDEFINITION: return "A compartment definition that defines how resources are accessed on a server.";
2434            case COMPOSITION: return "A set of healthcare-related information that is assembled together into a single logical package that provides a single coherent statement of meaning, establishes its own context and that has clinical attestation with regard to who is making the statement. A Composition defines the structure and narrative content necessary for a document. However, a Composition alone does not constitute a document. Rather, the Composition must be the first entry in a Bundle where Bundle.type=document, and any other resources referenced from Composition must be included as subsequent entries in the Bundle (for example Patient, Practitioner, Encounter, etc.).";
2435            case CONCEPTMAP: return "A statement of relationships from one set of concepts to one or more other concepts - either concepts in code systems, or data element/data element concepts, or classes in class models.";
2436            case CONDITION: return "A clinical condition, problem, diagnosis, or other event, situation, issue, or clinical concept that has risen to a level of concern.";
2437            case CONSENT: return "A record of a healthcare consumer’s  choices, which permits or denies identified recipient(s) or recipient role(s) to perform one or more actions within a given policy context, for specific purposes and periods of time.";
2438            case CONTRACT: return "Legally enforceable, formally recorded unilateral or bilateral directive i.e., a policy or agreement.";
2439            case COVERAGE: return "Financial instrument which may be used to reimburse or pay for health care products and services. Includes both insurance and self-payment.";
2440            case COVERAGEELIGIBILITYREQUEST: return "The CoverageEligibilityRequest provides patient and insurance coverage information to an insurer for them to respond, in the form of an CoverageEligibilityResponse, with information regarding whether the stated coverage is valid and in-force and optionally to provide the insurance details of the policy.";
2441            case COVERAGEELIGIBILITYRESPONSE: return "This resource provides eligibility and plan details from the processing of an CoverageEligibilityRequest resource.";
2442            case DETECTEDISSUE: return "Indicates an actual or potential clinical issue with or between one or more active or proposed clinical actions for a patient; e.g. Drug-drug interaction, Ineffective treatment frequency, Procedure-condition conflict, etc.";
2443            case DEVICE: return "A type of a manufactured item that is used in the provision of healthcare without being substantially changed through that activity. The device may be a medical or non-medical device.";
2444            case DEVICEDEFINITION: return "The characteristics, operational status and capabilities of a medical-related component of a medical device.";
2445            case DEVICEMETRIC: return "Describes a measurement, calculation or setting capability of a medical device.";
2446            case DEVICEREQUEST: return "Represents a request for a patient to employ a medical device. The device may be an implantable device, or an external assistive device, such as a walker.";
2447            case DEVICEUSESTATEMENT: return "A record of a device being used by a patient where the record is the result of a report from the patient or another clinician.";
2448            case DIAGNOSTICREPORT: return "The findings and interpretation of diagnostic  tests performed on patients, groups of patients, devices, and locations, and/or specimens derived from these. The report includes clinical context such as requesting and provider information, and some mix of atomic results, images, textual and coded interpretations, and formatted representation of diagnostic reports.";
2449            case DOCUMENTMANIFEST: return "A collection of documents compiled for a purpose together with metadata that applies to the collection.";
2450            case DOCUMENTREFERENCE: return "A reference to a document of any kind for any purpose. Provides metadata about the document so that the document can be discovered and managed. The scope of a document is any seralized object with a mime-type, so includes formal patient centric documents (CDA), cliical notes, scanned paper, and non-patient specific documents like policy text.";
2451            case ENCOUNTER: return "An interaction between a patient and healthcare provider(s) for the purpose of providing healthcare service(s) or assessing the health status of a patient.";
2452            case ENDPOINT: return "The technical details of an endpoint that can be used for electronic services, such as for web services providing XDS.b or a REST endpoint for another FHIR server. This may include any security context information.";
2453            case ENROLLMENTREQUEST: return "This resource provides the insurance enrollment details to the insurer regarding a specified coverage.";
2454            case ENROLLMENTRESPONSE: return "This resource provides enrollment and plan details from the processing of an EnrollmentRequest resource.";
2455            case EPISODEOFCARE: return "An association between a patient and an organization / healthcare provider(s) during which time encounters may occur. The managing organization assumes a level of responsibility for the patient during this time.";
2456            case EVENTDEFINITION: return "The EventDefinition resource provides a reusable description of when a particular event can occur.";
2457            case EVIDENCE: return "The Evidence Resource provides a machine-interpretable expression of an evidence concept including the evidence variables (eg population, exposures/interventions, comparators, outcomes, measured variables, confounding variables), the statistics, and the certainty of this evidence.";
2458            case EVIDENCEREPORT: return "The EvidenceReport Resource is a specialized container for a collection of resources and codable concepts, adapted to support compositions of Evidence, EvidenceVariable, and Citation resources and related concepts.";
2459            case EVIDENCEVARIABLE: return "The EvidenceVariable resource describes an element that knowledge (Evidence) is about.";
2460            case EXAMPLESCENARIO: return "Example of workflow instance.";
2461            case EXPLANATIONOFBENEFIT: return "This resource provides: the claim details; adjudication details from the processing of a Claim; and optionally account balance information, for informing the subscriber of the benefits provided.";
2462            case FAMILYMEMBERHISTORY: return "Significant health conditions for a person related to the patient relevant in the context of care for the patient.";
2463            case FLAG: return "Prospective warnings of potential issues when providing care to the patient.";
2464            case GOAL: return "Describes the intended objective(s) for a patient, group or organization care, for example, weight loss, restoring an activity of daily living, obtaining herd immunity via immunization, meeting a process improvement objective, etc.";
2465            case GRAPHDEFINITION: return "A formal computable definition of a graph of resources - that is, a coherent set of resources that form a graph by following references. The Graph Definition resource defines a set and makes rules about the set.";
2466            case GROUP: return "Represents a defined collection of entities that may be discussed or acted upon collectively but which are not expected to act collectively, and are not formally or legally recognized; i.e. a collection of entities that isn't an Organization.";
2467            case GUIDANCERESPONSE: return "A guidance response is the formal response to a guidance request, including any output parameters returned by the evaluation, as well as the description of any proposed actions to be taken.";
2468            case HEALTHCARESERVICE: return "The details of a healthcare service available at a location.";
2469            case IMAGINGSTUDY: return "Representation of the content produced in a DICOM imaging study. A study comprises a set of series, each of which includes a set of Service-Object Pair Instances (SOP Instances - images or other data) acquired or produced in a common context.  A series is of only one modality (e.g. X-ray, CT, MR, ultrasound), but a study may have multiple series of different modalities.";
2470            case IMMUNIZATION: return "Describes the event of a patient being administered a vaccine or a record of an immunization as reported by a patient, a clinician or another party.";
2471            case IMMUNIZATIONEVALUATION: return "Describes a comparison of an immunization event against published recommendations to determine if the administration is \"valid\" in relation to those  recommendations.";
2472            case IMMUNIZATIONRECOMMENDATION: return "A patient's point-in-time set of recommendations (i.e. forecasting) according to a published schedule with optional supporting justification.";
2473            case IMPLEMENTATIONGUIDE: return "A set of rules of how a particular interoperability or standards problem is solved - typically through the use of FHIR resources. This resource is used to gather all the parts of an implementation guide into a logical whole and to publish a computable definition of all the parts.";
2474            case INGREDIENT: return "An ingredient of a manufactured item or pharmaceutical product.";
2475            case INSURANCEPLAN: return "Details of a Health Insurance product/plan provided by an organization.";
2476            case INVOICE: return "Invoice containing collected ChargeItems from an Account with calculated individual and total price for Billing purpose.";
2477            case LIBRARY: return "The Library resource is a general-purpose container for knowledge asset definitions. It can be used to describe and expose existing knowledge assets such as logic libraries and information model descriptions, as well as to describe a collection of knowledge assets.";
2478            case LINKAGE: return "Identifies two or more records (resource instances) that refer to the same real-world \"occurrence\".";
2479            case LIST: return "A list is a curated collection of resources.";
2480            case LOCATION: return "Details and position information for a physical place where services are provided and resources and participants may be stored, found, contained, or accommodated.";
2481            case MANUFACTUREDITEMDEFINITION: return "The definition and characteristics of a medicinal manufactured item, such as a tablet or capsule, as contained in a packaged medicinal product.";
2482            case MEASURE: return "The Measure resource provides the definition of a quality measure.";
2483            case MEASUREREPORT: return "The MeasureReport resource contains the results of the calculation of a measure; and optionally a reference to the resources involved in that calculation.";
2484            case MEDIA: return "A photo, video, or audio recording acquired or used in healthcare. The actual content may be inline or provided by direct reference.";
2485            case MEDICATION: return "This resource is primarily used for the identification and definition of a medication for the purposes of prescribing, dispensing, and administering a medication as well as for making statements about medication use.";
2486            case MEDICATIONADMINISTRATION: return "Describes the event of a patient consuming or otherwise being administered a medication.  This may be as simple as swallowing a tablet or it may be a long running infusion.  Related resources tie this event to the authorizing prescription, and the specific encounter between patient and health care practitioner.";
2487            case MEDICATIONDISPENSE: return "Indicates that a medication product is to be or has been dispensed for a named person/patient.  This includes a description of the medication product (supply) provided and the instructions for administering the medication.  The medication dispense is the result of a pharmacy system responding to a medication order.";
2488            case MEDICATIONKNOWLEDGE: return "Information about a medication that is used to support knowledge.";
2489            case MEDICATIONREQUEST: return "An order or request for both supply of the medication and the instructions for administration of the medication to a patient. The resource is called \"MedicationRequest\" rather than \"MedicationPrescription\" or \"MedicationOrder\" to generalize the use across inpatient and outpatient settings, including care plans, etc., and to harmonize with workflow patterns.";
2490            case MEDICATIONSTATEMENT: return "A record of a medication that is being consumed by a patient.   A MedicationStatement may indicate that the patient may be taking the medication now or has taken the medication in the past or will be taking the medication in the future.  The source of this information can be the patient, significant other (such as a family member or spouse), or a clinician.  A common scenario where this information is captured is during the history taking process during a patient visit or stay.   The medication information may come from sources such as the patient's memory, from a prescription bottle,  or from a list of medications the patient, clinician or other party maintains. \n\nThe primary difference between a medication statement and a medication administration is that the medication administration has complete administration information and is based on actual administration information from the person who administered the medication.  A medication statement is often, if not always, less specific.  There is no required date/time when the medication was administered, in fact we only know that a source has reported the patient is taking this medication, where details such as time, quantity, or rate or even medication product may be incomplete or missing or less precise.  As stated earlier, the medication statement information may come from the patient's memory, from a prescription bottle or from a list of medications the patient, clinician or other party maintains.  Medication administration is more formal and is not missing detailed information.";
2491            case MEDICINALPRODUCTDEFINITION: return "Detailed definition of a medicinal product, typically for uses other than direct patient care (e.g. regulatory use, drug catalogs).";
2492            case MESSAGEDEFINITION: return "Defines the characteristics of a message that can be shared between systems, including the type of event that initiates the message, the content to be transmitted and what response(s), if any, are permitted.";
2493            case MESSAGEHEADER: return "The header for a message exchange that is either requesting or responding to an action.  The reference(s) that are the subject of the action as well as other information related to the action are typically transmitted in a bundle in which the MessageHeader resource instance is the first resource in the bundle.";
2494            case MOLECULARSEQUENCE: return "Raw data describing a biological sequence.";
2495            case NAMINGSYSTEM: return "A curated namespace that issues unique symbols within that namespace for the identification of concepts, people, devices, etc.  Represents a \"System\" used within the Identifier and Coding data types.";
2496            case NUTRITIONORDER: return "A request to supply a diet, formula feeding (enteral) or oral nutritional supplement to a patient/resident.";
2497            case NUTRITIONPRODUCT: return "A food or fluid product that is consumed by patients.";
2498            case OBSERVATION: return "Measurements and simple assertions made about a patient, device or other subject.";
2499            case OBSERVATIONDEFINITION: return "Set of definitional characteristics for a kind of observation or measurement produced or consumed by an orderable health care service.";
2500            case OPERATIONDEFINITION: return "A formal computable definition of an operation (on the RESTful interface) or a named query (using the search interaction).";
2501            case OPERATIONOUTCOME: return "A collection of error, warning, or information messages that result from a system action.";
2502            case ORGANIZATION: return "A formally or informally recognized grouping of people or organizations formed for the purpose of achieving some form of collective action.  Includes companies, institutions, corporations, departments, community groups, healthcare practice groups, payer/insurer, etc.";
2503            case ORGANIZATIONAFFILIATION: return "Defines an affiliation/assotiation/relationship between 2 distinct oganizations, that is not a part-of relationship/sub-division relationship.";
2504            case PACKAGEDPRODUCTDEFINITION: return "A medically related item or items, in a container or package.";
2505            case PATIENT: return "Demographics and other administrative information about an individual or animal receiving care or other health-related services.";
2506            case PAYMENTNOTICE: return "This resource provides the status of the payment for goods and services rendered, and the request and response resource references.";
2507            case PAYMENTRECONCILIATION: return "This resource provides the details including amount of a payment and allocates the payment items being paid.";
2508            case PERSON: return "Demographics and administrative information about a person independent of a specific health-related context.";
2509            case PLANDEFINITION: return "This resource allows for the definition of various types of plans as a sharable, consumable, and executable artifact. The resource is general enough to support the description of a broad range of clinical and non-clinical artifacts such as clinical decision support rules, order sets, protocols, and drug quality specifications.";
2510            case PRACTITIONER: return "A person who is directly or indirectly involved in the provisioning of healthcare.";
2511            case PRACTITIONERROLE: return "A specific set of Roles/Locations/specialties/services that a practitioner may perform at an organization for a period of time.";
2512            case PROCEDURE: return "An action that is or was performed on or for a patient. This can be a physical intervention like an operation, or less invasive like long term services, counseling, or hypnotherapy.";
2513            case PROVENANCE: return "Provenance of a resource is a record that describes entities and processes involved in producing and delivering or otherwise influencing that resource. Provenance provides a critical foundation for assessing authenticity, enabling trust, and allowing reproducibility. Provenance assertions are a form of contextual metadata and can themselves become important records with their own provenance. Provenance statement indicates clinical significance in terms of confidence in authenticity, reliability, and trustworthiness, integrity, and stage in lifecycle (e.g. Document Completion - has the artifact been legally authenticated), all of which may impact security, privacy, and trust policies.";
2514            case QUESTIONNAIRE: return "A structured set of questions intended to guide the collection of answers from end-users. Questionnaires provide detailed control over order, presentation, phraseology and grouping to allow coherent, consistent data collection.";
2515            case QUESTIONNAIRERESPONSE: return "A structured set of questions and their answers. The questions are ordered and grouped into coherent subsets, corresponding to the structure of the grouping of the questionnaire being responded to.";
2516            case REGULATEDAUTHORIZATION: return "Regulatory approval, clearance or licencing related to a regulated product, treatment, facility or activity that is cited in a guidance, regulation, rule or legislative act. An example is Market Authorization relating to a Medicinal Product.";
2517            case RELATEDPERSON: return "Information about a person that is involved in the care for a patient, but who is not the target of healthcare, nor has a formal responsibility in the care process.";
2518            case REQUESTGROUP: return "A group of related requests that can be used to capture intended activities that have inter-dependencies such as \"give this medication after that one\".";
2519            case RESEARCHDEFINITION: return "The ResearchDefinition resource describes the conditional state (population and any exposures being compared within the population) and outcome (if specified) that the knowledge (evidence, assertion, recommendation) is about.";
2520            case RESEARCHELEMENTDEFINITION: return "The ResearchElementDefinition resource describes a \"PICO\" element that knowledge (evidence, assertion, recommendation) is about.";
2521            case RESEARCHSTUDY: return "A process where a researcher or organization plans and then executes a series of steps intended to increase the field of healthcare-related knowledge.  This includes studies of safety, efficacy, comparative effectiveness and other information about medications, devices, therapies and other interventional and investigative techniques.  A ResearchStudy involves the gathering of information about human or animal subjects.";
2522            case RESEARCHSUBJECT: return "A physical entity which is the primary unit of operational and/or administrative interest in a study.";
2523            case RISKASSESSMENT: return "An assessment of the likely outcome(s) for a patient or other subject as well as the likelihood of each outcome.";
2524            case SCHEDULE: return "A container for slots of time that may be available for booking appointments.";
2525            case SEARCHPARAMETER: return "A search parameter that defines a named search item that can be used to search/filter on a resource.";
2526            case SERVICEREQUEST: return "A record of a request for service such as diagnostic investigations, treatments, or operations to be performed.";
2527            case SLOT: return "A slot of time on a schedule that may be available for booking appointments.";
2528            case SPECIMEN: return "A sample to be used for analysis.";
2529            case SPECIMENDEFINITION: return "A kind of specimen with associated set of requirements.";
2530            case STRUCTUREDEFINITION: return "A definition of a FHIR structure. This resource is used to describe the underlying resources, data types defined in FHIR, and also for describing extensions and constraints on resources and data types.";
2531            case STRUCTUREMAP: return "A Map of relationships between 2 structures that can be used to transform data.";
2532            case SUBSCRIPTION: return "The subscription resource is used to define a push-based subscription from a server to another system. Once a subscription is registered with the server, the server checks every resource that is created or updated, and if the resource matches the given criteria, it sends a message on the defined \"channel\" so that another system can take an appropriate action.";
2533            case SUBSCRIPTIONSTATUS: return "The SubscriptionStatus resource describes the state of a Subscription during notifications.";
2534            case SUBSCRIPTIONTOPIC: return "Describes a stream of resource state changes identified by trigger criteria and annotated with labels useful to filter projections from this topic.";
2535            case SUBSTANCE: return "A homogeneous material with a definite composition.";
2536            case SUBSTANCEDEFINITION: return "The detailed description of a substance, typically at a level beyond what is used for prescribing.";
2537            case SUPPLYDELIVERY: return "Record of delivery of what is supplied.";
2538            case SUPPLYREQUEST: return "A record of a request for a medication, substance or device used in the healthcare setting.";
2539            case TASK: return "A task to be performed.";
2540            case TERMINOLOGYCAPABILITIES: return "A TerminologyCapabilities resource documents a set of capabilities (behaviors) of a FHIR Terminology Server that may be used as a statement of actual server functionality or a statement of required or desired server implementation.";
2541            case TESTREPORT: return "A summary of information based on the results of executing a TestScript.";
2542            case TESTSCRIPT: return "A structured set of tests against a FHIR server or client implementation to determine compliance against the FHIR specification.";
2543            case VALUESET: return "A ValueSet resource instance specifies a set of codes drawn from one or more code systems, intended for use in a particular context. Value sets link between [[[CodeSystem]]] definitions and their use in [coded elements](terminologies.html).";
2544            case VERIFICATIONRESULT: return "Describes validation requirements, source(s), status and dates for one or more elements.";
2545            case VISIONPRESCRIPTION: return "An authorization for the provision of glasses and/or contact lenses to a patient.";
2546            case PARAMETERS: return "This resource is a non-persisted resource used to pass information into and back from an [operation](operations.html). It has no other use, and there is no RESTful endpoint associated with it.";
2547            case NULL: return null;
2548            default: return "?";
2549          }
2550        }
2551        public String getDisplay() {
2552          switch (this) {
2553            case ADDRESS: return "Address";
2554            case AGE: return "Age";
2555            case ANNOTATION: return "Annotation";
2556            case ATTACHMENT: return "Attachment";
2557            case BACKBONEELEMENT: return "BackboneElement";
2558            case CODEABLECONCEPT: return "CodeableConcept";
2559            case CODEABLEREFERENCE: return "CodeableReference";
2560            case CODING: return "Coding";
2561            case CONTACTDETAIL: return "ContactDetail";
2562            case CONTACTPOINT: return "ContactPoint";
2563            case CONTRIBUTOR: return "Contributor";
2564            case COUNT: return "Count";
2565            case DATAREQUIREMENT: return "DataRequirement";
2566            case DATATYPE: return "DataType";
2567            case DISTANCE: return "Distance";
2568            case DOSAGE: return "Dosage";
2569            case DURATION: return "Duration";
2570            case ELEMENT: return "Element";
2571            case ELEMENTDEFINITION: return "ElementDefinition";
2572            case EXPRESSION: return "Expression";
2573            case EXTENSION: return "Extension";
2574            case HUMANNAME: return "HumanName";
2575            case IDENTIFIER: return "Identifier";
2576            case MARKETINGSTATUS: return "MarketingStatus";
2577            case META: return "Meta";
2578            case MONEY: return "Money";
2579            case MONEYQUANTITY: return "MoneyQuantity";
2580            case NARRATIVE: return "Narrative";
2581            case PARAMETERDEFINITION: return "ParameterDefinition";
2582            case PERIOD: return "Period";
2583            case POPULATION: return "Population";
2584            case PRODCHARACTERISTIC: return "ProdCharacteristic";
2585            case PRODUCTSHELFLIFE: return "ProductShelfLife";
2586            case QUANTITY: return "Quantity";
2587            case RANGE: return "Range";
2588            case RATIO: return "Ratio";
2589            case RATIORANGE: return "RatioRange";
2590            case REFERENCE: return "Reference";
2591            case RELATEDARTIFACT: return "RelatedArtifact";
2592            case SAMPLEDDATA: return "SampledData";
2593            case SIGNATURE: return "Signature";
2594            case SIMPLEQUANTITY: return "SimpleQuantity";
2595            case TIMING: return "Timing";
2596            case TRIGGERDEFINITION: return "TriggerDefinition";
2597            case USAGECONTEXT: return "UsageContext";
2598            case BASE64BINARY: return "base64Binary";
2599            case BOOLEAN: return "boolean";
2600            case CANONICAL: return "canonical";
2601            case CODE: return "code";
2602            case DATE: return "date";
2603            case DATETIME: return "dateTime";
2604            case DECIMAL: return "decimal";
2605            case ID: return "id";
2606            case INSTANT: return "instant";
2607            case INTEGER: return "integer";
2608            case MARKDOWN: return "markdown";
2609            case OID: return "oid";
2610            case POSITIVEINT: return "positiveInt";
2611            case STRING: return "string";
2612            case TIME: return "time";
2613            case UNSIGNEDINT: return "unsignedInt";
2614            case URI: return "uri";
2615            case URL: return "url";
2616            case UUID: return "uuid";
2617            case XHTML: return "XHTML";
2618            case RESOURCE: return "Resource";
2619            case BINARY: return "Binary";
2620            case BUNDLE: return "Bundle";
2621            case DOMAINRESOURCE: return "DomainResource";
2622            case ACCOUNT: return "Account";
2623            case ACTIVITYDEFINITION: return "ActivityDefinition";
2624            case ADMINISTRABLEPRODUCTDEFINITION: return "AdministrableProductDefinition";
2625            case ADVERSEEVENT: return "AdverseEvent";
2626            case ALLERGYINTOLERANCE: return "AllergyIntolerance";
2627            case APPOINTMENT: return "Appointment";
2628            case APPOINTMENTRESPONSE: return "AppointmentResponse";
2629            case AUDITEVENT: return "AuditEvent";
2630            case BASIC: return "Basic";
2631            case BIOLOGICALLYDERIVEDPRODUCT: return "BiologicallyDerivedProduct";
2632            case BODYSTRUCTURE: return "BodyStructure";
2633            case CAPABILITYSTATEMENT: return "CapabilityStatement";
2634            case CAREPLAN: return "CarePlan";
2635            case CARETEAM: return "CareTeam";
2636            case CATALOGENTRY: return "CatalogEntry";
2637            case CHARGEITEM: return "ChargeItem";
2638            case CHARGEITEMDEFINITION: return "ChargeItemDefinition";
2639            case CITATION: return "Citation";
2640            case CLAIM: return "Claim";
2641            case CLAIMRESPONSE: return "ClaimResponse";
2642            case CLINICALIMPRESSION: return "ClinicalImpression";
2643            case CLINICALUSEDEFINITION: return "ClinicalUseDefinition";
2644            case CODESYSTEM: return "CodeSystem";
2645            case COMMUNICATION: return "Communication";
2646            case COMMUNICATIONREQUEST: return "CommunicationRequest";
2647            case COMPARTMENTDEFINITION: return "CompartmentDefinition";
2648            case COMPOSITION: return "Composition";
2649            case CONCEPTMAP: return "ConceptMap";
2650            case CONDITION: return "Condition";
2651            case CONSENT: return "Consent";
2652            case CONTRACT: return "Contract";
2653            case COVERAGE: return "Coverage";
2654            case COVERAGEELIGIBILITYREQUEST: return "CoverageEligibilityRequest";
2655            case COVERAGEELIGIBILITYRESPONSE: return "CoverageEligibilityResponse";
2656            case DETECTEDISSUE: return "DetectedIssue";
2657            case DEVICE: return "Device";
2658            case DEVICEDEFINITION: return "DeviceDefinition";
2659            case DEVICEMETRIC: return "DeviceMetric";
2660            case DEVICEREQUEST: return "DeviceRequest";
2661            case DEVICEUSESTATEMENT: return "DeviceUseStatement";
2662            case DIAGNOSTICREPORT: return "DiagnosticReport";
2663            case DOCUMENTMANIFEST: return "DocumentManifest";
2664            case DOCUMENTREFERENCE: return "DocumentReference";
2665            case ENCOUNTER: return "Encounter";
2666            case ENDPOINT: return "Endpoint";
2667            case ENROLLMENTREQUEST: return "EnrollmentRequest";
2668            case ENROLLMENTRESPONSE: return "EnrollmentResponse";
2669            case EPISODEOFCARE: return "EpisodeOfCare";
2670            case EVENTDEFINITION: return "EventDefinition";
2671            case EVIDENCE: return "Evidence";
2672            case EVIDENCEREPORT: return "EvidenceReport";
2673            case EVIDENCEVARIABLE: return "EvidenceVariable";
2674            case EXAMPLESCENARIO: return "ExampleScenario";
2675            case EXPLANATIONOFBENEFIT: return "ExplanationOfBenefit";
2676            case FAMILYMEMBERHISTORY: return "FamilyMemberHistory";
2677            case FLAG: return "Flag";
2678            case GOAL: return "Goal";
2679            case GRAPHDEFINITION: return "GraphDefinition";
2680            case GROUP: return "Group";
2681            case GUIDANCERESPONSE: return "GuidanceResponse";
2682            case HEALTHCARESERVICE: return "HealthcareService";
2683            case IMAGINGSTUDY: return "ImagingStudy";
2684            case IMMUNIZATION: return "Immunization";
2685            case IMMUNIZATIONEVALUATION: return "ImmunizationEvaluation";
2686            case IMMUNIZATIONRECOMMENDATION: return "ImmunizationRecommendation";
2687            case IMPLEMENTATIONGUIDE: return "ImplementationGuide";
2688            case INGREDIENT: return "Ingredient";
2689            case INSURANCEPLAN: return "InsurancePlan";
2690            case INVOICE: return "Invoice";
2691            case LIBRARY: return "Library";
2692            case LINKAGE: return "Linkage";
2693            case LIST: return "List";
2694            case LOCATION: return "Location";
2695            case MANUFACTUREDITEMDEFINITION: return "ManufacturedItemDefinition";
2696            case MEASURE: return "Measure";
2697            case MEASUREREPORT: return "MeasureReport";
2698            case MEDIA: return "Media";
2699            case MEDICATION: return "Medication";
2700            case MEDICATIONADMINISTRATION: return "MedicationAdministration";
2701            case MEDICATIONDISPENSE: return "MedicationDispense";
2702            case MEDICATIONKNOWLEDGE: return "MedicationKnowledge";
2703            case MEDICATIONREQUEST: return "MedicationRequest";
2704            case MEDICATIONSTATEMENT: return "MedicationStatement";
2705            case MEDICINALPRODUCTDEFINITION: return "MedicinalProductDefinition";
2706            case MESSAGEDEFINITION: return "MessageDefinition";
2707            case MESSAGEHEADER: return "MessageHeader";
2708            case MOLECULARSEQUENCE: return "MolecularSequence";
2709            case NAMINGSYSTEM: return "NamingSystem";
2710            case NUTRITIONORDER: return "NutritionOrder";
2711            case NUTRITIONPRODUCT: return "NutritionProduct";
2712            case OBSERVATION: return "Observation";
2713            case OBSERVATIONDEFINITION: return "ObservationDefinition";
2714            case OPERATIONDEFINITION: return "OperationDefinition";
2715            case OPERATIONOUTCOME: return "OperationOutcome";
2716            case ORGANIZATION: return "Organization";
2717            case ORGANIZATIONAFFILIATION: return "OrganizationAffiliation";
2718            case PACKAGEDPRODUCTDEFINITION: return "PackagedProductDefinition";
2719            case PATIENT: return "Patient";
2720            case PAYMENTNOTICE: return "PaymentNotice";
2721            case PAYMENTRECONCILIATION: return "PaymentReconciliation";
2722            case PERSON: return "Person";
2723            case PLANDEFINITION: return "PlanDefinition";
2724            case PRACTITIONER: return "Practitioner";
2725            case PRACTITIONERROLE: return "PractitionerRole";
2726            case PROCEDURE: return "Procedure";
2727            case PROVENANCE: return "Provenance";
2728            case QUESTIONNAIRE: return "Questionnaire";
2729            case QUESTIONNAIRERESPONSE: return "QuestionnaireResponse";
2730            case REGULATEDAUTHORIZATION: return "RegulatedAuthorization";
2731            case RELATEDPERSON: return "RelatedPerson";
2732            case REQUESTGROUP: return "RequestGroup";
2733            case RESEARCHDEFINITION: return "ResearchDefinition";
2734            case RESEARCHELEMENTDEFINITION: return "ResearchElementDefinition";
2735            case RESEARCHSTUDY: return "ResearchStudy";
2736            case RESEARCHSUBJECT: return "ResearchSubject";
2737            case RISKASSESSMENT: return "RiskAssessment";
2738            case SCHEDULE: return "Schedule";
2739            case SEARCHPARAMETER: return "SearchParameter";
2740            case SERVICEREQUEST: return "ServiceRequest";
2741            case SLOT: return "Slot";
2742            case SPECIMEN: return "Specimen";
2743            case SPECIMENDEFINITION: return "SpecimenDefinition";
2744            case STRUCTUREDEFINITION: return "StructureDefinition";
2745            case STRUCTUREMAP: return "StructureMap";
2746            case SUBSCRIPTION: return "Subscription";
2747            case SUBSCRIPTIONSTATUS: return "SubscriptionStatus";
2748            case SUBSCRIPTIONTOPIC: return "SubscriptionTopic";
2749            case SUBSTANCE: return "Substance";
2750            case SUBSTANCEDEFINITION: return "SubstanceDefinition";
2751            case SUPPLYDELIVERY: return "SupplyDelivery";
2752            case SUPPLYREQUEST: return "SupplyRequest";
2753            case TASK: return "Task";
2754            case TERMINOLOGYCAPABILITIES: return "TerminologyCapabilities";
2755            case TESTREPORT: return "TestReport";
2756            case TESTSCRIPT: return "TestScript";
2757            case VALUESET: return "ValueSet";
2758            case VERIFICATIONRESULT: return "VerificationResult";
2759            case VISIONPRESCRIPTION: return "VisionPrescription";
2760            case PARAMETERS: return "Parameters";
2761            case NULL: return null;
2762            default: return "?";
2763          }
2764        }
2765    }
2766
2767  public static class FHIRDefinedTypeEnumFactory implements EnumFactory<FHIRDefinedType> {
2768    public FHIRDefinedType fromCode(String codeString) throws IllegalArgumentException {
2769      if (codeString == null || "".equals(codeString))
2770            if (codeString == null || "".equals(codeString))
2771                return null;
2772        if ("Address".equals(codeString))
2773          return FHIRDefinedType.ADDRESS;
2774        if ("Age".equals(codeString))
2775          return FHIRDefinedType.AGE;
2776        if ("Annotation".equals(codeString))
2777          return FHIRDefinedType.ANNOTATION;
2778        if ("Attachment".equals(codeString))
2779          return FHIRDefinedType.ATTACHMENT;
2780        if ("BackboneElement".equals(codeString))
2781          return FHIRDefinedType.BACKBONEELEMENT;
2782        if ("CodeableConcept".equals(codeString))
2783          return FHIRDefinedType.CODEABLECONCEPT;
2784        if ("CodeableReference".equals(codeString))
2785          return FHIRDefinedType.CODEABLEREFERENCE;
2786        if ("Coding".equals(codeString))
2787          return FHIRDefinedType.CODING;
2788        if ("ContactDetail".equals(codeString))
2789          return FHIRDefinedType.CONTACTDETAIL;
2790        if ("ContactPoint".equals(codeString))
2791          return FHIRDefinedType.CONTACTPOINT;
2792        if ("Contributor".equals(codeString))
2793          return FHIRDefinedType.CONTRIBUTOR;
2794        if ("Count".equals(codeString))
2795          return FHIRDefinedType.COUNT;
2796        if ("DataRequirement".equals(codeString))
2797          return FHIRDefinedType.DATAREQUIREMENT;
2798        if ("DataType".equals(codeString))
2799          return FHIRDefinedType.DATATYPE;
2800        if ("Distance".equals(codeString))
2801          return FHIRDefinedType.DISTANCE;
2802        if ("Dosage".equals(codeString))
2803          return FHIRDefinedType.DOSAGE;
2804        if ("Duration".equals(codeString))
2805          return FHIRDefinedType.DURATION;
2806        if ("Element".equals(codeString))
2807          return FHIRDefinedType.ELEMENT;
2808        if ("ElementDefinition".equals(codeString))
2809          return FHIRDefinedType.ELEMENTDEFINITION;
2810        if ("Expression".equals(codeString))
2811          return FHIRDefinedType.EXPRESSION;
2812        if ("Extension".equals(codeString))
2813          return FHIRDefinedType.EXTENSION;
2814        if ("HumanName".equals(codeString))
2815          return FHIRDefinedType.HUMANNAME;
2816        if ("Identifier".equals(codeString))
2817          return FHIRDefinedType.IDENTIFIER;
2818        if ("MarketingStatus".equals(codeString))
2819          return FHIRDefinedType.MARKETINGSTATUS;
2820        if ("Meta".equals(codeString))
2821          return FHIRDefinedType.META;
2822        if ("Money".equals(codeString))
2823          return FHIRDefinedType.MONEY;
2824        if ("MoneyQuantity".equals(codeString))
2825          return FHIRDefinedType.MONEYQUANTITY;
2826        if ("Narrative".equals(codeString))
2827          return FHIRDefinedType.NARRATIVE;
2828        if ("ParameterDefinition".equals(codeString))
2829          return FHIRDefinedType.PARAMETERDEFINITION;
2830        if ("Period".equals(codeString))
2831          return FHIRDefinedType.PERIOD;
2832        if ("Population".equals(codeString))
2833          return FHIRDefinedType.POPULATION;
2834        if ("ProdCharacteristic".equals(codeString))
2835          return FHIRDefinedType.PRODCHARACTERISTIC;
2836        if ("ProductShelfLife".equals(codeString))
2837          return FHIRDefinedType.PRODUCTSHELFLIFE;
2838        if ("Quantity".equals(codeString))
2839          return FHIRDefinedType.QUANTITY;
2840        if ("Range".equals(codeString))
2841          return FHIRDefinedType.RANGE;
2842        if ("Ratio".equals(codeString))
2843          return FHIRDefinedType.RATIO;
2844        if ("RatioRange".equals(codeString))
2845          return FHIRDefinedType.RATIORANGE;
2846        if ("Reference".equals(codeString))
2847          return FHIRDefinedType.REFERENCE;
2848        if ("RelatedArtifact".equals(codeString))
2849          return FHIRDefinedType.RELATEDARTIFACT;
2850        if ("SampledData".equals(codeString))
2851          return FHIRDefinedType.SAMPLEDDATA;
2852        if ("Signature".equals(codeString))
2853          return FHIRDefinedType.SIGNATURE;
2854        if ("SimpleQuantity".equals(codeString))
2855          return FHIRDefinedType.SIMPLEQUANTITY;
2856        if ("Timing".equals(codeString))
2857          return FHIRDefinedType.TIMING;
2858        if ("TriggerDefinition".equals(codeString))
2859          return FHIRDefinedType.TRIGGERDEFINITION;
2860        if ("UsageContext".equals(codeString))
2861          return FHIRDefinedType.USAGECONTEXT;
2862        if ("base64Binary".equals(codeString))
2863          return FHIRDefinedType.BASE64BINARY;
2864        if ("boolean".equals(codeString))
2865          return FHIRDefinedType.BOOLEAN;
2866        if ("canonical".equals(codeString))
2867          return FHIRDefinedType.CANONICAL;
2868        if ("code".equals(codeString))
2869          return FHIRDefinedType.CODE;
2870        if ("date".equals(codeString))
2871          return FHIRDefinedType.DATE;
2872        if ("dateTime".equals(codeString))
2873          return FHIRDefinedType.DATETIME;
2874        if ("decimal".equals(codeString))
2875          return FHIRDefinedType.DECIMAL;
2876        if ("id".equals(codeString))
2877          return FHIRDefinedType.ID;
2878        if ("instant".equals(codeString))
2879          return FHIRDefinedType.INSTANT;
2880        if ("integer".equals(codeString))
2881          return FHIRDefinedType.INTEGER;
2882        if ("markdown".equals(codeString))
2883          return FHIRDefinedType.MARKDOWN;
2884        if ("oid".equals(codeString))
2885          return FHIRDefinedType.OID;
2886        if ("positiveInt".equals(codeString))
2887          return FHIRDefinedType.POSITIVEINT;
2888        if ("string".equals(codeString))
2889          return FHIRDefinedType.STRING;
2890        if ("time".equals(codeString))
2891          return FHIRDefinedType.TIME;
2892        if ("unsignedInt".equals(codeString))
2893          return FHIRDefinedType.UNSIGNEDINT;
2894        if ("uri".equals(codeString))
2895          return FHIRDefinedType.URI;
2896        if ("url".equals(codeString))
2897          return FHIRDefinedType.URL;
2898        if ("uuid".equals(codeString))
2899          return FHIRDefinedType.UUID;
2900        if ("xhtml".equals(codeString))
2901          return FHIRDefinedType.XHTML;
2902        if ("Resource".equals(codeString))
2903          return FHIRDefinedType.RESOURCE;
2904        if ("Binary".equals(codeString))
2905          return FHIRDefinedType.BINARY;
2906        if ("Bundle".equals(codeString))
2907          return FHIRDefinedType.BUNDLE;
2908        if ("DomainResource".equals(codeString))
2909          return FHIRDefinedType.DOMAINRESOURCE;
2910        if ("Account".equals(codeString))
2911          return FHIRDefinedType.ACCOUNT;
2912        if ("ActivityDefinition".equals(codeString))
2913          return FHIRDefinedType.ACTIVITYDEFINITION;
2914        if ("AdministrableProductDefinition".equals(codeString))
2915          return FHIRDefinedType.ADMINISTRABLEPRODUCTDEFINITION;
2916        if ("AdverseEvent".equals(codeString))
2917          return FHIRDefinedType.ADVERSEEVENT;
2918        if ("AllergyIntolerance".equals(codeString))
2919          return FHIRDefinedType.ALLERGYINTOLERANCE;
2920        if ("Appointment".equals(codeString))
2921          return FHIRDefinedType.APPOINTMENT;
2922        if ("AppointmentResponse".equals(codeString))
2923          return FHIRDefinedType.APPOINTMENTRESPONSE;
2924        if ("AuditEvent".equals(codeString))
2925          return FHIRDefinedType.AUDITEVENT;
2926        if ("Basic".equals(codeString))
2927          return FHIRDefinedType.BASIC;
2928        if ("BiologicallyDerivedProduct".equals(codeString))
2929          return FHIRDefinedType.BIOLOGICALLYDERIVEDPRODUCT;
2930        if ("BodyStructure".equals(codeString))
2931          return FHIRDefinedType.BODYSTRUCTURE;
2932        if ("CapabilityStatement".equals(codeString))
2933          return FHIRDefinedType.CAPABILITYSTATEMENT;
2934        if ("CarePlan".equals(codeString))
2935          return FHIRDefinedType.CAREPLAN;
2936        if ("CareTeam".equals(codeString))
2937          return FHIRDefinedType.CARETEAM;
2938        if ("CatalogEntry".equals(codeString))
2939          return FHIRDefinedType.CATALOGENTRY;
2940        if ("ChargeItem".equals(codeString))
2941          return FHIRDefinedType.CHARGEITEM;
2942        if ("ChargeItemDefinition".equals(codeString))
2943          return FHIRDefinedType.CHARGEITEMDEFINITION;
2944        if ("Citation".equals(codeString))
2945          return FHIRDefinedType.CITATION;
2946        if ("Claim".equals(codeString))
2947          return FHIRDefinedType.CLAIM;
2948        if ("ClaimResponse".equals(codeString))
2949          return FHIRDefinedType.CLAIMRESPONSE;
2950        if ("ClinicalImpression".equals(codeString))
2951          return FHIRDefinedType.CLINICALIMPRESSION;
2952        if ("ClinicalUseDefinition".equals(codeString))
2953          return FHIRDefinedType.CLINICALUSEDEFINITION;
2954        if ("CodeSystem".equals(codeString))
2955          return FHIRDefinedType.CODESYSTEM;
2956        if ("Communication".equals(codeString))
2957          return FHIRDefinedType.COMMUNICATION;
2958        if ("CommunicationRequest".equals(codeString))
2959          return FHIRDefinedType.COMMUNICATIONREQUEST;
2960        if ("CompartmentDefinition".equals(codeString))
2961          return FHIRDefinedType.COMPARTMENTDEFINITION;
2962        if ("Composition".equals(codeString))
2963          return FHIRDefinedType.COMPOSITION;
2964        if ("ConceptMap".equals(codeString))
2965          return FHIRDefinedType.CONCEPTMAP;
2966        if ("Condition".equals(codeString))
2967          return FHIRDefinedType.CONDITION;
2968        if ("Consent".equals(codeString))
2969          return FHIRDefinedType.CONSENT;
2970        if ("Contract".equals(codeString))
2971          return FHIRDefinedType.CONTRACT;
2972        if ("Coverage".equals(codeString))
2973          return FHIRDefinedType.COVERAGE;
2974        if ("CoverageEligibilityRequest".equals(codeString))
2975          return FHIRDefinedType.COVERAGEELIGIBILITYREQUEST;
2976        if ("CoverageEligibilityResponse".equals(codeString))
2977          return FHIRDefinedType.COVERAGEELIGIBILITYRESPONSE;
2978        if ("DetectedIssue".equals(codeString))
2979          return FHIRDefinedType.DETECTEDISSUE;
2980        if ("Device".equals(codeString))
2981          return FHIRDefinedType.DEVICE;
2982        if ("DeviceDefinition".equals(codeString))
2983          return FHIRDefinedType.DEVICEDEFINITION;
2984        if ("DeviceMetric".equals(codeString))
2985          return FHIRDefinedType.DEVICEMETRIC;
2986        if ("DeviceRequest".equals(codeString))
2987          return FHIRDefinedType.DEVICEREQUEST;
2988        if ("DeviceUseStatement".equals(codeString))
2989          return FHIRDefinedType.DEVICEUSESTATEMENT;
2990        if ("DiagnosticReport".equals(codeString))
2991          return FHIRDefinedType.DIAGNOSTICREPORT;
2992        if ("DocumentManifest".equals(codeString))
2993          return FHIRDefinedType.DOCUMENTMANIFEST;
2994        if ("DocumentReference".equals(codeString))
2995          return FHIRDefinedType.DOCUMENTREFERENCE;
2996        if ("Encounter".equals(codeString))
2997          return FHIRDefinedType.ENCOUNTER;
2998        if ("Endpoint".equals(codeString))
2999          return FHIRDefinedType.ENDPOINT;
3000        if ("EnrollmentRequest".equals(codeString))
3001          return FHIRDefinedType.ENROLLMENTREQUEST;
3002        if ("EnrollmentResponse".equals(codeString))
3003          return FHIRDefinedType.ENROLLMENTRESPONSE;
3004        if ("EpisodeOfCare".equals(codeString))
3005          return FHIRDefinedType.EPISODEOFCARE;
3006        if ("EventDefinition".equals(codeString))
3007          return FHIRDefinedType.EVENTDEFINITION;
3008        if ("Evidence".equals(codeString))
3009          return FHIRDefinedType.EVIDENCE;
3010        if ("EvidenceReport".equals(codeString))
3011          return FHIRDefinedType.EVIDENCEREPORT;
3012        if ("EvidenceVariable".equals(codeString))
3013          return FHIRDefinedType.EVIDENCEVARIABLE;
3014        if ("ExampleScenario".equals(codeString))
3015          return FHIRDefinedType.EXAMPLESCENARIO;
3016        if ("ExplanationOfBenefit".equals(codeString))
3017          return FHIRDefinedType.EXPLANATIONOFBENEFIT;
3018        if ("FamilyMemberHistory".equals(codeString))
3019          return FHIRDefinedType.FAMILYMEMBERHISTORY;
3020        if ("Flag".equals(codeString))
3021          return FHIRDefinedType.FLAG;
3022        if ("Goal".equals(codeString))
3023          return FHIRDefinedType.GOAL;
3024        if ("GraphDefinition".equals(codeString))
3025          return FHIRDefinedType.GRAPHDEFINITION;
3026        if ("Group".equals(codeString))
3027          return FHIRDefinedType.GROUP;
3028        if ("GuidanceResponse".equals(codeString))
3029          return FHIRDefinedType.GUIDANCERESPONSE;
3030        if ("HealthcareService".equals(codeString))
3031          return FHIRDefinedType.HEALTHCARESERVICE;
3032        if ("ImagingStudy".equals(codeString))
3033          return FHIRDefinedType.IMAGINGSTUDY;
3034        if ("Immunization".equals(codeString))
3035          return FHIRDefinedType.IMMUNIZATION;
3036        if ("ImmunizationEvaluation".equals(codeString))
3037          return FHIRDefinedType.IMMUNIZATIONEVALUATION;
3038        if ("ImmunizationRecommendation".equals(codeString))
3039          return FHIRDefinedType.IMMUNIZATIONRECOMMENDATION;
3040        if ("ImplementationGuide".equals(codeString))
3041          return FHIRDefinedType.IMPLEMENTATIONGUIDE;
3042        if ("Ingredient".equals(codeString))
3043          return FHIRDefinedType.INGREDIENT;
3044        if ("InsurancePlan".equals(codeString))
3045          return FHIRDefinedType.INSURANCEPLAN;
3046        if ("Invoice".equals(codeString))
3047          return FHIRDefinedType.INVOICE;
3048        if ("Library".equals(codeString))
3049          return FHIRDefinedType.LIBRARY;
3050        if ("Linkage".equals(codeString))
3051          return FHIRDefinedType.LINKAGE;
3052        if ("List".equals(codeString))
3053          return FHIRDefinedType.LIST;
3054        if ("Location".equals(codeString))
3055          return FHIRDefinedType.LOCATION;
3056        if ("ManufacturedItemDefinition".equals(codeString))
3057          return FHIRDefinedType.MANUFACTUREDITEMDEFINITION;
3058        if ("Measure".equals(codeString))
3059          return FHIRDefinedType.MEASURE;
3060        if ("MeasureReport".equals(codeString))
3061          return FHIRDefinedType.MEASUREREPORT;
3062        if ("Media".equals(codeString))
3063          return FHIRDefinedType.MEDIA;
3064        if ("Medication".equals(codeString))
3065          return FHIRDefinedType.MEDICATION;
3066        if ("MedicationAdministration".equals(codeString))
3067          return FHIRDefinedType.MEDICATIONADMINISTRATION;
3068        if ("MedicationDispense".equals(codeString))
3069          return FHIRDefinedType.MEDICATIONDISPENSE;
3070        if ("MedicationKnowledge".equals(codeString))
3071          return FHIRDefinedType.MEDICATIONKNOWLEDGE;
3072        if ("MedicationRequest".equals(codeString))
3073          return FHIRDefinedType.MEDICATIONREQUEST;
3074        if ("MedicationStatement".equals(codeString))
3075          return FHIRDefinedType.MEDICATIONSTATEMENT;
3076        if ("MedicinalProductDefinition".equals(codeString))
3077          return FHIRDefinedType.MEDICINALPRODUCTDEFINITION;
3078        if ("MessageDefinition".equals(codeString))
3079          return FHIRDefinedType.MESSAGEDEFINITION;
3080        if ("MessageHeader".equals(codeString))
3081          return FHIRDefinedType.MESSAGEHEADER;
3082        if ("MolecularSequence".equals(codeString))
3083          return FHIRDefinedType.MOLECULARSEQUENCE;
3084        if ("NamingSystem".equals(codeString))
3085          return FHIRDefinedType.NAMINGSYSTEM;
3086        if ("NutritionOrder".equals(codeString))
3087          return FHIRDefinedType.NUTRITIONORDER;
3088        if ("NutritionProduct".equals(codeString))
3089          return FHIRDefinedType.NUTRITIONPRODUCT;
3090        if ("Observation".equals(codeString))
3091          return FHIRDefinedType.OBSERVATION;
3092        if ("ObservationDefinition".equals(codeString))
3093          return FHIRDefinedType.OBSERVATIONDEFINITION;
3094        if ("OperationDefinition".equals(codeString))
3095          return FHIRDefinedType.OPERATIONDEFINITION;
3096        if ("OperationOutcome".equals(codeString))
3097          return FHIRDefinedType.OPERATIONOUTCOME;
3098        if ("Organization".equals(codeString))
3099          return FHIRDefinedType.ORGANIZATION;
3100        if ("OrganizationAffiliation".equals(codeString))
3101          return FHIRDefinedType.ORGANIZATIONAFFILIATION;
3102        if ("PackagedProductDefinition".equals(codeString))
3103          return FHIRDefinedType.PACKAGEDPRODUCTDEFINITION;
3104        if ("Patient".equals(codeString))
3105          return FHIRDefinedType.PATIENT;
3106        if ("PaymentNotice".equals(codeString))
3107          return FHIRDefinedType.PAYMENTNOTICE;
3108        if ("PaymentReconciliation".equals(codeString))
3109          return FHIRDefinedType.PAYMENTRECONCILIATION;
3110        if ("Person".equals(codeString))
3111          return FHIRDefinedType.PERSON;
3112        if ("PlanDefinition".equals(codeString))
3113          return FHIRDefinedType.PLANDEFINITION;
3114        if ("Practitioner".equals(codeString))
3115          return FHIRDefinedType.PRACTITIONER;
3116        if ("PractitionerRole".equals(codeString))
3117          return FHIRDefinedType.PRACTITIONERROLE;
3118        if ("Procedure".equals(codeString))
3119          return FHIRDefinedType.PROCEDURE;
3120        if ("Provenance".equals(codeString))
3121          return FHIRDefinedType.PROVENANCE;
3122        if ("Questionnaire".equals(codeString))
3123          return FHIRDefinedType.QUESTIONNAIRE;
3124        if ("QuestionnaireResponse".equals(codeString))
3125          return FHIRDefinedType.QUESTIONNAIRERESPONSE;
3126        if ("RegulatedAuthorization".equals(codeString))
3127          return FHIRDefinedType.REGULATEDAUTHORIZATION;
3128        if ("RelatedPerson".equals(codeString))
3129          return FHIRDefinedType.RELATEDPERSON;
3130        if ("RequestGroup".equals(codeString))
3131          return FHIRDefinedType.REQUESTGROUP;
3132        if ("ResearchDefinition".equals(codeString))
3133          return FHIRDefinedType.RESEARCHDEFINITION;
3134        if ("ResearchElementDefinition".equals(codeString))
3135          return FHIRDefinedType.RESEARCHELEMENTDEFINITION;
3136        if ("ResearchStudy".equals(codeString))
3137          return FHIRDefinedType.RESEARCHSTUDY;
3138        if ("ResearchSubject".equals(codeString))
3139          return FHIRDefinedType.RESEARCHSUBJECT;
3140        if ("RiskAssessment".equals(codeString))
3141          return FHIRDefinedType.RISKASSESSMENT;
3142        if ("Schedule".equals(codeString))
3143          return FHIRDefinedType.SCHEDULE;
3144        if ("SearchParameter".equals(codeString))
3145          return FHIRDefinedType.SEARCHPARAMETER;
3146        if ("ServiceRequest".equals(codeString))
3147          return FHIRDefinedType.SERVICEREQUEST;
3148        if ("Slot".equals(codeString))
3149          return FHIRDefinedType.SLOT;
3150        if ("Specimen".equals(codeString))
3151          return FHIRDefinedType.SPECIMEN;
3152        if ("SpecimenDefinition".equals(codeString))
3153          return FHIRDefinedType.SPECIMENDEFINITION;
3154        if ("StructureDefinition".equals(codeString))
3155          return FHIRDefinedType.STRUCTUREDEFINITION;
3156        if ("StructureMap".equals(codeString))
3157          return FHIRDefinedType.STRUCTUREMAP;
3158        if ("Subscription".equals(codeString))
3159          return FHIRDefinedType.SUBSCRIPTION;
3160        if ("SubscriptionStatus".equals(codeString))
3161          return FHIRDefinedType.SUBSCRIPTIONSTATUS;
3162        if ("SubscriptionTopic".equals(codeString))
3163          return FHIRDefinedType.SUBSCRIPTIONTOPIC;
3164        if ("Substance".equals(codeString))
3165          return FHIRDefinedType.SUBSTANCE;
3166        if ("SubstanceDefinition".equals(codeString))
3167          return FHIRDefinedType.SUBSTANCEDEFINITION;
3168        if ("SupplyDelivery".equals(codeString))
3169          return FHIRDefinedType.SUPPLYDELIVERY;
3170        if ("SupplyRequest".equals(codeString))
3171          return FHIRDefinedType.SUPPLYREQUEST;
3172        if ("Task".equals(codeString))
3173          return FHIRDefinedType.TASK;
3174        if ("TerminologyCapabilities".equals(codeString))
3175          return FHIRDefinedType.TERMINOLOGYCAPABILITIES;
3176        if ("TestReport".equals(codeString))
3177          return FHIRDefinedType.TESTREPORT;
3178        if ("TestScript".equals(codeString))
3179          return FHIRDefinedType.TESTSCRIPT;
3180        if ("ValueSet".equals(codeString))
3181          return FHIRDefinedType.VALUESET;
3182        if ("VerificationResult".equals(codeString))
3183          return FHIRDefinedType.VERIFICATIONRESULT;
3184        if ("VisionPrescription".equals(codeString))
3185          return FHIRDefinedType.VISIONPRESCRIPTION;
3186        if ("Parameters".equals(codeString))
3187          return FHIRDefinedType.PARAMETERS;
3188        throw new IllegalArgumentException("Unknown FHIRDefinedType code '"+codeString+"'");
3189        }
3190        public Enumeration<FHIRDefinedType> fromType(Base code) throws FHIRException {
3191          if (code == null)
3192            return null;
3193          if (code.isEmpty())
3194            return new Enumeration<FHIRDefinedType>(this);
3195          String codeString = ((PrimitiveType) code).asStringValue();
3196          if (codeString == null || "".equals(codeString))
3197            return null;
3198        if ("Address".equals(codeString))
3199          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.ADDRESS);
3200        if ("Age".equals(codeString))
3201          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.AGE);
3202        if ("Annotation".equals(codeString))
3203          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.ANNOTATION);
3204        if ("Attachment".equals(codeString))
3205          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.ATTACHMENT);
3206        if ("BackboneElement".equals(codeString))
3207          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.BACKBONEELEMENT);
3208        if ("CodeableConcept".equals(codeString))
3209          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.CODEABLECONCEPT);
3210        if ("CodeableReference".equals(codeString))
3211          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.CODEABLEREFERENCE);
3212        if ("Coding".equals(codeString))
3213          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.CODING);
3214        if ("ContactDetail".equals(codeString))
3215          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.CONTACTDETAIL);
3216        if ("ContactPoint".equals(codeString))
3217          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.CONTACTPOINT);
3218        if ("Contributor".equals(codeString))
3219          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.CONTRIBUTOR);
3220        if ("Count".equals(codeString))
3221          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.COUNT);
3222        if ("DataRequirement".equals(codeString))
3223          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.DATAREQUIREMENT);
3224        if ("DataType".equals(codeString))
3225          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.DATATYPE);
3226        if ("Distance".equals(codeString))
3227          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.DISTANCE);
3228        if ("Dosage".equals(codeString))
3229          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.DOSAGE);
3230        if ("Duration".equals(codeString))
3231          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.DURATION);
3232        if ("Element".equals(codeString))
3233          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.ELEMENT);
3234        if ("ElementDefinition".equals(codeString))
3235          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.ELEMENTDEFINITION);
3236        if ("Expression".equals(codeString))
3237          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.EXPRESSION);
3238        if ("Extension".equals(codeString))
3239          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.EXTENSION);
3240        if ("HumanName".equals(codeString))
3241          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.HUMANNAME);
3242        if ("Identifier".equals(codeString))
3243          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.IDENTIFIER);
3244        if ("MarketingStatus".equals(codeString))
3245          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.MARKETINGSTATUS);
3246        if ("Meta".equals(codeString))
3247          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.META);
3248        if ("Money".equals(codeString))
3249          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.MONEY);
3250        if ("MoneyQuantity".equals(codeString))
3251          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.MONEYQUANTITY);
3252        if ("Narrative".equals(codeString))
3253          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.NARRATIVE);
3254        if ("ParameterDefinition".equals(codeString))
3255          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.PARAMETERDEFINITION);
3256        if ("Period".equals(codeString))
3257          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.PERIOD);
3258        if ("Population".equals(codeString))
3259          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.POPULATION);
3260        if ("ProdCharacteristic".equals(codeString))
3261          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.PRODCHARACTERISTIC);
3262        if ("ProductShelfLife".equals(codeString))
3263          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.PRODUCTSHELFLIFE);
3264        if ("Quantity".equals(codeString))
3265          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.QUANTITY);
3266        if ("Range".equals(codeString))
3267          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.RANGE);
3268        if ("Ratio".equals(codeString))
3269          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.RATIO);
3270        if ("RatioRange".equals(codeString))
3271          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.RATIORANGE);
3272        if ("Reference".equals(codeString))
3273          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.REFERENCE);
3274        if ("RelatedArtifact".equals(codeString))
3275          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.RELATEDARTIFACT);
3276        if ("SampledData".equals(codeString))
3277          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.SAMPLEDDATA);
3278        if ("Signature".equals(codeString))
3279          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.SIGNATURE);
3280        if ("SimpleQuantity".equals(codeString))
3281          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.SIMPLEQUANTITY);
3282        if ("Timing".equals(codeString))
3283          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.TIMING);
3284        if ("TriggerDefinition".equals(codeString))
3285          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.TRIGGERDEFINITION);
3286        if ("UsageContext".equals(codeString))
3287          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.USAGECONTEXT);
3288        if ("base64Binary".equals(codeString))
3289          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.BASE64BINARY);
3290        if ("boolean".equals(codeString))
3291          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.BOOLEAN);
3292        if ("canonical".equals(codeString))
3293          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.CANONICAL);
3294        if ("code".equals(codeString))
3295          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.CODE);
3296        if ("date".equals(codeString))
3297          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.DATE);
3298        if ("dateTime".equals(codeString))
3299          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.DATETIME);
3300        if ("decimal".equals(codeString))
3301          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.DECIMAL);
3302        if ("id".equals(codeString))
3303          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.ID);
3304        if ("instant".equals(codeString))
3305          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.INSTANT);
3306        if ("integer".equals(codeString))
3307          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.INTEGER);
3308        if ("markdown".equals(codeString))
3309          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.MARKDOWN);
3310        if ("oid".equals(codeString))
3311          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.OID);
3312        if ("positiveInt".equals(codeString))
3313          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.POSITIVEINT);
3314        if ("string".equals(codeString))
3315          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.STRING);
3316        if ("time".equals(codeString))
3317          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.TIME);
3318        if ("unsignedInt".equals(codeString))
3319          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.UNSIGNEDINT);
3320        if ("uri".equals(codeString))
3321          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.URI);
3322        if ("url".equals(codeString))
3323          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.URL);
3324        if ("uuid".equals(codeString))
3325          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.UUID);
3326        if ("xhtml".equals(codeString))
3327          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.XHTML);
3328        if ("Resource".equals(codeString))
3329          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.RESOURCE);
3330        if ("Binary".equals(codeString))
3331          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.BINARY);
3332        if ("Bundle".equals(codeString))
3333          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.BUNDLE);
3334        if ("DomainResource".equals(codeString))
3335          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.DOMAINRESOURCE);
3336        if ("Account".equals(codeString))
3337          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.ACCOUNT);
3338        if ("ActivityDefinition".equals(codeString))
3339          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.ACTIVITYDEFINITION);
3340        if ("AdministrableProductDefinition".equals(codeString))
3341          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.ADMINISTRABLEPRODUCTDEFINITION);
3342        if ("AdverseEvent".equals(codeString))
3343          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.ADVERSEEVENT);
3344        if ("AllergyIntolerance".equals(codeString))
3345          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.ALLERGYINTOLERANCE);
3346        if ("Appointment".equals(codeString))
3347          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.APPOINTMENT);
3348        if ("AppointmentResponse".equals(codeString))
3349          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.APPOINTMENTRESPONSE);
3350        if ("AuditEvent".equals(codeString))
3351          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.AUDITEVENT);
3352        if ("Basic".equals(codeString))
3353          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.BASIC);
3354        if ("BiologicallyDerivedProduct".equals(codeString))
3355          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.BIOLOGICALLYDERIVEDPRODUCT);
3356        if ("BodyStructure".equals(codeString))
3357          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.BODYSTRUCTURE);
3358        if ("CapabilityStatement".equals(codeString))
3359          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.CAPABILITYSTATEMENT);
3360        if ("CarePlan".equals(codeString))
3361          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.CAREPLAN);
3362        if ("CareTeam".equals(codeString))
3363          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.CARETEAM);
3364        if ("CatalogEntry".equals(codeString))
3365          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.CATALOGENTRY);
3366        if ("ChargeItem".equals(codeString))
3367          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.CHARGEITEM);
3368        if ("ChargeItemDefinition".equals(codeString))
3369          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.CHARGEITEMDEFINITION);
3370        if ("Citation".equals(codeString))
3371          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.CITATION);
3372        if ("Claim".equals(codeString))
3373          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.CLAIM);
3374        if ("ClaimResponse".equals(codeString))
3375          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.CLAIMRESPONSE);
3376        if ("ClinicalImpression".equals(codeString))
3377          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.CLINICALIMPRESSION);
3378        if ("ClinicalUseDefinition".equals(codeString))
3379          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.CLINICALUSEDEFINITION);
3380        if ("CodeSystem".equals(codeString))
3381          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.CODESYSTEM);
3382        if ("Communication".equals(codeString))
3383          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.COMMUNICATION);
3384        if ("CommunicationRequest".equals(codeString))
3385          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.COMMUNICATIONREQUEST);
3386        if ("CompartmentDefinition".equals(codeString))
3387          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.COMPARTMENTDEFINITION);
3388        if ("Composition".equals(codeString))
3389          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.COMPOSITION);
3390        if ("ConceptMap".equals(codeString))
3391          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.CONCEPTMAP);
3392        if ("Condition".equals(codeString))
3393          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.CONDITION);
3394        if ("Consent".equals(codeString))
3395          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.CONSENT);
3396        if ("Contract".equals(codeString))
3397          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.CONTRACT);
3398        if ("Coverage".equals(codeString))
3399          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.COVERAGE);
3400        if ("CoverageEligibilityRequest".equals(codeString))
3401          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.COVERAGEELIGIBILITYREQUEST);
3402        if ("CoverageEligibilityResponse".equals(codeString))
3403          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.COVERAGEELIGIBILITYRESPONSE);
3404        if ("DetectedIssue".equals(codeString))
3405          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.DETECTEDISSUE);
3406        if ("Device".equals(codeString))
3407          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.DEVICE);
3408        if ("DeviceDefinition".equals(codeString))
3409          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.DEVICEDEFINITION);
3410        if ("DeviceMetric".equals(codeString))
3411          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.DEVICEMETRIC);
3412        if ("DeviceRequest".equals(codeString))
3413          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.DEVICEREQUEST);
3414        if ("DeviceUseStatement".equals(codeString))
3415          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.DEVICEUSESTATEMENT);
3416        if ("DiagnosticReport".equals(codeString))
3417          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.DIAGNOSTICREPORT);
3418        if ("DocumentManifest".equals(codeString))
3419          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.DOCUMENTMANIFEST);
3420        if ("DocumentReference".equals(codeString))
3421          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.DOCUMENTREFERENCE);
3422        if ("Encounter".equals(codeString))
3423          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.ENCOUNTER);
3424        if ("Endpoint".equals(codeString))
3425          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.ENDPOINT);
3426        if ("EnrollmentRequest".equals(codeString))
3427          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.ENROLLMENTREQUEST);
3428        if ("EnrollmentResponse".equals(codeString))
3429          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.ENROLLMENTRESPONSE);
3430        if ("EpisodeOfCare".equals(codeString))
3431          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.EPISODEOFCARE);
3432        if ("EventDefinition".equals(codeString))
3433          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.EVENTDEFINITION);
3434        if ("Evidence".equals(codeString))
3435          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.EVIDENCE);
3436        if ("EvidenceReport".equals(codeString))
3437          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.EVIDENCEREPORT);
3438        if ("EvidenceVariable".equals(codeString))
3439          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.EVIDENCEVARIABLE);
3440        if ("ExampleScenario".equals(codeString))
3441          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.EXAMPLESCENARIO);
3442        if ("ExplanationOfBenefit".equals(codeString))
3443          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.EXPLANATIONOFBENEFIT);
3444        if ("FamilyMemberHistory".equals(codeString))
3445          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.FAMILYMEMBERHISTORY);
3446        if ("Flag".equals(codeString))
3447          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.FLAG);
3448        if ("Goal".equals(codeString))
3449          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.GOAL);
3450        if ("GraphDefinition".equals(codeString))
3451          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.GRAPHDEFINITION);
3452        if ("Group".equals(codeString))
3453          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.GROUP);
3454        if ("GuidanceResponse".equals(codeString))
3455          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.GUIDANCERESPONSE);
3456        if ("HealthcareService".equals(codeString))
3457          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.HEALTHCARESERVICE);
3458        if ("ImagingStudy".equals(codeString))
3459          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.IMAGINGSTUDY);
3460        if ("Immunization".equals(codeString))
3461          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.IMMUNIZATION);
3462        if ("ImmunizationEvaluation".equals(codeString))
3463          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.IMMUNIZATIONEVALUATION);
3464        if ("ImmunizationRecommendation".equals(codeString))
3465          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.IMMUNIZATIONRECOMMENDATION);
3466        if ("ImplementationGuide".equals(codeString))
3467          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.IMPLEMENTATIONGUIDE);
3468        if ("Ingredient".equals(codeString))
3469          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.INGREDIENT);
3470        if ("InsurancePlan".equals(codeString))
3471          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.INSURANCEPLAN);
3472        if ("Invoice".equals(codeString))
3473          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.INVOICE);
3474        if ("Library".equals(codeString))
3475          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.LIBRARY);
3476        if ("Linkage".equals(codeString))
3477          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.LINKAGE);
3478        if ("List".equals(codeString))
3479          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.LIST);
3480        if ("Location".equals(codeString))
3481          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.LOCATION);
3482        if ("ManufacturedItemDefinition".equals(codeString))
3483          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.MANUFACTUREDITEMDEFINITION);
3484        if ("Measure".equals(codeString))
3485          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.MEASURE);
3486        if ("MeasureReport".equals(codeString))
3487          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.MEASUREREPORT);
3488        if ("Media".equals(codeString))
3489          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.MEDIA);
3490        if ("Medication".equals(codeString))
3491          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.MEDICATION);
3492        if ("MedicationAdministration".equals(codeString))
3493          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.MEDICATIONADMINISTRATION);
3494        if ("MedicationDispense".equals(codeString))
3495          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.MEDICATIONDISPENSE);
3496        if ("MedicationKnowledge".equals(codeString))
3497          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.MEDICATIONKNOWLEDGE);
3498        if ("MedicationRequest".equals(codeString))
3499          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.MEDICATIONREQUEST);
3500        if ("MedicationStatement".equals(codeString))
3501          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.MEDICATIONSTATEMENT);
3502        if ("MedicinalProductDefinition".equals(codeString))
3503          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.MEDICINALPRODUCTDEFINITION);
3504        if ("MessageDefinition".equals(codeString))
3505          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.MESSAGEDEFINITION);
3506        if ("MessageHeader".equals(codeString))
3507          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.MESSAGEHEADER);
3508        if ("MolecularSequence".equals(codeString))
3509          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.MOLECULARSEQUENCE);
3510        if ("NamingSystem".equals(codeString))
3511          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.NAMINGSYSTEM);
3512        if ("NutritionOrder".equals(codeString))
3513          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.NUTRITIONORDER);
3514        if ("NutritionProduct".equals(codeString))
3515          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.NUTRITIONPRODUCT);
3516        if ("Observation".equals(codeString))
3517          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.OBSERVATION);
3518        if ("ObservationDefinition".equals(codeString))
3519          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.OBSERVATIONDEFINITION);
3520        if ("OperationDefinition".equals(codeString))
3521          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.OPERATIONDEFINITION);
3522        if ("OperationOutcome".equals(codeString))
3523          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.OPERATIONOUTCOME);
3524        if ("Organization".equals(codeString))
3525          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.ORGANIZATION);
3526        if ("OrganizationAffiliation".equals(codeString))
3527          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.ORGANIZATIONAFFILIATION);
3528        if ("PackagedProductDefinition".equals(codeString))
3529          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.PACKAGEDPRODUCTDEFINITION);
3530        if ("Patient".equals(codeString))
3531          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.PATIENT);
3532        if ("PaymentNotice".equals(codeString))
3533          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.PAYMENTNOTICE);
3534        if ("PaymentReconciliation".equals(codeString))
3535          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.PAYMENTRECONCILIATION);
3536        if ("Person".equals(codeString))
3537          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.PERSON);
3538        if ("PlanDefinition".equals(codeString))
3539          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.PLANDEFINITION);
3540        if ("Practitioner".equals(codeString))
3541          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.PRACTITIONER);
3542        if ("PractitionerRole".equals(codeString))
3543          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.PRACTITIONERROLE);
3544        if ("Procedure".equals(codeString))
3545          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.PROCEDURE);
3546        if ("Provenance".equals(codeString))
3547          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.PROVENANCE);
3548        if ("Questionnaire".equals(codeString))
3549          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.QUESTIONNAIRE);
3550        if ("QuestionnaireResponse".equals(codeString))
3551          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.QUESTIONNAIRERESPONSE);
3552        if ("RegulatedAuthorization".equals(codeString))
3553          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.REGULATEDAUTHORIZATION);
3554        if ("RelatedPerson".equals(codeString))
3555          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.RELATEDPERSON);
3556        if ("RequestGroup".equals(codeString))
3557          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.REQUESTGROUP);
3558        if ("ResearchDefinition".equals(codeString))
3559          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.RESEARCHDEFINITION);
3560        if ("ResearchElementDefinition".equals(codeString))
3561          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.RESEARCHELEMENTDEFINITION);
3562        if ("ResearchStudy".equals(codeString))
3563          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.RESEARCHSTUDY);
3564        if ("ResearchSubject".equals(codeString))
3565          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.RESEARCHSUBJECT);
3566        if ("RiskAssessment".equals(codeString))
3567          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.RISKASSESSMENT);
3568        if ("Schedule".equals(codeString))
3569          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.SCHEDULE);
3570        if ("SearchParameter".equals(codeString))
3571          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.SEARCHPARAMETER);
3572        if ("ServiceRequest".equals(codeString))
3573          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.SERVICEREQUEST);
3574        if ("Slot".equals(codeString))
3575          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.SLOT);
3576        if ("Specimen".equals(codeString))
3577          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.SPECIMEN);
3578        if ("SpecimenDefinition".equals(codeString))
3579          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.SPECIMENDEFINITION);
3580        if ("StructureDefinition".equals(codeString))
3581          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.STRUCTUREDEFINITION);
3582        if ("StructureMap".equals(codeString))
3583          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.STRUCTUREMAP);
3584        if ("Subscription".equals(codeString))
3585          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.SUBSCRIPTION);
3586        if ("SubscriptionStatus".equals(codeString))
3587          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.SUBSCRIPTIONSTATUS);
3588        if ("SubscriptionTopic".equals(codeString))
3589          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.SUBSCRIPTIONTOPIC);
3590        if ("Substance".equals(codeString))
3591          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.SUBSTANCE);
3592        if ("SubstanceDefinition".equals(codeString))
3593          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.SUBSTANCEDEFINITION);
3594        if ("SupplyDelivery".equals(codeString))
3595          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.SUPPLYDELIVERY);
3596        if ("SupplyRequest".equals(codeString))
3597          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.SUPPLYREQUEST);
3598        if ("Task".equals(codeString))
3599          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.TASK);
3600        if ("TerminologyCapabilities".equals(codeString))
3601          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.TERMINOLOGYCAPABILITIES);
3602        if ("TestReport".equals(codeString))
3603          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.TESTREPORT);
3604        if ("TestScript".equals(codeString))
3605          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.TESTSCRIPT);
3606        if ("ValueSet".equals(codeString))
3607          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.VALUESET);
3608        if ("VerificationResult".equals(codeString))
3609          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.VERIFICATIONRESULT);
3610        if ("VisionPrescription".equals(codeString))
3611          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.VISIONPRESCRIPTION);
3612        if ("Parameters".equals(codeString))
3613          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.PARAMETERS);
3614        throw new FHIRException("Unknown FHIRDefinedType code '"+codeString+"'");
3615        }
3616    public String toCode(FHIRDefinedType code) {
3617      if (code == FHIRDefinedType.ADDRESS)
3618        return "Address";
3619      if (code == FHIRDefinedType.AGE)
3620        return "Age";
3621      if (code == FHIRDefinedType.ANNOTATION)
3622        return "Annotation";
3623      if (code == FHIRDefinedType.ATTACHMENT)
3624        return "Attachment";
3625      if (code == FHIRDefinedType.BACKBONEELEMENT)
3626        return "BackboneElement";
3627      if (code == FHIRDefinedType.CODEABLECONCEPT)
3628        return "CodeableConcept";
3629      if (code == FHIRDefinedType.CODEABLEREFERENCE)
3630        return "CodeableReference";
3631      if (code == FHIRDefinedType.CODING)
3632        return "Coding";
3633      if (code == FHIRDefinedType.CONTACTDETAIL)
3634        return "ContactDetail";
3635      if (code == FHIRDefinedType.CONTACTPOINT)
3636        return "ContactPoint";
3637      if (code == FHIRDefinedType.CONTRIBUTOR)
3638        return "Contributor";
3639      if (code == FHIRDefinedType.COUNT)
3640        return "Count";
3641      if (code == FHIRDefinedType.DATAREQUIREMENT)
3642        return "DataRequirement";
3643      if (code == FHIRDefinedType.DATATYPE)
3644        return "DataType";
3645      if (code == FHIRDefinedType.DISTANCE)
3646        return "Distance";
3647      if (code == FHIRDefinedType.DOSAGE)
3648        return "Dosage";
3649      if (code == FHIRDefinedType.DURATION)
3650        return "Duration";
3651      if (code == FHIRDefinedType.ELEMENT)
3652        return "Element";
3653      if (code == FHIRDefinedType.ELEMENTDEFINITION)
3654        return "ElementDefinition";
3655      if (code == FHIRDefinedType.EXPRESSION)
3656        return "Expression";
3657      if (code == FHIRDefinedType.EXTENSION)
3658        return "Extension";
3659      if (code == FHIRDefinedType.HUMANNAME)
3660        return "HumanName";
3661      if (code == FHIRDefinedType.IDENTIFIER)
3662        return "Identifier";
3663      if (code == FHIRDefinedType.MARKETINGSTATUS)
3664        return "MarketingStatus";
3665      if (code == FHIRDefinedType.META)
3666        return "Meta";
3667      if (code == FHIRDefinedType.MONEY)
3668        return "Money";
3669      if (code == FHIRDefinedType.MONEYQUANTITY)
3670        return "MoneyQuantity";
3671      if (code == FHIRDefinedType.NARRATIVE)
3672        return "Narrative";
3673      if (code == FHIRDefinedType.PARAMETERDEFINITION)
3674        return "ParameterDefinition";
3675      if (code == FHIRDefinedType.PERIOD)
3676        return "Period";
3677      if (code == FHIRDefinedType.POPULATION)
3678        return "Population";
3679      if (code == FHIRDefinedType.PRODCHARACTERISTIC)
3680        return "ProdCharacteristic";
3681      if (code == FHIRDefinedType.PRODUCTSHELFLIFE)
3682        return "ProductShelfLife";
3683      if (code == FHIRDefinedType.QUANTITY)
3684        return "Quantity";
3685      if (code == FHIRDefinedType.RANGE)
3686        return "Range";
3687      if (code == FHIRDefinedType.RATIO)
3688        return "Ratio";
3689      if (code == FHIRDefinedType.RATIORANGE)
3690        return "RatioRange";
3691      if (code == FHIRDefinedType.REFERENCE)
3692        return "Reference";
3693      if (code == FHIRDefinedType.RELATEDARTIFACT)
3694        return "RelatedArtifact";
3695      if (code == FHIRDefinedType.SAMPLEDDATA)
3696        return "SampledData";
3697      if (code == FHIRDefinedType.SIGNATURE)
3698        return "Signature";
3699      if (code == FHIRDefinedType.SIMPLEQUANTITY)
3700        return "SimpleQuantity";
3701      if (code == FHIRDefinedType.TIMING)
3702        return "Timing";
3703      if (code == FHIRDefinedType.TRIGGERDEFINITION)
3704        return "TriggerDefinition";
3705      if (code == FHIRDefinedType.USAGECONTEXT)
3706        return "UsageContext";
3707      if (code == FHIRDefinedType.BASE64BINARY)
3708        return "base64Binary";
3709      if (code == FHIRDefinedType.BOOLEAN)
3710        return "boolean";
3711      if (code == FHIRDefinedType.CANONICAL)
3712        return "canonical";
3713      if (code == FHIRDefinedType.CODE)
3714        return "code";
3715      if (code == FHIRDefinedType.DATE)
3716        return "date";
3717      if (code == FHIRDefinedType.DATETIME)
3718        return "dateTime";
3719      if (code == FHIRDefinedType.DECIMAL)
3720        return "decimal";
3721      if (code == FHIRDefinedType.ID)
3722        return "id";
3723      if (code == FHIRDefinedType.INSTANT)
3724        return "instant";
3725      if (code == FHIRDefinedType.INTEGER)
3726        return "integer";
3727      if (code == FHIRDefinedType.MARKDOWN)
3728        return "markdown";
3729      if (code == FHIRDefinedType.OID)
3730        return "oid";
3731      if (code == FHIRDefinedType.POSITIVEINT)
3732        return "positiveInt";
3733      if (code == FHIRDefinedType.STRING)
3734        return "string";
3735      if (code == FHIRDefinedType.TIME)
3736        return "time";
3737      if (code == FHIRDefinedType.UNSIGNEDINT)
3738        return "unsignedInt";
3739      if (code == FHIRDefinedType.URI)
3740        return "uri";
3741      if (code == FHIRDefinedType.URL)
3742        return "url";
3743      if (code == FHIRDefinedType.UUID)
3744        return "uuid";
3745      if (code == FHIRDefinedType.XHTML)
3746        return "xhtml";
3747      if (code == FHIRDefinedType.RESOURCE)
3748        return "Resource";
3749      if (code == FHIRDefinedType.BINARY)
3750        return "Binary";
3751      if (code == FHIRDefinedType.BUNDLE)
3752        return "Bundle";
3753      if (code == FHIRDefinedType.DOMAINRESOURCE)
3754        return "DomainResource";
3755      if (code == FHIRDefinedType.ACCOUNT)
3756        return "Account";
3757      if (code == FHIRDefinedType.ACTIVITYDEFINITION)
3758        return "ActivityDefinition";
3759      if (code == FHIRDefinedType.ADMINISTRABLEPRODUCTDEFINITION)
3760        return "AdministrableProductDefinition";
3761      if (code == FHIRDefinedType.ADVERSEEVENT)
3762        return "AdverseEvent";
3763      if (code == FHIRDefinedType.ALLERGYINTOLERANCE)
3764        return "AllergyIntolerance";
3765      if (code == FHIRDefinedType.APPOINTMENT)
3766        return "Appointment";
3767      if (code == FHIRDefinedType.APPOINTMENTRESPONSE)
3768        return "AppointmentResponse";
3769      if (code == FHIRDefinedType.AUDITEVENT)
3770        return "AuditEvent";
3771      if (code == FHIRDefinedType.BASIC)
3772        return "Basic";
3773      if (code == FHIRDefinedType.BIOLOGICALLYDERIVEDPRODUCT)
3774        return "BiologicallyDerivedProduct";
3775      if (code == FHIRDefinedType.BODYSTRUCTURE)
3776        return "BodyStructure";
3777      if (code == FHIRDefinedType.CAPABILITYSTATEMENT)
3778        return "CapabilityStatement";
3779      if (code == FHIRDefinedType.CAREPLAN)
3780        return "CarePlan";
3781      if (code == FHIRDefinedType.CARETEAM)
3782        return "CareTeam";
3783      if (code == FHIRDefinedType.CATALOGENTRY)
3784        return "CatalogEntry";
3785      if (code == FHIRDefinedType.CHARGEITEM)
3786        return "ChargeItem";
3787      if (code == FHIRDefinedType.CHARGEITEMDEFINITION)
3788        return "ChargeItemDefinition";
3789      if (code == FHIRDefinedType.CITATION)
3790        return "Citation";
3791      if (code == FHIRDefinedType.CLAIM)
3792        return "Claim";
3793      if (code == FHIRDefinedType.CLAIMRESPONSE)
3794        return "ClaimResponse";
3795      if (code == FHIRDefinedType.CLINICALIMPRESSION)
3796        return "ClinicalImpression";
3797      if (code == FHIRDefinedType.CLINICALUSEDEFINITION)
3798        return "ClinicalUseDefinition";
3799      if (code == FHIRDefinedType.CODESYSTEM)
3800        return "CodeSystem";
3801      if (code == FHIRDefinedType.COMMUNICATION)
3802        return "Communication";
3803      if (code == FHIRDefinedType.COMMUNICATIONREQUEST)
3804        return "CommunicationRequest";
3805      if (code == FHIRDefinedType.COMPARTMENTDEFINITION)
3806        return "CompartmentDefinition";
3807      if (code == FHIRDefinedType.COMPOSITION)
3808        return "Composition";
3809      if (code == FHIRDefinedType.CONCEPTMAP)
3810        return "ConceptMap";
3811      if (code == FHIRDefinedType.CONDITION)
3812        return "Condition";
3813      if (code == FHIRDefinedType.CONSENT)
3814        return "Consent";
3815      if (code == FHIRDefinedType.CONTRACT)
3816        return "Contract";
3817      if (code == FHIRDefinedType.COVERAGE)
3818        return "Coverage";
3819      if (code == FHIRDefinedType.COVERAGEELIGIBILITYREQUEST)
3820        return "CoverageEligibilityRequest";
3821      if (code == FHIRDefinedType.COVERAGEELIGIBILITYRESPONSE)
3822        return "CoverageEligibilityResponse";
3823      if (code == FHIRDefinedType.DETECTEDISSUE)
3824        return "DetectedIssue";
3825      if (code == FHIRDefinedType.DEVICE)
3826        return "Device";
3827      if (code == FHIRDefinedType.DEVICEDEFINITION)
3828        return "DeviceDefinition";
3829      if (code == FHIRDefinedType.DEVICEMETRIC)
3830        return "DeviceMetric";
3831      if (code == FHIRDefinedType.DEVICEREQUEST)
3832        return "DeviceRequest";
3833      if (code == FHIRDefinedType.DEVICEUSESTATEMENT)
3834        return "DeviceUseStatement";
3835      if (code == FHIRDefinedType.DIAGNOSTICREPORT)
3836        return "DiagnosticReport";
3837      if (code == FHIRDefinedType.DOCUMENTMANIFEST)
3838        return "DocumentManifest";
3839      if (code == FHIRDefinedType.DOCUMENTREFERENCE)
3840        return "DocumentReference";
3841      if (code == FHIRDefinedType.ENCOUNTER)
3842        return "Encounter";
3843      if (code == FHIRDefinedType.ENDPOINT)
3844        return "Endpoint";
3845      if (code == FHIRDefinedType.ENROLLMENTREQUEST)
3846        return "EnrollmentRequest";
3847      if (code == FHIRDefinedType.ENROLLMENTRESPONSE)
3848        return "EnrollmentResponse";
3849      if (code == FHIRDefinedType.EPISODEOFCARE)
3850        return "EpisodeOfCare";
3851      if (code == FHIRDefinedType.EVENTDEFINITION)
3852        return "EventDefinition";
3853      if (code == FHIRDefinedType.EVIDENCE)
3854        return "Evidence";
3855      if (code == FHIRDefinedType.EVIDENCEREPORT)
3856        return "EvidenceReport";
3857      if (code == FHIRDefinedType.EVIDENCEVARIABLE)
3858        return "EvidenceVariable";
3859      if (code == FHIRDefinedType.EXAMPLESCENARIO)
3860        return "ExampleScenario";
3861      if (code == FHIRDefinedType.EXPLANATIONOFBENEFIT)
3862        return "ExplanationOfBenefit";
3863      if (code == FHIRDefinedType.FAMILYMEMBERHISTORY)
3864        return "FamilyMemberHistory";
3865      if (code == FHIRDefinedType.FLAG)
3866        return "Flag";
3867      if (code == FHIRDefinedType.GOAL)
3868        return "Goal";
3869      if (code == FHIRDefinedType.GRAPHDEFINITION)
3870        return "GraphDefinition";
3871      if (code == FHIRDefinedType.GROUP)
3872        return "Group";
3873      if (code == FHIRDefinedType.GUIDANCERESPONSE)
3874        return "GuidanceResponse";
3875      if (code == FHIRDefinedType.HEALTHCARESERVICE)
3876        return "HealthcareService";
3877      if (code == FHIRDefinedType.IMAGINGSTUDY)
3878        return "ImagingStudy";
3879      if (code == FHIRDefinedType.IMMUNIZATION)
3880        return "Immunization";
3881      if (code == FHIRDefinedType.IMMUNIZATIONEVALUATION)
3882        return "ImmunizationEvaluation";
3883      if (code == FHIRDefinedType.IMMUNIZATIONRECOMMENDATION)
3884        return "ImmunizationRecommendation";
3885      if (code == FHIRDefinedType.IMPLEMENTATIONGUIDE)
3886        return "ImplementationGuide";
3887      if (code == FHIRDefinedType.INGREDIENT)
3888        return "Ingredient";
3889      if (code == FHIRDefinedType.INSURANCEPLAN)
3890        return "InsurancePlan";
3891      if (code == FHIRDefinedType.INVOICE)
3892        return "Invoice";
3893      if (code == FHIRDefinedType.LIBRARY)
3894        return "Library";
3895      if (code == FHIRDefinedType.LINKAGE)
3896        return "Linkage";
3897      if (code == FHIRDefinedType.LIST)
3898        return "List";
3899      if (code == FHIRDefinedType.LOCATION)
3900        return "Location";
3901      if (code == FHIRDefinedType.MANUFACTUREDITEMDEFINITION)
3902        return "ManufacturedItemDefinition";
3903      if (code == FHIRDefinedType.MEASURE)
3904        return "Measure";
3905      if (code == FHIRDefinedType.MEASUREREPORT)
3906        return "MeasureReport";
3907      if (code == FHIRDefinedType.MEDIA)
3908        return "Media";
3909      if (code == FHIRDefinedType.MEDICATION)
3910        return "Medication";
3911      if (code == FHIRDefinedType.MEDICATIONADMINISTRATION)
3912        return "MedicationAdministration";
3913      if (code == FHIRDefinedType.MEDICATIONDISPENSE)
3914        return "MedicationDispense";
3915      if (code == FHIRDefinedType.MEDICATIONKNOWLEDGE)
3916        return "MedicationKnowledge";
3917      if (code == FHIRDefinedType.MEDICATIONREQUEST)
3918        return "MedicationRequest";
3919      if (code == FHIRDefinedType.MEDICATIONSTATEMENT)
3920        return "MedicationStatement";
3921      if (code == FHIRDefinedType.MEDICINALPRODUCTDEFINITION)
3922        return "MedicinalProductDefinition";
3923      if (code == FHIRDefinedType.MESSAGEDEFINITION)
3924        return "MessageDefinition";
3925      if (code == FHIRDefinedType.MESSAGEHEADER)
3926        return "MessageHeader";
3927      if (code == FHIRDefinedType.MOLECULARSEQUENCE)
3928        return "MolecularSequence";
3929      if (code == FHIRDefinedType.NAMINGSYSTEM)
3930        return "NamingSystem";
3931      if (code == FHIRDefinedType.NUTRITIONORDER)
3932        return "NutritionOrder";
3933      if (code == FHIRDefinedType.NUTRITIONPRODUCT)
3934        return "NutritionProduct";
3935      if (code == FHIRDefinedType.OBSERVATION)
3936        return "Observation";
3937      if (code == FHIRDefinedType.OBSERVATIONDEFINITION)
3938        return "ObservationDefinition";
3939      if (code == FHIRDefinedType.OPERATIONDEFINITION)
3940        return "OperationDefinition";
3941      if (code == FHIRDefinedType.OPERATIONOUTCOME)
3942        return "OperationOutcome";
3943      if (code == FHIRDefinedType.ORGANIZATION)
3944        return "Organization";
3945      if (code == FHIRDefinedType.ORGANIZATIONAFFILIATION)
3946        return "OrganizationAffiliation";
3947      if (code == FHIRDefinedType.PACKAGEDPRODUCTDEFINITION)
3948        return "PackagedProductDefinition";
3949      if (code == FHIRDefinedType.PATIENT)
3950        return "Patient";
3951      if (code == FHIRDefinedType.PAYMENTNOTICE)
3952        return "PaymentNotice";
3953      if (code == FHIRDefinedType.PAYMENTRECONCILIATION)
3954        return "PaymentReconciliation";
3955      if (code == FHIRDefinedType.PERSON)
3956        return "Person";
3957      if (code == FHIRDefinedType.PLANDEFINITION)
3958        return "PlanDefinition";
3959      if (code == FHIRDefinedType.PRACTITIONER)
3960        return "Practitioner";
3961      if (code == FHIRDefinedType.PRACTITIONERROLE)
3962        return "PractitionerRole";
3963      if (code == FHIRDefinedType.PROCEDURE)
3964        return "Procedure";
3965      if (code == FHIRDefinedType.PROVENANCE)
3966        return "Provenance";
3967      if (code == FHIRDefinedType.QUESTIONNAIRE)
3968        return "Questionnaire";
3969      if (code == FHIRDefinedType.QUESTIONNAIRERESPONSE)
3970        return "QuestionnaireResponse";
3971      if (code == FHIRDefinedType.REGULATEDAUTHORIZATION)
3972        return "RegulatedAuthorization";
3973      if (code == FHIRDefinedType.RELATEDPERSON)
3974        return "RelatedPerson";
3975      if (code == FHIRDefinedType.REQUESTGROUP)
3976        return "RequestGroup";
3977      if (code == FHIRDefinedType.RESEARCHDEFINITION)
3978        return "ResearchDefinition";
3979      if (code == FHIRDefinedType.RESEARCHELEMENTDEFINITION)
3980        return "ResearchElementDefinition";
3981      if (code == FHIRDefinedType.RESEARCHSTUDY)
3982        return "ResearchStudy";
3983      if (code == FHIRDefinedType.RESEARCHSUBJECT)
3984        return "ResearchSubject";
3985      if (code == FHIRDefinedType.RISKASSESSMENT)
3986        return "RiskAssessment";
3987      if (code == FHIRDefinedType.SCHEDULE)
3988        return "Schedule";
3989      if (code == FHIRDefinedType.SEARCHPARAMETER)
3990        return "SearchParameter";
3991      if (code == FHIRDefinedType.SERVICEREQUEST)
3992        return "ServiceRequest";
3993      if (code == FHIRDefinedType.SLOT)
3994        return "Slot";
3995      if (code == FHIRDefinedType.SPECIMEN)
3996        return "Specimen";
3997      if (code == FHIRDefinedType.SPECIMENDEFINITION)
3998        return "SpecimenDefinition";
3999      if (code == FHIRDefinedType.STRUCTUREDEFINITION)
4000        return "StructureDefinition";
4001      if (code == FHIRDefinedType.STRUCTUREMAP)
4002        return "StructureMap";
4003      if (code == FHIRDefinedType.SUBSCRIPTION)
4004        return "Subscription";
4005      if (code == FHIRDefinedType.SUBSCRIPTIONSTATUS)
4006        return "SubscriptionStatus";
4007      if (code == FHIRDefinedType.SUBSCRIPTIONTOPIC)
4008        return "SubscriptionTopic";
4009      if (code == FHIRDefinedType.SUBSTANCE)
4010        return "Substance";
4011      if (code == FHIRDefinedType.SUBSTANCEDEFINITION)
4012        return "SubstanceDefinition";
4013      if (code == FHIRDefinedType.SUPPLYDELIVERY)
4014        return "SupplyDelivery";
4015      if (code == FHIRDefinedType.SUPPLYREQUEST)
4016        return "SupplyRequest";
4017      if (code == FHIRDefinedType.TASK)
4018        return "Task";
4019      if (code == FHIRDefinedType.TERMINOLOGYCAPABILITIES)
4020        return "TerminologyCapabilities";
4021      if (code == FHIRDefinedType.TESTREPORT)
4022        return "TestReport";
4023      if (code == FHIRDefinedType.TESTSCRIPT)
4024        return "TestScript";
4025      if (code == FHIRDefinedType.VALUESET)
4026        return "ValueSet";
4027      if (code == FHIRDefinedType.VERIFICATIONRESULT)
4028        return "VerificationResult";
4029      if (code == FHIRDefinedType.VISIONPRESCRIPTION)
4030        return "VisionPrescription";
4031      if (code == FHIRDefinedType.PARAMETERS)
4032        return "Parameters";
4033      return "?";
4034      }
4035    public String toSystem(FHIRDefinedType code) {
4036      return code.getSystem();
4037      }
4038    }
4039
4040    public enum TestScriptRequestMethodCode {
4041        /**
4042         * HTTP DELETE operation.
4043         */
4044        DELETE, 
4045        /**
4046         * HTTP GET operation.
4047         */
4048        GET, 
4049        /**
4050         * HTTP OPTIONS operation.
4051         */
4052        OPTIONS, 
4053        /**
4054         * HTTP PATCH operation.
4055         */
4056        PATCH, 
4057        /**
4058         * HTTP POST operation.
4059         */
4060        POST, 
4061        /**
4062         * HTTP PUT operation.
4063         */
4064        PUT, 
4065        /**
4066         * HTTP HEAD operation.
4067         */
4068        HEAD, 
4069        /**
4070         * added to help the parsers with the generic types
4071         */
4072        NULL;
4073        public static TestScriptRequestMethodCode fromCode(String codeString) throws FHIRException {
4074            if (codeString == null || "".equals(codeString))
4075                return null;
4076        if ("delete".equals(codeString))
4077          return DELETE;
4078        if ("get".equals(codeString))
4079          return GET;
4080        if ("options".equals(codeString))
4081          return OPTIONS;
4082        if ("patch".equals(codeString))
4083          return PATCH;
4084        if ("post".equals(codeString))
4085          return POST;
4086        if ("put".equals(codeString))
4087          return PUT;
4088        if ("head".equals(codeString))
4089          return HEAD;
4090        if (Configuration.isAcceptInvalidEnums())
4091          return null;
4092        else
4093          throw new FHIRException("Unknown TestScriptRequestMethodCode code '"+codeString+"'");
4094        }
4095        public String toCode() {
4096          switch (this) {
4097            case DELETE: return "delete";
4098            case GET: return "get";
4099            case OPTIONS: return "options";
4100            case PATCH: return "patch";
4101            case POST: return "post";
4102            case PUT: return "put";
4103            case HEAD: return "head";
4104            case NULL: return null;
4105            default: return "?";
4106          }
4107        }
4108        public String getSystem() {
4109          switch (this) {
4110            case DELETE: return "http://hl7.org/fhir/http-operations";
4111            case GET: return "http://hl7.org/fhir/http-operations";
4112            case OPTIONS: return "http://hl7.org/fhir/http-operations";
4113            case PATCH: return "http://hl7.org/fhir/http-operations";
4114            case POST: return "http://hl7.org/fhir/http-operations";
4115            case PUT: return "http://hl7.org/fhir/http-operations";
4116            case HEAD: return "http://hl7.org/fhir/http-operations";
4117            case NULL: return null;
4118            default: return "?";
4119          }
4120        }
4121        public String getDefinition() {
4122          switch (this) {
4123            case DELETE: return "HTTP DELETE operation.";
4124            case GET: return "HTTP GET operation.";
4125            case OPTIONS: return "HTTP OPTIONS operation.";
4126            case PATCH: return "HTTP PATCH operation.";
4127            case POST: return "HTTP POST operation.";
4128            case PUT: return "HTTP PUT operation.";
4129            case HEAD: return "HTTP HEAD operation.";
4130            case NULL: return null;
4131            default: return "?";
4132          }
4133        }
4134        public String getDisplay() {
4135          switch (this) {
4136            case DELETE: return "DELETE";
4137            case GET: return "GET";
4138            case OPTIONS: return "OPTIONS";
4139            case PATCH: return "PATCH";
4140            case POST: return "POST";
4141            case PUT: return "PUT";
4142            case HEAD: return "HEAD";
4143            case NULL: return null;
4144            default: return "?";
4145          }
4146        }
4147    }
4148
4149  public static class TestScriptRequestMethodCodeEnumFactory implements EnumFactory<TestScriptRequestMethodCode> {
4150    public TestScriptRequestMethodCode fromCode(String codeString) throws IllegalArgumentException {
4151      if (codeString == null || "".equals(codeString))
4152            if (codeString == null || "".equals(codeString))
4153                return null;
4154        if ("delete".equals(codeString))
4155          return TestScriptRequestMethodCode.DELETE;
4156        if ("get".equals(codeString))
4157          return TestScriptRequestMethodCode.GET;
4158        if ("options".equals(codeString))
4159          return TestScriptRequestMethodCode.OPTIONS;
4160        if ("patch".equals(codeString))
4161          return TestScriptRequestMethodCode.PATCH;
4162        if ("post".equals(codeString))
4163          return TestScriptRequestMethodCode.POST;
4164        if ("put".equals(codeString))
4165          return TestScriptRequestMethodCode.PUT;
4166        if ("head".equals(codeString))
4167          return TestScriptRequestMethodCode.HEAD;
4168        throw new IllegalArgumentException("Unknown TestScriptRequestMethodCode code '"+codeString+"'");
4169        }
4170        public Enumeration<TestScriptRequestMethodCode> fromType(Base code) throws FHIRException {
4171          if (code == null)
4172            return null;
4173          if (code.isEmpty())
4174            return new Enumeration<TestScriptRequestMethodCode>(this);
4175          String codeString = ((PrimitiveType) code).asStringValue();
4176          if (codeString == null || "".equals(codeString))
4177            return null;
4178        if ("delete".equals(codeString))
4179          return new Enumeration<TestScriptRequestMethodCode>(this, TestScriptRequestMethodCode.DELETE);
4180        if ("get".equals(codeString))
4181          return new Enumeration<TestScriptRequestMethodCode>(this, TestScriptRequestMethodCode.GET);
4182        if ("options".equals(codeString))
4183          return new Enumeration<TestScriptRequestMethodCode>(this, TestScriptRequestMethodCode.OPTIONS);
4184        if ("patch".equals(codeString))
4185          return new Enumeration<TestScriptRequestMethodCode>(this, TestScriptRequestMethodCode.PATCH);
4186        if ("post".equals(codeString))
4187          return new Enumeration<TestScriptRequestMethodCode>(this, TestScriptRequestMethodCode.POST);
4188        if ("put".equals(codeString))
4189          return new Enumeration<TestScriptRequestMethodCode>(this, TestScriptRequestMethodCode.PUT);
4190        if ("head".equals(codeString))
4191          return new Enumeration<TestScriptRequestMethodCode>(this, TestScriptRequestMethodCode.HEAD);
4192        throw new FHIRException("Unknown TestScriptRequestMethodCode code '"+codeString+"'");
4193        }
4194    public String toCode(TestScriptRequestMethodCode code) {
4195      if (code == TestScriptRequestMethodCode.DELETE)
4196        return "delete";
4197      if (code == TestScriptRequestMethodCode.GET)
4198        return "get";
4199      if (code == TestScriptRequestMethodCode.OPTIONS)
4200        return "options";
4201      if (code == TestScriptRequestMethodCode.PATCH)
4202        return "patch";
4203      if (code == TestScriptRequestMethodCode.POST)
4204        return "post";
4205      if (code == TestScriptRequestMethodCode.PUT)
4206        return "put";
4207      if (code == TestScriptRequestMethodCode.HEAD)
4208        return "head";
4209      return "?";
4210      }
4211    public String toSystem(TestScriptRequestMethodCode code) {
4212      return code.getSystem();
4213      }
4214    }
4215
4216    @Block()
4217    public static class TestScriptOriginComponent extends BackboneElement implements IBaseBackboneElement {
4218        /**
4219         * Abstract name given to an origin server in this test script.  The name is provided as a number starting at 1.
4220         */
4221        @Child(name = "index", type = {IntegerType.class}, order=1, min=1, max=1, modifier=false, summary=false)
4222        @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." )
4223        protected IntegerType index;
4224
4225        /**
4226         * The type of origin profile the test system supports.
4227         */
4228        @Child(name = "profile", type = {Coding.class}, order=2, min=1, max=1, modifier=false, summary=false)
4229        @Description(shortDefinition="FHIR-Client | FHIR-SDC-FormFiller", formalDefinition="The type of origin profile the test system supports." )
4230        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/testscript-profile-origin-types")
4231        protected Coding profile;
4232
4233        private static final long serialVersionUID = -1239935149L;
4234
4235    /**
4236     * Constructor
4237     */
4238      public TestScriptOriginComponent() {
4239        super();
4240      }
4241
4242    /**
4243     * Constructor
4244     */
4245      public TestScriptOriginComponent(int index, Coding profile) {
4246        super();
4247        this.setIndex(index);
4248        this.setProfile(profile);
4249      }
4250
4251        /**
4252         * @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
4253         */
4254        public IntegerType getIndexElement() { 
4255          if (this.index == null)
4256            if (Configuration.errorOnAutoCreate())
4257              throw new Error("Attempt to auto-create TestScriptOriginComponent.index");
4258            else if (Configuration.doAutoCreate())
4259              this.index = new IntegerType(); // bb
4260          return this.index;
4261        }
4262
4263        public boolean hasIndexElement() { 
4264          return this.index != null && !this.index.isEmpty();
4265        }
4266
4267        public boolean hasIndex() { 
4268          return this.index != null && !this.index.isEmpty();
4269        }
4270
4271        /**
4272         * @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
4273         */
4274        public TestScriptOriginComponent setIndexElement(IntegerType value) { 
4275          this.index = value;
4276          return this;
4277        }
4278
4279        /**
4280         * @return Abstract name given to an origin server in this test script.  The name is provided as a number starting at 1.
4281         */
4282        public int getIndex() { 
4283          return this.index == null || this.index.isEmpty() ? 0 : this.index.getValue();
4284        }
4285
4286        /**
4287         * @param value Abstract name given to an origin server in this test script.  The name is provided as a number starting at 1.
4288         */
4289        public TestScriptOriginComponent setIndex(int value) { 
4290            if (this.index == null)
4291              this.index = new IntegerType();
4292            this.index.setValue(value);
4293          return this;
4294        }
4295
4296        /**
4297         * @return {@link #profile} (The type of origin profile the test system supports.)
4298         */
4299        public Coding getProfile() { 
4300          if (this.profile == null)
4301            if (Configuration.errorOnAutoCreate())
4302              throw new Error("Attempt to auto-create TestScriptOriginComponent.profile");
4303            else if (Configuration.doAutoCreate())
4304              this.profile = new Coding(); // cc
4305          return this.profile;
4306        }
4307
4308        public boolean hasProfile() { 
4309          return this.profile != null && !this.profile.isEmpty();
4310        }
4311
4312        /**
4313         * @param value {@link #profile} (The type of origin profile the test system supports.)
4314         */
4315        public TestScriptOriginComponent setProfile(Coding value) { 
4316          this.profile = value;
4317          return this;
4318        }
4319
4320        protected void listChildren(List<Property> children) {
4321          super.listChildren(children);
4322          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));
4323          children.add(new Property("profile", "Coding", "The type of origin profile the test system supports.", 0, 1, profile));
4324        }
4325
4326        @Override
4327        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
4328          switch (_hash) {
4329          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);
4330          case -309425751: /*profile*/  return new Property("profile", "Coding", "The type of origin profile the test system supports.", 0, 1, profile);
4331          default: return super.getNamedProperty(_hash, _name, _checkValid);
4332          }
4333
4334        }
4335
4336      @Override
4337      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
4338        switch (hash) {
4339        case 100346066: /*index*/ return this.index == null ? new Base[0] : new Base[] {this.index}; // IntegerType
4340        case -309425751: /*profile*/ return this.profile == null ? new Base[0] : new Base[] {this.profile}; // Coding
4341        default: return super.getProperty(hash, name, checkValid);
4342        }
4343
4344      }
4345
4346      @Override
4347      public Base setProperty(int hash, String name, Base value) throws FHIRException {
4348        switch (hash) {
4349        case 100346066: // index
4350          this.index = TypeConvertor.castToInteger(value); // IntegerType
4351          return value;
4352        case -309425751: // profile
4353          this.profile = TypeConvertor.castToCoding(value); // Coding
4354          return value;
4355        default: return super.setProperty(hash, name, value);
4356        }
4357
4358      }
4359
4360      @Override
4361      public Base setProperty(String name, Base value) throws FHIRException {
4362        if (name.equals("index")) {
4363          this.index = TypeConvertor.castToInteger(value); // IntegerType
4364        } else if (name.equals("profile")) {
4365          this.profile = TypeConvertor.castToCoding(value); // Coding
4366        } else
4367          return super.setProperty(name, value);
4368        return value;
4369      }
4370
4371      @Override
4372      public Base makeProperty(int hash, String name) throws FHIRException {
4373        switch (hash) {
4374        case 100346066:  return getIndexElement();
4375        case -309425751:  return getProfile();
4376        default: return super.makeProperty(hash, name);
4377        }
4378
4379      }
4380
4381      @Override
4382      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
4383        switch (hash) {
4384        case 100346066: /*index*/ return new String[] {"integer"};
4385        case -309425751: /*profile*/ return new String[] {"Coding"};
4386        default: return super.getTypesForProperty(hash, name);
4387        }
4388
4389      }
4390
4391      @Override
4392      public Base addChild(String name) throws FHIRException {
4393        if (name.equals("index")) {
4394          throw new FHIRException("Cannot call addChild on a primitive type TestScript.origin.index");
4395        }
4396        else if (name.equals("profile")) {
4397          this.profile = new Coding();
4398          return this.profile;
4399        }
4400        else
4401          return super.addChild(name);
4402      }
4403
4404      public TestScriptOriginComponent copy() {
4405        TestScriptOriginComponent dst = new TestScriptOriginComponent();
4406        copyValues(dst);
4407        return dst;
4408      }
4409
4410      public void copyValues(TestScriptOriginComponent dst) {
4411        super.copyValues(dst);
4412        dst.index = index == null ? null : index.copy();
4413        dst.profile = profile == null ? null : profile.copy();
4414      }
4415
4416      @Override
4417      public boolean equalsDeep(Base other_) {
4418        if (!super.equalsDeep(other_))
4419          return false;
4420        if (!(other_ instanceof TestScriptOriginComponent))
4421          return false;
4422        TestScriptOriginComponent o = (TestScriptOriginComponent) other_;
4423        return compareDeep(index, o.index, true) && compareDeep(profile, o.profile, true);
4424      }
4425
4426      @Override
4427      public boolean equalsShallow(Base other_) {
4428        if (!super.equalsShallow(other_))
4429          return false;
4430        if (!(other_ instanceof TestScriptOriginComponent))
4431          return false;
4432        TestScriptOriginComponent o = (TestScriptOriginComponent) other_;
4433        return compareValues(index, o.index, true);
4434      }
4435
4436      public boolean isEmpty() {
4437        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(index, profile);
4438      }
4439
4440  public String fhirType() {
4441    return "TestScript.origin";
4442
4443  }
4444
4445  }
4446
4447    @Block()
4448    public static class TestScriptDestinationComponent extends BackboneElement implements IBaseBackboneElement {
4449        /**
4450         * Abstract name given to a destination server in this test script.  The name is provided as a number starting at 1.
4451         */
4452        @Child(name = "index", type = {IntegerType.class}, order=1, min=1, max=1, modifier=false, summary=false)
4453        @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." )
4454        protected IntegerType index;
4455
4456        /**
4457         * The type of destination profile the test system supports.
4458         */
4459        @Child(name = "profile", type = {Coding.class}, order=2, min=1, max=1, modifier=false, summary=false)
4460        @Description(shortDefinition="FHIR-Server | FHIR-SDC-FormManager | FHIR-SDC-FormReceiver | FHIR-SDC-FormProcessor", formalDefinition="The type of destination profile the test system supports." )
4461        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/testscript-profile-destination-types")
4462        protected Coding profile;
4463
4464        private static final long serialVersionUID = -1239935149L;
4465
4466    /**
4467     * Constructor
4468     */
4469      public TestScriptDestinationComponent() {
4470        super();
4471      }
4472
4473    /**
4474     * Constructor
4475     */
4476      public TestScriptDestinationComponent(int index, Coding profile) {
4477        super();
4478        this.setIndex(index);
4479        this.setProfile(profile);
4480      }
4481
4482        /**
4483         * @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
4484         */
4485        public IntegerType getIndexElement() { 
4486          if (this.index == null)
4487            if (Configuration.errorOnAutoCreate())
4488              throw new Error("Attempt to auto-create TestScriptDestinationComponent.index");
4489            else if (Configuration.doAutoCreate())
4490              this.index = new IntegerType(); // bb
4491          return this.index;
4492        }
4493
4494        public boolean hasIndexElement() { 
4495          return this.index != null && !this.index.isEmpty();
4496        }
4497
4498        public boolean hasIndex() { 
4499          return this.index != null && !this.index.isEmpty();
4500        }
4501
4502        /**
4503         * @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
4504         */
4505        public TestScriptDestinationComponent setIndexElement(IntegerType value) { 
4506          this.index = value;
4507          return this;
4508        }
4509
4510        /**
4511         * @return Abstract name given to a destination server in this test script.  The name is provided as a number starting at 1.
4512         */
4513        public int getIndex() { 
4514          return this.index == null || this.index.isEmpty() ? 0 : this.index.getValue();
4515        }
4516
4517        /**
4518         * @param value Abstract name given to a destination server in this test script.  The name is provided as a number starting at 1.
4519         */
4520        public TestScriptDestinationComponent setIndex(int value) { 
4521            if (this.index == null)
4522              this.index = new IntegerType();
4523            this.index.setValue(value);
4524          return this;
4525        }
4526
4527        /**
4528         * @return {@link #profile} (The type of destination profile the test system supports.)
4529         */
4530        public Coding getProfile() { 
4531          if (this.profile == null)
4532            if (Configuration.errorOnAutoCreate())
4533              throw new Error("Attempt to auto-create TestScriptDestinationComponent.profile");
4534            else if (Configuration.doAutoCreate())
4535              this.profile = new Coding(); // cc
4536          return this.profile;
4537        }
4538
4539        public boolean hasProfile() { 
4540          return this.profile != null && !this.profile.isEmpty();
4541        }
4542
4543        /**
4544         * @param value {@link #profile} (The type of destination profile the test system supports.)
4545         */
4546        public TestScriptDestinationComponent setProfile(Coding value) { 
4547          this.profile = value;
4548          return this;
4549        }
4550
4551        protected void listChildren(List<Property> children) {
4552          super.listChildren(children);
4553          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));
4554          children.add(new Property("profile", "Coding", "The type of destination profile the test system supports.", 0, 1, profile));
4555        }
4556
4557        @Override
4558        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
4559          switch (_hash) {
4560          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);
4561          case -309425751: /*profile*/  return new Property("profile", "Coding", "The type of destination profile the test system supports.", 0, 1, profile);
4562          default: return super.getNamedProperty(_hash, _name, _checkValid);
4563          }
4564
4565        }
4566
4567      @Override
4568      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
4569        switch (hash) {
4570        case 100346066: /*index*/ return this.index == null ? new Base[0] : new Base[] {this.index}; // IntegerType
4571        case -309425751: /*profile*/ return this.profile == null ? new Base[0] : new Base[] {this.profile}; // Coding
4572        default: return super.getProperty(hash, name, checkValid);
4573        }
4574
4575      }
4576
4577      @Override
4578      public Base setProperty(int hash, String name, Base value) throws FHIRException {
4579        switch (hash) {
4580        case 100346066: // index
4581          this.index = TypeConvertor.castToInteger(value); // IntegerType
4582          return value;
4583        case -309425751: // profile
4584          this.profile = TypeConvertor.castToCoding(value); // Coding
4585          return value;
4586        default: return super.setProperty(hash, name, value);
4587        }
4588
4589      }
4590
4591      @Override
4592      public Base setProperty(String name, Base value) throws FHIRException {
4593        if (name.equals("index")) {
4594          this.index = TypeConvertor.castToInteger(value); // IntegerType
4595        } else if (name.equals("profile")) {
4596          this.profile = TypeConvertor.castToCoding(value); // Coding
4597        } else
4598          return super.setProperty(name, value);
4599        return value;
4600      }
4601
4602      @Override
4603      public Base makeProperty(int hash, String name) throws FHIRException {
4604        switch (hash) {
4605        case 100346066:  return getIndexElement();
4606        case -309425751:  return getProfile();
4607        default: return super.makeProperty(hash, name);
4608        }
4609
4610      }
4611
4612      @Override
4613      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
4614        switch (hash) {
4615        case 100346066: /*index*/ return new String[] {"integer"};
4616        case -309425751: /*profile*/ return new String[] {"Coding"};
4617        default: return super.getTypesForProperty(hash, name);
4618        }
4619
4620      }
4621
4622      @Override
4623      public Base addChild(String name) throws FHIRException {
4624        if (name.equals("index")) {
4625          throw new FHIRException("Cannot call addChild on a primitive type TestScript.destination.index");
4626        }
4627        else if (name.equals("profile")) {
4628          this.profile = new Coding();
4629          return this.profile;
4630        }
4631        else
4632          return super.addChild(name);
4633      }
4634
4635      public TestScriptDestinationComponent copy() {
4636        TestScriptDestinationComponent dst = new TestScriptDestinationComponent();
4637        copyValues(dst);
4638        return dst;
4639      }
4640
4641      public void copyValues(TestScriptDestinationComponent dst) {
4642        super.copyValues(dst);
4643        dst.index = index == null ? null : index.copy();
4644        dst.profile = profile == null ? null : profile.copy();
4645      }
4646
4647      @Override
4648      public boolean equalsDeep(Base other_) {
4649        if (!super.equalsDeep(other_))
4650          return false;
4651        if (!(other_ instanceof TestScriptDestinationComponent))
4652          return false;
4653        TestScriptDestinationComponent o = (TestScriptDestinationComponent) other_;
4654        return compareDeep(index, o.index, true) && compareDeep(profile, o.profile, true);
4655      }
4656
4657      @Override
4658      public boolean equalsShallow(Base other_) {
4659        if (!super.equalsShallow(other_))
4660          return false;
4661        if (!(other_ instanceof TestScriptDestinationComponent))
4662          return false;
4663        TestScriptDestinationComponent o = (TestScriptDestinationComponent) other_;
4664        return compareValues(index, o.index, true);
4665      }
4666
4667      public boolean isEmpty() {
4668        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(index, profile);
4669      }
4670
4671  public String fhirType() {
4672    return "TestScript.destination";
4673
4674  }
4675
4676  }
4677
4678    @Block()
4679    public static class TestScriptMetadataComponent extends BackboneElement implements IBaseBackboneElement {
4680        /**
4681         * A link to the FHIR specification that this test is covering.
4682         */
4683        @Child(name = "link", type = {}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
4684        @Description(shortDefinition="Links to the FHIR specification", formalDefinition="A link to the FHIR specification that this test is covering." )
4685        protected List<TestScriptMetadataLinkComponent> link;
4686
4687        /**
4688         * Capabilities that must exist and are assumed to function correctly on the FHIR server being tested.
4689         */
4690        @Child(name = "capability", type = {}, order=2, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
4691        @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." )
4692        protected List<TestScriptMetadataCapabilityComponent> capability;
4693
4694        private static final long serialVersionUID = 745183328L;
4695
4696    /**
4697     * Constructor
4698     */
4699      public TestScriptMetadataComponent() {
4700        super();
4701      }
4702
4703    /**
4704     * Constructor
4705     */
4706      public TestScriptMetadataComponent(TestScriptMetadataCapabilityComponent capability) {
4707        super();
4708        this.addCapability(capability);
4709      }
4710
4711        /**
4712         * @return {@link #link} (A link to the FHIR specification that this test is covering.)
4713         */
4714        public List<TestScriptMetadataLinkComponent> getLink() { 
4715          if (this.link == null)
4716            this.link = new ArrayList<TestScriptMetadataLinkComponent>();
4717          return this.link;
4718        }
4719
4720        /**
4721         * @return Returns a reference to <code>this</code> for easy method chaining
4722         */
4723        public TestScriptMetadataComponent setLink(List<TestScriptMetadataLinkComponent> theLink) { 
4724          this.link = theLink;
4725          return this;
4726        }
4727
4728        public boolean hasLink() { 
4729          if (this.link == null)
4730            return false;
4731          for (TestScriptMetadataLinkComponent item : this.link)
4732            if (!item.isEmpty())
4733              return true;
4734          return false;
4735        }
4736
4737        public TestScriptMetadataLinkComponent addLink() { //3
4738          TestScriptMetadataLinkComponent t = new TestScriptMetadataLinkComponent();
4739          if (this.link == null)
4740            this.link = new ArrayList<TestScriptMetadataLinkComponent>();
4741          this.link.add(t);
4742          return t;
4743        }
4744
4745        public TestScriptMetadataComponent addLink(TestScriptMetadataLinkComponent t) { //3
4746          if (t == null)
4747            return this;
4748          if (this.link == null)
4749            this.link = new ArrayList<TestScriptMetadataLinkComponent>();
4750          this.link.add(t);
4751          return this;
4752        }
4753
4754        /**
4755         * @return The first repetition of repeating field {@link #link}, creating it if it does not already exist {3}
4756         */
4757        public TestScriptMetadataLinkComponent getLinkFirstRep() { 
4758          if (getLink().isEmpty()) {
4759            addLink();
4760          }
4761          return getLink().get(0);
4762        }
4763
4764        /**
4765         * @return {@link #capability} (Capabilities that must exist and are assumed to function correctly on the FHIR server being tested.)
4766         */
4767        public List<TestScriptMetadataCapabilityComponent> getCapability() { 
4768          if (this.capability == null)
4769            this.capability = new ArrayList<TestScriptMetadataCapabilityComponent>();
4770          return this.capability;
4771        }
4772
4773        /**
4774         * @return Returns a reference to <code>this</code> for easy method chaining
4775         */
4776        public TestScriptMetadataComponent setCapability(List<TestScriptMetadataCapabilityComponent> theCapability) { 
4777          this.capability = theCapability;
4778          return this;
4779        }
4780
4781        public boolean hasCapability() { 
4782          if (this.capability == null)
4783            return false;
4784          for (TestScriptMetadataCapabilityComponent item : this.capability)
4785            if (!item.isEmpty())
4786              return true;
4787          return false;
4788        }
4789
4790        public TestScriptMetadataCapabilityComponent addCapability() { //3
4791          TestScriptMetadataCapabilityComponent t = new TestScriptMetadataCapabilityComponent();
4792          if (this.capability == null)
4793            this.capability = new ArrayList<TestScriptMetadataCapabilityComponent>();
4794          this.capability.add(t);
4795          return t;
4796        }
4797
4798        public TestScriptMetadataComponent addCapability(TestScriptMetadataCapabilityComponent t) { //3
4799          if (t == null)
4800            return this;
4801          if (this.capability == null)
4802            this.capability = new ArrayList<TestScriptMetadataCapabilityComponent>();
4803          this.capability.add(t);
4804          return this;
4805        }
4806
4807        /**
4808         * @return The first repetition of repeating field {@link #capability}, creating it if it does not already exist {3}
4809         */
4810        public TestScriptMetadataCapabilityComponent getCapabilityFirstRep() { 
4811          if (getCapability().isEmpty()) {
4812            addCapability();
4813          }
4814          return getCapability().get(0);
4815        }
4816
4817        protected void listChildren(List<Property> children) {
4818          super.listChildren(children);
4819          children.add(new Property("link", "", "A link to the FHIR specification that this test is covering.", 0, java.lang.Integer.MAX_VALUE, link));
4820          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));
4821        }
4822
4823        @Override
4824        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
4825          switch (_hash) {
4826          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);
4827          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);
4828          default: return super.getNamedProperty(_hash, _name, _checkValid);
4829          }
4830
4831        }
4832
4833      @Override
4834      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
4835        switch (hash) {
4836        case 3321850: /*link*/ return this.link == null ? new Base[0] : this.link.toArray(new Base[this.link.size()]); // TestScriptMetadataLinkComponent
4837        case -783669992: /*capability*/ return this.capability == null ? new Base[0] : this.capability.toArray(new Base[this.capability.size()]); // TestScriptMetadataCapabilityComponent
4838        default: return super.getProperty(hash, name, checkValid);
4839        }
4840
4841      }
4842
4843      @Override
4844      public Base setProperty(int hash, String name, Base value) throws FHIRException {
4845        switch (hash) {
4846        case 3321850: // link
4847          this.getLink().add((TestScriptMetadataLinkComponent) value); // TestScriptMetadataLinkComponent
4848          return value;
4849        case -783669992: // capability
4850          this.getCapability().add((TestScriptMetadataCapabilityComponent) value); // TestScriptMetadataCapabilityComponent
4851          return value;
4852        default: return super.setProperty(hash, name, value);
4853        }
4854
4855      }
4856
4857      @Override
4858      public Base setProperty(String name, Base value) throws FHIRException {
4859        if (name.equals("link")) {
4860          this.getLink().add((TestScriptMetadataLinkComponent) value);
4861        } else if (name.equals("capability")) {
4862          this.getCapability().add((TestScriptMetadataCapabilityComponent) value);
4863        } else
4864          return super.setProperty(name, value);
4865        return value;
4866      }
4867
4868      @Override
4869      public Base makeProperty(int hash, String name) throws FHIRException {
4870        switch (hash) {
4871        case 3321850:  return addLink(); 
4872        case -783669992:  return addCapability(); 
4873        default: return super.makeProperty(hash, name);
4874        }
4875
4876      }
4877
4878      @Override
4879      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
4880        switch (hash) {
4881        case 3321850: /*link*/ return new String[] {};
4882        case -783669992: /*capability*/ return new String[] {};
4883        default: return super.getTypesForProperty(hash, name);
4884        }
4885
4886      }
4887
4888      @Override
4889      public Base addChild(String name) throws FHIRException {
4890        if (name.equals("link")) {
4891          return addLink();
4892        }
4893        else if (name.equals("capability")) {
4894          return addCapability();
4895        }
4896        else
4897          return super.addChild(name);
4898      }
4899
4900      public TestScriptMetadataComponent copy() {
4901        TestScriptMetadataComponent dst = new TestScriptMetadataComponent();
4902        copyValues(dst);
4903        return dst;
4904      }
4905
4906      public void copyValues(TestScriptMetadataComponent dst) {
4907        super.copyValues(dst);
4908        if (link != null) {
4909          dst.link = new ArrayList<TestScriptMetadataLinkComponent>();
4910          for (TestScriptMetadataLinkComponent i : link)
4911            dst.link.add(i.copy());
4912        };
4913        if (capability != null) {
4914          dst.capability = new ArrayList<TestScriptMetadataCapabilityComponent>();
4915          for (TestScriptMetadataCapabilityComponent i : capability)
4916            dst.capability.add(i.copy());
4917        };
4918      }
4919
4920      @Override
4921      public boolean equalsDeep(Base other_) {
4922        if (!super.equalsDeep(other_))
4923          return false;
4924        if (!(other_ instanceof TestScriptMetadataComponent))
4925          return false;
4926        TestScriptMetadataComponent o = (TestScriptMetadataComponent) other_;
4927        return compareDeep(link, o.link, true) && compareDeep(capability, o.capability, true);
4928      }
4929
4930      @Override
4931      public boolean equalsShallow(Base other_) {
4932        if (!super.equalsShallow(other_))
4933          return false;
4934        if (!(other_ instanceof TestScriptMetadataComponent))
4935          return false;
4936        TestScriptMetadataComponent o = (TestScriptMetadataComponent) other_;
4937        return true;
4938      }
4939
4940      public boolean isEmpty() {
4941        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(link, capability);
4942      }
4943
4944  public String fhirType() {
4945    return "TestScript.metadata";
4946
4947  }
4948
4949  }
4950
4951    @Block()
4952    public static class TestScriptMetadataLinkComponent extends BackboneElement implements IBaseBackboneElement {
4953        /**
4954         * URL to a particular requirement or feature within the FHIR specification.
4955         */
4956        @Child(name = "url", type = {UriType.class}, order=1, min=1, max=1, modifier=false, summary=false)
4957        @Description(shortDefinition="URL to the specification", formalDefinition="URL to a particular requirement or feature within the FHIR specification." )
4958        protected UriType url;
4959
4960        /**
4961         * Short description of the link.
4962         */
4963        @Child(name = "description", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=false)
4964        @Description(shortDefinition="Short description", formalDefinition="Short description of the link." )
4965        protected StringType description;
4966
4967        private static final long serialVersionUID = 213372298L;
4968
4969    /**
4970     * Constructor
4971     */
4972      public TestScriptMetadataLinkComponent() {
4973        super();
4974      }
4975
4976    /**
4977     * Constructor
4978     */
4979      public TestScriptMetadataLinkComponent(String url) {
4980        super();
4981        this.setUrl(url);
4982      }
4983
4984        /**
4985         * @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
4986         */
4987        public UriType getUrlElement() { 
4988          if (this.url == null)
4989            if (Configuration.errorOnAutoCreate())
4990              throw new Error("Attempt to auto-create TestScriptMetadataLinkComponent.url");
4991            else if (Configuration.doAutoCreate())
4992              this.url = new UriType(); // bb
4993          return this.url;
4994        }
4995
4996        public boolean hasUrlElement() { 
4997          return this.url != null && !this.url.isEmpty();
4998        }
4999
5000        public boolean hasUrl() { 
5001          return this.url != null && !this.url.isEmpty();
5002        }
5003
5004        /**
5005         * @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
5006         */
5007        public TestScriptMetadataLinkComponent setUrlElement(UriType value) { 
5008          this.url = value;
5009          return this;
5010        }
5011
5012        /**
5013         * @return URL to a particular requirement or feature within the FHIR specification.
5014         */
5015        public String getUrl() { 
5016          return this.url == null ? null : this.url.getValue();
5017        }
5018
5019        /**
5020         * @param value URL to a particular requirement or feature within the FHIR specification.
5021         */
5022        public TestScriptMetadataLinkComponent setUrl(String value) { 
5023            if (this.url == null)
5024              this.url = new UriType();
5025            this.url.setValue(value);
5026          return this;
5027        }
5028
5029        /**
5030         * @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
5031         */
5032        public StringType getDescriptionElement() { 
5033          if (this.description == null)
5034            if (Configuration.errorOnAutoCreate())
5035              throw new Error("Attempt to auto-create TestScriptMetadataLinkComponent.description");
5036            else if (Configuration.doAutoCreate())
5037              this.description = new StringType(); // bb
5038          return this.description;
5039        }
5040
5041        public boolean hasDescriptionElement() { 
5042          return this.description != null && !this.description.isEmpty();
5043        }
5044
5045        public boolean hasDescription() { 
5046          return this.description != null && !this.description.isEmpty();
5047        }
5048
5049        /**
5050         * @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
5051         */
5052        public TestScriptMetadataLinkComponent setDescriptionElement(StringType value) { 
5053          this.description = value;
5054          return this;
5055        }
5056
5057        /**
5058         * @return Short description of the link.
5059         */
5060        public String getDescription() { 
5061          return this.description == null ? null : this.description.getValue();
5062        }
5063
5064        /**
5065         * @param value Short description of the link.
5066         */
5067        public TestScriptMetadataLinkComponent setDescription(String value) { 
5068          if (Utilities.noString(value))
5069            this.description = null;
5070          else {
5071            if (this.description == null)
5072              this.description = new StringType();
5073            this.description.setValue(value);
5074          }
5075          return this;
5076        }
5077
5078        protected void listChildren(List<Property> children) {
5079          super.listChildren(children);
5080          children.add(new Property("url", "uri", "URL to a particular requirement or feature within the FHIR specification.", 0, 1, url));
5081          children.add(new Property("description", "string", "Short description of the link.", 0, 1, description));
5082        }
5083
5084        @Override
5085        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
5086          switch (_hash) {
5087          case 116079: /*url*/  return new Property("url", "uri", "URL to a particular requirement or feature within the FHIR specification.", 0, 1, url);
5088          case -1724546052: /*description*/  return new Property("description", "string", "Short description of the link.", 0, 1, description);
5089          default: return super.getNamedProperty(_hash, _name, _checkValid);
5090          }
5091
5092        }
5093
5094      @Override
5095      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
5096        switch (hash) {
5097        case 116079: /*url*/ return this.url == null ? new Base[0] : new Base[] {this.url}; // UriType
5098        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // StringType
5099        default: return super.getProperty(hash, name, checkValid);
5100        }
5101
5102      }
5103
5104      @Override
5105      public Base setProperty(int hash, String name, Base value) throws FHIRException {
5106        switch (hash) {
5107        case 116079: // url
5108          this.url = TypeConvertor.castToUri(value); // UriType
5109          return value;
5110        case -1724546052: // description
5111          this.description = TypeConvertor.castToString(value); // StringType
5112          return value;
5113        default: return super.setProperty(hash, name, value);
5114        }
5115
5116      }
5117
5118      @Override
5119      public Base setProperty(String name, Base value) throws FHIRException {
5120        if (name.equals("url")) {
5121          this.url = TypeConvertor.castToUri(value); // UriType
5122        } else if (name.equals("description")) {
5123          this.description = TypeConvertor.castToString(value); // StringType
5124        } else
5125          return super.setProperty(name, value);
5126        return value;
5127      }
5128
5129      @Override
5130      public Base makeProperty(int hash, String name) throws FHIRException {
5131        switch (hash) {
5132        case 116079:  return getUrlElement();
5133        case -1724546052:  return getDescriptionElement();
5134        default: return super.makeProperty(hash, name);
5135        }
5136
5137      }
5138
5139      @Override
5140      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
5141        switch (hash) {
5142        case 116079: /*url*/ return new String[] {"uri"};
5143        case -1724546052: /*description*/ return new String[] {"string"};
5144        default: return super.getTypesForProperty(hash, name);
5145        }
5146
5147      }
5148
5149      @Override
5150      public Base addChild(String name) throws FHIRException {
5151        if (name.equals("url")) {
5152          throw new FHIRException("Cannot call addChild on a primitive type TestScript.metadata.link.url");
5153        }
5154        else if (name.equals("description")) {
5155          throw new FHIRException("Cannot call addChild on a primitive type TestScript.metadata.link.description");
5156        }
5157        else
5158          return super.addChild(name);
5159      }
5160
5161      public TestScriptMetadataLinkComponent copy() {
5162        TestScriptMetadataLinkComponent dst = new TestScriptMetadataLinkComponent();
5163        copyValues(dst);
5164        return dst;
5165      }
5166
5167      public void copyValues(TestScriptMetadataLinkComponent dst) {
5168        super.copyValues(dst);
5169        dst.url = url == null ? null : url.copy();
5170        dst.description = description == null ? null : description.copy();
5171      }
5172
5173      @Override
5174      public boolean equalsDeep(Base other_) {
5175        if (!super.equalsDeep(other_))
5176          return false;
5177        if (!(other_ instanceof TestScriptMetadataLinkComponent))
5178          return false;
5179        TestScriptMetadataLinkComponent o = (TestScriptMetadataLinkComponent) other_;
5180        return compareDeep(url, o.url, true) && compareDeep(description, o.description, true);
5181      }
5182
5183      @Override
5184      public boolean equalsShallow(Base other_) {
5185        if (!super.equalsShallow(other_))
5186          return false;
5187        if (!(other_ instanceof TestScriptMetadataLinkComponent))
5188          return false;
5189        TestScriptMetadataLinkComponent o = (TestScriptMetadataLinkComponent) other_;
5190        return compareValues(url, o.url, true) && compareValues(description, o.description, true);
5191      }
5192
5193      public boolean isEmpty() {
5194        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(url, description);
5195      }
5196
5197  public String fhirType() {
5198    return "TestScript.metadata.link";
5199
5200  }
5201
5202  }
5203
5204    @Block()
5205    public static class TestScriptMetadataCapabilityComponent extends BackboneElement implements IBaseBackboneElement {
5206        /**
5207         * Whether or not the test execution will require the given capabilities of the server in order for this test script to execute.
5208         */
5209        @Child(name = "required", type = {BooleanType.class}, order=1, min=1, max=1, modifier=false, summary=false)
5210        @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." )
5211        protected BooleanType required;
5212
5213        /**
5214         * Whether or not the test execution will validate the given capabilities of the server in order for this test script to execute.
5215         */
5216        @Child(name = "validated", type = {BooleanType.class}, order=2, min=1, max=1, modifier=false, summary=false)
5217        @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." )
5218        protected BooleanType validated;
5219
5220        /**
5221         * Description of the capabilities that this test script is requiring the server to support.
5222         */
5223        @Child(name = "description", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=false)
5224        @Description(shortDefinition="The expected capabilities of the server", formalDefinition="Description of the capabilities that this test script is requiring the server to support." )
5225        protected StringType description;
5226
5227        /**
5228         * Which origin server these requirements apply to.
5229         */
5230        @Child(name = "origin", type = {IntegerType.class}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
5231        @Description(shortDefinition="Which origin server these requirements apply to", formalDefinition="Which origin server these requirements apply to." )
5232        protected List<IntegerType> origin;
5233
5234        /**
5235         * Which server these requirements apply to.
5236         */
5237        @Child(name = "destination", type = {IntegerType.class}, order=5, min=0, max=1, modifier=false, summary=false)
5238        @Description(shortDefinition="Which server these requirements apply to", formalDefinition="Which server these requirements apply to." )
5239        protected IntegerType destination;
5240
5241        /**
5242         * Links to the FHIR specification that describes this interaction and the resources involved in more detail.
5243         */
5244        @Child(name = "link", type = {UriType.class}, order=6, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
5245        @Description(shortDefinition="Links to the FHIR specification", formalDefinition="Links to the FHIR specification that describes this interaction and the resources involved in more detail." )
5246        protected List<UriType> link;
5247
5248        /**
5249         * 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.
5250         */
5251        @Child(name = "capabilities", type = {CanonicalType.class}, order=7, min=1, max=1, modifier=false, summary=false)
5252        @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." )
5253        protected CanonicalType capabilities;
5254
5255        private static final long serialVersionUID = -1368199288L;
5256
5257    /**
5258     * Constructor
5259     */
5260      public TestScriptMetadataCapabilityComponent() {
5261        super();
5262      }
5263
5264    /**
5265     * Constructor
5266     */
5267      public TestScriptMetadataCapabilityComponent(boolean required, boolean validated, String capabilities) {
5268        super();
5269        this.setRequired(required);
5270        this.setValidated(validated);
5271        this.setCapabilities(capabilities);
5272      }
5273
5274        /**
5275         * @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
5276         */
5277        public BooleanType getRequiredElement() { 
5278          if (this.required == null)
5279            if (Configuration.errorOnAutoCreate())
5280              throw new Error("Attempt to auto-create TestScriptMetadataCapabilityComponent.required");
5281            else if (Configuration.doAutoCreate())
5282              this.required = new BooleanType(); // bb
5283          return this.required;
5284        }
5285
5286        public boolean hasRequiredElement() { 
5287          return this.required != null && !this.required.isEmpty();
5288        }
5289
5290        public boolean hasRequired() { 
5291          return this.required != null && !this.required.isEmpty();
5292        }
5293
5294        /**
5295         * @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
5296         */
5297        public TestScriptMetadataCapabilityComponent setRequiredElement(BooleanType value) { 
5298          this.required = value;
5299          return this;
5300        }
5301
5302        /**
5303         * @return Whether or not the test execution will require the given capabilities of the server in order for this test script to execute.
5304         */
5305        public boolean getRequired() { 
5306          return this.required == null || this.required.isEmpty() ? false : this.required.getValue();
5307        }
5308
5309        /**
5310         * @param value Whether or not the test execution will require the given capabilities of the server in order for this test script to execute.
5311         */
5312        public TestScriptMetadataCapabilityComponent setRequired(boolean value) { 
5313            if (this.required == null)
5314              this.required = new BooleanType();
5315            this.required.setValue(value);
5316          return this;
5317        }
5318
5319        /**
5320         * @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
5321         */
5322        public BooleanType getValidatedElement() { 
5323          if (this.validated == null)
5324            if (Configuration.errorOnAutoCreate())
5325              throw new Error("Attempt to auto-create TestScriptMetadataCapabilityComponent.validated");
5326            else if (Configuration.doAutoCreate())
5327              this.validated = new BooleanType(); // bb
5328          return this.validated;
5329        }
5330
5331        public boolean hasValidatedElement() { 
5332          return this.validated != null && !this.validated.isEmpty();
5333        }
5334
5335        public boolean hasValidated() { 
5336          return this.validated != null && !this.validated.isEmpty();
5337        }
5338
5339        /**
5340         * @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
5341         */
5342        public TestScriptMetadataCapabilityComponent setValidatedElement(BooleanType value) { 
5343          this.validated = value;
5344          return this;
5345        }
5346
5347        /**
5348         * @return Whether or not the test execution will validate the given capabilities of the server in order for this test script to execute.
5349         */
5350        public boolean getValidated() { 
5351          return this.validated == null || this.validated.isEmpty() ? false : this.validated.getValue();
5352        }
5353
5354        /**
5355         * @param value Whether or not the test execution will validate the given capabilities of the server in order for this test script to execute.
5356         */
5357        public TestScriptMetadataCapabilityComponent setValidated(boolean value) { 
5358            if (this.validated == null)
5359              this.validated = new BooleanType();
5360            this.validated.setValue(value);
5361          return this;
5362        }
5363
5364        /**
5365         * @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
5366         */
5367        public StringType getDescriptionElement() { 
5368          if (this.description == null)
5369            if (Configuration.errorOnAutoCreate())
5370              throw new Error("Attempt to auto-create TestScriptMetadataCapabilityComponent.description");
5371            else if (Configuration.doAutoCreate())
5372              this.description = new StringType(); // bb
5373          return this.description;
5374        }
5375
5376        public boolean hasDescriptionElement() { 
5377          return this.description != null && !this.description.isEmpty();
5378        }
5379
5380        public boolean hasDescription() { 
5381          return this.description != null && !this.description.isEmpty();
5382        }
5383
5384        /**
5385         * @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
5386         */
5387        public TestScriptMetadataCapabilityComponent setDescriptionElement(StringType value) { 
5388          this.description = value;
5389          return this;
5390        }
5391
5392        /**
5393         * @return Description of the capabilities that this test script is requiring the server to support.
5394         */
5395        public String getDescription() { 
5396          return this.description == null ? null : this.description.getValue();
5397        }
5398
5399        /**
5400         * @param value Description of the capabilities that this test script is requiring the server to support.
5401         */
5402        public TestScriptMetadataCapabilityComponent setDescription(String value) { 
5403          if (Utilities.noString(value))
5404            this.description = null;
5405          else {
5406            if (this.description == null)
5407              this.description = new StringType();
5408            this.description.setValue(value);
5409          }
5410          return this;
5411        }
5412
5413        /**
5414         * @return {@link #origin} (Which origin server these requirements apply to.)
5415         */
5416        public List<IntegerType> getOrigin() { 
5417          if (this.origin == null)
5418            this.origin = new ArrayList<IntegerType>();
5419          return this.origin;
5420        }
5421
5422        /**
5423         * @return Returns a reference to <code>this</code> for easy method chaining
5424         */
5425        public TestScriptMetadataCapabilityComponent setOrigin(List<IntegerType> theOrigin) { 
5426          this.origin = theOrigin;
5427          return this;
5428        }
5429
5430        public boolean hasOrigin() { 
5431          if (this.origin == null)
5432            return false;
5433          for (IntegerType item : this.origin)
5434            if (!item.isEmpty())
5435              return true;
5436          return false;
5437        }
5438
5439        /**
5440         * @return {@link #origin} (Which origin server these requirements apply to.)
5441         */
5442        public IntegerType addOriginElement() {//2 
5443          IntegerType t = new IntegerType();
5444          if (this.origin == null)
5445            this.origin = new ArrayList<IntegerType>();
5446          this.origin.add(t);
5447          return t;
5448        }
5449
5450        /**
5451         * @param value {@link #origin} (Which origin server these requirements apply to.)
5452         */
5453        public TestScriptMetadataCapabilityComponent addOrigin(int value) { //1
5454          IntegerType t = new IntegerType();
5455          t.setValue(value);
5456          if (this.origin == null)
5457            this.origin = new ArrayList<IntegerType>();
5458          this.origin.add(t);
5459          return this;
5460        }
5461
5462        /**
5463         * @param value {@link #origin} (Which origin server these requirements apply to.)
5464         */
5465        public boolean hasOrigin(int value) { 
5466          if (this.origin == null)
5467            return false;
5468          for (IntegerType v : this.origin)
5469            if (v.getValue().equals(value)) // integer
5470              return true;
5471          return false;
5472        }
5473
5474        /**
5475         * @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
5476         */
5477        public IntegerType getDestinationElement() { 
5478          if (this.destination == null)
5479            if (Configuration.errorOnAutoCreate())
5480              throw new Error("Attempt to auto-create TestScriptMetadataCapabilityComponent.destination");
5481            else if (Configuration.doAutoCreate())
5482              this.destination = new IntegerType(); // bb
5483          return this.destination;
5484        }
5485
5486        public boolean hasDestinationElement() { 
5487          return this.destination != null && !this.destination.isEmpty();
5488        }
5489
5490        public boolean hasDestination() { 
5491          return this.destination != null && !this.destination.isEmpty();
5492        }
5493
5494        /**
5495         * @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
5496         */
5497        public TestScriptMetadataCapabilityComponent setDestinationElement(IntegerType value) { 
5498          this.destination = value;
5499          return this;
5500        }
5501
5502        /**
5503         * @return Which server these requirements apply to.
5504         */
5505        public int getDestination() { 
5506          return this.destination == null || this.destination.isEmpty() ? 0 : this.destination.getValue();
5507        }
5508
5509        /**
5510         * @param value Which server these requirements apply to.
5511         */
5512        public TestScriptMetadataCapabilityComponent setDestination(int value) { 
5513            if (this.destination == null)
5514              this.destination = new IntegerType();
5515            this.destination.setValue(value);
5516          return this;
5517        }
5518
5519        /**
5520         * @return {@link #link} (Links to the FHIR specification that describes this interaction and the resources involved in more detail.)
5521         */
5522        public List<UriType> getLink() { 
5523          if (this.link == null)
5524            this.link = new ArrayList<UriType>();
5525          return this.link;
5526        }
5527
5528        /**
5529         * @return Returns a reference to <code>this</code> for easy method chaining
5530         */
5531        public TestScriptMetadataCapabilityComponent setLink(List<UriType> theLink) { 
5532          this.link = theLink;
5533          return this;
5534        }
5535
5536        public boolean hasLink() { 
5537          if (this.link == null)
5538            return false;
5539          for (UriType item : this.link)
5540            if (!item.isEmpty())
5541              return true;
5542          return false;
5543        }
5544
5545        /**
5546         * @return {@link #link} (Links to the FHIR specification that describes this interaction and the resources involved in more detail.)
5547         */
5548        public UriType addLinkElement() {//2 
5549          UriType t = new UriType();
5550          if (this.link == null)
5551            this.link = new ArrayList<UriType>();
5552          this.link.add(t);
5553          return t;
5554        }
5555
5556        /**
5557         * @param value {@link #link} (Links to the FHIR specification that describes this interaction and the resources involved in more detail.)
5558         */
5559        public TestScriptMetadataCapabilityComponent addLink(String value) { //1
5560          UriType t = new UriType();
5561          t.setValue(value);
5562          if (this.link == null)
5563            this.link = new ArrayList<UriType>();
5564          this.link.add(t);
5565          return this;
5566        }
5567
5568        /**
5569         * @param value {@link #link} (Links to the FHIR specification that describes this interaction and the resources involved in more detail.)
5570         */
5571        public boolean hasLink(String value) { 
5572          if (this.link == null)
5573            return false;
5574          for (UriType v : this.link)
5575            if (v.getValue().equals(value)) // uri
5576              return true;
5577          return false;
5578        }
5579
5580        /**
5581         * @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
5582         */
5583        public CanonicalType getCapabilitiesElement() { 
5584          if (this.capabilities == null)
5585            if (Configuration.errorOnAutoCreate())
5586              throw new Error("Attempt to auto-create TestScriptMetadataCapabilityComponent.capabilities");
5587            else if (Configuration.doAutoCreate())
5588              this.capabilities = new CanonicalType(); // bb
5589          return this.capabilities;
5590        }
5591
5592        public boolean hasCapabilitiesElement() { 
5593          return this.capabilities != null && !this.capabilities.isEmpty();
5594        }
5595
5596        public boolean hasCapabilities() { 
5597          return this.capabilities != null && !this.capabilities.isEmpty();
5598        }
5599
5600        /**
5601         * @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
5602         */
5603        public TestScriptMetadataCapabilityComponent setCapabilitiesElement(CanonicalType value) { 
5604          this.capabilities = value;
5605          return this;
5606        }
5607
5608        /**
5609         * @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.
5610         */
5611        public String getCapabilities() { 
5612          return this.capabilities == null ? null : this.capabilities.getValue();
5613        }
5614
5615        /**
5616         * @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.
5617         */
5618        public TestScriptMetadataCapabilityComponent setCapabilities(String value) { 
5619            if (this.capabilities == null)
5620              this.capabilities = new CanonicalType();
5621            this.capabilities.setValue(value);
5622          return this;
5623        }
5624
5625        protected void listChildren(List<Property> children) {
5626          super.listChildren(children);
5627          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));
5628          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));
5629          children.add(new Property("description", "string", "Description of the capabilities that this test script is requiring the server to support.", 0, 1, description));
5630          children.add(new Property("origin", "integer", "Which origin server these requirements apply to.", 0, java.lang.Integer.MAX_VALUE, origin));
5631          children.add(new Property("destination", "integer", "Which server these requirements apply to.", 0, 1, destination));
5632          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));
5633          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));
5634        }
5635
5636        @Override
5637        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
5638          switch (_hash) {
5639          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);
5640          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);
5641          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);
5642          case -1008619738: /*origin*/  return new Property("origin", "integer", "Which origin server these requirements apply to.", 0, java.lang.Integer.MAX_VALUE, origin);
5643          case -1429847026: /*destination*/  return new Property("destination", "integer", "Which server these requirements apply to.", 0, 1, destination);
5644          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);
5645          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);
5646          default: return super.getNamedProperty(_hash, _name, _checkValid);
5647          }
5648
5649        }
5650
5651      @Override
5652      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
5653        switch (hash) {
5654        case -393139297: /*required*/ return this.required == null ? new Base[0] : new Base[] {this.required}; // BooleanType
5655        case -1109784050: /*validated*/ return this.validated == null ? new Base[0] : new Base[] {this.validated}; // BooleanType
5656        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // StringType
5657        case -1008619738: /*origin*/ return this.origin == null ? new Base[0] : this.origin.toArray(new Base[this.origin.size()]); // IntegerType
5658        case -1429847026: /*destination*/ return this.destination == null ? new Base[0] : new Base[] {this.destination}; // IntegerType
5659        case 3321850: /*link*/ return this.link == null ? new Base[0] : this.link.toArray(new Base[this.link.size()]); // UriType
5660        case -1487597642: /*capabilities*/ return this.capabilities == null ? new Base[0] : new Base[] {this.capabilities}; // CanonicalType
5661        default: return super.getProperty(hash, name, checkValid);
5662        }
5663
5664      }
5665
5666      @Override
5667      public Base setProperty(int hash, String name, Base value) throws FHIRException {
5668        switch (hash) {
5669        case -393139297: // required
5670          this.required = TypeConvertor.castToBoolean(value); // BooleanType
5671          return value;
5672        case -1109784050: // validated
5673          this.validated = TypeConvertor.castToBoolean(value); // BooleanType
5674          return value;
5675        case -1724546052: // description
5676          this.description = TypeConvertor.castToString(value); // StringType
5677          return value;
5678        case -1008619738: // origin
5679          this.getOrigin().add(TypeConvertor.castToInteger(value)); // IntegerType
5680          return value;
5681        case -1429847026: // destination
5682          this.destination = TypeConvertor.castToInteger(value); // IntegerType
5683          return value;
5684        case 3321850: // link
5685          this.getLink().add(TypeConvertor.castToUri(value)); // UriType
5686          return value;
5687        case -1487597642: // capabilities
5688          this.capabilities = TypeConvertor.castToCanonical(value); // CanonicalType
5689          return value;
5690        default: return super.setProperty(hash, name, value);
5691        }
5692
5693      }
5694
5695      @Override
5696      public Base setProperty(String name, Base value) throws FHIRException {
5697        if (name.equals("required")) {
5698          this.required = TypeConvertor.castToBoolean(value); // BooleanType
5699        } else if (name.equals("validated")) {
5700          this.validated = TypeConvertor.castToBoolean(value); // BooleanType
5701        } else if (name.equals("description")) {
5702          this.description = TypeConvertor.castToString(value); // StringType
5703        } else if (name.equals("origin")) {
5704          this.getOrigin().add(TypeConvertor.castToInteger(value));
5705        } else if (name.equals("destination")) {
5706          this.destination = TypeConvertor.castToInteger(value); // IntegerType
5707        } else if (name.equals("link")) {
5708          this.getLink().add(TypeConvertor.castToUri(value));
5709        } else if (name.equals("capabilities")) {
5710          this.capabilities = TypeConvertor.castToCanonical(value); // CanonicalType
5711        } else
5712          return super.setProperty(name, value);
5713        return value;
5714      }
5715
5716      @Override
5717      public Base makeProperty(int hash, String name) throws FHIRException {
5718        switch (hash) {
5719        case -393139297:  return getRequiredElement();
5720        case -1109784050:  return getValidatedElement();
5721        case -1724546052:  return getDescriptionElement();
5722        case -1008619738:  return addOriginElement();
5723        case -1429847026:  return getDestinationElement();
5724        case 3321850:  return addLinkElement();
5725        case -1487597642:  return getCapabilitiesElement();
5726        default: return super.makeProperty(hash, name);
5727        }
5728
5729      }
5730
5731      @Override
5732      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
5733        switch (hash) {
5734        case -393139297: /*required*/ return new String[] {"boolean"};
5735        case -1109784050: /*validated*/ return new String[] {"boolean"};
5736        case -1724546052: /*description*/ return new String[] {"string"};
5737        case -1008619738: /*origin*/ return new String[] {"integer"};
5738        case -1429847026: /*destination*/ return new String[] {"integer"};
5739        case 3321850: /*link*/ return new String[] {"uri"};
5740        case -1487597642: /*capabilities*/ return new String[] {"canonical"};
5741        default: return super.getTypesForProperty(hash, name);
5742        }
5743
5744      }
5745
5746      @Override
5747      public Base addChild(String name) throws FHIRException {
5748        if (name.equals("required")) {
5749          throw new FHIRException("Cannot call addChild on a primitive type TestScript.metadata.capability.required");
5750        }
5751        else if (name.equals("validated")) {
5752          throw new FHIRException("Cannot call addChild on a primitive type TestScript.metadata.capability.validated");
5753        }
5754        else if (name.equals("description")) {
5755          throw new FHIRException("Cannot call addChild on a primitive type TestScript.metadata.capability.description");
5756        }
5757        else if (name.equals("origin")) {
5758          throw new FHIRException("Cannot call addChild on a primitive type TestScript.metadata.capability.origin");
5759        }
5760        else if (name.equals("destination")) {
5761          throw new FHIRException("Cannot call addChild on a primitive type TestScript.metadata.capability.destination");
5762        }
5763        else if (name.equals("link")) {
5764          throw new FHIRException("Cannot call addChild on a primitive type TestScript.metadata.capability.link");
5765        }
5766        else if (name.equals("capabilities")) {
5767          throw new FHIRException("Cannot call addChild on a primitive type TestScript.metadata.capability.capabilities");
5768        }
5769        else
5770          return super.addChild(name);
5771      }
5772
5773      public TestScriptMetadataCapabilityComponent copy() {
5774        TestScriptMetadataCapabilityComponent dst = new TestScriptMetadataCapabilityComponent();
5775        copyValues(dst);
5776        return dst;
5777      }
5778
5779      public void copyValues(TestScriptMetadataCapabilityComponent dst) {
5780        super.copyValues(dst);
5781        dst.required = required == null ? null : required.copy();
5782        dst.validated = validated == null ? null : validated.copy();
5783        dst.description = description == null ? null : description.copy();
5784        if (origin != null) {
5785          dst.origin = new ArrayList<IntegerType>();
5786          for (IntegerType i : origin)
5787            dst.origin.add(i.copy());
5788        };
5789        dst.destination = destination == null ? null : destination.copy();
5790        if (link != null) {
5791          dst.link = new ArrayList<UriType>();
5792          for (UriType i : link)
5793            dst.link.add(i.copy());
5794        };
5795        dst.capabilities = capabilities == null ? null : capabilities.copy();
5796      }
5797
5798      @Override
5799      public boolean equalsDeep(Base other_) {
5800        if (!super.equalsDeep(other_))
5801          return false;
5802        if (!(other_ instanceof TestScriptMetadataCapabilityComponent))
5803          return false;
5804        TestScriptMetadataCapabilityComponent o = (TestScriptMetadataCapabilityComponent) other_;
5805        return compareDeep(required, o.required, true) && compareDeep(validated, o.validated, true) && compareDeep(description, o.description, true)
5806           && compareDeep(origin, o.origin, true) && compareDeep(destination, o.destination, true) && compareDeep(link, o.link, true)
5807           && compareDeep(capabilities, o.capabilities, true);
5808      }
5809
5810      @Override
5811      public boolean equalsShallow(Base other_) {
5812        if (!super.equalsShallow(other_))
5813          return false;
5814        if (!(other_ instanceof TestScriptMetadataCapabilityComponent))
5815          return false;
5816        TestScriptMetadataCapabilityComponent o = (TestScriptMetadataCapabilityComponent) other_;
5817        return compareValues(required, o.required, true) && compareValues(validated, o.validated, true) && compareValues(description, o.description, true)
5818           && compareValues(origin, o.origin, true) && compareValues(destination, o.destination, true) && compareValues(link, o.link, true)
5819           && compareValues(capabilities, o.capabilities, true);
5820      }
5821
5822      public boolean isEmpty() {
5823        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(required, validated, description
5824          , origin, destination, link, capabilities);
5825      }
5826
5827  public String fhirType() {
5828    return "TestScript.metadata.capability";
5829
5830  }
5831
5832  }
5833
5834    @Block()
5835    public static class TestScriptFixtureComponent extends BackboneElement implements IBaseBackboneElement {
5836        /**
5837         * 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.
5838         */
5839        @Child(name = "autocreate", type = {BooleanType.class}, order=1, min=1, max=1, modifier=false, summary=false)
5840        @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." )
5841        protected BooleanType autocreate;
5842
5843        /**
5844         * 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.
5845         */
5846        @Child(name = "autodelete", type = {BooleanType.class}, order=2, min=1, max=1, modifier=false, summary=false)
5847        @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." )
5848        protected BooleanType autodelete;
5849
5850        /**
5851         * Reference to the resource (containing the contents of the resource needed for operations).
5852         */
5853        @Child(name = "resource", type = {Reference.class}, order=3, min=0, max=1, modifier=false, summary=false)
5854        @Description(shortDefinition="Reference of the resource", formalDefinition="Reference to the resource (containing the contents of the resource needed for operations)." )
5855        protected Reference resource;
5856
5857        private static final long serialVersionUID = 672117234L;
5858
5859    /**
5860     * Constructor
5861     */
5862      public TestScriptFixtureComponent() {
5863        super();
5864      }
5865
5866    /**
5867     * Constructor
5868     */
5869      public TestScriptFixtureComponent(boolean autocreate, boolean autodelete) {
5870        super();
5871        this.setAutocreate(autocreate);
5872        this.setAutodelete(autodelete);
5873      }
5874
5875        /**
5876         * @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
5877         */
5878        public BooleanType getAutocreateElement() { 
5879          if (this.autocreate == null)
5880            if (Configuration.errorOnAutoCreate())
5881              throw new Error("Attempt to auto-create TestScriptFixtureComponent.autocreate");
5882            else if (Configuration.doAutoCreate())
5883              this.autocreate = new BooleanType(); // bb
5884          return this.autocreate;
5885        }
5886
5887        public boolean hasAutocreateElement() { 
5888          return this.autocreate != null && !this.autocreate.isEmpty();
5889        }
5890
5891        public boolean hasAutocreate() { 
5892          return this.autocreate != null && !this.autocreate.isEmpty();
5893        }
5894
5895        /**
5896         * @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
5897         */
5898        public TestScriptFixtureComponent setAutocreateElement(BooleanType value) { 
5899          this.autocreate = value;
5900          return this;
5901        }
5902
5903        /**
5904         * @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.
5905         */
5906        public boolean getAutocreate() { 
5907          return this.autocreate == null || this.autocreate.isEmpty() ? false : this.autocreate.getValue();
5908        }
5909
5910        /**
5911         * @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.
5912         */
5913        public TestScriptFixtureComponent setAutocreate(boolean value) { 
5914            if (this.autocreate == null)
5915              this.autocreate = new BooleanType();
5916            this.autocreate.setValue(value);
5917          return this;
5918        }
5919
5920        /**
5921         * @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
5922         */
5923        public BooleanType getAutodeleteElement() { 
5924          if (this.autodelete == null)
5925            if (Configuration.errorOnAutoCreate())
5926              throw new Error("Attempt to auto-create TestScriptFixtureComponent.autodelete");
5927            else if (Configuration.doAutoCreate())
5928              this.autodelete = new BooleanType(); // bb
5929          return this.autodelete;
5930        }
5931
5932        public boolean hasAutodeleteElement() { 
5933          return this.autodelete != null && !this.autodelete.isEmpty();
5934        }
5935
5936        public boolean hasAutodelete() { 
5937          return this.autodelete != null && !this.autodelete.isEmpty();
5938        }
5939
5940        /**
5941         * @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
5942         */
5943        public TestScriptFixtureComponent setAutodeleteElement(BooleanType value) { 
5944          this.autodelete = value;
5945          return this;
5946        }
5947
5948        /**
5949         * @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.
5950         */
5951        public boolean getAutodelete() { 
5952          return this.autodelete == null || this.autodelete.isEmpty() ? false : this.autodelete.getValue();
5953        }
5954
5955        /**
5956         * @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.
5957         */
5958        public TestScriptFixtureComponent setAutodelete(boolean value) { 
5959            if (this.autodelete == null)
5960              this.autodelete = new BooleanType();
5961            this.autodelete.setValue(value);
5962          return this;
5963        }
5964
5965        /**
5966         * @return {@link #resource} (Reference to the resource (containing the contents of the resource needed for operations).)
5967         */
5968        public Reference getResource() { 
5969          if (this.resource == null)
5970            if (Configuration.errorOnAutoCreate())
5971              throw new Error("Attempt to auto-create TestScriptFixtureComponent.resource");
5972            else if (Configuration.doAutoCreate())
5973              this.resource = new Reference(); // cc
5974          return this.resource;
5975        }
5976
5977        public boolean hasResource() { 
5978          return this.resource != null && !this.resource.isEmpty();
5979        }
5980
5981        /**
5982         * @param value {@link #resource} (Reference to the resource (containing the contents of the resource needed for operations).)
5983         */
5984        public TestScriptFixtureComponent setResource(Reference value) { 
5985          this.resource = value;
5986          return this;
5987        }
5988
5989        protected void listChildren(List<Property> children) {
5990          super.listChildren(children);
5991          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));
5992          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));
5993          children.add(new Property("resource", "Reference(Any)", "Reference to the resource (containing the contents of the resource needed for operations).", 0, 1, resource));
5994        }
5995
5996        @Override
5997        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
5998          switch (_hash) {
5999          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);
6000          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);
6001          case -341064690: /*resource*/  return new Property("resource", "Reference(Any)", "Reference to the resource (containing the contents of the resource needed for operations).", 0, 1, resource);
6002          default: return super.getNamedProperty(_hash, _name, _checkValid);
6003          }
6004
6005        }
6006
6007      @Override
6008      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
6009        switch (hash) {
6010        case 73154411: /*autocreate*/ return this.autocreate == null ? new Base[0] : new Base[] {this.autocreate}; // BooleanType
6011        case 89990170: /*autodelete*/ return this.autodelete == null ? new Base[0] : new Base[] {this.autodelete}; // BooleanType
6012        case -341064690: /*resource*/ return this.resource == null ? new Base[0] : new Base[] {this.resource}; // Reference
6013        default: return super.getProperty(hash, name, checkValid);
6014        }
6015
6016      }
6017
6018      @Override
6019      public Base setProperty(int hash, String name, Base value) throws FHIRException {
6020        switch (hash) {
6021        case 73154411: // autocreate
6022          this.autocreate = TypeConvertor.castToBoolean(value); // BooleanType
6023          return value;
6024        case 89990170: // autodelete
6025          this.autodelete = TypeConvertor.castToBoolean(value); // BooleanType
6026          return value;
6027        case -341064690: // resource
6028          this.resource = TypeConvertor.castToReference(value); // Reference
6029          return value;
6030        default: return super.setProperty(hash, name, value);
6031        }
6032
6033      }
6034
6035      @Override
6036      public Base setProperty(String name, Base value) throws FHIRException {
6037        if (name.equals("autocreate")) {
6038          this.autocreate = TypeConvertor.castToBoolean(value); // BooleanType
6039        } else if (name.equals("autodelete")) {
6040          this.autodelete = TypeConvertor.castToBoolean(value); // BooleanType
6041        } else if (name.equals("resource")) {
6042          this.resource = TypeConvertor.castToReference(value); // Reference
6043        } else
6044          return super.setProperty(name, value);
6045        return value;
6046      }
6047
6048      @Override
6049      public Base makeProperty(int hash, String name) throws FHIRException {
6050        switch (hash) {
6051        case 73154411:  return getAutocreateElement();
6052        case 89990170:  return getAutodeleteElement();
6053        case -341064690:  return getResource();
6054        default: return super.makeProperty(hash, name);
6055        }
6056
6057      }
6058
6059      @Override
6060      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
6061        switch (hash) {
6062        case 73154411: /*autocreate*/ return new String[] {"boolean"};
6063        case 89990170: /*autodelete*/ return new String[] {"boolean"};
6064        case -341064690: /*resource*/ return new String[] {"Reference"};
6065        default: return super.getTypesForProperty(hash, name);
6066        }
6067
6068      }
6069
6070      @Override
6071      public Base addChild(String name) throws FHIRException {
6072        if (name.equals("autocreate")) {
6073          throw new FHIRException("Cannot call addChild on a primitive type TestScript.fixture.autocreate");
6074        }
6075        else if (name.equals("autodelete")) {
6076          throw new FHIRException("Cannot call addChild on a primitive type TestScript.fixture.autodelete");
6077        }
6078        else if (name.equals("resource")) {
6079          this.resource = new Reference();
6080          return this.resource;
6081        }
6082        else
6083          return super.addChild(name);
6084      }
6085
6086      public TestScriptFixtureComponent copy() {
6087        TestScriptFixtureComponent dst = new TestScriptFixtureComponent();
6088        copyValues(dst);
6089        return dst;
6090      }
6091
6092      public void copyValues(TestScriptFixtureComponent dst) {
6093        super.copyValues(dst);
6094        dst.autocreate = autocreate == null ? null : autocreate.copy();
6095        dst.autodelete = autodelete == null ? null : autodelete.copy();
6096        dst.resource = resource == null ? null : resource.copy();
6097      }
6098
6099      @Override
6100      public boolean equalsDeep(Base other_) {
6101        if (!super.equalsDeep(other_))
6102          return false;
6103        if (!(other_ instanceof TestScriptFixtureComponent))
6104          return false;
6105        TestScriptFixtureComponent o = (TestScriptFixtureComponent) other_;
6106        return compareDeep(autocreate, o.autocreate, true) && compareDeep(autodelete, o.autodelete, true)
6107           && compareDeep(resource, o.resource, true);
6108      }
6109
6110      @Override
6111      public boolean equalsShallow(Base other_) {
6112        if (!super.equalsShallow(other_))
6113          return false;
6114        if (!(other_ instanceof TestScriptFixtureComponent))
6115          return false;
6116        TestScriptFixtureComponent o = (TestScriptFixtureComponent) other_;
6117        return compareValues(autocreate, o.autocreate, true) && compareValues(autodelete, o.autodelete, true)
6118          ;
6119      }
6120
6121      public boolean isEmpty() {
6122        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(autocreate, autodelete, resource
6123          );
6124      }
6125
6126  public String fhirType() {
6127    return "TestScript.fixture";
6128
6129  }
6130
6131  }
6132
6133    @Block()
6134    public static class TestScriptVariableComponent extends BackboneElement implements IBaseBackboneElement {
6135        /**
6136         * Descriptive name for this variable.
6137         */
6138        @Child(name = "name", type = {StringType.class}, order=1, min=1, max=1, modifier=false, summary=false)
6139        @Description(shortDefinition="Descriptive name for this variable", formalDefinition="Descriptive name for this variable." )
6140        protected StringType name;
6141
6142        /**
6143         * A default, hard-coded, or user-defined value for this variable.
6144         */
6145        @Child(name = "defaultValue", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=false)
6146        @Description(shortDefinition="Default, hard-coded, or user-defined value for this variable", formalDefinition="A default, hard-coded, or user-defined value for this variable." )
6147        protected StringType defaultValue;
6148
6149        /**
6150         * A free text natural language description of the variable and its purpose.
6151         */
6152        @Child(name = "description", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=false)
6153        @Description(shortDefinition="Natural language description of the variable", formalDefinition="A free text natural language description of the variable and its purpose." )
6154        protected StringType description;
6155
6156        /**
6157         * The FHIRPath expression to evaluate against the fixture body. When variables are defined, only one of either expression, headerField or path must be specified.
6158         */
6159        @Child(name = "expression", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=false)
6160        @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." )
6161        protected StringType expression;
6162
6163        /**
6164         * Will be used to grab the HTTP header field value from the headers that sourceId is pointing to.
6165         */
6166        @Child(name = "headerField", type = {StringType.class}, order=5, min=0, max=1, modifier=false, summary=false)
6167        @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." )
6168        protected StringType headerField;
6169
6170        /**
6171         * Displayable text string with hint help information to the user when entering a default value.
6172         */
6173        @Child(name = "hint", type = {StringType.class}, order=6, min=0, max=1, modifier=false, summary=false)
6174        @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." )
6175        protected StringType hint;
6176
6177        /**
6178         * XPath or JSONPath to evaluate against the fixture body.  When variables are defined, only one of either expression, headerField or path must be specified.
6179         */
6180        @Child(name = "path", type = {StringType.class}, order=7, min=0, max=1, modifier=false, summary=false)
6181        @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." )
6182        protected StringType path;
6183
6184        /**
6185         * Fixture to evaluate the XPath/JSONPath expression or the headerField  against within this variable.
6186         */
6187        @Child(name = "sourceId", type = {IdType.class}, order=8, min=0, max=1, modifier=false, summary=false)
6188        @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." )
6189        protected IdType sourceId;
6190
6191        private static final long serialVersionUID = -1592325432L;
6192
6193    /**
6194     * Constructor
6195     */
6196      public TestScriptVariableComponent() {
6197        super();
6198      }
6199
6200    /**
6201     * Constructor
6202     */
6203      public TestScriptVariableComponent(String name) {
6204        super();
6205        this.setName(name);
6206      }
6207
6208        /**
6209         * @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
6210         */
6211        public StringType getNameElement() { 
6212          if (this.name == null)
6213            if (Configuration.errorOnAutoCreate())
6214              throw new Error("Attempt to auto-create TestScriptVariableComponent.name");
6215            else if (Configuration.doAutoCreate())
6216              this.name = new StringType(); // bb
6217          return this.name;
6218        }
6219
6220        public boolean hasNameElement() { 
6221          return this.name != null && !this.name.isEmpty();
6222        }
6223
6224        public boolean hasName() { 
6225          return this.name != null && !this.name.isEmpty();
6226        }
6227
6228        /**
6229         * @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
6230         */
6231        public TestScriptVariableComponent setNameElement(StringType value) { 
6232          this.name = value;
6233          return this;
6234        }
6235
6236        /**
6237         * @return Descriptive name for this variable.
6238         */
6239        public String getName() { 
6240          return this.name == null ? null : this.name.getValue();
6241        }
6242
6243        /**
6244         * @param value Descriptive name for this variable.
6245         */
6246        public TestScriptVariableComponent setName(String value) { 
6247            if (this.name == null)
6248              this.name = new StringType();
6249            this.name.setValue(value);
6250          return this;
6251        }
6252
6253        /**
6254         * @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
6255         */
6256        public StringType getDefaultValueElement() { 
6257          if (this.defaultValue == null)
6258            if (Configuration.errorOnAutoCreate())
6259              throw new Error("Attempt to auto-create TestScriptVariableComponent.defaultValue");
6260            else if (Configuration.doAutoCreate())
6261              this.defaultValue = new StringType(); // bb
6262          return this.defaultValue;
6263        }
6264
6265        public boolean hasDefaultValueElement() { 
6266          return this.defaultValue != null && !this.defaultValue.isEmpty();
6267        }
6268
6269        public boolean hasDefaultValue() { 
6270          return this.defaultValue != null && !this.defaultValue.isEmpty();
6271        }
6272
6273        /**
6274         * @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
6275         */
6276        public TestScriptVariableComponent setDefaultValueElement(StringType value) { 
6277          this.defaultValue = value;
6278          return this;
6279        }
6280
6281        /**
6282         * @return A default, hard-coded, or user-defined value for this variable.
6283         */
6284        public String getDefaultValue() { 
6285          return this.defaultValue == null ? null : this.defaultValue.getValue();
6286        }
6287
6288        /**
6289         * @param value A default, hard-coded, or user-defined value for this variable.
6290         */
6291        public TestScriptVariableComponent setDefaultValue(String value) { 
6292          if (Utilities.noString(value))
6293            this.defaultValue = null;
6294          else {
6295            if (this.defaultValue == null)
6296              this.defaultValue = new StringType();
6297            this.defaultValue.setValue(value);
6298          }
6299          return this;
6300        }
6301
6302        /**
6303         * @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
6304         */
6305        public StringType getDescriptionElement() { 
6306          if (this.description == null)
6307            if (Configuration.errorOnAutoCreate())
6308              throw new Error("Attempt to auto-create TestScriptVariableComponent.description");
6309            else if (Configuration.doAutoCreate())
6310              this.description = new StringType(); // bb
6311          return this.description;
6312        }
6313
6314        public boolean hasDescriptionElement() { 
6315          return this.description != null && !this.description.isEmpty();
6316        }
6317
6318        public boolean hasDescription() { 
6319          return this.description != null && !this.description.isEmpty();
6320        }
6321
6322        /**
6323         * @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
6324         */
6325        public TestScriptVariableComponent setDescriptionElement(StringType value) { 
6326          this.description = value;
6327          return this;
6328        }
6329
6330        /**
6331         * @return A free text natural language description of the variable and its purpose.
6332         */
6333        public String getDescription() { 
6334          return this.description == null ? null : this.description.getValue();
6335        }
6336
6337        /**
6338         * @param value A free text natural language description of the variable and its purpose.
6339         */
6340        public TestScriptVariableComponent setDescription(String value) { 
6341          if (Utilities.noString(value))
6342            this.description = null;
6343          else {
6344            if (this.description == null)
6345              this.description = new StringType();
6346            this.description.setValue(value);
6347          }
6348          return this;
6349        }
6350
6351        /**
6352         * @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
6353         */
6354        public StringType getExpressionElement() { 
6355          if (this.expression == null)
6356            if (Configuration.errorOnAutoCreate())
6357              throw new Error("Attempt to auto-create TestScriptVariableComponent.expression");
6358            else if (Configuration.doAutoCreate())
6359              this.expression = new StringType(); // bb
6360          return this.expression;
6361        }
6362
6363        public boolean hasExpressionElement() { 
6364          return this.expression != null && !this.expression.isEmpty();
6365        }
6366
6367        public boolean hasExpression() { 
6368          return this.expression != null && !this.expression.isEmpty();
6369        }
6370
6371        /**
6372         * @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
6373         */
6374        public TestScriptVariableComponent setExpressionElement(StringType value) { 
6375          this.expression = value;
6376          return this;
6377        }
6378
6379        /**
6380         * @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.
6381         */
6382        public String getExpression() { 
6383          return this.expression == null ? null : this.expression.getValue();
6384        }
6385
6386        /**
6387         * @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.
6388         */
6389        public TestScriptVariableComponent setExpression(String value) { 
6390          if (Utilities.noString(value))
6391            this.expression = null;
6392          else {
6393            if (this.expression == null)
6394              this.expression = new StringType();
6395            this.expression.setValue(value);
6396          }
6397          return this;
6398        }
6399
6400        /**
6401         * @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
6402         */
6403        public StringType getHeaderFieldElement() { 
6404          if (this.headerField == null)
6405            if (Configuration.errorOnAutoCreate())
6406              throw new Error("Attempt to auto-create TestScriptVariableComponent.headerField");
6407            else if (Configuration.doAutoCreate())
6408              this.headerField = new StringType(); // bb
6409          return this.headerField;
6410        }
6411
6412        public boolean hasHeaderFieldElement() { 
6413          return this.headerField != null && !this.headerField.isEmpty();
6414        }
6415
6416        public boolean hasHeaderField() { 
6417          return this.headerField != null && !this.headerField.isEmpty();
6418        }
6419
6420        /**
6421         * @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
6422         */
6423        public TestScriptVariableComponent setHeaderFieldElement(StringType value) { 
6424          this.headerField = value;
6425          return this;
6426        }
6427
6428        /**
6429         * @return Will be used to grab the HTTP header field value from the headers that sourceId is pointing to.
6430         */
6431        public String getHeaderField() { 
6432          return this.headerField == null ? null : this.headerField.getValue();
6433        }
6434
6435        /**
6436         * @param value Will be used to grab the HTTP header field value from the headers that sourceId is pointing to.
6437         */
6438        public TestScriptVariableComponent setHeaderField(String value) { 
6439          if (Utilities.noString(value))
6440            this.headerField = null;
6441          else {
6442            if (this.headerField == null)
6443              this.headerField = new StringType();
6444            this.headerField.setValue(value);
6445          }
6446          return this;
6447        }
6448
6449        /**
6450         * @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
6451         */
6452        public StringType getHintElement() { 
6453          if (this.hint == null)
6454            if (Configuration.errorOnAutoCreate())
6455              throw new Error("Attempt to auto-create TestScriptVariableComponent.hint");
6456            else if (Configuration.doAutoCreate())
6457              this.hint = new StringType(); // bb
6458          return this.hint;
6459        }
6460
6461        public boolean hasHintElement() { 
6462          return this.hint != null && !this.hint.isEmpty();
6463        }
6464
6465        public boolean hasHint() { 
6466          return this.hint != null && !this.hint.isEmpty();
6467        }
6468
6469        /**
6470         * @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
6471         */
6472        public TestScriptVariableComponent setHintElement(StringType value) { 
6473          this.hint = value;
6474          return this;
6475        }
6476
6477        /**
6478         * @return Displayable text string with hint help information to the user when entering a default value.
6479         */
6480        public String getHint() { 
6481          return this.hint == null ? null : this.hint.getValue();
6482        }
6483
6484        /**
6485         * @param value Displayable text string with hint help information to the user when entering a default value.
6486         */
6487        public TestScriptVariableComponent setHint(String value) { 
6488          if (Utilities.noString(value))
6489            this.hint = null;
6490          else {
6491            if (this.hint == null)
6492              this.hint = new StringType();
6493            this.hint.setValue(value);
6494          }
6495          return this;
6496        }
6497
6498        /**
6499         * @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
6500         */
6501        public StringType getPathElement() { 
6502          if (this.path == null)
6503            if (Configuration.errorOnAutoCreate())
6504              throw new Error("Attempt to auto-create TestScriptVariableComponent.path");
6505            else if (Configuration.doAutoCreate())
6506              this.path = new StringType(); // bb
6507          return this.path;
6508        }
6509
6510        public boolean hasPathElement() { 
6511          return this.path != null && !this.path.isEmpty();
6512        }
6513
6514        public boolean hasPath() { 
6515          return this.path != null && !this.path.isEmpty();
6516        }
6517
6518        /**
6519         * @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
6520         */
6521        public TestScriptVariableComponent setPathElement(StringType value) { 
6522          this.path = value;
6523          return this;
6524        }
6525
6526        /**
6527         * @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.
6528         */
6529        public String getPath() { 
6530          return this.path == null ? null : this.path.getValue();
6531        }
6532
6533        /**
6534         * @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.
6535         */
6536        public TestScriptVariableComponent setPath(String value) { 
6537          if (Utilities.noString(value))
6538            this.path = null;
6539          else {
6540            if (this.path == null)
6541              this.path = new StringType();
6542            this.path.setValue(value);
6543          }
6544          return this;
6545        }
6546
6547        /**
6548         * @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
6549         */
6550        public IdType getSourceIdElement() { 
6551          if (this.sourceId == null)
6552            if (Configuration.errorOnAutoCreate())
6553              throw new Error("Attempt to auto-create TestScriptVariableComponent.sourceId");
6554            else if (Configuration.doAutoCreate())
6555              this.sourceId = new IdType(); // bb
6556          return this.sourceId;
6557        }
6558
6559        public boolean hasSourceIdElement() { 
6560          return this.sourceId != null && !this.sourceId.isEmpty();
6561        }
6562
6563        public boolean hasSourceId() { 
6564          return this.sourceId != null && !this.sourceId.isEmpty();
6565        }
6566
6567        /**
6568         * @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
6569         */
6570        public TestScriptVariableComponent setSourceIdElement(IdType value) { 
6571          this.sourceId = value;
6572          return this;
6573        }
6574
6575        /**
6576         * @return Fixture to evaluate the XPath/JSONPath expression or the headerField  against within this variable.
6577         */
6578        public String getSourceId() { 
6579          return this.sourceId == null ? null : this.sourceId.getValue();
6580        }
6581
6582        /**
6583         * @param value Fixture to evaluate the XPath/JSONPath expression or the headerField  against within this variable.
6584         */
6585        public TestScriptVariableComponent setSourceId(String value) { 
6586          if (Utilities.noString(value))
6587            this.sourceId = null;
6588          else {
6589            if (this.sourceId == null)
6590              this.sourceId = new IdType();
6591            this.sourceId.setValue(value);
6592          }
6593          return this;
6594        }
6595
6596        protected void listChildren(List<Property> children) {
6597          super.listChildren(children);
6598          children.add(new Property("name", "string", "Descriptive name for this variable.", 0, 1, name));
6599          children.add(new Property("defaultValue", "string", "A default, hard-coded, or user-defined value for this variable.", 0, 1, defaultValue));
6600          children.add(new Property("description", "string", "A free text natural language description of the variable and its purpose.", 0, 1, description));
6601          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));
6602          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));
6603          children.add(new Property("hint", "string", "Displayable text string with hint help information to the user when entering a default value.", 0, 1, hint));
6604          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));
6605          children.add(new Property("sourceId", "id", "Fixture to evaluate the XPath/JSONPath expression or the headerField  against within this variable.", 0, 1, sourceId));
6606        }
6607
6608        @Override
6609        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
6610          switch (_hash) {
6611          case 3373707: /*name*/  return new Property("name", "string", "Descriptive name for this variable.", 0, 1, name);
6612          case -659125328: /*defaultValue*/  return new Property("defaultValue", "string", "A default, hard-coded, or user-defined value for this variable.", 0, 1, defaultValue);
6613          case -1724546052: /*description*/  return new Property("description", "string", "A free text natural language description of the variable and its purpose.", 0, 1, description);
6614          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);
6615          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);
6616          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);
6617          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);
6618          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);
6619          default: return super.getNamedProperty(_hash, _name, _checkValid);
6620          }
6621
6622        }
6623
6624      @Override
6625      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
6626        switch (hash) {
6627        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
6628        case -659125328: /*defaultValue*/ return this.defaultValue == null ? new Base[0] : new Base[] {this.defaultValue}; // StringType
6629        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // StringType
6630        case -1795452264: /*expression*/ return this.expression == null ? new Base[0] : new Base[] {this.expression}; // StringType
6631        case 1160732269: /*headerField*/ return this.headerField == null ? new Base[0] : new Base[] {this.headerField}; // StringType
6632        case 3202695: /*hint*/ return this.hint == null ? new Base[0] : new Base[] {this.hint}; // StringType
6633        case 3433509: /*path*/ return this.path == null ? new Base[0] : new Base[] {this.path}; // StringType
6634        case 1746327190: /*sourceId*/ return this.sourceId == null ? new Base[0] : new Base[] {this.sourceId}; // IdType
6635        default: return super.getProperty(hash, name, checkValid);
6636        }
6637
6638      }
6639
6640      @Override
6641      public Base setProperty(int hash, String name, Base value) throws FHIRException {
6642        switch (hash) {
6643        case 3373707: // name
6644          this.name = TypeConvertor.castToString(value); // StringType
6645          return value;
6646        case -659125328: // defaultValue
6647          this.defaultValue = TypeConvertor.castToString(value); // StringType
6648          return value;
6649        case -1724546052: // description
6650          this.description = TypeConvertor.castToString(value); // StringType
6651          return value;
6652        case -1795452264: // expression
6653          this.expression = TypeConvertor.castToString(value); // StringType
6654          return value;
6655        case 1160732269: // headerField
6656          this.headerField = TypeConvertor.castToString(value); // StringType
6657          return value;
6658        case 3202695: // hint
6659          this.hint = TypeConvertor.castToString(value); // StringType
6660          return value;
6661        case 3433509: // path
6662          this.path = TypeConvertor.castToString(value); // StringType
6663          return value;
6664        case 1746327190: // sourceId
6665          this.sourceId = TypeConvertor.castToId(value); // IdType
6666          return value;
6667        default: return super.setProperty(hash, name, value);
6668        }
6669
6670      }
6671
6672      @Override
6673      public Base setProperty(String name, Base value) throws FHIRException {
6674        if (name.equals("name")) {
6675          this.name = TypeConvertor.castToString(value); // StringType
6676        } else if (name.equals("defaultValue")) {
6677          this.defaultValue = TypeConvertor.castToString(value); // StringType
6678        } else if (name.equals("description")) {
6679          this.description = TypeConvertor.castToString(value); // StringType
6680        } else if (name.equals("expression")) {
6681          this.expression = TypeConvertor.castToString(value); // StringType
6682        } else if (name.equals("headerField")) {
6683          this.headerField = TypeConvertor.castToString(value); // StringType
6684        } else if (name.equals("hint")) {
6685          this.hint = TypeConvertor.castToString(value); // StringType
6686        } else if (name.equals("path")) {
6687          this.path = TypeConvertor.castToString(value); // StringType
6688        } else if (name.equals("sourceId")) {
6689          this.sourceId = TypeConvertor.castToId(value); // IdType
6690        } else
6691          return super.setProperty(name, value);
6692        return value;
6693      }
6694
6695      @Override
6696      public Base makeProperty(int hash, String name) throws FHIRException {
6697        switch (hash) {
6698        case 3373707:  return getNameElement();
6699        case -659125328:  return getDefaultValueElement();
6700        case -1724546052:  return getDescriptionElement();
6701        case -1795452264:  return getExpressionElement();
6702        case 1160732269:  return getHeaderFieldElement();
6703        case 3202695:  return getHintElement();
6704        case 3433509:  return getPathElement();
6705        case 1746327190:  return getSourceIdElement();
6706        default: return super.makeProperty(hash, name);
6707        }
6708
6709      }
6710
6711      @Override
6712      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
6713        switch (hash) {
6714        case 3373707: /*name*/ return new String[] {"string"};
6715        case -659125328: /*defaultValue*/ return new String[] {"string"};
6716        case -1724546052: /*description*/ return new String[] {"string"};
6717        case -1795452264: /*expression*/ return new String[] {"string"};
6718        case 1160732269: /*headerField*/ return new String[] {"string"};
6719        case 3202695: /*hint*/ return new String[] {"string"};
6720        case 3433509: /*path*/ return new String[] {"string"};
6721        case 1746327190: /*sourceId*/ return new String[] {"id"};
6722        default: return super.getTypesForProperty(hash, name);
6723        }
6724
6725      }
6726
6727      @Override
6728      public Base addChild(String name) throws FHIRException {
6729        if (name.equals("name")) {
6730          throw new FHIRException("Cannot call addChild on a primitive type TestScript.variable.name");
6731        }
6732        else if (name.equals("defaultValue")) {
6733          throw new FHIRException("Cannot call addChild on a primitive type TestScript.variable.defaultValue");
6734        }
6735        else if (name.equals("description")) {
6736          throw new FHIRException("Cannot call addChild on a primitive type TestScript.variable.description");
6737        }
6738        else if (name.equals("expression")) {
6739          throw new FHIRException("Cannot call addChild on a primitive type TestScript.variable.expression");
6740        }
6741        else if (name.equals("headerField")) {
6742          throw new FHIRException("Cannot call addChild on a primitive type TestScript.variable.headerField");
6743        }
6744        else if (name.equals("hint")) {
6745          throw new FHIRException("Cannot call addChild on a primitive type TestScript.variable.hint");
6746        }
6747        else if (name.equals("path")) {
6748          throw new FHIRException("Cannot call addChild on a primitive type TestScript.variable.path");
6749        }
6750        else if (name.equals("sourceId")) {
6751          throw new FHIRException("Cannot call addChild on a primitive type TestScript.variable.sourceId");
6752        }
6753        else
6754          return super.addChild(name);
6755      }
6756
6757      public TestScriptVariableComponent copy() {
6758        TestScriptVariableComponent dst = new TestScriptVariableComponent();
6759        copyValues(dst);
6760        return dst;
6761      }
6762
6763      public void copyValues(TestScriptVariableComponent dst) {
6764        super.copyValues(dst);
6765        dst.name = name == null ? null : name.copy();
6766        dst.defaultValue = defaultValue == null ? null : defaultValue.copy();
6767        dst.description = description == null ? null : description.copy();
6768        dst.expression = expression == null ? null : expression.copy();
6769        dst.headerField = headerField == null ? null : headerField.copy();
6770        dst.hint = hint == null ? null : hint.copy();
6771        dst.path = path == null ? null : path.copy();
6772        dst.sourceId = sourceId == null ? null : sourceId.copy();
6773      }
6774
6775      @Override
6776      public boolean equalsDeep(Base other_) {
6777        if (!super.equalsDeep(other_))
6778          return false;
6779        if (!(other_ instanceof TestScriptVariableComponent))
6780          return false;
6781        TestScriptVariableComponent o = (TestScriptVariableComponent) other_;
6782        return compareDeep(name, o.name, true) && compareDeep(defaultValue, o.defaultValue, true) && compareDeep(description, o.description, true)
6783           && compareDeep(expression, o.expression, true) && compareDeep(headerField, o.headerField, true)
6784           && compareDeep(hint, o.hint, true) && compareDeep(path, o.path, true) && compareDeep(sourceId, o.sourceId, true)
6785          ;
6786      }
6787
6788      @Override
6789      public boolean equalsShallow(Base other_) {
6790        if (!super.equalsShallow(other_))
6791          return false;
6792        if (!(other_ instanceof TestScriptVariableComponent))
6793          return false;
6794        TestScriptVariableComponent o = (TestScriptVariableComponent) other_;
6795        return compareValues(name, o.name, true) && compareValues(defaultValue, o.defaultValue, true) && compareValues(description, o.description, true)
6796           && compareValues(expression, o.expression, true) && compareValues(headerField, o.headerField, true)
6797           && compareValues(hint, o.hint, true) && compareValues(path, o.path, true) && compareValues(sourceId, o.sourceId, true)
6798          ;
6799      }
6800
6801      public boolean isEmpty() {
6802        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(name, defaultValue, description
6803          , expression, headerField, hint, path, sourceId);
6804      }
6805
6806  public String fhirType() {
6807    return "TestScript.variable";
6808
6809  }
6810
6811  }
6812
6813    @Block()
6814    public static class TestScriptSetupComponent extends BackboneElement implements IBaseBackboneElement {
6815        /**
6816         * Action would contain either an operation or an assertion.
6817         */
6818        @Child(name = "action", type = {}, order=1, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
6819        @Description(shortDefinition="A setup operation or assert to perform", formalDefinition="Action would contain either an operation or an assertion." )
6820        protected List<SetupActionComponent> action;
6821
6822        private static final long serialVersionUID = -123374486L;
6823
6824    /**
6825     * Constructor
6826     */
6827      public TestScriptSetupComponent() {
6828        super();
6829      }
6830
6831    /**
6832     * Constructor
6833     */
6834      public TestScriptSetupComponent(SetupActionComponent action) {
6835        super();
6836        this.addAction(action);
6837      }
6838
6839        /**
6840         * @return {@link #action} (Action would contain either an operation or an assertion.)
6841         */
6842        public List<SetupActionComponent> getAction() { 
6843          if (this.action == null)
6844            this.action = new ArrayList<SetupActionComponent>();
6845          return this.action;
6846        }
6847
6848        /**
6849         * @return Returns a reference to <code>this</code> for easy method chaining
6850         */
6851        public TestScriptSetupComponent setAction(List<SetupActionComponent> theAction) { 
6852          this.action = theAction;
6853          return this;
6854        }
6855
6856        public boolean hasAction() { 
6857          if (this.action == null)
6858            return false;
6859          for (SetupActionComponent item : this.action)
6860            if (!item.isEmpty())
6861              return true;
6862          return false;
6863        }
6864
6865        public SetupActionComponent addAction() { //3
6866          SetupActionComponent t = new SetupActionComponent();
6867          if (this.action == null)
6868            this.action = new ArrayList<SetupActionComponent>();
6869          this.action.add(t);
6870          return t;
6871        }
6872
6873        public TestScriptSetupComponent addAction(SetupActionComponent t) { //3
6874          if (t == null)
6875            return this;
6876          if (this.action == null)
6877            this.action = new ArrayList<SetupActionComponent>();
6878          this.action.add(t);
6879          return this;
6880        }
6881
6882        /**
6883         * @return The first repetition of repeating field {@link #action}, creating it if it does not already exist {3}
6884         */
6885        public SetupActionComponent getActionFirstRep() { 
6886          if (getAction().isEmpty()) {
6887            addAction();
6888          }
6889          return getAction().get(0);
6890        }
6891
6892        protected void listChildren(List<Property> children) {
6893          super.listChildren(children);
6894          children.add(new Property("action", "", "Action would contain either an operation or an assertion.", 0, java.lang.Integer.MAX_VALUE, action));
6895        }
6896
6897        @Override
6898        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
6899          switch (_hash) {
6900          case -1422950858: /*action*/  return new Property("action", "", "Action would contain either an operation or an assertion.", 0, java.lang.Integer.MAX_VALUE, action);
6901          default: return super.getNamedProperty(_hash, _name, _checkValid);
6902          }
6903
6904        }
6905
6906      @Override
6907      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
6908        switch (hash) {
6909        case -1422950858: /*action*/ return this.action == null ? new Base[0] : this.action.toArray(new Base[this.action.size()]); // SetupActionComponent
6910        default: return super.getProperty(hash, name, checkValid);
6911        }
6912
6913      }
6914
6915      @Override
6916      public Base setProperty(int hash, String name, Base value) throws FHIRException {
6917        switch (hash) {
6918        case -1422950858: // action
6919          this.getAction().add((SetupActionComponent) value); // SetupActionComponent
6920          return value;
6921        default: return super.setProperty(hash, name, value);
6922        }
6923
6924      }
6925
6926      @Override
6927      public Base setProperty(String name, Base value) throws FHIRException {
6928        if (name.equals("action")) {
6929          this.getAction().add((SetupActionComponent) value);
6930        } else
6931          return super.setProperty(name, value);
6932        return value;
6933      }
6934
6935      @Override
6936      public Base makeProperty(int hash, String name) throws FHIRException {
6937        switch (hash) {
6938        case -1422950858:  return addAction(); 
6939        default: return super.makeProperty(hash, name);
6940        }
6941
6942      }
6943
6944      @Override
6945      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
6946        switch (hash) {
6947        case -1422950858: /*action*/ return new String[] {};
6948        default: return super.getTypesForProperty(hash, name);
6949        }
6950
6951      }
6952
6953      @Override
6954      public Base addChild(String name) throws FHIRException {
6955        if (name.equals("action")) {
6956          return addAction();
6957        }
6958        else
6959          return super.addChild(name);
6960      }
6961
6962      public TestScriptSetupComponent copy() {
6963        TestScriptSetupComponent dst = new TestScriptSetupComponent();
6964        copyValues(dst);
6965        return dst;
6966      }
6967
6968      public void copyValues(TestScriptSetupComponent dst) {
6969        super.copyValues(dst);
6970        if (action != null) {
6971          dst.action = new ArrayList<SetupActionComponent>();
6972          for (SetupActionComponent i : action)
6973            dst.action.add(i.copy());
6974        };
6975      }
6976
6977      @Override
6978      public boolean equalsDeep(Base other_) {
6979        if (!super.equalsDeep(other_))
6980          return false;
6981        if (!(other_ instanceof TestScriptSetupComponent))
6982          return false;
6983        TestScriptSetupComponent o = (TestScriptSetupComponent) other_;
6984        return compareDeep(action, o.action, true);
6985      }
6986
6987      @Override
6988      public boolean equalsShallow(Base other_) {
6989        if (!super.equalsShallow(other_))
6990          return false;
6991        if (!(other_ instanceof TestScriptSetupComponent))
6992          return false;
6993        TestScriptSetupComponent o = (TestScriptSetupComponent) other_;
6994        return true;
6995      }
6996
6997      public boolean isEmpty() {
6998        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(action);
6999      }
7000
7001  public String fhirType() {
7002    return "TestScript.setup";
7003
7004  }
7005
7006  }
7007
7008    @Block()
7009    public static class SetupActionComponent extends BackboneElement implements IBaseBackboneElement {
7010        /**
7011         * The operation to perform.
7012         */
7013        @Child(name = "operation", type = {}, order=1, min=0, max=1, modifier=false, summary=false)
7014        @Description(shortDefinition="The setup operation to perform", formalDefinition="The operation to perform." )
7015        protected SetupActionOperationComponent operation;
7016
7017        /**
7018         * Evaluates the results of previous operations to determine if the server under test behaves appropriately.
7019         */
7020        @Child(name = "assert", type = {}, order=2, min=0, max=1, modifier=false, summary=false)
7021        @Description(shortDefinition="The assertion to perform", formalDefinition="Evaluates the results of previous operations to determine if the server under test behaves appropriately." )
7022        protected SetupActionAssertComponent assert_;
7023
7024        private static final long serialVersionUID = -252088305L;
7025
7026    /**
7027     * Constructor
7028     */
7029      public SetupActionComponent() {
7030        super();
7031      }
7032
7033        /**
7034         * @return {@link #operation} (The operation to perform.)
7035         */
7036        public SetupActionOperationComponent getOperation() { 
7037          if (this.operation == null)
7038            if (Configuration.errorOnAutoCreate())
7039              throw new Error("Attempt to auto-create SetupActionComponent.operation");
7040            else if (Configuration.doAutoCreate())
7041              this.operation = new SetupActionOperationComponent(); // cc
7042          return this.operation;
7043        }
7044
7045        public boolean hasOperation() { 
7046          return this.operation != null && !this.operation.isEmpty();
7047        }
7048
7049        /**
7050         * @param value {@link #operation} (The operation to perform.)
7051         */
7052        public SetupActionComponent setOperation(SetupActionOperationComponent value) { 
7053          this.operation = value;
7054          return this;
7055        }
7056
7057        /**
7058         * @return {@link #assert_} (Evaluates the results of previous operations to determine if the server under test behaves appropriately.)
7059         */
7060        public SetupActionAssertComponent getAssert() { 
7061          if (this.assert_ == null)
7062            if (Configuration.errorOnAutoCreate())
7063              throw new Error("Attempt to auto-create SetupActionComponent.assert_");
7064            else if (Configuration.doAutoCreate())
7065              this.assert_ = new SetupActionAssertComponent(); // cc
7066          return this.assert_;
7067        }
7068
7069        public boolean hasAssert() { 
7070          return this.assert_ != null && !this.assert_.isEmpty();
7071        }
7072
7073        /**
7074         * @param value {@link #assert_} (Evaluates the results of previous operations to determine if the server under test behaves appropriately.)
7075         */
7076        public SetupActionComponent setAssert(SetupActionAssertComponent value) { 
7077          this.assert_ = value;
7078          return this;
7079        }
7080
7081        protected void listChildren(List<Property> children) {
7082          super.listChildren(children);
7083          children.add(new Property("operation", "", "The operation to perform.", 0, 1, operation));
7084          children.add(new Property("assert", "", "Evaluates the results of previous operations to determine if the server under test behaves appropriately.", 0, 1, assert_));
7085        }
7086
7087        @Override
7088        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
7089          switch (_hash) {
7090          case 1662702951: /*operation*/  return new Property("operation", "", "The operation to perform.", 0, 1, operation);
7091          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_);
7092          default: return super.getNamedProperty(_hash, _name, _checkValid);
7093          }
7094
7095        }
7096
7097      @Override
7098      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
7099        switch (hash) {
7100        case 1662702951: /*operation*/ return this.operation == null ? new Base[0] : new Base[] {this.operation}; // SetupActionOperationComponent
7101        case -1408208058: /*assert*/ return this.assert_ == null ? new Base[0] : new Base[] {this.assert_}; // SetupActionAssertComponent
7102        default: return super.getProperty(hash, name, checkValid);
7103        }
7104
7105      }
7106
7107      @Override
7108      public Base setProperty(int hash, String name, Base value) throws FHIRException {
7109        switch (hash) {
7110        case 1662702951: // operation
7111          this.operation = (SetupActionOperationComponent) value; // SetupActionOperationComponent
7112          return value;
7113        case -1408208058: // assert
7114          this.assert_ = (SetupActionAssertComponent) value; // SetupActionAssertComponent
7115          return value;
7116        default: return super.setProperty(hash, name, value);
7117        }
7118
7119      }
7120
7121      @Override
7122      public Base setProperty(String name, Base value) throws FHIRException {
7123        if (name.equals("operation")) {
7124          this.operation = (SetupActionOperationComponent) value; // SetupActionOperationComponent
7125        } else if (name.equals("assert")) {
7126          this.assert_ = (SetupActionAssertComponent) value; // SetupActionAssertComponent
7127        } else
7128          return super.setProperty(name, value);
7129        return value;
7130      }
7131
7132      @Override
7133      public Base makeProperty(int hash, String name) throws FHIRException {
7134        switch (hash) {
7135        case 1662702951:  return getOperation();
7136        case -1408208058:  return getAssert();
7137        default: return super.makeProperty(hash, name);
7138        }
7139
7140      }
7141
7142      @Override
7143      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
7144        switch (hash) {
7145        case 1662702951: /*operation*/ return new String[] {};
7146        case -1408208058: /*assert*/ return new String[] {};
7147        default: return super.getTypesForProperty(hash, name);
7148        }
7149
7150      }
7151
7152      @Override
7153      public Base addChild(String name) throws FHIRException {
7154        if (name.equals("operation")) {
7155          this.operation = new SetupActionOperationComponent();
7156          return this.operation;
7157        }
7158        else if (name.equals("assert")) {
7159          this.assert_ = new SetupActionAssertComponent();
7160          return this.assert_;
7161        }
7162        else
7163          return super.addChild(name);
7164      }
7165
7166      public SetupActionComponent copy() {
7167        SetupActionComponent dst = new SetupActionComponent();
7168        copyValues(dst);
7169        return dst;
7170      }
7171
7172      public void copyValues(SetupActionComponent dst) {
7173        super.copyValues(dst);
7174        dst.operation = operation == null ? null : operation.copy();
7175        dst.assert_ = assert_ == null ? null : assert_.copy();
7176      }
7177
7178      @Override
7179      public boolean equalsDeep(Base other_) {
7180        if (!super.equalsDeep(other_))
7181          return false;
7182        if (!(other_ instanceof SetupActionComponent))
7183          return false;
7184        SetupActionComponent o = (SetupActionComponent) other_;
7185        return compareDeep(operation, o.operation, true) && compareDeep(assert_, o.assert_, true);
7186      }
7187
7188      @Override
7189      public boolean equalsShallow(Base other_) {
7190        if (!super.equalsShallow(other_))
7191          return false;
7192        if (!(other_ instanceof SetupActionComponent))
7193          return false;
7194        SetupActionComponent o = (SetupActionComponent) other_;
7195        return true;
7196      }
7197
7198      public boolean isEmpty() {
7199        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(operation, assert_);
7200      }
7201
7202  public String fhirType() {
7203    return "TestScript.setup.action";
7204
7205  }
7206
7207  }
7208
7209    @Block()
7210    public static class SetupActionOperationComponent extends BackboneElement implements IBaseBackboneElement {
7211        /**
7212         * Server interaction or operation type.
7213         */
7214        @Child(name = "type", type = {Coding.class}, order=1, min=0, max=1, modifier=false, summary=false)
7215        @Description(shortDefinition="The operation code type that will be executed", formalDefinition="Server interaction or operation type." )
7216        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/testscript-operation-codes")
7217        protected Coding type;
7218
7219        /**
7220         * The type of the resource.  See http://build.fhir.org/resourcelist.html.
7221         */
7222        @Child(name = "resource", type = {CodeType.class}, order=2, min=0, max=1, modifier=false, summary=false)
7223        @Description(shortDefinition="Resource type", formalDefinition="The type of the resource.  See http://build.fhir.org/resourcelist.html." )
7224        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/defined-types")
7225        protected Enumeration<FHIRDefinedType> resource;
7226
7227        /**
7228         * The label would be used for tracking/logging purposes by test engines.
7229         */
7230        @Child(name = "label", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=false)
7231        @Description(shortDefinition="Tracking/logging operation label", formalDefinition="The label would be used for tracking/logging purposes by test engines." )
7232        protected StringType label;
7233
7234        /**
7235         * The description would be used by test engines for tracking and reporting purposes.
7236         */
7237        @Child(name = "description", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=false)
7238        @Description(shortDefinition="Tracking/reporting operation description", formalDefinition="The description would be used by test engines for tracking and reporting purposes." )
7239        protected StringType description;
7240
7241        /**
7242         * The mime-type to use for RESTful operation in the 'Accept' header.
7243         */
7244        @Child(name = "accept", type = {CodeType.class}, order=5, min=0, max=1, modifier=false, summary=false)
7245        @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." )
7246        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/mimetypes")
7247        protected CodeType accept;
7248
7249        /**
7250         * The mime-type to use for RESTful operation in the 'Content-Type' header.
7251         */
7252        @Child(name = "contentType", type = {CodeType.class}, order=6, min=0, max=1, modifier=false, summary=false)
7253        @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." )
7254        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/mimetypes")
7255        protected CodeType contentType;
7256
7257        /**
7258         * The server where the request message is destined for.  Must be one of the server numbers listed in TestScript.destination section.
7259         */
7260        @Child(name = "destination", type = {IntegerType.class}, order=7, min=0, max=1, modifier=false, summary=false)
7261        @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." )
7262        protected IntegerType destination;
7263
7264        /**
7265         * 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.
7266         */
7267        @Child(name = "encodeRequestUrl", type = {BooleanType.class}, order=8, min=1, max=1, modifier=false, summary=false)
7268        @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." )
7269        protected BooleanType encodeRequestUrl;
7270
7271        /**
7272         * The HTTP method the test engine MUST use for this operation regardless of any other operation details.
7273         */
7274        @Child(name = "method", type = {CodeType.class}, order=9, min=0, max=1, modifier=false, summary=false)
7275        @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." )
7276        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/http-operations")
7277        protected Enumeration<TestScriptRequestMethodCode> method;
7278
7279        /**
7280         * The server where the request message originates from.  Must be one of the server numbers listed in TestScript.origin section.
7281         */
7282        @Child(name = "origin", type = {IntegerType.class}, order=10, min=0, max=1, modifier=false, summary=false)
7283        @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." )
7284        protected IntegerType origin;
7285
7286        /**
7287         * Path plus parameters after [type].  Used to set parts of the request URL explicitly.
7288         */
7289        @Child(name = "params", type = {StringType.class}, order=11, min=0, max=1, modifier=false, summary=false)
7290        @Description(shortDefinition="Explicitly defined path parameters", formalDefinition="Path plus parameters after [type].  Used to set parts of the request URL explicitly." )
7291        protected StringType params;
7292
7293        /**
7294         * Header elements would be used to set HTTP headers.
7295         */
7296        @Child(name = "requestHeader", type = {}, order=12, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
7297        @Description(shortDefinition="Each operation can have one or more header elements", formalDefinition="Header elements would be used to set HTTP headers." )
7298        protected List<SetupActionOperationRequestHeaderComponent> requestHeader;
7299
7300        /**
7301         * The fixture id (maybe new) to map to the request.
7302         */
7303        @Child(name = "requestId", type = {IdType.class}, order=13, min=0, max=1, modifier=false, summary=false)
7304        @Description(shortDefinition="Fixture Id of mapped request", formalDefinition="The fixture id (maybe new) to map to the request." )
7305        protected IdType requestId;
7306
7307        /**
7308         * The fixture id (maybe new) to map to the response.
7309         */
7310        @Child(name = "responseId", type = {IdType.class}, order=14, min=0, max=1, modifier=false, summary=false)
7311        @Description(shortDefinition="Fixture Id of mapped response", formalDefinition="The fixture id (maybe new) to map to the response." )
7312        protected IdType responseId;
7313
7314        /**
7315         * The id of the fixture used as the body of a PUT or POST request.
7316         */
7317        @Child(name = "sourceId", type = {IdType.class}, order=15, min=0, max=1, modifier=false, summary=false)
7318        @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." )
7319        protected IdType sourceId;
7320
7321        /**
7322         * Id of fixture used for extracting the [id],  [type], and [vid] for GET requests.
7323         */
7324        @Child(name = "targetId", type = {IdType.class}, order=16, min=0, max=1, modifier=false, summary=false)
7325        @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." )
7326        protected IdType targetId;
7327
7328        /**
7329         * Complete request URL.
7330         */
7331        @Child(name = "url", type = {StringType.class}, order=17, min=0, max=1, modifier=false, summary=false)
7332        @Description(shortDefinition="Request URL", formalDefinition="Complete request URL." )
7333        protected StringType url;
7334
7335        private static final long serialVersionUID = -1301448722L;
7336
7337    /**
7338     * Constructor
7339     */
7340      public SetupActionOperationComponent() {
7341        super();
7342      }
7343
7344    /**
7345     * Constructor
7346     */
7347      public SetupActionOperationComponent(boolean encodeRequestUrl) {
7348        super();
7349        this.setEncodeRequestUrl(encodeRequestUrl);
7350      }
7351
7352        /**
7353         * @return {@link #type} (Server interaction or operation type.)
7354         */
7355        public Coding getType() { 
7356          if (this.type == null)
7357            if (Configuration.errorOnAutoCreate())
7358              throw new Error("Attempt to auto-create SetupActionOperationComponent.type");
7359            else if (Configuration.doAutoCreate())
7360              this.type = new Coding(); // cc
7361          return this.type;
7362        }
7363
7364        public boolean hasType() { 
7365          return this.type != null && !this.type.isEmpty();
7366        }
7367
7368        /**
7369         * @param value {@link #type} (Server interaction or operation type.)
7370         */
7371        public SetupActionOperationComponent setType(Coding value) { 
7372          this.type = value;
7373          return this;
7374        }
7375
7376        /**
7377         * @return {@link #resource} (The type of the resource.  See http://build.fhir.org/resourcelist.html.). This is the underlying object with id, value and extensions. The accessor "getResource" gives direct access to the value
7378         */
7379        public Enumeration<FHIRDefinedType> getResourceElement() { 
7380          if (this.resource == null)
7381            if (Configuration.errorOnAutoCreate())
7382              throw new Error("Attempt to auto-create SetupActionOperationComponent.resource");
7383            else if (Configuration.doAutoCreate())
7384              this.resource = new Enumeration<FHIRDefinedType>(new FHIRDefinedTypeEnumFactory()); // bb
7385          return this.resource;
7386        }
7387
7388        public boolean hasResourceElement() { 
7389          return this.resource != null && !this.resource.isEmpty();
7390        }
7391
7392        public boolean hasResource() { 
7393          return this.resource != null && !this.resource.isEmpty();
7394        }
7395
7396        /**
7397         * @param value {@link #resource} (The type of the resource.  See http://build.fhir.org/resourcelist.html.). This is the underlying object with id, value and extensions. The accessor "getResource" gives direct access to the value
7398         */
7399        public SetupActionOperationComponent setResourceElement(Enumeration<FHIRDefinedType> value) { 
7400          this.resource = value;
7401          return this;
7402        }
7403
7404        /**
7405         * @return The type of the resource.  See http://build.fhir.org/resourcelist.html.
7406         */
7407        public FHIRDefinedType getResource() { 
7408          return this.resource == null ? null : this.resource.getValue();
7409        }
7410
7411        /**
7412         * @param value The type of the resource.  See http://build.fhir.org/resourcelist.html.
7413         */
7414        public SetupActionOperationComponent setResource(FHIRDefinedType value) { 
7415          if (value == null)
7416            this.resource = null;
7417          else {
7418            if (this.resource == null)
7419              this.resource = new Enumeration<FHIRDefinedType>(new FHIRDefinedTypeEnumFactory());
7420            this.resource.setValue(value);
7421          }
7422          return this;
7423        }
7424
7425        /**
7426         * @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
7427         */
7428        public StringType getLabelElement() { 
7429          if (this.label == null)
7430            if (Configuration.errorOnAutoCreate())
7431              throw new Error("Attempt to auto-create SetupActionOperationComponent.label");
7432            else if (Configuration.doAutoCreate())
7433              this.label = new StringType(); // bb
7434          return this.label;
7435        }
7436
7437        public boolean hasLabelElement() { 
7438          return this.label != null && !this.label.isEmpty();
7439        }
7440
7441        public boolean hasLabel() { 
7442          return this.label != null && !this.label.isEmpty();
7443        }
7444
7445        /**
7446         * @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
7447         */
7448        public SetupActionOperationComponent setLabelElement(StringType value) { 
7449          this.label = value;
7450          return this;
7451        }
7452
7453        /**
7454         * @return The label would be used for tracking/logging purposes by test engines.
7455         */
7456        public String getLabel() { 
7457          return this.label == null ? null : this.label.getValue();
7458        }
7459
7460        /**
7461         * @param value The label would be used for tracking/logging purposes by test engines.
7462         */
7463        public SetupActionOperationComponent setLabel(String value) { 
7464          if (Utilities.noString(value))
7465            this.label = null;
7466          else {
7467            if (this.label == null)
7468              this.label = new StringType();
7469            this.label.setValue(value);
7470          }
7471          return this;
7472        }
7473
7474        /**
7475         * @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
7476         */
7477        public StringType getDescriptionElement() { 
7478          if (this.description == null)
7479            if (Configuration.errorOnAutoCreate())
7480              throw new Error("Attempt to auto-create SetupActionOperationComponent.description");
7481            else if (Configuration.doAutoCreate())
7482              this.description = new StringType(); // bb
7483          return this.description;
7484        }
7485
7486        public boolean hasDescriptionElement() { 
7487          return this.description != null && !this.description.isEmpty();
7488        }
7489
7490        public boolean hasDescription() { 
7491          return this.description != null && !this.description.isEmpty();
7492        }
7493
7494        /**
7495         * @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
7496         */
7497        public SetupActionOperationComponent setDescriptionElement(StringType value) { 
7498          this.description = value;
7499          return this;
7500        }
7501
7502        /**
7503         * @return The description would be used by test engines for tracking and reporting purposes.
7504         */
7505        public String getDescription() { 
7506          return this.description == null ? null : this.description.getValue();
7507        }
7508
7509        /**
7510         * @param value The description would be used by test engines for tracking and reporting purposes.
7511         */
7512        public SetupActionOperationComponent setDescription(String value) { 
7513          if (Utilities.noString(value))
7514            this.description = null;
7515          else {
7516            if (this.description == null)
7517              this.description = new StringType();
7518            this.description.setValue(value);
7519          }
7520          return this;
7521        }
7522
7523        /**
7524         * @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
7525         */
7526        public CodeType getAcceptElement() { 
7527          if (this.accept == null)
7528            if (Configuration.errorOnAutoCreate())
7529              throw new Error("Attempt to auto-create SetupActionOperationComponent.accept");
7530            else if (Configuration.doAutoCreate())
7531              this.accept = new CodeType(); // bb
7532          return this.accept;
7533        }
7534
7535        public boolean hasAcceptElement() { 
7536          return this.accept != null && !this.accept.isEmpty();
7537        }
7538
7539        public boolean hasAccept() { 
7540          return this.accept != null && !this.accept.isEmpty();
7541        }
7542
7543        /**
7544         * @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
7545         */
7546        public SetupActionOperationComponent setAcceptElement(CodeType value) { 
7547          this.accept = value;
7548          return this;
7549        }
7550
7551        /**
7552         * @return The mime-type to use for RESTful operation in the 'Accept' header.
7553         */
7554        public String getAccept() { 
7555          return this.accept == null ? null : this.accept.getValue();
7556        }
7557
7558        /**
7559         * @param value The mime-type to use for RESTful operation in the 'Accept' header.
7560         */
7561        public SetupActionOperationComponent setAccept(String value) { 
7562          if (Utilities.noString(value))
7563            this.accept = null;
7564          else {
7565            if (this.accept == null)
7566              this.accept = new CodeType();
7567            this.accept.setValue(value);
7568          }
7569          return this;
7570        }
7571
7572        /**
7573         * @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
7574         */
7575        public CodeType getContentTypeElement() { 
7576          if (this.contentType == null)
7577            if (Configuration.errorOnAutoCreate())
7578              throw new Error("Attempt to auto-create SetupActionOperationComponent.contentType");
7579            else if (Configuration.doAutoCreate())
7580              this.contentType = new CodeType(); // bb
7581          return this.contentType;
7582        }
7583
7584        public boolean hasContentTypeElement() { 
7585          return this.contentType != null && !this.contentType.isEmpty();
7586        }
7587
7588        public boolean hasContentType() { 
7589          return this.contentType != null && !this.contentType.isEmpty();
7590        }
7591
7592        /**
7593         * @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
7594         */
7595        public SetupActionOperationComponent setContentTypeElement(CodeType value) { 
7596          this.contentType = value;
7597          return this;
7598        }
7599
7600        /**
7601         * @return The mime-type to use for RESTful operation in the 'Content-Type' header.
7602         */
7603        public String getContentType() { 
7604          return this.contentType == null ? null : this.contentType.getValue();
7605        }
7606
7607        /**
7608         * @param value The mime-type to use for RESTful operation in the 'Content-Type' header.
7609         */
7610        public SetupActionOperationComponent setContentType(String value) { 
7611          if (Utilities.noString(value))
7612            this.contentType = null;
7613          else {
7614            if (this.contentType == null)
7615              this.contentType = new CodeType();
7616            this.contentType.setValue(value);
7617          }
7618          return this;
7619        }
7620
7621        /**
7622         * @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
7623         */
7624        public IntegerType getDestinationElement() { 
7625          if (this.destination == null)
7626            if (Configuration.errorOnAutoCreate())
7627              throw new Error("Attempt to auto-create SetupActionOperationComponent.destination");
7628            else if (Configuration.doAutoCreate())
7629              this.destination = new IntegerType(); // bb
7630          return this.destination;
7631        }
7632
7633        public boolean hasDestinationElement() { 
7634          return this.destination != null && !this.destination.isEmpty();
7635        }
7636
7637        public boolean hasDestination() { 
7638          return this.destination != null && !this.destination.isEmpty();
7639        }
7640
7641        /**
7642         * @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
7643         */
7644        public SetupActionOperationComponent setDestinationElement(IntegerType value) { 
7645          this.destination = value;
7646          return this;
7647        }
7648
7649        /**
7650         * @return The server where the request message is destined for.  Must be one of the server numbers listed in TestScript.destination section.
7651         */
7652        public int getDestination() { 
7653          return this.destination == null || this.destination.isEmpty() ? 0 : this.destination.getValue();
7654        }
7655
7656        /**
7657         * @param value The server where the request message is destined for.  Must be one of the server numbers listed in TestScript.destination section.
7658         */
7659        public SetupActionOperationComponent setDestination(int value) { 
7660            if (this.destination == null)
7661              this.destination = new IntegerType();
7662            this.destination.setValue(value);
7663          return this;
7664        }
7665
7666        /**
7667         * @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
7668         */
7669        public BooleanType getEncodeRequestUrlElement() { 
7670          if (this.encodeRequestUrl == null)
7671            if (Configuration.errorOnAutoCreate())
7672              throw new Error("Attempt to auto-create SetupActionOperationComponent.encodeRequestUrl");
7673            else if (Configuration.doAutoCreate())
7674              this.encodeRequestUrl = new BooleanType(); // bb
7675          return this.encodeRequestUrl;
7676        }
7677
7678        public boolean hasEncodeRequestUrlElement() { 
7679          return this.encodeRequestUrl != null && !this.encodeRequestUrl.isEmpty();
7680        }
7681
7682        public boolean hasEncodeRequestUrl() { 
7683          return this.encodeRequestUrl != null && !this.encodeRequestUrl.isEmpty();
7684        }
7685
7686        /**
7687         * @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
7688         */
7689        public SetupActionOperationComponent setEncodeRequestUrlElement(BooleanType value) { 
7690          this.encodeRequestUrl = value;
7691          return this;
7692        }
7693
7694        /**
7695         * @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.
7696         */
7697        public boolean getEncodeRequestUrl() { 
7698          return this.encodeRequestUrl == null || this.encodeRequestUrl.isEmpty() ? false : this.encodeRequestUrl.getValue();
7699        }
7700
7701        /**
7702         * @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.
7703         */
7704        public SetupActionOperationComponent setEncodeRequestUrl(boolean value) { 
7705            if (this.encodeRequestUrl == null)
7706              this.encodeRequestUrl = new BooleanType();
7707            this.encodeRequestUrl.setValue(value);
7708          return this;
7709        }
7710
7711        /**
7712         * @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
7713         */
7714        public Enumeration<TestScriptRequestMethodCode> getMethodElement() { 
7715          if (this.method == null)
7716            if (Configuration.errorOnAutoCreate())
7717              throw new Error("Attempt to auto-create SetupActionOperationComponent.method");
7718            else if (Configuration.doAutoCreate())
7719              this.method = new Enumeration<TestScriptRequestMethodCode>(new TestScriptRequestMethodCodeEnumFactory()); // bb
7720          return this.method;
7721        }
7722
7723        public boolean hasMethodElement() { 
7724          return this.method != null && !this.method.isEmpty();
7725        }
7726
7727        public boolean hasMethod() { 
7728          return this.method != null && !this.method.isEmpty();
7729        }
7730
7731        /**
7732         * @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
7733         */
7734        public SetupActionOperationComponent setMethodElement(Enumeration<TestScriptRequestMethodCode> value) { 
7735          this.method = value;
7736          return this;
7737        }
7738
7739        /**
7740         * @return The HTTP method the test engine MUST use for this operation regardless of any other operation details.
7741         */
7742        public TestScriptRequestMethodCode getMethod() { 
7743          return this.method == null ? null : this.method.getValue();
7744        }
7745
7746        /**
7747         * @param value The HTTP method the test engine MUST use for this operation regardless of any other operation details.
7748         */
7749        public SetupActionOperationComponent setMethod(TestScriptRequestMethodCode value) { 
7750          if (value == null)
7751            this.method = null;
7752          else {
7753            if (this.method == null)
7754              this.method = new Enumeration<TestScriptRequestMethodCode>(new TestScriptRequestMethodCodeEnumFactory());
7755            this.method.setValue(value);
7756          }
7757          return this;
7758        }
7759
7760        /**
7761         * @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
7762         */
7763        public IntegerType getOriginElement() { 
7764          if (this.origin == null)
7765            if (Configuration.errorOnAutoCreate())
7766              throw new Error("Attempt to auto-create SetupActionOperationComponent.origin");
7767            else if (Configuration.doAutoCreate())
7768              this.origin = new IntegerType(); // bb
7769          return this.origin;
7770        }
7771
7772        public boolean hasOriginElement() { 
7773          return this.origin != null && !this.origin.isEmpty();
7774        }
7775
7776        public boolean hasOrigin() { 
7777          return this.origin != null && !this.origin.isEmpty();
7778        }
7779
7780        /**
7781         * @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
7782         */
7783        public SetupActionOperationComponent setOriginElement(IntegerType value) { 
7784          this.origin = value;
7785          return this;
7786        }
7787
7788        /**
7789         * @return The server where the request message originates from.  Must be one of the server numbers listed in TestScript.origin section.
7790         */
7791        public int getOrigin() { 
7792          return this.origin == null || this.origin.isEmpty() ? 0 : this.origin.getValue();
7793        }
7794
7795        /**
7796         * @param value The server where the request message originates from.  Must be one of the server numbers listed in TestScript.origin section.
7797         */
7798        public SetupActionOperationComponent setOrigin(int value) { 
7799            if (this.origin == null)
7800              this.origin = new IntegerType();
7801            this.origin.setValue(value);
7802          return this;
7803        }
7804
7805        /**
7806         * @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
7807         */
7808        public StringType getParamsElement() { 
7809          if (this.params == null)
7810            if (Configuration.errorOnAutoCreate())
7811              throw new Error("Attempt to auto-create SetupActionOperationComponent.params");
7812            else if (Configuration.doAutoCreate())
7813              this.params = new StringType(); // bb
7814          return this.params;
7815        }
7816
7817        public boolean hasParamsElement() { 
7818          return this.params != null && !this.params.isEmpty();
7819        }
7820
7821        public boolean hasParams() { 
7822          return this.params != null && !this.params.isEmpty();
7823        }
7824
7825        /**
7826         * @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
7827         */
7828        public SetupActionOperationComponent setParamsElement(StringType value) { 
7829          this.params = value;
7830          return this;
7831        }
7832
7833        /**
7834         * @return Path plus parameters after [type].  Used to set parts of the request URL explicitly.
7835         */
7836        public String getParams() { 
7837          return this.params == null ? null : this.params.getValue();
7838        }
7839
7840        /**
7841         * @param value Path plus parameters after [type].  Used to set parts of the request URL explicitly.
7842         */
7843        public SetupActionOperationComponent setParams(String value) { 
7844          if (Utilities.noString(value))
7845            this.params = null;
7846          else {
7847            if (this.params == null)
7848              this.params = new StringType();
7849            this.params.setValue(value);
7850          }
7851          return this;
7852        }
7853
7854        /**
7855         * @return {@link #requestHeader} (Header elements would be used to set HTTP headers.)
7856         */
7857        public List<SetupActionOperationRequestHeaderComponent> getRequestHeader() { 
7858          if (this.requestHeader == null)
7859            this.requestHeader = new ArrayList<SetupActionOperationRequestHeaderComponent>();
7860          return this.requestHeader;
7861        }
7862
7863        /**
7864         * @return Returns a reference to <code>this</code> for easy method chaining
7865         */
7866        public SetupActionOperationComponent setRequestHeader(List<SetupActionOperationRequestHeaderComponent> theRequestHeader) { 
7867          this.requestHeader = theRequestHeader;
7868          return this;
7869        }
7870
7871        public boolean hasRequestHeader() { 
7872          if (this.requestHeader == null)
7873            return false;
7874          for (SetupActionOperationRequestHeaderComponent item : this.requestHeader)
7875            if (!item.isEmpty())
7876              return true;
7877          return false;
7878        }
7879
7880        public SetupActionOperationRequestHeaderComponent addRequestHeader() { //3
7881          SetupActionOperationRequestHeaderComponent t = new SetupActionOperationRequestHeaderComponent();
7882          if (this.requestHeader == null)
7883            this.requestHeader = new ArrayList<SetupActionOperationRequestHeaderComponent>();
7884          this.requestHeader.add(t);
7885          return t;
7886        }
7887
7888        public SetupActionOperationComponent addRequestHeader(SetupActionOperationRequestHeaderComponent t) { //3
7889          if (t == null)
7890            return this;
7891          if (this.requestHeader == null)
7892            this.requestHeader = new ArrayList<SetupActionOperationRequestHeaderComponent>();
7893          this.requestHeader.add(t);
7894          return this;
7895        }
7896
7897        /**
7898         * @return The first repetition of repeating field {@link #requestHeader}, creating it if it does not already exist {3}
7899         */
7900        public SetupActionOperationRequestHeaderComponent getRequestHeaderFirstRep() { 
7901          if (getRequestHeader().isEmpty()) {
7902            addRequestHeader();
7903          }
7904          return getRequestHeader().get(0);
7905        }
7906
7907        /**
7908         * @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
7909         */
7910        public IdType getRequestIdElement() { 
7911          if (this.requestId == null)
7912            if (Configuration.errorOnAutoCreate())
7913              throw new Error("Attempt to auto-create SetupActionOperationComponent.requestId");
7914            else if (Configuration.doAutoCreate())
7915              this.requestId = new IdType(); // bb
7916          return this.requestId;
7917        }
7918
7919        public boolean hasRequestIdElement() { 
7920          return this.requestId != null && !this.requestId.isEmpty();
7921        }
7922
7923        public boolean hasRequestId() { 
7924          return this.requestId != null && !this.requestId.isEmpty();
7925        }
7926
7927        /**
7928         * @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
7929         */
7930        public SetupActionOperationComponent setRequestIdElement(IdType value) { 
7931          this.requestId = value;
7932          return this;
7933        }
7934
7935        /**
7936         * @return The fixture id (maybe new) to map to the request.
7937         */
7938        public String getRequestId() { 
7939          return this.requestId == null ? null : this.requestId.getValue();
7940        }
7941
7942        /**
7943         * @param value The fixture id (maybe new) to map to the request.
7944         */
7945        public SetupActionOperationComponent setRequestId(String value) { 
7946          if (Utilities.noString(value))
7947            this.requestId = null;
7948          else {
7949            if (this.requestId == null)
7950              this.requestId = new IdType();
7951            this.requestId.setValue(value);
7952          }
7953          return this;
7954        }
7955
7956        /**
7957         * @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
7958         */
7959        public IdType getResponseIdElement() { 
7960          if (this.responseId == null)
7961            if (Configuration.errorOnAutoCreate())
7962              throw new Error("Attempt to auto-create SetupActionOperationComponent.responseId");
7963            else if (Configuration.doAutoCreate())
7964              this.responseId = new IdType(); // bb
7965          return this.responseId;
7966        }
7967
7968        public boolean hasResponseIdElement() { 
7969          return this.responseId != null && !this.responseId.isEmpty();
7970        }
7971
7972        public boolean hasResponseId() { 
7973          return this.responseId != null && !this.responseId.isEmpty();
7974        }
7975
7976        /**
7977         * @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
7978         */
7979        public SetupActionOperationComponent setResponseIdElement(IdType value) { 
7980          this.responseId = value;
7981          return this;
7982        }
7983
7984        /**
7985         * @return The fixture id (maybe new) to map to the response.
7986         */
7987        public String getResponseId() { 
7988          return this.responseId == null ? null : this.responseId.getValue();
7989        }
7990
7991        /**
7992         * @param value The fixture id (maybe new) to map to the response.
7993         */
7994        public SetupActionOperationComponent setResponseId(String value) { 
7995          if (Utilities.noString(value))
7996            this.responseId = null;
7997          else {
7998            if (this.responseId == null)
7999              this.responseId = new IdType();
8000            this.responseId.setValue(value);
8001          }
8002          return this;
8003        }
8004
8005        /**
8006         * @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
8007         */
8008        public IdType getSourceIdElement() { 
8009          if (this.sourceId == null)
8010            if (Configuration.errorOnAutoCreate())
8011              throw new Error("Attempt to auto-create SetupActionOperationComponent.sourceId");
8012            else if (Configuration.doAutoCreate())
8013              this.sourceId = new IdType(); // bb
8014          return this.sourceId;
8015        }
8016
8017        public boolean hasSourceIdElement() { 
8018          return this.sourceId != null && !this.sourceId.isEmpty();
8019        }
8020
8021        public boolean hasSourceId() { 
8022          return this.sourceId != null && !this.sourceId.isEmpty();
8023        }
8024
8025        /**
8026         * @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
8027         */
8028        public SetupActionOperationComponent setSourceIdElement(IdType value) { 
8029          this.sourceId = value;
8030          return this;
8031        }
8032
8033        /**
8034         * @return The id of the fixture used as the body of a PUT or POST request.
8035         */
8036        public String getSourceId() { 
8037          return this.sourceId == null ? null : this.sourceId.getValue();
8038        }
8039
8040        /**
8041         * @param value The id of the fixture used as the body of a PUT or POST request.
8042         */
8043        public SetupActionOperationComponent setSourceId(String value) { 
8044          if (Utilities.noString(value))
8045            this.sourceId = null;
8046          else {
8047            if (this.sourceId == null)
8048              this.sourceId = new IdType();
8049            this.sourceId.setValue(value);
8050          }
8051          return this;
8052        }
8053
8054        /**
8055         * @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
8056         */
8057        public IdType getTargetIdElement() { 
8058          if (this.targetId == null)
8059            if (Configuration.errorOnAutoCreate())
8060              throw new Error("Attempt to auto-create SetupActionOperationComponent.targetId");
8061            else if (Configuration.doAutoCreate())
8062              this.targetId = new IdType(); // bb
8063          return this.targetId;
8064        }
8065
8066        public boolean hasTargetIdElement() { 
8067          return this.targetId != null && !this.targetId.isEmpty();
8068        }
8069
8070        public boolean hasTargetId() { 
8071          return this.targetId != null && !this.targetId.isEmpty();
8072        }
8073
8074        /**
8075         * @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
8076         */
8077        public SetupActionOperationComponent setTargetIdElement(IdType value) { 
8078          this.targetId = value;
8079          return this;
8080        }
8081
8082        /**
8083         * @return Id of fixture used for extracting the [id],  [type], and [vid] for GET requests.
8084         */
8085        public String getTargetId() { 
8086          return this.targetId == null ? null : this.targetId.getValue();
8087        }
8088
8089        /**
8090         * @param value Id of fixture used for extracting the [id],  [type], and [vid] for GET requests.
8091         */
8092        public SetupActionOperationComponent setTargetId(String value) { 
8093          if (Utilities.noString(value))
8094            this.targetId = null;
8095          else {
8096            if (this.targetId == null)
8097              this.targetId = new IdType();
8098            this.targetId.setValue(value);
8099          }
8100          return this;
8101        }
8102
8103        /**
8104         * @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
8105         */
8106        public StringType getUrlElement() { 
8107          if (this.url == null)
8108            if (Configuration.errorOnAutoCreate())
8109              throw new Error("Attempt to auto-create SetupActionOperationComponent.url");
8110            else if (Configuration.doAutoCreate())
8111              this.url = new StringType(); // bb
8112          return this.url;
8113        }
8114
8115        public boolean hasUrlElement() { 
8116          return this.url != null && !this.url.isEmpty();
8117        }
8118
8119        public boolean hasUrl() { 
8120          return this.url != null && !this.url.isEmpty();
8121        }
8122
8123        /**
8124         * @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
8125         */
8126        public SetupActionOperationComponent setUrlElement(StringType value) { 
8127          this.url = value;
8128          return this;
8129        }
8130
8131        /**
8132         * @return Complete request URL.
8133         */
8134        public String getUrl() { 
8135          return this.url == null ? null : this.url.getValue();
8136        }
8137
8138        /**
8139         * @param value Complete request URL.
8140         */
8141        public SetupActionOperationComponent setUrl(String value) { 
8142          if (Utilities.noString(value))
8143            this.url = null;
8144          else {
8145            if (this.url == null)
8146              this.url = new StringType();
8147            this.url.setValue(value);
8148          }
8149          return this;
8150        }
8151
8152        protected void listChildren(List<Property> children) {
8153          super.listChildren(children);
8154          children.add(new Property("type", "Coding", "Server interaction or operation type.", 0, 1, type));
8155          children.add(new Property("resource", "code", "The type of the resource.  See http://build.fhir.org/resourcelist.html.", 0, 1, resource));
8156          children.add(new Property("label", "string", "The label would be used for tracking/logging purposes by test engines.", 0, 1, label));
8157          children.add(new Property("description", "string", "The description would be used by test engines for tracking and reporting purposes.", 0, 1, description));
8158          children.add(new Property("accept", "code", "The mime-type to use for RESTful operation in the 'Accept' header.", 0, 1, accept));
8159          children.add(new Property("contentType", "code", "The mime-type to use for RESTful operation in the 'Content-Type' header.", 0, 1, contentType));
8160          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));
8161          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));
8162          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));
8163          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));
8164          children.add(new Property("params", "string", "Path plus parameters after [type].  Used to set parts of the request URL explicitly.", 0, 1, params));
8165          children.add(new Property("requestHeader", "", "Header elements would be used to set HTTP headers.", 0, java.lang.Integer.MAX_VALUE, requestHeader));
8166          children.add(new Property("requestId", "id", "The fixture id (maybe new) to map to the request.", 0, 1, requestId));
8167          children.add(new Property("responseId", "id", "The fixture id (maybe new) to map to the response.", 0, 1, responseId));
8168          children.add(new Property("sourceId", "id", "The id of the fixture used as the body of a PUT or POST request.", 0, 1, sourceId));
8169          children.add(new Property("targetId", "id", "Id of fixture used for extracting the [id],  [type], and [vid] for GET requests.", 0, 1, targetId));
8170          children.add(new Property("url", "string", "Complete request URL.", 0, 1, url));
8171        }
8172
8173        @Override
8174        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
8175          switch (_hash) {
8176          case 3575610: /*type*/  return new Property("type", "Coding", "Server interaction or operation type.", 0, 1, type);
8177          case -341064690: /*resource*/  return new Property("resource", "code", "The type of the resource.  See http://build.fhir.org/resourcelist.html.", 0, 1, resource);
8178          case 102727412: /*label*/  return new Property("label", "string", "The label would be used for tracking/logging purposes by test engines.", 0, 1, label);
8179          case -1724546052: /*description*/  return new Property("description", "string", "The description would be used by test engines for tracking and reporting purposes.", 0, 1, description);
8180          case -1423461112: /*accept*/  return new Property("accept", "code", "The mime-type to use for RESTful operation in the 'Accept' header.", 0, 1, accept);
8181          case -389131437: /*contentType*/  return new Property("contentType", "code", "The mime-type to use for RESTful operation in the 'Content-Type' header.", 0, 1, contentType);
8182          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);
8183          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);
8184          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);
8185          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);
8186          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);
8187          case 1074158076: /*requestHeader*/  return new Property("requestHeader", "", "Header elements would be used to set HTTP headers.", 0, java.lang.Integer.MAX_VALUE, requestHeader);
8188          case 693933066: /*requestId*/  return new Property("requestId", "id", "The fixture id (maybe new) to map to the request.", 0, 1, requestId);
8189          case -633138884: /*responseId*/  return new Property("responseId", "id", "The fixture id (maybe new) to map to the response.", 0, 1, responseId);
8190          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);
8191          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);
8192          case 116079: /*url*/  return new Property("url", "string", "Complete request URL.", 0, 1, url);
8193          default: return super.getNamedProperty(_hash, _name, _checkValid);
8194          }
8195
8196        }
8197
8198      @Override
8199      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
8200        switch (hash) {
8201        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // Coding
8202        case -341064690: /*resource*/ return this.resource == null ? new Base[0] : new Base[] {this.resource}; // Enumeration<FHIRDefinedType>
8203        case 102727412: /*label*/ return this.label == null ? new Base[0] : new Base[] {this.label}; // StringType
8204        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // StringType
8205        case -1423461112: /*accept*/ return this.accept == null ? new Base[0] : new Base[] {this.accept}; // CodeType
8206        case -389131437: /*contentType*/ return this.contentType == null ? new Base[0] : new Base[] {this.contentType}; // CodeType
8207        case -1429847026: /*destination*/ return this.destination == null ? new Base[0] : new Base[] {this.destination}; // IntegerType
8208        case -1760554218: /*encodeRequestUrl*/ return this.encodeRequestUrl == null ? new Base[0] : new Base[] {this.encodeRequestUrl}; // BooleanType
8209        case -1077554975: /*method*/ return this.method == null ? new Base[0] : new Base[] {this.method}; // Enumeration<TestScriptRequestMethodCode>
8210        case -1008619738: /*origin*/ return this.origin == null ? new Base[0] : new Base[] {this.origin}; // IntegerType
8211        case -995427962: /*params*/ return this.params == null ? new Base[0] : new Base[] {this.params}; // StringType
8212        case 1074158076: /*requestHeader*/ return this.requestHeader == null ? new Base[0] : this.requestHeader.toArray(new Base[this.requestHeader.size()]); // SetupActionOperationRequestHeaderComponent
8213        case 693933066: /*requestId*/ return this.requestId == null ? new Base[0] : new Base[] {this.requestId}; // IdType
8214        case -633138884: /*responseId*/ return this.responseId == null ? new Base[0] : new Base[] {this.responseId}; // IdType
8215        case 1746327190: /*sourceId*/ return this.sourceId == null ? new Base[0] : new Base[] {this.sourceId}; // IdType
8216        case -441951604: /*targetId*/ return this.targetId == null ? new Base[0] : new Base[] {this.targetId}; // IdType
8217        case 116079: /*url*/ return this.url == null ? new Base[0] : new Base[] {this.url}; // StringType
8218        default: return super.getProperty(hash, name, checkValid);
8219        }
8220
8221      }
8222
8223      @Override
8224      public Base setProperty(int hash, String name, Base value) throws FHIRException {
8225        switch (hash) {
8226        case 3575610: // type
8227          this.type = TypeConvertor.castToCoding(value); // Coding
8228          return value;
8229        case -341064690: // resource
8230          value = new FHIRDefinedTypeEnumFactory().fromType(TypeConvertor.castToCode(value));
8231          this.resource = (Enumeration) value; // Enumeration<FHIRDefinedType>
8232          return value;
8233        case 102727412: // label
8234          this.label = TypeConvertor.castToString(value); // StringType
8235          return value;
8236        case -1724546052: // description
8237          this.description = TypeConvertor.castToString(value); // StringType
8238          return value;
8239        case -1423461112: // accept
8240          this.accept = TypeConvertor.castToCode(value); // CodeType
8241          return value;
8242        case -389131437: // contentType
8243          this.contentType = TypeConvertor.castToCode(value); // CodeType
8244          return value;
8245        case -1429847026: // destination
8246          this.destination = TypeConvertor.castToInteger(value); // IntegerType
8247          return value;
8248        case -1760554218: // encodeRequestUrl
8249          this.encodeRequestUrl = TypeConvertor.castToBoolean(value); // BooleanType
8250          return value;
8251        case -1077554975: // method
8252          value = new TestScriptRequestMethodCodeEnumFactory().fromType(TypeConvertor.castToCode(value));
8253          this.method = (Enumeration) value; // Enumeration<TestScriptRequestMethodCode>
8254          return value;
8255        case -1008619738: // origin
8256          this.origin = TypeConvertor.castToInteger(value); // IntegerType
8257          return value;
8258        case -995427962: // params
8259          this.params = TypeConvertor.castToString(value); // StringType
8260          return value;
8261        case 1074158076: // requestHeader
8262          this.getRequestHeader().add((SetupActionOperationRequestHeaderComponent) value); // SetupActionOperationRequestHeaderComponent
8263          return value;
8264        case 693933066: // requestId
8265          this.requestId = TypeConvertor.castToId(value); // IdType
8266          return value;
8267        case -633138884: // responseId
8268          this.responseId = TypeConvertor.castToId(value); // IdType
8269          return value;
8270        case 1746327190: // sourceId
8271          this.sourceId = TypeConvertor.castToId(value); // IdType
8272          return value;
8273        case -441951604: // targetId
8274          this.targetId = TypeConvertor.castToId(value); // IdType
8275          return value;
8276        case 116079: // url
8277          this.url = TypeConvertor.castToString(value); // StringType
8278          return value;
8279        default: return super.setProperty(hash, name, value);
8280        }
8281
8282      }
8283
8284      @Override
8285      public Base setProperty(String name, Base value) throws FHIRException {
8286        if (name.equals("type")) {
8287          this.type = TypeConvertor.castToCoding(value); // Coding
8288        } else if (name.equals("resource")) {
8289          value = new FHIRDefinedTypeEnumFactory().fromType(TypeConvertor.castToCode(value));
8290          this.resource = (Enumeration) value; // Enumeration<FHIRDefinedType>
8291        } else if (name.equals("label")) {
8292          this.label = TypeConvertor.castToString(value); // StringType
8293        } else if (name.equals("description")) {
8294          this.description = TypeConvertor.castToString(value); // StringType
8295        } else if (name.equals("accept")) {
8296          this.accept = TypeConvertor.castToCode(value); // CodeType
8297        } else if (name.equals("contentType")) {
8298          this.contentType = TypeConvertor.castToCode(value); // CodeType
8299        } else if (name.equals("destination")) {
8300          this.destination = TypeConvertor.castToInteger(value); // IntegerType
8301        } else if (name.equals("encodeRequestUrl")) {
8302          this.encodeRequestUrl = TypeConvertor.castToBoolean(value); // BooleanType
8303        } else if (name.equals("method")) {
8304          value = new TestScriptRequestMethodCodeEnumFactory().fromType(TypeConvertor.castToCode(value));
8305          this.method = (Enumeration) value; // Enumeration<TestScriptRequestMethodCode>
8306        } else if (name.equals("origin")) {
8307          this.origin = TypeConvertor.castToInteger(value); // IntegerType
8308        } else if (name.equals("params")) {
8309          this.params = TypeConvertor.castToString(value); // StringType
8310        } else if (name.equals("requestHeader")) {
8311          this.getRequestHeader().add((SetupActionOperationRequestHeaderComponent) value);
8312        } else if (name.equals("requestId")) {
8313          this.requestId = TypeConvertor.castToId(value); // IdType
8314        } else if (name.equals("responseId")) {
8315          this.responseId = TypeConvertor.castToId(value); // IdType
8316        } else if (name.equals("sourceId")) {
8317          this.sourceId = TypeConvertor.castToId(value); // IdType
8318        } else if (name.equals("targetId")) {
8319          this.targetId = TypeConvertor.castToId(value); // IdType
8320        } else if (name.equals("url")) {
8321          this.url = TypeConvertor.castToString(value); // StringType
8322        } else
8323          return super.setProperty(name, value);
8324        return value;
8325      }
8326
8327      @Override
8328      public Base makeProperty(int hash, String name) throws FHIRException {
8329        switch (hash) {
8330        case 3575610:  return getType();
8331        case -341064690:  return getResourceElement();
8332        case 102727412:  return getLabelElement();
8333        case -1724546052:  return getDescriptionElement();
8334        case -1423461112:  return getAcceptElement();
8335        case -389131437:  return getContentTypeElement();
8336        case -1429847026:  return getDestinationElement();
8337        case -1760554218:  return getEncodeRequestUrlElement();
8338        case -1077554975:  return getMethodElement();
8339        case -1008619738:  return getOriginElement();
8340        case -995427962:  return getParamsElement();
8341        case 1074158076:  return addRequestHeader(); 
8342        case 693933066:  return getRequestIdElement();
8343        case -633138884:  return getResponseIdElement();
8344        case 1746327190:  return getSourceIdElement();
8345        case -441951604:  return getTargetIdElement();
8346        case 116079:  return getUrlElement();
8347        default: return super.makeProperty(hash, name);
8348        }
8349
8350      }
8351
8352      @Override
8353      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
8354        switch (hash) {
8355        case 3575610: /*type*/ return new String[] {"Coding"};
8356        case -341064690: /*resource*/ return new String[] {"code"};
8357        case 102727412: /*label*/ return new String[] {"string"};
8358        case -1724546052: /*description*/ return new String[] {"string"};
8359        case -1423461112: /*accept*/ return new String[] {"code"};
8360        case -389131437: /*contentType*/ return new String[] {"code"};
8361        case -1429847026: /*destination*/ return new String[] {"integer"};
8362        case -1760554218: /*encodeRequestUrl*/ return new String[] {"boolean"};
8363        case -1077554975: /*method*/ return new String[] {"code"};
8364        case -1008619738: /*origin*/ return new String[] {"integer"};
8365        case -995427962: /*params*/ return new String[] {"string"};
8366        case 1074158076: /*requestHeader*/ return new String[] {};
8367        case 693933066: /*requestId*/ return new String[] {"id"};
8368        case -633138884: /*responseId*/ return new String[] {"id"};
8369        case 1746327190: /*sourceId*/ return new String[] {"id"};
8370        case -441951604: /*targetId*/ return new String[] {"id"};
8371        case 116079: /*url*/ return new String[] {"string"};
8372        default: return super.getTypesForProperty(hash, name);
8373        }
8374
8375      }
8376
8377      @Override
8378      public Base addChild(String name) throws FHIRException {
8379        if (name.equals("type")) {
8380          this.type = new Coding();
8381          return this.type;
8382        }
8383        else if (name.equals("resource")) {
8384          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.operation.resource");
8385        }
8386        else if (name.equals("label")) {
8387          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.operation.label");
8388        }
8389        else if (name.equals("description")) {
8390          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.operation.description");
8391        }
8392        else if (name.equals("accept")) {
8393          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.operation.accept");
8394        }
8395        else if (name.equals("contentType")) {
8396          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.operation.contentType");
8397        }
8398        else if (name.equals("destination")) {
8399          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.operation.destination");
8400        }
8401        else if (name.equals("encodeRequestUrl")) {
8402          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.operation.encodeRequestUrl");
8403        }
8404        else if (name.equals("method")) {
8405          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.operation.method");
8406        }
8407        else if (name.equals("origin")) {
8408          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.operation.origin");
8409        }
8410        else if (name.equals("params")) {
8411          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.operation.params");
8412        }
8413        else if (name.equals("requestHeader")) {
8414          return addRequestHeader();
8415        }
8416        else if (name.equals("requestId")) {
8417          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.operation.requestId");
8418        }
8419        else if (name.equals("responseId")) {
8420          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.operation.responseId");
8421        }
8422        else if (name.equals("sourceId")) {
8423          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.operation.sourceId");
8424        }
8425        else if (name.equals("targetId")) {
8426          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.operation.targetId");
8427        }
8428        else if (name.equals("url")) {
8429          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.operation.url");
8430        }
8431        else
8432          return super.addChild(name);
8433      }
8434
8435      public SetupActionOperationComponent copy() {
8436        SetupActionOperationComponent dst = new SetupActionOperationComponent();
8437        copyValues(dst);
8438        return dst;
8439      }
8440
8441      public void copyValues(SetupActionOperationComponent dst) {
8442        super.copyValues(dst);
8443        dst.type = type == null ? null : type.copy();
8444        dst.resource = resource == null ? null : resource.copy();
8445        dst.label = label == null ? null : label.copy();
8446        dst.description = description == null ? null : description.copy();
8447        dst.accept = accept == null ? null : accept.copy();
8448        dst.contentType = contentType == null ? null : contentType.copy();
8449        dst.destination = destination == null ? null : destination.copy();
8450        dst.encodeRequestUrl = encodeRequestUrl == null ? null : encodeRequestUrl.copy();
8451        dst.method = method == null ? null : method.copy();
8452        dst.origin = origin == null ? null : origin.copy();
8453        dst.params = params == null ? null : params.copy();
8454        if (requestHeader != null) {
8455          dst.requestHeader = new ArrayList<SetupActionOperationRequestHeaderComponent>();
8456          for (SetupActionOperationRequestHeaderComponent i : requestHeader)
8457            dst.requestHeader.add(i.copy());
8458        };
8459        dst.requestId = requestId == null ? null : requestId.copy();
8460        dst.responseId = responseId == null ? null : responseId.copy();
8461        dst.sourceId = sourceId == null ? null : sourceId.copy();
8462        dst.targetId = targetId == null ? null : targetId.copy();
8463        dst.url = url == null ? null : url.copy();
8464      }
8465
8466      @Override
8467      public boolean equalsDeep(Base other_) {
8468        if (!super.equalsDeep(other_))
8469          return false;
8470        if (!(other_ instanceof SetupActionOperationComponent))
8471          return false;
8472        SetupActionOperationComponent o = (SetupActionOperationComponent) other_;
8473        return compareDeep(type, o.type, true) && compareDeep(resource, o.resource, true) && compareDeep(label, o.label, true)
8474           && compareDeep(description, o.description, true) && compareDeep(accept, o.accept, true) && compareDeep(contentType, o.contentType, true)
8475           && compareDeep(destination, o.destination, true) && compareDeep(encodeRequestUrl, o.encodeRequestUrl, true)
8476           && compareDeep(method, o.method, true) && compareDeep(origin, o.origin, true) && compareDeep(params, o.params, true)
8477           && compareDeep(requestHeader, o.requestHeader, true) && compareDeep(requestId, o.requestId, true)
8478           && compareDeep(responseId, o.responseId, true) && compareDeep(sourceId, o.sourceId, true) && compareDeep(targetId, o.targetId, true)
8479           && compareDeep(url, o.url, true);
8480      }
8481
8482      @Override
8483      public boolean equalsShallow(Base other_) {
8484        if (!super.equalsShallow(other_))
8485          return false;
8486        if (!(other_ instanceof SetupActionOperationComponent))
8487          return false;
8488        SetupActionOperationComponent o = (SetupActionOperationComponent) other_;
8489        return compareValues(resource, o.resource, true) && compareValues(label, o.label, true) && compareValues(description, o.description, true)
8490           && compareValues(accept, o.accept, true) && compareValues(contentType, o.contentType, true) && compareValues(destination, o.destination, true)
8491           && compareValues(encodeRequestUrl, o.encodeRequestUrl, true) && compareValues(method, o.method, true)
8492           && compareValues(origin, o.origin, true) && compareValues(params, o.params, true) && compareValues(requestId, o.requestId, true)
8493           && compareValues(responseId, o.responseId, true) && compareValues(sourceId, o.sourceId, true) && compareValues(targetId, o.targetId, true)
8494           && compareValues(url, o.url, true);
8495      }
8496
8497      public boolean isEmpty() {
8498        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(type, resource, label, description
8499          , accept, contentType, destination, encodeRequestUrl, method, origin, params, requestHeader
8500          , requestId, responseId, sourceId, targetId, url);
8501      }
8502
8503  public String fhirType() {
8504    return "TestScript.setup.action.operation";
8505
8506  }
8507
8508  }
8509
8510    @Block()
8511    public static class SetupActionOperationRequestHeaderComponent extends BackboneElement implements IBaseBackboneElement {
8512        /**
8513         * The HTTP header field e.g. "Accept".
8514         */
8515        @Child(name = "field", type = {StringType.class}, order=1, min=1, max=1, modifier=false, summary=false)
8516        @Description(shortDefinition="HTTP header field name", formalDefinition="The HTTP header field e.g. \"Accept\"." )
8517        protected StringType field;
8518
8519        /**
8520         * The value of the header e.g. "application/fhir+xml".
8521         */
8522        @Child(name = "value", type = {StringType.class}, order=2, min=1, max=1, modifier=false, summary=false)
8523        @Description(shortDefinition="HTTP headerfield value", formalDefinition="The value of the header e.g. \"application/fhir+xml\"." )
8524        protected StringType value;
8525
8526        private static final long serialVersionUID = 274395337L;
8527
8528    /**
8529     * Constructor
8530     */
8531      public SetupActionOperationRequestHeaderComponent() {
8532        super();
8533      }
8534
8535    /**
8536     * Constructor
8537     */
8538      public SetupActionOperationRequestHeaderComponent(String field, String value) {
8539        super();
8540        this.setField(field);
8541        this.setValue(value);
8542      }
8543
8544        /**
8545         * @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
8546         */
8547        public StringType getFieldElement() { 
8548          if (this.field == null)
8549            if (Configuration.errorOnAutoCreate())
8550              throw new Error("Attempt to auto-create SetupActionOperationRequestHeaderComponent.field");
8551            else if (Configuration.doAutoCreate())
8552              this.field = new StringType(); // bb
8553          return this.field;
8554        }
8555
8556        public boolean hasFieldElement() { 
8557          return this.field != null && !this.field.isEmpty();
8558        }
8559
8560        public boolean hasField() { 
8561          return this.field != null && !this.field.isEmpty();
8562        }
8563
8564        /**
8565         * @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
8566         */
8567        public SetupActionOperationRequestHeaderComponent setFieldElement(StringType value) { 
8568          this.field = value;
8569          return this;
8570        }
8571
8572        /**
8573         * @return The HTTP header field e.g. "Accept".
8574         */
8575        public String getField() { 
8576          return this.field == null ? null : this.field.getValue();
8577        }
8578
8579        /**
8580         * @param value The HTTP header field e.g. "Accept".
8581         */
8582        public SetupActionOperationRequestHeaderComponent setField(String value) { 
8583            if (this.field == null)
8584              this.field = new StringType();
8585            this.field.setValue(value);
8586          return this;
8587        }
8588
8589        /**
8590         * @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
8591         */
8592        public StringType getValueElement() { 
8593          if (this.value == null)
8594            if (Configuration.errorOnAutoCreate())
8595              throw new Error("Attempt to auto-create SetupActionOperationRequestHeaderComponent.value");
8596            else if (Configuration.doAutoCreate())
8597              this.value = new StringType(); // bb
8598          return this.value;
8599        }
8600
8601        public boolean hasValueElement() { 
8602          return this.value != null && !this.value.isEmpty();
8603        }
8604
8605        public boolean hasValue() { 
8606          return this.value != null && !this.value.isEmpty();
8607        }
8608
8609        /**
8610         * @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
8611         */
8612        public SetupActionOperationRequestHeaderComponent setValueElement(StringType value) { 
8613          this.value = value;
8614          return this;
8615        }
8616
8617        /**
8618         * @return The value of the header e.g. "application/fhir+xml".
8619         */
8620        public String getValue() { 
8621          return this.value == null ? null : this.value.getValue();
8622        }
8623
8624        /**
8625         * @param value The value of the header e.g. "application/fhir+xml".
8626         */
8627        public SetupActionOperationRequestHeaderComponent setValue(String value) { 
8628            if (this.value == null)
8629              this.value = new StringType();
8630            this.value.setValue(value);
8631          return this;
8632        }
8633
8634        protected void listChildren(List<Property> children) {
8635          super.listChildren(children);
8636          children.add(new Property("field", "string", "The HTTP header field e.g. \"Accept\".", 0, 1, field));
8637          children.add(new Property("value", "string", "The value of the header e.g. \"application/fhir+xml\".", 0, 1, value));
8638        }
8639
8640        @Override
8641        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
8642          switch (_hash) {
8643          case 97427706: /*field*/  return new Property("field", "string", "The HTTP header field e.g. \"Accept\".", 0, 1, field);
8644          case 111972721: /*value*/  return new Property("value", "string", "The value of the header e.g. \"application/fhir+xml\".", 0, 1, value);
8645          default: return super.getNamedProperty(_hash, _name, _checkValid);
8646          }
8647
8648        }
8649
8650      @Override
8651      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
8652        switch (hash) {
8653        case 97427706: /*field*/ return this.field == null ? new Base[0] : new Base[] {this.field}; // StringType
8654        case 111972721: /*value*/ return this.value == null ? new Base[0] : new Base[] {this.value}; // StringType
8655        default: return super.getProperty(hash, name, checkValid);
8656        }
8657
8658      }
8659
8660      @Override
8661      public Base setProperty(int hash, String name, Base value) throws FHIRException {
8662        switch (hash) {
8663        case 97427706: // field
8664          this.field = TypeConvertor.castToString(value); // StringType
8665          return value;
8666        case 111972721: // value
8667          this.value = TypeConvertor.castToString(value); // StringType
8668          return value;
8669        default: return super.setProperty(hash, name, value);
8670        }
8671
8672      }
8673
8674      @Override
8675      public Base setProperty(String name, Base value) throws FHIRException {
8676        if (name.equals("field")) {
8677          this.field = TypeConvertor.castToString(value); // StringType
8678        } else if (name.equals("value")) {
8679          this.value = TypeConvertor.castToString(value); // StringType
8680        } else
8681          return super.setProperty(name, value);
8682        return value;
8683      }
8684
8685      @Override
8686      public Base makeProperty(int hash, String name) throws FHIRException {
8687        switch (hash) {
8688        case 97427706:  return getFieldElement();
8689        case 111972721:  return getValueElement();
8690        default: return super.makeProperty(hash, name);
8691        }
8692
8693      }
8694
8695      @Override
8696      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
8697        switch (hash) {
8698        case 97427706: /*field*/ return new String[] {"string"};
8699        case 111972721: /*value*/ return new String[] {"string"};
8700        default: return super.getTypesForProperty(hash, name);
8701        }
8702
8703      }
8704
8705      @Override
8706      public Base addChild(String name) throws FHIRException {
8707        if (name.equals("field")) {
8708          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.operation.requestHeader.field");
8709        }
8710        else if (name.equals("value")) {
8711          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.operation.requestHeader.value");
8712        }
8713        else
8714          return super.addChild(name);
8715      }
8716
8717      public SetupActionOperationRequestHeaderComponent copy() {
8718        SetupActionOperationRequestHeaderComponent dst = new SetupActionOperationRequestHeaderComponent();
8719        copyValues(dst);
8720        return dst;
8721      }
8722
8723      public void copyValues(SetupActionOperationRequestHeaderComponent dst) {
8724        super.copyValues(dst);
8725        dst.field = field == null ? null : field.copy();
8726        dst.value = value == null ? null : value.copy();
8727      }
8728
8729      @Override
8730      public boolean equalsDeep(Base other_) {
8731        if (!super.equalsDeep(other_))
8732          return false;
8733        if (!(other_ instanceof SetupActionOperationRequestHeaderComponent))
8734          return false;
8735        SetupActionOperationRequestHeaderComponent o = (SetupActionOperationRequestHeaderComponent) other_;
8736        return compareDeep(field, o.field, true) && compareDeep(value, o.value, true);
8737      }
8738
8739      @Override
8740      public boolean equalsShallow(Base other_) {
8741        if (!super.equalsShallow(other_))
8742          return false;
8743        if (!(other_ instanceof SetupActionOperationRequestHeaderComponent))
8744          return false;
8745        SetupActionOperationRequestHeaderComponent o = (SetupActionOperationRequestHeaderComponent) other_;
8746        return compareValues(field, o.field, true) && compareValues(value, o.value, true);
8747      }
8748
8749      public boolean isEmpty() {
8750        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(field, value);
8751      }
8752
8753  public String fhirType() {
8754    return "TestScript.setup.action.operation.requestHeader";
8755
8756  }
8757
8758  }
8759
8760    @Block()
8761    public static class SetupActionAssertComponent extends BackboneElement implements IBaseBackboneElement {
8762        /**
8763         * The label would be used for tracking/logging purposes by test engines.
8764         */
8765        @Child(name = "label", type = {StringType.class}, order=1, min=0, max=1, modifier=false, summary=false)
8766        @Description(shortDefinition="Tracking/logging assertion label", formalDefinition="The label would be used for tracking/logging purposes by test engines." )
8767        protected StringType label;
8768
8769        /**
8770         * The description would be used by test engines for tracking and reporting purposes.
8771         */
8772        @Child(name = "description", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=false)
8773        @Description(shortDefinition="Tracking/reporting assertion description", formalDefinition="The description would be used by test engines for tracking and reporting purposes." )
8774        protected StringType description;
8775
8776        /**
8777         * The direction to use for the assertion.
8778         */
8779        @Child(name = "direction", type = {CodeType.class}, order=3, min=0, max=1, modifier=false, summary=false)
8780        @Description(shortDefinition="response | request", formalDefinition="The direction to use for the assertion." )
8781        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/assert-direction-codes")
8782        protected Enumeration<AssertionDirectionType> direction;
8783
8784        /**
8785         * Id of the source fixture used as the contents to be evaluated by either the "source/expression" or "sourceId/path" definition.
8786         */
8787        @Child(name = "compareToSourceId", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=false)
8788        @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." )
8789        protected StringType compareToSourceId;
8790
8791        /**
8792         * The FHIRPath expression to evaluate against the source fixture. When compareToSourceId is defined, either compareToSourceExpression or compareToSourcePath must be defined, but not both.
8793         */
8794        @Child(name = "compareToSourceExpression", type = {StringType.class}, order=5, min=0, max=1, modifier=false, summary=false)
8795        @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." )
8796        protected StringType compareToSourceExpression;
8797
8798        /**
8799         * XPath or JSONPath expression to evaluate against the source fixture. When compareToSourceId is defined, either compareToSourceExpression or compareToSourcePath must be defined, but not both.
8800         */
8801        @Child(name = "compareToSourcePath", type = {StringType.class}, order=6, min=0, max=1, modifier=false, summary=false)
8802        @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." )
8803        protected StringType compareToSourcePath;
8804
8805        /**
8806         * The mime-type contents to compare against the request or response message 'Content-Type' header.
8807         */
8808        @Child(name = "contentType", type = {CodeType.class}, order=7, min=0, max=1, modifier=false, summary=false)
8809        @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." )
8810        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/mimetypes")
8811        protected CodeType contentType;
8812
8813        /**
8814         * The FHIRPath expression to be evaluated against the request or response message contents - HTTP headers and payload.
8815         */
8816        @Child(name = "expression", type = {StringType.class}, order=8, min=0, max=1, modifier=false, summary=false)
8817        @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." )
8818        protected StringType expression;
8819
8820        /**
8821         * The HTTP header field name e.g. 'Location'.
8822         */
8823        @Child(name = "headerField", type = {StringType.class}, order=9, min=0, max=1, modifier=false, summary=false)
8824        @Description(shortDefinition="HTTP header field name", formalDefinition="The HTTP header field name e.g. 'Location'." )
8825        protected StringType headerField;
8826
8827        /**
8828         * The ID of a fixture.  Asserts that the response contains at a minimum the fixture specified by minimumId.
8829         */
8830        @Child(name = "minimumId", type = {StringType.class}, order=10, min=0, max=1, modifier=false, summary=false)
8831        @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." )
8832        protected StringType minimumId;
8833
8834        /**
8835         * Whether or not the test execution performs validation on the bundle navigation links.
8836         */
8837        @Child(name = "navigationLinks", type = {BooleanType.class}, order=11, min=0, max=1, modifier=false, summary=false)
8838        @Description(shortDefinition="Perform validation on navigation links?", formalDefinition="Whether or not the test execution performs validation on the bundle navigation links." )
8839        protected BooleanType navigationLinks;
8840
8841        /**
8842         * The operator type defines the conditional behavior of the assert. If not defined, the default is equals.
8843         */
8844        @Child(name = "operator", type = {CodeType.class}, order=12, min=0, max=1, modifier=false, summary=false)
8845        @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." )
8846        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/assert-operator-codes")
8847        protected Enumeration<AssertionOperatorType> operator;
8848
8849        /**
8850         * The XPath or JSONPath expression to be evaluated against the fixture representing the response received from server.
8851         */
8852        @Child(name = "path", type = {StringType.class}, order=13, min=0, max=1, modifier=false, summary=false)
8853        @Description(shortDefinition="XPath or JSONPath expression", formalDefinition="The XPath or JSONPath expression to be evaluated against the fixture representing the response received from server." )
8854        protected StringType path;
8855
8856        /**
8857         * The request method or HTTP operation code to compare against that used by the client system under test.
8858         */
8859        @Child(name = "requestMethod", type = {CodeType.class}, order=14, min=0, max=1, modifier=false, summary=false)
8860        @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." )
8861        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/http-operations")
8862        protected Enumeration<TestScriptRequestMethodCode> requestMethod;
8863
8864        /**
8865         * The value to use in a comparison against the request URL path string.
8866         */
8867        @Child(name = "requestURL", type = {StringType.class}, order=15, min=0, max=1, modifier=false, summary=false)
8868        @Description(shortDefinition="Request URL comparison value", formalDefinition="The value to use in a comparison against the request URL path string." )
8869        protected StringType requestURL;
8870
8871        /**
8872         * The type of the resource.  See http://build.fhir.org/resourcelist.html.
8873         */
8874        @Child(name = "resource", type = {CodeType.class}, order=16, min=0, max=1, modifier=false, summary=false)
8875        @Description(shortDefinition="Resource type", formalDefinition="The type of the resource.  See http://build.fhir.org/resourcelist.html." )
8876        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/defined-types")
8877        protected Enumeration<FHIRDefinedType> resource;
8878
8879        /**
8880         * okay | created | noContent | notModified | bad | forbidden | notFound | methodNotAllowed | conflict | gone | preconditionFailed | unprocessable.
8881         */
8882        @Child(name = "response", type = {CodeType.class}, order=17, min=0, max=1, modifier=false, summary=false)
8883        @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." )
8884        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/assert-response-code-types")
8885        protected Enumeration<AssertionResponseTypes> response;
8886
8887        /**
8888         * The value of the HTTP response code to be tested.
8889         */
8890        @Child(name = "responseCode", type = {StringType.class}, order=18, min=0, max=1, modifier=false, summary=false)
8891        @Description(shortDefinition="HTTP response code to test", formalDefinition="The value of the HTTP response code to be tested." )
8892        protected StringType responseCode;
8893
8894        /**
8895         * Fixture to evaluate the XPath/JSONPath expression or the headerField  against.
8896         */
8897        @Child(name = "sourceId", type = {IdType.class}, order=19, min=0, max=1, modifier=false, summary=false)
8898        @Description(shortDefinition="Fixture Id of source expression or headerField", formalDefinition="Fixture to evaluate the XPath/JSONPath expression or the headerField  against." )
8899        protected IdType sourceId;
8900
8901        /**
8902         * The ID of the Profile to validate against.
8903         */
8904        @Child(name = "validateProfileId", type = {IdType.class}, order=20, min=0, max=1, modifier=false, summary=false)
8905        @Description(shortDefinition="Profile Id of validation profile reference", formalDefinition="The ID of the Profile to validate against." )
8906        protected IdType validateProfileId;
8907
8908        /**
8909         * The value to compare to.
8910         */
8911        @Child(name = "value", type = {StringType.class}, order=21, min=0, max=1, modifier=false, summary=false)
8912        @Description(shortDefinition="The value to compare to", formalDefinition="The value to compare to." )
8913        protected StringType value;
8914
8915        /**
8916         * Whether or not the test execution will produce a warning only on error for this assert.
8917         */
8918        @Child(name = "warningOnly", type = {BooleanType.class}, order=22, min=1, max=1, modifier=false, summary=false)
8919        @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." )
8920        protected BooleanType warningOnly;
8921
8922        private static final long serialVersionUID = -1112296782L;
8923
8924    /**
8925     * Constructor
8926     */
8927      public SetupActionAssertComponent() {
8928        super();
8929      }
8930
8931    /**
8932     * Constructor
8933     */
8934      public SetupActionAssertComponent(boolean warningOnly) {
8935        super();
8936        this.setWarningOnly(warningOnly);
8937      }
8938
8939        /**
8940         * @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
8941         */
8942        public StringType getLabelElement() { 
8943          if (this.label == null)
8944            if (Configuration.errorOnAutoCreate())
8945              throw new Error("Attempt to auto-create SetupActionAssertComponent.label");
8946            else if (Configuration.doAutoCreate())
8947              this.label = new StringType(); // bb
8948          return this.label;
8949        }
8950
8951        public boolean hasLabelElement() { 
8952          return this.label != null && !this.label.isEmpty();
8953        }
8954
8955        public boolean hasLabel() { 
8956          return this.label != null && !this.label.isEmpty();
8957        }
8958
8959        /**
8960         * @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
8961         */
8962        public SetupActionAssertComponent setLabelElement(StringType value) { 
8963          this.label = value;
8964          return this;
8965        }
8966
8967        /**
8968         * @return The label would be used for tracking/logging purposes by test engines.
8969         */
8970        public String getLabel() { 
8971          return this.label == null ? null : this.label.getValue();
8972        }
8973
8974        /**
8975         * @param value The label would be used for tracking/logging purposes by test engines.
8976         */
8977        public SetupActionAssertComponent setLabel(String value) { 
8978          if (Utilities.noString(value))
8979            this.label = null;
8980          else {
8981            if (this.label == null)
8982              this.label = new StringType();
8983            this.label.setValue(value);
8984          }
8985          return this;
8986        }
8987
8988        /**
8989         * @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
8990         */
8991        public StringType getDescriptionElement() { 
8992          if (this.description == null)
8993            if (Configuration.errorOnAutoCreate())
8994              throw new Error("Attempt to auto-create SetupActionAssertComponent.description");
8995            else if (Configuration.doAutoCreate())
8996              this.description = new StringType(); // bb
8997          return this.description;
8998        }
8999
9000        public boolean hasDescriptionElement() { 
9001          return this.description != null && !this.description.isEmpty();
9002        }
9003
9004        public boolean hasDescription() { 
9005          return this.description != null && !this.description.isEmpty();
9006        }
9007
9008        /**
9009         * @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
9010         */
9011        public SetupActionAssertComponent setDescriptionElement(StringType value) { 
9012          this.description = value;
9013          return this;
9014        }
9015
9016        /**
9017         * @return The description would be used by test engines for tracking and reporting purposes.
9018         */
9019        public String getDescription() { 
9020          return this.description == null ? null : this.description.getValue();
9021        }
9022
9023        /**
9024         * @param value The description would be used by test engines for tracking and reporting purposes.
9025         */
9026        public SetupActionAssertComponent setDescription(String value) { 
9027          if (Utilities.noString(value))
9028            this.description = null;
9029          else {
9030            if (this.description == null)
9031              this.description = new StringType();
9032            this.description.setValue(value);
9033          }
9034          return this;
9035        }
9036
9037        /**
9038         * @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
9039         */
9040        public Enumeration<AssertionDirectionType> getDirectionElement() { 
9041          if (this.direction == null)
9042            if (Configuration.errorOnAutoCreate())
9043              throw new Error("Attempt to auto-create SetupActionAssertComponent.direction");
9044            else if (Configuration.doAutoCreate())
9045              this.direction = new Enumeration<AssertionDirectionType>(new AssertionDirectionTypeEnumFactory()); // bb
9046          return this.direction;
9047        }
9048
9049        public boolean hasDirectionElement() { 
9050          return this.direction != null && !this.direction.isEmpty();
9051        }
9052
9053        public boolean hasDirection() { 
9054          return this.direction != null && !this.direction.isEmpty();
9055        }
9056
9057        /**
9058         * @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
9059         */
9060        public SetupActionAssertComponent setDirectionElement(Enumeration<AssertionDirectionType> value) { 
9061          this.direction = value;
9062          return this;
9063        }
9064
9065        /**
9066         * @return The direction to use for the assertion.
9067         */
9068        public AssertionDirectionType getDirection() { 
9069          return this.direction == null ? null : this.direction.getValue();
9070        }
9071
9072        /**
9073         * @param value The direction to use for the assertion.
9074         */
9075        public SetupActionAssertComponent setDirection(AssertionDirectionType value) { 
9076          if (value == null)
9077            this.direction = null;
9078          else {
9079            if (this.direction == null)
9080              this.direction = new Enumeration<AssertionDirectionType>(new AssertionDirectionTypeEnumFactory());
9081            this.direction.setValue(value);
9082          }
9083          return this;
9084        }
9085
9086        /**
9087         * @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
9088         */
9089        public StringType getCompareToSourceIdElement() { 
9090          if (this.compareToSourceId == null)
9091            if (Configuration.errorOnAutoCreate())
9092              throw new Error("Attempt to auto-create SetupActionAssertComponent.compareToSourceId");
9093            else if (Configuration.doAutoCreate())
9094              this.compareToSourceId = new StringType(); // bb
9095          return this.compareToSourceId;
9096        }
9097
9098        public boolean hasCompareToSourceIdElement() { 
9099          return this.compareToSourceId != null && !this.compareToSourceId.isEmpty();
9100        }
9101
9102        public boolean hasCompareToSourceId() { 
9103          return this.compareToSourceId != null && !this.compareToSourceId.isEmpty();
9104        }
9105
9106        /**
9107         * @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
9108         */
9109        public SetupActionAssertComponent setCompareToSourceIdElement(StringType value) { 
9110          this.compareToSourceId = value;
9111          return this;
9112        }
9113
9114        /**
9115         * @return Id of the source fixture used as the contents to be evaluated by either the "source/expression" or "sourceId/path" definition.
9116         */
9117        public String getCompareToSourceId() { 
9118          return this.compareToSourceId == null ? null : this.compareToSourceId.getValue();
9119        }
9120
9121        /**
9122         * @param value Id of the source fixture used as the contents to be evaluated by either the "source/expression" or "sourceId/path" definition.
9123         */
9124        public SetupActionAssertComponent setCompareToSourceId(String value) { 
9125          if (Utilities.noString(value))
9126            this.compareToSourceId = null;
9127          else {
9128            if (this.compareToSourceId == null)
9129              this.compareToSourceId = new StringType();
9130            this.compareToSourceId.setValue(value);
9131          }
9132          return this;
9133        }
9134
9135        /**
9136         * @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
9137         */
9138        public StringType getCompareToSourceExpressionElement() { 
9139          if (this.compareToSourceExpression == null)
9140            if (Configuration.errorOnAutoCreate())
9141              throw new Error("Attempt to auto-create SetupActionAssertComponent.compareToSourceExpression");
9142            else if (Configuration.doAutoCreate())
9143              this.compareToSourceExpression = new StringType(); // bb
9144          return this.compareToSourceExpression;
9145        }
9146
9147        public boolean hasCompareToSourceExpressionElement() { 
9148          return this.compareToSourceExpression != null && !this.compareToSourceExpression.isEmpty();
9149        }
9150
9151        public boolean hasCompareToSourceExpression() { 
9152          return this.compareToSourceExpression != null && !this.compareToSourceExpression.isEmpty();
9153        }
9154
9155        /**
9156         * @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
9157         */
9158        public SetupActionAssertComponent setCompareToSourceExpressionElement(StringType value) { 
9159          this.compareToSourceExpression = value;
9160          return this;
9161        }
9162
9163        /**
9164         * @return The FHIRPath expression to evaluate against the source fixture. When compareToSourceId is defined, either compareToSourceExpression or compareToSourcePath must be defined, but not both.
9165         */
9166        public String getCompareToSourceExpression() { 
9167          return this.compareToSourceExpression == null ? null : this.compareToSourceExpression.getValue();
9168        }
9169
9170        /**
9171         * @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.
9172         */
9173        public SetupActionAssertComponent setCompareToSourceExpression(String value) { 
9174          if (Utilities.noString(value))
9175            this.compareToSourceExpression = null;
9176          else {
9177            if (this.compareToSourceExpression == null)
9178              this.compareToSourceExpression = new StringType();
9179            this.compareToSourceExpression.setValue(value);
9180          }
9181          return this;
9182        }
9183
9184        /**
9185         * @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
9186         */
9187        public StringType getCompareToSourcePathElement() { 
9188          if (this.compareToSourcePath == null)
9189            if (Configuration.errorOnAutoCreate())
9190              throw new Error("Attempt to auto-create SetupActionAssertComponent.compareToSourcePath");
9191            else if (Configuration.doAutoCreate())
9192              this.compareToSourcePath = new StringType(); // bb
9193          return this.compareToSourcePath;
9194        }
9195
9196        public boolean hasCompareToSourcePathElement() { 
9197          return this.compareToSourcePath != null && !this.compareToSourcePath.isEmpty();
9198        }
9199
9200        public boolean hasCompareToSourcePath() { 
9201          return this.compareToSourcePath != null && !this.compareToSourcePath.isEmpty();
9202        }
9203
9204        /**
9205         * @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
9206         */
9207        public SetupActionAssertComponent setCompareToSourcePathElement(StringType value) { 
9208          this.compareToSourcePath = value;
9209          return this;
9210        }
9211
9212        /**
9213         * @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.
9214         */
9215        public String getCompareToSourcePath() { 
9216          return this.compareToSourcePath == null ? null : this.compareToSourcePath.getValue();
9217        }
9218
9219        /**
9220         * @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.
9221         */
9222        public SetupActionAssertComponent setCompareToSourcePath(String value) { 
9223          if (Utilities.noString(value))
9224            this.compareToSourcePath = null;
9225          else {
9226            if (this.compareToSourcePath == null)
9227              this.compareToSourcePath = new StringType();
9228            this.compareToSourcePath.setValue(value);
9229          }
9230          return this;
9231        }
9232
9233        /**
9234         * @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
9235         */
9236        public CodeType getContentTypeElement() { 
9237          if (this.contentType == null)
9238            if (Configuration.errorOnAutoCreate())
9239              throw new Error("Attempt to auto-create SetupActionAssertComponent.contentType");
9240            else if (Configuration.doAutoCreate())
9241              this.contentType = new CodeType(); // bb
9242          return this.contentType;
9243        }
9244
9245        public boolean hasContentTypeElement() { 
9246          return this.contentType != null && !this.contentType.isEmpty();
9247        }
9248
9249        public boolean hasContentType() { 
9250          return this.contentType != null && !this.contentType.isEmpty();
9251        }
9252
9253        /**
9254         * @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
9255         */
9256        public SetupActionAssertComponent setContentTypeElement(CodeType value) { 
9257          this.contentType = value;
9258          return this;
9259        }
9260
9261        /**
9262         * @return The mime-type contents to compare against the request or response message 'Content-Type' header.
9263         */
9264        public String getContentType() { 
9265          return this.contentType == null ? null : this.contentType.getValue();
9266        }
9267
9268        /**
9269         * @param value The mime-type contents to compare against the request or response message 'Content-Type' header.
9270         */
9271        public SetupActionAssertComponent setContentType(String value) { 
9272          if (Utilities.noString(value))
9273            this.contentType = null;
9274          else {
9275            if (this.contentType == null)
9276              this.contentType = new CodeType();
9277            this.contentType.setValue(value);
9278          }
9279          return this;
9280        }
9281
9282        /**
9283         * @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
9284         */
9285        public StringType getExpressionElement() { 
9286          if (this.expression == null)
9287            if (Configuration.errorOnAutoCreate())
9288              throw new Error("Attempt to auto-create SetupActionAssertComponent.expression");
9289            else if (Configuration.doAutoCreate())
9290              this.expression = new StringType(); // bb
9291          return this.expression;
9292        }
9293
9294        public boolean hasExpressionElement() { 
9295          return this.expression != null && !this.expression.isEmpty();
9296        }
9297
9298        public boolean hasExpression() { 
9299          return this.expression != null && !this.expression.isEmpty();
9300        }
9301
9302        /**
9303         * @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
9304         */
9305        public SetupActionAssertComponent setExpressionElement(StringType value) { 
9306          this.expression = value;
9307          return this;
9308        }
9309
9310        /**
9311         * @return The FHIRPath expression to be evaluated against the request or response message contents - HTTP headers and payload.
9312         */
9313        public String getExpression() { 
9314          return this.expression == null ? null : this.expression.getValue();
9315        }
9316
9317        /**
9318         * @param value The FHIRPath expression to be evaluated against the request or response message contents - HTTP headers and payload.
9319         */
9320        public SetupActionAssertComponent setExpression(String value) { 
9321          if (Utilities.noString(value))
9322            this.expression = null;
9323          else {
9324            if (this.expression == null)
9325              this.expression = new StringType();
9326            this.expression.setValue(value);
9327          }
9328          return this;
9329        }
9330
9331        /**
9332         * @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
9333         */
9334        public StringType getHeaderFieldElement() { 
9335          if (this.headerField == null)
9336            if (Configuration.errorOnAutoCreate())
9337              throw new Error("Attempt to auto-create SetupActionAssertComponent.headerField");
9338            else if (Configuration.doAutoCreate())
9339              this.headerField = new StringType(); // bb
9340          return this.headerField;
9341        }
9342
9343        public boolean hasHeaderFieldElement() { 
9344          return this.headerField != null && !this.headerField.isEmpty();
9345        }
9346
9347        public boolean hasHeaderField() { 
9348          return this.headerField != null && !this.headerField.isEmpty();
9349        }
9350
9351        /**
9352         * @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
9353         */
9354        public SetupActionAssertComponent setHeaderFieldElement(StringType value) { 
9355          this.headerField = value;
9356          return this;
9357        }
9358
9359        /**
9360         * @return The HTTP header field name e.g. 'Location'.
9361         */
9362        public String getHeaderField() { 
9363          return this.headerField == null ? null : this.headerField.getValue();
9364        }
9365
9366        /**
9367         * @param value The HTTP header field name e.g. 'Location'.
9368         */
9369        public SetupActionAssertComponent setHeaderField(String value) { 
9370          if (Utilities.noString(value))
9371            this.headerField = null;
9372          else {
9373            if (this.headerField == null)
9374              this.headerField = new StringType();
9375            this.headerField.setValue(value);
9376          }
9377          return this;
9378        }
9379
9380        /**
9381         * @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
9382         */
9383        public StringType getMinimumIdElement() { 
9384          if (this.minimumId == null)
9385            if (Configuration.errorOnAutoCreate())
9386              throw new Error("Attempt to auto-create SetupActionAssertComponent.minimumId");
9387            else if (Configuration.doAutoCreate())
9388              this.minimumId = new StringType(); // bb
9389          return this.minimumId;
9390        }
9391
9392        public boolean hasMinimumIdElement() { 
9393          return this.minimumId != null && !this.minimumId.isEmpty();
9394        }
9395
9396        public boolean hasMinimumId() { 
9397          return this.minimumId != null && !this.minimumId.isEmpty();
9398        }
9399
9400        /**
9401         * @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
9402         */
9403        public SetupActionAssertComponent setMinimumIdElement(StringType value) { 
9404          this.minimumId = value;
9405          return this;
9406        }
9407
9408        /**
9409         * @return The ID of a fixture.  Asserts that the response contains at a minimum the fixture specified by minimumId.
9410         */
9411        public String getMinimumId() { 
9412          return this.minimumId == null ? null : this.minimumId.getValue();
9413        }
9414
9415        /**
9416         * @param value The ID of a fixture.  Asserts that the response contains at a minimum the fixture specified by minimumId.
9417         */
9418        public SetupActionAssertComponent setMinimumId(String value) { 
9419          if (Utilities.noString(value))
9420            this.minimumId = null;
9421          else {
9422            if (this.minimumId == null)
9423              this.minimumId = new StringType();
9424            this.minimumId.setValue(value);
9425          }
9426          return this;
9427        }
9428
9429        /**
9430         * @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
9431         */
9432        public BooleanType getNavigationLinksElement() { 
9433          if (this.navigationLinks == null)
9434            if (Configuration.errorOnAutoCreate())
9435              throw new Error("Attempt to auto-create SetupActionAssertComponent.navigationLinks");
9436            else if (Configuration.doAutoCreate())
9437              this.navigationLinks = new BooleanType(); // bb
9438          return this.navigationLinks;
9439        }
9440
9441        public boolean hasNavigationLinksElement() { 
9442          return this.navigationLinks != null && !this.navigationLinks.isEmpty();
9443        }
9444
9445        public boolean hasNavigationLinks() { 
9446          return this.navigationLinks != null && !this.navigationLinks.isEmpty();
9447        }
9448
9449        /**
9450         * @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
9451         */
9452        public SetupActionAssertComponent setNavigationLinksElement(BooleanType value) { 
9453          this.navigationLinks = value;
9454          return this;
9455        }
9456
9457        /**
9458         * @return Whether or not the test execution performs validation on the bundle navigation links.
9459         */
9460        public boolean getNavigationLinks() { 
9461          return this.navigationLinks == null || this.navigationLinks.isEmpty() ? false : this.navigationLinks.getValue();
9462        }
9463
9464        /**
9465         * @param value Whether or not the test execution performs validation on the bundle navigation links.
9466         */
9467        public SetupActionAssertComponent setNavigationLinks(boolean value) { 
9468            if (this.navigationLinks == null)
9469              this.navigationLinks = new BooleanType();
9470            this.navigationLinks.setValue(value);
9471          return this;
9472        }
9473
9474        /**
9475         * @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
9476         */
9477        public Enumeration<AssertionOperatorType> getOperatorElement() { 
9478          if (this.operator == null)
9479            if (Configuration.errorOnAutoCreate())
9480              throw new Error("Attempt to auto-create SetupActionAssertComponent.operator");
9481            else if (Configuration.doAutoCreate())
9482              this.operator = new Enumeration<AssertionOperatorType>(new AssertionOperatorTypeEnumFactory()); // bb
9483          return this.operator;
9484        }
9485
9486        public boolean hasOperatorElement() { 
9487          return this.operator != null && !this.operator.isEmpty();
9488        }
9489
9490        public boolean hasOperator() { 
9491          return this.operator != null && !this.operator.isEmpty();
9492        }
9493
9494        /**
9495         * @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
9496         */
9497        public SetupActionAssertComponent setOperatorElement(Enumeration<AssertionOperatorType> value) { 
9498          this.operator = value;
9499          return this;
9500        }
9501
9502        /**
9503         * @return The operator type defines the conditional behavior of the assert. If not defined, the default is equals.
9504         */
9505        public AssertionOperatorType getOperator() { 
9506          return this.operator == null ? null : this.operator.getValue();
9507        }
9508
9509        /**
9510         * @param value The operator type defines the conditional behavior of the assert. If not defined, the default is equals.
9511         */
9512        public SetupActionAssertComponent setOperator(AssertionOperatorType value) { 
9513          if (value == null)
9514            this.operator = null;
9515          else {
9516            if (this.operator == null)
9517              this.operator = new Enumeration<AssertionOperatorType>(new AssertionOperatorTypeEnumFactory());
9518            this.operator.setValue(value);
9519          }
9520          return this;
9521        }
9522
9523        /**
9524         * @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
9525         */
9526        public StringType getPathElement() { 
9527          if (this.path == null)
9528            if (Configuration.errorOnAutoCreate())
9529              throw new Error("Attempt to auto-create SetupActionAssertComponent.path");
9530            else if (Configuration.doAutoCreate())
9531              this.path = new StringType(); // bb
9532          return this.path;
9533        }
9534
9535        public boolean hasPathElement() { 
9536          return this.path != null && !this.path.isEmpty();
9537        }
9538
9539        public boolean hasPath() { 
9540          return this.path != null && !this.path.isEmpty();
9541        }
9542
9543        /**
9544         * @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
9545         */
9546        public SetupActionAssertComponent setPathElement(StringType value) { 
9547          this.path = value;
9548          return this;
9549        }
9550
9551        /**
9552         * @return The XPath or JSONPath expression to be evaluated against the fixture representing the response received from server.
9553         */
9554        public String getPath() { 
9555          return this.path == null ? null : this.path.getValue();
9556        }
9557
9558        /**
9559         * @param value The XPath or JSONPath expression to be evaluated against the fixture representing the response received from server.
9560         */
9561        public SetupActionAssertComponent setPath(String value) { 
9562          if (Utilities.noString(value))
9563            this.path = null;
9564          else {
9565            if (this.path == null)
9566              this.path = new StringType();
9567            this.path.setValue(value);
9568          }
9569          return this;
9570        }
9571
9572        /**
9573         * @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
9574         */
9575        public Enumeration<TestScriptRequestMethodCode> getRequestMethodElement() { 
9576          if (this.requestMethod == null)
9577            if (Configuration.errorOnAutoCreate())
9578              throw new Error("Attempt to auto-create SetupActionAssertComponent.requestMethod");
9579            else if (Configuration.doAutoCreate())
9580              this.requestMethod = new Enumeration<TestScriptRequestMethodCode>(new TestScriptRequestMethodCodeEnumFactory()); // bb
9581          return this.requestMethod;
9582        }
9583
9584        public boolean hasRequestMethodElement() { 
9585          return this.requestMethod != null && !this.requestMethod.isEmpty();
9586        }
9587
9588        public boolean hasRequestMethod() { 
9589          return this.requestMethod != null && !this.requestMethod.isEmpty();
9590        }
9591
9592        /**
9593         * @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
9594         */
9595        public SetupActionAssertComponent setRequestMethodElement(Enumeration<TestScriptRequestMethodCode> value) { 
9596          this.requestMethod = value;
9597          return this;
9598        }
9599
9600        /**
9601         * @return The request method or HTTP operation code to compare against that used by the client system under test.
9602         */
9603        public TestScriptRequestMethodCode getRequestMethod() { 
9604          return this.requestMethod == null ? null : this.requestMethod.getValue();
9605        }
9606
9607        /**
9608         * @param value The request method or HTTP operation code to compare against that used by the client system under test.
9609         */
9610        public SetupActionAssertComponent setRequestMethod(TestScriptRequestMethodCode value) { 
9611          if (value == null)
9612            this.requestMethod = null;
9613          else {
9614            if (this.requestMethod == null)
9615              this.requestMethod = new Enumeration<TestScriptRequestMethodCode>(new TestScriptRequestMethodCodeEnumFactory());
9616            this.requestMethod.setValue(value);
9617          }
9618          return this;
9619        }
9620
9621        /**
9622         * @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
9623         */
9624        public StringType getRequestURLElement() { 
9625          if (this.requestURL == null)
9626            if (Configuration.errorOnAutoCreate())
9627              throw new Error("Attempt to auto-create SetupActionAssertComponent.requestURL");
9628            else if (Configuration.doAutoCreate())
9629              this.requestURL = new StringType(); // bb
9630          return this.requestURL;
9631        }
9632
9633        public boolean hasRequestURLElement() { 
9634          return this.requestURL != null && !this.requestURL.isEmpty();
9635        }
9636
9637        public boolean hasRequestURL() { 
9638          return this.requestURL != null && !this.requestURL.isEmpty();
9639        }
9640
9641        /**
9642         * @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
9643         */
9644        public SetupActionAssertComponent setRequestURLElement(StringType value) { 
9645          this.requestURL = value;
9646          return this;
9647        }
9648
9649        /**
9650         * @return The value to use in a comparison against the request URL path string.
9651         */
9652        public String getRequestURL() { 
9653          return this.requestURL == null ? null : this.requestURL.getValue();
9654        }
9655
9656        /**
9657         * @param value The value to use in a comparison against the request URL path string.
9658         */
9659        public SetupActionAssertComponent setRequestURL(String value) { 
9660          if (Utilities.noString(value))
9661            this.requestURL = null;
9662          else {
9663            if (this.requestURL == null)
9664              this.requestURL = new StringType();
9665            this.requestURL.setValue(value);
9666          }
9667          return this;
9668        }
9669
9670        /**
9671         * @return {@link #resource} (The type of the resource.  See http://build.fhir.org/resourcelist.html.). This is the underlying object with id, value and extensions. The accessor "getResource" gives direct access to the value
9672         */
9673        public Enumeration<FHIRDefinedType> getResourceElement() { 
9674          if (this.resource == null)
9675            if (Configuration.errorOnAutoCreate())
9676              throw new Error("Attempt to auto-create SetupActionAssertComponent.resource");
9677            else if (Configuration.doAutoCreate())
9678              this.resource = new Enumeration<FHIRDefinedType>(new FHIRDefinedTypeEnumFactory()); // bb
9679          return this.resource;
9680        }
9681
9682        public boolean hasResourceElement() { 
9683          return this.resource != null && !this.resource.isEmpty();
9684        }
9685
9686        public boolean hasResource() { 
9687          return this.resource != null && !this.resource.isEmpty();
9688        }
9689
9690        /**
9691         * @param value {@link #resource} (The type of the resource.  See http://build.fhir.org/resourcelist.html.). This is the underlying object with id, value and extensions. The accessor "getResource" gives direct access to the value
9692         */
9693        public SetupActionAssertComponent setResourceElement(Enumeration<FHIRDefinedType> value) { 
9694          this.resource = value;
9695          return this;
9696        }
9697
9698        /**
9699         * @return The type of the resource.  See http://build.fhir.org/resourcelist.html.
9700         */
9701        public FHIRDefinedType getResource() { 
9702          return this.resource == null ? null : this.resource.getValue();
9703        }
9704
9705        /**
9706         * @param value The type of the resource.  See http://build.fhir.org/resourcelist.html.
9707         */
9708        public SetupActionAssertComponent setResource(FHIRDefinedType value) { 
9709          if (value == null)
9710            this.resource = null;
9711          else {
9712            if (this.resource == null)
9713              this.resource = new Enumeration<FHIRDefinedType>(new FHIRDefinedTypeEnumFactory());
9714            this.resource.setValue(value);
9715          }
9716          return this;
9717        }
9718
9719        /**
9720         * @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
9721         */
9722        public Enumeration<AssertionResponseTypes> getResponseElement() { 
9723          if (this.response == null)
9724            if (Configuration.errorOnAutoCreate())
9725              throw new Error("Attempt to auto-create SetupActionAssertComponent.response");
9726            else if (Configuration.doAutoCreate())
9727              this.response = new Enumeration<AssertionResponseTypes>(new AssertionResponseTypesEnumFactory()); // bb
9728          return this.response;
9729        }
9730
9731        public boolean hasResponseElement() { 
9732          return this.response != null && !this.response.isEmpty();
9733        }
9734
9735        public boolean hasResponse() { 
9736          return this.response != null && !this.response.isEmpty();
9737        }
9738
9739        /**
9740         * @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
9741         */
9742        public SetupActionAssertComponent setResponseElement(Enumeration<AssertionResponseTypes> value) { 
9743          this.response = value;
9744          return this;
9745        }
9746
9747        /**
9748         * @return okay | created | noContent | notModified | bad | forbidden | notFound | methodNotAllowed | conflict | gone | preconditionFailed | unprocessable.
9749         */
9750        public AssertionResponseTypes getResponse() { 
9751          return this.response == null ? null : this.response.getValue();
9752        }
9753
9754        /**
9755         * @param value okay | created | noContent | notModified | bad | forbidden | notFound | methodNotAllowed | conflict | gone | preconditionFailed | unprocessable.
9756         */
9757        public SetupActionAssertComponent setResponse(AssertionResponseTypes value) { 
9758          if (value == null)
9759            this.response = null;
9760          else {
9761            if (this.response == null)
9762              this.response = new Enumeration<AssertionResponseTypes>(new AssertionResponseTypesEnumFactory());
9763            this.response.setValue(value);
9764          }
9765          return this;
9766        }
9767
9768        /**
9769         * @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
9770         */
9771        public StringType getResponseCodeElement() { 
9772          if (this.responseCode == null)
9773            if (Configuration.errorOnAutoCreate())
9774              throw new Error("Attempt to auto-create SetupActionAssertComponent.responseCode");
9775            else if (Configuration.doAutoCreate())
9776              this.responseCode = new StringType(); // bb
9777          return this.responseCode;
9778        }
9779
9780        public boolean hasResponseCodeElement() { 
9781          return this.responseCode != null && !this.responseCode.isEmpty();
9782        }
9783
9784        public boolean hasResponseCode() { 
9785          return this.responseCode != null && !this.responseCode.isEmpty();
9786        }
9787
9788        /**
9789         * @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
9790         */
9791        public SetupActionAssertComponent setResponseCodeElement(StringType value) { 
9792          this.responseCode = value;
9793          return this;
9794        }
9795
9796        /**
9797         * @return The value of the HTTP response code to be tested.
9798         */
9799        public String getResponseCode() { 
9800          return this.responseCode == null ? null : this.responseCode.getValue();
9801        }
9802
9803        /**
9804         * @param value The value of the HTTP response code to be tested.
9805         */
9806        public SetupActionAssertComponent setResponseCode(String value) { 
9807          if (Utilities.noString(value))
9808            this.responseCode = null;
9809          else {
9810            if (this.responseCode == null)
9811              this.responseCode = new StringType();
9812            this.responseCode.setValue(value);
9813          }
9814          return this;
9815        }
9816
9817        /**
9818         * @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
9819         */
9820        public IdType getSourceIdElement() { 
9821          if (this.sourceId == null)
9822            if (Configuration.errorOnAutoCreate())
9823              throw new Error("Attempt to auto-create SetupActionAssertComponent.sourceId");
9824            else if (Configuration.doAutoCreate())
9825              this.sourceId = new IdType(); // bb
9826          return this.sourceId;
9827        }
9828
9829        public boolean hasSourceIdElement() { 
9830          return this.sourceId != null && !this.sourceId.isEmpty();
9831        }
9832
9833        public boolean hasSourceId() { 
9834          return this.sourceId != null && !this.sourceId.isEmpty();
9835        }
9836
9837        /**
9838         * @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
9839         */
9840        public SetupActionAssertComponent setSourceIdElement(IdType value) { 
9841          this.sourceId = value;
9842          return this;
9843        }
9844
9845        /**
9846         * @return Fixture to evaluate the XPath/JSONPath expression or the headerField  against.
9847         */
9848        public String getSourceId() { 
9849          return this.sourceId == null ? null : this.sourceId.getValue();
9850        }
9851
9852        /**
9853         * @param value Fixture to evaluate the XPath/JSONPath expression or the headerField  against.
9854         */
9855        public SetupActionAssertComponent setSourceId(String value) { 
9856          if (Utilities.noString(value))
9857            this.sourceId = null;
9858          else {
9859            if (this.sourceId == null)
9860              this.sourceId = new IdType();
9861            this.sourceId.setValue(value);
9862          }
9863          return this;
9864        }
9865
9866        /**
9867         * @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
9868         */
9869        public IdType getValidateProfileIdElement() { 
9870          if (this.validateProfileId == null)
9871            if (Configuration.errorOnAutoCreate())
9872              throw new Error("Attempt to auto-create SetupActionAssertComponent.validateProfileId");
9873            else if (Configuration.doAutoCreate())
9874              this.validateProfileId = new IdType(); // bb
9875          return this.validateProfileId;
9876        }
9877
9878        public boolean hasValidateProfileIdElement() { 
9879          return this.validateProfileId != null && !this.validateProfileId.isEmpty();
9880        }
9881
9882        public boolean hasValidateProfileId() { 
9883          return this.validateProfileId != null && !this.validateProfileId.isEmpty();
9884        }
9885
9886        /**
9887         * @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
9888         */
9889        public SetupActionAssertComponent setValidateProfileIdElement(IdType value) { 
9890          this.validateProfileId = value;
9891          return this;
9892        }
9893
9894        /**
9895         * @return The ID of the Profile to validate against.
9896         */
9897        public String getValidateProfileId() { 
9898          return this.validateProfileId == null ? null : this.validateProfileId.getValue();
9899        }
9900
9901        /**
9902         * @param value The ID of the Profile to validate against.
9903         */
9904        public SetupActionAssertComponent setValidateProfileId(String value) { 
9905          if (Utilities.noString(value))
9906            this.validateProfileId = null;
9907          else {
9908            if (this.validateProfileId == null)
9909              this.validateProfileId = new IdType();
9910            this.validateProfileId.setValue(value);
9911          }
9912          return this;
9913        }
9914
9915        /**
9916         * @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
9917         */
9918        public StringType getValueElement() { 
9919          if (this.value == null)
9920            if (Configuration.errorOnAutoCreate())
9921              throw new Error("Attempt to auto-create SetupActionAssertComponent.value");
9922            else if (Configuration.doAutoCreate())
9923              this.value = new StringType(); // bb
9924          return this.value;
9925        }
9926
9927        public boolean hasValueElement() { 
9928          return this.value != null && !this.value.isEmpty();
9929        }
9930
9931        public boolean hasValue() { 
9932          return this.value != null && !this.value.isEmpty();
9933        }
9934
9935        /**
9936         * @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
9937         */
9938        public SetupActionAssertComponent setValueElement(StringType value) { 
9939          this.value = value;
9940          return this;
9941        }
9942
9943        /**
9944         * @return The value to compare to.
9945         */
9946        public String getValue() { 
9947          return this.value == null ? null : this.value.getValue();
9948        }
9949
9950        /**
9951         * @param value The value to compare to.
9952         */
9953        public SetupActionAssertComponent setValue(String value) { 
9954          if (Utilities.noString(value))
9955            this.value = null;
9956          else {
9957            if (this.value == null)
9958              this.value = new StringType();
9959            this.value.setValue(value);
9960          }
9961          return this;
9962        }
9963
9964        /**
9965         * @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
9966         */
9967        public BooleanType getWarningOnlyElement() { 
9968          if (this.warningOnly == null)
9969            if (Configuration.errorOnAutoCreate())
9970              throw new Error("Attempt to auto-create SetupActionAssertComponent.warningOnly");
9971            else if (Configuration.doAutoCreate())
9972              this.warningOnly = new BooleanType(); // bb
9973          return this.warningOnly;
9974        }
9975
9976        public boolean hasWarningOnlyElement() { 
9977          return this.warningOnly != null && !this.warningOnly.isEmpty();
9978        }
9979
9980        public boolean hasWarningOnly() { 
9981          return this.warningOnly != null && !this.warningOnly.isEmpty();
9982        }
9983
9984        /**
9985         * @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
9986         */
9987        public SetupActionAssertComponent setWarningOnlyElement(BooleanType value) { 
9988          this.warningOnly = value;
9989          return this;
9990        }
9991
9992        /**
9993         * @return Whether or not the test execution will produce a warning only on error for this assert.
9994         */
9995        public boolean getWarningOnly() { 
9996          return this.warningOnly == null || this.warningOnly.isEmpty() ? false : this.warningOnly.getValue();
9997        }
9998
9999        /**
10000         * @param value Whether or not the test execution will produce a warning only on error for this assert.
10001         */
10002        public SetupActionAssertComponent setWarningOnly(boolean value) { 
10003            if (this.warningOnly == null)
10004              this.warningOnly = new BooleanType();
10005            this.warningOnly.setValue(value);
10006          return this;
10007        }
10008
10009        protected void listChildren(List<Property> children) {
10010          super.listChildren(children);
10011          children.add(new Property("label", "string", "The label would be used for tracking/logging purposes by test engines.", 0, 1, label));
10012          children.add(new Property("description", "string", "The description would be used by test engines for tracking and reporting purposes.", 0, 1, description));
10013          children.add(new Property("direction", "code", "The direction to use for the assertion.", 0, 1, direction));
10014          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));
10015          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));
10016          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));
10017          children.add(new Property("contentType", "code", "The mime-type contents to compare against the request or response message 'Content-Type' header.", 0, 1, contentType));
10018          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));
10019          children.add(new Property("headerField", "string", "The HTTP header field name e.g. 'Location'.", 0, 1, headerField));
10020          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));
10021          children.add(new Property("navigationLinks", "boolean", "Whether or not the test execution performs validation on the bundle navigation links.", 0, 1, navigationLinks));
10022          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));
10023          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));
10024          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));
10025          children.add(new Property("requestURL", "string", "The value to use in a comparison against the request URL path string.", 0, 1, requestURL));
10026          children.add(new Property("resource", "code", "The type of the resource.  See http://build.fhir.org/resourcelist.html.", 0, 1, resource));
10027          children.add(new Property("response", "code", "okay | created | noContent | notModified | bad | forbidden | notFound | methodNotAllowed | conflict | gone | preconditionFailed | unprocessable.", 0, 1, response));
10028          children.add(new Property("responseCode", "string", "The value of the HTTP response code to be tested.", 0, 1, responseCode));
10029          children.add(new Property("sourceId", "id", "Fixture to evaluate the XPath/JSONPath expression or the headerField  against.", 0, 1, sourceId));
10030          children.add(new Property("validateProfileId", "id", "The ID of the Profile to validate against.", 0, 1, validateProfileId));
10031          children.add(new Property("value", "string", "The value to compare to.", 0, 1, value));
10032          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));
10033        }
10034
10035        @Override
10036        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
10037          switch (_hash) {
10038          case 102727412: /*label*/  return new Property("label", "string", "The label would be used for tracking/logging purposes by test engines.", 0, 1, label);
10039          case -1724546052: /*description*/  return new Property("description", "string", "The description would be used by test engines for tracking and reporting purposes.", 0, 1, description);
10040          case -962590849: /*direction*/  return new Property("direction", "code", "The direction to use for the assertion.", 0, 1, direction);
10041          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);
10042          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);
10043          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);
10044          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);
10045          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);
10046          case 1160732269: /*headerField*/  return new Property("headerField", "string", "The HTTP header field name e.g. 'Location'.", 0, 1, headerField);
10047          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);
10048          case 1001488901: /*navigationLinks*/  return new Property("navigationLinks", "boolean", "Whether or not the test execution performs validation on the bundle navigation links.", 0, 1, navigationLinks);
10049          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);
10050          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);
10051          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);
10052          case 37099616: /*requestURL*/  return new Property("requestURL", "string", "The value to use in a comparison against the request URL path string.", 0, 1, requestURL);
10053          case -341064690: /*resource*/  return new Property("resource", "code", "The type of the resource.  See http://build.fhir.org/resourcelist.html.", 0, 1, resource);
10054          case -340323263: /*response*/  return new Property("response", "code", "okay | created | noContent | notModified | bad | forbidden | notFound | methodNotAllowed | conflict | gone | preconditionFailed | unprocessable.", 0, 1, response);
10055          case 1438723534: /*responseCode*/  return new Property("responseCode", "string", "The value of the HTTP response code to be tested.", 0, 1, responseCode);
10056          case 1746327190: /*sourceId*/  return new Property("sourceId", "id", "Fixture to evaluate the XPath/JSONPath expression or the headerField  against.", 0, 1, sourceId);
10057          case 1555541038: /*validateProfileId*/  return new Property("validateProfileId", "id", "The ID of the Profile to validate against.", 0, 1, validateProfileId);
10058          case 111972721: /*value*/  return new Property("value", "string", "The value to compare to.", 0, 1, value);
10059          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);
10060          default: return super.getNamedProperty(_hash, _name, _checkValid);
10061          }
10062
10063        }
10064
10065      @Override
10066      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
10067        switch (hash) {
10068        case 102727412: /*label*/ return this.label == null ? new Base[0] : new Base[] {this.label}; // StringType
10069        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // StringType
10070        case -962590849: /*direction*/ return this.direction == null ? new Base[0] : new Base[] {this.direction}; // Enumeration<AssertionDirectionType>
10071        case 2081856758: /*compareToSourceId*/ return this.compareToSourceId == null ? new Base[0] : new Base[] {this.compareToSourceId}; // StringType
10072        case -1415702669: /*compareToSourceExpression*/ return this.compareToSourceExpression == null ? new Base[0] : new Base[] {this.compareToSourceExpression}; // StringType
10073        case -790206144: /*compareToSourcePath*/ return this.compareToSourcePath == null ? new Base[0] : new Base[] {this.compareToSourcePath}; // StringType
10074        case -389131437: /*contentType*/ return this.contentType == null ? new Base[0] : new Base[] {this.contentType}; // CodeType
10075        case -1795452264: /*expression*/ return this.expression == null ? new Base[0] : new Base[] {this.expression}; // StringType
10076        case 1160732269: /*headerField*/ return this.headerField == null ? new Base[0] : new Base[] {this.headerField}; // StringType
10077        case 818925001: /*minimumId*/ return this.minimumId == null ? new Base[0] : new Base[] {this.minimumId}; // StringType
10078        case 1001488901: /*navigationLinks*/ return this.navigationLinks == null ? new Base[0] : new Base[] {this.navigationLinks}; // BooleanType
10079        case -500553564: /*operator*/ return this.operator == null ? new Base[0] : new Base[] {this.operator}; // Enumeration<AssertionOperatorType>
10080        case 3433509: /*path*/ return this.path == null ? new Base[0] : new Base[] {this.path}; // StringType
10081        case 1217874000: /*requestMethod*/ return this.requestMethod == null ? new Base[0] : new Base[] {this.requestMethod}; // Enumeration<TestScriptRequestMethodCode>
10082        case 37099616: /*requestURL*/ return this.requestURL == null ? new Base[0] : new Base[] {this.requestURL}; // StringType
10083        case -341064690: /*resource*/ return this.resource == null ? new Base[0] : new Base[] {this.resource}; // Enumeration<FHIRDefinedType>
10084        case -340323263: /*response*/ return this.response == null ? new Base[0] : new Base[] {this.response}; // Enumeration<AssertionResponseTypes>
10085        case 1438723534: /*responseCode*/ return this.responseCode == null ? new Base[0] : new Base[] {this.responseCode}; // StringType
10086        case 1746327190: /*sourceId*/ return this.sourceId == null ? new Base[0] : new Base[] {this.sourceId}; // IdType
10087        case 1555541038: /*validateProfileId*/ return this.validateProfileId == null ? new Base[0] : new Base[] {this.validateProfileId}; // IdType
10088        case 111972721: /*value*/ return this.value == null ? new Base[0] : new Base[] {this.value}; // StringType
10089        case -481159832: /*warningOnly*/ return this.warningOnly == null ? new Base[0] : new Base[] {this.warningOnly}; // BooleanType
10090        default: return super.getProperty(hash, name, checkValid);
10091        }
10092
10093      }
10094
10095      @Override
10096      public Base setProperty(int hash, String name, Base value) throws FHIRException {
10097        switch (hash) {
10098        case 102727412: // label
10099          this.label = TypeConvertor.castToString(value); // StringType
10100          return value;
10101        case -1724546052: // description
10102          this.description = TypeConvertor.castToString(value); // StringType
10103          return value;
10104        case -962590849: // direction
10105          value = new AssertionDirectionTypeEnumFactory().fromType(TypeConvertor.castToCode(value));
10106          this.direction = (Enumeration) value; // Enumeration<AssertionDirectionType>
10107          return value;
10108        case 2081856758: // compareToSourceId
10109          this.compareToSourceId = TypeConvertor.castToString(value); // StringType
10110          return value;
10111        case -1415702669: // compareToSourceExpression
10112          this.compareToSourceExpression = TypeConvertor.castToString(value); // StringType
10113          return value;
10114        case -790206144: // compareToSourcePath
10115          this.compareToSourcePath = TypeConvertor.castToString(value); // StringType
10116          return value;
10117        case -389131437: // contentType
10118          this.contentType = TypeConvertor.castToCode(value); // CodeType
10119          return value;
10120        case -1795452264: // expression
10121          this.expression = TypeConvertor.castToString(value); // StringType
10122          return value;
10123        case 1160732269: // headerField
10124          this.headerField = TypeConvertor.castToString(value); // StringType
10125          return value;
10126        case 818925001: // minimumId
10127          this.minimumId = TypeConvertor.castToString(value); // StringType
10128          return value;
10129        case 1001488901: // navigationLinks
10130          this.navigationLinks = TypeConvertor.castToBoolean(value); // BooleanType
10131          return value;
10132        case -500553564: // operator
10133          value = new AssertionOperatorTypeEnumFactory().fromType(TypeConvertor.castToCode(value));
10134          this.operator = (Enumeration) value; // Enumeration<AssertionOperatorType>
10135          return value;
10136        case 3433509: // path
10137          this.path = TypeConvertor.castToString(value); // StringType
10138          return value;
10139        case 1217874000: // requestMethod
10140          value = new TestScriptRequestMethodCodeEnumFactory().fromType(TypeConvertor.castToCode(value));
10141          this.requestMethod = (Enumeration) value; // Enumeration<TestScriptRequestMethodCode>
10142          return value;
10143        case 37099616: // requestURL
10144          this.requestURL = TypeConvertor.castToString(value); // StringType
10145          return value;
10146        case -341064690: // resource
10147          value = new FHIRDefinedTypeEnumFactory().fromType(TypeConvertor.castToCode(value));
10148          this.resource = (Enumeration) value; // Enumeration<FHIRDefinedType>
10149          return value;
10150        case -340323263: // response
10151          value = new AssertionResponseTypesEnumFactory().fromType(TypeConvertor.castToCode(value));
10152          this.response = (Enumeration) value; // Enumeration<AssertionResponseTypes>
10153          return value;
10154        case 1438723534: // responseCode
10155          this.responseCode = TypeConvertor.castToString(value); // StringType
10156          return value;
10157        case 1746327190: // sourceId
10158          this.sourceId = TypeConvertor.castToId(value); // IdType
10159          return value;
10160        case 1555541038: // validateProfileId
10161          this.validateProfileId = TypeConvertor.castToId(value); // IdType
10162          return value;
10163        case 111972721: // value
10164          this.value = TypeConvertor.castToString(value); // StringType
10165          return value;
10166        case -481159832: // warningOnly
10167          this.warningOnly = TypeConvertor.castToBoolean(value); // BooleanType
10168          return value;
10169        default: return super.setProperty(hash, name, value);
10170        }
10171
10172      }
10173
10174      @Override
10175      public Base setProperty(String name, Base value) throws FHIRException {
10176        if (name.equals("label")) {
10177          this.label = TypeConvertor.castToString(value); // StringType
10178        } else if (name.equals("description")) {
10179          this.description = TypeConvertor.castToString(value); // StringType
10180        } else if (name.equals("direction")) {
10181          value = new AssertionDirectionTypeEnumFactory().fromType(TypeConvertor.castToCode(value));
10182          this.direction = (Enumeration) value; // Enumeration<AssertionDirectionType>
10183        } else if (name.equals("compareToSourceId")) {
10184          this.compareToSourceId = TypeConvertor.castToString(value); // StringType
10185        } else if (name.equals("compareToSourceExpression")) {
10186          this.compareToSourceExpression = TypeConvertor.castToString(value); // StringType
10187        } else if (name.equals("compareToSourcePath")) {
10188          this.compareToSourcePath = TypeConvertor.castToString(value); // StringType
10189        } else if (name.equals("contentType")) {
10190          this.contentType = TypeConvertor.castToCode(value); // CodeType
10191        } else if (name.equals("expression")) {
10192          this.expression = TypeConvertor.castToString(value); // StringType
10193        } else if (name.equals("headerField")) {
10194          this.headerField = TypeConvertor.castToString(value); // StringType
10195        } else if (name.equals("minimumId")) {
10196          this.minimumId = TypeConvertor.castToString(value); // StringType
10197        } else if (name.equals("navigationLinks")) {
10198          this.navigationLinks = TypeConvertor.castToBoolean(value); // BooleanType
10199        } else if (name.equals("operator")) {
10200          value = new AssertionOperatorTypeEnumFactory().fromType(TypeConvertor.castToCode(value));
10201          this.operator = (Enumeration) value; // Enumeration<AssertionOperatorType>
10202        } else if (name.equals("path")) {
10203          this.path = TypeConvertor.castToString(value); // StringType
10204        } else if (name.equals("requestMethod")) {
10205          value = new TestScriptRequestMethodCodeEnumFactory().fromType(TypeConvertor.castToCode(value));
10206          this.requestMethod = (Enumeration) value; // Enumeration<TestScriptRequestMethodCode>
10207        } else if (name.equals("requestURL")) {
10208          this.requestURL = TypeConvertor.castToString(value); // StringType
10209        } else if (name.equals("resource")) {
10210          value = new FHIRDefinedTypeEnumFactory().fromType(TypeConvertor.castToCode(value));
10211          this.resource = (Enumeration) value; // Enumeration<FHIRDefinedType>
10212        } else if (name.equals("response")) {
10213          value = new AssertionResponseTypesEnumFactory().fromType(TypeConvertor.castToCode(value));
10214          this.response = (Enumeration) value; // Enumeration<AssertionResponseTypes>
10215        } else if (name.equals("responseCode")) {
10216          this.responseCode = TypeConvertor.castToString(value); // StringType
10217        } else if (name.equals("sourceId")) {
10218          this.sourceId = TypeConvertor.castToId(value); // IdType
10219        } else if (name.equals("validateProfileId")) {
10220          this.validateProfileId = TypeConvertor.castToId(value); // IdType
10221        } else if (name.equals("value")) {
10222          this.value = TypeConvertor.castToString(value); // StringType
10223        } else if (name.equals("warningOnly")) {
10224          this.warningOnly = TypeConvertor.castToBoolean(value); // BooleanType
10225        } else
10226          return super.setProperty(name, value);
10227        return value;
10228      }
10229
10230      @Override
10231      public Base makeProperty(int hash, String name) throws FHIRException {
10232        switch (hash) {
10233        case 102727412:  return getLabelElement();
10234        case -1724546052:  return getDescriptionElement();
10235        case -962590849:  return getDirectionElement();
10236        case 2081856758:  return getCompareToSourceIdElement();
10237        case -1415702669:  return getCompareToSourceExpressionElement();
10238        case -790206144:  return getCompareToSourcePathElement();
10239        case -389131437:  return getContentTypeElement();
10240        case -1795452264:  return getExpressionElement();
10241        case 1160732269:  return getHeaderFieldElement();
10242        case 818925001:  return getMinimumIdElement();
10243        case 1001488901:  return getNavigationLinksElement();
10244        case -500553564:  return getOperatorElement();
10245        case 3433509:  return getPathElement();
10246        case 1217874000:  return getRequestMethodElement();
10247        case 37099616:  return getRequestURLElement();
10248        case -341064690:  return getResourceElement();
10249        case -340323263:  return getResponseElement();
10250        case 1438723534:  return getResponseCodeElement();
10251        case 1746327190:  return getSourceIdElement();
10252        case 1555541038:  return getValidateProfileIdElement();
10253        case 111972721:  return getValueElement();
10254        case -481159832:  return getWarningOnlyElement();
10255        default: return super.makeProperty(hash, name);
10256        }
10257
10258      }
10259
10260      @Override
10261      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
10262        switch (hash) {
10263        case 102727412: /*label*/ return new String[] {"string"};
10264        case -1724546052: /*description*/ return new String[] {"string"};
10265        case -962590849: /*direction*/ return new String[] {"code"};
10266        case 2081856758: /*compareToSourceId*/ return new String[] {"string"};
10267        case -1415702669: /*compareToSourceExpression*/ return new String[] {"string"};
10268        case -790206144: /*compareToSourcePath*/ return new String[] {"string"};
10269        case -389131437: /*contentType*/ return new String[] {"code"};
10270        case -1795452264: /*expression*/ return new String[] {"string"};
10271        case 1160732269: /*headerField*/ return new String[] {"string"};
10272        case 818925001: /*minimumId*/ return new String[] {"string"};
10273        case 1001488901: /*navigationLinks*/ return new String[] {"boolean"};
10274        case -500553564: /*operator*/ return new String[] {"code"};
10275        case 3433509: /*path*/ return new String[] {"string"};
10276        case 1217874000: /*requestMethod*/ return new String[] {"code"};
10277        case 37099616: /*requestURL*/ return new String[] {"string"};
10278        case -341064690: /*resource*/ return new String[] {"code"};
10279        case -340323263: /*response*/ return new String[] {"code"};
10280        case 1438723534: /*responseCode*/ return new String[] {"string"};
10281        case 1746327190: /*sourceId*/ return new String[] {"id"};
10282        case 1555541038: /*validateProfileId*/ return new String[] {"id"};
10283        case 111972721: /*value*/ return new String[] {"string"};
10284        case -481159832: /*warningOnly*/ return new String[] {"boolean"};
10285        default: return super.getTypesForProperty(hash, name);
10286        }
10287
10288      }
10289
10290      @Override
10291      public Base addChild(String name) throws FHIRException {
10292        if (name.equals("label")) {
10293          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.assert.label");
10294        }
10295        else if (name.equals("description")) {
10296          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.assert.description");
10297        }
10298        else if (name.equals("direction")) {
10299          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.assert.direction");
10300        }
10301        else if (name.equals("compareToSourceId")) {
10302          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.assert.compareToSourceId");
10303        }
10304        else if (name.equals("compareToSourceExpression")) {
10305          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.assert.compareToSourceExpression");
10306        }
10307        else if (name.equals("compareToSourcePath")) {
10308          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.assert.compareToSourcePath");
10309        }
10310        else if (name.equals("contentType")) {
10311          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.assert.contentType");
10312        }
10313        else if (name.equals("expression")) {
10314          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.assert.expression");
10315        }
10316        else if (name.equals("headerField")) {
10317          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.assert.headerField");
10318        }
10319        else if (name.equals("minimumId")) {
10320          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.assert.minimumId");
10321        }
10322        else if (name.equals("navigationLinks")) {
10323          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.assert.navigationLinks");
10324        }
10325        else if (name.equals("operator")) {
10326          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.assert.operator");
10327        }
10328        else if (name.equals("path")) {
10329          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.assert.path");
10330        }
10331        else if (name.equals("requestMethod")) {
10332          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.assert.requestMethod");
10333        }
10334        else if (name.equals("requestURL")) {
10335          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.assert.requestURL");
10336        }
10337        else if (name.equals("resource")) {
10338          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.assert.resource");
10339        }
10340        else if (name.equals("response")) {
10341          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.assert.response");
10342        }
10343        else if (name.equals("responseCode")) {
10344          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.assert.responseCode");
10345        }
10346        else if (name.equals("sourceId")) {
10347          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.assert.sourceId");
10348        }
10349        else if (name.equals("validateProfileId")) {
10350          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.assert.validateProfileId");
10351        }
10352        else if (name.equals("value")) {
10353          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.assert.value");
10354        }
10355        else if (name.equals("warningOnly")) {
10356          throw new FHIRException("Cannot call addChild on a primitive type TestScript.setup.action.assert.warningOnly");
10357        }
10358        else
10359          return super.addChild(name);
10360      }
10361
10362      public SetupActionAssertComponent copy() {
10363        SetupActionAssertComponent dst = new SetupActionAssertComponent();
10364        copyValues(dst);
10365        return dst;
10366      }
10367
10368      public void copyValues(SetupActionAssertComponent dst) {
10369        super.copyValues(dst);
10370        dst.label = label == null ? null : label.copy();
10371        dst.description = description == null ? null : description.copy();
10372        dst.direction = direction == null ? null : direction.copy();
10373        dst.compareToSourceId = compareToSourceId == null ? null : compareToSourceId.copy();
10374        dst.compareToSourceExpression = compareToSourceExpression == null ? null : compareToSourceExpression.copy();
10375        dst.compareToSourcePath = compareToSourcePath == null ? null : compareToSourcePath.copy();
10376        dst.contentType = contentType == null ? null : contentType.copy();
10377        dst.expression = expression == null ? null : expression.copy();
10378        dst.headerField = headerField == null ? null : headerField.copy();
10379        dst.minimumId = minimumId == null ? null : minimumId.copy();
10380        dst.navigationLinks = navigationLinks == null ? null : navigationLinks.copy();
10381        dst.operator = operator == null ? null : operator.copy();
10382        dst.path = path == null ? null : path.copy();
10383        dst.requestMethod = requestMethod == null ? null : requestMethod.copy();
10384        dst.requestURL = requestURL == null ? null : requestURL.copy();
10385        dst.resource = resource == null ? null : resource.copy();
10386        dst.response = response == null ? null : response.copy();
10387        dst.responseCode = responseCode == null ? null : responseCode.copy();
10388        dst.sourceId = sourceId == null ? null : sourceId.copy();
10389        dst.validateProfileId = validateProfileId == null ? null : validateProfileId.copy();
10390        dst.value = value == null ? null : value.copy();
10391        dst.warningOnly = warningOnly == null ? null : warningOnly.copy();
10392      }
10393
10394      @Override
10395      public boolean equalsDeep(Base other_) {
10396        if (!super.equalsDeep(other_))
10397          return false;
10398        if (!(other_ instanceof SetupActionAssertComponent))
10399          return false;
10400        SetupActionAssertComponent o = (SetupActionAssertComponent) other_;
10401        return compareDeep(label, o.label, true) && compareDeep(description, o.description, true) && compareDeep(direction, o.direction, true)
10402           && compareDeep(compareToSourceId, o.compareToSourceId, true) && compareDeep(compareToSourceExpression, o.compareToSourceExpression, true)
10403           && compareDeep(compareToSourcePath, o.compareToSourcePath, true) && compareDeep(contentType, o.contentType, true)
10404           && compareDeep(expression, o.expression, true) && compareDeep(headerField, o.headerField, true)
10405           && compareDeep(minimumId, o.minimumId, true) && compareDeep(navigationLinks, o.navigationLinks, true)
10406           && compareDeep(operator, o.operator, true) && compareDeep(path, o.path, true) && compareDeep(requestMethod, o.requestMethod, true)
10407           && compareDeep(requestURL, o.requestURL, true) && compareDeep(resource, o.resource, true) && compareDeep(response, o.response, true)
10408           && compareDeep(responseCode, o.responseCode, true) && compareDeep(sourceId, o.sourceId, true) && compareDeep(validateProfileId, o.validateProfileId, true)
10409           && compareDeep(value, o.value, true) && compareDeep(warningOnly, o.warningOnly, true);
10410      }
10411
10412      @Override
10413      public boolean equalsShallow(Base other_) {
10414        if (!super.equalsShallow(other_))
10415          return false;
10416        if (!(other_ instanceof SetupActionAssertComponent))
10417          return false;
10418        SetupActionAssertComponent o = (SetupActionAssertComponent) other_;
10419        return compareValues(label, o.label, true) && compareValues(description, o.description, true) && compareValues(direction, o.direction, true)
10420           && compareValues(compareToSourceId, o.compareToSourceId, true) && compareValues(compareToSourceExpression, o.compareToSourceExpression, true)
10421           && compareValues(compareToSourcePath, o.compareToSourcePath, true) && compareValues(contentType, o.contentType, true)
10422           && compareValues(expression, o.expression, true) && compareValues(headerField, o.headerField, true)
10423           && compareValues(minimumId, o.minimumId, true) && compareValues(navigationLinks, o.navigationLinks, true)
10424           && compareValues(operator, o.operator, true) && compareValues(path, o.path, true) && compareValues(requestMethod, o.requestMethod, true)
10425           && compareValues(requestURL, o.requestURL, true) && compareValues(resource, o.resource, true) && compareValues(response, o.response, true)
10426           && compareValues(responseCode, o.responseCode, true) && compareValues(sourceId, o.sourceId, true) && compareValues(validateProfileId, o.validateProfileId, true)
10427           && compareValues(value, o.value, true) && compareValues(warningOnly, o.warningOnly, true);
10428      }
10429
10430      public boolean isEmpty() {
10431        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(label, description, direction
10432          , compareToSourceId, compareToSourceExpression, compareToSourcePath, contentType, expression
10433          , headerField, minimumId, navigationLinks, operator, path, requestMethod, requestURL
10434          , resource, response, responseCode, sourceId, validateProfileId, value, warningOnly
10435          );
10436      }
10437
10438  public String fhirType() {
10439    return "TestScript.setup.action.assert";
10440
10441  }
10442
10443  }
10444
10445    @Block()
10446    public static class TestScriptTestComponent extends BackboneElement implements IBaseBackboneElement {
10447        /**
10448         * The name of this test used for tracking/logging purposes by test engines.
10449         */
10450        @Child(name = "name", type = {StringType.class}, order=1, min=0, max=1, modifier=false, summary=false)
10451        @Description(shortDefinition="Tracking/logging name of this test", formalDefinition="The name of this test used for tracking/logging purposes by test engines." )
10452        protected StringType name;
10453
10454        /**
10455         * A short description of the test used by test engines for tracking and reporting purposes.
10456         */
10457        @Child(name = "description", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=false)
10458        @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." )
10459        protected StringType description;
10460
10461        /**
10462         * Action would contain either an operation or an assertion.
10463         */
10464        @Child(name = "action", type = {}, order=3, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
10465        @Description(shortDefinition="A test operation or assert to perform", formalDefinition="Action would contain either an operation or an assertion." )
10466        protected List<TestActionComponent> action;
10467
10468        private static final long serialVersionUID = -865006110L;
10469
10470    /**
10471     * Constructor
10472     */
10473      public TestScriptTestComponent() {
10474        super();
10475      }
10476
10477    /**
10478     * Constructor
10479     */
10480      public TestScriptTestComponent(TestActionComponent action) {
10481        super();
10482        this.addAction(action);
10483      }
10484
10485        /**
10486         * @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
10487         */
10488        public StringType getNameElement() { 
10489          if (this.name == null)
10490            if (Configuration.errorOnAutoCreate())
10491              throw new Error("Attempt to auto-create TestScriptTestComponent.name");
10492            else if (Configuration.doAutoCreate())
10493              this.name = new StringType(); // bb
10494          return this.name;
10495        }
10496
10497        public boolean hasNameElement() { 
10498          return this.name != null && !this.name.isEmpty();
10499        }
10500
10501        public boolean hasName() { 
10502          return this.name != null && !this.name.isEmpty();
10503        }
10504
10505        /**
10506         * @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
10507         */
10508        public TestScriptTestComponent setNameElement(StringType value) { 
10509          this.name = value;
10510          return this;
10511        }
10512
10513        /**
10514         * @return The name of this test used for tracking/logging purposes by test engines.
10515         */
10516        public String getName() { 
10517          return this.name == null ? null : this.name.getValue();
10518        }
10519
10520        /**
10521         * @param value The name of this test used for tracking/logging purposes by test engines.
10522         */
10523        public TestScriptTestComponent setName(String value) { 
10524          if (Utilities.noString(value))
10525            this.name = null;
10526          else {
10527            if (this.name == null)
10528              this.name = new StringType();
10529            this.name.setValue(value);
10530          }
10531          return this;
10532        }
10533
10534        /**
10535         * @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
10536         */
10537        public StringType getDescriptionElement() { 
10538          if (this.description == null)
10539            if (Configuration.errorOnAutoCreate())
10540              throw new Error("Attempt to auto-create TestScriptTestComponent.description");
10541            else if (Configuration.doAutoCreate())
10542              this.description = new StringType(); // bb
10543          return this.description;
10544        }
10545
10546        public boolean hasDescriptionElement() { 
10547          return this.description != null && !this.description.isEmpty();
10548        }
10549
10550        public boolean hasDescription() { 
10551          return this.description != null && !this.description.isEmpty();
10552        }
10553
10554        /**
10555         * @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
10556         */
10557        public TestScriptTestComponent setDescriptionElement(StringType value) { 
10558          this.description = value;
10559          return this;
10560        }
10561
10562        /**
10563         * @return A short description of the test used by test engines for tracking and reporting purposes.
10564         */
10565        public String getDescription() { 
10566          return this.description == null ? null : this.description.getValue();
10567        }
10568
10569        /**
10570         * @param value A short description of the test used by test engines for tracking and reporting purposes.
10571         */
10572        public TestScriptTestComponent setDescription(String value) { 
10573          if (Utilities.noString(value))
10574            this.description = null;
10575          else {
10576            if (this.description == null)
10577              this.description = new StringType();
10578            this.description.setValue(value);
10579          }
10580          return this;
10581        }
10582
10583        /**
10584         * @return {@link #action} (Action would contain either an operation or an assertion.)
10585         */
10586        public List<TestActionComponent> getAction() { 
10587          if (this.action == null)
10588            this.action = new ArrayList<TestActionComponent>();
10589          return this.action;
10590        }
10591
10592        /**
10593         * @return Returns a reference to <code>this</code> for easy method chaining
10594         */
10595        public TestScriptTestComponent setAction(List<TestActionComponent> theAction) { 
10596          this.action = theAction;
10597          return this;
10598        }
10599
10600        public boolean hasAction() { 
10601          if (this.action == null)
10602            return false;
10603          for (TestActionComponent item : this.action)
10604            if (!item.isEmpty())
10605              return true;
10606          return false;
10607        }
10608
10609        public TestActionComponent addAction() { //3
10610          TestActionComponent t = new TestActionComponent();
10611          if (this.action == null)
10612            this.action = new ArrayList<TestActionComponent>();
10613          this.action.add(t);
10614          return t;
10615        }
10616
10617        public TestScriptTestComponent addAction(TestActionComponent t) { //3
10618          if (t == null)
10619            return this;
10620          if (this.action == null)
10621            this.action = new ArrayList<TestActionComponent>();
10622          this.action.add(t);
10623          return this;
10624        }
10625
10626        /**
10627         * @return The first repetition of repeating field {@link #action}, creating it if it does not already exist {3}
10628         */
10629        public TestActionComponent getActionFirstRep() { 
10630          if (getAction().isEmpty()) {
10631            addAction();
10632          }
10633          return getAction().get(0);
10634        }
10635
10636        protected void listChildren(List<Property> children) {
10637          super.listChildren(children);
10638          children.add(new Property("name", "string", "The name of this test used for tracking/logging purposes by test engines.", 0, 1, name));
10639          children.add(new Property("description", "string", "A short description of the test used by test engines for tracking and reporting purposes.", 0, 1, description));
10640          children.add(new Property("action", "", "Action would contain either an operation or an assertion.", 0, java.lang.Integer.MAX_VALUE, action));
10641        }
10642
10643        @Override
10644        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
10645          switch (_hash) {
10646          case 3373707: /*name*/  return new Property("name", "string", "The name of this test used for tracking/logging purposes by test engines.", 0, 1, name);
10647          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);
10648          case -1422950858: /*action*/  return new Property("action", "", "Action would contain either an operation or an assertion.", 0, java.lang.Integer.MAX_VALUE, action);
10649          default: return super.getNamedProperty(_hash, _name, _checkValid);
10650          }
10651
10652        }
10653
10654      @Override
10655      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
10656        switch (hash) {
10657        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
10658        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // StringType
10659        case -1422950858: /*action*/ return this.action == null ? new Base[0] : this.action.toArray(new Base[this.action.size()]); // TestActionComponent
10660        default: return super.getProperty(hash, name, checkValid);
10661        }
10662
10663      }
10664
10665      @Override
10666      public Base setProperty(int hash, String name, Base value) throws FHIRException {
10667        switch (hash) {
10668        case 3373707: // name
10669          this.name = TypeConvertor.castToString(value); // StringType
10670          return value;
10671        case -1724546052: // description
10672          this.description = TypeConvertor.castToString(value); // StringType
10673          return value;
10674        case -1422950858: // action
10675          this.getAction().add((TestActionComponent) value); // TestActionComponent
10676          return value;
10677        default: return super.setProperty(hash, name, value);
10678        }
10679
10680      }
10681
10682      @Override
10683      public Base setProperty(String name, Base value) throws FHIRException {
10684        if (name.equals("name")) {
10685          this.name = TypeConvertor.castToString(value); // StringType
10686        } else if (name.equals("description")) {
10687          this.description = TypeConvertor.castToString(value); // StringType
10688        } else if (name.equals("action")) {
10689          this.getAction().add((TestActionComponent) value);
10690        } else
10691          return super.setProperty(name, value);
10692        return value;
10693      }
10694
10695      @Override
10696      public Base makeProperty(int hash, String name) throws FHIRException {
10697        switch (hash) {
10698        case 3373707:  return getNameElement();
10699        case -1724546052:  return getDescriptionElement();
10700        case -1422950858:  return addAction(); 
10701        default: return super.makeProperty(hash, name);
10702        }
10703
10704      }
10705
10706      @Override
10707      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
10708        switch (hash) {
10709        case 3373707: /*name*/ return new String[] {"string"};
10710        case -1724546052: /*description*/ return new String[] {"string"};
10711        case -1422950858: /*action*/ return new String[] {};
10712        default: return super.getTypesForProperty(hash, name);
10713        }
10714
10715      }
10716
10717      @Override
10718      public Base addChild(String name) throws FHIRException {
10719        if (name.equals("name")) {
10720          throw new FHIRException("Cannot call addChild on a primitive type TestScript.test.name");
10721        }
10722        else if (name.equals("description")) {
10723          throw new FHIRException("Cannot call addChild on a primitive type TestScript.test.description");
10724        }
10725        else if (name.equals("action")) {
10726          return addAction();
10727        }
10728        else
10729          return super.addChild(name);
10730      }
10731
10732      public TestScriptTestComponent copy() {
10733        TestScriptTestComponent dst = new TestScriptTestComponent();
10734        copyValues(dst);
10735        return dst;
10736      }
10737
10738      public void copyValues(TestScriptTestComponent dst) {
10739        super.copyValues(dst);
10740        dst.name = name == null ? null : name.copy();
10741        dst.description = description == null ? null : description.copy();
10742        if (action != null) {
10743          dst.action = new ArrayList<TestActionComponent>();
10744          for (TestActionComponent i : action)
10745            dst.action.add(i.copy());
10746        };
10747      }
10748
10749      @Override
10750      public boolean equalsDeep(Base other_) {
10751        if (!super.equalsDeep(other_))
10752          return false;
10753        if (!(other_ instanceof TestScriptTestComponent))
10754          return false;
10755        TestScriptTestComponent o = (TestScriptTestComponent) other_;
10756        return compareDeep(name, o.name, true) && compareDeep(description, o.description, true) && compareDeep(action, o.action, true)
10757          ;
10758      }
10759
10760      @Override
10761      public boolean equalsShallow(Base other_) {
10762        if (!super.equalsShallow(other_))
10763          return false;
10764        if (!(other_ instanceof TestScriptTestComponent))
10765          return false;
10766        TestScriptTestComponent o = (TestScriptTestComponent) other_;
10767        return compareValues(name, o.name, true) && compareValues(description, o.description, true);
10768      }
10769
10770      public boolean isEmpty() {
10771        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(name, description, action
10772          );
10773      }
10774
10775  public String fhirType() {
10776    return "TestScript.test";
10777
10778  }
10779
10780  }
10781
10782    @Block()
10783    public static class TestActionComponent extends BackboneElement implements IBaseBackboneElement {
10784        /**
10785         * An operation would involve a REST request to a server.
10786         */
10787        @Child(name = "operation", type = {SetupActionOperationComponent.class}, order=1, min=0, max=1, modifier=false, summary=false)
10788        @Description(shortDefinition="The setup operation to perform", formalDefinition="An operation would involve a REST request to a server." )
10789        protected SetupActionOperationComponent operation;
10790
10791        /**
10792         * Evaluates the results of previous operations to determine if the server under test behaves appropriately.
10793         */
10794        @Child(name = "assert", type = {SetupActionAssertComponent.class}, order=2, min=0, max=1, modifier=false, summary=false)
10795        @Description(shortDefinition="The setup assertion to perform", formalDefinition="Evaluates the results of previous operations to determine if the server under test behaves appropriately." )
10796        protected SetupActionAssertComponent assert_;
10797
10798        private static final long serialVersionUID = -252088305L;
10799
10800    /**
10801     * Constructor
10802     */
10803      public TestActionComponent() {
10804        super();
10805      }
10806
10807        /**
10808         * @return {@link #operation} (An operation would involve a REST request to a server.)
10809         */
10810        public SetupActionOperationComponent getOperation() { 
10811          if (this.operation == null)
10812            if (Configuration.errorOnAutoCreate())
10813              throw new Error("Attempt to auto-create TestActionComponent.operation");
10814            else if (Configuration.doAutoCreate())
10815              this.operation = new SetupActionOperationComponent(); // cc
10816          return this.operation;
10817        }
10818
10819        public boolean hasOperation() { 
10820          return this.operation != null && !this.operation.isEmpty();
10821        }
10822
10823        /**
10824         * @param value {@link #operation} (An operation would involve a REST request to a server.)
10825         */
10826        public TestActionComponent setOperation(SetupActionOperationComponent value) { 
10827          this.operation = value;
10828          return this;
10829        }
10830
10831        /**
10832         * @return {@link #assert_} (Evaluates the results of previous operations to determine if the server under test behaves appropriately.)
10833         */
10834        public SetupActionAssertComponent getAssert() { 
10835          if (this.assert_ == null)
10836            if (Configuration.errorOnAutoCreate())
10837              throw new Error("Attempt to auto-create TestActionComponent.assert_");
10838            else if (Configuration.doAutoCreate())
10839              this.assert_ = new SetupActionAssertComponent(); // cc
10840          return this.assert_;
10841        }
10842
10843        public boolean hasAssert() { 
10844          return this.assert_ != null && !this.assert_.isEmpty();
10845        }
10846
10847        /**
10848         * @param value {@link #assert_} (Evaluates the results of previous operations to determine if the server under test behaves appropriately.)
10849         */
10850        public TestActionComponent setAssert(SetupActionAssertComponent value) { 
10851          this.assert_ = value;
10852          return this;
10853        }
10854
10855        protected void listChildren(List<Property> children) {
10856          super.listChildren(children);
10857          children.add(new Property("operation", "@TestScript.setup.action.operation", "An operation would involve a REST request to a server.", 0, 1, operation));
10858          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_));
10859        }
10860
10861        @Override
10862        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
10863          switch (_hash) {
10864          case 1662702951: /*operation*/  return new Property("operation", "@TestScript.setup.action.operation", "An operation would involve a REST request to a server.", 0, 1, operation);
10865          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_);
10866          default: return super.getNamedProperty(_hash, _name, _checkValid);
10867          }
10868
10869        }
10870
10871      @Override
10872      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
10873        switch (hash) {
10874        case 1662702951: /*operation*/ return this.operation == null ? new Base[0] : new Base[] {this.operation}; // SetupActionOperationComponent
10875        case -1408208058: /*assert*/ return this.assert_ == null ? new Base[0] : new Base[] {this.assert_}; // SetupActionAssertComponent
10876        default: return super.getProperty(hash, name, checkValid);
10877        }
10878
10879      }
10880
10881      @Override
10882      public Base setProperty(int hash, String name, Base value) throws FHIRException {
10883        switch (hash) {
10884        case 1662702951: // operation
10885          this.operation = (SetupActionOperationComponent) value; // SetupActionOperationComponent
10886          return value;
10887        case -1408208058: // assert
10888          this.assert_ = (SetupActionAssertComponent) value; // SetupActionAssertComponent
10889          return value;
10890        default: return super.setProperty(hash, name, value);
10891        }
10892
10893      }
10894
10895      @Override
10896      public Base setProperty(String name, Base value) throws FHIRException {
10897        if (name.equals("operation")) {
10898          this.operation = (SetupActionOperationComponent) value; // SetupActionOperationComponent
10899        } else if (name.equals("assert")) {
10900          this.assert_ = (SetupActionAssertComponent) value; // SetupActionAssertComponent
10901        } else
10902          return super.setProperty(name, value);
10903        return value;
10904      }
10905
10906      @Override
10907      public Base makeProperty(int hash, String name) throws FHIRException {
10908        switch (hash) {
10909        case 1662702951:  return getOperation();
10910        case -1408208058:  return getAssert();
10911        default: return super.makeProperty(hash, name);
10912        }
10913
10914      }
10915
10916      @Override
10917      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
10918        switch (hash) {
10919        case 1662702951: /*operation*/ return new String[] {"@TestScript.setup.action.operation"};
10920        case -1408208058: /*assert*/ return new String[] {"@TestScript.setup.action.assert"};
10921        default: return super.getTypesForProperty(hash, name);
10922        }
10923
10924      }
10925
10926      @Override
10927      public Base addChild(String name) throws FHIRException {
10928        if (name.equals("operation")) {
10929          this.operation = new SetupActionOperationComponent();
10930          return this.operation;
10931        }
10932        else if (name.equals("assert")) {
10933          this.assert_ = new SetupActionAssertComponent();
10934          return this.assert_;
10935        }
10936        else
10937          return super.addChild(name);
10938      }
10939
10940      public TestActionComponent copy() {
10941        TestActionComponent dst = new TestActionComponent();
10942        copyValues(dst);
10943        return dst;
10944      }
10945
10946      public void copyValues(TestActionComponent dst) {
10947        super.copyValues(dst);
10948        dst.operation = operation == null ? null : operation.copy();
10949        dst.assert_ = assert_ == null ? null : assert_.copy();
10950      }
10951
10952      @Override
10953      public boolean equalsDeep(Base other_) {
10954        if (!super.equalsDeep(other_))
10955          return false;
10956        if (!(other_ instanceof TestActionComponent))
10957          return false;
10958        TestActionComponent o = (TestActionComponent) other_;
10959        return compareDeep(operation, o.operation, true) && compareDeep(assert_, o.assert_, true);
10960      }
10961
10962      @Override
10963      public boolean equalsShallow(Base other_) {
10964        if (!super.equalsShallow(other_))
10965          return false;
10966        if (!(other_ instanceof TestActionComponent))
10967          return false;
10968        TestActionComponent o = (TestActionComponent) other_;
10969        return true;
10970      }
10971
10972      public boolean isEmpty() {
10973        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(operation, assert_);
10974      }
10975
10976  public String fhirType() {
10977    return "TestScript.test.action";
10978
10979  }
10980
10981  }
10982
10983    @Block()
10984    public static class TestScriptTeardownComponent extends BackboneElement implements IBaseBackboneElement {
10985        /**
10986         * The teardown action will only contain an operation.
10987         */
10988        @Child(name = "action", type = {}, order=1, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
10989        @Description(shortDefinition="One or more teardown operations to perform", formalDefinition="The teardown action will only contain an operation." )
10990        protected List<TeardownActionComponent> action;
10991
10992        private static final long serialVersionUID = 1168638089L;
10993
10994    /**
10995     * Constructor
10996     */
10997      public TestScriptTeardownComponent() {
10998        super();
10999      }
11000
11001    /**
11002     * Constructor
11003     */
11004      public TestScriptTeardownComponent(TeardownActionComponent action) {
11005        super();
11006        this.addAction(action);
11007      }
11008
11009        /**
11010         * @return {@link #action} (The teardown action will only contain an operation.)
11011         */
11012        public List<TeardownActionComponent> getAction() { 
11013          if (this.action == null)
11014            this.action = new ArrayList<TeardownActionComponent>();
11015          return this.action;
11016        }
11017
11018        /**
11019         * @return Returns a reference to <code>this</code> for easy method chaining
11020         */
11021        public TestScriptTeardownComponent setAction(List<TeardownActionComponent> theAction) { 
11022          this.action = theAction;
11023          return this;
11024        }
11025
11026        public boolean hasAction() { 
11027          if (this.action == null)
11028            return false;
11029          for (TeardownActionComponent item : this.action)
11030            if (!item.isEmpty())
11031              return true;
11032          return false;
11033        }
11034
11035        public TeardownActionComponent addAction() { //3
11036          TeardownActionComponent t = new TeardownActionComponent();
11037          if (this.action == null)
11038            this.action = new ArrayList<TeardownActionComponent>();
11039          this.action.add(t);
11040          return t;
11041        }
11042
11043        public TestScriptTeardownComponent addAction(TeardownActionComponent t) { //3
11044          if (t == null)
11045            return this;
11046          if (this.action == null)
11047            this.action = new ArrayList<TeardownActionComponent>();
11048          this.action.add(t);
11049          return this;
11050        }
11051
11052        /**
11053         * @return The first repetition of repeating field {@link #action}, creating it if it does not already exist {3}
11054         */
11055        public TeardownActionComponent getActionFirstRep() { 
11056          if (getAction().isEmpty()) {
11057            addAction();
11058          }
11059          return getAction().get(0);
11060        }
11061
11062        protected void listChildren(List<Property> children) {
11063          super.listChildren(children);
11064          children.add(new Property("action", "", "The teardown action will only contain an operation.", 0, java.lang.Integer.MAX_VALUE, action));
11065        }
11066
11067        @Override
11068        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
11069          switch (_hash) {
11070          case -1422950858: /*action*/  return new Property("action", "", "The teardown action will only contain an operation.", 0, java.lang.Integer.MAX_VALUE, action);
11071          default: return super.getNamedProperty(_hash, _name, _checkValid);
11072          }
11073
11074        }
11075
11076      @Override
11077      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
11078        switch (hash) {
11079        case -1422950858: /*action*/ return this.action == null ? new Base[0] : this.action.toArray(new Base[this.action.size()]); // TeardownActionComponent
11080        default: return super.getProperty(hash, name, checkValid);
11081        }
11082
11083      }
11084
11085      @Override
11086      public Base setProperty(int hash, String name, Base value) throws FHIRException {
11087        switch (hash) {
11088        case -1422950858: // action
11089          this.getAction().add((TeardownActionComponent) value); // TeardownActionComponent
11090          return value;
11091        default: return super.setProperty(hash, name, value);
11092        }
11093
11094      }
11095
11096      @Override
11097      public Base setProperty(String name, Base value) throws FHIRException {
11098        if (name.equals("action")) {
11099          this.getAction().add((TeardownActionComponent) value);
11100        } else
11101          return super.setProperty(name, value);
11102        return value;
11103      }
11104
11105      @Override
11106      public Base makeProperty(int hash, String name) throws FHIRException {
11107        switch (hash) {
11108        case -1422950858:  return addAction(); 
11109        default: return super.makeProperty(hash, name);
11110        }
11111
11112      }
11113
11114      @Override
11115      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
11116        switch (hash) {
11117        case -1422950858: /*action*/ return new String[] {};
11118        default: return super.getTypesForProperty(hash, name);
11119        }
11120
11121      }
11122
11123      @Override
11124      public Base addChild(String name) throws FHIRException {
11125        if (name.equals("action")) {
11126          return addAction();
11127        }
11128        else
11129          return super.addChild(name);
11130      }
11131
11132      public TestScriptTeardownComponent copy() {
11133        TestScriptTeardownComponent dst = new TestScriptTeardownComponent();
11134        copyValues(dst);
11135        return dst;
11136      }
11137
11138      public void copyValues(TestScriptTeardownComponent dst) {
11139        super.copyValues(dst);
11140        if (action != null) {
11141          dst.action = new ArrayList<TeardownActionComponent>();
11142          for (TeardownActionComponent i : action)
11143            dst.action.add(i.copy());
11144        };
11145      }
11146
11147      @Override
11148      public boolean equalsDeep(Base other_) {
11149        if (!super.equalsDeep(other_))
11150          return false;
11151        if (!(other_ instanceof TestScriptTeardownComponent))
11152          return false;
11153        TestScriptTeardownComponent o = (TestScriptTeardownComponent) other_;
11154        return compareDeep(action, o.action, true);
11155      }
11156
11157      @Override
11158      public boolean equalsShallow(Base other_) {
11159        if (!super.equalsShallow(other_))
11160          return false;
11161        if (!(other_ instanceof TestScriptTeardownComponent))
11162          return false;
11163        TestScriptTeardownComponent o = (TestScriptTeardownComponent) other_;
11164        return true;
11165      }
11166
11167      public boolean isEmpty() {
11168        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(action);
11169      }
11170
11171  public String fhirType() {
11172    return "TestScript.teardown";
11173
11174  }
11175
11176  }
11177
11178    @Block()
11179    public static class TeardownActionComponent extends BackboneElement implements IBaseBackboneElement {
11180        /**
11181         * An operation would involve a REST request to a server.
11182         */
11183        @Child(name = "operation", type = {SetupActionOperationComponent.class}, order=1, min=1, max=1, modifier=false, summary=false)
11184        @Description(shortDefinition="The teardown operation to perform", formalDefinition="An operation would involve a REST request to a server." )
11185        protected SetupActionOperationComponent operation;
11186
11187        private static final long serialVersionUID = -1099598054L;
11188
11189    /**
11190     * Constructor
11191     */
11192      public TeardownActionComponent() {
11193        super();
11194      }
11195
11196    /**
11197     * Constructor
11198     */
11199      public TeardownActionComponent(SetupActionOperationComponent operation) {
11200        super();
11201        this.setOperation(operation);
11202      }
11203
11204        /**
11205         * @return {@link #operation} (An operation would involve a REST request to a server.)
11206         */
11207        public SetupActionOperationComponent getOperation() { 
11208          if (this.operation == null)
11209            if (Configuration.errorOnAutoCreate())
11210              throw new Error("Attempt to auto-create TeardownActionComponent.operation");
11211            else if (Configuration.doAutoCreate())
11212              this.operation = new SetupActionOperationComponent(); // cc
11213          return this.operation;
11214        }
11215
11216        public boolean hasOperation() { 
11217          return this.operation != null && !this.operation.isEmpty();
11218        }
11219
11220        /**
11221         * @param value {@link #operation} (An operation would involve a REST request to a server.)
11222         */
11223        public TeardownActionComponent setOperation(SetupActionOperationComponent value) { 
11224          this.operation = value;
11225          return this;
11226        }
11227
11228        protected void listChildren(List<Property> children) {
11229          super.listChildren(children);
11230          children.add(new Property("operation", "@TestScript.setup.action.operation", "An operation would involve a REST request to a server.", 0, 1, operation));
11231        }
11232
11233        @Override
11234        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
11235          switch (_hash) {
11236          case 1662702951: /*operation*/  return new Property("operation", "@TestScript.setup.action.operation", "An operation would involve a REST request to a server.", 0, 1, operation);
11237          default: return super.getNamedProperty(_hash, _name, _checkValid);
11238          }
11239
11240        }
11241
11242      @Override
11243      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
11244        switch (hash) {
11245        case 1662702951: /*operation*/ return this.operation == null ? new Base[0] : new Base[] {this.operation}; // SetupActionOperationComponent
11246        default: return super.getProperty(hash, name, checkValid);
11247        }
11248
11249      }
11250
11251      @Override
11252      public Base setProperty(int hash, String name, Base value) throws FHIRException {
11253        switch (hash) {
11254        case 1662702951: // operation
11255          this.operation = (SetupActionOperationComponent) value; // SetupActionOperationComponent
11256          return value;
11257        default: return super.setProperty(hash, name, value);
11258        }
11259
11260      }
11261
11262      @Override
11263      public Base setProperty(String name, Base value) throws FHIRException {
11264        if (name.equals("operation")) {
11265          this.operation = (SetupActionOperationComponent) value; // SetupActionOperationComponent
11266        } else
11267          return super.setProperty(name, value);
11268        return value;
11269      }
11270
11271      @Override
11272      public Base makeProperty(int hash, String name) throws FHIRException {
11273        switch (hash) {
11274        case 1662702951:  return getOperation();
11275        default: return super.makeProperty(hash, name);
11276        }
11277
11278      }
11279
11280      @Override
11281      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
11282        switch (hash) {
11283        case 1662702951: /*operation*/ return new String[] {"@TestScript.setup.action.operation"};
11284        default: return super.getTypesForProperty(hash, name);
11285        }
11286
11287      }
11288
11289      @Override
11290      public Base addChild(String name) throws FHIRException {
11291        if (name.equals("operation")) {
11292          this.operation = new SetupActionOperationComponent();
11293          return this.operation;
11294        }
11295        else
11296          return super.addChild(name);
11297      }
11298
11299      public TeardownActionComponent copy() {
11300        TeardownActionComponent dst = new TeardownActionComponent();
11301        copyValues(dst);
11302        return dst;
11303      }
11304
11305      public void copyValues(TeardownActionComponent dst) {
11306        super.copyValues(dst);
11307        dst.operation = operation == null ? null : operation.copy();
11308      }
11309
11310      @Override
11311      public boolean equalsDeep(Base other_) {
11312        if (!super.equalsDeep(other_))
11313          return false;
11314        if (!(other_ instanceof TeardownActionComponent))
11315          return false;
11316        TeardownActionComponent o = (TeardownActionComponent) other_;
11317        return compareDeep(operation, o.operation, true);
11318      }
11319
11320      @Override
11321      public boolean equalsShallow(Base other_) {
11322        if (!super.equalsShallow(other_))
11323          return false;
11324        if (!(other_ instanceof TeardownActionComponent))
11325          return false;
11326        TeardownActionComponent o = (TeardownActionComponent) other_;
11327        return true;
11328      }
11329
11330      public boolean isEmpty() {
11331        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(operation);
11332      }
11333
11334  public String fhirType() {
11335    return "TestScript.teardown.action";
11336
11337  }
11338
11339  }
11340
11341    /**
11342     * An absolute URI that is used to identify this test script when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this test script is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the test script is stored on different servers.
11343     */
11344    @Child(name = "url", type = {UriType.class}, order=0, min=1, max=1, modifier=false, summary=true)
11345    @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 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." )
11346    protected UriType url;
11347
11348    /**
11349     * 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.
11350     */
11351    @Child(name = "identifier", type = {Identifier.class}, order=1, min=0, max=1, modifier=false, summary=true)
11352    @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." )
11353    protected Identifier identifier;
11354
11355    /**
11356     * 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.
11357     */
11358    @Child(name = "version", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=true)
11359    @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." )
11360    protected StringType version;
11361
11362    /**
11363     * 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.
11364     */
11365    @Child(name = "name", type = {StringType.class}, order=3, min=1, max=1, modifier=false, summary=true)
11366    @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." )
11367    protected StringType name;
11368
11369    /**
11370     * A short, descriptive, user-friendly title for the test script.
11371     */
11372    @Child(name = "title", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=true)
11373    @Description(shortDefinition="Name for this test script (human friendly)", formalDefinition="A short, descriptive, user-friendly title for the test script." )
11374    protected StringType title;
11375
11376    /**
11377     * The status of this test script. Enables tracking the life-cycle of the content.
11378     */
11379    @Child(name = "status", type = {CodeType.class}, order=5, min=1, max=1, modifier=true, summary=true)
11380    @Description(shortDefinition="draft | active | retired | unknown", formalDefinition="The status of this test script. Enables tracking the life-cycle of the content." )
11381    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/publication-status")
11382    protected Enumeration<PublicationStatus> status;
11383
11384    /**
11385     * 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.
11386     */
11387    @Child(name = "experimental", type = {BooleanType.class}, order=6, min=0, max=1, modifier=false, summary=true)
11388    @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." )
11389    protected BooleanType experimental;
11390
11391    /**
11392     * The date  (and optionally time) when the test script was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the test script changes.
11393     */
11394    @Child(name = "date", type = {DateTimeType.class}, order=7, min=0, max=1, modifier=false, summary=true)
11395    @Description(shortDefinition="Date last changed", formalDefinition="The date  (and optionally time) when the test script was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the test script changes." )
11396    protected DateTimeType date;
11397
11398    /**
11399     * The name of the organization or individual that published the test script.
11400     */
11401    @Child(name = "publisher", type = {StringType.class}, order=8, min=0, max=1, modifier=false, summary=true)
11402    @Description(shortDefinition="Name of the publisher (organization or individual)", formalDefinition="The name of the organization or individual that published the test script." )
11403    protected StringType publisher;
11404
11405    /**
11406     * Contact details to assist a user in finding and communicating with the publisher.
11407     */
11408    @Child(name = "contact", type = {ContactDetail.class}, order=9, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
11409    @Description(shortDefinition="Contact details for the publisher", formalDefinition="Contact details to assist a user in finding and communicating with the publisher." )
11410    protected List<ContactDetail> contact;
11411
11412    /**
11413     * A free text natural language description of the test script from a consumer's perspective.
11414     */
11415    @Child(name = "description", type = {MarkdownType.class}, order=10, min=0, max=1, modifier=false, summary=false)
11416    @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." )
11417    protected MarkdownType description;
11418
11419    /**
11420     * 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.
11421     */
11422    @Child(name = "useContext", type = {UsageContext.class}, order=11, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
11423    @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." )
11424    protected List<UsageContext> useContext;
11425
11426    /**
11427     * A legal or geographic region in which the test script is intended to be used.
11428     */
11429    @Child(name = "jurisdiction", type = {CodeableConcept.class}, order=12, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
11430    @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." )
11431    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/jurisdiction")
11432    protected List<CodeableConcept> jurisdiction;
11433
11434    /**
11435     * Explanation of why this test script is needed and why it has been designed as it has.
11436     */
11437    @Child(name = "purpose", type = {MarkdownType.class}, order=13, min=0, max=1, modifier=false, summary=false)
11438    @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." )
11439    protected MarkdownType purpose;
11440
11441    /**
11442     * 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.
11443     */
11444    @Child(name = "copyright", type = {MarkdownType.class}, order=14, min=0, max=1, modifier=false, summary=false)
11445    @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." )
11446    protected MarkdownType copyright;
11447
11448    /**
11449     * An abstract server used in operations within this test script in the origin element.
11450     */
11451    @Child(name = "origin", type = {}, order=15, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
11452    @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." )
11453    protected List<TestScriptOriginComponent> origin;
11454
11455    /**
11456     * An abstract server used in operations within this test script in the destination element.
11457     */
11458    @Child(name = "destination", type = {}, order=16, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
11459    @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." )
11460    protected List<TestScriptDestinationComponent> destination;
11461
11462    /**
11463     * The required capability must exist and are assumed to function correctly on the FHIR server being tested.
11464     */
11465    @Child(name = "metadata", type = {}, order=17, min=0, max=1, modifier=false, summary=false)
11466    @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." )
11467    protected TestScriptMetadataComponent metadata;
11468
11469    /**
11470     * Fixture in the test script - by reference (uri). All fixtures are required for the test script to execute.
11471     */
11472    @Child(name = "fixture", type = {}, order=18, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
11473    @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." )
11474    protected List<TestScriptFixtureComponent> fixture;
11475
11476    /**
11477     * Reference to the profile to be used for validation.
11478     */
11479    @Child(name = "profile", type = {Reference.class}, order=19, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
11480    @Description(shortDefinition="Reference of the validation profile", formalDefinition="Reference to the profile to be used for validation." )
11481    protected List<Reference> profile;
11482
11483    /**
11484     * Variable is set based either on element value in response body or on header field value in the response headers.
11485     */
11486    @Child(name = "variable", type = {}, order=20, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
11487    @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." )
11488    protected List<TestScriptVariableComponent> variable;
11489
11490    /**
11491     * A series of required setup operations before tests are executed.
11492     */
11493    @Child(name = "setup", type = {}, order=21, min=0, max=1, modifier=false, summary=false)
11494    @Description(shortDefinition="A series of required setup operations before tests are executed", formalDefinition="A series of required setup operations before tests are executed." )
11495    protected TestScriptSetupComponent setup;
11496
11497    /**
11498     * A test in this script.
11499     */
11500    @Child(name = "test", type = {}, order=22, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
11501    @Description(shortDefinition="A test in this script", formalDefinition="A test in this script." )
11502    protected List<TestScriptTestComponent> test;
11503
11504    /**
11505     * A series of operations required to clean up after all the tests are executed (successfully or otherwise).
11506     */
11507    @Child(name = "teardown", type = {}, order=23, min=0, max=1, modifier=false, summary=false)
11508    @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)." )
11509    protected TestScriptTeardownComponent teardown;
11510
11511    private static final long serialVersionUID = -2020826225L;
11512
11513  /**
11514   * Constructor
11515   */
11516    public TestScript() {
11517      super();
11518    }
11519
11520  /**
11521   * Constructor
11522   */
11523    public TestScript(String url, String name, PublicationStatus status) {
11524      super();
11525      this.setUrl(url);
11526      this.setName(name);
11527      this.setStatus(status);
11528    }
11529
11530    /**
11531     * @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 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
11532     */
11533    public UriType getUrlElement() { 
11534      if (this.url == null)
11535        if (Configuration.errorOnAutoCreate())
11536          throw new Error("Attempt to auto-create TestScript.url");
11537        else if (Configuration.doAutoCreate())
11538          this.url = new UriType(); // bb
11539      return this.url;
11540    }
11541
11542    public boolean hasUrlElement() { 
11543      return this.url != null && !this.url.isEmpty();
11544    }
11545
11546    public boolean hasUrl() { 
11547      return this.url != null && !this.url.isEmpty();
11548    }
11549
11550    /**
11551     * @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 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
11552     */
11553    public TestScript setUrlElement(UriType value) { 
11554      this.url = value;
11555      return this;
11556    }
11557
11558    /**
11559     * @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 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.
11560     */
11561    public String getUrl() { 
11562      return this.url == null ? null : this.url.getValue();
11563    }
11564
11565    /**
11566     * @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 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.
11567     */
11568    public TestScript setUrl(String value) { 
11569        if (this.url == null)
11570          this.url = new UriType();
11571        this.url.setValue(value);
11572      return this;
11573    }
11574
11575    /**
11576     * @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.)
11577     */
11578    public Identifier getIdentifier() { 
11579      if (this.identifier == null)
11580        if (Configuration.errorOnAutoCreate())
11581          throw new Error("Attempt to auto-create TestScript.identifier");
11582        else if (Configuration.doAutoCreate())
11583          this.identifier = new Identifier(); // cc
11584      return this.identifier;
11585    }
11586
11587    public boolean hasIdentifier() { 
11588      return this.identifier != null && !this.identifier.isEmpty();
11589    }
11590
11591    /**
11592     * @param value {@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.)
11593     */
11594    public TestScript setIdentifier(Identifier value) { 
11595      this.identifier = value;
11596      return this;
11597    }
11598
11599    /**
11600     * @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
11601     */
11602    public StringType getVersionElement() { 
11603      if (this.version == null)
11604        if (Configuration.errorOnAutoCreate())
11605          throw new Error("Attempt to auto-create TestScript.version");
11606        else if (Configuration.doAutoCreate())
11607          this.version = new StringType(); // bb
11608      return this.version;
11609    }
11610
11611    public boolean hasVersionElement() { 
11612      return this.version != null && !this.version.isEmpty();
11613    }
11614
11615    public boolean hasVersion() { 
11616      return this.version != null && !this.version.isEmpty();
11617    }
11618
11619    /**
11620     * @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
11621     */
11622    public TestScript setVersionElement(StringType value) { 
11623      this.version = value;
11624      return this;
11625    }
11626
11627    /**
11628     * @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.
11629     */
11630    public String getVersion() { 
11631      return this.version == null ? null : this.version.getValue();
11632    }
11633
11634    /**
11635     * @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.
11636     */
11637    public TestScript setVersion(String value) { 
11638      if (Utilities.noString(value))
11639        this.version = null;
11640      else {
11641        if (this.version == null)
11642          this.version = new StringType();
11643        this.version.setValue(value);
11644      }
11645      return this;
11646    }
11647
11648    /**
11649     * @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
11650     */
11651    public StringType getNameElement() { 
11652      if (this.name == null)
11653        if (Configuration.errorOnAutoCreate())
11654          throw new Error("Attempt to auto-create TestScript.name");
11655        else if (Configuration.doAutoCreate())
11656          this.name = new StringType(); // bb
11657      return this.name;
11658    }
11659
11660    public boolean hasNameElement() { 
11661      return this.name != null && !this.name.isEmpty();
11662    }
11663
11664    public boolean hasName() { 
11665      return this.name != null && !this.name.isEmpty();
11666    }
11667
11668    /**
11669     * @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
11670     */
11671    public TestScript setNameElement(StringType value) { 
11672      this.name = value;
11673      return this;
11674    }
11675
11676    /**
11677     * @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.
11678     */
11679    public String getName() { 
11680      return this.name == null ? null : this.name.getValue();
11681    }
11682
11683    /**
11684     * @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.
11685     */
11686    public TestScript setName(String value) { 
11687        if (this.name == null)
11688          this.name = new StringType();
11689        this.name.setValue(value);
11690      return this;
11691    }
11692
11693    /**
11694     * @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
11695     */
11696    public StringType getTitleElement() { 
11697      if (this.title == null)
11698        if (Configuration.errorOnAutoCreate())
11699          throw new Error("Attempt to auto-create TestScript.title");
11700        else if (Configuration.doAutoCreate())
11701          this.title = new StringType(); // bb
11702      return this.title;
11703    }
11704
11705    public boolean hasTitleElement() { 
11706      return this.title != null && !this.title.isEmpty();
11707    }
11708
11709    public boolean hasTitle() { 
11710      return this.title != null && !this.title.isEmpty();
11711    }
11712
11713    /**
11714     * @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
11715     */
11716    public TestScript setTitleElement(StringType value) { 
11717      this.title = value;
11718      return this;
11719    }
11720
11721    /**
11722     * @return A short, descriptive, user-friendly title for the test script.
11723     */
11724    public String getTitle() { 
11725      return this.title == null ? null : this.title.getValue();
11726    }
11727
11728    /**
11729     * @param value A short, descriptive, user-friendly title for the test script.
11730     */
11731    public TestScript setTitle(String value) { 
11732      if (Utilities.noString(value))
11733        this.title = null;
11734      else {
11735        if (this.title == null)
11736          this.title = new StringType();
11737        this.title.setValue(value);
11738      }
11739      return this;
11740    }
11741
11742    /**
11743     * @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
11744     */
11745    public Enumeration<PublicationStatus> getStatusElement() { 
11746      if (this.status == null)
11747        if (Configuration.errorOnAutoCreate())
11748          throw new Error("Attempt to auto-create TestScript.status");
11749        else if (Configuration.doAutoCreate())
11750          this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory()); // bb
11751      return this.status;
11752    }
11753
11754    public boolean hasStatusElement() { 
11755      return this.status != null && !this.status.isEmpty();
11756    }
11757
11758    public boolean hasStatus() { 
11759      return this.status != null && !this.status.isEmpty();
11760    }
11761
11762    /**
11763     * @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
11764     */
11765    public TestScript setStatusElement(Enumeration<PublicationStatus> value) { 
11766      this.status = value;
11767      return this;
11768    }
11769
11770    /**
11771     * @return The status of this test script. Enables tracking the life-cycle of the content.
11772     */
11773    public PublicationStatus getStatus() { 
11774      return this.status == null ? null : this.status.getValue();
11775    }
11776
11777    /**
11778     * @param value The status of this test script. Enables tracking the life-cycle of the content.
11779     */
11780    public TestScript setStatus(PublicationStatus value) { 
11781        if (this.status == null)
11782          this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory());
11783        this.status.setValue(value);
11784      return this;
11785    }
11786
11787    /**
11788     * @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
11789     */
11790    public BooleanType getExperimentalElement() { 
11791      if (this.experimental == null)
11792        if (Configuration.errorOnAutoCreate())
11793          throw new Error("Attempt to auto-create TestScript.experimental");
11794        else if (Configuration.doAutoCreate())
11795          this.experimental = new BooleanType(); // bb
11796      return this.experimental;
11797    }
11798
11799    public boolean hasExperimentalElement() { 
11800      return this.experimental != null && !this.experimental.isEmpty();
11801    }
11802
11803    public boolean hasExperimental() { 
11804      return this.experimental != null && !this.experimental.isEmpty();
11805    }
11806
11807    /**
11808     * @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
11809     */
11810    public TestScript setExperimentalElement(BooleanType value) { 
11811      this.experimental = value;
11812      return this;
11813    }
11814
11815    /**
11816     * @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.
11817     */
11818    public boolean getExperimental() { 
11819      return this.experimental == null || this.experimental.isEmpty() ? false : this.experimental.getValue();
11820    }
11821
11822    /**
11823     * @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.
11824     */
11825    public TestScript setExperimental(boolean value) { 
11826        if (this.experimental == null)
11827          this.experimental = new BooleanType();
11828        this.experimental.setValue(value);
11829      return this;
11830    }
11831
11832    /**
11833     * @return {@link #date} (The date  (and optionally time) when the test script was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the test script changes.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
11834     */
11835    public DateTimeType getDateElement() { 
11836      if (this.date == null)
11837        if (Configuration.errorOnAutoCreate())
11838          throw new Error("Attempt to auto-create TestScript.date");
11839        else if (Configuration.doAutoCreate())
11840          this.date = new DateTimeType(); // bb
11841      return this.date;
11842    }
11843
11844    public boolean hasDateElement() { 
11845      return this.date != null && !this.date.isEmpty();
11846    }
11847
11848    public boolean hasDate() { 
11849      return this.date != null && !this.date.isEmpty();
11850    }
11851
11852    /**
11853     * @param value {@link #date} (The date  (and optionally time) when the test script was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the test script changes.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
11854     */
11855    public TestScript setDateElement(DateTimeType value) { 
11856      this.date = value;
11857      return this;
11858    }
11859
11860    /**
11861     * @return The date  (and optionally time) when the test script was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the test script changes.
11862     */
11863    public Date getDate() { 
11864      return this.date == null ? null : this.date.getValue();
11865    }
11866
11867    /**
11868     * @param value The date  (and optionally time) when the test script was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the test script changes.
11869     */
11870    public TestScript setDate(Date value) { 
11871      if (value == null)
11872        this.date = null;
11873      else {
11874        if (this.date == null)
11875          this.date = new DateTimeType();
11876        this.date.setValue(value);
11877      }
11878      return this;
11879    }
11880
11881    /**
11882     * @return {@link #publisher} (The name of the organization or individual that published the test script.). This is the underlying object with id, value and extensions. The accessor "getPublisher" gives direct access to the value
11883     */
11884    public StringType getPublisherElement() { 
11885      if (this.publisher == null)
11886        if (Configuration.errorOnAutoCreate())
11887          throw new Error("Attempt to auto-create TestScript.publisher");
11888        else if (Configuration.doAutoCreate())
11889          this.publisher = new StringType(); // bb
11890      return this.publisher;
11891    }
11892
11893    public boolean hasPublisherElement() { 
11894      return this.publisher != null && !this.publisher.isEmpty();
11895    }
11896
11897    public boolean hasPublisher() { 
11898      return this.publisher != null && !this.publisher.isEmpty();
11899    }
11900
11901    /**
11902     * @param value {@link #publisher} (The name of the organization or individual that published the test script.). This is the underlying object with id, value and extensions. The accessor "getPublisher" gives direct access to the value
11903     */
11904    public TestScript setPublisherElement(StringType value) { 
11905      this.publisher = value;
11906      return this;
11907    }
11908
11909    /**
11910     * @return The name of the organization or individual that published the test script.
11911     */
11912    public String getPublisher() { 
11913      return this.publisher == null ? null : this.publisher.getValue();
11914    }
11915
11916    /**
11917     * @param value The name of the organization or individual that published the test script.
11918     */
11919    public TestScript setPublisher(String value) { 
11920      if (Utilities.noString(value))
11921        this.publisher = null;
11922      else {
11923        if (this.publisher == null)
11924          this.publisher = new StringType();
11925        this.publisher.setValue(value);
11926      }
11927      return this;
11928    }
11929
11930    /**
11931     * @return {@link #contact} (Contact details to assist a user in finding and communicating with the publisher.)
11932     */
11933    public List<ContactDetail> getContact() { 
11934      if (this.contact == null)
11935        this.contact = new ArrayList<ContactDetail>();
11936      return this.contact;
11937    }
11938
11939    /**
11940     * @return Returns a reference to <code>this</code> for easy method chaining
11941     */
11942    public TestScript setContact(List<ContactDetail> theContact) { 
11943      this.contact = theContact;
11944      return this;
11945    }
11946
11947    public boolean hasContact() { 
11948      if (this.contact == null)
11949        return false;
11950      for (ContactDetail item : this.contact)
11951        if (!item.isEmpty())
11952          return true;
11953      return false;
11954    }
11955
11956    public ContactDetail addContact() { //3
11957      ContactDetail t = new ContactDetail();
11958      if (this.contact == null)
11959        this.contact = new ArrayList<ContactDetail>();
11960      this.contact.add(t);
11961      return t;
11962    }
11963
11964    public TestScript addContact(ContactDetail t) { //3
11965      if (t == null)
11966        return this;
11967      if (this.contact == null)
11968        this.contact = new ArrayList<ContactDetail>();
11969      this.contact.add(t);
11970      return this;
11971    }
11972
11973    /**
11974     * @return The first repetition of repeating field {@link #contact}, creating it if it does not already exist {3}
11975     */
11976    public ContactDetail getContactFirstRep() { 
11977      if (getContact().isEmpty()) {
11978        addContact();
11979      }
11980      return getContact().get(0);
11981    }
11982
11983    /**
11984     * @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
11985     */
11986    public MarkdownType getDescriptionElement() { 
11987      if (this.description == null)
11988        if (Configuration.errorOnAutoCreate())
11989          throw new Error("Attempt to auto-create TestScript.description");
11990        else if (Configuration.doAutoCreate())
11991          this.description = new MarkdownType(); // bb
11992      return this.description;
11993    }
11994
11995    public boolean hasDescriptionElement() { 
11996      return this.description != null && !this.description.isEmpty();
11997    }
11998
11999    public boolean hasDescription() { 
12000      return this.description != null && !this.description.isEmpty();
12001    }
12002
12003    /**
12004     * @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
12005     */
12006    public TestScript setDescriptionElement(MarkdownType value) { 
12007      this.description = value;
12008      return this;
12009    }
12010
12011    /**
12012     * @return A free text natural language description of the test script from a consumer's perspective.
12013     */
12014    public String getDescription() { 
12015      return this.description == null ? null : this.description.getValue();
12016    }
12017
12018    /**
12019     * @param value A free text natural language description of the test script from a consumer's perspective.
12020     */
12021    public TestScript setDescription(String value) { 
12022      if (value == null)
12023        this.description = null;
12024      else {
12025        if (this.description == null)
12026          this.description = new MarkdownType();
12027        this.description.setValue(value);
12028      }
12029      return this;
12030    }
12031
12032    /**
12033     * @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.)
12034     */
12035    public List<UsageContext> getUseContext() { 
12036      if (this.useContext == null)
12037        this.useContext = new ArrayList<UsageContext>();
12038      return this.useContext;
12039    }
12040
12041    /**
12042     * @return Returns a reference to <code>this</code> for easy method chaining
12043     */
12044    public TestScript setUseContext(List<UsageContext> theUseContext) { 
12045      this.useContext = theUseContext;
12046      return this;
12047    }
12048
12049    public boolean hasUseContext() { 
12050      if (this.useContext == null)
12051        return false;
12052      for (UsageContext item : this.useContext)
12053        if (!item.isEmpty())
12054          return true;
12055      return false;
12056    }
12057
12058    public UsageContext addUseContext() { //3
12059      UsageContext t = new UsageContext();
12060      if (this.useContext == null)
12061        this.useContext = new ArrayList<UsageContext>();
12062      this.useContext.add(t);
12063      return t;
12064    }
12065
12066    public TestScript addUseContext(UsageContext t) { //3
12067      if (t == null)
12068        return this;
12069      if (this.useContext == null)
12070        this.useContext = new ArrayList<UsageContext>();
12071      this.useContext.add(t);
12072      return this;
12073    }
12074
12075    /**
12076     * @return The first repetition of repeating field {@link #useContext}, creating it if it does not already exist {3}
12077     */
12078    public UsageContext getUseContextFirstRep() { 
12079      if (getUseContext().isEmpty()) {
12080        addUseContext();
12081      }
12082      return getUseContext().get(0);
12083    }
12084
12085    /**
12086     * @return {@link #jurisdiction} (A legal or geographic region in which the test script is intended to be used.)
12087     */
12088    public List<CodeableConcept> getJurisdiction() { 
12089      if (this.jurisdiction == null)
12090        this.jurisdiction = new ArrayList<CodeableConcept>();
12091      return this.jurisdiction;
12092    }
12093
12094    /**
12095     * @return Returns a reference to <code>this</code> for easy method chaining
12096     */
12097    public TestScript setJurisdiction(List<CodeableConcept> theJurisdiction) { 
12098      this.jurisdiction = theJurisdiction;
12099      return this;
12100    }
12101
12102    public boolean hasJurisdiction() { 
12103      if (this.jurisdiction == null)
12104        return false;
12105      for (CodeableConcept item : this.jurisdiction)
12106        if (!item.isEmpty())
12107          return true;
12108      return false;
12109    }
12110
12111    public CodeableConcept addJurisdiction() { //3
12112      CodeableConcept t = new CodeableConcept();
12113      if (this.jurisdiction == null)
12114        this.jurisdiction = new ArrayList<CodeableConcept>();
12115      this.jurisdiction.add(t);
12116      return t;
12117    }
12118
12119    public TestScript addJurisdiction(CodeableConcept t) { //3
12120      if (t == null)
12121        return this;
12122      if (this.jurisdiction == null)
12123        this.jurisdiction = new ArrayList<CodeableConcept>();
12124      this.jurisdiction.add(t);
12125      return this;
12126    }
12127
12128    /**
12129     * @return The first repetition of repeating field {@link #jurisdiction}, creating it if it does not already exist {3}
12130     */
12131    public CodeableConcept getJurisdictionFirstRep() { 
12132      if (getJurisdiction().isEmpty()) {
12133        addJurisdiction();
12134      }
12135      return getJurisdiction().get(0);
12136    }
12137
12138    /**
12139     * @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
12140     */
12141    public MarkdownType getPurposeElement() { 
12142      if (this.purpose == null)
12143        if (Configuration.errorOnAutoCreate())
12144          throw new Error("Attempt to auto-create TestScript.purpose");
12145        else if (Configuration.doAutoCreate())
12146          this.purpose = new MarkdownType(); // bb
12147      return this.purpose;
12148    }
12149
12150    public boolean hasPurposeElement() { 
12151      return this.purpose != null && !this.purpose.isEmpty();
12152    }
12153
12154    public boolean hasPurpose() { 
12155      return this.purpose != null && !this.purpose.isEmpty();
12156    }
12157
12158    /**
12159     * @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
12160     */
12161    public TestScript setPurposeElement(MarkdownType value) { 
12162      this.purpose = value;
12163      return this;
12164    }
12165
12166    /**
12167     * @return Explanation of why this test script is needed and why it has been designed as it has.
12168     */
12169    public String getPurpose() { 
12170      return this.purpose == null ? null : this.purpose.getValue();
12171    }
12172
12173    /**
12174     * @param value Explanation of why this test script is needed and why it has been designed as it has.
12175     */
12176    public TestScript setPurpose(String value) { 
12177      if (value == null)
12178        this.purpose = null;
12179      else {
12180        if (this.purpose == null)
12181          this.purpose = new MarkdownType();
12182        this.purpose.setValue(value);
12183      }
12184      return this;
12185    }
12186
12187    /**
12188     * @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
12189     */
12190    public MarkdownType getCopyrightElement() { 
12191      if (this.copyright == null)
12192        if (Configuration.errorOnAutoCreate())
12193          throw new Error("Attempt to auto-create TestScript.copyright");
12194        else if (Configuration.doAutoCreate())
12195          this.copyright = new MarkdownType(); // bb
12196      return this.copyright;
12197    }
12198
12199    public boolean hasCopyrightElement() { 
12200      return this.copyright != null && !this.copyright.isEmpty();
12201    }
12202
12203    public boolean hasCopyright() { 
12204      return this.copyright != null && !this.copyright.isEmpty();
12205    }
12206
12207    /**
12208     * @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
12209     */
12210    public TestScript setCopyrightElement(MarkdownType value) { 
12211      this.copyright = value;
12212      return this;
12213    }
12214
12215    /**
12216     * @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.
12217     */
12218    public String getCopyright() { 
12219      return this.copyright == null ? null : this.copyright.getValue();
12220    }
12221
12222    /**
12223     * @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.
12224     */
12225    public TestScript setCopyright(String value) { 
12226      if (value == null)
12227        this.copyright = null;
12228      else {
12229        if (this.copyright == null)
12230          this.copyright = new MarkdownType();
12231        this.copyright.setValue(value);
12232      }
12233      return this;
12234    }
12235
12236    /**
12237     * @return {@link #origin} (An abstract server used in operations within this test script in the origin element.)
12238     */
12239    public List<TestScriptOriginComponent> getOrigin() { 
12240      if (this.origin == null)
12241        this.origin = new ArrayList<TestScriptOriginComponent>();
12242      return this.origin;
12243    }
12244
12245    /**
12246     * @return Returns a reference to <code>this</code> for easy method chaining
12247     */
12248    public TestScript setOrigin(List<TestScriptOriginComponent> theOrigin) { 
12249      this.origin = theOrigin;
12250      return this;
12251    }
12252
12253    public boolean hasOrigin() { 
12254      if (this.origin == null)
12255        return false;
12256      for (TestScriptOriginComponent item : this.origin)
12257        if (!item.isEmpty())
12258          return true;
12259      return false;
12260    }
12261
12262    public TestScriptOriginComponent addOrigin() { //3
12263      TestScriptOriginComponent t = new TestScriptOriginComponent();
12264      if (this.origin == null)
12265        this.origin = new ArrayList<TestScriptOriginComponent>();
12266      this.origin.add(t);
12267      return t;
12268    }
12269
12270    public TestScript addOrigin(TestScriptOriginComponent t) { //3
12271      if (t == null)
12272        return this;
12273      if (this.origin == null)
12274        this.origin = new ArrayList<TestScriptOriginComponent>();
12275      this.origin.add(t);
12276      return this;
12277    }
12278
12279    /**
12280     * @return The first repetition of repeating field {@link #origin}, creating it if it does not already exist {3}
12281     */
12282    public TestScriptOriginComponent getOriginFirstRep() { 
12283      if (getOrigin().isEmpty()) {
12284        addOrigin();
12285      }
12286      return getOrigin().get(0);
12287    }
12288
12289    /**
12290     * @return {@link #destination} (An abstract server used in operations within this test script in the destination element.)
12291     */
12292    public List<TestScriptDestinationComponent> getDestination() { 
12293      if (this.destination == null)
12294        this.destination = new ArrayList<TestScriptDestinationComponent>();
12295      return this.destination;
12296    }
12297
12298    /**
12299     * @return Returns a reference to <code>this</code> for easy method chaining
12300     */
12301    public TestScript setDestination(List<TestScriptDestinationComponent> theDestination) { 
12302      this.destination = theDestination;
12303      return this;
12304    }
12305
12306    public boolean hasDestination() { 
12307      if (this.destination == null)
12308        return false;
12309      for (TestScriptDestinationComponent item : this.destination)
12310        if (!item.isEmpty())
12311          return true;
12312      return false;
12313    }
12314
12315    public TestScriptDestinationComponent addDestination() { //3
12316      TestScriptDestinationComponent t = new TestScriptDestinationComponent();
12317      if (this.destination == null)
12318        this.destination = new ArrayList<TestScriptDestinationComponent>();
12319      this.destination.add(t);
12320      return t;
12321    }
12322
12323    public TestScript addDestination(TestScriptDestinationComponent t) { //3
12324      if (t == null)
12325        return this;
12326      if (this.destination == null)
12327        this.destination = new ArrayList<TestScriptDestinationComponent>();
12328      this.destination.add(t);
12329      return this;
12330    }
12331
12332    /**
12333     * @return The first repetition of repeating field {@link #destination}, creating it if it does not already exist {3}
12334     */
12335    public TestScriptDestinationComponent getDestinationFirstRep() { 
12336      if (getDestination().isEmpty()) {
12337        addDestination();
12338      }
12339      return getDestination().get(0);
12340    }
12341
12342    /**
12343     * @return {@link #metadata} (The required capability must exist and are assumed to function correctly on the FHIR server being tested.)
12344     */
12345    public TestScriptMetadataComponent getMetadata() { 
12346      if (this.metadata == null)
12347        if (Configuration.errorOnAutoCreate())
12348          throw new Error("Attempt to auto-create TestScript.metadata");
12349        else if (Configuration.doAutoCreate())
12350          this.metadata = new TestScriptMetadataComponent(); // cc
12351      return this.metadata;
12352    }
12353
12354    public boolean hasMetadata() { 
12355      return this.metadata != null && !this.metadata.isEmpty();
12356    }
12357
12358    /**
12359     * @param value {@link #metadata} (The required capability must exist and are assumed to function correctly on the FHIR server being tested.)
12360     */
12361    public TestScript setMetadata(TestScriptMetadataComponent value) { 
12362      this.metadata = value;
12363      return this;
12364    }
12365
12366    /**
12367     * @return {@link #fixture} (Fixture in the test script - by reference (uri). All fixtures are required for the test script to execute.)
12368     */
12369    public List<TestScriptFixtureComponent> getFixture() { 
12370      if (this.fixture == null)
12371        this.fixture = new ArrayList<TestScriptFixtureComponent>();
12372      return this.fixture;
12373    }
12374
12375    /**
12376     * @return Returns a reference to <code>this</code> for easy method chaining
12377     */
12378    public TestScript setFixture(List<TestScriptFixtureComponent> theFixture) { 
12379      this.fixture = theFixture;
12380      return this;
12381    }
12382
12383    public boolean hasFixture() { 
12384      if (this.fixture == null)
12385        return false;
12386      for (TestScriptFixtureComponent item : this.fixture)
12387        if (!item.isEmpty())
12388          return true;
12389      return false;
12390    }
12391
12392    public TestScriptFixtureComponent addFixture() { //3
12393      TestScriptFixtureComponent t = new TestScriptFixtureComponent();
12394      if (this.fixture == null)
12395        this.fixture = new ArrayList<TestScriptFixtureComponent>();
12396      this.fixture.add(t);
12397      return t;
12398    }
12399
12400    public TestScript addFixture(TestScriptFixtureComponent t) { //3
12401      if (t == null)
12402        return this;
12403      if (this.fixture == null)
12404        this.fixture = new ArrayList<TestScriptFixtureComponent>();
12405      this.fixture.add(t);
12406      return this;
12407    }
12408
12409    /**
12410     * @return The first repetition of repeating field {@link #fixture}, creating it if it does not already exist {3}
12411     */
12412    public TestScriptFixtureComponent getFixtureFirstRep() { 
12413      if (getFixture().isEmpty()) {
12414        addFixture();
12415      }
12416      return getFixture().get(0);
12417    }
12418
12419    /**
12420     * @return {@link #profile} (Reference to the profile to be used for validation.)
12421     */
12422    public List<Reference> getProfile() { 
12423      if (this.profile == null)
12424        this.profile = new ArrayList<Reference>();
12425      return this.profile;
12426    }
12427
12428    /**
12429     * @return Returns a reference to <code>this</code> for easy method chaining
12430     */
12431    public TestScript setProfile(List<Reference> theProfile) { 
12432      this.profile = theProfile;
12433      return this;
12434    }
12435
12436    public boolean hasProfile() { 
12437      if (this.profile == null)
12438        return false;
12439      for (Reference item : this.profile)
12440        if (!item.isEmpty())
12441          return true;
12442      return false;
12443    }
12444
12445    public Reference addProfile() { //3
12446      Reference t = new Reference();
12447      if (this.profile == null)
12448        this.profile = new ArrayList<Reference>();
12449      this.profile.add(t);
12450      return t;
12451    }
12452
12453    public TestScript addProfile(Reference t) { //3
12454      if (t == null)
12455        return this;
12456      if (this.profile == null)
12457        this.profile = new ArrayList<Reference>();
12458      this.profile.add(t);
12459      return this;
12460    }
12461
12462    /**
12463     * @return The first repetition of repeating field {@link #profile}, creating it if it does not already exist {3}
12464     */
12465    public Reference getProfileFirstRep() { 
12466      if (getProfile().isEmpty()) {
12467        addProfile();
12468      }
12469      return getProfile().get(0);
12470    }
12471
12472    /**
12473     * @return {@link #variable} (Variable is set based either on element value in response body or on header field value in the response headers.)
12474     */
12475    public List<TestScriptVariableComponent> getVariable() { 
12476      if (this.variable == null)
12477        this.variable = new ArrayList<TestScriptVariableComponent>();
12478      return this.variable;
12479    }
12480
12481    /**
12482     * @return Returns a reference to <code>this</code> for easy method chaining
12483     */
12484    public TestScript setVariable(List<TestScriptVariableComponent> theVariable) { 
12485      this.variable = theVariable;
12486      return this;
12487    }
12488
12489    public boolean hasVariable() { 
12490      if (this.variable == null)
12491        return false;
12492      for (TestScriptVariableComponent item : this.variable)
12493        if (!item.isEmpty())
12494          return true;
12495      return false;
12496    }
12497
12498    public TestScriptVariableComponent addVariable() { //3
12499      TestScriptVariableComponent t = new TestScriptVariableComponent();
12500      if (this.variable == null)
12501        this.variable = new ArrayList<TestScriptVariableComponent>();
12502      this.variable.add(t);
12503      return t;
12504    }
12505
12506    public TestScript addVariable(TestScriptVariableComponent t) { //3
12507      if (t == null)
12508        return this;
12509      if (this.variable == null)
12510        this.variable = new ArrayList<TestScriptVariableComponent>();
12511      this.variable.add(t);
12512      return this;
12513    }
12514
12515    /**
12516     * @return The first repetition of repeating field {@link #variable}, creating it if it does not already exist {3}
12517     */
12518    public TestScriptVariableComponent getVariableFirstRep() { 
12519      if (getVariable().isEmpty()) {
12520        addVariable();
12521      }
12522      return getVariable().get(0);
12523    }
12524
12525    /**
12526     * @return {@link #setup} (A series of required setup operations before tests are executed.)
12527     */
12528    public TestScriptSetupComponent getSetup() { 
12529      if (this.setup == null)
12530        if (Configuration.errorOnAutoCreate())
12531          throw new Error("Attempt to auto-create TestScript.setup");
12532        else if (Configuration.doAutoCreate())
12533          this.setup = new TestScriptSetupComponent(); // cc
12534      return this.setup;
12535    }
12536
12537    public boolean hasSetup() { 
12538      return this.setup != null && !this.setup.isEmpty();
12539    }
12540
12541    /**
12542     * @param value {@link #setup} (A series of required setup operations before tests are executed.)
12543     */
12544    public TestScript setSetup(TestScriptSetupComponent value) { 
12545      this.setup = value;
12546      return this;
12547    }
12548
12549    /**
12550     * @return {@link #test} (A test in this script.)
12551     */
12552    public List<TestScriptTestComponent> getTest() { 
12553      if (this.test == null)
12554        this.test = new ArrayList<TestScriptTestComponent>();
12555      return this.test;
12556    }
12557
12558    /**
12559     * @return Returns a reference to <code>this</code> for easy method chaining
12560     */
12561    public TestScript setTest(List<TestScriptTestComponent> theTest) { 
12562      this.test = theTest;
12563      return this;
12564    }
12565
12566    public boolean hasTest() { 
12567      if (this.test == null)
12568        return false;
12569      for (TestScriptTestComponent item : this.test)
12570        if (!item.isEmpty())
12571          return true;
12572      return false;
12573    }
12574
12575    public TestScriptTestComponent addTest() { //3
12576      TestScriptTestComponent t = new TestScriptTestComponent();
12577      if (this.test == null)
12578        this.test = new ArrayList<TestScriptTestComponent>();
12579      this.test.add(t);
12580      return t;
12581    }
12582
12583    public TestScript addTest(TestScriptTestComponent t) { //3
12584      if (t == null)
12585        return this;
12586      if (this.test == null)
12587        this.test = new ArrayList<TestScriptTestComponent>();
12588      this.test.add(t);
12589      return this;
12590    }
12591
12592    /**
12593     * @return The first repetition of repeating field {@link #test}, creating it if it does not already exist {3}
12594     */
12595    public TestScriptTestComponent getTestFirstRep() { 
12596      if (getTest().isEmpty()) {
12597        addTest();
12598      }
12599      return getTest().get(0);
12600    }
12601
12602    /**
12603     * @return {@link #teardown} (A series of operations required to clean up after all the tests are executed (successfully or otherwise).)
12604     */
12605    public TestScriptTeardownComponent getTeardown() { 
12606      if (this.teardown == null)
12607        if (Configuration.errorOnAutoCreate())
12608          throw new Error("Attempt to auto-create TestScript.teardown");
12609        else if (Configuration.doAutoCreate())
12610          this.teardown = new TestScriptTeardownComponent(); // cc
12611      return this.teardown;
12612    }
12613
12614    public boolean hasTeardown() { 
12615      return this.teardown != null && !this.teardown.isEmpty();
12616    }
12617
12618    /**
12619     * @param value {@link #teardown} (A series of operations required to clean up after all the tests are executed (successfully or otherwise).)
12620     */
12621    public TestScript setTeardown(TestScriptTeardownComponent value) { 
12622      this.teardown = value;
12623      return this;
12624    }
12625
12626      protected void listChildren(List<Property> children) {
12627        super.listChildren(children);
12628        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 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));
12629        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, 1, identifier));
12630        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));
12631        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));
12632        children.add(new Property("title", "string", "A short, descriptive, user-friendly title for the test script.", 0, 1, title));
12633        children.add(new Property("status", "code", "The status of this test script. Enables tracking the life-cycle of the content.", 0, 1, status));
12634        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));
12635        children.add(new Property("date", "dateTime", "The date  (and optionally time) when the test script was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the test script changes.", 0, 1, date));
12636        children.add(new Property("publisher", "string", "The name of the organization or individual that published the test script.", 0, 1, publisher));
12637        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));
12638        children.add(new Property("description", "markdown", "A free text natural language description of the test script from a consumer's perspective.", 0, 1, description));
12639        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));
12640        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));
12641        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));
12642        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));
12643        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));
12644        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));
12645        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));
12646        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));
12647        children.add(new Property("profile", "Reference(Any)", "Reference to the profile to be used for validation.", 0, java.lang.Integer.MAX_VALUE, profile));
12648        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));
12649        children.add(new Property("setup", "", "A series of required setup operations before tests are executed.", 0, 1, setup));
12650        children.add(new Property("test", "", "A test in this script.", 0, java.lang.Integer.MAX_VALUE, test));
12651        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));
12652      }
12653
12654      @Override
12655      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
12656        switch (_hash) {
12657        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 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);
12658        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, 1, identifier);
12659        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);
12660        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);
12661        case 110371416: /*title*/  return new Property("title", "string", "A short, descriptive, user-friendly title for the test script.", 0, 1, title);
12662        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);
12663        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);
12664        case 3076014: /*date*/  return new Property("date", "dateTime", "The date  (and optionally time) when the test script was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the test script changes.", 0, 1, date);
12665        case 1447404028: /*publisher*/  return new Property("publisher", "string", "The name of the organization or individual that published the test script.", 0, 1, publisher);
12666        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);
12667        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);
12668        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);
12669        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);
12670        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);
12671        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);
12672        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);
12673        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);
12674        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);
12675        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);
12676        case -309425751: /*profile*/  return new Property("profile", "Reference(Any)", "Reference to the profile to be used for validation.", 0, java.lang.Integer.MAX_VALUE, profile);
12677        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);
12678        case 109329021: /*setup*/  return new Property("setup", "", "A series of required setup operations before tests are executed.", 0, 1, setup);
12679        case 3556498: /*test*/  return new Property("test", "", "A test in this script.", 0, java.lang.Integer.MAX_VALUE, test);
12680        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);
12681        default: return super.getNamedProperty(_hash, _name, _checkValid);
12682        }
12683
12684      }
12685
12686      @Override
12687      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
12688        switch (hash) {
12689        case 116079: /*url*/ return this.url == null ? new Base[0] : new Base[] {this.url}; // UriType
12690        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : new Base[] {this.identifier}; // Identifier
12691        case 351608024: /*version*/ return this.version == null ? new Base[0] : new Base[] {this.version}; // StringType
12692        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
12693        case 110371416: /*title*/ return this.title == null ? new Base[0] : new Base[] {this.title}; // StringType
12694        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<PublicationStatus>
12695        case -404562712: /*experimental*/ return this.experimental == null ? new Base[0] : new Base[] {this.experimental}; // BooleanType
12696        case 3076014: /*date*/ return this.date == null ? new Base[0] : new Base[] {this.date}; // DateTimeType
12697        case 1447404028: /*publisher*/ return this.publisher == null ? new Base[0] : new Base[] {this.publisher}; // StringType
12698        case 951526432: /*contact*/ return this.contact == null ? new Base[0] : this.contact.toArray(new Base[this.contact.size()]); // ContactDetail
12699        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // MarkdownType
12700        case -669707736: /*useContext*/ return this.useContext == null ? new Base[0] : this.useContext.toArray(new Base[this.useContext.size()]); // UsageContext
12701        case -507075711: /*jurisdiction*/ return this.jurisdiction == null ? new Base[0] : this.jurisdiction.toArray(new Base[this.jurisdiction.size()]); // CodeableConcept
12702        case -220463842: /*purpose*/ return this.purpose == null ? new Base[0] : new Base[] {this.purpose}; // MarkdownType
12703        case 1522889671: /*copyright*/ return this.copyright == null ? new Base[0] : new Base[] {this.copyright}; // MarkdownType
12704        case -1008619738: /*origin*/ return this.origin == null ? new Base[0] : this.origin.toArray(new Base[this.origin.size()]); // TestScriptOriginComponent
12705        case -1429847026: /*destination*/ return this.destination == null ? new Base[0] : this.destination.toArray(new Base[this.destination.size()]); // TestScriptDestinationComponent
12706        case -450004177: /*metadata*/ return this.metadata == null ? new Base[0] : new Base[] {this.metadata}; // TestScriptMetadataComponent
12707        case -843449847: /*fixture*/ return this.fixture == null ? new Base[0] : this.fixture.toArray(new Base[this.fixture.size()]); // TestScriptFixtureComponent
12708        case -309425751: /*profile*/ return this.profile == null ? new Base[0] : this.profile.toArray(new Base[this.profile.size()]); // Reference
12709        case -1249586564: /*variable*/ return this.variable == null ? new Base[0] : this.variable.toArray(new Base[this.variable.size()]); // TestScriptVariableComponent
12710        case 109329021: /*setup*/ return this.setup == null ? new Base[0] : new Base[] {this.setup}; // TestScriptSetupComponent
12711        case 3556498: /*test*/ return this.test == null ? new Base[0] : this.test.toArray(new Base[this.test.size()]); // TestScriptTestComponent
12712        case -1663474172: /*teardown*/ return this.teardown == null ? new Base[0] : new Base[] {this.teardown}; // TestScriptTeardownComponent
12713        default: return super.getProperty(hash, name, checkValid);
12714        }
12715
12716      }
12717
12718      @Override
12719      public Base setProperty(int hash, String name, Base value) throws FHIRException {
12720        switch (hash) {
12721        case 116079: // url
12722          this.url = TypeConvertor.castToUri(value); // UriType
12723          return value;
12724        case -1618432855: // identifier
12725          this.identifier = TypeConvertor.castToIdentifier(value); // Identifier
12726          return value;
12727        case 351608024: // version
12728          this.version = TypeConvertor.castToString(value); // StringType
12729          return value;
12730        case 3373707: // name
12731          this.name = TypeConvertor.castToString(value); // StringType
12732          return value;
12733        case 110371416: // title
12734          this.title = TypeConvertor.castToString(value); // StringType
12735          return value;
12736        case -892481550: // status
12737          value = new PublicationStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
12738          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
12739          return value;
12740        case -404562712: // experimental
12741          this.experimental = TypeConvertor.castToBoolean(value); // BooleanType
12742          return value;
12743        case 3076014: // date
12744          this.date = TypeConvertor.castToDateTime(value); // DateTimeType
12745          return value;
12746        case 1447404028: // publisher
12747          this.publisher = TypeConvertor.castToString(value); // StringType
12748          return value;
12749        case 951526432: // contact
12750          this.getContact().add(TypeConvertor.castToContactDetail(value)); // ContactDetail
12751          return value;
12752        case -1724546052: // description
12753          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
12754          return value;
12755        case -669707736: // useContext
12756          this.getUseContext().add(TypeConvertor.castToUsageContext(value)); // UsageContext
12757          return value;
12758        case -507075711: // jurisdiction
12759          this.getJurisdiction().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
12760          return value;
12761        case -220463842: // purpose
12762          this.purpose = TypeConvertor.castToMarkdown(value); // MarkdownType
12763          return value;
12764        case 1522889671: // copyright
12765          this.copyright = TypeConvertor.castToMarkdown(value); // MarkdownType
12766          return value;
12767        case -1008619738: // origin
12768          this.getOrigin().add((TestScriptOriginComponent) value); // TestScriptOriginComponent
12769          return value;
12770        case -1429847026: // destination
12771          this.getDestination().add((TestScriptDestinationComponent) value); // TestScriptDestinationComponent
12772          return value;
12773        case -450004177: // metadata
12774          this.metadata = (TestScriptMetadataComponent) value; // TestScriptMetadataComponent
12775          return value;
12776        case -843449847: // fixture
12777          this.getFixture().add((TestScriptFixtureComponent) value); // TestScriptFixtureComponent
12778          return value;
12779        case -309425751: // profile
12780          this.getProfile().add(TypeConvertor.castToReference(value)); // Reference
12781          return value;
12782        case -1249586564: // variable
12783          this.getVariable().add((TestScriptVariableComponent) value); // TestScriptVariableComponent
12784          return value;
12785        case 109329021: // setup
12786          this.setup = (TestScriptSetupComponent) value; // TestScriptSetupComponent
12787          return value;
12788        case 3556498: // test
12789          this.getTest().add((TestScriptTestComponent) value); // TestScriptTestComponent
12790          return value;
12791        case -1663474172: // teardown
12792          this.teardown = (TestScriptTeardownComponent) value; // TestScriptTeardownComponent
12793          return value;
12794        default: return super.setProperty(hash, name, value);
12795        }
12796
12797      }
12798
12799      @Override
12800      public Base setProperty(String name, Base value) throws FHIRException {
12801        if (name.equals("url")) {
12802          this.url = TypeConvertor.castToUri(value); // UriType
12803        } else if (name.equals("identifier")) {
12804          this.identifier = TypeConvertor.castToIdentifier(value); // Identifier
12805        } else if (name.equals("version")) {
12806          this.version = TypeConvertor.castToString(value); // StringType
12807        } else if (name.equals("name")) {
12808          this.name = TypeConvertor.castToString(value); // StringType
12809        } else if (name.equals("title")) {
12810          this.title = TypeConvertor.castToString(value); // StringType
12811        } else if (name.equals("status")) {
12812          value = new PublicationStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
12813          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
12814        } else if (name.equals("experimental")) {
12815          this.experimental = TypeConvertor.castToBoolean(value); // BooleanType
12816        } else if (name.equals("date")) {
12817          this.date = TypeConvertor.castToDateTime(value); // DateTimeType
12818        } else if (name.equals("publisher")) {
12819          this.publisher = TypeConvertor.castToString(value); // StringType
12820        } else if (name.equals("contact")) {
12821          this.getContact().add(TypeConvertor.castToContactDetail(value));
12822        } else if (name.equals("description")) {
12823          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
12824        } else if (name.equals("useContext")) {
12825          this.getUseContext().add(TypeConvertor.castToUsageContext(value));
12826        } else if (name.equals("jurisdiction")) {
12827          this.getJurisdiction().add(TypeConvertor.castToCodeableConcept(value));
12828        } else if (name.equals("purpose")) {
12829          this.purpose = TypeConvertor.castToMarkdown(value); // MarkdownType
12830        } else if (name.equals("copyright")) {
12831          this.copyright = TypeConvertor.castToMarkdown(value); // MarkdownType
12832        } else if (name.equals("origin")) {
12833          this.getOrigin().add((TestScriptOriginComponent) value);
12834        } else if (name.equals("destination")) {
12835          this.getDestination().add((TestScriptDestinationComponent) value);
12836        } else if (name.equals("metadata")) {
12837          this.metadata = (TestScriptMetadataComponent) value; // TestScriptMetadataComponent
12838        } else if (name.equals("fixture")) {
12839          this.getFixture().add((TestScriptFixtureComponent) value);
12840        } else if (name.equals("profile")) {
12841          this.getProfile().add(TypeConvertor.castToReference(value));
12842        } else if (name.equals("variable")) {
12843          this.getVariable().add((TestScriptVariableComponent) value);
12844        } else if (name.equals("setup")) {
12845          this.setup = (TestScriptSetupComponent) value; // TestScriptSetupComponent
12846        } else if (name.equals("test")) {
12847          this.getTest().add((TestScriptTestComponent) value);
12848        } else if (name.equals("teardown")) {
12849          this.teardown = (TestScriptTeardownComponent) value; // TestScriptTeardownComponent
12850        } else
12851          return super.setProperty(name, value);
12852        return value;
12853      }
12854
12855      @Override
12856      public Base makeProperty(int hash, String name) throws FHIRException {
12857        switch (hash) {
12858        case 116079:  return getUrlElement();
12859        case -1618432855:  return getIdentifier();
12860        case 351608024:  return getVersionElement();
12861        case 3373707:  return getNameElement();
12862        case 110371416:  return getTitleElement();
12863        case -892481550:  return getStatusElement();
12864        case -404562712:  return getExperimentalElement();
12865        case 3076014:  return getDateElement();
12866        case 1447404028:  return getPublisherElement();
12867        case 951526432:  return addContact(); 
12868        case -1724546052:  return getDescriptionElement();
12869        case -669707736:  return addUseContext(); 
12870        case -507075711:  return addJurisdiction(); 
12871        case -220463842:  return getPurposeElement();
12872        case 1522889671:  return getCopyrightElement();
12873        case -1008619738:  return addOrigin(); 
12874        case -1429847026:  return addDestination(); 
12875        case -450004177:  return getMetadata();
12876        case -843449847:  return addFixture(); 
12877        case -309425751:  return addProfile(); 
12878        case -1249586564:  return addVariable(); 
12879        case 109329021:  return getSetup();
12880        case 3556498:  return addTest(); 
12881        case -1663474172:  return getTeardown();
12882        default: return super.makeProperty(hash, name);
12883        }
12884
12885      }
12886
12887      @Override
12888      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
12889        switch (hash) {
12890        case 116079: /*url*/ return new String[] {"uri"};
12891        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
12892        case 351608024: /*version*/ return new String[] {"string"};
12893        case 3373707: /*name*/ return new String[] {"string"};
12894        case 110371416: /*title*/ return new String[] {"string"};
12895        case -892481550: /*status*/ return new String[] {"code"};
12896        case -404562712: /*experimental*/ return new String[] {"boolean"};
12897        case 3076014: /*date*/ return new String[] {"dateTime"};
12898        case 1447404028: /*publisher*/ return new String[] {"string"};
12899        case 951526432: /*contact*/ return new String[] {"ContactDetail"};
12900        case -1724546052: /*description*/ return new String[] {"markdown"};
12901        case -669707736: /*useContext*/ return new String[] {"UsageContext"};
12902        case -507075711: /*jurisdiction*/ return new String[] {"CodeableConcept"};
12903        case -220463842: /*purpose*/ return new String[] {"markdown"};
12904        case 1522889671: /*copyright*/ return new String[] {"markdown"};
12905        case -1008619738: /*origin*/ return new String[] {};
12906        case -1429847026: /*destination*/ return new String[] {};
12907        case -450004177: /*metadata*/ return new String[] {};
12908        case -843449847: /*fixture*/ return new String[] {};
12909        case -309425751: /*profile*/ return new String[] {"Reference"};
12910        case -1249586564: /*variable*/ return new String[] {};
12911        case 109329021: /*setup*/ return new String[] {};
12912        case 3556498: /*test*/ return new String[] {};
12913        case -1663474172: /*teardown*/ return new String[] {};
12914        default: return super.getTypesForProperty(hash, name);
12915        }
12916
12917      }
12918
12919      @Override
12920      public Base addChild(String name) throws FHIRException {
12921        if (name.equals("url")) {
12922          throw new FHIRException("Cannot call addChild on a primitive type TestScript.url");
12923        }
12924        else if (name.equals("identifier")) {
12925          this.identifier = new Identifier();
12926          return this.identifier;
12927        }
12928        else if (name.equals("version")) {
12929          throw new FHIRException("Cannot call addChild on a primitive type TestScript.version");
12930        }
12931        else if (name.equals("name")) {
12932          throw new FHIRException("Cannot call addChild on a primitive type TestScript.name");
12933        }
12934        else if (name.equals("title")) {
12935          throw new FHIRException("Cannot call addChild on a primitive type TestScript.title");
12936        }
12937        else if (name.equals("status")) {
12938          throw new FHIRException("Cannot call addChild on a primitive type TestScript.status");
12939        }
12940        else if (name.equals("experimental")) {
12941          throw new FHIRException("Cannot call addChild on a primitive type TestScript.experimental");
12942        }
12943        else if (name.equals("date")) {
12944          throw new FHIRException("Cannot call addChild on a primitive type TestScript.date");
12945        }
12946        else if (name.equals("publisher")) {
12947          throw new FHIRException("Cannot call addChild on a primitive type TestScript.publisher");
12948        }
12949        else if (name.equals("contact")) {
12950          return addContact();
12951        }
12952        else if (name.equals("description")) {
12953          throw new FHIRException("Cannot call addChild on a primitive type TestScript.description");
12954        }
12955        else if (name.equals("useContext")) {
12956          return addUseContext();
12957        }
12958        else if (name.equals("jurisdiction")) {
12959          return addJurisdiction();
12960        }
12961        else if (name.equals("purpose")) {
12962          throw new FHIRException("Cannot call addChild on a primitive type TestScript.purpose");
12963        }
12964        else if (name.equals("copyright")) {
12965          throw new FHIRException("Cannot call addChild on a primitive type TestScript.copyright");
12966        }
12967        else if (name.equals("origin")) {
12968          return addOrigin();
12969        }
12970        else if (name.equals("destination")) {
12971          return addDestination();
12972        }
12973        else if (name.equals("metadata")) {
12974          this.metadata = new TestScriptMetadataComponent();
12975          return this.metadata;
12976        }
12977        else if (name.equals("fixture")) {
12978          return addFixture();
12979        }
12980        else if (name.equals("profile")) {
12981          return addProfile();
12982        }
12983        else if (name.equals("variable")) {
12984          return addVariable();
12985        }
12986        else if (name.equals("setup")) {
12987          this.setup = new TestScriptSetupComponent();
12988          return this.setup;
12989        }
12990        else if (name.equals("test")) {
12991          return addTest();
12992        }
12993        else if (name.equals("teardown")) {
12994          this.teardown = new TestScriptTeardownComponent();
12995          return this.teardown;
12996        }
12997        else
12998          return super.addChild(name);
12999      }
13000
13001  public String fhirType() {
13002    return "TestScript";
13003
13004  }
13005
13006      public TestScript copy() {
13007        TestScript dst = new TestScript();
13008        copyValues(dst);
13009        return dst;
13010      }
13011
13012      public void copyValues(TestScript dst) {
13013        super.copyValues(dst);
13014        dst.url = url == null ? null : url.copy();
13015        dst.identifier = identifier == null ? null : identifier.copy();
13016        dst.version = version == null ? null : version.copy();
13017        dst.name = name == null ? null : name.copy();
13018        dst.title = title == null ? null : title.copy();
13019        dst.status = status == null ? null : status.copy();
13020        dst.experimental = experimental == null ? null : experimental.copy();
13021        dst.date = date == null ? null : date.copy();
13022        dst.publisher = publisher == null ? null : publisher.copy();
13023        if (contact != null) {
13024          dst.contact = new ArrayList<ContactDetail>();
13025          for (ContactDetail i : contact)
13026            dst.contact.add(i.copy());
13027        };
13028        dst.description = description == null ? null : description.copy();
13029        if (useContext != null) {
13030          dst.useContext = new ArrayList<UsageContext>();
13031          for (UsageContext i : useContext)
13032            dst.useContext.add(i.copy());
13033        };
13034        if (jurisdiction != null) {
13035          dst.jurisdiction = new ArrayList<CodeableConcept>();
13036          for (CodeableConcept i : jurisdiction)
13037            dst.jurisdiction.add(i.copy());
13038        };
13039        dst.purpose = purpose == null ? null : purpose.copy();
13040        dst.copyright = copyright == null ? null : copyright.copy();
13041        if (origin != null) {
13042          dst.origin = new ArrayList<TestScriptOriginComponent>();
13043          for (TestScriptOriginComponent i : origin)
13044            dst.origin.add(i.copy());
13045        };
13046        if (destination != null) {
13047          dst.destination = new ArrayList<TestScriptDestinationComponent>();
13048          for (TestScriptDestinationComponent i : destination)
13049            dst.destination.add(i.copy());
13050        };
13051        dst.metadata = metadata == null ? null : metadata.copy();
13052        if (fixture != null) {
13053          dst.fixture = new ArrayList<TestScriptFixtureComponent>();
13054          for (TestScriptFixtureComponent i : fixture)
13055            dst.fixture.add(i.copy());
13056        };
13057        if (profile != null) {
13058          dst.profile = new ArrayList<Reference>();
13059          for (Reference i : profile)
13060            dst.profile.add(i.copy());
13061        };
13062        if (variable != null) {
13063          dst.variable = new ArrayList<TestScriptVariableComponent>();
13064          for (TestScriptVariableComponent i : variable)
13065            dst.variable.add(i.copy());
13066        };
13067        dst.setup = setup == null ? null : setup.copy();
13068        if (test != null) {
13069          dst.test = new ArrayList<TestScriptTestComponent>();
13070          for (TestScriptTestComponent i : test)
13071            dst.test.add(i.copy());
13072        };
13073        dst.teardown = teardown == null ? null : teardown.copy();
13074      }
13075
13076      protected TestScript typedCopy() {
13077        return copy();
13078      }
13079
13080      @Override
13081      public boolean equalsDeep(Base other_) {
13082        if (!super.equalsDeep(other_))
13083          return false;
13084        if (!(other_ instanceof TestScript))
13085          return false;
13086        TestScript o = (TestScript) other_;
13087        return compareDeep(url, o.url, true) && compareDeep(identifier, o.identifier, true) && compareDeep(version, o.version, true)
13088           && compareDeep(name, o.name, true) && compareDeep(title, o.title, true) && compareDeep(status, o.status, true)
13089           && compareDeep(experimental, o.experimental, true) && compareDeep(date, o.date, true) && compareDeep(publisher, o.publisher, true)
13090           && compareDeep(contact, o.contact, true) && compareDeep(description, o.description, true) && compareDeep(useContext, o.useContext, true)
13091           && compareDeep(jurisdiction, o.jurisdiction, true) && compareDeep(purpose, o.purpose, true) && compareDeep(copyright, o.copyright, true)
13092           && compareDeep(origin, o.origin, true) && compareDeep(destination, o.destination, true) && compareDeep(metadata, o.metadata, true)
13093           && compareDeep(fixture, o.fixture, true) && compareDeep(profile, o.profile, true) && compareDeep(variable, o.variable, true)
13094           && compareDeep(setup, o.setup, true) && compareDeep(test, o.test, true) && compareDeep(teardown, o.teardown, true)
13095          ;
13096      }
13097
13098      @Override
13099      public boolean equalsShallow(Base other_) {
13100        if (!super.equalsShallow(other_))
13101          return false;
13102        if (!(other_ instanceof TestScript))
13103          return false;
13104        TestScript o = (TestScript) other_;
13105        return compareValues(url, o.url, true) && compareValues(version, o.version, true) && compareValues(name, o.name, true)
13106           && compareValues(title, o.title, true) && compareValues(status, o.status, true) && compareValues(experimental, o.experimental, true)
13107           && compareValues(date, o.date, true) && compareValues(publisher, o.publisher, true) && compareValues(description, o.description, true)
13108           && compareValues(purpose, o.purpose, true) && compareValues(copyright, o.copyright, true);
13109      }
13110
13111      public boolean isEmpty() {
13112        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(url, identifier, version
13113          , name, title, status, experimental, date, publisher, contact, description, useContext
13114          , jurisdiction, purpose, copyright, origin, destination, metadata, fixture, profile
13115          , variable, setup, test, teardown);
13116      }
13117
13118  @Override
13119  public ResourceType getResourceType() {
13120    return ResourceType.TestScript;
13121   }
13122
13123 /**
13124   * Search parameter: <b>context-quantity</b>
13125   * <p>
13126   * Description: <b>A quantity- or range-valued use context assigned to the test script</b><br>
13127   * Type: <b>quantity</b><br>
13128   * Path: <b>(TestScript.useContext.value as Quantity) | (TestScript.useContext.value as Range)</b><br>
13129   * </p>
13130   */
13131  @SearchParamDefinition(name="context-quantity", path="(TestScript.useContext.value as Quantity) | (TestScript.useContext.value as Range)", description="A quantity- or range-valued use context assigned to the test script", type="quantity" )
13132  public static final String SP_CONTEXT_QUANTITY = "context-quantity";
13133 /**
13134   * <b>Fluent Client</b> search parameter constant for <b>context-quantity</b>
13135   * <p>
13136   * Description: <b>A quantity- or range-valued use context assigned to the test script</b><br>
13137   * Type: <b>quantity</b><br>
13138   * Path: <b>(TestScript.useContext.value as Quantity) | (TestScript.useContext.value as Range)</b><br>
13139   * </p>
13140   */
13141  public static final ca.uhn.fhir.rest.gclient.QuantityClientParam CONTEXT_QUANTITY = new ca.uhn.fhir.rest.gclient.QuantityClientParam(SP_CONTEXT_QUANTITY);
13142
13143 /**
13144   * Search parameter: <b>context-type-quantity</b>
13145   * <p>
13146   * Description: <b>A use context type and quantity- or range-based value assigned to the test script</b><br>
13147   * Type: <b>composite</b><br>
13148   * Path: <b>TestScript.useContext</b><br>
13149   * </p>
13150   */
13151  @SearchParamDefinition(name="context-type-quantity", path="TestScript.useContext", description="A use context type and quantity- or range-based value assigned to the test script", type="composite", compositeOf={"context-type", "context-quantity"} )
13152  public static final String SP_CONTEXT_TYPE_QUANTITY = "context-type-quantity";
13153 /**
13154   * <b>Fluent Client</b> search parameter constant for <b>context-type-quantity</b>
13155   * <p>
13156   * Description: <b>A use context type and quantity- or range-based value assigned to the test script</b><br>
13157   * Type: <b>composite</b><br>
13158   * Path: <b>TestScript.useContext</b><br>
13159   * </p>
13160   */
13161  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);
13162
13163 /**
13164   * Search parameter: <b>context-type-value</b>
13165   * <p>
13166   * Description: <b>A use context type and value assigned to the test script</b><br>
13167   * Type: <b>composite</b><br>
13168   * Path: <b>TestScript.useContext</b><br>
13169   * </p>
13170   */
13171  @SearchParamDefinition(name="context-type-value", path="TestScript.useContext", description="A use context type and value assigned to the test script", type="composite", compositeOf={"context-type", "context"} )
13172  public static final String SP_CONTEXT_TYPE_VALUE = "context-type-value";
13173 /**
13174   * <b>Fluent Client</b> search parameter constant for <b>context-type-value</b>
13175   * <p>
13176   * Description: <b>A use context type and value assigned to the test script</b><br>
13177   * Type: <b>composite</b><br>
13178   * Path: <b>TestScript.useContext</b><br>
13179   * </p>
13180   */
13181  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);
13182
13183 /**
13184   * Search parameter: <b>context-type</b>
13185   * <p>
13186   * Description: <b>A type of use context assigned to the test script</b><br>
13187   * Type: <b>token</b><br>
13188   * Path: <b>TestScript.useContext.code</b><br>
13189   * </p>
13190   */
13191  @SearchParamDefinition(name="context-type", path="TestScript.useContext.code", description="A type of use context assigned to the test script", type="token" )
13192  public static final String SP_CONTEXT_TYPE = "context-type";
13193 /**
13194   * <b>Fluent Client</b> search parameter constant for <b>context-type</b>
13195   * <p>
13196   * Description: <b>A type of use context assigned to the test script</b><br>
13197   * Type: <b>token</b><br>
13198   * Path: <b>TestScript.useContext.code</b><br>
13199   * </p>
13200   */
13201  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT_TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTEXT_TYPE);
13202
13203 /**
13204   * Search parameter: <b>context</b>
13205   * <p>
13206   * Description: <b>A use context assigned to the test script</b><br>
13207   * Type: <b>token</b><br>
13208   * Path: <b>(TestScript.useContext.value as CodeableConcept)</b><br>
13209   * </p>
13210   */
13211  @SearchParamDefinition(name="context", path="(TestScript.useContext.value as CodeableConcept)", description="A use context assigned to the test script", type="token" )
13212  public static final String SP_CONTEXT = "context";
13213 /**
13214   * <b>Fluent Client</b> search parameter constant for <b>context</b>
13215   * <p>
13216   * Description: <b>A use context assigned to the test script</b><br>
13217   * Type: <b>token</b><br>
13218   * Path: <b>(TestScript.useContext.value as CodeableConcept)</b><br>
13219   * </p>
13220   */
13221  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTEXT);
13222
13223 /**
13224   * Search parameter: <b>date</b>
13225   * <p>
13226   * Description: <b>The test script publication date</b><br>
13227   * Type: <b>date</b><br>
13228   * Path: <b>TestScript.date</b><br>
13229   * </p>
13230   */
13231  @SearchParamDefinition(name="date", path="TestScript.date", description="The test script publication date", type="date" )
13232  public static final String SP_DATE = "date";
13233 /**
13234   * <b>Fluent Client</b> search parameter constant for <b>date</b>
13235   * <p>
13236   * Description: <b>The test script publication date</b><br>
13237   * Type: <b>date</b><br>
13238   * Path: <b>TestScript.date</b><br>
13239   * </p>
13240   */
13241  public static final ca.uhn.fhir.rest.gclient.DateClientParam DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_DATE);
13242
13243 /**
13244   * Search parameter: <b>description</b>
13245   * <p>
13246   * Description: <b>The description of the test script</b><br>
13247   * Type: <b>string</b><br>
13248   * Path: <b>TestScript.description</b><br>
13249   * </p>
13250   */
13251  @SearchParamDefinition(name="description", path="TestScript.description", description="The description of the test script", type="string" )
13252  public static final String SP_DESCRIPTION = "description";
13253 /**
13254   * <b>Fluent Client</b> search parameter constant for <b>description</b>
13255   * <p>
13256   * Description: <b>The description of the test script</b><br>
13257   * Type: <b>string</b><br>
13258   * Path: <b>TestScript.description</b><br>
13259   * </p>
13260   */
13261  public static final ca.uhn.fhir.rest.gclient.StringClientParam DESCRIPTION = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_DESCRIPTION);
13262
13263 /**
13264   * Search parameter: <b>identifier</b>
13265   * <p>
13266   * Description: <b>External identifier for the test script</b><br>
13267   * Type: <b>token</b><br>
13268   * Path: <b>TestScript.identifier</b><br>
13269   * </p>
13270   */
13271  @SearchParamDefinition(name="identifier", path="TestScript.identifier", description="External identifier for the test script", type="token" )
13272  public static final String SP_IDENTIFIER = "identifier";
13273 /**
13274   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
13275   * <p>
13276   * Description: <b>External identifier for the test script</b><br>
13277   * Type: <b>token</b><br>
13278   * Path: <b>TestScript.identifier</b><br>
13279   * </p>
13280   */
13281  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
13282
13283 /**
13284   * Search parameter: <b>jurisdiction</b>
13285   * <p>
13286   * Description: <b>Intended jurisdiction for the test script</b><br>
13287   * Type: <b>token</b><br>
13288   * Path: <b>TestScript.jurisdiction</b><br>
13289   * </p>
13290   */
13291  @SearchParamDefinition(name="jurisdiction", path="TestScript.jurisdiction", description="Intended jurisdiction for the test script", type="token" )
13292  public static final String SP_JURISDICTION = "jurisdiction";
13293 /**
13294   * <b>Fluent Client</b> search parameter constant for <b>jurisdiction</b>
13295   * <p>
13296   * Description: <b>Intended jurisdiction for the test script</b><br>
13297   * Type: <b>token</b><br>
13298   * Path: <b>TestScript.jurisdiction</b><br>
13299   * </p>
13300   */
13301  public static final ca.uhn.fhir.rest.gclient.TokenClientParam JURISDICTION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_JURISDICTION);
13302
13303 /**
13304   * Search parameter: <b>name</b>
13305   * <p>
13306   * Description: <b>Computationally friendly name of the test script</b><br>
13307   * Type: <b>string</b><br>
13308   * Path: <b>TestScript.name</b><br>
13309   * </p>
13310   */
13311  @SearchParamDefinition(name="name", path="TestScript.name", description="Computationally friendly name of the test script", type="string" )
13312  public static final String SP_NAME = "name";
13313 /**
13314   * <b>Fluent Client</b> search parameter constant for <b>name</b>
13315   * <p>
13316   * Description: <b>Computationally friendly name of the test script</b><br>
13317   * Type: <b>string</b><br>
13318   * Path: <b>TestScript.name</b><br>
13319   * </p>
13320   */
13321  public static final ca.uhn.fhir.rest.gclient.StringClientParam NAME = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_NAME);
13322
13323 /**
13324   * Search parameter: <b>publisher</b>
13325   * <p>
13326   * Description: <b>Name of the publisher of the test script</b><br>
13327   * Type: <b>string</b><br>
13328   * Path: <b>TestScript.publisher</b><br>
13329   * </p>
13330   */
13331  @SearchParamDefinition(name="publisher", path="TestScript.publisher", description="Name of the publisher of the test script", type="string" )
13332  public static final String SP_PUBLISHER = "publisher";
13333 /**
13334   * <b>Fluent Client</b> search parameter constant for <b>publisher</b>
13335   * <p>
13336   * Description: <b>Name of the publisher of the test script</b><br>
13337   * Type: <b>string</b><br>
13338   * Path: <b>TestScript.publisher</b><br>
13339   * </p>
13340   */
13341  public static final ca.uhn.fhir.rest.gclient.StringClientParam PUBLISHER = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_PUBLISHER);
13342
13343 /**
13344   * Search parameter: <b>status</b>
13345   * <p>
13346   * Description: <b>The current status of the test script</b><br>
13347   * Type: <b>token</b><br>
13348   * Path: <b>TestScript.status</b><br>
13349   * </p>
13350   */
13351  @SearchParamDefinition(name="status", path="TestScript.status", description="The current status of the test script", type="token" )
13352  public static final String SP_STATUS = "status";
13353 /**
13354   * <b>Fluent Client</b> search parameter constant for <b>status</b>
13355   * <p>
13356   * Description: <b>The current status of the test script</b><br>
13357   * Type: <b>token</b><br>
13358   * Path: <b>TestScript.status</b><br>
13359   * </p>
13360   */
13361  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
13362
13363 /**
13364   * Search parameter: <b>testscript-capability</b>
13365   * <p>
13366   * Description: <b>TestScript required and validated capability</b><br>
13367   * Type: <b>string</b><br>
13368   * Path: <b>TestScript.metadata.capability.description</b><br>
13369   * </p>
13370   */
13371  @SearchParamDefinition(name="testscript-capability", path="TestScript.metadata.capability.description", description="TestScript required and validated capability", type="string" )
13372  public static final String SP_TESTSCRIPT_CAPABILITY = "testscript-capability";
13373 /**
13374   * <b>Fluent Client</b> search parameter constant for <b>testscript-capability</b>
13375   * <p>
13376   * Description: <b>TestScript required and validated capability</b><br>
13377   * Type: <b>string</b><br>
13378   * Path: <b>TestScript.metadata.capability.description</b><br>
13379   * </p>
13380   */
13381  public static final ca.uhn.fhir.rest.gclient.StringClientParam TESTSCRIPT_CAPABILITY = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_TESTSCRIPT_CAPABILITY);
13382
13383 /**
13384   * Search parameter: <b>title</b>
13385   * <p>
13386   * Description: <b>The human-friendly name of the test script</b><br>
13387   * Type: <b>string</b><br>
13388   * Path: <b>TestScript.title</b><br>
13389   * </p>
13390   */
13391  @SearchParamDefinition(name="title", path="TestScript.title", description="The human-friendly name of the test script", type="string" )
13392  public static final String SP_TITLE = "title";
13393 /**
13394   * <b>Fluent Client</b> search parameter constant for <b>title</b>
13395   * <p>
13396   * Description: <b>The human-friendly name of the test script</b><br>
13397   * Type: <b>string</b><br>
13398   * Path: <b>TestScript.title</b><br>
13399   * </p>
13400   */
13401  public static final ca.uhn.fhir.rest.gclient.StringClientParam TITLE = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_TITLE);
13402
13403 /**
13404   * Search parameter: <b>url</b>
13405   * <p>
13406   * Description: <b>The uri that identifies the test script</b><br>
13407   * Type: <b>uri</b><br>
13408   * Path: <b>TestScript.url</b><br>
13409   * </p>
13410   */
13411  @SearchParamDefinition(name="url", path="TestScript.url", description="The uri that identifies the test script", type="uri" )
13412  public static final String SP_URL = "url";
13413 /**
13414   * <b>Fluent Client</b> search parameter constant for <b>url</b>
13415   * <p>
13416   * Description: <b>The uri that identifies the test script</b><br>
13417   * Type: <b>uri</b><br>
13418   * Path: <b>TestScript.url</b><br>
13419   * </p>
13420   */
13421  public static final ca.uhn.fhir.rest.gclient.UriClientParam URL = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_URL);
13422
13423 /**
13424   * Search parameter: <b>version</b>
13425   * <p>
13426   * Description: <b>The business version of the test script</b><br>
13427   * Type: <b>token</b><br>
13428   * Path: <b>TestScript.version</b><br>
13429   * </p>
13430   */
13431  @SearchParamDefinition(name="version", path="TestScript.version", description="The business version of the test script", type="token" )
13432  public static final String SP_VERSION = "version";
13433 /**
13434   * <b>Fluent Client</b> search parameter constant for <b>version</b>
13435   * <p>
13436   * Description: <b>The business version of the test script</b><br>
13437   * Type: <b>token</b><br>
13438   * Path: <b>TestScript.version</b><br>
13439   * </p>
13440   */
13441  public static final ca.uhn.fhir.rest.gclient.TokenClientParam VERSION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_VERSION);
13442
13443
13444}
13445