001package org.hl7.fhir.r4.model;
002
003/*
004  Copyright (c) 2011+, HL7, Inc.
005  All rights reserved.
006  
007  Redistribution and use in source and binary forms, with or without modification, 
008  are permitted provided that the following conditions are met:
009  
010   * Redistributions of source code must retain the above copyright notice, this 
011     list of conditions and the following disclaimer.
012   * Redistributions in binary form must reproduce the above copyright notice, 
013     this list of conditions and the following disclaimer in the documentation 
014     and/or other materials provided with the distribution.
015   * Neither the name of HL7 nor the names of its contributors may be used to 
016     endorse or promote products derived from this software without specific 
017     prior written permission.
018  
019  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
020  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
021  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
022  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
023  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
024  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
025  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
026  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
027  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
028  POSSIBILITY OF SUCH DAMAGE.
029  
030*/
031
032// Generated on Tue, May 12, 2020 07:26+1000 for FHIR v4.0.1
033import java.util.ArrayList;
034import java.util.Date;
035import java.util.List;
036
037import org.hl7.fhir.exceptions.FHIRException;
038import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
039import org.hl7.fhir.r4.model.Enumerations.PublicationStatus;
040import org.hl7.fhir.r4.model.Enumerations.PublicationStatusEnumFactory;
041import org.hl7.fhir.utilities.Utilities;
042
043import ca.uhn.fhir.model.api.annotation.Block;
044import ca.uhn.fhir.model.api.annotation.Child;
045import ca.uhn.fhir.model.api.annotation.ChildOrder;
046import ca.uhn.fhir.model.api.annotation.Description;
047import ca.uhn.fhir.model.api.annotation.ResourceDef;
048import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
049
050/**
051 * Example of workflow instance.
052 */
053@ResourceDef(name = "ExampleScenario", profile = "http://hl7.org/fhir/StructureDefinition/ExampleScenario")
054@ChildOrder(names = { "url", "identifier", "version", "name", "status", "experimental", "date", "publisher", "contact",
055    "useContext", "jurisdiction", "copyright", "purpose", "actor", "instance", "process", "workflow" })
056public class ExampleScenario extends MetadataResource {
057
058  public enum ExampleScenarioActorType {
059    /**
060     * A person.
061     */
062    PERSON,
063    /**
064     * A system.
065     */
066    ENTITY,
067    /**
068     * added to help the parsers with the generic types
069     */
070    NULL;
071
072    public static ExampleScenarioActorType fromCode(String codeString) throws FHIRException {
073      if (codeString == null || "".equals(codeString))
074        return null;
075      if ("person".equals(codeString))
076        return PERSON;
077      if ("entity".equals(codeString))
078        return ENTITY;
079      if (Configuration.isAcceptInvalidEnums())
080        return null;
081      else
082        throw new FHIRException("Unknown ExampleScenarioActorType code '" + codeString + "'");
083    }
084
085    public String toCode() {
086      switch (this) {
087      case PERSON:
088        return "person";
089      case ENTITY:
090        return "entity";
091      case NULL:
092        return null;
093      default:
094        return "?";
095      }
096    }
097
098    public String getSystem() {
099      switch (this) {
100      case PERSON:
101        return "http://hl7.org/fhir/examplescenario-actor-type";
102      case ENTITY:
103        return "http://hl7.org/fhir/examplescenario-actor-type";
104      case NULL:
105        return null;
106      default:
107        return "?";
108      }
109    }
110
111    public String getDefinition() {
112      switch (this) {
113      case PERSON:
114        return "A person.";
115      case ENTITY:
116        return "A system.";
117      case NULL:
118        return null;
119      default:
120        return "?";
121      }
122    }
123
124    public String getDisplay() {
125      switch (this) {
126      case PERSON:
127        return "Person";
128      case ENTITY:
129        return "System";
130      case NULL:
131        return null;
132      default:
133        return "?";
134      }
135    }
136  }
137
138  public static class ExampleScenarioActorTypeEnumFactory implements EnumFactory<ExampleScenarioActorType> {
139    public ExampleScenarioActorType fromCode(String codeString) throws IllegalArgumentException {
140      if (codeString == null || "".equals(codeString))
141        if (codeString == null || "".equals(codeString))
142          return null;
143      if ("person".equals(codeString))
144        return ExampleScenarioActorType.PERSON;
145      if ("entity".equals(codeString))
146        return ExampleScenarioActorType.ENTITY;
147      throw new IllegalArgumentException("Unknown ExampleScenarioActorType code '" + codeString + "'");
148    }
149
150    public Enumeration<ExampleScenarioActorType> fromType(PrimitiveType<?> code) throws FHIRException {
151      if (code == null)
152        return null;
153      if (code.isEmpty())
154        return new Enumeration<ExampleScenarioActorType>(this, ExampleScenarioActorType.NULL, code);
155      String codeString = code.asStringValue();
156      if (codeString == null || "".equals(codeString))
157        return new Enumeration<ExampleScenarioActorType>(this, ExampleScenarioActorType.NULL, code);
158      if ("person".equals(codeString))
159        return new Enumeration<ExampleScenarioActorType>(this, ExampleScenarioActorType.PERSON, code);
160      if ("entity".equals(codeString))
161        return new Enumeration<ExampleScenarioActorType>(this, ExampleScenarioActorType.ENTITY, code);
162      throw new FHIRException("Unknown ExampleScenarioActorType code '" + codeString + "'");
163    }
164
165    public String toCode(ExampleScenarioActorType code) {
166      if (code == ExampleScenarioActorType.PERSON)
167        return "person";
168      if (code == ExampleScenarioActorType.ENTITY)
169        return "entity";
170      return "?";
171    }
172
173    public String toSystem(ExampleScenarioActorType code) {
174      return code.getSystem();
175    }
176  }
177
178  public enum FHIRResourceType {
179    /**
180     * A financial tool for tracking value accrued for a particular purpose. In the
181     * healthcare field, used to track charges for a patient, cost centers, etc.
182     */
183    ACCOUNT,
184    /**
185     * This resource allows for the definition of some activity to be performed,
186     * independent of a particular patient, practitioner, or other performance
187     * context.
188     */
189    ACTIVITYDEFINITION,
190    /**
191     * Actual or potential/avoided event causing unintended physical injury
192     * resulting from or contributed to by medical care, a research study or other
193     * healthcare setting factors that requires additional monitoring, treatment, or
194     * hospitalization, or that results in death.
195     */
196    ADVERSEEVENT,
197    /**
198     * Risk of harmful or undesirable, physiological response which is unique to an
199     * individual and associated with exposure to a substance.
200     */
201    ALLERGYINTOLERANCE,
202    /**
203     * A booking of a healthcare event among patient(s), practitioner(s), related
204     * person(s) and/or device(s) for a specific date/time. This may result in one
205     * or more Encounter(s).
206     */
207    APPOINTMENT,
208    /**
209     * A reply to an appointment request for a patient and/or practitioner(s), such
210     * as a confirmation or rejection.
211     */
212    APPOINTMENTRESPONSE,
213    /**
214     * A record of an event made for purposes of maintaining a security log. Typical
215     * uses include detection of intrusion attempts and monitoring for inappropriate
216     * usage.
217     */
218    AUDITEVENT,
219    /**
220     * Basic is used for handling concepts not yet defined in FHIR, narrative-only
221     * resources that don't map to an existing resource, and custom resources not
222     * appropriate for inclusion in the FHIR specification.
223     */
224    BASIC,
225    /**
226     * A resource that represents the data of a single raw artifact as digital
227     * content accessible in its native format. A Binary resource can contain any
228     * content, whether text, image, pdf, zip archive, etc.
229     */
230    BINARY,
231    /**
232     * A material substance originating from a biological entity intended to be
233     * transplanted or infused into another (possibly the same) biological entity.
234     */
235    BIOLOGICALLYDERIVEDPRODUCT,
236    /**
237     * Record details about an anatomical structure. This resource may be used when
238     * a coded concept does not provide the necessary detail needed for the use
239     * case.
240     */
241    BODYSTRUCTURE,
242    /**
243     * A container for a collection of resources.
244     */
245    BUNDLE,
246    /**
247     * A Capability Statement documents a set of capabilities (behaviors) of a FHIR
248     * Server for a particular version of FHIR that may be used as a statement of
249     * actual server functionality or a statement of required or desired server
250     * implementation.
251     */
252    CAPABILITYSTATEMENT,
253    /**
254     * Describes the intention of how one or more practitioners intend to deliver
255     * care for a particular patient, group or community for a period of time,
256     * possibly limited to care for a specific condition or set of conditions.
257     */
258    CAREPLAN,
259    /**
260     * The Care Team includes all the people and organizations who plan to
261     * participate in the coordination and delivery of care for a patient.
262     */
263    CARETEAM,
264    /**
265     * Catalog entries are wrappers that contextualize items included in a catalog.
266     */
267    CATALOGENTRY,
268    /**
269     * The resource ChargeItem describes the provision of healthcare provider
270     * products for a certain patient, therefore referring not only to the product,
271     * but containing in addition details of the provision, like date, time, amounts
272     * and participating organizations and persons. Main Usage of the ChargeItem is
273     * to enable the billing process and internal cost allocation.
274     */
275    CHARGEITEM,
276    /**
277     * The ChargeItemDefinition resource provides the properties that apply to the
278     * (billing) codes necessary to calculate costs and prices. The properties may
279     * differ largely depending on type and realm, therefore this resource gives
280     * only a rough structure and requires profiling for each type of billing code
281     * system.
282     */
283    CHARGEITEMDEFINITION,
284    /**
285     * A provider issued list of professional services and products which have been
286     * provided, or are to be provided, to a patient which is sent to an insurer for
287     * reimbursement.
288     */
289    CLAIM,
290    /**
291     * This resource provides the adjudication details from the processing of a
292     * Claim resource.
293     */
294    CLAIMRESPONSE,
295    /**
296     * A record of a clinical assessment performed to determine what problem(s) may
297     * affect the patient and before planning the treatments or management
298     * strategies that are best to manage a patient's condition. Assessments are
299     * often 1:1 with a clinical consultation / encounter, but this varies greatly
300     * depending on the clinical workflow. This resource is called
301     * "ClinicalImpression" rather than "ClinicalAssessment" to avoid confusion with
302     * the recording of assessment tools such as Apgar score.
303     */
304    CLINICALIMPRESSION,
305    /**
306     * The CodeSystem resource is used to declare the existence of and describe a
307     * code system or code system supplement and its key properties, and optionally
308     * define a part or all of its content.
309     */
310    CODESYSTEM,
311    /**
312     * An occurrence of information being transmitted; e.g. an alert that was sent
313     * to a responsible provider, a public health agency that was notified about a
314     * reportable condition.
315     */
316    COMMUNICATION,
317    /**
318     * A request to convey information; e.g. the CDS system proposes that an alert
319     * be sent to a responsible provider, the CDS system proposes that the public
320     * health agency be notified about a reportable condition.
321     */
322    COMMUNICATIONREQUEST,
323    /**
324     * A compartment definition that defines how resources are accessed on a server.
325     */
326    COMPARTMENTDEFINITION,
327    /**
328     * A set of healthcare-related information that is assembled together into a
329     * single logical package that provides a single coherent statement of meaning,
330     * establishes its own context and that has clinical attestation with regard to
331     * who is making the statement. A Composition defines the structure and
332     * narrative content necessary for a document. However, a Composition alone does
333     * not constitute a document. Rather, the Composition must be the first entry in
334     * a Bundle where Bundle.type=document, and any other resources referenced from
335     * Composition must be included as subsequent entries in the Bundle (for example
336     * Patient, Practitioner, Encounter, etc.).
337     */
338    COMPOSITION,
339    /**
340     * A statement of relationships from one set of concepts to one or more other
341     * concepts - either concepts in code systems, or data element/data element
342     * concepts, or classes in class models.
343     */
344    CONCEPTMAP,
345    /**
346     * A clinical condition, problem, diagnosis, or other event, situation, issue,
347     * or clinical concept that has risen to a level of concern.
348     */
349    CONDITION,
350    /**
351     * A record of a healthcare consumer?s choices, which permits or denies
352     * identified recipient(s) or recipient role(s) to perform one or more actions
353     * within a given policy context, for specific purposes and periods of time.
354     */
355    CONSENT,
356    /**
357     * Legally enforceable, formally recorded unilateral or bilateral directive
358     * i.e., a policy or agreement.
359     */
360    CONTRACT,
361    /**
362     * Financial instrument which may be used to reimburse or pay for health care
363     * products and services. Includes both insurance and self-payment.
364     */
365    COVERAGE,
366    /**
367     * The CoverageEligibilityRequest provides patient and insurance coverage
368     * information to an insurer for them to respond, in the form of an
369     * CoverageEligibilityResponse, with information regarding whether the stated
370     * coverage is valid and in-force and optionally to provide the insurance
371     * details of the policy.
372     */
373    COVERAGEELIGIBILITYREQUEST,
374    /**
375     * This resource provides eligibility and plan details from the processing of an
376     * CoverageEligibilityRequest resource.
377     */
378    COVERAGEELIGIBILITYRESPONSE,
379    /**
380     * Indicates an actual or potential clinical issue with or between one or more
381     * active or proposed clinical actions for a patient; e.g. Drug-drug
382     * interaction, Ineffective treatment frequency, Procedure-condition conflict,
383     * etc.
384     */
385    DETECTEDISSUE,
386    /**
387     * A type of a manufactured item that is used in the provision of healthcare
388     * without being substantially changed through that activity. The device may be
389     * a medical or non-medical device.
390     */
391    DEVICE,
392    /**
393     * The characteristics, operational status and capabilities of a medical-related
394     * component of a medical device.
395     */
396    DEVICEDEFINITION,
397    /**
398     * Describes a measurement, calculation or setting capability of a medical
399     * device.
400     */
401    DEVICEMETRIC,
402    /**
403     * Represents a request for a patient to employ a medical device. The device may
404     * be an implantable device, or an external assistive device, such as a walker.
405     */
406    DEVICEREQUEST,
407    /**
408     * A record of a device being used by a patient where the record is the result
409     * of a report from the patient or another clinician.
410     */
411    DEVICEUSESTATEMENT,
412    /**
413     * The findings and interpretation of diagnostic tests performed on patients,
414     * groups of patients, devices, and locations, and/or specimens derived from
415     * these. The report includes clinical context such as requesting and provider
416     * information, and some mix of atomic results, images, textual and coded
417     * interpretations, and formatted representation of diagnostic reports.
418     */
419    DIAGNOSTICREPORT,
420    /**
421     * A collection of documents compiled for a purpose together with metadata that
422     * applies to the collection.
423     */
424    DOCUMENTMANIFEST,
425    /**
426     * A reference to a document of any kind for any purpose. Provides metadata
427     * about the document so that the document can be discovered and managed. The
428     * scope of a document is any seralized object with a mime-type, so includes
429     * formal patient centric documents (CDA), cliical notes, scanned paper, and
430     * non-patient specific documents like policy text.
431     */
432    DOCUMENTREFERENCE,
433    /**
434     * A resource that includes narrative, extensions, and contained resources.
435     */
436    DOMAINRESOURCE,
437    /**
438     * The EffectEvidenceSynthesis resource describes the difference in an outcome
439     * between exposures states in a population where the effect estimate is derived
440     * from a combination of research studies.
441     */
442    EFFECTEVIDENCESYNTHESIS,
443    /**
444     * An interaction between a patient and healthcare provider(s) for the purpose
445     * of providing healthcare service(s) or assessing the health status of a
446     * patient.
447     */
448    ENCOUNTER,
449    /**
450     * The technical details of an endpoint that can be used for electronic
451     * services, such as for web services providing XDS.b or a REST endpoint for
452     * another FHIR server. This may include any security context information.
453     */
454    ENDPOINT,
455    /**
456     * This resource provides the insurance enrollment details to the insurer
457     * regarding a specified coverage.
458     */
459    ENROLLMENTREQUEST,
460    /**
461     * This resource provides enrollment and plan details from the processing of an
462     * EnrollmentRequest resource.
463     */
464    ENROLLMENTRESPONSE,
465    /**
466     * An association between a patient and an organization / healthcare provider(s)
467     * during which time encounters may occur. The managing organization assumes a
468     * level of responsibility for the patient during this time.
469     */
470    EPISODEOFCARE,
471    /**
472     * The EventDefinition resource provides a reusable description of when a
473     * particular event can occur.
474     */
475    EVENTDEFINITION,
476    /**
477     * The Evidence resource describes the conditional state (population and any
478     * exposures being compared within the population) and outcome (if specified)
479     * that the knowledge (evidence, assertion, recommendation) is about.
480     */
481    EVIDENCE,
482    /**
483     * The EvidenceVariable resource describes a "PICO" element that knowledge
484     * (evidence, assertion, recommendation) is about.
485     */
486    EVIDENCEVARIABLE,
487    /**
488     * Example of workflow instance.
489     */
490    EXAMPLESCENARIO,
491    /**
492     * This resource provides: the claim details; adjudication details from the
493     * processing of a Claim; and optionally account balance information, for
494     * informing the subscriber of the benefits provided.
495     */
496    EXPLANATIONOFBENEFIT,
497    /**
498     * Significant health conditions for a person related to the patient relevant in
499     * the context of care for the patient.
500     */
501    FAMILYMEMBERHISTORY,
502    /**
503     * Prospective warnings of potential issues when providing care to the patient.
504     */
505    FLAG,
506    /**
507     * Describes the intended objective(s) for a patient, group or organization
508     * care, for example, weight loss, restoring an activity of daily living,
509     * obtaining herd immunity via immunization, meeting a process improvement
510     * objective, etc.
511     */
512    GOAL,
513    /**
514     * A formal computable definition of a graph of resources - that is, a coherent
515     * set of resources that form a graph by following references. The Graph
516     * Definition resource defines a set and makes rules about the set.
517     */
518    GRAPHDEFINITION,
519    /**
520     * Represents a defined collection of entities that may be discussed or acted
521     * upon collectively but which are not expected to act collectively, and are not
522     * formally or legally recognized; i.e. a collection of entities that isn't an
523     * Organization.
524     */
525    GROUP,
526    /**
527     * A guidance response is the formal response to a guidance request, including
528     * any output parameters returned by the evaluation, as well as the description
529     * of any proposed actions to be taken.
530     */
531    GUIDANCERESPONSE,
532    /**
533     * The details of a healthcare service available at a location.
534     */
535    HEALTHCARESERVICE,
536    /**
537     * Representation of the content produced in a DICOM imaging study. A study
538     * comprises a set of series, each of which includes a set of Service-Object
539     * Pair Instances (SOP Instances - images or other data) acquired or produced in
540     * a common context. A series is of only one modality (e.g. X-ray, CT, MR,
541     * ultrasound), but a study may have multiple series of different modalities.
542     */
543    IMAGINGSTUDY,
544    /**
545     * Describes the event of a patient being administered a vaccine or a record of
546     * an immunization as reported by a patient, a clinician or another party.
547     */
548    IMMUNIZATION,
549    /**
550     * Describes a comparison of an immunization event against published
551     * recommendations to determine if the administration is "valid" in relation to
552     * those recommendations.
553     */
554    IMMUNIZATIONEVALUATION,
555    /**
556     * A patient's point-in-time set of recommendations (i.e. forecasting) according
557     * to a published schedule with optional supporting justification.
558     */
559    IMMUNIZATIONRECOMMENDATION,
560    /**
561     * A set of rules of how a particular interoperability or standards problem is
562     * solved - typically through the use of FHIR resources. This resource is used
563     * to gather all the parts of an implementation guide into a logical whole and
564     * to publish a computable definition of all the parts.
565     */
566    IMPLEMENTATIONGUIDE,
567    /**
568     * Details of a Health Insurance product/plan provided by an organization.
569     */
570    INSURANCEPLAN,
571    /**
572     * Invoice containing collected ChargeItems from an Account with calculated
573     * individual and total price for Billing purpose.
574     */
575    INVOICE,
576    /**
577     * The Library resource is a general-purpose container for knowledge asset
578     * definitions. It can be used to describe and expose existing knowledge assets
579     * such as logic libraries and information model descriptions, as well as to
580     * describe a collection of knowledge assets.
581     */
582    LIBRARY,
583    /**
584     * Identifies two or more records (resource instances) that refer to the same
585     * real-world "occurrence".
586     */
587    LINKAGE,
588    /**
589     * A list is a curated collection of resources.
590     */
591    LIST,
592    /**
593     * Details and position information for a physical place where services are
594     * provided and resources and participants may be stored, found, contained, or
595     * accommodated.
596     */
597    LOCATION,
598    /**
599     * The Measure resource provides the definition of a quality measure.
600     */
601    MEASURE,
602    /**
603     * The MeasureReport resource contains the results of the calculation of a
604     * measure; and optionally a reference to the resources involved in that
605     * calculation.
606     */
607    MEASUREREPORT,
608    /**
609     * A photo, video, or audio recording acquired or used in healthcare. The actual
610     * content may be inline or provided by direct reference.
611     */
612    MEDIA,
613    /**
614     * This resource is primarily used for the identification and definition of a
615     * medication for the purposes of prescribing, dispensing, and administering a
616     * medication as well as for making statements about medication use.
617     */
618    MEDICATION,
619    /**
620     * Describes the event of a patient consuming or otherwise being administered a
621     * medication. This may be as simple as swallowing a tablet or it may be a long
622     * running infusion. Related resources tie this event to the authorizing
623     * prescription, and the specific encounter between patient and health care
624     * practitioner.
625     */
626    MEDICATIONADMINISTRATION,
627    /**
628     * Indicates that a medication product is to be or has been dispensed for a
629     * named person/patient. This includes a description of the medication product
630     * (supply) provided and the instructions for administering the medication. The
631     * medication dispense is the result of a pharmacy system responding to a
632     * medication order.
633     */
634    MEDICATIONDISPENSE,
635    /**
636     * Information about a medication that is used to support knowledge.
637     */
638    MEDICATIONKNOWLEDGE,
639    /**
640     * An order or request for both supply of the medication and the instructions
641     * for administration of the medication to a patient. The resource is called
642     * "MedicationRequest" rather than "MedicationPrescription" or "MedicationOrder"
643     * to generalize the use across inpatient and outpatient settings, including
644     * care plans, etc., and to harmonize with workflow patterns.
645     */
646    MEDICATIONREQUEST,
647    /**
648     * A record of a medication that is being consumed by a patient. A
649     * MedicationStatement may indicate that the patient may be taking the
650     * medication now or has taken the medication in the past or will be taking the
651     * medication in the future. The source of this information can be the patient,
652     * significant other (such as a family member or spouse), or a clinician. A
653     * common scenario where this information is captured is during the history
654     * taking process during a patient visit or stay. The medication information may
655     * come from sources such as the patient's memory, from a prescription bottle,
656     * or from a list of medications the patient, clinician or other party
657     * maintains.
658     * 
659     * The primary difference between a medication statement and a medication
660     * administration is that the medication administration has complete
661     * administration information and is based on actual administration information
662     * from the person who administered the medication. A medication statement is
663     * often, if not always, less specific. There is no required date/time when the
664     * medication was administered, in fact we only know that a source has reported
665     * the patient is taking this medication, where details such as time, quantity,
666     * or rate or even medication product may be incomplete or missing or less
667     * precise. As stated earlier, the medication statement information may come
668     * from the patient's memory, from a prescription bottle or from a list of
669     * medications the patient, clinician or other party maintains. Medication
670     * administration is more formal and is not missing detailed information.
671     */
672    MEDICATIONSTATEMENT,
673    /**
674     * Detailed definition of a medicinal product, typically for uses other than
675     * direct patient care (e.g. regulatory use).
676     */
677    MEDICINALPRODUCT,
678    /**
679     * The regulatory authorization of a medicinal product.
680     */
681    MEDICINALPRODUCTAUTHORIZATION,
682    /**
683     * The clinical particulars - indications, contraindications etc. of a medicinal
684     * product, including for regulatory purposes.
685     */
686    MEDICINALPRODUCTCONTRAINDICATION,
687    /**
688     * Indication for the Medicinal Product.
689     */
690    MEDICINALPRODUCTINDICATION,
691    /**
692     * An ingredient of a manufactured item or pharmaceutical product.
693     */
694    MEDICINALPRODUCTINGREDIENT,
695    /**
696     * The interactions of the medicinal product with other medicinal products, or
697     * other forms of interactions.
698     */
699    MEDICINALPRODUCTINTERACTION,
700    /**
701     * The manufactured item as contained in the packaged medicinal product.
702     */
703    MEDICINALPRODUCTMANUFACTURED,
704    /**
705     * A medicinal product in a container or package.
706     */
707    MEDICINALPRODUCTPACKAGED,
708    /**
709     * A pharmaceutical product described in terms of its composition and dose form.
710     */
711    MEDICINALPRODUCTPHARMACEUTICAL,
712    /**
713     * Describe the undesirable effects of the medicinal product.
714     */
715    MEDICINALPRODUCTUNDESIRABLEEFFECT,
716    /**
717     * Defines the characteristics of a message that can be shared between systems,
718     * including the type of event that initiates the message, the content to be
719     * transmitted and what response(s), if any, are permitted.
720     */
721    MESSAGEDEFINITION,
722    /**
723     * The header for a message exchange that is either requesting or responding to
724     * an action. The reference(s) that are the subject of the action as well as
725     * other information related to the action are typically transmitted in a bundle
726     * in which the MessageHeader resource instance is the first resource in the
727     * bundle.
728     */
729    MESSAGEHEADER,
730    /**
731     * Raw data describing a biological sequence.
732     */
733    MOLECULARSEQUENCE,
734    /**
735     * A curated namespace that issues unique symbols within that namespace for the
736     * identification of concepts, people, devices, etc. Represents a "System" used
737     * within the Identifier and Coding data types.
738     */
739    NAMINGSYSTEM,
740    /**
741     * A request to supply a diet, formula feeding (enteral) or oral nutritional
742     * supplement to a patient/resident.
743     */
744    NUTRITIONORDER,
745    /**
746     * Measurements and simple assertions made about a patient, device or other
747     * subject.
748     */
749    OBSERVATION,
750    /**
751     * Set of definitional characteristics for a kind of observation or measurement
752     * produced or consumed by an orderable health care service.
753     */
754    OBSERVATIONDEFINITION,
755    /**
756     * A formal computable definition of an operation (on the RESTful interface) or
757     * a named query (using the search interaction).
758     */
759    OPERATIONDEFINITION,
760    /**
761     * A collection of error, warning, or information messages that result from a
762     * system action.
763     */
764    OPERATIONOUTCOME,
765    /**
766     * A formally or informally recognized grouping of people or organizations
767     * formed for the purpose of achieving some form of collective action. Includes
768     * companies, institutions, corporations, departments, community groups,
769     * healthcare practice groups, payer/insurer, etc.
770     */
771    ORGANIZATION,
772    /**
773     * Defines an affiliation/assotiation/relationship between 2 distinct
774     * oganizations, that is not a part-of relationship/sub-division relationship.
775     */
776    ORGANIZATIONAFFILIATION,
777    /**
778     * This resource is a non-persisted resource used to pass information into and
779     * back from an [operation](operations.html). It has no other use, and there is
780     * no RESTful endpoint associated with it.
781     */
782    PARAMETERS,
783    /**
784     * Demographics and other administrative information about an individual or
785     * animal receiving care or other health-related services.
786     */
787    PATIENT,
788    /**
789     * This resource provides the status of the payment for goods and services
790     * rendered, and the request and response resource references.
791     */
792    PAYMENTNOTICE,
793    /**
794     * This resource provides the details including amount of a payment and
795     * allocates the payment items being paid.
796     */
797    PAYMENTRECONCILIATION,
798    /**
799     * Demographics and administrative information about a person independent of a
800     * specific health-related context.
801     */
802    PERSON,
803    /**
804     * This resource allows for the definition of various types of plans as a
805     * sharable, consumable, and executable artifact. The resource is general enough
806     * to support the description of a broad range of clinical artifacts such as
807     * clinical decision support rules, order sets and protocols.
808     */
809    PLANDEFINITION,
810    /**
811     * A person who is directly or indirectly involved in the provisioning of
812     * healthcare.
813     */
814    PRACTITIONER,
815    /**
816     * A specific set of Roles/Locations/specialties/services that a practitioner
817     * may perform at an organization for a period of time.
818     */
819    PRACTITIONERROLE,
820    /**
821     * An action that is or was performed on or for a patient. This can be a
822     * physical intervention like an operation, or less invasive like long term
823     * services, counseling, or hypnotherapy.
824     */
825    PROCEDURE,
826    /**
827     * Provenance of a resource is a record that describes entities and processes
828     * involved in producing and delivering or otherwise influencing that resource.
829     * Provenance provides a critical foundation for assessing authenticity,
830     * enabling trust, and allowing reproducibility. Provenance assertions are a
831     * form of contextual metadata and can themselves become important records with
832     * their own provenance. Provenance statement indicates clinical significance in
833     * terms of confidence in authenticity, reliability, and trustworthiness,
834     * integrity, and stage in lifecycle (e.g. Document Completion - has the
835     * artifact been legally authenticated), all of which may impact security,
836     * privacy, and trust policies.
837     */
838    PROVENANCE,
839    /**
840     * A structured set of questions intended to guide the collection of answers
841     * from end-users. Questionnaires provide detailed control over order,
842     * presentation, phraseology and grouping to allow coherent, consistent data
843     * collection.
844     */
845    QUESTIONNAIRE,
846    /**
847     * A structured set of questions and their answers. The questions are ordered
848     * and grouped into coherent subsets, corresponding to the structure of the
849     * grouping of the questionnaire being responded to.
850     */
851    QUESTIONNAIRERESPONSE,
852    /**
853     * Information about a person that is involved in the care for a patient, but
854     * who is not the target of healthcare, nor has a formal responsibility in the
855     * care process.
856     */
857    RELATEDPERSON,
858    /**
859     * A group of related requests that can be used to capture intended activities
860     * that have inter-dependencies such as "give this medication after that one".
861     */
862    REQUESTGROUP,
863    /**
864     * The ResearchDefinition resource describes the conditional state (population
865     * and any exposures being compared within the population) and outcome (if
866     * specified) that the knowledge (evidence, assertion, recommendation) is about.
867     */
868    RESEARCHDEFINITION,
869    /**
870     * The ResearchElementDefinition resource describes a "PICO" element that
871     * knowledge (evidence, assertion, recommendation) is about.
872     */
873    RESEARCHELEMENTDEFINITION,
874    /**
875     * A process where a researcher or organization plans and then executes a series
876     * of steps intended to increase the field of healthcare-related knowledge. This
877     * includes studies of safety, efficacy, comparative effectiveness and other
878     * information about medications, devices, therapies and other interventional
879     * and investigative techniques. A ResearchStudy involves the gathering of
880     * information about human or animal subjects.
881     */
882    RESEARCHSTUDY,
883    /**
884     * A physical entity which is the primary unit of operational and/or
885     * administrative interest in a study.
886     */
887    RESEARCHSUBJECT,
888    /**
889     * This is the base resource type for everything.
890     */
891    RESOURCE,
892    /**
893     * An assessment of the likely outcome(s) for a patient or other subject as well
894     * as the likelihood of each outcome.
895     */
896    RISKASSESSMENT,
897    /**
898     * The RiskEvidenceSynthesis resource describes the likelihood of an outcome in
899     * a population plus exposure state where the risk estimate is derived from a
900     * combination of research studies.
901     */
902    RISKEVIDENCESYNTHESIS,
903    /**
904     * A container for slots of time that may be available for booking appointments.
905     */
906    SCHEDULE,
907    /**
908     * A search parameter that defines a named search item that can be used to
909     * search/filter on a resource.
910     */
911    SEARCHPARAMETER,
912    /**
913     * A record of a request for service such as diagnostic investigations,
914     * treatments, or operations to be performed.
915     */
916    SERVICEREQUEST,
917    /**
918     * A slot of time on a schedule that may be available for booking appointments.
919     */
920    SLOT,
921    /**
922     * A sample to be used for analysis.
923     */
924    SPECIMEN,
925    /**
926     * A kind of specimen with associated set of requirements.
927     */
928    SPECIMENDEFINITION,
929    /**
930     * A definition of a FHIR structure. This resource is used to describe the
931     * underlying resources, data types defined in FHIR, and also for describing
932     * extensions and constraints on resources and data types.
933     */
934    STRUCTUREDEFINITION,
935    /**
936     * A Map of relationships between 2 structures that can be used to transform
937     * data.
938     */
939    STRUCTUREMAP,
940    /**
941     * The subscription resource is used to define a push-based subscription from a
942     * server to another system. Once a subscription is registered with the server,
943     * the server checks every resource that is created or updated, and if the
944     * resource matches the given criteria, it sends a message on the defined
945     * "channel" so that another system can take an appropriate action.
946     */
947    SUBSCRIPTION,
948    /**
949     * A homogeneous material with a definite composition.
950     */
951    SUBSTANCE,
952    /**
953     * Nucleic acids are defined by three distinct elements: the base, sugar and
954     * linkage. Individual substance/moiety IDs will be created for each of these
955     * elements. The nucleotide sequence will be always entered in the 5?-3?
956     * direction.
957     */
958    SUBSTANCENUCLEICACID,
959    /**
960     * Todo.
961     */
962    SUBSTANCEPOLYMER,
963    /**
964     * A SubstanceProtein is defined as a single unit of a linear amino acid
965     * sequence, or a combination of subunits that are either covalently linked or
966     * have a defined invariant stoichiometric relationship. This includes all
967     * synthetic, recombinant and purified SubstanceProteins of defined sequence,
968     * whether the use is therapeutic or prophylactic. This set of elements will be
969     * used to describe albumins, coagulation factors, cytokines, growth factors,
970     * peptide/SubstanceProtein hormones, enzymes, toxins, toxoids, recombinant
971     * vaccines, and immunomodulators.
972     */
973    SUBSTANCEPROTEIN,
974    /**
975     * Todo.
976     */
977    SUBSTANCEREFERENCEINFORMATION,
978    /**
979     * Source material shall capture information on the taxonomic and anatomical
980     * origins as well as the fraction of a material that can result in or can be
981     * modified to form a substance. This set of data elements shall be used to
982     * define polymer substances isolated from biological matrices. Taxonomic and
983     * anatomical origins shall be described using a controlled vocabulary as
984     * required. This information is captured for naturally derived polymers ( .
985     * starch) and structurally diverse substances. For Organisms belonging to the
986     * Kingdom Plantae the Substance level defines the fresh material of a single
987     * species or infraspecies, the Herbal Drug and the Herbal preparation. For
988     * Herbal preparations, the fraction information will be captured at the
989     * Substance information level and additional information for herbal extracts
990     * will be captured at the Specified Substance Group 1 information level. See
991     * for further explanation the Substance Class: Structurally Diverse and the
992     * herbal annex.
993     */
994    SUBSTANCESOURCEMATERIAL,
995    /**
996     * The detailed description of a substance, typically at a level beyond what is
997     * used for prescribing.
998     */
999    SUBSTANCESPECIFICATION,
1000    /**
1001     * Record of delivery of what is supplied.
1002     */
1003    SUPPLYDELIVERY,
1004    /**
1005     * A record of a request for a medication, substance or device used in the
1006     * healthcare setting.
1007     */
1008    SUPPLYREQUEST,
1009    /**
1010     * A task to be performed.
1011     */
1012    TASK,
1013    /**
1014     * A TerminologyCapabilities resource documents a set of capabilities
1015     * (behaviors) of a FHIR Terminology Server that may be used as a statement of
1016     * actual server functionality or a statement of required or desired server
1017     * implementation.
1018     */
1019    TERMINOLOGYCAPABILITIES,
1020    /**
1021     * A summary of information based on the results of executing a TestScript.
1022     */
1023    TESTREPORT,
1024    /**
1025     * A structured set of tests against a FHIR server or client implementation to
1026     * determine compliance against the FHIR specification.
1027     */
1028    TESTSCRIPT,
1029    /**
1030     * A ValueSet resource instance specifies a set of codes drawn from one or more
1031     * code systems, intended for use in a particular context. Value sets link
1032     * between [[[CodeSystem]]] definitions and their use in [coded
1033     * elements](terminologies.html).
1034     */
1035    VALUESET,
1036    /**
1037     * Describes validation requirements, source(s), status and dates for one or
1038     * more elements.
1039     */
1040    VERIFICATIONRESULT,
1041    /**
1042     * An authorization for the provision of glasses and/or contact lenses to a
1043     * patient.
1044     */
1045    VISIONPRESCRIPTION,
1046    /**
1047     * added to help the parsers with the generic types
1048     */
1049    NULL;
1050
1051    public static FHIRResourceType fromCode(String codeString) throws FHIRException {
1052      if (codeString == null || "".equals(codeString))
1053        return null;
1054      if ("Account".equals(codeString))
1055        return ACCOUNT;
1056      if ("ActivityDefinition".equals(codeString))
1057        return ACTIVITYDEFINITION;
1058      if ("AdverseEvent".equals(codeString))
1059        return ADVERSEEVENT;
1060      if ("AllergyIntolerance".equals(codeString))
1061        return ALLERGYINTOLERANCE;
1062      if ("Appointment".equals(codeString))
1063        return APPOINTMENT;
1064      if ("AppointmentResponse".equals(codeString))
1065        return APPOINTMENTRESPONSE;
1066      if ("AuditEvent".equals(codeString))
1067        return AUDITEVENT;
1068      if ("Basic".equals(codeString))
1069        return BASIC;
1070      if ("Binary".equals(codeString))
1071        return BINARY;
1072      if ("BiologicallyDerivedProduct".equals(codeString))
1073        return BIOLOGICALLYDERIVEDPRODUCT;
1074      if ("BodyStructure".equals(codeString))
1075        return BODYSTRUCTURE;
1076      if ("Bundle".equals(codeString))
1077        return BUNDLE;
1078      if ("CapabilityStatement".equals(codeString))
1079        return CAPABILITYSTATEMENT;
1080      if ("CarePlan".equals(codeString))
1081        return CAREPLAN;
1082      if ("CareTeam".equals(codeString))
1083        return CARETEAM;
1084      if ("CatalogEntry".equals(codeString))
1085        return CATALOGENTRY;
1086      if ("ChargeItem".equals(codeString))
1087        return CHARGEITEM;
1088      if ("ChargeItemDefinition".equals(codeString))
1089        return CHARGEITEMDEFINITION;
1090      if ("Claim".equals(codeString))
1091        return CLAIM;
1092      if ("ClaimResponse".equals(codeString))
1093        return CLAIMRESPONSE;
1094      if ("ClinicalImpression".equals(codeString))
1095        return CLINICALIMPRESSION;
1096      if ("CodeSystem".equals(codeString))
1097        return CODESYSTEM;
1098      if ("Communication".equals(codeString))
1099        return COMMUNICATION;
1100      if ("CommunicationRequest".equals(codeString))
1101        return COMMUNICATIONREQUEST;
1102      if ("CompartmentDefinition".equals(codeString))
1103        return COMPARTMENTDEFINITION;
1104      if ("Composition".equals(codeString))
1105        return COMPOSITION;
1106      if ("ConceptMap".equals(codeString))
1107        return CONCEPTMAP;
1108      if ("Condition".equals(codeString))
1109        return CONDITION;
1110      if ("Consent".equals(codeString))
1111        return CONSENT;
1112      if ("Contract".equals(codeString))
1113        return CONTRACT;
1114      if ("Coverage".equals(codeString))
1115        return COVERAGE;
1116      if ("CoverageEligibilityRequest".equals(codeString))
1117        return COVERAGEELIGIBILITYREQUEST;
1118      if ("CoverageEligibilityResponse".equals(codeString))
1119        return COVERAGEELIGIBILITYRESPONSE;
1120      if ("DetectedIssue".equals(codeString))
1121        return DETECTEDISSUE;
1122      if ("Device".equals(codeString))
1123        return DEVICE;
1124      if ("DeviceDefinition".equals(codeString))
1125        return DEVICEDEFINITION;
1126      if ("DeviceMetric".equals(codeString))
1127        return DEVICEMETRIC;
1128      if ("DeviceRequest".equals(codeString))
1129        return DEVICEREQUEST;
1130      if ("DeviceUseStatement".equals(codeString))
1131        return DEVICEUSESTATEMENT;
1132      if ("DiagnosticReport".equals(codeString))
1133        return DIAGNOSTICREPORT;
1134      if ("DocumentManifest".equals(codeString))
1135        return DOCUMENTMANIFEST;
1136      if ("DocumentReference".equals(codeString))
1137        return DOCUMENTREFERENCE;
1138      if ("DomainResource".equals(codeString))
1139        return DOMAINRESOURCE;
1140      if ("EffectEvidenceSynthesis".equals(codeString))
1141        return EFFECTEVIDENCESYNTHESIS;
1142      if ("Encounter".equals(codeString))
1143        return ENCOUNTER;
1144      if ("Endpoint".equals(codeString))
1145        return ENDPOINT;
1146      if ("EnrollmentRequest".equals(codeString))
1147        return ENROLLMENTREQUEST;
1148      if ("EnrollmentResponse".equals(codeString))
1149        return ENROLLMENTRESPONSE;
1150      if ("EpisodeOfCare".equals(codeString))
1151        return EPISODEOFCARE;
1152      if ("EventDefinition".equals(codeString))
1153        return EVENTDEFINITION;
1154      if ("Evidence".equals(codeString))
1155        return EVIDENCE;
1156      if ("EvidenceVariable".equals(codeString))
1157        return EVIDENCEVARIABLE;
1158      if ("ExampleScenario".equals(codeString))
1159        return EXAMPLESCENARIO;
1160      if ("ExplanationOfBenefit".equals(codeString))
1161        return EXPLANATIONOFBENEFIT;
1162      if ("FamilyMemberHistory".equals(codeString))
1163        return FAMILYMEMBERHISTORY;
1164      if ("Flag".equals(codeString))
1165        return FLAG;
1166      if ("Goal".equals(codeString))
1167        return GOAL;
1168      if ("GraphDefinition".equals(codeString))
1169        return GRAPHDEFINITION;
1170      if ("Group".equals(codeString))
1171        return GROUP;
1172      if ("GuidanceResponse".equals(codeString))
1173        return GUIDANCERESPONSE;
1174      if ("HealthcareService".equals(codeString))
1175        return HEALTHCARESERVICE;
1176      if ("ImagingStudy".equals(codeString))
1177        return IMAGINGSTUDY;
1178      if ("Immunization".equals(codeString))
1179        return IMMUNIZATION;
1180      if ("ImmunizationEvaluation".equals(codeString))
1181        return IMMUNIZATIONEVALUATION;
1182      if ("ImmunizationRecommendation".equals(codeString))
1183        return IMMUNIZATIONRECOMMENDATION;
1184      if ("ImplementationGuide".equals(codeString))
1185        return IMPLEMENTATIONGUIDE;
1186      if ("InsurancePlan".equals(codeString))
1187        return INSURANCEPLAN;
1188      if ("Invoice".equals(codeString))
1189        return INVOICE;
1190      if ("Library".equals(codeString))
1191        return LIBRARY;
1192      if ("Linkage".equals(codeString))
1193        return LINKAGE;
1194      if ("List".equals(codeString))
1195        return LIST;
1196      if ("Location".equals(codeString))
1197        return LOCATION;
1198      if ("Measure".equals(codeString))
1199        return MEASURE;
1200      if ("MeasureReport".equals(codeString))
1201        return MEASUREREPORT;
1202      if ("Media".equals(codeString))
1203        return MEDIA;
1204      if ("Medication".equals(codeString))
1205        return MEDICATION;
1206      if ("MedicationAdministration".equals(codeString))
1207        return MEDICATIONADMINISTRATION;
1208      if ("MedicationDispense".equals(codeString))
1209        return MEDICATIONDISPENSE;
1210      if ("MedicationKnowledge".equals(codeString))
1211        return MEDICATIONKNOWLEDGE;
1212      if ("MedicationRequest".equals(codeString))
1213        return MEDICATIONREQUEST;
1214      if ("MedicationStatement".equals(codeString))
1215        return MEDICATIONSTATEMENT;
1216      if ("MedicinalProduct".equals(codeString))
1217        return MEDICINALPRODUCT;
1218      if ("MedicinalProductAuthorization".equals(codeString))
1219        return MEDICINALPRODUCTAUTHORIZATION;
1220      if ("MedicinalProductContraindication".equals(codeString))
1221        return MEDICINALPRODUCTCONTRAINDICATION;
1222      if ("MedicinalProductIndication".equals(codeString))
1223        return MEDICINALPRODUCTINDICATION;
1224      if ("MedicinalProductIngredient".equals(codeString))
1225        return MEDICINALPRODUCTINGREDIENT;
1226      if ("MedicinalProductInteraction".equals(codeString))
1227        return MEDICINALPRODUCTINTERACTION;
1228      if ("MedicinalProductManufactured".equals(codeString))
1229        return MEDICINALPRODUCTMANUFACTURED;
1230      if ("MedicinalProductPackaged".equals(codeString))
1231        return MEDICINALPRODUCTPACKAGED;
1232      if ("MedicinalProductPharmaceutical".equals(codeString))
1233        return MEDICINALPRODUCTPHARMACEUTICAL;
1234      if ("MedicinalProductUndesirableEffect".equals(codeString))
1235        return MEDICINALPRODUCTUNDESIRABLEEFFECT;
1236      if ("MessageDefinition".equals(codeString))
1237        return MESSAGEDEFINITION;
1238      if ("MessageHeader".equals(codeString))
1239        return MESSAGEHEADER;
1240      if ("MolecularSequence".equals(codeString))
1241        return MOLECULARSEQUENCE;
1242      if ("NamingSystem".equals(codeString))
1243        return NAMINGSYSTEM;
1244      if ("NutritionOrder".equals(codeString))
1245        return NUTRITIONORDER;
1246      if ("Observation".equals(codeString))
1247        return OBSERVATION;
1248      if ("ObservationDefinition".equals(codeString))
1249        return OBSERVATIONDEFINITION;
1250      if ("OperationDefinition".equals(codeString))
1251        return OPERATIONDEFINITION;
1252      if ("OperationOutcome".equals(codeString))
1253        return OPERATIONOUTCOME;
1254      if ("Organization".equals(codeString))
1255        return ORGANIZATION;
1256      if ("OrganizationAffiliation".equals(codeString))
1257        return ORGANIZATIONAFFILIATION;
1258      if ("Parameters".equals(codeString))
1259        return PARAMETERS;
1260      if ("Patient".equals(codeString))
1261        return PATIENT;
1262      if ("PaymentNotice".equals(codeString))
1263        return PAYMENTNOTICE;
1264      if ("PaymentReconciliation".equals(codeString))
1265        return PAYMENTRECONCILIATION;
1266      if ("Person".equals(codeString))
1267        return PERSON;
1268      if ("PlanDefinition".equals(codeString))
1269        return PLANDEFINITION;
1270      if ("Practitioner".equals(codeString))
1271        return PRACTITIONER;
1272      if ("PractitionerRole".equals(codeString))
1273        return PRACTITIONERROLE;
1274      if ("Procedure".equals(codeString))
1275        return PROCEDURE;
1276      if ("Provenance".equals(codeString))
1277        return PROVENANCE;
1278      if ("Questionnaire".equals(codeString))
1279        return QUESTIONNAIRE;
1280      if ("QuestionnaireResponse".equals(codeString))
1281        return QUESTIONNAIRERESPONSE;
1282      if ("RelatedPerson".equals(codeString))
1283        return RELATEDPERSON;
1284      if ("RequestGroup".equals(codeString))
1285        return REQUESTGROUP;
1286      if ("ResearchDefinition".equals(codeString))
1287        return RESEARCHDEFINITION;
1288      if ("ResearchElementDefinition".equals(codeString))
1289        return RESEARCHELEMENTDEFINITION;
1290      if ("ResearchStudy".equals(codeString))
1291        return RESEARCHSTUDY;
1292      if ("ResearchSubject".equals(codeString))
1293        return RESEARCHSUBJECT;
1294      if ("Resource".equals(codeString))
1295        return RESOURCE;
1296      if ("RiskAssessment".equals(codeString))
1297        return RISKASSESSMENT;
1298      if ("RiskEvidenceSynthesis".equals(codeString))
1299        return RISKEVIDENCESYNTHESIS;
1300      if ("Schedule".equals(codeString))
1301        return SCHEDULE;
1302      if ("SearchParameter".equals(codeString))
1303        return SEARCHPARAMETER;
1304      if ("ServiceRequest".equals(codeString))
1305        return SERVICEREQUEST;
1306      if ("Slot".equals(codeString))
1307        return SLOT;
1308      if ("Specimen".equals(codeString))
1309        return SPECIMEN;
1310      if ("SpecimenDefinition".equals(codeString))
1311        return SPECIMENDEFINITION;
1312      if ("StructureDefinition".equals(codeString))
1313        return STRUCTUREDEFINITION;
1314      if ("StructureMap".equals(codeString))
1315        return STRUCTUREMAP;
1316      if ("Subscription".equals(codeString))
1317        return SUBSCRIPTION;
1318      if ("Substance".equals(codeString))
1319        return SUBSTANCE;
1320      if ("SubstanceNucleicAcid".equals(codeString))
1321        return SUBSTANCENUCLEICACID;
1322      if ("SubstancePolymer".equals(codeString))
1323        return SUBSTANCEPOLYMER;
1324      if ("SubstanceProtein".equals(codeString))
1325        return SUBSTANCEPROTEIN;
1326      if ("SubstanceReferenceInformation".equals(codeString))
1327        return SUBSTANCEREFERENCEINFORMATION;
1328      if ("SubstanceSourceMaterial".equals(codeString))
1329        return SUBSTANCESOURCEMATERIAL;
1330      if ("SubstanceSpecification".equals(codeString))
1331        return SUBSTANCESPECIFICATION;
1332      if ("SupplyDelivery".equals(codeString))
1333        return SUPPLYDELIVERY;
1334      if ("SupplyRequest".equals(codeString))
1335        return SUPPLYREQUEST;
1336      if ("Task".equals(codeString))
1337        return TASK;
1338      if ("TerminologyCapabilities".equals(codeString))
1339        return TERMINOLOGYCAPABILITIES;
1340      if ("TestReport".equals(codeString))
1341        return TESTREPORT;
1342      if ("TestScript".equals(codeString))
1343        return TESTSCRIPT;
1344      if ("ValueSet".equals(codeString))
1345        return VALUESET;
1346      if ("VerificationResult".equals(codeString))
1347        return VERIFICATIONRESULT;
1348      if ("VisionPrescription".equals(codeString))
1349        return VISIONPRESCRIPTION;
1350      if (Configuration.isAcceptInvalidEnums())
1351        return null;
1352      else
1353        throw new FHIRException("Unknown FHIRResourceType code '" + codeString + "'");
1354    }
1355
1356    public String toCode() {
1357      switch (this) {
1358      case ACCOUNT:
1359        return "Account";
1360      case ACTIVITYDEFINITION:
1361        return "ActivityDefinition";
1362      case ADVERSEEVENT:
1363        return "AdverseEvent";
1364      case ALLERGYINTOLERANCE:
1365        return "AllergyIntolerance";
1366      case APPOINTMENT:
1367        return "Appointment";
1368      case APPOINTMENTRESPONSE:
1369        return "AppointmentResponse";
1370      case AUDITEVENT:
1371        return "AuditEvent";
1372      case BASIC:
1373        return "Basic";
1374      case BINARY:
1375        return "Binary";
1376      case BIOLOGICALLYDERIVEDPRODUCT:
1377        return "BiologicallyDerivedProduct";
1378      case BODYSTRUCTURE:
1379        return "BodyStructure";
1380      case BUNDLE:
1381        return "Bundle";
1382      case CAPABILITYSTATEMENT:
1383        return "CapabilityStatement";
1384      case CAREPLAN:
1385        return "CarePlan";
1386      case CARETEAM:
1387        return "CareTeam";
1388      case CATALOGENTRY:
1389        return "CatalogEntry";
1390      case CHARGEITEM:
1391        return "ChargeItem";
1392      case CHARGEITEMDEFINITION:
1393        return "ChargeItemDefinition";
1394      case CLAIM:
1395        return "Claim";
1396      case CLAIMRESPONSE:
1397        return "ClaimResponse";
1398      case CLINICALIMPRESSION:
1399        return "ClinicalImpression";
1400      case CODESYSTEM:
1401        return "CodeSystem";
1402      case COMMUNICATION:
1403        return "Communication";
1404      case COMMUNICATIONREQUEST:
1405        return "CommunicationRequest";
1406      case COMPARTMENTDEFINITION:
1407        return "CompartmentDefinition";
1408      case COMPOSITION:
1409        return "Composition";
1410      case CONCEPTMAP:
1411        return "ConceptMap";
1412      case CONDITION:
1413        return "Condition";
1414      case CONSENT:
1415        return "Consent";
1416      case CONTRACT:
1417        return "Contract";
1418      case COVERAGE:
1419        return "Coverage";
1420      case COVERAGEELIGIBILITYREQUEST:
1421        return "CoverageEligibilityRequest";
1422      case COVERAGEELIGIBILITYRESPONSE:
1423        return "CoverageEligibilityResponse";
1424      case DETECTEDISSUE:
1425        return "DetectedIssue";
1426      case DEVICE:
1427        return "Device";
1428      case DEVICEDEFINITION:
1429        return "DeviceDefinition";
1430      case DEVICEMETRIC:
1431        return "DeviceMetric";
1432      case DEVICEREQUEST:
1433        return "DeviceRequest";
1434      case DEVICEUSESTATEMENT:
1435        return "DeviceUseStatement";
1436      case DIAGNOSTICREPORT:
1437        return "DiagnosticReport";
1438      case DOCUMENTMANIFEST:
1439        return "DocumentManifest";
1440      case DOCUMENTREFERENCE:
1441        return "DocumentReference";
1442      case DOMAINRESOURCE:
1443        return "DomainResource";
1444      case EFFECTEVIDENCESYNTHESIS:
1445        return "EffectEvidenceSynthesis";
1446      case ENCOUNTER:
1447        return "Encounter";
1448      case ENDPOINT:
1449        return "Endpoint";
1450      case ENROLLMENTREQUEST:
1451        return "EnrollmentRequest";
1452      case ENROLLMENTRESPONSE:
1453        return "EnrollmentResponse";
1454      case EPISODEOFCARE:
1455        return "EpisodeOfCare";
1456      case EVENTDEFINITION:
1457        return "EventDefinition";
1458      case EVIDENCE:
1459        return "Evidence";
1460      case EVIDENCEVARIABLE:
1461        return "EvidenceVariable";
1462      case EXAMPLESCENARIO:
1463        return "ExampleScenario";
1464      case EXPLANATIONOFBENEFIT:
1465        return "ExplanationOfBenefit";
1466      case FAMILYMEMBERHISTORY:
1467        return "FamilyMemberHistory";
1468      case FLAG:
1469        return "Flag";
1470      case GOAL:
1471        return "Goal";
1472      case GRAPHDEFINITION:
1473        return "GraphDefinition";
1474      case GROUP:
1475        return "Group";
1476      case GUIDANCERESPONSE:
1477        return "GuidanceResponse";
1478      case HEALTHCARESERVICE:
1479        return "HealthcareService";
1480      case IMAGINGSTUDY:
1481        return "ImagingStudy";
1482      case IMMUNIZATION:
1483        return "Immunization";
1484      case IMMUNIZATIONEVALUATION:
1485        return "ImmunizationEvaluation";
1486      case IMMUNIZATIONRECOMMENDATION:
1487        return "ImmunizationRecommendation";
1488      case IMPLEMENTATIONGUIDE:
1489        return "ImplementationGuide";
1490      case INSURANCEPLAN:
1491        return "InsurancePlan";
1492      case INVOICE:
1493        return "Invoice";
1494      case LIBRARY:
1495        return "Library";
1496      case LINKAGE:
1497        return "Linkage";
1498      case LIST:
1499        return "List";
1500      case LOCATION:
1501        return "Location";
1502      case MEASURE:
1503        return "Measure";
1504      case MEASUREREPORT:
1505        return "MeasureReport";
1506      case MEDIA:
1507        return "Media";
1508      case MEDICATION:
1509        return "Medication";
1510      case MEDICATIONADMINISTRATION:
1511        return "MedicationAdministration";
1512      case MEDICATIONDISPENSE:
1513        return "MedicationDispense";
1514      case MEDICATIONKNOWLEDGE:
1515        return "MedicationKnowledge";
1516      case MEDICATIONREQUEST:
1517        return "MedicationRequest";
1518      case MEDICATIONSTATEMENT:
1519        return "MedicationStatement";
1520      case MEDICINALPRODUCT:
1521        return "MedicinalProduct";
1522      case MEDICINALPRODUCTAUTHORIZATION:
1523        return "MedicinalProductAuthorization";
1524      case MEDICINALPRODUCTCONTRAINDICATION:
1525        return "MedicinalProductContraindication";
1526      case MEDICINALPRODUCTINDICATION:
1527        return "MedicinalProductIndication";
1528      case MEDICINALPRODUCTINGREDIENT:
1529        return "MedicinalProductIngredient";
1530      case MEDICINALPRODUCTINTERACTION:
1531        return "MedicinalProductInteraction";
1532      case MEDICINALPRODUCTMANUFACTURED:
1533        return "MedicinalProductManufactured";
1534      case MEDICINALPRODUCTPACKAGED:
1535        return "MedicinalProductPackaged";
1536      case MEDICINALPRODUCTPHARMACEUTICAL:
1537        return "MedicinalProductPharmaceutical";
1538      case MEDICINALPRODUCTUNDESIRABLEEFFECT:
1539        return "MedicinalProductUndesirableEffect";
1540      case MESSAGEDEFINITION:
1541        return "MessageDefinition";
1542      case MESSAGEHEADER:
1543        return "MessageHeader";
1544      case MOLECULARSEQUENCE:
1545        return "MolecularSequence";
1546      case NAMINGSYSTEM:
1547        return "NamingSystem";
1548      case NUTRITIONORDER:
1549        return "NutritionOrder";
1550      case OBSERVATION:
1551        return "Observation";
1552      case OBSERVATIONDEFINITION:
1553        return "ObservationDefinition";
1554      case OPERATIONDEFINITION:
1555        return "OperationDefinition";
1556      case OPERATIONOUTCOME:
1557        return "OperationOutcome";
1558      case ORGANIZATION:
1559        return "Organization";
1560      case ORGANIZATIONAFFILIATION:
1561        return "OrganizationAffiliation";
1562      case PARAMETERS:
1563        return "Parameters";
1564      case PATIENT:
1565        return "Patient";
1566      case PAYMENTNOTICE:
1567        return "PaymentNotice";
1568      case PAYMENTRECONCILIATION:
1569        return "PaymentReconciliation";
1570      case PERSON:
1571        return "Person";
1572      case PLANDEFINITION:
1573        return "PlanDefinition";
1574      case PRACTITIONER:
1575        return "Practitioner";
1576      case PRACTITIONERROLE:
1577        return "PractitionerRole";
1578      case PROCEDURE:
1579        return "Procedure";
1580      case PROVENANCE:
1581        return "Provenance";
1582      case QUESTIONNAIRE:
1583        return "Questionnaire";
1584      case QUESTIONNAIRERESPONSE:
1585        return "QuestionnaireResponse";
1586      case RELATEDPERSON:
1587        return "RelatedPerson";
1588      case REQUESTGROUP:
1589        return "RequestGroup";
1590      case RESEARCHDEFINITION:
1591        return "ResearchDefinition";
1592      case RESEARCHELEMENTDEFINITION:
1593        return "ResearchElementDefinition";
1594      case RESEARCHSTUDY:
1595        return "ResearchStudy";
1596      case RESEARCHSUBJECT:
1597        return "ResearchSubject";
1598      case RESOURCE:
1599        return "Resource";
1600      case RISKASSESSMENT:
1601        return "RiskAssessment";
1602      case RISKEVIDENCESYNTHESIS:
1603        return "RiskEvidenceSynthesis";
1604      case SCHEDULE:
1605        return "Schedule";
1606      case SEARCHPARAMETER:
1607        return "SearchParameter";
1608      case SERVICEREQUEST:
1609        return "ServiceRequest";
1610      case SLOT:
1611        return "Slot";
1612      case SPECIMEN:
1613        return "Specimen";
1614      case SPECIMENDEFINITION:
1615        return "SpecimenDefinition";
1616      case STRUCTUREDEFINITION:
1617        return "StructureDefinition";
1618      case STRUCTUREMAP:
1619        return "StructureMap";
1620      case SUBSCRIPTION:
1621        return "Subscription";
1622      case SUBSTANCE:
1623        return "Substance";
1624      case SUBSTANCENUCLEICACID:
1625        return "SubstanceNucleicAcid";
1626      case SUBSTANCEPOLYMER:
1627        return "SubstancePolymer";
1628      case SUBSTANCEPROTEIN:
1629        return "SubstanceProtein";
1630      case SUBSTANCEREFERENCEINFORMATION:
1631        return "SubstanceReferenceInformation";
1632      case SUBSTANCESOURCEMATERIAL:
1633        return "SubstanceSourceMaterial";
1634      case SUBSTANCESPECIFICATION:
1635        return "SubstanceSpecification";
1636      case SUPPLYDELIVERY:
1637        return "SupplyDelivery";
1638      case SUPPLYREQUEST:
1639        return "SupplyRequest";
1640      case TASK:
1641        return "Task";
1642      case TERMINOLOGYCAPABILITIES:
1643        return "TerminologyCapabilities";
1644      case TESTREPORT:
1645        return "TestReport";
1646      case TESTSCRIPT:
1647        return "TestScript";
1648      case VALUESET:
1649        return "ValueSet";
1650      case VERIFICATIONRESULT:
1651        return "VerificationResult";
1652      case VISIONPRESCRIPTION:
1653        return "VisionPrescription";
1654      case NULL:
1655        return null;
1656      default:
1657        return "?";
1658      }
1659    }
1660
1661    public String getSystem() {
1662      switch (this) {
1663      case ACCOUNT:
1664        return "http://hl7.org/fhir/resource-types";
1665      case ACTIVITYDEFINITION:
1666        return "http://hl7.org/fhir/resource-types";
1667      case ADVERSEEVENT:
1668        return "http://hl7.org/fhir/resource-types";
1669      case ALLERGYINTOLERANCE:
1670        return "http://hl7.org/fhir/resource-types";
1671      case APPOINTMENT:
1672        return "http://hl7.org/fhir/resource-types";
1673      case APPOINTMENTRESPONSE:
1674        return "http://hl7.org/fhir/resource-types";
1675      case AUDITEVENT:
1676        return "http://hl7.org/fhir/resource-types";
1677      case BASIC:
1678        return "http://hl7.org/fhir/resource-types";
1679      case BINARY:
1680        return "http://hl7.org/fhir/resource-types";
1681      case BIOLOGICALLYDERIVEDPRODUCT:
1682        return "http://hl7.org/fhir/resource-types";
1683      case BODYSTRUCTURE:
1684        return "http://hl7.org/fhir/resource-types";
1685      case BUNDLE:
1686        return "http://hl7.org/fhir/resource-types";
1687      case CAPABILITYSTATEMENT:
1688        return "http://hl7.org/fhir/resource-types";
1689      case CAREPLAN:
1690        return "http://hl7.org/fhir/resource-types";
1691      case CARETEAM:
1692        return "http://hl7.org/fhir/resource-types";
1693      case CATALOGENTRY:
1694        return "http://hl7.org/fhir/resource-types";
1695      case CHARGEITEM:
1696        return "http://hl7.org/fhir/resource-types";
1697      case CHARGEITEMDEFINITION:
1698        return "http://hl7.org/fhir/resource-types";
1699      case CLAIM:
1700        return "http://hl7.org/fhir/resource-types";
1701      case CLAIMRESPONSE:
1702        return "http://hl7.org/fhir/resource-types";
1703      case CLINICALIMPRESSION:
1704        return "http://hl7.org/fhir/resource-types";
1705      case CODESYSTEM:
1706        return "http://hl7.org/fhir/resource-types";
1707      case COMMUNICATION:
1708        return "http://hl7.org/fhir/resource-types";
1709      case COMMUNICATIONREQUEST:
1710        return "http://hl7.org/fhir/resource-types";
1711      case COMPARTMENTDEFINITION:
1712        return "http://hl7.org/fhir/resource-types";
1713      case COMPOSITION:
1714        return "http://hl7.org/fhir/resource-types";
1715      case CONCEPTMAP:
1716        return "http://hl7.org/fhir/resource-types";
1717      case CONDITION:
1718        return "http://hl7.org/fhir/resource-types";
1719      case CONSENT:
1720        return "http://hl7.org/fhir/resource-types";
1721      case CONTRACT:
1722        return "http://hl7.org/fhir/resource-types";
1723      case COVERAGE:
1724        return "http://hl7.org/fhir/resource-types";
1725      case COVERAGEELIGIBILITYREQUEST:
1726        return "http://hl7.org/fhir/resource-types";
1727      case COVERAGEELIGIBILITYRESPONSE:
1728        return "http://hl7.org/fhir/resource-types";
1729      case DETECTEDISSUE:
1730        return "http://hl7.org/fhir/resource-types";
1731      case DEVICE:
1732        return "http://hl7.org/fhir/resource-types";
1733      case DEVICEDEFINITION:
1734        return "http://hl7.org/fhir/resource-types";
1735      case DEVICEMETRIC:
1736        return "http://hl7.org/fhir/resource-types";
1737      case DEVICEREQUEST:
1738        return "http://hl7.org/fhir/resource-types";
1739      case DEVICEUSESTATEMENT:
1740        return "http://hl7.org/fhir/resource-types";
1741      case DIAGNOSTICREPORT:
1742        return "http://hl7.org/fhir/resource-types";
1743      case DOCUMENTMANIFEST:
1744        return "http://hl7.org/fhir/resource-types";
1745      case DOCUMENTREFERENCE:
1746        return "http://hl7.org/fhir/resource-types";
1747      case DOMAINRESOURCE:
1748        return "http://hl7.org/fhir/resource-types";
1749      case EFFECTEVIDENCESYNTHESIS:
1750        return "http://hl7.org/fhir/resource-types";
1751      case ENCOUNTER:
1752        return "http://hl7.org/fhir/resource-types";
1753      case ENDPOINT:
1754        return "http://hl7.org/fhir/resource-types";
1755      case ENROLLMENTREQUEST:
1756        return "http://hl7.org/fhir/resource-types";
1757      case ENROLLMENTRESPONSE:
1758        return "http://hl7.org/fhir/resource-types";
1759      case EPISODEOFCARE:
1760        return "http://hl7.org/fhir/resource-types";
1761      case EVENTDEFINITION:
1762        return "http://hl7.org/fhir/resource-types";
1763      case EVIDENCE:
1764        return "http://hl7.org/fhir/resource-types";
1765      case EVIDENCEVARIABLE:
1766        return "http://hl7.org/fhir/resource-types";
1767      case EXAMPLESCENARIO:
1768        return "http://hl7.org/fhir/resource-types";
1769      case EXPLANATIONOFBENEFIT:
1770        return "http://hl7.org/fhir/resource-types";
1771      case FAMILYMEMBERHISTORY:
1772        return "http://hl7.org/fhir/resource-types";
1773      case FLAG:
1774        return "http://hl7.org/fhir/resource-types";
1775      case GOAL:
1776        return "http://hl7.org/fhir/resource-types";
1777      case GRAPHDEFINITION:
1778        return "http://hl7.org/fhir/resource-types";
1779      case GROUP:
1780        return "http://hl7.org/fhir/resource-types";
1781      case GUIDANCERESPONSE:
1782        return "http://hl7.org/fhir/resource-types";
1783      case HEALTHCARESERVICE:
1784        return "http://hl7.org/fhir/resource-types";
1785      case IMAGINGSTUDY:
1786        return "http://hl7.org/fhir/resource-types";
1787      case IMMUNIZATION:
1788        return "http://hl7.org/fhir/resource-types";
1789      case IMMUNIZATIONEVALUATION:
1790        return "http://hl7.org/fhir/resource-types";
1791      case IMMUNIZATIONRECOMMENDATION:
1792        return "http://hl7.org/fhir/resource-types";
1793      case IMPLEMENTATIONGUIDE:
1794        return "http://hl7.org/fhir/resource-types";
1795      case INSURANCEPLAN:
1796        return "http://hl7.org/fhir/resource-types";
1797      case INVOICE:
1798        return "http://hl7.org/fhir/resource-types";
1799      case LIBRARY:
1800        return "http://hl7.org/fhir/resource-types";
1801      case LINKAGE:
1802        return "http://hl7.org/fhir/resource-types";
1803      case LIST:
1804        return "http://hl7.org/fhir/resource-types";
1805      case LOCATION:
1806        return "http://hl7.org/fhir/resource-types";
1807      case MEASURE:
1808        return "http://hl7.org/fhir/resource-types";
1809      case MEASUREREPORT:
1810        return "http://hl7.org/fhir/resource-types";
1811      case MEDIA:
1812        return "http://hl7.org/fhir/resource-types";
1813      case MEDICATION:
1814        return "http://hl7.org/fhir/resource-types";
1815      case MEDICATIONADMINISTRATION:
1816        return "http://hl7.org/fhir/resource-types";
1817      case MEDICATIONDISPENSE:
1818        return "http://hl7.org/fhir/resource-types";
1819      case MEDICATIONKNOWLEDGE:
1820        return "http://hl7.org/fhir/resource-types";
1821      case MEDICATIONREQUEST:
1822        return "http://hl7.org/fhir/resource-types";
1823      case MEDICATIONSTATEMENT:
1824        return "http://hl7.org/fhir/resource-types";
1825      case MEDICINALPRODUCT:
1826        return "http://hl7.org/fhir/resource-types";
1827      case MEDICINALPRODUCTAUTHORIZATION:
1828        return "http://hl7.org/fhir/resource-types";
1829      case MEDICINALPRODUCTCONTRAINDICATION:
1830        return "http://hl7.org/fhir/resource-types";
1831      case MEDICINALPRODUCTINDICATION:
1832        return "http://hl7.org/fhir/resource-types";
1833      case MEDICINALPRODUCTINGREDIENT:
1834        return "http://hl7.org/fhir/resource-types";
1835      case MEDICINALPRODUCTINTERACTION:
1836        return "http://hl7.org/fhir/resource-types";
1837      case MEDICINALPRODUCTMANUFACTURED:
1838        return "http://hl7.org/fhir/resource-types";
1839      case MEDICINALPRODUCTPACKAGED:
1840        return "http://hl7.org/fhir/resource-types";
1841      case MEDICINALPRODUCTPHARMACEUTICAL:
1842        return "http://hl7.org/fhir/resource-types";
1843      case MEDICINALPRODUCTUNDESIRABLEEFFECT:
1844        return "http://hl7.org/fhir/resource-types";
1845      case MESSAGEDEFINITION:
1846        return "http://hl7.org/fhir/resource-types";
1847      case MESSAGEHEADER:
1848        return "http://hl7.org/fhir/resource-types";
1849      case MOLECULARSEQUENCE:
1850        return "http://hl7.org/fhir/resource-types";
1851      case NAMINGSYSTEM:
1852        return "http://hl7.org/fhir/resource-types";
1853      case NUTRITIONORDER:
1854        return "http://hl7.org/fhir/resource-types";
1855      case OBSERVATION:
1856        return "http://hl7.org/fhir/resource-types";
1857      case OBSERVATIONDEFINITION:
1858        return "http://hl7.org/fhir/resource-types";
1859      case OPERATIONDEFINITION:
1860        return "http://hl7.org/fhir/resource-types";
1861      case OPERATIONOUTCOME:
1862        return "http://hl7.org/fhir/resource-types";
1863      case ORGANIZATION:
1864        return "http://hl7.org/fhir/resource-types";
1865      case ORGANIZATIONAFFILIATION:
1866        return "http://hl7.org/fhir/resource-types";
1867      case PARAMETERS:
1868        return "http://hl7.org/fhir/resource-types";
1869      case PATIENT:
1870        return "http://hl7.org/fhir/resource-types";
1871      case PAYMENTNOTICE:
1872        return "http://hl7.org/fhir/resource-types";
1873      case PAYMENTRECONCILIATION:
1874        return "http://hl7.org/fhir/resource-types";
1875      case PERSON:
1876        return "http://hl7.org/fhir/resource-types";
1877      case PLANDEFINITION:
1878        return "http://hl7.org/fhir/resource-types";
1879      case PRACTITIONER:
1880        return "http://hl7.org/fhir/resource-types";
1881      case PRACTITIONERROLE:
1882        return "http://hl7.org/fhir/resource-types";
1883      case PROCEDURE:
1884        return "http://hl7.org/fhir/resource-types";
1885      case PROVENANCE:
1886        return "http://hl7.org/fhir/resource-types";
1887      case QUESTIONNAIRE:
1888        return "http://hl7.org/fhir/resource-types";
1889      case QUESTIONNAIRERESPONSE:
1890        return "http://hl7.org/fhir/resource-types";
1891      case RELATEDPERSON:
1892        return "http://hl7.org/fhir/resource-types";
1893      case REQUESTGROUP:
1894        return "http://hl7.org/fhir/resource-types";
1895      case RESEARCHDEFINITION:
1896        return "http://hl7.org/fhir/resource-types";
1897      case RESEARCHELEMENTDEFINITION:
1898        return "http://hl7.org/fhir/resource-types";
1899      case RESEARCHSTUDY:
1900        return "http://hl7.org/fhir/resource-types";
1901      case RESEARCHSUBJECT:
1902        return "http://hl7.org/fhir/resource-types";
1903      case RESOURCE:
1904        return "http://hl7.org/fhir/resource-types";
1905      case RISKASSESSMENT:
1906        return "http://hl7.org/fhir/resource-types";
1907      case RISKEVIDENCESYNTHESIS:
1908        return "http://hl7.org/fhir/resource-types";
1909      case SCHEDULE:
1910        return "http://hl7.org/fhir/resource-types";
1911      case SEARCHPARAMETER:
1912        return "http://hl7.org/fhir/resource-types";
1913      case SERVICEREQUEST:
1914        return "http://hl7.org/fhir/resource-types";
1915      case SLOT:
1916        return "http://hl7.org/fhir/resource-types";
1917      case SPECIMEN:
1918        return "http://hl7.org/fhir/resource-types";
1919      case SPECIMENDEFINITION:
1920        return "http://hl7.org/fhir/resource-types";
1921      case STRUCTUREDEFINITION:
1922        return "http://hl7.org/fhir/resource-types";
1923      case STRUCTUREMAP:
1924        return "http://hl7.org/fhir/resource-types";
1925      case SUBSCRIPTION:
1926        return "http://hl7.org/fhir/resource-types";
1927      case SUBSTANCE:
1928        return "http://hl7.org/fhir/resource-types";
1929      case SUBSTANCENUCLEICACID:
1930        return "http://hl7.org/fhir/resource-types";
1931      case SUBSTANCEPOLYMER:
1932        return "http://hl7.org/fhir/resource-types";
1933      case SUBSTANCEPROTEIN:
1934        return "http://hl7.org/fhir/resource-types";
1935      case SUBSTANCEREFERENCEINFORMATION:
1936        return "http://hl7.org/fhir/resource-types";
1937      case SUBSTANCESOURCEMATERIAL:
1938        return "http://hl7.org/fhir/resource-types";
1939      case SUBSTANCESPECIFICATION:
1940        return "http://hl7.org/fhir/resource-types";
1941      case SUPPLYDELIVERY:
1942        return "http://hl7.org/fhir/resource-types";
1943      case SUPPLYREQUEST:
1944        return "http://hl7.org/fhir/resource-types";
1945      case TASK:
1946        return "http://hl7.org/fhir/resource-types";
1947      case TERMINOLOGYCAPABILITIES:
1948        return "http://hl7.org/fhir/resource-types";
1949      case TESTREPORT:
1950        return "http://hl7.org/fhir/resource-types";
1951      case TESTSCRIPT:
1952        return "http://hl7.org/fhir/resource-types";
1953      case VALUESET:
1954        return "http://hl7.org/fhir/resource-types";
1955      case VERIFICATIONRESULT:
1956        return "http://hl7.org/fhir/resource-types";
1957      case VISIONPRESCRIPTION:
1958        return "http://hl7.org/fhir/resource-types";
1959      case NULL:
1960        return null;
1961      default:
1962        return "?";
1963      }
1964    }
1965
1966    public String getDefinition() {
1967      switch (this) {
1968      case ACCOUNT:
1969        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.";
1970      case ACTIVITYDEFINITION:
1971        return "This resource allows for the definition of some activity to be performed, independent of a particular patient, practitioner, or other performance context.";
1972      case ADVERSEEVENT:
1973        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.";
1974      case ALLERGYINTOLERANCE:
1975        return "Risk of harmful or undesirable, physiological response which is unique to an individual and associated with exposure to a substance.";
1976      case APPOINTMENT:
1977        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).";
1978      case APPOINTMENTRESPONSE:
1979        return "A reply to an appointment request for a patient and/or practitioner(s), such as a confirmation or rejection.";
1980      case AUDITEVENT:
1981        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.";
1982      case BASIC:
1983        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.";
1984      case BINARY:
1985        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.";
1986      case BIOLOGICALLYDERIVEDPRODUCT:
1987        return "A material substance originating from a biological entity intended to be transplanted or infused\ninto another (possibly the same) biological entity.";
1988      case BODYSTRUCTURE:
1989        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.";
1990      case BUNDLE:
1991        return "A container for a collection of resources.";
1992      case CAPABILITYSTATEMENT:
1993        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.";
1994      case CAREPLAN:
1995        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.";
1996      case CARETEAM:
1997        return "The Care Team includes all the people and organizations who plan to participate in the coordination and delivery of care for a patient.";
1998      case CATALOGENTRY:
1999        return "Catalog entries are wrappers that contextualize items included in a catalog.";
2000      case CHARGEITEM:
2001        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.";
2002      case CHARGEITEMDEFINITION:
2003        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.";
2004      case CLAIM:
2005        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.";
2006      case CLAIMRESPONSE:
2007        return "This resource provides the adjudication details from the processing of a Claim resource.";
2008      case CLINICALIMPRESSION:
2009        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.";
2010      case CODESYSTEM:
2011        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.";
2012      case COMMUNICATION:
2013        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.";
2014      case COMMUNICATIONREQUEST:
2015        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.";
2016      case COMPARTMENTDEFINITION:
2017        return "A compartment definition that defines how resources are accessed on a server.";
2018      case COMPOSITION:
2019        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.).";
2020      case CONCEPTMAP:
2021        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.";
2022      case CONDITION:
2023        return "A clinical condition, problem, diagnosis, or other event, situation, issue, or clinical concept that has risen to a level of concern.";
2024      case CONSENT:
2025        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.";
2026      case CONTRACT:
2027        return "Legally enforceable, formally recorded unilateral or bilateral directive i.e., a policy or agreement.";
2028      case COVERAGE:
2029        return "Financial instrument which may be used to reimburse or pay for health care products and services. Includes both insurance and self-payment.";
2030      case COVERAGEELIGIBILITYREQUEST:
2031        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.";
2032      case COVERAGEELIGIBILITYRESPONSE:
2033        return "This resource provides eligibility and plan details from the processing of an CoverageEligibilityRequest resource.";
2034      case DETECTEDISSUE:
2035        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.";
2036      case DEVICE:
2037        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.";
2038      case DEVICEDEFINITION:
2039        return "The characteristics, operational status and capabilities of a medical-related component of a medical device.";
2040      case DEVICEMETRIC:
2041        return "Describes a measurement, calculation or setting capability of a medical device.";
2042      case DEVICEREQUEST:
2043        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.";
2044      case DEVICEUSESTATEMENT:
2045        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.";
2046      case DIAGNOSTICREPORT:
2047        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.";
2048      case DOCUMENTMANIFEST:
2049        return "A collection of documents compiled for a purpose together with metadata that applies to the collection.";
2050      case DOCUMENTREFERENCE:
2051        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.";
2052      case DOMAINRESOURCE:
2053        return "A resource that includes narrative, extensions, and contained resources.";
2054      case EFFECTEVIDENCESYNTHESIS:
2055        return "The EffectEvidenceSynthesis resource describes the difference in an outcome between exposures states in a population where the effect estimate is derived from a combination of research studies.";
2056      case ENCOUNTER:
2057        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.";
2058      case ENDPOINT:
2059        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.";
2060      case ENROLLMENTREQUEST:
2061        return "This resource provides the insurance enrollment details to the insurer regarding a specified coverage.";
2062      case ENROLLMENTRESPONSE:
2063        return "This resource provides enrollment and plan details from the processing of an EnrollmentRequest resource.";
2064      case EPISODEOFCARE:
2065        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.";
2066      case EVENTDEFINITION:
2067        return "The EventDefinition resource provides a reusable description of when a particular event can occur.";
2068      case EVIDENCE:
2069        return "The Evidence 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.";
2070      case EVIDENCEVARIABLE:
2071        return "The EvidenceVariable resource describes a \"PICO\" element that knowledge (evidence, assertion, recommendation) is about.";
2072      case EXAMPLESCENARIO:
2073        return "Example of workflow instance.";
2074      case EXPLANATIONOFBENEFIT:
2075        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.";
2076      case FAMILYMEMBERHISTORY:
2077        return "Significant health conditions for a person related to the patient relevant in the context of care for the patient.";
2078      case FLAG:
2079        return "Prospective warnings of potential issues when providing care to the patient.";
2080      case GOAL:
2081        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.";
2082      case GRAPHDEFINITION:
2083        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.";
2084      case GROUP:
2085        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.";
2086      case GUIDANCERESPONSE:
2087        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.";
2088      case HEALTHCARESERVICE:
2089        return "The details of a healthcare service available at a location.";
2090      case IMAGINGSTUDY:
2091        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.";
2092      case IMMUNIZATION:
2093        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.";
2094      case IMMUNIZATIONEVALUATION:
2095        return "Describes a comparison of an immunization event against published recommendations to determine if the administration is \"valid\" in relation to those  recommendations.";
2096      case IMMUNIZATIONRECOMMENDATION:
2097        return "A patient's point-in-time set of recommendations (i.e. forecasting) according to a published schedule with optional supporting justification.";
2098      case IMPLEMENTATIONGUIDE:
2099        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.";
2100      case INSURANCEPLAN:
2101        return "Details of a Health Insurance product/plan provided by an organization.";
2102      case INVOICE:
2103        return "Invoice containing collected ChargeItems from an Account with calculated individual and total price for Billing purpose.";
2104      case LIBRARY:
2105        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.";
2106      case LINKAGE:
2107        return "Identifies two or more records (resource instances) that refer to the same real-world \"occurrence\".";
2108      case LIST:
2109        return "A list is a curated collection of resources.";
2110      case LOCATION:
2111        return "Details and position information for a physical place where services are provided and resources and participants may be stored, found, contained, or accommodated.";
2112      case MEASURE:
2113        return "The Measure resource provides the definition of a quality measure.";
2114      case MEASUREREPORT:
2115        return "The MeasureReport resource contains the results of the calculation of a measure; and optionally a reference to the resources involved in that calculation.";
2116      case MEDIA:
2117        return "A photo, video, or audio recording acquired or used in healthcare. The actual content may be inline or provided by direct reference.";
2118      case MEDICATION:
2119        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.";
2120      case MEDICATIONADMINISTRATION:
2121        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.";
2122      case MEDICATIONDISPENSE:
2123        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.";
2124      case MEDICATIONKNOWLEDGE:
2125        return "Information about a medication that is used to support knowledge.";
2126      case MEDICATIONREQUEST:
2127        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.";
2128      case MEDICATIONSTATEMENT:
2129        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.";
2130      case MEDICINALPRODUCT:
2131        return "Detailed definition of a medicinal product, typically for uses other than direct patient care (e.g. regulatory use).";
2132      case MEDICINALPRODUCTAUTHORIZATION:
2133        return "The regulatory authorization of a medicinal product.";
2134      case MEDICINALPRODUCTCONTRAINDICATION:
2135        return "The clinical particulars - indications, contraindications etc. of a medicinal product, including for regulatory purposes.";
2136      case MEDICINALPRODUCTINDICATION:
2137        return "Indication for the Medicinal Product.";
2138      case MEDICINALPRODUCTINGREDIENT:
2139        return "An ingredient of a manufactured item or pharmaceutical product.";
2140      case MEDICINALPRODUCTINTERACTION:
2141        return "The interactions of the medicinal product with other medicinal products, or other forms of interactions.";
2142      case MEDICINALPRODUCTMANUFACTURED:
2143        return "The manufactured item as contained in the packaged medicinal product.";
2144      case MEDICINALPRODUCTPACKAGED:
2145        return "A medicinal product in a container or package.";
2146      case MEDICINALPRODUCTPHARMACEUTICAL:
2147        return "A pharmaceutical product described in terms of its composition and dose form.";
2148      case MEDICINALPRODUCTUNDESIRABLEEFFECT:
2149        return "Describe the undesirable effects of the medicinal product.";
2150      case MESSAGEDEFINITION:
2151        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.";
2152      case MESSAGEHEADER:
2153        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.";
2154      case MOLECULARSEQUENCE:
2155        return "Raw data describing a biological sequence.";
2156      case NAMINGSYSTEM:
2157        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.";
2158      case NUTRITIONORDER:
2159        return "A request to supply a diet, formula feeding (enteral) or oral nutritional supplement to a patient/resident.";
2160      case OBSERVATION:
2161        return "Measurements and simple assertions made about a patient, device or other subject.";
2162      case OBSERVATIONDEFINITION:
2163        return "Set of definitional characteristics for a kind of observation or measurement produced or consumed by an orderable health care service.";
2164      case OPERATIONDEFINITION:
2165        return "A formal computable definition of an operation (on the RESTful interface) or a named query (using the search interaction).";
2166      case OPERATIONOUTCOME:
2167        return "A collection of error, warning, or information messages that result from a system action.";
2168      case ORGANIZATION:
2169        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.";
2170      case ORGANIZATIONAFFILIATION:
2171        return "Defines an affiliation/assotiation/relationship between 2 distinct oganizations, that is not a part-of relationship/sub-division relationship.";
2172      case PARAMETERS:
2173        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.";
2174      case PATIENT:
2175        return "Demographics and other administrative information about an individual or animal receiving care or other health-related services.";
2176      case PAYMENTNOTICE:
2177        return "This resource provides the status of the payment for goods and services rendered, and the request and response resource references.";
2178      case PAYMENTRECONCILIATION:
2179        return "This resource provides the details including amount of a payment and allocates the payment items being paid.";
2180      case PERSON:
2181        return "Demographics and administrative information about a person independent of a specific health-related context.";
2182      case PLANDEFINITION:
2183        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 artifacts such as clinical decision support rules, order sets and protocols.";
2184      case PRACTITIONER:
2185        return "A person who is directly or indirectly involved in the provisioning of healthcare.";
2186      case PRACTITIONERROLE:
2187        return "A specific set of Roles/Locations/specialties/services that a practitioner may perform at an organization for a period of time.";
2188      case PROCEDURE:
2189        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.";
2190      case PROVENANCE:
2191        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.";
2192      case QUESTIONNAIRE:
2193        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.";
2194      case QUESTIONNAIRERESPONSE:
2195        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.";
2196      case RELATEDPERSON:
2197        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.";
2198      case REQUESTGROUP:
2199        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\".";
2200      case RESEARCHDEFINITION:
2201        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.";
2202      case RESEARCHELEMENTDEFINITION:
2203        return "The ResearchElementDefinition resource describes a \"PICO\" element that knowledge (evidence, assertion, recommendation) is about.";
2204      case RESEARCHSTUDY:
2205        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.";
2206      case RESEARCHSUBJECT:
2207        return "A physical entity which is the primary unit of operational and/or administrative interest in a study.";
2208      case RESOURCE:
2209        return "This is the base resource type for everything.";
2210      case RISKASSESSMENT:
2211        return "An assessment of the likely outcome(s) for a patient or other subject as well as the likelihood of each outcome.";
2212      case RISKEVIDENCESYNTHESIS:
2213        return "The RiskEvidenceSynthesis resource describes the likelihood of an outcome in a population plus exposure state where the risk estimate is derived from a combination of research studies.";
2214      case SCHEDULE:
2215        return "A container for slots of time that may be available for booking appointments.";
2216      case SEARCHPARAMETER:
2217        return "A search parameter that defines a named search item that can be used to search/filter on a resource.";
2218      case SERVICEREQUEST:
2219        return "A record of a request for service such as diagnostic investigations, treatments, or operations to be performed.";
2220      case SLOT:
2221        return "A slot of time on a schedule that may be available for booking appointments.";
2222      case SPECIMEN:
2223        return "A sample to be used for analysis.";
2224      case SPECIMENDEFINITION:
2225        return "A kind of specimen with associated set of requirements.";
2226      case STRUCTUREDEFINITION:
2227        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.";
2228      case STRUCTUREMAP:
2229        return "A Map of relationships between 2 structures that can be used to transform data.";
2230      case SUBSCRIPTION:
2231        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.";
2232      case SUBSTANCE:
2233        return "A homogeneous material with a definite composition.";
2234      case SUBSTANCENUCLEICACID:
2235        return "Nucleic acids are defined by three distinct elements: the base, sugar and linkage. Individual substance/moiety IDs will be created for each of these elements. The nucleotide sequence will be always entered in the 5?-3? direction.";
2236      case SUBSTANCEPOLYMER:
2237        return "Todo.";
2238      case SUBSTANCEPROTEIN:
2239        return "A SubstanceProtein is defined as a single unit of a linear amino acid sequence, or a combination of subunits that are either covalently linked or have a defined invariant stoichiometric relationship. This includes all synthetic, recombinant and purified SubstanceProteins of defined sequence, whether the use is therapeutic or prophylactic. This set of elements will be used to describe albumins, coagulation factors, cytokines, growth factors, peptide/SubstanceProtein hormones, enzymes, toxins, toxoids, recombinant vaccines, and immunomodulators.";
2240      case SUBSTANCEREFERENCEINFORMATION:
2241        return "Todo.";
2242      case SUBSTANCESOURCEMATERIAL:
2243        return "Source material shall capture information on the taxonomic and anatomical origins as well as the fraction of a material that can result in or can be modified to form a substance. This set of data elements shall be used to define polymer substances isolated from biological matrices. Taxonomic and anatomical origins shall be described using a controlled vocabulary as required. This information is captured for naturally derived polymers ( . starch) and structurally diverse substances. For Organisms belonging to the Kingdom Plantae the Substance level defines the fresh material of a single species or infraspecies, the Herbal Drug and the Herbal preparation. For Herbal preparations, the fraction information will be captured at the Substance information level and additional information for herbal extracts will be captured at the Specified Substance Group 1 information level. See for further explanation the Substance Class: Structurally Diverse and the herbal annex.";
2244      case SUBSTANCESPECIFICATION:
2245        return "The detailed description of a substance, typically at a level beyond what is used for prescribing.";
2246      case SUPPLYDELIVERY:
2247        return "Record of delivery of what is supplied.";
2248      case SUPPLYREQUEST:
2249        return "A record of a request for a medication, substance or device used in the healthcare setting.";
2250      case TASK:
2251        return "A task to be performed.";
2252      case TERMINOLOGYCAPABILITIES:
2253        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.";
2254      case TESTREPORT:
2255        return "A summary of information based on the results of executing a TestScript.";
2256      case TESTSCRIPT:
2257        return "A structured set of tests against a FHIR server or client implementation to determine compliance against the FHIR specification.";
2258      case VALUESET:
2259        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).";
2260      case VERIFICATIONRESULT:
2261        return "Describes validation requirements, source(s), status and dates for one or more elements.";
2262      case VISIONPRESCRIPTION:
2263        return "An authorization for the provision of glasses and/or contact lenses to a patient.";
2264      case NULL:
2265        return null;
2266      default:
2267        return "?";
2268      }
2269    }
2270
2271    public String getDisplay() {
2272      switch (this) {
2273      case ACCOUNT:
2274        return "Account";
2275      case ACTIVITYDEFINITION:
2276        return "ActivityDefinition";
2277      case ADVERSEEVENT:
2278        return "AdverseEvent";
2279      case ALLERGYINTOLERANCE:
2280        return "AllergyIntolerance";
2281      case APPOINTMENT:
2282        return "Appointment";
2283      case APPOINTMENTRESPONSE:
2284        return "AppointmentResponse";
2285      case AUDITEVENT:
2286        return "AuditEvent";
2287      case BASIC:
2288        return "Basic";
2289      case BINARY:
2290        return "Binary";
2291      case BIOLOGICALLYDERIVEDPRODUCT:
2292        return "BiologicallyDerivedProduct";
2293      case BODYSTRUCTURE:
2294        return "BodyStructure";
2295      case BUNDLE:
2296        return "Bundle";
2297      case CAPABILITYSTATEMENT:
2298        return "CapabilityStatement";
2299      case CAREPLAN:
2300        return "CarePlan";
2301      case CARETEAM:
2302        return "CareTeam";
2303      case CATALOGENTRY:
2304        return "CatalogEntry";
2305      case CHARGEITEM:
2306        return "ChargeItem";
2307      case CHARGEITEMDEFINITION:
2308        return "ChargeItemDefinition";
2309      case CLAIM:
2310        return "Claim";
2311      case CLAIMRESPONSE:
2312        return "ClaimResponse";
2313      case CLINICALIMPRESSION:
2314        return "ClinicalImpression";
2315      case CODESYSTEM:
2316        return "CodeSystem";
2317      case COMMUNICATION:
2318        return "Communication";
2319      case COMMUNICATIONREQUEST:
2320        return "CommunicationRequest";
2321      case COMPARTMENTDEFINITION:
2322        return "CompartmentDefinition";
2323      case COMPOSITION:
2324        return "Composition";
2325      case CONCEPTMAP:
2326        return "ConceptMap";
2327      case CONDITION:
2328        return "Condition";
2329      case CONSENT:
2330        return "Consent";
2331      case CONTRACT:
2332        return "Contract";
2333      case COVERAGE:
2334        return "Coverage";
2335      case COVERAGEELIGIBILITYREQUEST:
2336        return "CoverageEligibilityRequest";
2337      case COVERAGEELIGIBILITYRESPONSE:
2338        return "CoverageEligibilityResponse";
2339      case DETECTEDISSUE:
2340        return "DetectedIssue";
2341      case DEVICE:
2342        return "Device";
2343      case DEVICEDEFINITION:
2344        return "DeviceDefinition";
2345      case DEVICEMETRIC:
2346        return "DeviceMetric";
2347      case DEVICEREQUEST:
2348        return "DeviceRequest";
2349      case DEVICEUSESTATEMENT:
2350        return "DeviceUseStatement";
2351      case DIAGNOSTICREPORT:
2352        return "DiagnosticReport";
2353      case DOCUMENTMANIFEST:
2354        return "DocumentManifest";
2355      case DOCUMENTREFERENCE:
2356        return "DocumentReference";
2357      case DOMAINRESOURCE:
2358        return "DomainResource";
2359      case EFFECTEVIDENCESYNTHESIS:
2360        return "EffectEvidenceSynthesis";
2361      case ENCOUNTER:
2362        return "Encounter";
2363      case ENDPOINT:
2364        return "Endpoint";
2365      case ENROLLMENTREQUEST:
2366        return "EnrollmentRequest";
2367      case ENROLLMENTRESPONSE:
2368        return "EnrollmentResponse";
2369      case EPISODEOFCARE:
2370        return "EpisodeOfCare";
2371      case EVENTDEFINITION:
2372        return "EventDefinition";
2373      case EVIDENCE:
2374        return "Evidence";
2375      case EVIDENCEVARIABLE:
2376        return "EvidenceVariable";
2377      case EXAMPLESCENARIO:
2378        return "ExampleScenario";
2379      case EXPLANATIONOFBENEFIT:
2380        return "ExplanationOfBenefit";
2381      case FAMILYMEMBERHISTORY:
2382        return "FamilyMemberHistory";
2383      case FLAG:
2384        return "Flag";
2385      case GOAL:
2386        return "Goal";
2387      case GRAPHDEFINITION:
2388        return "GraphDefinition";
2389      case GROUP:
2390        return "Group";
2391      case GUIDANCERESPONSE:
2392        return "GuidanceResponse";
2393      case HEALTHCARESERVICE:
2394        return "HealthcareService";
2395      case IMAGINGSTUDY:
2396        return "ImagingStudy";
2397      case IMMUNIZATION:
2398        return "Immunization";
2399      case IMMUNIZATIONEVALUATION:
2400        return "ImmunizationEvaluation";
2401      case IMMUNIZATIONRECOMMENDATION:
2402        return "ImmunizationRecommendation";
2403      case IMPLEMENTATIONGUIDE:
2404        return "ImplementationGuide";
2405      case INSURANCEPLAN:
2406        return "InsurancePlan";
2407      case INVOICE:
2408        return "Invoice";
2409      case LIBRARY:
2410        return "Library";
2411      case LINKAGE:
2412        return "Linkage";
2413      case LIST:
2414        return "List";
2415      case LOCATION:
2416        return "Location";
2417      case MEASURE:
2418        return "Measure";
2419      case MEASUREREPORT:
2420        return "MeasureReport";
2421      case MEDIA:
2422        return "Media";
2423      case MEDICATION:
2424        return "Medication";
2425      case MEDICATIONADMINISTRATION:
2426        return "MedicationAdministration";
2427      case MEDICATIONDISPENSE:
2428        return "MedicationDispense";
2429      case MEDICATIONKNOWLEDGE:
2430        return "MedicationKnowledge";
2431      case MEDICATIONREQUEST:
2432        return "MedicationRequest";
2433      case MEDICATIONSTATEMENT:
2434        return "MedicationStatement";
2435      case MEDICINALPRODUCT:
2436        return "MedicinalProduct";
2437      case MEDICINALPRODUCTAUTHORIZATION:
2438        return "MedicinalProductAuthorization";
2439      case MEDICINALPRODUCTCONTRAINDICATION:
2440        return "MedicinalProductContraindication";
2441      case MEDICINALPRODUCTINDICATION:
2442        return "MedicinalProductIndication";
2443      case MEDICINALPRODUCTINGREDIENT:
2444        return "MedicinalProductIngredient";
2445      case MEDICINALPRODUCTINTERACTION:
2446        return "MedicinalProductInteraction";
2447      case MEDICINALPRODUCTMANUFACTURED:
2448        return "MedicinalProductManufactured";
2449      case MEDICINALPRODUCTPACKAGED:
2450        return "MedicinalProductPackaged";
2451      case MEDICINALPRODUCTPHARMACEUTICAL:
2452        return "MedicinalProductPharmaceutical";
2453      case MEDICINALPRODUCTUNDESIRABLEEFFECT:
2454        return "MedicinalProductUndesirableEffect";
2455      case MESSAGEDEFINITION:
2456        return "MessageDefinition";
2457      case MESSAGEHEADER:
2458        return "MessageHeader";
2459      case MOLECULARSEQUENCE:
2460        return "MolecularSequence";
2461      case NAMINGSYSTEM:
2462        return "NamingSystem";
2463      case NUTRITIONORDER:
2464        return "NutritionOrder";
2465      case OBSERVATION:
2466        return "Observation";
2467      case OBSERVATIONDEFINITION:
2468        return "ObservationDefinition";
2469      case OPERATIONDEFINITION:
2470        return "OperationDefinition";
2471      case OPERATIONOUTCOME:
2472        return "OperationOutcome";
2473      case ORGANIZATION:
2474        return "Organization";
2475      case ORGANIZATIONAFFILIATION:
2476        return "OrganizationAffiliation";
2477      case PARAMETERS:
2478        return "Parameters";
2479      case PATIENT:
2480        return "Patient";
2481      case PAYMENTNOTICE:
2482        return "PaymentNotice";
2483      case PAYMENTRECONCILIATION:
2484        return "PaymentReconciliation";
2485      case PERSON:
2486        return "Person";
2487      case PLANDEFINITION:
2488        return "PlanDefinition";
2489      case PRACTITIONER:
2490        return "Practitioner";
2491      case PRACTITIONERROLE:
2492        return "PractitionerRole";
2493      case PROCEDURE:
2494        return "Procedure";
2495      case PROVENANCE:
2496        return "Provenance";
2497      case QUESTIONNAIRE:
2498        return "Questionnaire";
2499      case QUESTIONNAIRERESPONSE:
2500        return "QuestionnaireResponse";
2501      case RELATEDPERSON:
2502        return "RelatedPerson";
2503      case REQUESTGROUP:
2504        return "RequestGroup";
2505      case RESEARCHDEFINITION:
2506        return "ResearchDefinition";
2507      case RESEARCHELEMENTDEFINITION:
2508        return "ResearchElementDefinition";
2509      case RESEARCHSTUDY:
2510        return "ResearchStudy";
2511      case RESEARCHSUBJECT:
2512        return "ResearchSubject";
2513      case RESOURCE:
2514        return "Resource";
2515      case RISKASSESSMENT:
2516        return "RiskAssessment";
2517      case RISKEVIDENCESYNTHESIS:
2518        return "RiskEvidenceSynthesis";
2519      case SCHEDULE:
2520        return "Schedule";
2521      case SEARCHPARAMETER:
2522        return "SearchParameter";
2523      case SERVICEREQUEST:
2524        return "ServiceRequest";
2525      case SLOT:
2526        return "Slot";
2527      case SPECIMEN:
2528        return "Specimen";
2529      case SPECIMENDEFINITION:
2530        return "SpecimenDefinition";
2531      case STRUCTUREDEFINITION:
2532        return "StructureDefinition";
2533      case STRUCTUREMAP:
2534        return "StructureMap";
2535      case SUBSCRIPTION:
2536        return "Subscription";
2537      case SUBSTANCE:
2538        return "Substance";
2539      case SUBSTANCENUCLEICACID:
2540        return "SubstanceNucleicAcid";
2541      case SUBSTANCEPOLYMER:
2542        return "SubstancePolymer";
2543      case SUBSTANCEPROTEIN:
2544        return "SubstanceProtein";
2545      case SUBSTANCEREFERENCEINFORMATION:
2546        return "SubstanceReferenceInformation";
2547      case SUBSTANCESOURCEMATERIAL:
2548        return "SubstanceSourceMaterial";
2549      case SUBSTANCESPECIFICATION:
2550        return "SubstanceSpecification";
2551      case SUPPLYDELIVERY:
2552        return "SupplyDelivery";
2553      case SUPPLYREQUEST:
2554        return "SupplyRequest";
2555      case TASK:
2556        return "Task";
2557      case TERMINOLOGYCAPABILITIES:
2558        return "TerminologyCapabilities";
2559      case TESTREPORT:
2560        return "TestReport";
2561      case TESTSCRIPT:
2562        return "TestScript";
2563      case VALUESET:
2564        return "ValueSet";
2565      case VERIFICATIONRESULT:
2566        return "VerificationResult";
2567      case VISIONPRESCRIPTION:
2568        return "VisionPrescription";
2569      case NULL:
2570        return null;
2571      default:
2572        return "?";
2573      }
2574    }
2575  }
2576
2577  public static class FHIRResourceTypeEnumFactory implements EnumFactory<FHIRResourceType> {
2578    public FHIRResourceType fromCode(String codeString) throws IllegalArgumentException {
2579      if (codeString == null || "".equals(codeString))
2580        if (codeString == null || "".equals(codeString))
2581          return null;
2582      if ("Account".equals(codeString))
2583        return FHIRResourceType.ACCOUNT;
2584      if ("ActivityDefinition".equals(codeString))
2585        return FHIRResourceType.ACTIVITYDEFINITION;
2586      if ("AdverseEvent".equals(codeString))
2587        return FHIRResourceType.ADVERSEEVENT;
2588      if ("AllergyIntolerance".equals(codeString))
2589        return FHIRResourceType.ALLERGYINTOLERANCE;
2590      if ("Appointment".equals(codeString))
2591        return FHIRResourceType.APPOINTMENT;
2592      if ("AppointmentResponse".equals(codeString))
2593        return FHIRResourceType.APPOINTMENTRESPONSE;
2594      if ("AuditEvent".equals(codeString))
2595        return FHIRResourceType.AUDITEVENT;
2596      if ("Basic".equals(codeString))
2597        return FHIRResourceType.BASIC;
2598      if ("Binary".equals(codeString))
2599        return FHIRResourceType.BINARY;
2600      if ("BiologicallyDerivedProduct".equals(codeString))
2601        return FHIRResourceType.BIOLOGICALLYDERIVEDPRODUCT;
2602      if ("BodyStructure".equals(codeString))
2603        return FHIRResourceType.BODYSTRUCTURE;
2604      if ("Bundle".equals(codeString))
2605        return FHIRResourceType.BUNDLE;
2606      if ("CapabilityStatement".equals(codeString))
2607        return FHIRResourceType.CAPABILITYSTATEMENT;
2608      if ("CarePlan".equals(codeString))
2609        return FHIRResourceType.CAREPLAN;
2610      if ("CareTeam".equals(codeString))
2611        return FHIRResourceType.CARETEAM;
2612      if ("CatalogEntry".equals(codeString))
2613        return FHIRResourceType.CATALOGENTRY;
2614      if ("ChargeItem".equals(codeString))
2615        return FHIRResourceType.CHARGEITEM;
2616      if ("ChargeItemDefinition".equals(codeString))
2617        return FHIRResourceType.CHARGEITEMDEFINITION;
2618      if ("Claim".equals(codeString))
2619        return FHIRResourceType.CLAIM;
2620      if ("ClaimResponse".equals(codeString))
2621        return FHIRResourceType.CLAIMRESPONSE;
2622      if ("ClinicalImpression".equals(codeString))
2623        return FHIRResourceType.CLINICALIMPRESSION;
2624      if ("CodeSystem".equals(codeString))
2625        return FHIRResourceType.CODESYSTEM;
2626      if ("Communication".equals(codeString))
2627        return FHIRResourceType.COMMUNICATION;
2628      if ("CommunicationRequest".equals(codeString))
2629        return FHIRResourceType.COMMUNICATIONREQUEST;
2630      if ("CompartmentDefinition".equals(codeString))
2631        return FHIRResourceType.COMPARTMENTDEFINITION;
2632      if ("Composition".equals(codeString))
2633        return FHIRResourceType.COMPOSITION;
2634      if ("ConceptMap".equals(codeString))
2635        return FHIRResourceType.CONCEPTMAP;
2636      if ("Condition".equals(codeString))
2637        return FHIRResourceType.CONDITION;
2638      if ("Consent".equals(codeString))
2639        return FHIRResourceType.CONSENT;
2640      if ("Contract".equals(codeString))
2641        return FHIRResourceType.CONTRACT;
2642      if ("Coverage".equals(codeString))
2643        return FHIRResourceType.COVERAGE;
2644      if ("CoverageEligibilityRequest".equals(codeString))
2645        return FHIRResourceType.COVERAGEELIGIBILITYREQUEST;
2646      if ("CoverageEligibilityResponse".equals(codeString))
2647        return FHIRResourceType.COVERAGEELIGIBILITYRESPONSE;
2648      if ("DetectedIssue".equals(codeString))
2649        return FHIRResourceType.DETECTEDISSUE;
2650      if ("Device".equals(codeString))
2651        return FHIRResourceType.DEVICE;
2652      if ("DeviceDefinition".equals(codeString))
2653        return FHIRResourceType.DEVICEDEFINITION;
2654      if ("DeviceMetric".equals(codeString))
2655        return FHIRResourceType.DEVICEMETRIC;
2656      if ("DeviceRequest".equals(codeString))
2657        return FHIRResourceType.DEVICEREQUEST;
2658      if ("DeviceUseStatement".equals(codeString))
2659        return FHIRResourceType.DEVICEUSESTATEMENT;
2660      if ("DiagnosticReport".equals(codeString))
2661        return FHIRResourceType.DIAGNOSTICREPORT;
2662      if ("DocumentManifest".equals(codeString))
2663        return FHIRResourceType.DOCUMENTMANIFEST;
2664      if ("DocumentReference".equals(codeString))
2665        return FHIRResourceType.DOCUMENTREFERENCE;
2666      if ("DomainResource".equals(codeString))
2667        return FHIRResourceType.DOMAINRESOURCE;
2668      if ("EffectEvidenceSynthesis".equals(codeString))
2669        return FHIRResourceType.EFFECTEVIDENCESYNTHESIS;
2670      if ("Encounter".equals(codeString))
2671        return FHIRResourceType.ENCOUNTER;
2672      if ("Endpoint".equals(codeString))
2673        return FHIRResourceType.ENDPOINT;
2674      if ("EnrollmentRequest".equals(codeString))
2675        return FHIRResourceType.ENROLLMENTREQUEST;
2676      if ("EnrollmentResponse".equals(codeString))
2677        return FHIRResourceType.ENROLLMENTRESPONSE;
2678      if ("EpisodeOfCare".equals(codeString))
2679        return FHIRResourceType.EPISODEOFCARE;
2680      if ("EventDefinition".equals(codeString))
2681        return FHIRResourceType.EVENTDEFINITION;
2682      if ("Evidence".equals(codeString))
2683        return FHIRResourceType.EVIDENCE;
2684      if ("EvidenceVariable".equals(codeString))
2685        return FHIRResourceType.EVIDENCEVARIABLE;
2686      if ("ExampleScenario".equals(codeString))
2687        return FHIRResourceType.EXAMPLESCENARIO;
2688      if ("ExplanationOfBenefit".equals(codeString))
2689        return FHIRResourceType.EXPLANATIONOFBENEFIT;
2690      if ("FamilyMemberHistory".equals(codeString))
2691        return FHIRResourceType.FAMILYMEMBERHISTORY;
2692      if ("Flag".equals(codeString))
2693        return FHIRResourceType.FLAG;
2694      if ("Goal".equals(codeString))
2695        return FHIRResourceType.GOAL;
2696      if ("GraphDefinition".equals(codeString))
2697        return FHIRResourceType.GRAPHDEFINITION;
2698      if ("Group".equals(codeString))
2699        return FHIRResourceType.GROUP;
2700      if ("GuidanceResponse".equals(codeString))
2701        return FHIRResourceType.GUIDANCERESPONSE;
2702      if ("HealthcareService".equals(codeString))
2703        return FHIRResourceType.HEALTHCARESERVICE;
2704      if ("ImagingStudy".equals(codeString))
2705        return FHIRResourceType.IMAGINGSTUDY;
2706      if ("Immunization".equals(codeString))
2707        return FHIRResourceType.IMMUNIZATION;
2708      if ("ImmunizationEvaluation".equals(codeString))
2709        return FHIRResourceType.IMMUNIZATIONEVALUATION;
2710      if ("ImmunizationRecommendation".equals(codeString))
2711        return FHIRResourceType.IMMUNIZATIONRECOMMENDATION;
2712      if ("ImplementationGuide".equals(codeString))
2713        return FHIRResourceType.IMPLEMENTATIONGUIDE;
2714      if ("InsurancePlan".equals(codeString))
2715        return FHIRResourceType.INSURANCEPLAN;
2716      if ("Invoice".equals(codeString))
2717        return FHIRResourceType.INVOICE;
2718      if ("Library".equals(codeString))
2719        return FHIRResourceType.LIBRARY;
2720      if ("Linkage".equals(codeString))
2721        return FHIRResourceType.LINKAGE;
2722      if ("List".equals(codeString))
2723        return FHIRResourceType.LIST;
2724      if ("Location".equals(codeString))
2725        return FHIRResourceType.LOCATION;
2726      if ("Measure".equals(codeString))
2727        return FHIRResourceType.MEASURE;
2728      if ("MeasureReport".equals(codeString))
2729        return FHIRResourceType.MEASUREREPORT;
2730      if ("Media".equals(codeString))
2731        return FHIRResourceType.MEDIA;
2732      if ("Medication".equals(codeString))
2733        return FHIRResourceType.MEDICATION;
2734      if ("MedicationAdministration".equals(codeString))
2735        return FHIRResourceType.MEDICATIONADMINISTRATION;
2736      if ("MedicationDispense".equals(codeString))
2737        return FHIRResourceType.MEDICATIONDISPENSE;
2738      if ("MedicationKnowledge".equals(codeString))
2739        return FHIRResourceType.MEDICATIONKNOWLEDGE;
2740      if ("MedicationRequest".equals(codeString))
2741        return FHIRResourceType.MEDICATIONREQUEST;
2742      if ("MedicationStatement".equals(codeString))
2743        return FHIRResourceType.MEDICATIONSTATEMENT;
2744      if ("MedicinalProduct".equals(codeString))
2745        return FHIRResourceType.MEDICINALPRODUCT;
2746      if ("MedicinalProductAuthorization".equals(codeString))
2747        return FHIRResourceType.MEDICINALPRODUCTAUTHORIZATION;
2748      if ("MedicinalProductContraindication".equals(codeString))
2749        return FHIRResourceType.MEDICINALPRODUCTCONTRAINDICATION;
2750      if ("MedicinalProductIndication".equals(codeString))
2751        return FHIRResourceType.MEDICINALPRODUCTINDICATION;
2752      if ("MedicinalProductIngredient".equals(codeString))
2753        return FHIRResourceType.MEDICINALPRODUCTINGREDIENT;
2754      if ("MedicinalProductInteraction".equals(codeString))
2755        return FHIRResourceType.MEDICINALPRODUCTINTERACTION;
2756      if ("MedicinalProductManufactured".equals(codeString))
2757        return FHIRResourceType.MEDICINALPRODUCTMANUFACTURED;
2758      if ("MedicinalProductPackaged".equals(codeString))
2759        return FHIRResourceType.MEDICINALPRODUCTPACKAGED;
2760      if ("MedicinalProductPharmaceutical".equals(codeString))
2761        return FHIRResourceType.MEDICINALPRODUCTPHARMACEUTICAL;
2762      if ("MedicinalProductUndesirableEffect".equals(codeString))
2763        return FHIRResourceType.MEDICINALPRODUCTUNDESIRABLEEFFECT;
2764      if ("MessageDefinition".equals(codeString))
2765        return FHIRResourceType.MESSAGEDEFINITION;
2766      if ("MessageHeader".equals(codeString))
2767        return FHIRResourceType.MESSAGEHEADER;
2768      if ("MolecularSequence".equals(codeString))
2769        return FHIRResourceType.MOLECULARSEQUENCE;
2770      if ("NamingSystem".equals(codeString))
2771        return FHIRResourceType.NAMINGSYSTEM;
2772      if ("NutritionOrder".equals(codeString))
2773        return FHIRResourceType.NUTRITIONORDER;
2774      if ("Observation".equals(codeString))
2775        return FHIRResourceType.OBSERVATION;
2776      if ("ObservationDefinition".equals(codeString))
2777        return FHIRResourceType.OBSERVATIONDEFINITION;
2778      if ("OperationDefinition".equals(codeString))
2779        return FHIRResourceType.OPERATIONDEFINITION;
2780      if ("OperationOutcome".equals(codeString))
2781        return FHIRResourceType.OPERATIONOUTCOME;
2782      if ("Organization".equals(codeString))
2783        return FHIRResourceType.ORGANIZATION;
2784      if ("OrganizationAffiliation".equals(codeString))
2785        return FHIRResourceType.ORGANIZATIONAFFILIATION;
2786      if ("Parameters".equals(codeString))
2787        return FHIRResourceType.PARAMETERS;
2788      if ("Patient".equals(codeString))
2789        return FHIRResourceType.PATIENT;
2790      if ("PaymentNotice".equals(codeString))
2791        return FHIRResourceType.PAYMENTNOTICE;
2792      if ("PaymentReconciliation".equals(codeString))
2793        return FHIRResourceType.PAYMENTRECONCILIATION;
2794      if ("Person".equals(codeString))
2795        return FHIRResourceType.PERSON;
2796      if ("PlanDefinition".equals(codeString))
2797        return FHIRResourceType.PLANDEFINITION;
2798      if ("Practitioner".equals(codeString))
2799        return FHIRResourceType.PRACTITIONER;
2800      if ("PractitionerRole".equals(codeString))
2801        return FHIRResourceType.PRACTITIONERROLE;
2802      if ("Procedure".equals(codeString))
2803        return FHIRResourceType.PROCEDURE;
2804      if ("Provenance".equals(codeString))
2805        return FHIRResourceType.PROVENANCE;
2806      if ("Questionnaire".equals(codeString))
2807        return FHIRResourceType.QUESTIONNAIRE;
2808      if ("QuestionnaireResponse".equals(codeString))
2809        return FHIRResourceType.QUESTIONNAIRERESPONSE;
2810      if ("RelatedPerson".equals(codeString))
2811        return FHIRResourceType.RELATEDPERSON;
2812      if ("RequestGroup".equals(codeString))
2813        return FHIRResourceType.REQUESTGROUP;
2814      if ("ResearchDefinition".equals(codeString))
2815        return FHIRResourceType.RESEARCHDEFINITION;
2816      if ("ResearchElementDefinition".equals(codeString))
2817        return FHIRResourceType.RESEARCHELEMENTDEFINITION;
2818      if ("ResearchStudy".equals(codeString))
2819        return FHIRResourceType.RESEARCHSTUDY;
2820      if ("ResearchSubject".equals(codeString))
2821        return FHIRResourceType.RESEARCHSUBJECT;
2822      if ("Resource".equals(codeString))
2823        return FHIRResourceType.RESOURCE;
2824      if ("RiskAssessment".equals(codeString))
2825        return FHIRResourceType.RISKASSESSMENT;
2826      if ("RiskEvidenceSynthesis".equals(codeString))
2827        return FHIRResourceType.RISKEVIDENCESYNTHESIS;
2828      if ("Schedule".equals(codeString))
2829        return FHIRResourceType.SCHEDULE;
2830      if ("SearchParameter".equals(codeString))
2831        return FHIRResourceType.SEARCHPARAMETER;
2832      if ("ServiceRequest".equals(codeString))
2833        return FHIRResourceType.SERVICEREQUEST;
2834      if ("Slot".equals(codeString))
2835        return FHIRResourceType.SLOT;
2836      if ("Specimen".equals(codeString))
2837        return FHIRResourceType.SPECIMEN;
2838      if ("SpecimenDefinition".equals(codeString))
2839        return FHIRResourceType.SPECIMENDEFINITION;
2840      if ("StructureDefinition".equals(codeString))
2841        return FHIRResourceType.STRUCTUREDEFINITION;
2842      if ("StructureMap".equals(codeString))
2843        return FHIRResourceType.STRUCTUREMAP;
2844      if ("Subscription".equals(codeString))
2845        return FHIRResourceType.SUBSCRIPTION;
2846      if ("Substance".equals(codeString))
2847        return FHIRResourceType.SUBSTANCE;
2848      if ("SubstanceNucleicAcid".equals(codeString))
2849        return FHIRResourceType.SUBSTANCENUCLEICACID;
2850      if ("SubstancePolymer".equals(codeString))
2851        return FHIRResourceType.SUBSTANCEPOLYMER;
2852      if ("SubstanceProtein".equals(codeString))
2853        return FHIRResourceType.SUBSTANCEPROTEIN;
2854      if ("SubstanceReferenceInformation".equals(codeString))
2855        return FHIRResourceType.SUBSTANCEREFERENCEINFORMATION;
2856      if ("SubstanceSourceMaterial".equals(codeString))
2857        return FHIRResourceType.SUBSTANCESOURCEMATERIAL;
2858      if ("SubstanceSpecification".equals(codeString))
2859        return FHIRResourceType.SUBSTANCESPECIFICATION;
2860      if ("SupplyDelivery".equals(codeString))
2861        return FHIRResourceType.SUPPLYDELIVERY;
2862      if ("SupplyRequest".equals(codeString))
2863        return FHIRResourceType.SUPPLYREQUEST;
2864      if ("Task".equals(codeString))
2865        return FHIRResourceType.TASK;
2866      if ("TerminologyCapabilities".equals(codeString))
2867        return FHIRResourceType.TERMINOLOGYCAPABILITIES;
2868      if ("TestReport".equals(codeString))
2869        return FHIRResourceType.TESTREPORT;
2870      if ("TestScript".equals(codeString))
2871        return FHIRResourceType.TESTSCRIPT;
2872      if ("ValueSet".equals(codeString))
2873        return FHIRResourceType.VALUESET;
2874      if ("VerificationResult".equals(codeString))
2875        return FHIRResourceType.VERIFICATIONRESULT;
2876      if ("VisionPrescription".equals(codeString))
2877        return FHIRResourceType.VISIONPRESCRIPTION;
2878      throw new IllegalArgumentException("Unknown FHIRResourceType code '" + codeString + "'");
2879    }
2880
2881    public Enumeration<FHIRResourceType> fromType(PrimitiveType<?> code) throws FHIRException {
2882      if (code == null)
2883        return null;
2884      if (code.isEmpty())
2885        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.NULL, code);
2886      String codeString = code.asStringValue();
2887      if (codeString == null || "".equals(codeString))
2888        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.NULL, code);
2889      if ("Account".equals(codeString))
2890        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.ACCOUNT, code);
2891      if ("ActivityDefinition".equals(codeString))
2892        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.ACTIVITYDEFINITION, code);
2893      if ("AdverseEvent".equals(codeString))
2894        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.ADVERSEEVENT, code);
2895      if ("AllergyIntolerance".equals(codeString))
2896        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.ALLERGYINTOLERANCE, code);
2897      if ("Appointment".equals(codeString))
2898        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.APPOINTMENT, code);
2899      if ("AppointmentResponse".equals(codeString))
2900        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.APPOINTMENTRESPONSE, code);
2901      if ("AuditEvent".equals(codeString))
2902        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.AUDITEVENT, code);
2903      if ("Basic".equals(codeString))
2904        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.BASIC, code);
2905      if ("Binary".equals(codeString))
2906        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.BINARY, code);
2907      if ("BiologicallyDerivedProduct".equals(codeString))
2908        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.BIOLOGICALLYDERIVEDPRODUCT, code);
2909      if ("BodyStructure".equals(codeString))
2910        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.BODYSTRUCTURE, code);
2911      if ("Bundle".equals(codeString))
2912        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.BUNDLE, code);
2913      if ("CapabilityStatement".equals(codeString))
2914        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.CAPABILITYSTATEMENT, code);
2915      if ("CarePlan".equals(codeString))
2916        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.CAREPLAN, code);
2917      if ("CareTeam".equals(codeString))
2918        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.CARETEAM, code);
2919      if ("CatalogEntry".equals(codeString))
2920        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.CATALOGENTRY, code);
2921      if ("ChargeItem".equals(codeString))
2922        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.CHARGEITEM, code);
2923      if ("ChargeItemDefinition".equals(codeString))
2924        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.CHARGEITEMDEFINITION, code);
2925      if ("Claim".equals(codeString))
2926        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.CLAIM, code);
2927      if ("ClaimResponse".equals(codeString))
2928        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.CLAIMRESPONSE, code);
2929      if ("ClinicalImpression".equals(codeString))
2930        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.CLINICALIMPRESSION, code);
2931      if ("CodeSystem".equals(codeString))
2932        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.CODESYSTEM, code);
2933      if ("Communication".equals(codeString))
2934        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.COMMUNICATION, code);
2935      if ("CommunicationRequest".equals(codeString))
2936        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.COMMUNICATIONREQUEST, code);
2937      if ("CompartmentDefinition".equals(codeString))
2938        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.COMPARTMENTDEFINITION, code);
2939      if ("Composition".equals(codeString))
2940        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.COMPOSITION, code);
2941      if ("ConceptMap".equals(codeString))
2942        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.CONCEPTMAP, code);
2943      if ("Condition".equals(codeString))
2944        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.CONDITION, code);
2945      if ("Consent".equals(codeString))
2946        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.CONSENT, code);
2947      if ("Contract".equals(codeString))
2948        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.CONTRACT, code);
2949      if ("Coverage".equals(codeString))
2950        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.COVERAGE, code);
2951      if ("CoverageEligibilityRequest".equals(codeString))
2952        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.COVERAGEELIGIBILITYREQUEST, code);
2953      if ("CoverageEligibilityResponse".equals(codeString))
2954        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.COVERAGEELIGIBILITYRESPONSE, code);
2955      if ("DetectedIssue".equals(codeString))
2956        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.DETECTEDISSUE, code);
2957      if ("Device".equals(codeString))
2958        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.DEVICE, code);
2959      if ("DeviceDefinition".equals(codeString))
2960        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.DEVICEDEFINITION, code);
2961      if ("DeviceMetric".equals(codeString))
2962        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.DEVICEMETRIC, code);
2963      if ("DeviceRequest".equals(codeString))
2964        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.DEVICEREQUEST, code);
2965      if ("DeviceUseStatement".equals(codeString))
2966        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.DEVICEUSESTATEMENT, code);
2967      if ("DiagnosticReport".equals(codeString))
2968        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.DIAGNOSTICREPORT, code);
2969      if ("DocumentManifest".equals(codeString))
2970        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.DOCUMENTMANIFEST, code);
2971      if ("DocumentReference".equals(codeString))
2972        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.DOCUMENTREFERENCE, code);
2973      if ("DomainResource".equals(codeString))
2974        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.DOMAINRESOURCE, code);
2975      if ("EffectEvidenceSynthesis".equals(codeString))
2976        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.EFFECTEVIDENCESYNTHESIS, code);
2977      if ("Encounter".equals(codeString))
2978        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.ENCOUNTER, code);
2979      if ("Endpoint".equals(codeString))
2980        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.ENDPOINT, code);
2981      if ("EnrollmentRequest".equals(codeString))
2982        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.ENROLLMENTREQUEST, code);
2983      if ("EnrollmentResponse".equals(codeString))
2984        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.ENROLLMENTRESPONSE, code);
2985      if ("EpisodeOfCare".equals(codeString))
2986        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.EPISODEOFCARE, code);
2987      if ("EventDefinition".equals(codeString))
2988        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.EVENTDEFINITION, code);
2989      if ("Evidence".equals(codeString))
2990        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.EVIDENCE, code);
2991      if ("EvidenceVariable".equals(codeString))
2992        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.EVIDENCEVARIABLE, code);
2993      if ("ExampleScenario".equals(codeString))
2994        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.EXAMPLESCENARIO, code);
2995      if ("ExplanationOfBenefit".equals(codeString))
2996        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.EXPLANATIONOFBENEFIT, code);
2997      if ("FamilyMemberHistory".equals(codeString))
2998        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.FAMILYMEMBERHISTORY, code);
2999      if ("Flag".equals(codeString))
3000        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.FLAG, code);
3001      if ("Goal".equals(codeString))
3002        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.GOAL, code);
3003      if ("GraphDefinition".equals(codeString))
3004        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.GRAPHDEFINITION, code);
3005      if ("Group".equals(codeString))
3006        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.GROUP, code);
3007      if ("GuidanceResponse".equals(codeString))
3008        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.GUIDANCERESPONSE, code);
3009      if ("HealthcareService".equals(codeString))
3010        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.HEALTHCARESERVICE, code);
3011      if ("ImagingStudy".equals(codeString))
3012        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.IMAGINGSTUDY, code);
3013      if ("Immunization".equals(codeString))
3014        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.IMMUNIZATION, code);
3015      if ("ImmunizationEvaluation".equals(codeString))
3016        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.IMMUNIZATIONEVALUATION, code);
3017      if ("ImmunizationRecommendation".equals(codeString))
3018        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.IMMUNIZATIONRECOMMENDATION, code);
3019      if ("ImplementationGuide".equals(codeString))
3020        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.IMPLEMENTATIONGUIDE, code);
3021      if ("InsurancePlan".equals(codeString))
3022        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.INSURANCEPLAN, code);
3023      if ("Invoice".equals(codeString))
3024        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.INVOICE, code);
3025      if ("Library".equals(codeString))
3026        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.LIBRARY, code);
3027      if ("Linkage".equals(codeString))
3028        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.LINKAGE, code);
3029      if ("List".equals(codeString))
3030        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.LIST, code);
3031      if ("Location".equals(codeString))
3032        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.LOCATION, code);
3033      if ("Measure".equals(codeString))
3034        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.MEASURE, code);
3035      if ("MeasureReport".equals(codeString))
3036        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.MEASUREREPORT, code);
3037      if ("Media".equals(codeString))
3038        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.MEDIA, code);
3039      if ("Medication".equals(codeString))
3040        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.MEDICATION, code);
3041      if ("MedicationAdministration".equals(codeString))
3042        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.MEDICATIONADMINISTRATION, code);
3043      if ("MedicationDispense".equals(codeString))
3044        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.MEDICATIONDISPENSE, code);
3045      if ("MedicationKnowledge".equals(codeString))
3046        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.MEDICATIONKNOWLEDGE, code);
3047      if ("MedicationRequest".equals(codeString))
3048        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.MEDICATIONREQUEST, code);
3049      if ("MedicationStatement".equals(codeString))
3050        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.MEDICATIONSTATEMENT, code);
3051      if ("MedicinalProduct".equals(codeString))
3052        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.MEDICINALPRODUCT, code);
3053      if ("MedicinalProductAuthorization".equals(codeString))
3054        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.MEDICINALPRODUCTAUTHORIZATION, code);
3055      if ("MedicinalProductContraindication".equals(codeString))
3056        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.MEDICINALPRODUCTCONTRAINDICATION, code);
3057      if ("MedicinalProductIndication".equals(codeString))
3058        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.MEDICINALPRODUCTINDICATION, code);
3059      if ("MedicinalProductIngredient".equals(codeString))
3060        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.MEDICINALPRODUCTINGREDIENT, code);
3061      if ("MedicinalProductInteraction".equals(codeString))
3062        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.MEDICINALPRODUCTINTERACTION, code);
3063      if ("MedicinalProductManufactured".equals(codeString))
3064        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.MEDICINALPRODUCTMANUFACTURED, code);
3065      if ("MedicinalProductPackaged".equals(codeString))
3066        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.MEDICINALPRODUCTPACKAGED, code);
3067      if ("MedicinalProductPharmaceutical".equals(codeString))
3068        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.MEDICINALPRODUCTPHARMACEUTICAL, code);
3069      if ("MedicinalProductUndesirableEffect".equals(codeString))
3070        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.MEDICINALPRODUCTUNDESIRABLEEFFECT, code);
3071      if ("MessageDefinition".equals(codeString))
3072        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.MESSAGEDEFINITION, code);
3073      if ("MessageHeader".equals(codeString))
3074        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.MESSAGEHEADER, code);
3075      if ("MolecularSequence".equals(codeString))
3076        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.MOLECULARSEQUENCE, code);
3077      if ("NamingSystem".equals(codeString))
3078        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.NAMINGSYSTEM, code);
3079      if ("NutritionOrder".equals(codeString))
3080        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.NUTRITIONORDER, code);
3081      if ("Observation".equals(codeString))
3082        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.OBSERVATION, code);
3083      if ("ObservationDefinition".equals(codeString))
3084        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.OBSERVATIONDEFINITION, code);
3085      if ("OperationDefinition".equals(codeString))
3086        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.OPERATIONDEFINITION, code);
3087      if ("OperationOutcome".equals(codeString))
3088        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.OPERATIONOUTCOME, code);
3089      if ("Organization".equals(codeString))
3090        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.ORGANIZATION, code);
3091      if ("OrganizationAffiliation".equals(codeString))
3092        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.ORGANIZATIONAFFILIATION, code);
3093      if ("Parameters".equals(codeString))
3094        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.PARAMETERS, code);
3095      if ("Patient".equals(codeString))
3096        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.PATIENT, code);
3097      if ("PaymentNotice".equals(codeString))
3098        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.PAYMENTNOTICE, code);
3099      if ("PaymentReconciliation".equals(codeString))
3100        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.PAYMENTRECONCILIATION, code);
3101      if ("Person".equals(codeString))
3102        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.PERSON, code);
3103      if ("PlanDefinition".equals(codeString))
3104        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.PLANDEFINITION, code);
3105      if ("Practitioner".equals(codeString))
3106        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.PRACTITIONER, code);
3107      if ("PractitionerRole".equals(codeString))
3108        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.PRACTITIONERROLE, code);
3109      if ("Procedure".equals(codeString))
3110        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.PROCEDURE, code);
3111      if ("Provenance".equals(codeString))
3112        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.PROVENANCE, code);
3113      if ("Questionnaire".equals(codeString))
3114        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.QUESTIONNAIRE, code);
3115      if ("QuestionnaireResponse".equals(codeString))
3116        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.QUESTIONNAIRERESPONSE, code);
3117      if ("RelatedPerson".equals(codeString))
3118        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.RELATEDPERSON, code);
3119      if ("RequestGroup".equals(codeString))
3120        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.REQUESTGROUP, code);
3121      if ("ResearchDefinition".equals(codeString))
3122        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.RESEARCHDEFINITION, code);
3123      if ("ResearchElementDefinition".equals(codeString))
3124        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.RESEARCHELEMENTDEFINITION, code);
3125      if ("ResearchStudy".equals(codeString))
3126        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.RESEARCHSTUDY, code);
3127      if ("ResearchSubject".equals(codeString))
3128        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.RESEARCHSUBJECT, code);
3129      if ("Resource".equals(codeString))
3130        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.RESOURCE, code);
3131      if ("RiskAssessment".equals(codeString))
3132        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.RISKASSESSMENT, code);
3133      if ("RiskEvidenceSynthesis".equals(codeString))
3134        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.RISKEVIDENCESYNTHESIS, code);
3135      if ("Schedule".equals(codeString))
3136        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.SCHEDULE, code);
3137      if ("SearchParameter".equals(codeString))
3138        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.SEARCHPARAMETER, code);
3139      if ("ServiceRequest".equals(codeString))
3140        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.SERVICEREQUEST, code);
3141      if ("Slot".equals(codeString))
3142        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.SLOT, code);
3143      if ("Specimen".equals(codeString))
3144        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.SPECIMEN, code);
3145      if ("SpecimenDefinition".equals(codeString))
3146        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.SPECIMENDEFINITION, code);
3147      if ("StructureDefinition".equals(codeString))
3148        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.STRUCTUREDEFINITION, code);
3149      if ("StructureMap".equals(codeString))
3150        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.STRUCTUREMAP, code);
3151      if ("Subscription".equals(codeString))
3152        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.SUBSCRIPTION, code);
3153      if ("Substance".equals(codeString))
3154        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.SUBSTANCE, code);
3155      if ("SubstanceNucleicAcid".equals(codeString))
3156        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.SUBSTANCENUCLEICACID, code);
3157      if ("SubstancePolymer".equals(codeString))
3158        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.SUBSTANCEPOLYMER, code);
3159      if ("SubstanceProtein".equals(codeString))
3160        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.SUBSTANCEPROTEIN, code);
3161      if ("SubstanceReferenceInformation".equals(codeString))
3162        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.SUBSTANCEREFERENCEINFORMATION, code);
3163      if ("SubstanceSourceMaterial".equals(codeString))
3164        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.SUBSTANCESOURCEMATERIAL, code);
3165      if ("SubstanceSpecification".equals(codeString))
3166        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.SUBSTANCESPECIFICATION, code);
3167      if ("SupplyDelivery".equals(codeString))
3168        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.SUPPLYDELIVERY, code);
3169      if ("SupplyRequest".equals(codeString))
3170        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.SUPPLYREQUEST, code);
3171      if ("Task".equals(codeString))
3172        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.TASK, code);
3173      if ("TerminologyCapabilities".equals(codeString))
3174        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.TERMINOLOGYCAPABILITIES, code);
3175      if ("TestReport".equals(codeString))
3176        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.TESTREPORT, code);
3177      if ("TestScript".equals(codeString))
3178        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.TESTSCRIPT, code);
3179      if ("ValueSet".equals(codeString))
3180        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.VALUESET, code);
3181      if ("VerificationResult".equals(codeString))
3182        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.VERIFICATIONRESULT, code);
3183      if ("VisionPrescription".equals(codeString))
3184        return new Enumeration<FHIRResourceType>(this, FHIRResourceType.VISIONPRESCRIPTION, code);
3185      throw new FHIRException("Unknown FHIRResourceType code '" + codeString + "'");
3186    }
3187
3188    public String toCode(FHIRResourceType code) {
3189      if (code == FHIRResourceType.ACCOUNT)
3190        return "Account";
3191      if (code == FHIRResourceType.ACTIVITYDEFINITION)
3192        return "ActivityDefinition";
3193      if (code == FHIRResourceType.ADVERSEEVENT)
3194        return "AdverseEvent";
3195      if (code == FHIRResourceType.ALLERGYINTOLERANCE)
3196        return "AllergyIntolerance";
3197      if (code == FHIRResourceType.APPOINTMENT)
3198        return "Appointment";
3199      if (code == FHIRResourceType.APPOINTMENTRESPONSE)
3200        return "AppointmentResponse";
3201      if (code == FHIRResourceType.AUDITEVENT)
3202        return "AuditEvent";
3203      if (code == FHIRResourceType.BASIC)
3204        return "Basic";
3205      if (code == FHIRResourceType.BINARY)
3206        return "Binary";
3207      if (code == FHIRResourceType.BIOLOGICALLYDERIVEDPRODUCT)
3208        return "BiologicallyDerivedProduct";
3209      if (code == FHIRResourceType.BODYSTRUCTURE)
3210        return "BodyStructure";
3211      if (code == FHIRResourceType.BUNDLE)
3212        return "Bundle";
3213      if (code == FHIRResourceType.CAPABILITYSTATEMENT)
3214        return "CapabilityStatement";
3215      if (code == FHIRResourceType.CAREPLAN)
3216        return "CarePlan";
3217      if (code == FHIRResourceType.CARETEAM)
3218        return "CareTeam";
3219      if (code == FHIRResourceType.CATALOGENTRY)
3220        return "CatalogEntry";
3221      if (code == FHIRResourceType.CHARGEITEM)
3222        return "ChargeItem";
3223      if (code == FHIRResourceType.CHARGEITEMDEFINITION)
3224        return "ChargeItemDefinition";
3225      if (code == FHIRResourceType.CLAIM)
3226        return "Claim";
3227      if (code == FHIRResourceType.CLAIMRESPONSE)
3228        return "ClaimResponse";
3229      if (code == FHIRResourceType.CLINICALIMPRESSION)
3230        return "ClinicalImpression";
3231      if (code == FHIRResourceType.CODESYSTEM)
3232        return "CodeSystem";
3233      if (code == FHIRResourceType.COMMUNICATION)
3234        return "Communication";
3235      if (code == FHIRResourceType.COMMUNICATIONREQUEST)
3236        return "CommunicationRequest";
3237      if (code == FHIRResourceType.COMPARTMENTDEFINITION)
3238        return "CompartmentDefinition";
3239      if (code == FHIRResourceType.COMPOSITION)
3240        return "Composition";
3241      if (code == FHIRResourceType.CONCEPTMAP)
3242        return "ConceptMap";
3243      if (code == FHIRResourceType.CONDITION)
3244        return "Condition";
3245      if (code == FHIRResourceType.CONSENT)
3246        return "Consent";
3247      if (code == FHIRResourceType.CONTRACT)
3248        return "Contract";
3249      if (code == FHIRResourceType.COVERAGE)
3250        return "Coverage";
3251      if (code == FHIRResourceType.COVERAGEELIGIBILITYREQUEST)
3252        return "CoverageEligibilityRequest";
3253      if (code == FHIRResourceType.COVERAGEELIGIBILITYRESPONSE)
3254        return "CoverageEligibilityResponse";
3255      if (code == FHIRResourceType.DETECTEDISSUE)
3256        return "DetectedIssue";
3257      if (code == FHIRResourceType.DEVICE)
3258        return "Device";
3259      if (code == FHIRResourceType.DEVICEDEFINITION)
3260        return "DeviceDefinition";
3261      if (code == FHIRResourceType.DEVICEMETRIC)
3262        return "DeviceMetric";
3263      if (code == FHIRResourceType.DEVICEREQUEST)
3264        return "DeviceRequest";
3265      if (code == FHIRResourceType.DEVICEUSESTATEMENT)
3266        return "DeviceUseStatement";
3267      if (code == FHIRResourceType.DIAGNOSTICREPORT)
3268        return "DiagnosticReport";
3269      if (code == FHIRResourceType.DOCUMENTMANIFEST)
3270        return "DocumentManifest";
3271      if (code == FHIRResourceType.DOCUMENTREFERENCE)
3272        return "DocumentReference";
3273      if (code == FHIRResourceType.DOMAINRESOURCE)
3274        return "DomainResource";
3275      if (code == FHIRResourceType.EFFECTEVIDENCESYNTHESIS)
3276        return "EffectEvidenceSynthesis";
3277      if (code == FHIRResourceType.ENCOUNTER)
3278        return "Encounter";
3279      if (code == FHIRResourceType.ENDPOINT)
3280        return "Endpoint";
3281      if (code == FHIRResourceType.ENROLLMENTREQUEST)
3282        return "EnrollmentRequest";
3283      if (code == FHIRResourceType.ENROLLMENTRESPONSE)
3284        return "EnrollmentResponse";
3285      if (code == FHIRResourceType.EPISODEOFCARE)
3286        return "EpisodeOfCare";
3287      if (code == FHIRResourceType.EVENTDEFINITION)
3288        return "EventDefinition";
3289      if (code == FHIRResourceType.EVIDENCE)
3290        return "Evidence";
3291      if (code == FHIRResourceType.EVIDENCEVARIABLE)
3292        return "EvidenceVariable";
3293      if (code == FHIRResourceType.EXAMPLESCENARIO)
3294        return "ExampleScenario";
3295      if (code == FHIRResourceType.EXPLANATIONOFBENEFIT)
3296        return "ExplanationOfBenefit";
3297      if (code == FHIRResourceType.FAMILYMEMBERHISTORY)
3298        return "FamilyMemberHistory";
3299      if (code == FHIRResourceType.FLAG)
3300        return "Flag";
3301      if (code == FHIRResourceType.GOAL)
3302        return "Goal";
3303      if (code == FHIRResourceType.GRAPHDEFINITION)
3304        return "GraphDefinition";
3305      if (code == FHIRResourceType.GROUP)
3306        return "Group";
3307      if (code == FHIRResourceType.GUIDANCERESPONSE)
3308        return "GuidanceResponse";
3309      if (code == FHIRResourceType.HEALTHCARESERVICE)
3310        return "HealthcareService";
3311      if (code == FHIRResourceType.IMAGINGSTUDY)
3312        return "ImagingStudy";
3313      if (code == FHIRResourceType.IMMUNIZATION)
3314        return "Immunization";
3315      if (code == FHIRResourceType.IMMUNIZATIONEVALUATION)
3316        return "ImmunizationEvaluation";
3317      if (code == FHIRResourceType.IMMUNIZATIONRECOMMENDATION)
3318        return "ImmunizationRecommendation";
3319      if (code == FHIRResourceType.IMPLEMENTATIONGUIDE)
3320        return "ImplementationGuide";
3321      if (code == FHIRResourceType.INSURANCEPLAN)
3322        return "InsurancePlan";
3323      if (code == FHIRResourceType.INVOICE)
3324        return "Invoice";
3325      if (code == FHIRResourceType.LIBRARY)
3326        return "Library";
3327      if (code == FHIRResourceType.LINKAGE)
3328        return "Linkage";
3329      if (code == FHIRResourceType.LIST)
3330        return "List";
3331      if (code == FHIRResourceType.LOCATION)
3332        return "Location";
3333      if (code == FHIRResourceType.MEASURE)
3334        return "Measure";
3335      if (code == FHIRResourceType.MEASUREREPORT)
3336        return "MeasureReport";
3337      if (code == FHIRResourceType.MEDIA)
3338        return "Media";
3339      if (code == FHIRResourceType.MEDICATION)
3340        return "Medication";
3341      if (code == FHIRResourceType.MEDICATIONADMINISTRATION)
3342        return "MedicationAdministration";
3343      if (code == FHIRResourceType.MEDICATIONDISPENSE)
3344        return "MedicationDispense";
3345      if (code == FHIRResourceType.MEDICATIONKNOWLEDGE)
3346        return "MedicationKnowledge";
3347      if (code == FHIRResourceType.MEDICATIONREQUEST)
3348        return "MedicationRequest";
3349      if (code == FHIRResourceType.MEDICATIONSTATEMENT)
3350        return "MedicationStatement";
3351      if (code == FHIRResourceType.MEDICINALPRODUCT)
3352        return "MedicinalProduct";
3353      if (code == FHIRResourceType.MEDICINALPRODUCTAUTHORIZATION)
3354        return "MedicinalProductAuthorization";
3355      if (code == FHIRResourceType.MEDICINALPRODUCTCONTRAINDICATION)
3356        return "MedicinalProductContraindication";
3357      if (code == FHIRResourceType.MEDICINALPRODUCTINDICATION)
3358        return "MedicinalProductIndication";
3359      if (code == FHIRResourceType.MEDICINALPRODUCTINGREDIENT)
3360        return "MedicinalProductIngredient";
3361      if (code == FHIRResourceType.MEDICINALPRODUCTINTERACTION)
3362        return "MedicinalProductInteraction";
3363      if (code == FHIRResourceType.MEDICINALPRODUCTMANUFACTURED)
3364        return "MedicinalProductManufactured";
3365      if (code == FHIRResourceType.MEDICINALPRODUCTPACKAGED)
3366        return "MedicinalProductPackaged";
3367      if (code == FHIRResourceType.MEDICINALPRODUCTPHARMACEUTICAL)
3368        return "MedicinalProductPharmaceutical";
3369      if (code == FHIRResourceType.MEDICINALPRODUCTUNDESIRABLEEFFECT)
3370        return "MedicinalProductUndesirableEffect";
3371      if (code == FHIRResourceType.MESSAGEDEFINITION)
3372        return "MessageDefinition";
3373      if (code == FHIRResourceType.MESSAGEHEADER)
3374        return "MessageHeader";
3375      if (code == FHIRResourceType.MOLECULARSEQUENCE)
3376        return "MolecularSequence";
3377      if (code == FHIRResourceType.NAMINGSYSTEM)
3378        return "NamingSystem";
3379      if (code == FHIRResourceType.NUTRITIONORDER)
3380        return "NutritionOrder";
3381      if (code == FHIRResourceType.OBSERVATION)
3382        return "Observation";
3383      if (code == FHIRResourceType.OBSERVATIONDEFINITION)
3384        return "ObservationDefinition";
3385      if (code == FHIRResourceType.OPERATIONDEFINITION)
3386        return "OperationDefinition";
3387      if (code == FHIRResourceType.OPERATIONOUTCOME)
3388        return "OperationOutcome";
3389      if (code == FHIRResourceType.ORGANIZATION)
3390        return "Organization";
3391      if (code == FHIRResourceType.ORGANIZATIONAFFILIATION)
3392        return "OrganizationAffiliation";
3393      if (code == FHIRResourceType.PARAMETERS)
3394        return "Parameters";
3395      if (code == FHIRResourceType.PATIENT)
3396        return "Patient";
3397      if (code == FHIRResourceType.PAYMENTNOTICE)
3398        return "PaymentNotice";
3399      if (code == FHIRResourceType.PAYMENTRECONCILIATION)
3400        return "PaymentReconciliation";
3401      if (code == FHIRResourceType.PERSON)
3402        return "Person";
3403      if (code == FHIRResourceType.PLANDEFINITION)
3404        return "PlanDefinition";
3405      if (code == FHIRResourceType.PRACTITIONER)
3406        return "Practitioner";
3407      if (code == FHIRResourceType.PRACTITIONERROLE)
3408        return "PractitionerRole";
3409      if (code == FHIRResourceType.PROCEDURE)
3410        return "Procedure";
3411      if (code == FHIRResourceType.PROVENANCE)
3412        return "Provenance";
3413      if (code == FHIRResourceType.QUESTIONNAIRE)
3414        return "Questionnaire";
3415      if (code == FHIRResourceType.QUESTIONNAIRERESPONSE)
3416        return "QuestionnaireResponse";
3417      if (code == FHIRResourceType.RELATEDPERSON)
3418        return "RelatedPerson";
3419      if (code == FHIRResourceType.REQUESTGROUP)
3420        return "RequestGroup";
3421      if (code == FHIRResourceType.RESEARCHDEFINITION)
3422        return "ResearchDefinition";
3423      if (code == FHIRResourceType.RESEARCHELEMENTDEFINITION)
3424        return "ResearchElementDefinition";
3425      if (code == FHIRResourceType.RESEARCHSTUDY)
3426        return "ResearchStudy";
3427      if (code == FHIRResourceType.RESEARCHSUBJECT)
3428        return "ResearchSubject";
3429      if (code == FHIRResourceType.RESOURCE)
3430        return "Resource";
3431      if (code == FHIRResourceType.RISKASSESSMENT)
3432        return "RiskAssessment";
3433      if (code == FHIRResourceType.RISKEVIDENCESYNTHESIS)
3434        return "RiskEvidenceSynthesis";
3435      if (code == FHIRResourceType.SCHEDULE)
3436        return "Schedule";
3437      if (code == FHIRResourceType.SEARCHPARAMETER)
3438        return "SearchParameter";
3439      if (code == FHIRResourceType.SERVICEREQUEST)
3440        return "ServiceRequest";
3441      if (code == FHIRResourceType.SLOT)
3442        return "Slot";
3443      if (code == FHIRResourceType.SPECIMEN)
3444        return "Specimen";
3445      if (code == FHIRResourceType.SPECIMENDEFINITION)
3446        return "SpecimenDefinition";
3447      if (code == FHIRResourceType.STRUCTUREDEFINITION)
3448        return "StructureDefinition";
3449      if (code == FHIRResourceType.STRUCTUREMAP)
3450        return "StructureMap";
3451      if (code == FHIRResourceType.SUBSCRIPTION)
3452        return "Subscription";
3453      if (code == FHIRResourceType.SUBSTANCE)
3454        return "Substance";
3455      if (code == FHIRResourceType.SUBSTANCENUCLEICACID)
3456        return "SubstanceNucleicAcid";
3457      if (code == FHIRResourceType.SUBSTANCEPOLYMER)
3458        return "SubstancePolymer";
3459      if (code == FHIRResourceType.SUBSTANCEPROTEIN)
3460        return "SubstanceProtein";
3461      if (code == FHIRResourceType.SUBSTANCEREFERENCEINFORMATION)
3462        return "SubstanceReferenceInformation";
3463      if (code == FHIRResourceType.SUBSTANCESOURCEMATERIAL)
3464        return "SubstanceSourceMaterial";
3465      if (code == FHIRResourceType.SUBSTANCESPECIFICATION)
3466        return "SubstanceSpecification";
3467      if (code == FHIRResourceType.SUPPLYDELIVERY)
3468        return "SupplyDelivery";
3469      if (code == FHIRResourceType.SUPPLYREQUEST)
3470        return "SupplyRequest";
3471      if (code == FHIRResourceType.TASK)
3472        return "Task";
3473      if (code == FHIRResourceType.TERMINOLOGYCAPABILITIES)
3474        return "TerminologyCapabilities";
3475      if (code == FHIRResourceType.TESTREPORT)
3476        return "TestReport";
3477      if (code == FHIRResourceType.TESTSCRIPT)
3478        return "TestScript";
3479      if (code == FHIRResourceType.VALUESET)
3480        return "ValueSet";
3481      if (code == FHIRResourceType.VERIFICATIONRESULT)
3482        return "VerificationResult";
3483      if (code == FHIRResourceType.VISIONPRESCRIPTION)
3484        return "VisionPrescription";
3485      return "?";
3486    }
3487
3488    public String toSystem(FHIRResourceType code) {
3489      return code.getSystem();
3490    }
3491  }
3492
3493  @Block()
3494  public static class ExampleScenarioActorComponent extends BackboneElement implements IBaseBackboneElement {
3495    /**
3496     * ID or acronym of actor.
3497     */
3498    @Child(name = "actorId", type = {
3499        StringType.class }, order = 1, min = 1, max = 1, modifier = false, summary = false)
3500    @Description(shortDefinition = "ID or acronym of the actor", formalDefinition = "ID or acronym of actor.")
3501    protected StringType actorId;
3502
3503    /**
3504     * The type of actor - person or system.
3505     */
3506    @Child(name = "type", type = { CodeType.class }, order = 2, min = 1, max = 1, modifier = false, summary = false)
3507    @Description(shortDefinition = "person | entity", formalDefinition = "The type of actor - person or system.")
3508    @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/examplescenario-actor-type")
3509    protected Enumeration<ExampleScenarioActorType> type;
3510
3511    /**
3512     * The name of the actor as shown in the page.
3513     */
3514    @Child(name = "name", type = { StringType.class }, order = 3, min = 0, max = 1, modifier = false, summary = false)
3515    @Description(shortDefinition = "The name of the actor as shown in the page", formalDefinition = "The name of the actor as shown in the page.")
3516    protected StringType name;
3517
3518    /**
3519     * The description of the actor.
3520     */
3521    @Child(name = "description", type = {
3522        MarkdownType.class }, order = 4, min = 0, max = 1, modifier = false, summary = false)
3523    @Description(shortDefinition = "The description of the actor", formalDefinition = "The description of the actor.")
3524    protected MarkdownType description;
3525
3526    private static final long serialVersionUID = 1348364162L;
3527
3528    /**
3529     * Constructor
3530     */
3531    public ExampleScenarioActorComponent() {
3532      super();
3533    }
3534
3535    /**
3536     * Constructor
3537     */
3538    public ExampleScenarioActorComponent(StringType actorId, Enumeration<ExampleScenarioActorType> type) {
3539      super();
3540      this.actorId = actorId;
3541      this.type = type;
3542    }
3543
3544    /**
3545     * @return {@link #actorId} (ID or acronym of actor.). This is the underlying
3546     *         object with id, value and extensions. The accessor "getActorId" gives
3547     *         direct access to the value
3548     */
3549    public StringType getActorIdElement() {
3550      if (this.actorId == null)
3551        if (Configuration.errorOnAutoCreate())
3552          throw new Error("Attempt to auto-create ExampleScenarioActorComponent.actorId");
3553        else if (Configuration.doAutoCreate())
3554          this.actorId = new StringType(); // bb
3555      return this.actorId;
3556    }
3557
3558    public boolean hasActorIdElement() {
3559      return this.actorId != null && !this.actorId.isEmpty();
3560    }
3561
3562    public boolean hasActorId() {
3563      return this.actorId != null && !this.actorId.isEmpty();
3564    }
3565
3566    /**
3567     * @param value {@link #actorId} (ID or acronym of actor.). This is the
3568     *              underlying object with id, value and extensions. The accessor
3569     *              "getActorId" gives direct access to the value
3570     */
3571    public ExampleScenarioActorComponent setActorIdElement(StringType value) {
3572      this.actorId = value;
3573      return this;
3574    }
3575
3576    /**
3577     * @return ID or acronym of actor.
3578     */
3579    public String getActorId() {
3580      return this.actorId == null ? null : this.actorId.getValue();
3581    }
3582
3583    /**
3584     * @param value ID or acronym of actor.
3585     */
3586    public ExampleScenarioActorComponent setActorId(String value) {
3587      if (this.actorId == null)
3588        this.actorId = new StringType();
3589      this.actorId.setValue(value);
3590      return this;
3591    }
3592
3593    /**
3594     * @return {@link #type} (The type of actor - person or system.). This is the
3595     *         underlying object with id, value and extensions. The accessor
3596     *         "getType" gives direct access to the value
3597     */
3598    public Enumeration<ExampleScenarioActorType> getTypeElement() {
3599      if (this.type == null)
3600        if (Configuration.errorOnAutoCreate())
3601          throw new Error("Attempt to auto-create ExampleScenarioActorComponent.type");
3602        else if (Configuration.doAutoCreate())
3603          this.type = new Enumeration<ExampleScenarioActorType>(new ExampleScenarioActorTypeEnumFactory()); // bb
3604      return this.type;
3605    }
3606
3607    public boolean hasTypeElement() {
3608      return this.type != null && !this.type.isEmpty();
3609    }
3610
3611    public boolean hasType() {
3612      return this.type != null && !this.type.isEmpty();
3613    }
3614
3615    /**
3616     * @param value {@link #type} (The type of actor - person or system.). This is
3617     *              the underlying object with id, value and extensions. The
3618     *              accessor "getType" gives direct access to the value
3619     */
3620    public ExampleScenarioActorComponent setTypeElement(Enumeration<ExampleScenarioActorType> value) {
3621      this.type = value;
3622      return this;
3623    }
3624
3625    /**
3626     * @return The type of actor - person or system.
3627     */
3628    public ExampleScenarioActorType getType() {
3629      return this.type == null ? null : this.type.getValue();
3630    }
3631
3632    /**
3633     * @param value The type of actor - person or system.
3634     */
3635    public ExampleScenarioActorComponent setType(ExampleScenarioActorType value) {
3636      if (this.type == null)
3637        this.type = new Enumeration<ExampleScenarioActorType>(new ExampleScenarioActorTypeEnumFactory());
3638      this.type.setValue(value);
3639      return this;
3640    }
3641
3642    /**
3643     * @return {@link #name} (The name of the actor as shown in the page.). This is
3644     *         the underlying object with id, value and extensions. The accessor
3645     *         "getName" gives direct access to the value
3646     */
3647    public StringType getNameElement() {
3648      if (this.name == null)
3649        if (Configuration.errorOnAutoCreate())
3650          throw new Error("Attempt to auto-create ExampleScenarioActorComponent.name");
3651        else if (Configuration.doAutoCreate())
3652          this.name = new StringType(); // bb
3653      return this.name;
3654    }
3655
3656    public boolean hasNameElement() {
3657      return this.name != null && !this.name.isEmpty();
3658    }
3659
3660    public boolean hasName() {
3661      return this.name != null && !this.name.isEmpty();
3662    }
3663
3664    /**
3665     * @param value {@link #name} (The name of the actor as shown in the page.).
3666     *              This is the underlying object with id, value and extensions. The
3667     *              accessor "getName" gives direct access to the value
3668     */
3669    public ExampleScenarioActorComponent setNameElement(StringType value) {
3670      this.name = value;
3671      return this;
3672    }
3673
3674    /**
3675     * @return The name of the actor as shown in the page.
3676     */
3677    public String getName() {
3678      return this.name == null ? null : this.name.getValue();
3679    }
3680
3681    /**
3682     * @param value The name of the actor as shown in the page.
3683     */
3684    public ExampleScenarioActorComponent setName(String value) {
3685      if (Utilities.noString(value))
3686        this.name = null;
3687      else {
3688        if (this.name == null)
3689          this.name = new StringType();
3690        this.name.setValue(value);
3691      }
3692      return this;
3693    }
3694
3695    /**
3696     * @return {@link #description} (The description of the actor.). This is the
3697     *         underlying object with id, value and extensions. The accessor
3698     *         "getDescription" gives direct access to the value
3699     */
3700    public MarkdownType getDescriptionElement() {
3701      if (this.description == null)
3702        if (Configuration.errorOnAutoCreate())
3703          throw new Error("Attempt to auto-create ExampleScenarioActorComponent.description");
3704        else if (Configuration.doAutoCreate())
3705          this.description = new MarkdownType(); // bb
3706      return this.description;
3707    }
3708
3709    public boolean hasDescriptionElement() {
3710      return this.description != null && !this.description.isEmpty();
3711    }
3712
3713    public boolean hasDescription() {
3714      return this.description != null && !this.description.isEmpty();
3715    }
3716
3717    /**
3718     * @param value {@link #description} (The description of the actor.). This is
3719     *              the underlying object with id, value and extensions. The
3720     *              accessor "getDescription" gives direct access to the value
3721     */
3722    public ExampleScenarioActorComponent setDescriptionElement(MarkdownType value) {
3723      this.description = value;
3724      return this;
3725    }
3726
3727    /**
3728     * @return The description of the actor.
3729     */
3730    public String getDescription() {
3731      return this.description == null ? null : this.description.getValue();
3732    }
3733
3734    /**
3735     * @param value The description of the actor.
3736     */
3737    public ExampleScenarioActorComponent setDescription(String value) {
3738      if (value == null)
3739        this.description = null;
3740      else {
3741        if (this.description == null)
3742          this.description = new MarkdownType();
3743        this.description.setValue(value);
3744      }
3745      return this;
3746    }
3747
3748    protected void listChildren(List<Property> children) {
3749      super.listChildren(children);
3750      children.add(new Property("actorId", "string", "ID or acronym of actor.", 0, 1, actorId));
3751      children.add(new Property("type", "code", "The type of actor - person or system.", 0, 1, type));
3752      children.add(new Property("name", "string", "The name of the actor as shown in the page.", 0, 1, name));
3753      children.add(new Property("description", "markdown", "The description of the actor.", 0, 1, description));
3754    }
3755
3756    @Override
3757    public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
3758      switch (_hash) {
3759      case -1161623056:
3760        /* actorId */ return new Property("actorId", "string", "ID or acronym of actor.", 0, 1, actorId);
3761      case 3575610:
3762        /* type */ return new Property("type", "code", "The type of actor - person or system.", 0, 1, type);
3763      case 3373707:
3764        /* name */ return new Property("name", "string", "The name of the actor as shown in the page.", 0, 1, name);
3765      case -1724546052:
3766        /* description */ return new Property("description", "markdown", "The description of the actor.", 0, 1,
3767            description);
3768      default:
3769        return super.getNamedProperty(_hash, _name, _checkValid);
3770      }
3771
3772    }
3773
3774    @Override
3775    public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
3776      switch (hash) {
3777      case -1161623056:
3778        /* actorId */ return this.actorId == null ? new Base[0] : new Base[] { this.actorId }; // StringType
3779      case 3575610:
3780        /* type */ return this.type == null ? new Base[0] : new Base[] { this.type }; // Enumeration<ExampleScenarioActorType>
3781      case 3373707:
3782        /* name */ return this.name == null ? new Base[0] : new Base[] { this.name }; // StringType
3783      case -1724546052:
3784        /* description */ return this.description == null ? new Base[0] : new Base[] { this.description }; // MarkdownType
3785      default:
3786        return super.getProperty(hash, name, checkValid);
3787      }
3788
3789    }
3790
3791    @Override
3792    public Base setProperty(int hash, String name, Base value) throws FHIRException {
3793      switch (hash) {
3794      case -1161623056: // actorId
3795        this.actorId = castToString(value); // StringType
3796        return value;
3797      case 3575610: // type
3798        value = new ExampleScenarioActorTypeEnumFactory().fromType(castToCode(value));
3799        this.type = (Enumeration) value; // Enumeration<ExampleScenarioActorType>
3800        return value;
3801      case 3373707: // name
3802        this.name = castToString(value); // StringType
3803        return value;
3804      case -1724546052: // description
3805        this.description = castToMarkdown(value); // MarkdownType
3806        return value;
3807      default:
3808        return super.setProperty(hash, name, value);
3809      }
3810
3811    }
3812
3813    @Override
3814    public Base setProperty(String name, Base value) throws FHIRException {
3815      if (name.equals("actorId")) {
3816        this.actorId = castToString(value); // StringType
3817      } else if (name.equals("type")) {
3818        value = new ExampleScenarioActorTypeEnumFactory().fromType(castToCode(value));
3819        this.type = (Enumeration) value; // Enumeration<ExampleScenarioActorType>
3820      } else if (name.equals("name")) {
3821        this.name = castToString(value); // StringType
3822      } else if (name.equals("description")) {
3823        this.description = castToMarkdown(value); // MarkdownType
3824      } else
3825        return super.setProperty(name, value);
3826      return value;
3827    }
3828
3829  @Override
3830  public void removeChild(String name, Base value) throws FHIRException {
3831      if (name.equals("actorId")) {
3832        this.actorId = null;
3833      } else if (name.equals("type")) {
3834        this.type = null;
3835      } else if (name.equals("name")) {
3836        this.name = null;
3837      } else if (name.equals("description")) {
3838        this.description = null;
3839      } else
3840        super.removeChild(name, value);
3841      
3842    }
3843
3844    @Override
3845    public Base makeProperty(int hash, String name) throws FHIRException {
3846      switch (hash) {
3847      case -1161623056:
3848        return getActorIdElement();
3849      case 3575610:
3850        return getTypeElement();
3851      case 3373707:
3852        return getNameElement();
3853      case -1724546052:
3854        return getDescriptionElement();
3855      default:
3856        return super.makeProperty(hash, name);
3857      }
3858
3859    }
3860
3861    @Override
3862    public String[] getTypesForProperty(int hash, String name) throws FHIRException {
3863      switch (hash) {
3864      case -1161623056:
3865        /* actorId */ return new String[] { "string" };
3866      case 3575610:
3867        /* type */ return new String[] { "code" };
3868      case 3373707:
3869        /* name */ return new String[] { "string" };
3870      case -1724546052:
3871        /* description */ return new String[] { "markdown" };
3872      default:
3873        return super.getTypesForProperty(hash, name);
3874      }
3875
3876    }
3877
3878    @Override
3879    public Base addChild(String name) throws FHIRException {
3880      if (name.equals("actorId")) {
3881        throw new FHIRException("Cannot call addChild on a singleton property ExampleScenario.actorId");
3882      } else if (name.equals("type")) {
3883        throw new FHIRException("Cannot call addChild on a singleton property ExampleScenario.type");
3884      } else if (name.equals("name")) {
3885        throw new FHIRException("Cannot call addChild on a singleton property ExampleScenario.name");
3886      } else if (name.equals("description")) {
3887        throw new FHIRException("Cannot call addChild on a singleton property ExampleScenario.description");
3888      } else
3889        return super.addChild(name);
3890    }
3891
3892    public ExampleScenarioActorComponent copy() {
3893      ExampleScenarioActorComponent dst = new ExampleScenarioActorComponent();
3894      copyValues(dst);
3895      return dst;
3896    }
3897
3898    public void copyValues(ExampleScenarioActorComponent dst) {
3899      super.copyValues(dst);
3900      dst.actorId = actorId == null ? null : actorId.copy();
3901      dst.type = type == null ? null : type.copy();
3902      dst.name = name == null ? null : name.copy();
3903      dst.description = description == null ? null : description.copy();
3904    }
3905
3906    @Override
3907    public boolean equalsDeep(Base other_) {
3908      if (!super.equalsDeep(other_))
3909        return false;
3910      if (!(other_ instanceof ExampleScenarioActorComponent))
3911        return false;
3912      ExampleScenarioActorComponent o = (ExampleScenarioActorComponent) other_;
3913      return compareDeep(actorId, o.actorId, true) && compareDeep(type, o.type, true) && compareDeep(name, o.name, true)
3914          && compareDeep(description, o.description, true);
3915    }
3916
3917    @Override
3918    public boolean equalsShallow(Base other_) {
3919      if (!super.equalsShallow(other_))
3920        return false;
3921      if (!(other_ instanceof ExampleScenarioActorComponent))
3922        return false;
3923      ExampleScenarioActorComponent o = (ExampleScenarioActorComponent) other_;
3924      return compareValues(actorId, o.actorId, true) && compareValues(type, o.type, true)
3925          && compareValues(name, o.name, true) && compareValues(description, o.description, true);
3926    }
3927
3928    public boolean isEmpty() {
3929      return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(actorId, type, name, description);
3930    }
3931
3932    public String fhirType() {
3933      return "ExampleScenario.actor";
3934
3935    }
3936
3937  }
3938
3939  @Block()
3940  public static class ExampleScenarioInstanceComponent extends BackboneElement implements IBaseBackboneElement {
3941    /**
3942     * The id of the resource for referencing.
3943     */
3944    @Child(name = "resourceId", type = {
3945        StringType.class }, order = 1, min = 1, max = 1, modifier = false, summary = false)
3946    @Description(shortDefinition = "The id of the resource for referencing", formalDefinition = "The id of the resource for referencing.")
3947    protected StringType resourceId;
3948
3949    /**
3950     * The type of the resource.
3951     */
3952    @Child(name = "resourceType", type = {
3953        CodeType.class }, order = 2, min = 1, max = 1, modifier = false, summary = false)
3954    @Description(shortDefinition = "The type of the resource", formalDefinition = "The type of the resource.")
3955    @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/resource-types")
3956    protected Enumeration<FHIRResourceType> resourceType;
3957
3958    /**
3959     * A short name for the resource instance.
3960     */
3961    @Child(name = "name", type = { StringType.class }, order = 3, min = 0, max = 1, modifier = false, summary = false)
3962    @Description(shortDefinition = "A short name for the resource instance", formalDefinition = "A short name for the resource instance.")
3963    protected StringType name;
3964
3965    /**
3966     * Human-friendly description of the resource instance.
3967     */
3968    @Child(name = "description", type = {
3969        MarkdownType.class }, order = 4, min = 0, max = 1, modifier = false, summary = false)
3970    @Description(shortDefinition = "Human-friendly description of the resource instance", formalDefinition = "Human-friendly description of the resource instance.")
3971    protected MarkdownType description;
3972
3973    /**
3974     * A specific version of the resource.
3975     */
3976    @Child(name = "version", type = {}, order = 5, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = false)
3977    @Description(shortDefinition = "A specific version of the resource", formalDefinition = "A specific version of the resource.")
3978    protected List<ExampleScenarioInstanceVersionComponent> version;
3979
3980    /**
3981     * Resources contained in the instance (e.g. the observations contained in a
3982     * bundle).
3983     */
3984    @Child(name = "containedInstance", type = {}, order = 6, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = false)
3985    @Description(shortDefinition = "Resources contained in the instance", formalDefinition = "Resources contained in the instance (e.g. the observations contained in a bundle).")
3986    protected List<ExampleScenarioInstanceContainedInstanceComponent> containedInstance;
3987
3988    private static final long serialVersionUID = -1131860669L;
3989
3990    /**
3991     * Constructor
3992     */
3993    public ExampleScenarioInstanceComponent() {
3994      super();
3995    }
3996
3997    /**
3998     * Constructor
3999     */
4000    public ExampleScenarioInstanceComponent(StringType resourceId, Enumeration<FHIRResourceType> resourceType) {
4001      super();
4002      this.resourceId = resourceId;
4003      this.resourceType = resourceType;
4004    }
4005
4006    /**
4007     * @return {@link #resourceId} (The id of the resource for referencing.). This
4008     *         is the underlying object with id, value and extensions. The accessor
4009     *         "getResourceId" gives direct access to the value
4010     */
4011    public StringType getResourceIdElement() {
4012      if (this.resourceId == null)
4013        if (Configuration.errorOnAutoCreate())
4014          throw new Error("Attempt to auto-create ExampleScenarioInstanceComponent.resourceId");
4015        else if (Configuration.doAutoCreate())
4016          this.resourceId = new StringType(); // bb
4017      return this.resourceId;
4018    }
4019
4020    public boolean hasResourceIdElement() {
4021      return this.resourceId != null && !this.resourceId.isEmpty();
4022    }
4023
4024    public boolean hasResourceId() {
4025      return this.resourceId != null && !this.resourceId.isEmpty();
4026    }
4027
4028    /**
4029     * @param value {@link #resourceId} (The id of the resource for referencing.).
4030     *              This is the underlying object with id, value and extensions. The
4031     *              accessor "getResourceId" gives direct access to the value
4032     */
4033    public ExampleScenarioInstanceComponent setResourceIdElement(StringType value) {
4034      this.resourceId = value;
4035      return this;
4036    }
4037
4038    /**
4039     * @return The id of the resource for referencing.
4040     */
4041    public String getResourceId() {
4042      return this.resourceId == null ? null : this.resourceId.getValue();
4043    }
4044
4045    /**
4046     * @param value The id of the resource for referencing.
4047     */
4048    public ExampleScenarioInstanceComponent setResourceId(String value) {
4049      if (this.resourceId == null)
4050        this.resourceId = new StringType();
4051      this.resourceId.setValue(value);
4052      return this;
4053    }
4054
4055    /**
4056     * @return {@link #resourceType} (The type of the resource.). This is the
4057     *         underlying object with id, value and extensions. The accessor
4058     *         "getResourceType" gives direct access to the value
4059     */
4060    public Enumeration<FHIRResourceType> getResourceTypeElement() {
4061      if (this.resourceType == null)
4062        if (Configuration.errorOnAutoCreate())
4063          throw new Error("Attempt to auto-create ExampleScenarioInstanceComponent.resourceType");
4064        else if (Configuration.doAutoCreate())
4065          this.resourceType = new Enumeration<FHIRResourceType>(new FHIRResourceTypeEnumFactory()); // bb
4066      return this.resourceType;
4067    }
4068
4069    public boolean hasResourceTypeElement() {
4070      return this.resourceType != null && !this.resourceType.isEmpty();
4071    }
4072
4073    public boolean hasResourceType() {
4074      return this.resourceType != null && !this.resourceType.isEmpty();
4075    }
4076
4077    /**
4078     * @param value {@link #resourceType} (The type of the resource.). This is the
4079     *              underlying object with id, value and extensions. The accessor
4080     *              "getResourceType" gives direct access to the value
4081     */
4082    public ExampleScenarioInstanceComponent setResourceTypeElement(Enumeration<FHIRResourceType> value) {
4083      this.resourceType = value;
4084      return this;
4085    }
4086
4087    /**
4088     * @return The type of the resource.
4089     */
4090    public FHIRResourceType getResourceType() {
4091      return this.resourceType == null ? null : this.resourceType.getValue();
4092    }
4093
4094    /**
4095     * @param value The type of the resource.
4096     */
4097    public ExampleScenarioInstanceComponent setResourceType(FHIRResourceType value) {
4098      if (this.resourceType == null)
4099        this.resourceType = new Enumeration<FHIRResourceType>(new FHIRResourceTypeEnumFactory());
4100      this.resourceType.setValue(value);
4101      return this;
4102    }
4103
4104    /**
4105     * @return {@link #name} (A short name for the resource instance.). This is the
4106     *         underlying object with id, value and extensions. The accessor
4107     *         "getName" gives direct access to the value
4108     */
4109    public StringType getNameElement() {
4110      if (this.name == null)
4111        if (Configuration.errorOnAutoCreate())
4112          throw new Error("Attempt to auto-create ExampleScenarioInstanceComponent.name");
4113        else if (Configuration.doAutoCreate())
4114          this.name = new StringType(); // bb
4115      return this.name;
4116    }
4117
4118    public boolean hasNameElement() {
4119      return this.name != null && !this.name.isEmpty();
4120    }
4121
4122    public boolean hasName() {
4123      return this.name != null && !this.name.isEmpty();
4124    }
4125
4126    /**
4127     * @param value {@link #name} (A short name for the resource instance.). This is
4128     *              the underlying object with id, value and extensions. The
4129     *              accessor "getName" gives direct access to the value
4130     */
4131    public ExampleScenarioInstanceComponent setNameElement(StringType value) {
4132      this.name = value;
4133      return this;
4134    }
4135
4136    /**
4137     * @return A short name for the resource instance.
4138     */
4139    public String getName() {
4140      return this.name == null ? null : this.name.getValue();
4141    }
4142
4143    /**
4144     * @param value A short name for the resource instance.
4145     */
4146    public ExampleScenarioInstanceComponent setName(String value) {
4147      if (Utilities.noString(value))
4148        this.name = null;
4149      else {
4150        if (this.name == null)
4151          this.name = new StringType();
4152        this.name.setValue(value);
4153      }
4154      return this;
4155    }
4156
4157    /**
4158     * @return {@link #description} (Human-friendly description of the resource
4159     *         instance.). This is the underlying object with id, value and
4160     *         extensions. The accessor "getDescription" gives direct access to the
4161     *         value
4162     */
4163    public MarkdownType getDescriptionElement() {
4164      if (this.description == null)
4165        if (Configuration.errorOnAutoCreate())
4166          throw new Error("Attempt to auto-create ExampleScenarioInstanceComponent.description");
4167        else if (Configuration.doAutoCreate())
4168          this.description = new MarkdownType(); // bb
4169      return this.description;
4170    }
4171
4172    public boolean hasDescriptionElement() {
4173      return this.description != null && !this.description.isEmpty();
4174    }
4175
4176    public boolean hasDescription() {
4177      return this.description != null && !this.description.isEmpty();
4178    }
4179
4180    /**
4181     * @param value {@link #description} (Human-friendly description of the resource
4182     *              instance.). This is the underlying object with id, value and
4183     *              extensions. The accessor "getDescription" gives direct access to
4184     *              the value
4185     */
4186    public ExampleScenarioInstanceComponent setDescriptionElement(MarkdownType value) {
4187      this.description = value;
4188      return this;
4189    }
4190
4191    /**
4192     * @return Human-friendly description of the resource instance.
4193     */
4194    public String getDescription() {
4195      return this.description == null ? null : this.description.getValue();
4196    }
4197
4198    /**
4199     * @param value Human-friendly description of the resource instance.
4200     */
4201    public ExampleScenarioInstanceComponent setDescription(String value) {
4202      if (value == null)
4203        this.description = null;
4204      else {
4205        if (this.description == null)
4206          this.description = new MarkdownType();
4207        this.description.setValue(value);
4208      }
4209      return this;
4210    }
4211
4212    /**
4213     * @return {@link #version} (A specific version of the resource.)
4214     */
4215    public List<ExampleScenarioInstanceVersionComponent> getVersion() {
4216      if (this.version == null)
4217        this.version = new ArrayList<ExampleScenarioInstanceVersionComponent>();
4218      return this.version;
4219    }
4220
4221    /**
4222     * @return Returns a reference to <code>this</code> for easy method chaining
4223     */
4224    public ExampleScenarioInstanceComponent setVersion(List<ExampleScenarioInstanceVersionComponent> theVersion) {
4225      this.version = theVersion;
4226      return this;
4227    }
4228
4229    public boolean hasVersion() {
4230      if (this.version == null)
4231        return false;
4232      for (ExampleScenarioInstanceVersionComponent item : this.version)
4233        if (!item.isEmpty())
4234          return true;
4235      return false;
4236    }
4237
4238    public ExampleScenarioInstanceVersionComponent addVersion() { // 3
4239      ExampleScenarioInstanceVersionComponent t = new ExampleScenarioInstanceVersionComponent();
4240      if (this.version == null)
4241        this.version = new ArrayList<ExampleScenarioInstanceVersionComponent>();
4242      this.version.add(t);
4243      return t;
4244    }
4245
4246    public ExampleScenarioInstanceComponent addVersion(ExampleScenarioInstanceVersionComponent t) { // 3
4247      if (t == null)
4248        return this;
4249      if (this.version == null)
4250        this.version = new ArrayList<ExampleScenarioInstanceVersionComponent>();
4251      this.version.add(t);
4252      return this;
4253    }
4254
4255    /**
4256     * @return The first repetition of repeating field {@link #version}, creating it
4257     *         if it does not already exist
4258     */
4259    public ExampleScenarioInstanceVersionComponent getVersionFirstRep() {
4260      if (getVersion().isEmpty()) {
4261        addVersion();
4262      }
4263      return getVersion().get(0);
4264    }
4265
4266    /**
4267     * @return {@link #containedInstance} (Resources contained in the instance (e.g.
4268     *         the observations contained in a bundle).)
4269     */
4270    public List<ExampleScenarioInstanceContainedInstanceComponent> getContainedInstance() {
4271      if (this.containedInstance == null)
4272        this.containedInstance = new ArrayList<ExampleScenarioInstanceContainedInstanceComponent>();
4273      return this.containedInstance;
4274    }
4275
4276    /**
4277     * @return Returns a reference to <code>this</code> for easy method chaining
4278     */
4279    public ExampleScenarioInstanceComponent setContainedInstance(
4280        List<ExampleScenarioInstanceContainedInstanceComponent> theContainedInstance) {
4281      this.containedInstance = theContainedInstance;
4282      return this;
4283    }
4284
4285    public boolean hasContainedInstance() {
4286      if (this.containedInstance == null)
4287        return false;
4288      for (ExampleScenarioInstanceContainedInstanceComponent item : this.containedInstance)
4289        if (!item.isEmpty())
4290          return true;
4291      return false;
4292    }
4293
4294    public ExampleScenarioInstanceContainedInstanceComponent addContainedInstance() { // 3
4295      ExampleScenarioInstanceContainedInstanceComponent t = new ExampleScenarioInstanceContainedInstanceComponent();
4296      if (this.containedInstance == null)
4297        this.containedInstance = new ArrayList<ExampleScenarioInstanceContainedInstanceComponent>();
4298      this.containedInstance.add(t);
4299      return t;
4300    }
4301
4302    public ExampleScenarioInstanceComponent addContainedInstance(ExampleScenarioInstanceContainedInstanceComponent t) { // 3
4303      if (t == null)
4304        return this;
4305      if (this.containedInstance == null)
4306        this.containedInstance = new ArrayList<ExampleScenarioInstanceContainedInstanceComponent>();
4307      this.containedInstance.add(t);
4308      return this;
4309    }
4310
4311    /**
4312     * @return The first repetition of repeating field {@link #containedInstance},
4313     *         creating it if it does not already exist
4314     */
4315    public ExampleScenarioInstanceContainedInstanceComponent getContainedInstanceFirstRep() {
4316      if (getContainedInstance().isEmpty()) {
4317        addContainedInstance();
4318      }
4319      return getContainedInstance().get(0);
4320    }
4321
4322    protected void listChildren(List<Property> children) {
4323      super.listChildren(children);
4324      children.add(new Property("resourceId", "string", "The id of the resource for referencing.", 0, 1, resourceId));
4325      children.add(new Property("resourceType", "code", "The type of the resource.", 0, 1, resourceType));
4326      children.add(new Property("name", "string", "A short name for the resource instance.", 0, 1, name));
4327      children.add(new Property("description", "markdown", "Human-friendly description of the resource instance.", 0, 1,
4328          description));
4329      children.add(
4330          new Property("version", "", "A specific version of the resource.", 0, java.lang.Integer.MAX_VALUE, version));
4331      children.add(new Property("containedInstance", "",
4332          "Resources contained in the instance (e.g. the observations contained in a bundle).", 0,
4333          java.lang.Integer.MAX_VALUE, containedInstance));
4334    }
4335
4336    @Override
4337    public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
4338      switch (_hash) {
4339      case -1345650231:
4340        /* resourceId */ return new Property("resourceId", "string", "The id of the resource for referencing.", 0, 1,
4341            resourceId);
4342      case -384364440:
4343        /* resourceType */ return new Property("resourceType", "code", "The type of the resource.", 0, 1, resourceType);
4344      case 3373707:
4345        /* name */ return new Property("name", "string", "A short name for the resource instance.", 0, 1, name);
4346      case -1724546052:
4347        /* description */ return new Property("description", "markdown",
4348            "Human-friendly description of the resource instance.", 0, 1, description);
4349      case 351608024:
4350        /* version */ return new Property("version", "", "A specific version of the resource.", 0,
4351            java.lang.Integer.MAX_VALUE, version);
4352      case -417062360:
4353        /* containedInstance */ return new Property("containedInstance", "",
4354            "Resources contained in the instance (e.g. the observations contained in a bundle).", 0,
4355            java.lang.Integer.MAX_VALUE, containedInstance);
4356      default:
4357        return super.getNamedProperty(_hash, _name, _checkValid);
4358      }
4359
4360    }
4361
4362    @Override
4363    public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
4364      switch (hash) {
4365      case -1345650231:
4366        /* resourceId */ return this.resourceId == null ? new Base[0] : new Base[] { this.resourceId }; // StringType
4367      case -384364440:
4368        /* resourceType */ return this.resourceType == null ? new Base[0] : new Base[] { this.resourceType }; // Enumeration<FHIRResourceType>
4369      case 3373707:
4370        /* name */ return this.name == null ? new Base[0] : new Base[] { this.name }; // StringType
4371      case -1724546052:
4372        /* description */ return this.description == null ? new Base[0] : new Base[] { this.description }; // MarkdownType
4373      case 351608024:
4374        /* version */ return this.version == null ? new Base[0] : this.version.toArray(new Base[this.version.size()]); // ExampleScenarioInstanceVersionComponent
4375      case -417062360:
4376        /* containedInstance */ return this.containedInstance == null ? new Base[0]
4377            : this.containedInstance.toArray(new Base[this.containedInstance.size()]); // ExampleScenarioInstanceContainedInstanceComponent
4378      default:
4379        return super.getProperty(hash, name, checkValid);
4380      }
4381
4382    }
4383
4384    @Override
4385    public Base setProperty(int hash, String name, Base value) throws FHIRException {
4386      switch (hash) {
4387      case -1345650231: // resourceId
4388        this.resourceId = castToString(value); // StringType
4389        return value;
4390      case -384364440: // resourceType
4391        value = new FHIRResourceTypeEnumFactory().fromType(castToCode(value));
4392        this.resourceType = (Enumeration) value; // Enumeration<FHIRResourceType>
4393        return value;
4394      case 3373707: // name
4395        this.name = castToString(value); // StringType
4396        return value;
4397      case -1724546052: // description
4398        this.description = castToMarkdown(value); // MarkdownType
4399        return value;
4400      case 351608024: // version
4401        this.getVersion().add((ExampleScenarioInstanceVersionComponent) value); // ExampleScenarioInstanceVersionComponent
4402        return value;
4403      case -417062360: // containedInstance
4404        this.getContainedInstance().add((ExampleScenarioInstanceContainedInstanceComponent) value); // ExampleScenarioInstanceContainedInstanceComponent
4405        return value;
4406      default:
4407        return super.setProperty(hash, name, value);
4408      }
4409
4410    }
4411
4412    @Override
4413    public Base setProperty(String name, Base value) throws FHIRException {
4414      if (name.equals("resourceId")) {
4415        this.resourceId = castToString(value); // StringType
4416      } else if (name.equals("resourceType")) {
4417        value = new FHIRResourceTypeEnumFactory().fromType(castToCode(value));
4418        this.resourceType = (Enumeration) value; // Enumeration<FHIRResourceType>
4419      } else if (name.equals("name")) {
4420        this.name = castToString(value); // StringType
4421      } else if (name.equals("description")) {
4422        this.description = castToMarkdown(value); // MarkdownType
4423      } else if (name.equals("version")) {
4424        this.getVersion().add((ExampleScenarioInstanceVersionComponent) value);
4425      } else if (name.equals("containedInstance")) {
4426        this.getContainedInstance().add((ExampleScenarioInstanceContainedInstanceComponent) value);
4427      } else
4428        return super.setProperty(name, value);
4429      return value;
4430    }
4431
4432  @Override
4433  public void removeChild(String name, Base value) throws FHIRException {
4434      if (name.equals("resourceId")) {
4435        this.resourceId = null;
4436      } else if (name.equals("resourceType")) {
4437        this.resourceType = null;
4438      } else if (name.equals("name")) {
4439        this.name = null;
4440      } else if (name.equals("description")) {
4441        this.description = null;
4442      } else if (name.equals("version")) {
4443        this.getVersion().remove((ExampleScenarioInstanceVersionComponent) value);
4444      } else if (name.equals("containedInstance")) {
4445        this.getContainedInstance().remove((ExampleScenarioInstanceContainedInstanceComponent) value);
4446      } else
4447        super.removeChild(name, value);
4448      
4449    }
4450
4451    @Override
4452    public Base makeProperty(int hash, String name) throws FHIRException {
4453      switch (hash) {
4454      case -1345650231:
4455        return getResourceIdElement();
4456      case -384364440:
4457        return getResourceTypeElement();
4458      case 3373707:
4459        return getNameElement();
4460      case -1724546052:
4461        return getDescriptionElement();
4462      case 351608024:
4463        return addVersion();
4464      case -417062360:
4465        return addContainedInstance();
4466      default:
4467        return super.makeProperty(hash, name);
4468      }
4469
4470    }
4471
4472    @Override
4473    public String[] getTypesForProperty(int hash, String name) throws FHIRException {
4474      switch (hash) {
4475      case -1345650231:
4476        /* resourceId */ return new String[] { "string" };
4477      case -384364440:
4478        /* resourceType */ return new String[] { "code" };
4479      case 3373707:
4480        /* name */ return new String[] { "string" };
4481      case -1724546052:
4482        /* description */ return new String[] { "markdown" };
4483      case 351608024:
4484        /* version */ return new String[] {};
4485      case -417062360:
4486        /* containedInstance */ return new String[] {};
4487      default:
4488        return super.getTypesForProperty(hash, name);
4489      }
4490
4491    }
4492
4493    @Override
4494    public Base addChild(String name) throws FHIRException {
4495      if (name.equals("resourceId")) {
4496        throw new FHIRException("Cannot call addChild on a singleton property ExampleScenario.resourceId");
4497      } else if (name.equals("resourceType")) {
4498        throw new FHIRException("Cannot call addChild on a singleton property ExampleScenario.resourceType");
4499      } else if (name.equals("name")) {
4500        throw new FHIRException("Cannot call addChild on a singleton property ExampleScenario.name");
4501      } else if (name.equals("description")) {
4502        throw new FHIRException("Cannot call addChild on a singleton property ExampleScenario.description");
4503      } else if (name.equals("version")) {
4504        return addVersion();
4505      } else if (name.equals("containedInstance")) {
4506        return addContainedInstance();
4507      } else
4508        return super.addChild(name);
4509    }
4510
4511    public ExampleScenarioInstanceComponent copy() {
4512      ExampleScenarioInstanceComponent dst = new ExampleScenarioInstanceComponent();
4513      copyValues(dst);
4514      return dst;
4515    }
4516
4517    public void copyValues(ExampleScenarioInstanceComponent dst) {
4518      super.copyValues(dst);
4519      dst.resourceId = resourceId == null ? null : resourceId.copy();
4520      dst.resourceType = resourceType == null ? null : resourceType.copy();
4521      dst.name = name == null ? null : name.copy();
4522      dst.description = description == null ? null : description.copy();
4523      if (version != null) {
4524        dst.version = new ArrayList<ExampleScenarioInstanceVersionComponent>();
4525        for (ExampleScenarioInstanceVersionComponent i : version)
4526          dst.version.add(i.copy());
4527      }
4528      ;
4529      if (containedInstance != null) {
4530        dst.containedInstance = new ArrayList<ExampleScenarioInstanceContainedInstanceComponent>();
4531        for (ExampleScenarioInstanceContainedInstanceComponent i : containedInstance)
4532          dst.containedInstance.add(i.copy());
4533      }
4534      ;
4535    }
4536
4537    @Override
4538    public boolean equalsDeep(Base other_) {
4539      if (!super.equalsDeep(other_))
4540        return false;
4541      if (!(other_ instanceof ExampleScenarioInstanceComponent))
4542        return false;
4543      ExampleScenarioInstanceComponent o = (ExampleScenarioInstanceComponent) other_;
4544      return compareDeep(resourceId, o.resourceId, true) && compareDeep(resourceType, o.resourceType, true)
4545          && compareDeep(name, o.name, true) && compareDeep(description, o.description, true)
4546          && compareDeep(version, o.version, true) && compareDeep(containedInstance, o.containedInstance, true);
4547    }
4548
4549    @Override
4550    public boolean equalsShallow(Base other_) {
4551      if (!super.equalsShallow(other_))
4552        return false;
4553      if (!(other_ instanceof ExampleScenarioInstanceComponent))
4554        return false;
4555      ExampleScenarioInstanceComponent o = (ExampleScenarioInstanceComponent) other_;
4556      return compareValues(resourceId, o.resourceId, true) && compareValues(resourceType, o.resourceType, true)
4557          && compareValues(name, o.name, true) && compareValues(description, o.description, true);
4558    }
4559
4560    public boolean isEmpty() {
4561      return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(resourceId, resourceType, name, description,
4562          version, containedInstance);
4563    }
4564
4565    public String fhirType() {
4566      return "ExampleScenario.instance";
4567
4568    }
4569
4570  }
4571
4572  @Block()
4573  public static class ExampleScenarioInstanceVersionComponent extends BackboneElement implements IBaseBackboneElement {
4574    /**
4575     * The identifier of a specific version of a resource.
4576     */
4577    @Child(name = "versionId", type = {
4578        StringType.class }, order = 1, min = 1, max = 1, modifier = false, summary = false)
4579    @Description(shortDefinition = "The identifier of a specific version of a resource", formalDefinition = "The identifier of a specific version of a resource.")
4580    protected StringType versionId;
4581
4582    /**
4583     * The description of the resource version.
4584     */
4585    @Child(name = "description", type = {
4586        MarkdownType.class }, order = 2, min = 1, max = 1, modifier = false, summary = false)
4587    @Description(shortDefinition = "The description of the resource version", formalDefinition = "The description of the resource version.")
4588    protected MarkdownType description;
4589
4590    private static final long serialVersionUID = 960821913L;
4591
4592    /**
4593     * Constructor
4594     */
4595    public ExampleScenarioInstanceVersionComponent() {
4596      super();
4597    }
4598
4599    /**
4600     * Constructor
4601     */
4602    public ExampleScenarioInstanceVersionComponent(StringType versionId, MarkdownType description) {
4603      super();
4604      this.versionId = versionId;
4605      this.description = description;
4606    }
4607
4608    /**
4609     * @return {@link #versionId} (The identifier of a specific version of a
4610     *         resource.). This is the underlying object with id, value and
4611     *         extensions. The accessor "getVersionId" gives direct access to the
4612     *         value
4613     */
4614    public StringType getVersionIdElement() {
4615      if (this.versionId == null)
4616        if (Configuration.errorOnAutoCreate())
4617          throw new Error("Attempt to auto-create ExampleScenarioInstanceVersionComponent.versionId");
4618        else if (Configuration.doAutoCreate())
4619          this.versionId = new StringType(); // bb
4620      return this.versionId;
4621    }
4622
4623    public boolean hasVersionIdElement() {
4624      return this.versionId != null && !this.versionId.isEmpty();
4625    }
4626
4627    public boolean hasVersionId() {
4628      return this.versionId != null && !this.versionId.isEmpty();
4629    }
4630
4631    /**
4632     * @param value {@link #versionId} (The identifier of a specific version of a
4633     *              resource.). This is the underlying object with id, value and
4634     *              extensions. The accessor "getVersionId" gives direct access to
4635     *              the value
4636     */
4637    public ExampleScenarioInstanceVersionComponent setVersionIdElement(StringType value) {
4638      this.versionId = value;
4639      return this;
4640    }
4641
4642    /**
4643     * @return The identifier of a specific version of a resource.
4644     */
4645    public String getVersionId() {
4646      return this.versionId == null ? null : this.versionId.getValue();
4647    }
4648
4649    /**
4650     * @param value The identifier of a specific version of a resource.
4651     */
4652    public ExampleScenarioInstanceVersionComponent setVersionId(String value) {
4653      if (this.versionId == null)
4654        this.versionId = new StringType();
4655      this.versionId.setValue(value);
4656      return this;
4657    }
4658
4659    /**
4660     * @return {@link #description} (The description of the resource version.). This
4661     *         is the underlying object with id, value and extensions. The accessor
4662     *         "getDescription" gives direct access to the value
4663     */
4664    public MarkdownType getDescriptionElement() {
4665      if (this.description == null)
4666        if (Configuration.errorOnAutoCreate())
4667          throw new Error("Attempt to auto-create ExampleScenarioInstanceVersionComponent.description");
4668        else if (Configuration.doAutoCreate())
4669          this.description = new MarkdownType(); // bb
4670      return this.description;
4671    }
4672
4673    public boolean hasDescriptionElement() {
4674      return this.description != null && !this.description.isEmpty();
4675    }
4676
4677    public boolean hasDescription() {
4678      return this.description != null && !this.description.isEmpty();
4679    }
4680
4681    /**
4682     * @param value {@link #description} (The description of the resource version.).
4683     *              This is the underlying object with id, value and extensions. The
4684     *              accessor "getDescription" gives direct access to the value
4685     */
4686    public ExampleScenarioInstanceVersionComponent setDescriptionElement(MarkdownType value) {
4687      this.description = value;
4688      return this;
4689    }
4690
4691    /**
4692     * @return The description of the resource version.
4693     */
4694    public String getDescription() {
4695      return this.description == null ? null : this.description.getValue();
4696    }
4697
4698    /**
4699     * @param value The description of the resource version.
4700     */
4701    public ExampleScenarioInstanceVersionComponent setDescription(String value) {
4702      if (this.description == null)
4703        this.description = new MarkdownType();
4704      this.description.setValue(value);
4705      return this;
4706    }
4707
4708    protected void listChildren(List<Property> children) {
4709      super.listChildren(children);
4710      children.add(
4711          new Property("versionId", "string", "The identifier of a specific version of a resource.", 0, 1, versionId));
4712      children
4713          .add(new Property("description", "markdown", "The description of the resource version.", 0, 1, description));
4714    }
4715
4716    @Override
4717    public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
4718      switch (_hash) {
4719      case -1407102957:
4720        /* versionId */ return new Property("versionId", "string",
4721            "The identifier of a specific version of a resource.", 0, 1, versionId);
4722      case -1724546052:
4723        /* description */ return new Property("description", "markdown", "The description of the resource version.", 0,
4724            1, description);
4725      default:
4726        return super.getNamedProperty(_hash, _name, _checkValid);
4727      }
4728
4729    }
4730
4731    @Override
4732    public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
4733      switch (hash) {
4734      case -1407102957:
4735        /* versionId */ return this.versionId == null ? new Base[0] : new Base[] { this.versionId }; // StringType
4736      case -1724546052:
4737        /* description */ return this.description == null ? new Base[0] : new Base[] { this.description }; // MarkdownType
4738      default:
4739        return super.getProperty(hash, name, checkValid);
4740      }
4741
4742    }
4743
4744    @Override
4745    public Base setProperty(int hash, String name, Base value) throws FHIRException {
4746      switch (hash) {
4747      case -1407102957: // versionId
4748        this.versionId = castToString(value); // StringType
4749        return value;
4750      case -1724546052: // description
4751        this.description = castToMarkdown(value); // MarkdownType
4752        return value;
4753      default:
4754        return super.setProperty(hash, name, value);
4755      }
4756
4757    }
4758
4759    @Override
4760    public Base setProperty(String name, Base value) throws FHIRException {
4761      if (name.equals("versionId")) {
4762        this.versionId = castToString(value); // StringType
4763      } else if (name.equals("description")) {
4764        this.description = castToMarkdown(value); // MarkdownType
4765      } else
4766        return super.setProperty(name, value);
4767      return value;
4768    }
4769
4770  @Override
4771  public void removeChild(String name, Base value) throws FHIRException {
4772      if (name.equals("versionId")) {
4773        this.versionId = null;
4774      } else if (name.equals("description")) {
4775        this.description = null;
4776      } else
4777        super.removeChild(name, value);
4778      
4779    }
4780
4781    @Override
4782    public Base makeProperty(int hash, String name) throws FHIRException {
4783      switch (hash) {
4784      case -1407102957:
4785        return getVersionIdElement();
4786      case -1724546052:
4787        return getDescriptionElement();
4788      default:
4789        return super.makeProperty(hash, name);
4790      }
4791
4792    }
4793
4794    @Override
4795    public String[] getTypesForProperty(int hash, String name) throws FHIRException {
4796      switch (hash) {
4797      case -1407102957:
4798        /* versionId */ return new String[] { "string" };
4799      case -1724546052:
4800        /* description */ return new String[] { "markdown" };
4801      default:
4802        return super.getTypesForProperty(hash, name);
4803      }
4804
4805    }
4806
4807    @Override
4808    public Base addChild(String name) throws FHIRException {
4809      if (name.equals("versionId")) {
4810        throw new FHIRException("Cannot call addChild on a singleton property ExampleScenario.versionId");
4811      } else if (name.equals("description")) {
4812        throw new FHIRException("Cannot call addChild on a singleton property ExampleScenario.description");
4813      } else
4814        return super.addChild(name);
4815    }
4816
4817    public ExampleScenarioInstanceVersionComponent copy() {
4818      ExampleScenarioInstanceVersionComponent dst = new ExampleScenarioInstanceVersionComponent();
4819      copyValues(dst);
4820      return dst;
4821    }
4822
4823    public void copyValues(ExampleScenarioInstanceVersionComponent dst) {
4824      super.copyValues(dst);
4825      dst.versionId = versionId == null ? null : versionId.copy();
4826      dst.description = description == null ? null : description.copy();
4827    }
4828
4829    @Override
4830    public boolean equalsDeep(Base other_) {
4831      if (!super.equalsDeep(other_))
4832        return false;
4833      if (!(other_ instanceof ExampleScenarioInstanceVersionComponent))
4834        return false;
4835      ExampleScenarioInstanceVersionComponent o = (ExampleScenarioInstanceVersionComponent) other_;
4836      return compareDeep(versionId, o.versionId, true) && compareDeep(description, o.description, true);
4837    }
4838
4839    @Override
4840    public boolean equalsShallow(Base other_) {
4841      if (!super.equalsShallow(other_))
4842        return false;
4843      if (!(other_ instanceof ExampleScenarioInstanceVersionComponent))
4844        return false;
4845      ExampleScenarioInstanceVersionComponent o = (ExampleScenarioInstanceVersionComponent) other_;
4846      return compareValues(versionId, o.versionId, true) && compareValues(description, o.description, true);
4847    }
4848
4849    public boolean isEmpty() {
4850      return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(versionId, description);
4851    }
4852
4853    public String fhirType() {
4854      return "ExampleScenario.instance.version";
4855
4856    }
4857
4858  }
4859
4860  @Block()
4861  public static class ExampleScenarioInstanceContainedInstanceComponent extends BackboneElement
4862      implements IBaseBackboneElement {
4863    /**
4864     * Each resource contained in the instance.
4865     */
4866    @Child(name = "resourceId", type = {
4867        StringType.class }, order = 1, min = 1, max = 1, modifier = false, summary = false)
4868    @Description(shortDefinition = "Each resource contained in the instance", formalDefinition = "Each resource contained in the instance.")
4869    protected StringType resourceId;
4870
4871    /**
4872     * A specific version of a resource contained in the instance.
4873     */
4874    @Child(name = "versionId", type = {
4875        StringType.class }, order = 2, min = 0, max = 1, modifier = false, summary = false)
4876    @Description(shortDefinition = "A specific version of a resource contained in the instance", formalDefinition = "A specific version of a resource contained in the instance.")
4877    protected StringType versionId;
4878
4879    private static final long serialVersionUID = 908084124L;
4880
4881    /**
4882     * Constructor
4883     */
4884    public ExampleScenarioInstanceContainedInstanceComponent() {
4885      super();
4886    }
4887
4888    /**
4889     * Constructor
4890     */
4891    public ExampleScenarioInstanceContainedInstanceComponent(StringType resourceId) {
4892      super();
4893      this.resourceId = resourceId;
4894    }
4895
4896    /**
4897     * @return {@link #resourceId} (Each resource contained in the instance.). This
4898     *         is the underlying object with id, value and extensions. The accessor
4899     *         "getResourceId" gives direct access to the value
4900     */
4901    public StringType getResourceIdElement() {
4902      if (this.resourceId == null)
4903        if (Configuration.errorOnAutoCreate())
4904          throw new Error("Attempt to auto-create ExampleScenarioInstanceContainedInstanceComponent.resourceId");
4905        else if (Configuration.doAutoCreate())
4906          this.resourceId = new StringType(); // bb
4907      return this.resourceId;
4908    }
4909
4910    public boolean hasResourceIdElement() {
4911      return this.resourceId != null && !this.resourceId.isEmpty();
4912    }
4913
4914    public boolean hasResourceId() {
4915      return this.resourceId != null && !this.resourceId.isEmpty();
4916    }
4917
4918    /**
4919     * @param value {@link #resourceId} (Each resource contained in the instance.).
4920     *              This is the underlying object with id, value and extensions. The
4921     *              accessor "getResourceId" gives direct access to the value
4922     */
4923    public ExampleScenarioInstanceContainedInstanceComponent setResourceIdElement(StringType value) {
4924      this.resourceId = value;
4925      return this;
4926    }
4927
4928    /**
4929     * @return Each resource contained in the instance.
4930     */
4931    public String getResourceId() {
4932      return this.resourceId == null ? null : this.resourceId.getValue();
4933    }
4934
4935    /**
4936     * @param value Each resource contained in the instance.
4937     */
4938    public ExampleScenarioInstanceContainedInstanceComponent setResourceId(String value) {
4939      if (this.resourceId == null)
4940        this.resourceId = new StringType();
4941      this.resourceId.setValue(value);
4942      return this;
4943    }
4944
4945    /**
4946     * @return {@link #versionId} (A specific version of a resource contained in the
4947     *         instance.). This is the underlying object with id, value and
4948     *         extensions. The accessor "getVersionId" gives direct access to the
4949     *         value
4950     */
4951    public StringType getVersionIdElement() {
4952      if (this.versionId == null)
4953        if (Configuration.errorOnAutoCreate())
4954          throw new Error("Attempt to auto-create ExampleScenarioInstanceContainedInstanceComponent.versionId");
4955        else if (Configuration.doAutoCreate())
4956          this.versionId = new StringType(); // bb
4957      return this.versionId;
4958    }
4959
4960    public boolean hasVersionIdElement() {
4961      return this.versionId != null && !this.versionId.isEmpty();
4962    }
4963
4964    public boolean hasVersionId() {
4965      return this.versionId != null && !this.versionId.isEmpty();
4966    }
4967
4968    /**
4969     * @param value {@link #versionId} (A specific version of a resource contained
4970     *              in the instance.). This is the underlying object with id, value
4971     *              and extensions. The accessor "getVersionId" gives direct access
4972     *              to the value
4973     */
4974    public ExampleScenarioInstanceContainedInstanceComponent setVersionIdElement(StringType value) {
4975      this.versionId = value;
4976      return this;
4977    }
4978
4979    /**
4980     * @return A specific version of a resource contained in the instance.
4981     */
4982    public String getVersionId() {
4983      return this.versionId == null ? null : this.versionId.getValue();
4984    }
4985
4986    /**
4987     * @param value A specific version of a resource contained in the instance.
4988     */
4989    public ExampleScenarioInstanceContainedInstanceComponent setVersionId(String value) {
4990      if (Utilities.noString(value))
4991        this.versionId = null;
4992      else {
4993        if (this.versionId == null)
4994          this.versionId = new StringType();
4995        this.versionId.setValue(value);
4996      }
4997      return this;
4998    }
4999
5000    protected void listChildren(List<Property> children) {
5001      super.listChildren(children);
5002      children.add(new Property("resourceId", "string", "Each resource contained in the instance.", 0, 1, resourceId));
5003      children.add(new Property("versionId", "string", "A specific version of a resource contained in the instance.", 0,
5004          1, versionId));
5005    }
5006
5007    @Override
5008    public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
5009      switch (_hash) {
5010      case -1345650231:
5011        /* resourceId */ return new Property("resourceId", "string", "Each resource contained in the instance.", 0, 1,
5012            resourceId);
5013      case -1407102957:
5014        /* versionId */ return new Property("versionId", "string",
5015            "A specific version of a resource contained in the instance.", 0, 1, versionId);
5016      default:
5017        return super.getNamedProperty(_hash, _name, _checkValid);
5018      }
5019
5020    }
5021
5022    @Override
5023    public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
5024      switch (hash) {
5025      case -1345650231:
5026        /* resourceId */ return this.resourceId == null ? new Base[0] : new Base[] { this.resourceId }; // StringType
5027      case -1407102957:
5028        /* versionId */ return this.versionId == null ? new Base[0] : new Base[] { this.versionId }; // StringType
5029      default:
5030        return super.getProperty(hash, name, checkValid);
5031      }
5032
5033    }
5034
5035    @Override
5036    public Base setProperty(int hash, String name, Base value) throws FHIRException {
5037      switch (hash) {
5038      case -1345650231: // resourceId
5039        this.resourceId = castToString(value); // StringType
5040        return value;
5041      case -1407102957: // versionId
5042        this.versionId = castToString(value); // StringType
5043        return value;
5044      default:
5045        return super.setProperty(hash, name, value);
5046      }
5047
5048    }
5049
5050    @Override
5051    public Base setProperty(String name, Base value) throws FHIRException {
5052      if (name.equals("resourceId")) {
5053        this.resourceId = castToString(value); // StringType
5054      } else if (name.equals("versionId")) {
5055        this.versionId = castToString(value); // StringType
5056      } else
5057        return super.setProperty(name, value);
5058      return value;
5059    }
5060
5061  @Override
5062  public void removeChild(String name, Base value) throws FHIRException {
5063      if (name.equals("resourceId")) {
5064        this.resourceId = null;
5065      } else if (name.equals("versionId")) {
5066        this.versionId = null;
5067      } else
5068        super.removeChild(name, value);
5069      
5070    }
5071
5072    @Override
5073    public Base makeProperty(int hash, String name) throws FHIRException {
5074      switch (hash) {
5075      case -1345650231:
5076        return getResourceIdElement();
5077      case -1407102957:
5078        return getVersionIdElement();
5079      default:
5080        return super.makeProperty(hash, name);
5081      }
5082
5083    }
5084
5085    @Override
5086    public String[] getTypesForProperty(int hash, String name) throws FHIRException {
5087      switch (hash) {
5088      case -1345650231:
5089        /* resourceId */ return new String[] { "string" };
5090      case -1407102957:
5091        /* versionId */ return new String[] { "string" };
5092      default:
5093        return super.getTypesForProperty(hash, name);
5094      }
5095
5096    }
5097
5098    @Override
5099    public Base addChild(String name) throws FHIRException {
5100      if (name.equals("resourceId")) {
5101        throw new FHIRException("Cannot call addChild on a singleton property ExampleScenario.resourceId");
5102      } else if (name.equals("versionId")) {
5103        throw new FHIRException("Cannot call addChild on a singleton property ExampleScenario.versionId");
5104      } else
5105        return super.addChild(name);
5106    }
5107
5108    public ExampleScenarioInstanceContainedInstanceComponent copy() {
5109      ExampleScenarioInstanceContainedInstanceComponent dst = new ExampleScenarioInstanceContainedInstanceComponent();
5110      copyValues(dst);
5111      return dst;
5112    }
5113
5114    public void copyValues(ExampleScenarioInstanceContainedInstanceComponent dst) {
5115      super.copyValues(dst);
5116      dst.resourceId = resourceId == null ? null : resourceId.copy();
5117      dst.versionId = versionId == null ? null : versionId.copy();
5118    }
5119
5120    @Override
5121    public boolean equalsDeep(Base other_) {
5122      if (!super.equalsDeep(other_))
5123        return false;
5124      if (!(other_ instanceof ExampleScenarioInstanceContainedInstanceComponent))
5125        return false;
5126      ExampleScenarioInstanceContainedInstanceComponent o = (ExampleScenarioInstanceContainedInstanceComponent) other_;
5127      return compareDeep(resourceId, o.resourceId, true) && compareDeep(versionId, o.versionId, true);
5128    }
5129
5130    @Override
5131    public boolean equalsShallow(Base other_) {
5132      if (!super.equalsShallow(other_))
5133        return false;
5134      if (!(other_ instanceof ExampleScenarioInstanceContainedInstanceComponent))
5135        return false;
5136      ExampleScenarioInstanceContainedInstanceComponent o = (ExampleScenarioInstanceContainedInstanceComponent) other_;
5137      return compareValues(resourceId, o.resourceId, true) && compareValues(versionId, o.versionId, true);
5138    }
5139
5140    public boolean isEmpty() {
5141      return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(resourceId, versionId);
5142    }
5143
5144    public String fhirType() {
5145      return "ExampleScenario.instance.containedInstance";
5146
5147    }
5148
5149  }
5150
5151  @Block()
5152  public static class ExampleScenarioProcessComponent extends BackboneElement implements IBaseBackboneElement {
5153    /**
5154     * The diagram title of the group of operations.
5155     */
5156    @Child(name = "title", type = { StringType.class }, order = 1, min = 1, max = 1, modifier = false, summary = true)
5157    @Description(shortDefinition = "The diagram title of the group of operations", formalDefinition = "The diagram title of the group of operations.")
5158    protected StringType title;
5159
5160    /**
5161     * A longer description of the group of operations.
5162     */
5163    @Child(name = "description", type = {
5164        MarkdownType.class }, order = 2, min = 0, max = 1, modifier = false, summary = false)
5165    @Description(shortDefinition = "A longer description of the group of operations", formalDefinition = "A longer description of the group of operations.")
5166    protected MarkdownType description;
5167
5168    /**
5169     * Description of initial status before the process starts.
5170     */
5171    @Child(name = "preConditions", type = {
5172        MarkdownType.class }, order = 3, min = 0, max = 1, modifier = false, summary = false)
5173    @Description(shortDefinition = "Description of initial status before the process starts", formalDefinition = "Description of initial status before the process starts.")
5174    protected MarkdownType preConditions;
5175
5176    /**
5177     * Description of final status after the process ends.
5178     */
5179    @Child(name = "postConditions", type = {
5180        MarkdownType.class }, order = 4, min = 0, max = 1, modifier = false, summary = false)
5181    @Description(shortDefinition = "Description of final status after the process ends", formalDefinition = "Description of final status after the process ends.")
5182    protected MarkdownType postConditions;
5183
5184    /**
5185     * Each step of the process.
5186     */
5187    @Child(name = "step", type = {}, order = 5, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = false)
5188    @Description(shortDefinition = "Each step of the process", formalDefinition = "Each step of the process.")
5189    protected List<ExampleScenarioProcessStepComponent> step;
5190
5191    private static final long serialVersionUID = 325578043L;
5192
5193    /**
5194     * Constructor
5195     */
5196    public ExampleScenarioProcessComponent() {
5197      super();
5198    }
5199
5200    /**
5201     * Constructor
5202     */
5203    public ExampleScenarioProcessComponent(StringType title) {
5204      super();
5205      this.title = title;
5206    }
5207
5208    /**
5209     * @return {@link #title} (The diagram title of the group of operations.). This
5210     *         is the underlying object with id, value and extensions. The accessor
5211     *         "getTitle" gives direct access to the value
5212     */
5213    public StringType getTitleElement() {
5214      if (this.title == null)
5215        if (Configuration.errorOnAutoCreate())
5216          throw new Error("Attempt to auto-create ExampleScenarioProcessComponent.title");
5217        else if (Configuration.doAutoCreate())
5218          this.title = new StringType(); // bb
5219      return this.title;
5220    }
5221
5222    public boolean hasTitleElement() {
5223      return this.title != null && !this.title.isEmpty();
5224    }
5225
5226    public boolean hasTitle() {
5227      return this.title != null && !this.title.isEmpty();
5228    }
5229
5230    /**
5231     * @param value {@link #title} (The diagram title of the group of operations.).
5232     *              This is the underlying object with id, value and extensions. The
5233     *              accessor "getTitle" gives direct access to the value
5234     */
5235    public ExampleScenarioProcessComponent setTitleElement(StringType value) {
5236      this.title = value;
5237      return this;
5238    }
5239
5240    /**
5241     * @return The diagram title of the group of operations.
5242     */
5243    public String getTitle() {
5244      return this.title == null ? null : this.title.getValue();
5245    }
5246
5247    /**
5248     * @param value The diagram title of the group of operations.
5249     */
5250    public ExampleScenarioProcessComponent setTitle(String value) {
5251      if (this.title == null)
5252        this.title = new StringType();
5253      this.title.setValue(value);
5254      return this;
5255    }
5256
5257    /**
5258     * @return {@link #description} (A longer description of the group of
5259     *         operations.). This is the underlying object with id, value and
5260     *         extensions. The accessor "getDescription" gives direct access to the
5261     *         value
5262     */
5263    public MarkdownType getDescriptionElement() {
5264      if (this.description == null)
5265        if (Configuration.errorOnAutoCreate())
5266          throw new Error("Attempt to auto-create ExampleScenarioProcessComponent.description");
5267        else if (Configuration.doAutoCreate())
5268          this.description = new MarkdownType(); // bb
5269      return this.description;
5270    }
5271
5272    public boolean hasDescriptionElement() {
5273      return this.description != null && !this.description.isEmpty();
5274    }
5275
5276    public boolean hasDescription() {
5277      return this.description != null && !this.description.isEmpty();
5278    }
5279
5280    /**
5281     * @param value {@link #description} (A longer description of the group of
5282     *              operations.). This is the underlying object with id, value and
5283     *              extensions. The accessor "getDescription" gives direct access to
5284     *              the value
5285     */
5286    public ExampleScenarioProcessComponent setDescriptionElement(MarkdownType value) {
5287      this.description = value;
5288      return this;
5289    }
5290
5291    /**
5292     * @return A longer description of the group of operations.
5293     */
5294    public String getDescription() {
5295      return this.description == null ? null : this.description.getValue();
5296    }
5297
5298    /**
5299     * @param value A longer description of the group of operations.
5300     */
5301    public ExampleScenarioProcessComponent setDescription(String value) {
5302      if (value == null)
5303        this.description = null;
5304      else {
5305        if (this.description == null)
5306          this.description = new MarkdownType();
5307        this.description.setValue(value);
5308      }
5309      return this;
5310    }
5311
5312    /**
5313     * @return {@link #preConditions} (Description of initial status before the
5314     *         process starts.). This is the underlying object with id, value and
5315     *         extensions. The accessor "getPreConditions" gives direct access to
5316     *         the value
5317     */
5318    public MarkdownType getPreConditionsElement() {
5319      if (this.preConditions == null)
5320        if (Configuration.errorOnAutoCreate())
5321          throw new Error("Attempt to auto-create ExampleScenarioProcessComponent.preConditions");
5322        else if (Configuration.doAutoCreate())
5323          this.preConditions = new MarkdownType(); // bb
5324      return this.preConditions;
5325    }
5326
5327    public boolean hasPreConditionsElement() {
5328      return this.preConditions != null && !this.preConditions.isEmpty();
5329    }
5330
5331    public boolean hasPreConditions() {
5332      return this.preConditions != null && !this.preConditions.isEmpty();
5333    }
5334
5335    /**
5336     * @param value {@link #preConditions} (Description of initial status before the
5337     *              process starts.). This is the underlying object with id, value
5338     *              and extensions. The accessor "getPreConditions" gives direct
5339     *              access to the value
5340     */
5341    public ExampleScenarioProcessComponent setPreConditionsElement(MarkdownType value) {
5342      this.preConditions = value;
5343      return this;
5344    }
5345
5346    /**
5347     * @return Description of initial status before the process starts.
5348     */
5349    public String getPreConditions() {
5350      return this.preConditions == null ? null : this.preConditions.getValue();
5351    }
5352
5353    /**
5354     * @param value Description of initial status before the process starts.
5355     */
5356    public ExampleScenarioProcessComponent setPreConditions(String value) {
5357      if (value == null)
5358        this.preConditions = null;
5359      else {
5360        if (this.preConditions == null)
5361          this.preConditions = new MarkdownType();
5362        this.preConditions.setValue(value);
5363      }
5364      return this;
5365    }
5366
5367    /**
5368     * @return {@link #postConditions} (Description of final status after the
5369     *         process ends.). This is the underlying object with id, value and
5370     *         extensions. The accessor "getPostConditions" gives direct access to
5371     *         the value
5372     */
5373    public MarkdownType getPostConditionsElement() {
5374      if (this.postConditions == null)
5375        if (Configuration.errorOnAutoCreate())
5376          throw new Error("Attempt to auto-create ExampleScenarioProcessComponent.postConditions");
5377        else if (Configuration.doAutoCreate())
5378          this.postConditions = new MarkdownType(); // bb
5379      return this.postConditions;
5380    }
5381
5382    public boolean hasPostConditionsElement() {
5383      return this.postConditions != null && !this.postConditions.isEmpty();
5384    }
5385
5386    public boolean hasPostConditions() {
5387      return this.postConditions != null && !this.postConditions.isEmpty();
5388    }
5389
5390    /**
5391     * @param value {@link #postConditions} (Description of final status after the
5392     *              process ends.). This is the underlying object with id, value and
5393     *              extensions. The accessor "getPostConditions" gives direct access
5394     *              to the value
5395     */
5396    public ExampleScenarioProcessComponent setPostConditionsElement(MarkdownType value) {
5397      this.postConditions = value;
5398      return this;
5399    }
5400
5401    /**
5402     * @return Description of final status after the process ends.
5403     */
5404    public String getPostConditions() {
5405      return this.postConditions == null ? null : this.postConditions.getValue();
5406    }
5407
5408    /**
5409     * @param value Description of final status after the process ends.
5410     */
5411    public ExampleScenarioProcessComponent setPostConditions(String value) {
5412      if (value == null)
5413        this.postConditions = null;
5414      else {
5415        if (this.postConditions == null)
5416          this.postConditions = new MarkdownType();
5417        this.postConditions.setValue(value);
5418      }
5419      return this;
5420    }
5421
5422    /**
5423     * @return {@link #step} (Each step of the process.)
5424     */
5425    public List<ExampleScenarioProcessStepComponent> getStep() {
5426      if (this.step == null)
5427        this.step = new ArrayList<ExampleScenarioProcessStepComponent>();
5428      return this.step;
5429    }
5430
5431    /**
5432     * @return Returns a reference to <code>this</code> for easy method chaining
5433     */
5434    public ExampleScenarioProcessComponent setStep(List<ExampleScenarioProcessStepComponent> theStep) {
5435      this.step = theStep;
5436      return this;
5437    }
5438
5439    public boolean hasStep() {
5440      if (this.step == null)
5441        return false;
5442      for (ExampleScenarioProcessStepComponent item : this.step)
5443        if (!item.isEmpty())
5444          return true;
5445      return false;
5446    }
5447
5448    public ExampleScenarioProcessStepComponent addStep() { // 3
5449      ExampleScenarioProcessStepComponent t = new ExampleScenarioProcessStepComponent();
5450      if (this.step == null)
5451        this.step = new ArrayList<ExampleScenarioProcessStepComponent>();
5452      this.step.add(t);
5453      return t;
5454    }
5455
5456    public ExampleScenarioProcessComponent addStep(ExampleScenarioProcessStepComponent t) { // 3
5457      if (t == null)
5458        return this;
5459      if (this.step == null)
5460        this.step = new ArrayList<ExampleScenarioProcessStepComponent>();
5461      this.step.add(t);
5462      return this;
5463    }
5464
5465    /**
5466     * @return The first repetition of repeating field {@link #step}, creating it if
5467     *         it does not already exist
5468     */
5469    public ExampleScenarioProcessStepComponent getStepFirstRep() {
5470      if (getStep().isEmpty()) {
5471        addStep();
5472      }
5473      return getStep().get(0);
5474    }
5475
5476    protected void listChildren(List<Property> children) {
5477      super.listChildren(children);
5478      children.add(new Property("title", "string", "The diagram title of the group of operations.", 0, 1, title));
5479      children.add(new Property("description", "markdown", "A longer description of the group of operations.", 0, 1,
5480          description));
5481      children.add(new Property("preConditions", "markdown", "Description of initial status before the process starts.",
5482          0, 1, preConditions));
5483      children.add(new Property("postConditions", "markdown", "Description of final status after the process ends.", 0,
5484          1, postConditions));
5485      children.add(new Property("step", "", "Each step of the process.", 0, java.lang.Integer.MAX_VALUE, step));
5486    }
5487
5488    @Override
5489    public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
5490      switch (_hash) {
5491      case 110371416:
5492        /* title */ return new Property("title", "string", "The diagram title of the group of operations.", 0, 1,
5493            title);
5494      case -1724546052:
5495        /* description */ return new Property("description", "markdown",
5496            "A longer description of the group of operations.", 0, 1, description);
5497      case -1006692933:
5498        /* preConditions */ return new Property("preConditions", "markdown",
5499            "Description of initial status before the process starts.", 0, 1, preConditions);
5500      case 1738302328:
5501        /* postConditions */ return new Property("postConditions", "markdown",
5502            "Description of final status after the process ends.", 0, 1, postConditions);
5503      case 3540684:
5504        /* step */ return new Property("step", "", "Each step of the process.", 0, java.lang.Integer.MAX_VALUE, step);
5505      default:
5506        return super.getNamedProperty(_hash, _name, _checkValid);
5507      }
5508
5509    }
5510
5511    @Override
5512    public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
5513      switch (hash) {
5514      case 110371416:
5515        /* title */ return this.title == null ? new Base[0] : new Base[] { this.title }; // StringType
5516      case -1724546052:
5517        /* description */ return this.description == null ? new Base[0] : new Base[] { this.description }; // MarkdownType
5518      case -1006692933:
5519        /* preConditions */ return this.preConditions == null ? new Base[0] : new Base[] { this.preConditions }; // MarkdownType
5520      case 1738302328:
5521        /* postConditions */ return this.postConditions == null ? new Base[0] : new Base[] { this.postConditions }; // MarkdownType
5522      case 3540684:
5523        /* step */ return this.step == null ? new Base[0] : this.step.toArray(new Base[this.step.size()]); // ExampleScenarioProcessStepComponent
5524      default:
5525        return super.getProperty(hash, name, checkValid);
5526      }
5527
5528    }
5529
5530    @Override
5531    public Base setProperty(int hash, String name, Base value) throws FHIRException {
5532      switch (hash) {
5533      case 110371416: // title
5534        this.title = castToString(value); // StringType
5535        return value;
5536      case -1724546052: // description
5537        this.description = castToMarkdown(value); // MarkdownType
5538        return value;
5539      case -1006692933: // preConditions
5540        this.preConditions = castToMarkdown(value); // MarkdownType
5541        return value;
5542      case 1738302328: // postConditions
5543        this.postConditions = castToMarkdown(value); // MarkdownType
5544        return value;
5545      case 3540684: // step
5546        this.getStep().add((ExampleScenarioProcessStepComponent) value); // ExampleScenarioProcessStepComponent
5547        return value;
5548      default:
5549        return super.setProperty(hash, name, value);
5550      }
5551
5552    }
5553
5554    @Override
5555    public Base setProperty(String name, Base value) throws FHIRException {
5556      if (name.equals("title")) {
5557        this.title = castToString(value); // StringType
5558      } else if (name.equals("description")) {
5559        this.description = castToMarkdown(value); // MarkdownType
5560      } else if (name.equals("preConditions")) {
5561        this.preConditions = castToMarkdown(value); // MarkdownType
5562      } else if (name.equals("postConditions")) {
5563        this.postConditions = castToMarkdown(value); // MarkdownType
5564      } else if (name.equals("step")) {
5565        this.getStep().add((ExampleScenarioProcessStepComponent) value);
5566      } else
5567        return super.setProperty(name, value);
5568      return value;
5569    }
5570
5571  @Override
5572  public void removeChild(String name, Base value) throws FHIRException {
5573      if (name.equals("title")) {
5574        this.title = null;
5575      } else if (name.equals("description")) {
5576        this.description = null;
5577      } else if (name.equals("preConditions")) {
5578        this.preConditions = null;
5579      } else if (name.equals("postConditions")) {
5580        this.postConditions = null;
5581      } else if (name.equals("step")) {
5582        this.getStep().remove((ExampleScenarioProcessStepComponent) value);
5583      } else
5584        super.removeChild(name, value);
5585      
5586    }
5587
5588    @Override
5589    public Base makeProperty(int hash, String name) throws FHIRException {
5590      switch (hash) {
5591      case 110371416:
5592        return getTitleElement();
5593      case -1724546052:
5594        return getDescriptionElement();
5595      case -1006692933:
5596        return getPreConditionsElement();
5597      case 1738302328:
5598        return getPostConditionsElement();
5599      case 3540684:
5600        return addStep();
5601      default:
5602        return super.makeProperty(hash, name);
5603      }
5604
5605    }
5606
5607    @Override
5608    public String[] getTypesForProperty(int hash, String name) throws FHIRException {
5609      switch (hash) {
5610      case 110371416:
5611        /* title */ return new String[] { "string" };
5612      case -1724546052:
5613        /* description */ return new String[] { "markdown" };
5614      case -1006692933:
5615        /* preConditions */ return new String[] { "markdown" };
5616      case 1738302328:
5617        /* postConditions */ return new String[] { "markdown" };
5618      case 3540684:
5619        /* step */ return new String[] {};
5620      default:
5621        return super.getTypesForProperty(hash, name);
5622      }
5623
5624    }
5625
5626    @Override
5627    public Base addChild(String name) throws FHIRException {
5628      if (name.equals("title")) {
5629        throw new FHIRException("Cannot call addChild on a singleton property ExampleScenario.title");
5630      } else if (name.equals("description")) {
5631        throw new FHIRException("Cannot call addChild on a singleton property ExampleScenario.description");
5632      } else if (name.equals("preConditions")) {
5633        throw new FHIRException("Cannot call addChild on a singleton property ExampleScenario.preConditions");
5634      } else if (name.equals("postConditions")) {
5635        throw new FHIRException("Cannot call addChild on a singleton property ExampleScenario.postConditions");
5636      } else if (name.equals("step")) {
5637        return addStep();
5638      } else
5639        return super.addChild(name);
5640    }
5641
5642    public ExampleScenarioProcessComponent copy() {
5643      ExampleScenarioProcessComponent dst = new ExampleScenarioProcessComponent();
5644      copyValues(dst);
5645      return dst;
5646    }
5647
5648    public void copyValues(ExampleScenarioProcessComponent dst) {
5649      super.copyValues(dst);
5650      dst.title = title == null ? null : title.copy();
5651      dst.description = description == null ? null : description.copy();
5652      dst.preConditions = preConditions == null ? null : preConditions.copy();
5653      dst.postConditions = postConditions == null ? null : postConditions.copy();
5654      if (step != null) {
5655        dst.step = new ArrayList<ExampleScenarioProcessStepComponent>();
5656        for (ExampleScenarioProcessStepComponent i : step)
5657          dst.step.add(i.copy());
5658      }
5659      ;
5660    }
5661
5662    @Override
5663    public boolean equalsDeep(Base other_) {
5664      if (!super.equalsDeep(other_))
5665        return false;
5666      if (!(other_ instanceof ExampleScenarioProcessComponent))
5667        return false;
5668      ExampleScenarioProcessComponent o = (ExampleScenarioProcessComponent) other_;
5669      return compareDeep(title, o.title, true) && compareDeep(description, o.description, true)
5670          && compareDeep(preConditions, o.preConditions, true) && compareDeep(postConditions, o.postConditions, true)
5671          && compareDeep(step, o.step, true);
5672    }
5673
5674    @Override
5675    public boolean equalsShallow(Base other_) {
5676      if (!super.equalsShallow(other_))
5677        return false;
5678      if (!(other_ instanceof ExampleScenarioProcessComponent))
5679        return false;
5680      ExampleScenarioProcessComponent o = (ExampleScenarioProcessComponent) other_;
5681      return compareValues(title, o.title, true) && compareValues(description, o.description, true)
5682          && compareValues(preConditions, o.preConditions, true)
5683          && compareValues(postConditions, o.postConditions, true);
5684    }
5685
5686    public boolean isEmpty() {
5687      return super.isEmpty()
5688          && ca.uhn.fhir.util.ElementUtil.isEmpty(title, description, preConditions, postConditions, step);
5689    }
5690
5691    public String fhirType() {
5692      return "ExampleScenario.process";
5693
5694    }
5695
5696  }
5697
5698  @Block()
5699  public static class ExampleScenarioProcessStepComponent extends BackboneElement implements IBaseBackboneElement {
5700    /**
5701     * Nested process.
5702     */
5703    @Child(name = "process", type = {
5704        ExampleScenarioProcessComponent.class }, order = 1, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = false)
5705    @Description(shortDefinition = "Nested process", formalDefinition = "Nested process.")
5706    protected List<ExampleScenarioProcessComponent> process;
5707
5708    /**
5709     * If there is a pause in the flow.
5710     */
5711    @Child(name = "pause", type = { BooleanType.class }, order = 2, min = 0, max = 1, modifier = false, summary = false)
5712    @Description(shortDefinition = "If there is a pause in the flow", formalDefinition = "If there is a pause in the flow.")
5713    protected BooleanType pause;
5714
5715    /**
5716     * Each interaction or action.
5717     */
5718    @Child(name = "operation", type = {}, order = 3, min = 0, max = 1, modifier = false, summary = false)
5719    @Description(shortDefinition = "Each interaction or action", formalDefinition = "Each interaction or action.")
5720    protected ExampleScenarioProcessStepOperationComponent operation;
5721
5722    /**
5723     * Indicates an alternative step that can be taken instead of the operations on
5724     * the base step in exceptional/atypical circumstances.
5725     */
5726    @Child(name = "alternative", type = {}, order = 4, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = false)
5727    @Description(shortDefinition = "Alternate non-typical step action", formalDefinition = "Indicates an alternative step that can be taken instead of the operations on the base step in exceptional/atypical circumstances.")
5728    protected List<ExampleScenarioProcessStepAlternativeComponent> alternative;
5729
5730    private static final long serialVersionUID = -894029605L;
5731
5732    /**
5733     * Constructor
5734     */
5735    public ExampleScenarioProcessStepComponent() {
5736      super();
5737    }
5738
5739    /**
5740     * @return {@link #process} (Nested process.)
5741     */
5742    public List<ExampleScenarioProcessComponent> getProcess() {
5743      if (this.process == null)
5744        this.process = new ArrayList<ExampleScenarioProcessComponent>();
5745      return this.process;
5746    }
5747
5748    /**
5749     * @return Returns a reference to <code>this</code> for easy method chaining
5750     */
5751    public ExampleScenarioProcessStepComponent setProcess(List<ExampleScenarioProcessComponent> theProcess) {
5752      this.process = theProcess;
5753      return this;
5754    }
5755
5756    public boolean hasProcess() {
5757      if (this.process == null)
5758        return false;
5759      for (ExampleScenarioProcessComponent item : this.process)
5760        if (!item.isEmpty())
5761          return true;
5762      return false;
5763    }
5764
5765    public ExampleScenarioProcessComponent addProcess() { // 3
5766      ExampleScenarioProcessComponent t = new ExampleScenarioProcessComponent();
5767      if (this.process == null)
5768        this.process = new ArrayList<ExampleScenarioProcessComponent>();
5769      this.process.add(t);
5770      return t;
5771    }
5772
5773    public ExampleScenarioProcessStepComponent addProcess(ExampleScenarioProcessComponent t) { // 3
5774      if (t == null)
5775        return this;
5776      if (this.process == null)
5777        this.process = new ArrayList<ExampleScenarioProcessComponent>();
5778      this.process.add(t);
5779      return this;
5780    }
5781
5782    /**
5783     * @return The first repetition of repeating field {@link #process}, creating it
5784     *         if it does not already exist
5785     */
5786    public ExampleScenarioProcessComponent getProcessFirstRep() {
5787      if (getProcess().isEmpty()) {
5788        addProcess();
5789      }
5790      return getProcess().get(0);
5791    }
5792
5793    /**
5794     * @return {@link #pause} (If there is a pause in the flow.). This is the
5795     *         underlying object with id, value and extensions. The accessor
5796     *         "getPause" gives direct access to the value
5797     */
5798    public BooleanType getPauseElement() {
5799      if (this.pause == null)
5800        if (Configuration.errorOnAutoCreate())
5801          throw new Error("Attempt to auto-create ExampleScenarioProcessStepComponent.pause");
5802        else if (Configuration.doAutoCreate())
5803          this.pause = new BooleanType(); // bb
5804      return this.pause;
5805    }
5806
5807    public boolean hasPauseElement() {
5808      return this.pause != null && !this.pause.isEmpty();
5809    }
5810
5811    public boolean hasPause() {
5812      return this.pause != null && !this.pause.isEmpty();
5813    }
5814
5815    /**
5816     * @param value {@link #pause} (If there is a pause in the flow.). This is the
5817     *              underlying object with id, value and extensions. The accessor
5818     *              "getPause" gives direct access to the value
5819     */
5820    public ExampleScenarioProcessStepComponent setPauseElement(BooleanType value) {
5821      this.pause = value;
5822      return this;
5823    }
5824
5825    /**
5826     * @return If there is a pause in the flow.
5827     */
5828    public boolean getPause() {
5829      return this.pause == null || this.pause.isEmpty() ? false : this.pause.getValue();
5830    }
5831
5832    /**
5833     * @param value If there is a pause in the flow.
5834     */
5835    public ExampleScenarioProcessStepComponent setPause(boolean value) {
5836      if (this.pause == null)
5837        this.pause = new BooleanType();
5838      this.pause.setValue(value);
5839      return this;
5840    }
5841
5842    /**
5843     * @return {@link #operation} (Each interaction or action.)
5844     */
5845    public ExampleScenarioProcessStepOperationComponent getOperation() {
5846      if (this.operation == null)
5847        if (Configuration.errorOnAutoCreate())
5848          throw new Error("Attempt to auto-create ExampleScenarioProcessStepComponent.operation");
5849        else if (Configuration.doAutoCreate())
5850          this.operation = new ExampleScenarioProcessStepOperationComponent(); // cc
5851      return this.operation;
5852    }
5853
5854    public boolean hasOperation() {
5855      return this.operation != null && !this.operation.isEmpty();
5856    }
5857
5858    /**
5859     * @param value {@link #operation} (Each interaction or action.)
5860     */
5861    public ExampleScenarioProcessStepComponent setOperation(ExampleScenarioProcessStepOperationComponent value) {
5862      this.operation = value;
5863      return this;
5864    }
5865
5866    /**
5867     * @return {@link #alternative} (Indicates an alternative step that can be taken
5868     *         instead of the operations on the base step in exceptional/atypical
5869     *         circumstances.)
5870     */
5871    public List<ExampleScenarioProcessStepAlternativeComponent> getAlternative() {
5872      if (this.alternative == null)
5873        this.alternative = new ArrayList<ExampleScenarioProcessStepAlternativeComponent>();
5874      return this.alternative;
5875    }
5876
5877    /**
5878     * @return Returns a reference to <code>this</code> for easy method chaining
5879     */
5880    public ExampleScenarioProcessStepComponent setAlternative(
5881        List<ExampleScenarioProcessStepAlternativeComponent> theAlternative) {
5882      this.alternative = theAlternative;
5883      return this;
5884    }
5885
5886    public boolean hasAlternative() {
5887      if (this.alternative == null)
5888        return false;
5889      for (ExampleScenarioProcessStepAlternativeComponent item : this.alternative)
5890        if (!item.isEmpty())
5891          return true;
5892      return false;
5893    }
5894
5895    public ExampleScenarioProcessStepAlternativeComponent addAlternative() { // 3
5896      ExampleScenarioProcessStepAlternativeComponent t = new ExampleScenarioProcessStepAlternativeComponent();
5897      if (this.alternative == null)
5898        this.alternative = new ArrayList<ExampleScenarioProcessStepAlternativeComponent>();
5899      this.alternative.add(t);
5900      return t;
5901    }
5902
5903    public ExampleScenarioProcessStepComponent addAlternative(ExampleScenarioProcessStepAlternativeComponent t) { // 3
5904      if (t == null)
5905        return this;
5906      if (this.alternative == null)
5907        this.alternative = new ArrayList<ExampleScenarioProcessStepAlternativeComponent>();
5908      this.alternative.add(t);
5909      return this;
5910    }
5911
5912    /**
5913     * @return The first repetition of repeating field {@link #alternative},
5914     *         creating it if it does not already exist
5915     */
5916    public ExampleScenarioProcessStepAlternativeComponent getAlternativeFirstRep() {
5917      if (getAlternative().isEmpty()) {
5918        addAlternative();
5919      }
5920      return getAlternative().get(0);
5921    }
5922
5923    protected void listChildren(List<Property> children) {
5924      super.listChildren(children);
5925      children.add(new Property("process", "@ExampleScenario.process", "Nested process.", 0,
5926          java.lang.Integer.MAX_VALUE, process));
5927      children.add(new Property("pause", "boolean", "If there is a pause in the flow.", 0, 1, pause));
5928      children.add(new Property("operation", "", "Each interaction or action.", 0, 1, operation));
5929      children.add(new Property("alternative", "",
5930          "Indicates an alternative step that can be taken instead of the operations on the base step in exceptional/atypical circumstances.",
5931          0, java.lang.Integer.MAX_VALUE, alternative));
5932    }
5933
5934    @Override
5935    public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
5936      switch (_hash) {
5937      case -309518737:
5938        /* process */ return new Property("process", "@ExampleScenario.process", "Nested process.", 0,
5939            java.lang.Integer.MAX_VALUE, process);
5940      case 106440182:
5941        /* pause */ return new Property("pause", "boolean", "If there is a pause in the flow.", 0, 1, pause);
5942      case 1662702951:
5943        /* operation */ return new Property("operation", "", "Each interaction or action.", 0, 1, operation);
5944      case -196794451:
5945        /* alternative */ return new Property("alternative", "",
5946            "Indicates an alternative step that can be taken instead of the operations on the base step in exceptional/atypical circumstances.",
5947            0, java.lang.Integer.MAX_VALUE, alternative);
5948      default:
5949        return super.getNamedProperty(_hash, _name, _checkValid);
5950      }
5951
5952    }
5953
5954    @Override
5955    public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
5956      switch (hash) {
5957      case -309518737:
5958        /* process */ return this.process == null ? new Base[0] : this.process.toArray(new Base[this.process.size()]); // ExampleScenarioProcessComponent
5959      case 106440182:
5960        /* pause */ return this.pause == null ? new Base[0] : new Base[] { this.pause }; // BooleanType
5961      case 1662702951:
5962        /* operation */ return this.operation == null ? new Base[0] : new Base[] { this.operation }; // ExampleScenarioProcessStepOperationComponent
5963      case -196794451:
5964        /* alternative */ return this.alternative == null ? new Base[0]
5965            : this.alternative.toArray(new Base[this.alternative.size()]); // ExampleScenarioProcessStepAlternativeComponent
5966      default:
5967        return super.getProperty(hash, name, checkValid);
5968      }
5969
5970    }
5971
5972    @Override
5973    public Base setProperty(int hash, String name, Base value) throws FHIRException {
5974      switch (hash) {
5975      case -309518737: // process
5976        this.getProcess().add((ExampleScenarioProcessComponent) value); // ExampleScenarioProcessComponent
5977        return value;
5978      case 106440182: // pause
5979        this.pause = castToBoolean(value); // BooleanType
5980        return value;
5981      case 1662702951: // operation
5982        this.operation = (ExampleScenarioProcessStepOperationComponent) value; // ExampleScenarioProcessStepOperationComponent
5983        return value;
5984      case -196794451: // alternative
5985        this.getAlternative().add((ExampleScenarioProcessStepAlternativeComponent) value); // ExampleScenarioProcessStepAlternativeComponent
5986        return value;
5987      default:
5988        return super.setProperty(hash, name, value);
5989      }
5990
5991    }
5992
5993    @Override
5994    public Base setProperty(String name, Base value) throws FHIRException {
5995      if (name.equals("process")) {
5996        this.getProcess().add((ExampleScenarioProcessComponent) value);
5997      } else if (name.equals("pause")) {
5998        this.pause = castToBoolean(value); // BooleanType
5999      } else if (name.equals("operation")) {
6000        this.operation = (ExampleScenarioProcessStepOperationComponent) value; // ExampleScenarioProcessStepOperationComponent
6001      } else if (name.equals("alternative")) {
6002        this.getAlternative().add((ExampleScenarioProcessStepAlternativeComponent) value);
6003      } else
6004        return super.setProperty(name, value);
6005      return value;
6006    }
6007
6008  @Override
6009  public void removeChild(String name, Base value) throws FHIRException {
6010      if (name.equals("process")) {
6011        this.getProcess().remove((ExampleScenarioProcessComponent) value);
6012      } else if (name.equals("pause")) {
6013        this.pause = null;
6014      } else if (name.equals("operation")) {
6015        this.operation = (ExampleScenarioProcessStepOperationComponent) value; // ExampleScenarioProcessStepOperationComponent
6016      } else if (name.equals("alternative")) {
6017        this.getAlternative().remove((ExampleScenarioProcessStepAlternativeComponent) value);
6018      } else
6019        super.removeChild(name, value);
6020      
6021    }
6022
6023    @Override
6024    public Base makeProperty(int hash, String name) throws FHIRException {
6025      switch (hash) {
6026      case -309518737:
6027        return addProcess();
6028      case 106440182:
6029        return getPauseElement();
6030      case 1662702951:
6031        return getOperation();
6032      case -196794451:
6033        return addAlternative();
6034      default:
6035        return super.makeProperty(hash, name);
6036      }
6037
6038    }
6039
6040    @Override
6041    public String[] getTypesForProperty(int hash, String name) throws FHIRException {
6042      switch (hash) {
6043      case -309518737:
6044        /* process */ return new String[] { "@ExampleScenario.process" };
6045      case 106440182:
6046        /* pause */ return new String[] { "boolean" };
6047      case 1662702951:
6048        /* operation */ return new String[] {};
6049      case -196794451:
6050        /* alternative */ return new String[] {};
6051      default:
6052        return super.getTypesForProperty(hash, name);
6053      }
6054
6055    }
6056
6057    @Override
6058    public Base addChild(String name) throws FHIRException {
6059      if (name.equals("process")) {
6060        return addProcess();
6061      } else if (name.equals("pause")) {
6062        throw new FHIRException("Cannot call addChild on a singleton property ExampleScenario.pause");
6063      } else if (name.equals("operation")) {
6064        this.operation = new ExampleScenarioProcessStepOperationComponent();
6065        return this.operation;
6066      } else if (name.equals("alternative")) {
6067        return addAlternative();
6068      } else
6069        return super.addChild(name);
6070    }
6071
6072    public ExampleScenarioProcessStepComponent copy() {
6073      ExampleScenarioProcessStepComponent dst = new ExampleScenarioProcessStepComponent();
6074      copyValues(dst);
6075      return dst;
6076    }
6077
6078    public void copyValues(ExampleScenarioProcessStepComponent dst) {
6079      super.copyValues(dst);
6080      if (process != null) {
6081        dst.process = new ArrayList<ExampleScenarioProcessComponent>();
6082        for (ExampleScenarioProcessComponent i : process)
6083          dst.process.add(i.copy());
6084      }
6085      ;
6086      dst.pause = pause == null ? null : pause.copy();
6087      dst.operation = operation == null ? null : operation.copy();
6088      if (alternative != null) {
6089        dst.alternative = new ArrayList<ExampleScenarioProcessStepAlternativeComponent>();
6090        for (ExampleScenarioProcessStepAlternativeComponent i : alternative)
6091          dst.alternative.add(i.copy());
6092      }
6093      ;
6094    }
6095
6096    @Override
6097    public boolean equalsDeep(Base other_) {
6098      if (!super.equalsDeep(other_))
6099        return false;
6100      if (!(other_ instanceof ExampleScenarioProcessStepComponent))
6101        return false;
6102      ExampleScenarioProcessStepComponent o = (ExampleScenarioProcessStepComponent) other_;
6103      return compareDeep(process, o.process, true) && compareDeep(pause, o.pause, true)
6104          && compareDeep(operation, o.operation, true) && compareDeep(alternative, o.alternative, true);
6105    }
6106
6107    @Override
6108    public boolean equalsShallow(Base other_) {
6109      if (!super.equalsShallow(other_))
6110        return false;
6111      if (!(other_ instanceof ExampleScenarioProcessStepComponent))
6112        return false;
6113      ExampleScenarioProcessStepComponent o = (ExampleScenarioProcessStepComponent) other_;
6114      return compareValues(pause, o.pause, true);
6115    }
6116
6117    public boolean isEmpty() {
6118      return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(process, pause, operation, alternative);
6119    }
6120
6121    public String fhirType() {
6122      return "ExampleScenario.process.step";
6123
6124    }
6125
6126  }
6127
6128  @Block()
6129  public static class ExampleScenarioProcessStepOperationComponent extends BackboneElement
6130      implements IBaseBackboneElement {
6131    /**
6132     * The sequential number of the interaction, e.g. 1.2.5.
6133     */
6134    @Child(name = "number", type = { StringType.class }, order = 1, min = 1, max = 1, modifier = false, summary = false)
6135    @Description(shortDefinition = "The sequential number of the interaction", formalDefinition = "The sequential number of the interaction, e.g. 1.2.5.")
6136    protected StringType number;
6137
6138    /**
6139     * The type of operation - CRUD.
6140     */
6141    @Child(name = "type", type = { StringType.class }, order = 2, min = 0, max = 1, modifier = false, summary = false)
6142    @Description(shortDefinition = "The type of operation - CRUD", formalDefinition = "The type of operation - CRUD.")
6143    protected StringType type;
6144
6145    /**
6146     * The human-friendly name of the interaction.
6147     */
6148    @Child(name = "name", type = { StringType.class }, order = 3, min = 0, max = 1, modifier = false, summary = false)
6149    @Description(shortDefinition = "The human-friendly name of the interaction", formalDefinition = "The human-friendly name of the interaction.")
6150    protected StringType name;
6151
6152    /**
6153     * Who starts the transaction.
6154     */
6155    @Child(name = "initiator", type = {
6156        StringType.class }, order = 4, min = 0, max = 1, modifier = false, summary = false)
6157    @Description(shortDefinition = "Who starts the transaction", formalDefinition = "Who starts the transaction.")
6158    protected StringType initiator;
6159
6160    /**
6161     * Who receives the transaction.
6162     */
6163    @Child(name = "receiver", type = {
6164        StringType.class }, order = 5, min = 0, max = 1, modifier = false, summary = false)
6165    @Description(shortDefinition = "Who receives the transaction", formalDefinition = "Who receives the transaction.")
6166    protected StringType receiver;
6167
6168    /**
6169     * A comment to be inserted in the diagram.
6170     */
6171    @Child(name = "description", type = {
6172        MarkdownType.class }, order = 6, min = 0, max = 1, modifier = false, summary = false)
6173    @Description(shortDefinition = "A comment to be inserted in the diagram", formalDefinition = "A comment to be inserted in the diagram.")
6174    protected MarkdownType description;
6175
6176    /**
6177     * Whether the initiator is deactivated right after the transaction.
6178     */
6179    @Child(name = "initiatorActive", type = {
6180        BooleanType.class }, order = 7, min = 0, max = 1, modifier = false, summary = false)
6181    @Description(shortDefinition = "Whether the initiator is deactivated right after the transaction", formalDefinition = "Whether the initiator is deactivated right after the transaction.")
6182    protected BooleanType initiatorActive;
6183
6184    /**
6185     * Whether the receiver is deactivated right after the transaction.
6186     */
6187    @Child(name = "receiverActive", type = {
6188        BooleanType.class }, order = 8, min = 0, max = 1, modifier = false, summary = false)
6189    @Description(shortDefinition = "Whether the receiver is deactivated right after the transaction", formalDefinition = "Whether the receiver is deactivated right after the transaction.")
6190    protected BooleanType receiverActive;
6191
6192    /**
6193     * Each resource instance used by the initiator.
6194     */
6195    @Child(name = "request", type = {
6196        ExampleScenarioInstanceContainedInstanceComponent.class }, order = 9, min = 0, max = 1, modifier = false, summary = false)
6197    @Description(shortDefinition = "Each resource instance used by the initiator", formalDefinition = "Each resource instance used by the initiator.")
6198    protected ExampleScenarioInstanceContainedInstanceComponent request;
6199
6200    /**
6201     * Each resource instance used by the responder.
6202     */
6203    @Child(name = "response", type = {
6204        ExampleScenarioInstanceContainedInstanceComponent.class }, order = 10, min = 0, max = 1, modifier = false, summary = false)
6205    @Description(shortDefinition = "Each resource instance used by the responder", formalDefinition = "Each resource instance used by the responder.")
6206    protected ExampleScenarioInstanceContainedInstanceComponent response;
6207
6208    private static final long serialVersionUID = 911241906L;
6209
6210    /**
6211     * Constructor
6212     */
6213    public ExampleScenarioProcessStepOperationComponent() {
6214      super();
6215    }
6216
6217    /**
6218     * Constructor
6219     */
6220    public ExampleScenarioProcessStepOperationComponent(StringType number) {
6221      super();
6222      this.number = number;
6223    }
6224
6225    /**
6226     * @return {@link #number} (The sequential number of the interaction, e.g.
6227     *         1.2.5.). This is the underlying object with id, value and extensions.
6228     *         The accessor "getNumber" gives direct access to the value
6229     */
6230    public StringType getNumberElement() {
6231      if (this.number == null)
6232        if (Configuration.errorOnAutoCreate())
6233          throw new Error("Attempt to auto-create ExampleScenarioProcessStepOperationComponent.number");
6234        else if (Configuration.doAutoCreate())
6235          this.number = new StringType(); // bb
6236      return this.number;
6237    }
6238
6239    public boolean hasNumberElement() {
6240      return this.number != null && !this.number.isEmpty();
6241    }
6242
6243    public boolean hasNumber() {
6244      return this.number != null && !this.number.isEmpty();
6245    }
6246
6247    /**
6248     * @param value {@link #number} (The sequential number of the interaction, e.g.
6249     *              1.2.5.). This is the underlying object with id, value and
6250     *              extensions. The accessor "getNumber" gives direct access to the
6251     *              value
6252     */
6253    public ExampleScenarioProcessStepOperationComponent setNumberElement(StringType value) {
6254      this.number = value;
6255      return this;
6256    }
6257
6258    /**
6259     * @return The sequential number of the interaction, e.g. 1.2.5.
6260     */
6261    public String getNumber() {
6262      return this.number == null ? null : this.number.getValue();
6263    }
6264
6265    /**
6266     * @param value The sequential number of the interaction, e.g. 1.2.5.
6267     */
6268    public ExampleScenarioProcessStepOperationComponent setNumber(String value) {
6269      if (this.number == null)
6270        this.number = new StringType();
6271      this.number.setValue(value);
6272      return this;
6273    }
6274
6275    /**
6276     * @return {@link #type} (The type of operation - CRUD.). This is the underlying
6277     *         object with id, value and extensions. The accessor "getType" gives
6278     *         direct access to the value
6279     */
6280    public StringType getTypeElement() {
6281      if (this.type == null)
6282        if (Configuration.errorOnAutoCreate())
6283          throw new Error("Attempt to auto-create ExampleScenarioProcessStepOperationComponent.type");
6284        else if (Configuration.doAutoCreate())
6285          this.type = new StringType(); // bb
6286      return this.type;
6287    }
6288
6289    public boolean hasTypeElement() {
6290      return this.type != null && !this.type.isEmpty();
6291    }
6292
6293    public boolean hasType() {
6294      return this.type != null && !this.type.isEmpty();
6295    }
6296
6297    /**
6298     * @param value {@link #type} (The type of operation - CRUD.). This is the
6299     *              underlying object with id, value and extensions. The accessor
6300     *              "getType" gives direct access to the value
6301     */
6302    public ExampleScenarioProcessStepOperationComponent setTypeElement(StringType value) {
6303      this.type = value;
6304      return this;
6305    }
6306
6307    /**
6308     * @return The type of operation - CRUD.
6309     */
6310    public String getType() {
6311      return this.type == null ? null : this.type.getValue();
6312    }
6313
6314    /**
6315     * @param value The type of operation - CRUD.
6316     */
6317    public ExampleScenarioProcessStepOperationComponent setType(String value) {
6318      if (Utilities.noString(value))
6319        this.type = null;
6320      else {
6321        if (this.type == null)
6322          this.type = new StringType();
6323        this.type.setValue(value);
6324      }
6325      return this;
6326    }
6327
6328    /**
6329     * @return {@link #name} (The human-friendly name of the interaction.). This is
6330     *         the underlying object with id, value and extensions. The accessor
6331     *         "getName" gives direct access to the value
6332     */
6333    public StringType getNameElement() {
6334      if (this.name == null)
6335        if (Configuration.errorOnAutoCreate())
6336          throw new Error("Attempt to auto-create ExampleScenarioProcessStepOperationComponent.name");
6337        else if (Configuration.doAutoCreate())
6338          this.name = new StringType(); // bb
6339      return this.name;
6340    }
6341
6342    public boolean hasNameElement() {
6343      return this.name != null && !this.name.isEmpty();
6344    }
6345
6346    public boolean hasName() {
6347      return this.name != null && !this.name.isEmpty();
6348    }
6349
6350    /**
6351     * @param value {@link #name} (The human-friendly name of the interaction.).
6352     *              This is the underlying object with id, value and extensions. The
6353     *              accessor "getName" gives direct access to the value
6354     */
6355    public ExampleScenarioProcessStepOperationComponent setNameElement(StringType value) {
6356      this.name = value;
6357      return this;
6358    }
6359
6360    /**
6361     * @return The human-friendly name of the interaction.
6362     */
6363    public String getName() {
6364      return this.name == null ? null : this.name.getValue();
6365    }
6366
6367    /**
6368     * @param value The human-friendly name of the interaction.
6369     */
6370    public ExampleScenarioProcessStepOperationComponent setName(String value) {
6371      if (Utilities.noString(value))
6372        this.name = null;
6373      else {
6374        if (this.name == null)
6375          this.name = new StringType();
6376        this.name.setValue(value);
6377      }
6378      return this;
6379    }
6380
6381    /**
6382     * @return {@link #initiator} (Who starts the transaction.). This is the
6383     *         underlying object with id, value and extensions. The accessor
6384     *         "getInitiator" gives direct access to the value
6385     */
6386    public StringType getInitiatorElement() {
6387      if (this.initiator == null)
6388        if (Configuration.errorOnAutoCreate())
6389          throw new Error("Attempt to auto-create ExampleScenarioProcessStepOperationComponent.initiator");
6390        else if (Configuration.doAutoCreate())
6391          this.initiator = new StringType(); // bb
6392      return this.initiator;
6393    }
6394
6395    public boolean hasInitiatorElement() {
6396      return this.initiator != null && !this.initiator.isEmpty();
6397    }
6398
6399    public boolean hasInitiator() {
6400      return this.initiator != null && !this.initiator.isEmpty();
6401    }
6402
6403    /**
6404     * @param value {@link #initiator} (Who starts the transaction.). This is the
6405     *              underlying object with id, value and extensions. The accessor
6406     *              "getInitiator" gives direct access to the value
6407     */
6408    public ExampleScenarioProcessStepOperationComponent setInitiatorElement(StringType value) {
6409      this.initiator = value;
6410      return this;
6411    }
6412
6413    /**
6414     * @return Who starts the transaction.
6415     */
6416    public String getInitiator() {
6417      return this.initiator == null ? null : this.initiator.getValue();
6418    }
6419
6420    /**
6421     * @param value Who starts the transaction.
6422     */
6423    public ExampleScenarioProcessStepOperationComponent setInitiator(String value) {
6424      if (Utilities.noString(value))
6425        this.initiator = null;
6426      else {
6427        if (this.initiator == null)
6428          this.initiator = new StringType();
6429        this.initiator.setValue(value);
6430      }
6431      return this;
6432    }
6433
6434    /**
6435     * @return {@link #receiver} (Who receives the transaction.). This is the
6436     *         underlying object with id, value and extensions. The accessor
6437     *         "getReceiver" gives direct access to the value
6438     */
6439    public StringType getReceiverElement() {
6440      if (this.receiver == null)
6441        if (Configuration.errorOnAutoCreate())
6442          throw new Error("Attempt to auto-create ExampleScenarioProcessStepOperationComponent.receiver");
6443        else if (Configuration.doAutoCreate())
6444          this.receiver = new StringType(); // bb
6445      return this.receiver;
6446    }
6447
6448    public boolean hasReceiverElement() {
6449      return this.receiver != null && !this.receiver.isEmpty();
6450    }
6451
6452    public boolean hasReceiver() {
6453      return this.receiver != null && !this.receiver.isEmpty();
6454    }
6455
6456    /**
6457     * @param value {@link #receiver} (Who receives the transaction.). This is the
6458     *              underlying object with id, value and extensions. The accessor
6459     *              "getReceiver" gives direct access to the value
6460     */
6461    public ExampleScenarioProcessStepOperationComponent setReceiverElement(StringType value) {
6462      this.receiver = value;
6463      return this;
6464    }
6465
6466    /**
6467     * @return Who receives the transaction.
6468     */
6469    public String getReceiver() {
6470      return this.receiver == null ? null : this.receiver.getValue();
6471    }
6472
6473    /**
6474     * @param value Who receives the transaction.
6475     */
6476    public ExampleScenarioProcessStepOperationComponent setReceiver(String value) {
6477      if (Utilities.noString(value))
6478        this.receiver = null;
6479      else {
6480        if (this.receiver == null)
6481          this.receiver = new StringType();
6482        this.receiver.setValue(value);
6483      }
6484      return this;
6485    }
6486
6487    /**
6488     * @return {@link #description} (A comment to be inserted in the diagram.). This
6489     *         is the underlying object with id, value and extensions. The accessor
6490     *         "getDescription" gives direct access to the value
6491     */
6492    public MarkdownType getDescriptionElement() {
6493      if (this.description == null)
6494        if (Configuration.errorOnAutoCreate())
6495          throw new Error("Attempt to auto-create ExampleScenarioProcessStepOperationComponent.description");
6496        else if (Configuration.doAutoCreate())
6497          this.description = new MarkdownType(); // bb
6498      return this.description;
6499    }
6500
6501    public boolean hasDescriptionElement() {
6502      return this.description != null && !this.description.isEmpty();
6503    }
6504
6505    public boolean hasDescription() {
6506      return this.description != null && !this.description.isEmpty();
6507    }
6508
6509    /**
6510     * @param value {@link #description} (A comment to be inserted in the diagram.).
6511     *              This is the underlying object with id, value and extensions. The
6512     *              accessor "getDescription" gives direct access to the value
6513     */
6514    public ExampleScenarioProcessStepOperationComponent setDescriptionElement(MarkdownType value) {
6515      this.description = value;
6516      return this;
6517    }
6518
6519    /**
6520     * @return A comment to be inserted in the diagram.
6521     */
6522    public String getDescription() {
6523      return this.description == null ? null : this.description.getValue();
6524    }
6525
6526    /**
6527     * @param value A comment to be inserted in the diagram.
6528     */
6529    public ExampleScenarioProcessStepOperationComponent setDescription(String value) {
6530      if (value == null)
6531        this.description = null;
6532      else {
6533        if (this.description == null)
6534          this.description = new MarkdownType();
6535        this.description.setValue(value);
6536      }
6537      return this;
6538    }
6539
6540    /**
6541     * @return {@link #initiatorActive} (Whether the initiator is deactivated right
6542     *         after the transaction.). This is the underlying object with id, value
6543     *         and extensions. The accessor "getInitiatorActive" gives direct access
6544     *         to the value
6545     */
6546    public BooleanType getInitiatorActiveElement() {
6547      if (this.initiatorActive == null)
6548        if (Configuration.errorOnAutoCreate())
6549          throw new Error("Attempt to auto-create ExampleScenarioProcessStepOperationComponent.initiatorActive");
6550        else if (Configuration.doAutoCreate())
6551          this.initiatorActive = new BooleanType(); // bb
6552      return this.initiatorActive;
6553    }
6554
6555    public boolean hasInitiatorActiveElement() {
6556      return this.initiatorActive != null && !this.initiatorActive.isEmpty();
6557    }
6558
6559    public boolean hasInitiatorActive() {
6560      return this.initiatorActive != null && !this.initiatorActive.isEmpty();
6561    }
6562
6563    /**
6564     * @param value {@link #initiatorActive} (Whether the initiator is deactivated
6565     *              right after the transaction.). This is the underlying object
6566     *              with id, value and extensions. The accessor "getInitiatorActive"
6567     *              gives direct access to the value
6568     */
6569    public ExampleScenarioProcessStepOperationComponent setInitiatorActiveElement(BooleanType value) {
6570      this.initiatorActive = value;
6571      return this;
6572    }
6573
6574    /**
6575     * @return Whether the initiator is deactivated right after the transaction.
6576     */
6577    public boolean getInitiatorActive() {
6578      return this.initiatorActive == null || this.initiatorActive.isEmpty() ? false : this.initiatorActive.getValue();
6579    }
6580
6581    /**
6582     * @param value Whether the initiator is deactivated right after the
6583     *              transaction.
6584     */
6585    public ExampleScenarioProcessStepOperationComponent setInitiatorActive(boolean value) {
6586      if (this.initiatorActive == null)
6587        this.initiatorActive = new BooleanType();
6588      this.initiatorActive.setValue(value);
6589      return this;
6590    }
6591
6592    /**
6593     * @return {@link #receiverActive} (Whether the receiver is deactivated right
6594     *         after the transaction.). This is the underlying object with id, value
6595     *         and extensions. The accessor "getReceiverActive" gives direct access
6596     *         to the value
6597     */
6598    public BooleanType getReceiverActiveElement() {
6599      if (this.receiverActive == null)
6600        if (Configuration.errorOnAutoCreate())
6601          throw new Error("Attempt to auto-create ExampleScenarioProcessStepOperationComponent.receiverActive");
6602        else if (Configuration.doAutoCreate())
6603          this.receiverActive = new BooleanType(); // bb
6604      return this.receiverActive;
6605    }
6606
6607    public boolean hasReceiverActiveElement() {
6608      return this.receiverActive != null && !this.receiverActive.isEmpty();
6609    }
6610
6611    public boolean hasReceiverActive() {
6612      return this.receiverActive != null && !this.receiverActive.isEmpty();
6613    }
6614
6615    /**
6616     * @param value {@link #receiverActive} (Whether the receiver is deactivated
6617     *              right after the transaction.). This is the underlying object
6618     *              with id, value and extensions. The accessor "getReceiverActive"
6619     *              gives direct access to the value
6620     */
6621    public ExampleScenarioProcessStepOperationComponent setReceiverActiveElement(BooleanType value) {
6622      this.receiverActive = value;
6623      return this;
6624    }
6625
6626    /**
6627     * @return Whether the receiver is deactivated right after the transaction.
6628     */
6629    public boolean getReceiverActive() {
6630      return this.receiverActive == null || this.receiverActive.isEmpty() ? false : this.receiverActive.getValue();
6631    }
6632
6633    /**
6634     * @param value Whether the receiver is deactivated right after the transaction.
6635     */
6636    public ExampleScenarioProcessStepOperationComponent setReceiverActive(boolean value) {
6637      if (this.receiverActive == null)
6638        this.receiverActive = new BooleanType();
6639      this.receiverActive.setValue(value);
6640      return this;
6641    }
6642
6643    /**
6644     * @return {@link #request} (Each resource instance used by the initiator.)
6645     */
6646    public ExampleScenarioInstanceContainedInstanceComponent getRequest() {
6647      if (this.request == null)
6648        if (Configuration.errorOnAutoCreate())
6649          throw new Error("Attempt to auto-create ExampleScenarioProcessStepOperationComponent.request");
6650        else if (Configuration.doAutoCreate())
6651          this.request = new ExampleScenarioInstanceContainedInstanceComponent(); // cc
6652      return this.request;
6653    }
6654
6655    public boolean hasRequest() {
6656      return this.request != null && !this.request.isEmpty();
6657    }
6658
6659    /**
6660     * @param value {@link #request} (Each resource instance used by the initiator.)
6661     */
6662    public ExampleScenarioProcessStepOperationComponent setRequest(
6663        ExampleScenarioInstanceContainedInstanceComponent value) {
6664      this.request = value;
6665      return this;
6666    }
6667
6668    /**
6669     * @return {@link #response} (Each resource instance used by the responder.)
6670     */
6671    public ExampleScenarioInstanceContainedInstanceComponent getResponse() {
6672      if (this.response == null)
6673        if (Configuration.errorOnAutoCreate())
6674          throw new Error("Attempt to auto-create ExampleScenarioProcessStepOperationComponent.response");
6675        else if (Configuration.doAutoCreate())
6676          this.response = new ExampleScenarioInstanceContainedInstanceComponent(); // cc
6677      return this.response;
6678    }
6679
6680    public boolean hasResponse() {
6681      return this.response != null && !this.response.isEmpty();
6682    }
6683
6684    /**
6685     * @param value {@link #response} (Each resource instance used by the
6686     *              responder.)
6687     */
6688    public ExampleScenarioProcessStepOperationComponent setResponse(
6689        ExampleScenarioInstanceContainedInstanceComponent value) {
6690      this.response = value;
6691      return this;
6692    }
6693
6694    protected void listChildren(List<Property> children) {
6695      super.listChildren(children);
6696      children
6697          .add(new Property("number", "string", "The sequential number of the interaction, e.g. 1.2.5.", 0, 1, number));
6698      children.add(new Property("type", "string", "The type of operation - CRUD.", 0, 1, type));
6699      children.add(new Property("name", "string", "The human-friendly name of the interaction.", 0, 1, name));
6700      children.add(new Property("initiator", "string", "Who starts the transaction.", 0, 1, initiator));
6701      children.add(new Property("receiver", "string", "Who receives the transaction.", 0, 1, receiver));
6702      children
6703          .add(new Property("description", "markdown", "A comment to be inserted in the diagram.", 0, 1, description));
6704      children.add(new Property("initiatorActive", "boolean",
6705          "Whether the initiator is deactivated right after the transaction.", 0, 1, initiatorActive));
6706      children.add(new Property("receiverActive", "boolean",
6707          "Whether the receiver is deactivated right after the transaction.", 0, 1, receiverActive));
6708      children.add(new Property("request", "@ExampleScenario.instance.containedInstance",
6709          "Each resource instance used by the initiator.", 0, 1, request));
6710      children.add(new Property("response", "@ExampleScenario.instance.containedInstance",
6711          "Each resource instance used by the responder.", 0, 1, response));
6712    }
6713
6714    @Override
6715    public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
6716      switch (_hash) {
6717      case -1034364087:
6718        /* number */ return new Property("number", "string", "The sequential number of the interaction, e.g. 1.2.5.", 0,
6719            1, number);
6720      case 3575610:
6721        /* type */ return new Property("type", "string", "The type of operation - CRUD.", 0, 1, type);
6722      case 3373707:
6723        /* name */ return new Property("name", "string", "The human-friendly name of the interaction.", 0, 1, name);
6724      case -248987089:
6725        /* initiator */ return new Property("initiator", "string", "Who starts the transaction.", 0, 1, initiator);
6726      case -808719889:
6727        /* receiver */ return new Property("receiver", "string", "Who receives the transaction.", 0, 1, receiver);
6728      case -1724546052:
6729        /* description */ return new Property("description", "markdown", "A comment to be inserted in the diagram.", 0,
6730            1, description);
6731      case 384339477:
6732        /* initiatorActive */ return new Property("initiatorActive", "boolean",
6733            "Whether the initiator is deactivated right after the transaction.", 0, 1, initiatorActive);
6734      case -285284907:
6735        /* receiverActive */ return new Property("receiverActive", "boolean",
6736            "Whether the receiver is deactivated right after the transaction.", 0, 1, receiverActive);
6737      case 1095692943:
6738        /* request */ return new Property("request", "@ExampleScenario.instance.containedInstance",
6739            "Each resource instance used by the initiator.", 0, 1, request);
6740      case -340323263:
6741        /* response */ return new Property("response", "@ExampleScenario.instance.containedInstance",
6742            "Each resource instance used by the responder.", 0, 1, response);
6743      default:
6744        return super.getNamedProperty(_hash, _name, _checkValid);
6745      }
6746
6747    }
6748
6749    @Override
6750    public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
6751      switch (hash) {
6752      case -1034364087:
6753        /* number */ return this.number == null ? new Base[0] : new Base[] { this.number }; // StringType
6754      case 3575610:
6755        /* type */ return this.type == null ? new Base[0] : new Base[] { this.type }; // StringType
6756      case 3373707:
6757        /* name */ return this.name == null ? new Base[0] : new Base[] { this.name }; // StringType
6758      case -248987089:
6759        /* initiator */ return this.initiator == null ? new Base[0] : new Base[] { this.initiator }; // StringType
6760      case -808719889:
6761        /* receiver */ return this.receiver == null ? new Base[0] : new Base[] { this.receiver }; // StringType
6762      case -1724546052:
6763        /* description */ return this.description == null ? new Base[0] : new Base[] { this.description }; // MarkdownType
6764      case 384339477:
6765        /* initiatorActive */ return this.initiatorActive == null ? new Base[0] : new Base[] { this.initiatorActive }; // BooleanType
6766      case -285284907:
6767        /* receiverActive */ return this.receiverActive == null ? new Base[0] : new Base[] { this.receiverActive }; // BooleanType
6768      case 1095692943:
6769        /* request */ return this.request == null ? new Base[0] : new Base[] { this.request }; // ExampleScenarioInstanceContainedInstanceComponent
6770      case -340323263:
6771        /* response */ return this.response == null ? new Base[0] : new Base[] { this.response }; // ExampleScenarioInstanceContainedInstanceComponent
6772      default:
6773        return super.getProperty(hash, name, checkValid);
6774      }
6775
6776    }
6777
6778    @Override
6779    public Base setProperty(int hash, String name, Base value) throws FHIRException {
6780      switch (hash) {
6781      case -1034364087: // number
6782        this.number = castToString(value); // StringType
6783        return value;
6784      case 3575610: // type
6785        this.type = castToString(value); // StringType
6786        return value;
6787      case 3373707: // name
6788        this.name = castToString(value); // StringType
6789        return value;
6790      case -248987089: // initiator
6791        this.initiator = castToString(value); // StringType
6792        return value;
6793      case -808719889: // receiver
6794        this.receiver = castToString(value); // StringType
6795        return value;
6796      case -1724546052: // description
6797        this.description = castToMarkdown(value); // MarkdownType
6798        return value;
6799      case 384339477: // initiatorActive
6800        this.initiatorActive = castToBoolean(value); // BooleanType
6801        return value;
6802      case -285284907: // receiverActive
6803        this.receiverActive = castToBoolean(value); // BooleanType
6804        return value;
6805      case 1095692943: // request
6806        this.request = (ExampleScenarioInstanceContainedInstanceComponent) value; // ExampleScenarioInstanceContainedInstanceComponent
6807        return value;
6808      case -340323263: // response
6809        this.response = (ExampleScenarioInstanceContainedInstanceComponent) value; // ExampleScenarioInstanceContainedInstanceComponent
6810        return value;
6811      default:
6812        return super.setProperty(hash, name, value);
6813      }
6814
6815    }
6816
6817    @Override
6818    public Base setProperty(String name, Base value) throws FHIRException {
6819      if (name.equals("number")) {
6820        this.number = castToString(value); // StringType
6821      } else if (name.equals("type")) {
6822        this.type = castToString(value); // StringType
6823      } else if (name.equals("name")) {
6824        this.name = castToString(value); // StringType
6825      } else if (name.equals("initiator")) {
6826        this.initiator = castToString(value); // StringType
6827      } else if (name.equals("receiver")) {
6828        this.receiver = castToString(value); // StringType
6829      } else if (name.equals("description")) {
6830        this.description = castToMarkdown(value); // MarkdownType
6831      } else if (name.equals("initiatorActive")) {
6832        this.initiatorActive = castToBoolean(value); // BooleanType
6833      } else if (name.equals("receiverActive")) {
6834        this.receiverActive = castToBoolean(value); // BooleanType
6835      } else if (name.equals("request")) {
6836        this.request = (ExampleScenarioInstanceContainedInstanceComponent) value; // ExampleScenarioInstanceContainedInstanceComponent
6837      } else if (name.equals("response")) {
6838        this.response = (ExampleScenarioInstanceContainedInstanceComponent) value; // ExampleScenarioInstanceContainedInstanceComponent
6839      } else
6840        return super.setProperty(name, value);
6841      return value;
6842    }
6843
6844  @Override
6845  public void removeChild(String name, Base value) throws FHIRException {
6846      if (name.equals("number")) {
6847        this.number = null;
6848      } else if (name.equals("type")) {
6849        this.type = null;
6850      } else if (name.equals("name")) {
6851        this.name = null;
6852      } else if (name.equals("initiator")) {
6853        this.initiator = null;
6854      } else if (name.equals("receiver")) {
6855        this.receiver = null;
6856      } else if (name.equals("description")) {
6857        this.description = null;
6858      } else if (name.equals("initiatorActive")) {
6859        this.initiatorActive = null;
6860      } else if (name.equals("receiverActive")) {
6861        this.receiverActive = null;
6862      } else if (name.equals("request")) {
6863        this.request = (ExampleScenarioInstanceContainedInstanceComponent) value; // ExampleScenarioInstanceContainedInstanceComponent
6864      } else if (name.equals("response")) {
6865        this.response = (ExampleScenarioInstanceContainedInstanceComponent) value; // ExampleScenarioInstanceContainedInstanceComponent
6866      } else
6867        super.removeChild(name, value);
6868      
6869    }
6870
6871    @Override
6872    public Base makeProperty(int hash, String name) throws FHIRException {
6873      switch (hash) {
6874      case -1034364087:
6875        return getNumberElement();
6876      case 3575610:
6877        return getTypeElement();
6878      case 3373707:
6879        return getNameElement();
6880      case -248987089:
6881        return getInitiatorElement();
6882      case -808719889:
6883        return getReceiverElement();
6884      case -1724546052:
6885        return getDescriptionElement();
6886      case 384339477:
6887        return getInitiatorActiveElement();
6888      case -285284907:
6889        return getReceiverActiveElement();
6890      case 1095692943:
6891        return getRequest();
6892      case -340323263:
6893        return getResponse();
6894      default:
6895        return super.makeProperty(hash, name);
6896      }
6897
6898    }
6899
6900    @Override
6901    public String[] getTypesForProperty(int hash, String name) throws FHIRException {
6902      switch (hash) {
6903      case -1034364087:
6904        /* number */ return new String[] { "string" };
6905      case 3575610:
6906        /* type */ return new String[] { "string" };
6907      case 3373707:
6908        /* name */ return new String[] { "string" };
6909      case -248987089:
6910        /* initiator */ return new String[] { "string" };
6911      case -808719889:
6912        /* receiver */ return new String[] { "string" };
6913      case -1724546052:
6914        /* description */ return new String[] { "markdown" };
6915      case 384339477:
6916        /* initiatorActive */ return new String[] { "boolean" };
6917      case -285284907:
6918        /* receiverActive */ return new String[] { "boolean" };
6919      case 1095692943:
6920        /* request */ return new String[] { "@ExampleScenario.instance.containedInstance" };
6921      case -340323263:
6922        /* response */ return new String[] { "@ExampleScenario.instance.containedInstance" };
6923      default:
6924        return super.getTypesForProperty(hash, name);
6925      }
6926
6927    }
6928
6929    @Override
6930    public Base addChild(String name) throws FHIRException {
6931      if (name.equals("number")) {
6932        throw new FHIRException("Cannot call addChild on a singleton property ExampleScenario.number");
6933      } else if (name.equals("type")) {
6934        throw new FHIRException("Cannot call addChild on a singleton property ExampleScenario.type");
6935      } else if (name.equals("name")) {
6936        throw new FHIRException("Cannot call addChild on a singleton property ExampleScenario.name");
6937      } else if (name.equals("initiator")) {
6938        throw new FHIRException("Cannot call addChild on a singleton property ExampleScenario.initiator");
6939      } else if (name.equals("receiver")) {
6940        throw new FHIRException("Cannot call addChild on a singleton property ExampleScenario.receiver");
6941      } else if (name.equals("description")) {
6942        throw new FHIRException("Cannot call addChild on a singleton property ExampleScenario.description");
6943      } else if (name.equals("initiatorActive")) {
6944        throw new FHIRException("Cannot call addChild on a singleton property ExampleScenario.initiatorActive");
6945      } else if (name.equals("receiverActive")) {
6946        throw new FHIRException("Cannot call addChild on a singleton property ExampleScenario.receiverActive");
6947      } else if (name.equals("request")) {
6948        this.request = new ExampleScenarioInstanceContainedInstanceComponent();
6949        return this.request;
6950      } else if (name.equals("response")) {
6951        this.response = new ExampleScenarioInstanceContainedInstanceComponent();
6952        return this.response;
6953      } else
6954        return super.addChild(name);
6955    }
6956
6957    public ExampleScenarioProcessStepOperationComponent copy() {
6958      ExampleScenarioProcessStepOperationComponent dst = new ExampleScenarioProcessStepOperationComponent();
6959      copyValues(dst);
6960      return dst;
6961    }
6962
6963    public void copyValues(ExampleScenarioProcessStepOperationComponent dst) {
6964      super.copyValues(dst);
6965      dst.number = number == null ? null : number.copy();
6966      dst.type = type == null ? null : type.copy();
6967      dst.name = name == null ? null : name.copy();
6968      dst.initiator = initiator == null ? null : initiator.copy();
6969      dst.receiver = receiver == null ? null : receiver.copy();
6970      dst.description = description == null ? null : description.copy();
6971      dst.initiatorActive = initiatorActive == null ? null : initiatorActive.copy();
6972      dst.receiverActive = receiverActive == null ? null : receiverActive.copy();
6973      dst.request = request == null ? null : request.copy();
6974      dst.response = response == null ? null : response.copy();
6975    }
6976
6977    @Override
6978    public boolean equalsDeep(Base other_) {
6979      if (!super.equalsDeep(other_))
6980        return false;
6981      if (!(other_ instanceof ExampleScenarioProcessStepOperationComponent))
6982        return false;
6983      ExampleScenarioProcessStepOperationComponent o = (ExampleScenarioProcessStepOperationComponent) other_;
6984      return compareDeep(number, o.number, true) && compareDeep(type, o.type, true) && compareDeep(name, o.name, true)
6985          && compareDeep(initiator, o.initiator, true) && compareDeep(receiver, o.receiver, true)
6986          && compareDeep(description, o.description, true) && compareDeep(initiatorActive, o.initiatorActive, true)
6987          && compareDeep(receiverActive, o.receiverActive, true) && compareDeep(request, o.request, true)
6988          && compareDeep(response, o.response, true);
6989    }
6990
6991    @Override
6992    public boolean equalsShallow(Base other_) {
6993      if (!super.equalsShallow(other_))
6994        return false;
6995      if (!(other_ instanceof ExampleScenarioProcessStepOperationComponent))
6996        return false;
6997      ExampleScenarioProcessStepOperationComponent o = (ExampleScenarioProcessStepOperationComponent) other_;
6998      return compareValues(number, o.number, true) && compareValues(type, o.type, true)
6999          && compareValues(name, o.name, true) && compareValues(initiator, o.initiator, true)
7000          && compareValues(receiver, o.receiver, true) && compareValues(description, o.description, true)
7001          && compareValues(initiatorActive, o.initiatorActive, true)
7002          && compareValues(receiverActive, o.receiverActive, true);
7003    }
7004
7005    public boolean isEmpty() {
7006      return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(number, type, name, initiator, receiver,
7007          description, initiatorActive, receiverActive, request, response);
7008    }
7009
7010    public String fhirType() {
7011      return "ExampleScenario.process.step.operation";
7012
7013    }
7014
7015  }
7016
7017  @Block()
7018  public static class ExampleScenarioProcessStepAlternativeComponent extends BackboneElement
7019      implements IBaseBackboneElement {
7020    /**
7021     * The label to display for the alternative that gives a sense of the
7022     * circumstance in which the alternative should be invoked.
7023     */
7024    @Child(name = "title", type = { StringType.class }, order = 1, min = 1, max = 1, modifier = false, summary = false)
7025    @Description(shortDefinition = "Label for alternative", formalDefinition = "The label to display for the alternative that gives a sense of the circumstance in which the alternative should be invoked.")
7026    protected StringType title;
7027
7028    /**
7029     * A human-readable description of the alternative explaining when the
7030     * alternative should occur rather than the base step.
7031     */
7032    @Child(name = "description", type = {
7033        MarkdownType.class }, order = 2, min = 0, max = 1, modifier = false, summary = false)
7034    @Description(shortDefinition = "A human-readable description of each option", formalDefinition = "A human-readable description of the alternative explaining when the alternative should occur rather than the base step.")
7035    protected MarkdownType description;
7036
7037    /**
7038     * What happens in each alternative option.
7039     */
7040    @Child(name = "step", type = {
7041        ExampleScenarioProcessStepComponent.class }, order = 3, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = false)
7042    @Description(shortDefinition = "What happens in each alternative option", formalDefinition = "What happens in each alternative option.")
7043    protected List<ExampleScenarioProcessStepComponent> step;
7044
7045    private static final long serialVersionUID = -254687460L;
7046
7047    /**
7048     * Constructor
7049     */
7050    public ExampleScenarioProcessStepAlternativeComponent() {
7051      super();
7052    }
7053
7054    /**
7055     * Constructor
7056     */
7057    public ExampleScenarioProcessStepAlternativeComponent(StringType title) {
7058      super();
7059      this.title = title;
7060    }
7061
7062    /**
7063     * @return {@link #title} (The label to display for the alternative that gives a
7064     *         sense of the circumstance in which the alternative should be
7065     *         invoked.). This is the underlying object with id, value and
7066     *         extensions. The accessor "getTitle" gives direct access to the value
7067     */
7068    public StringType getTitleElement() {
7069      if (this.title == null)
7070        if (Configuration.errorOnAutoCreate())
7071          throw new Error("Attempt to auto-create ExampleScenarioProcessStepAlternativeComponent.title");
7072        else if (Configuration.doAutoCreate())
7073          this.title = new StringType(); // bb
7074      return this.title;
7075    }
7076
7077    public boolean hasTitleElement() {
7078      return this.title != null && !this.title.isEmpty();
7079    }
7080
7081    public boolean hasTitle() {
7082      return this.title != null && !this.title.isEmpty();
7083    }
7084
7085    /**
7086     * @param value {@link #title} (The label to display for the alternative that
7087     *              gives a sense of the circumstance in which the alternative
7088     *              should be invoked.). This is the underlying object with id,
7089     *              value and extensions. The accessor "getTitle" gives direct
7090     *              access to the value
7091     */
7092    public ExampleScenarioProcessStepAlternativeComponent setTitleElement(StringType value) {
7093      this.title = value;
7094      return this;
7095    }
7096
7097    /**
7098     * @return The label to display for the alternative that gives a sense of the
7099     *         circumstance in which the alternative should be invoked.
7100     */
7101    public String getTitle() {
7102      return this.title == null ? null : this.title.getValue();
7103    }
7104
7105    /**
7106     * @param value The label to display for the alternative that gives a sense of
7107     *              the circumstance in which the alternative should be invoked.
7108     */
7109    public ExampleScenarioProcessStepAlternativeComponent setTitle(String value) {
7110      if (this.title == null)
7111        this.title = new StringType();
7112      this.title.setValue(value);
7113      return this;
7114    }
7115
7116    /**
7117     * @return {@link #description} (A human-readable description of the alternative
7118     *         explaining when the alternative should occur rather than the base
7119     *         step.). This is the underlying object with id, value and extensions.
7120     *         The accessor "getDescription" gives direct access to the value
7121     */
7122    public MarkdownType getDescriptionElement() {
7123      if (this.description == null)
7124        if (Configuration.errorOnAutoCreate())
7125          throw new Error("Attempt to auto-create ExampleScenarioProcessStepAlternativeComponent.description");
7126        else if (Configuration.doAutoCreate())
7127          this.description = new MarkdownType(); // bb
7128      return this.description;
7129    }
7130
7131    public boolean hasDescriptionElement() {
7132      return this.description != null && !this.description.isEmpty();
7133    }
7134
7135    public boolean hasDescription() {
7136      return this.description != null && !this.description.isEmpty();
7137    }
7138
7139    /**
7140     * @param value {@link #description} (A human-readable description of the
7141     *              alternative explaining when the alternative should occur rather
7142     *              than the base step.). This is the underlying object with id,
7143     *              value and extensions. The accessor "getDescription" gives direct
7144     *              access to the value
7145     */
7146    public ExampleScenarioProcessStepAlternativeComponent setDescriptionElement(MarkdownType value) {
7147      this.description = value;
7148      return this;
7149    }
7150
7151    /**
7152     * @return A human-readable description of the alternative explaining when the
7153     *         alternative should occur rather than the base step.
7154     */
7155    public String getDescription() {
7156      return this.description == null ? null : this.description.getValue();
7157    }
7158
7159    /**
7160     * @param value A human-readable description of the alternative explaining when
7161     *              the alternative should occur rather than the base step.
7162     */
7163    public ExampleScenarioProcessStepAlternativeComponent setDescription(String value) {
7164      if (value == null)
7165        this.description = null;
7166      else {
7167        if (this.description == null)
7168          this.description = new MarkdownType();
7169        this.description.setValue(value);
7170      }
7171      return this;
7172    }
7173
7174    /**
7175     * @return {@link #step} (What happens in each alternative option.)
7176     */
7177    public List<ExampleScenarioProcessStepComponent> getStep() {
7178      if (this.step == null)
7179        this.step = new ArrayList<ExampleScenarioProcessStepComponent>();
7180      return this.step;
7181    }
7182
7183    /**
7184     * @return Returns a reference to <code>this</code> for easy method chaining
7185     */
7186    public ExampleScenarioProcessStepAlternativeComponent setStep(List<ExampleScenarioProcessStepComponent> theStep) {
7187      this.step = theStep;
7188      return this;
7189    }
7190
7191    public boolean hasStep() {
7192      if (this.step == null)
7193        return false;
7194      for (ExampleScenarioProcessStepComponent item : this.step)
7195        if (!item.isEmpty())
7196          return true;
7197      return false;
7198    }
7199
7200    public ExampleScenarioProcessStepComponent addStep() { // 3
7201      ExampleScenarioProcessStepComponent t = new ExampleScenarioProcessStepComponent();
7202      if (this.step == null)
7203        this.step = new ArrayList<ExampleScenarioProcessStepComponent>();
7204      this.step.add(t);
7205      return t;
7206    }
7207
7208    public ExampleScenarioProcessStepAlternativeComponent addStep(ExampleScenarioProcessStepComponent t) { // 3
7209      if (t == null)
7210        return this;
7211      if (this.step == null)
7212        this.step = new ArrayList<ExampleScenarioProcessStepComponent>();
7213      this.step.add(t);
7214      return this;
7215    }
7216
7217    /**
7218     * @return The first repetition of repeating field {@link #step}, creating it if
7219     *         it does not already exist
7220     */
7221    public ExampleScenarioProcessStepComponent getStepFirstRep() {
7222      if (getStep().isEmpty()) {
7223        addStep();
7224      }
7225      return getStep().get(0);
7226    }
7227
7228    protected void listChildren(List<Property> children) {
7229      super.listChildren(children);
7230      children.add(new Property("title", "string",
7231          "The label to display for the alternative that gives a sense of the circumstance in which the alternative should be invoked.",
7232          0, 1, title));
7233      children.add(new Property("description", "markdown",
7234          "A human-readable description of the alternative explaining when the alternative should occur rather than the base step.",
7235          0, 1, description));
7236      children.add(new Property("step", "@ExampleScenario.process.step", "What happens in each alternative option.", 0,
7237          java.lang.Integer.MAX_VALUE, step));
7238    }
7239
7240    @Override
7241    public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
7242      switch (_hash) {
7243      case 110371416:
7244        /* title */ return new Property("title", "string",
7245            "The label to display for the alternative that gives a sense of the circumstance in which the alternative should be invoked.",
7246            0, 1, title);
7247      case -1724546052:
7248        /* description */ return new Property("description", "markdown",
7249            "A human-readable description of the alternative explaining when the alternative should occur rather than the base step.",
7250            0, 1, description);
7251      case 3540684:
7252        /* step */ return new Property("step", "@ExampleScenario.process.step",
7253            "What happens in each alternative option.", 0, java.lang.Integer.MAX_VALUE, step);
7254      default:
7255        return super.getNamedProperty(_hash, _name, _checkValid);
7256      }
7257
7258    }
7259
7260    @Override
7261    public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
7262      switch (hash) {
7263      case 110371416:
7264        /* title */ return this.title == null ? new Base[0] : new Base[] { this.title }; // StringType
7265      case -1724546052:
7266        /* description */ return this.description == null ? new Base[0] : new Base[] { this.description }; // MarkdownType
7267      case 3540684:
7268        /* step */ return this.step == null ? new Base[0] : this.step.toArray(new Base[this.step.size()]); // ExampleScenarioProcessStepComponent
7269      default:
7270        return super.getProperty(hash, name, checkValid);
7271      }
7272
7273    }
7274
7275    @Override
7276    public Base setProperty(int hash, String name, Base value) throws FHIRException {
7277      switch (hash) {
7278      case 110371416: // title
7279        this.title = castToString(value); // StringType
7280        return value;
7281      case -1724546052: // description
7282        this.description = castToMarkdown(value); // MarkdownType
7283        return value;
7284      case 3540684: // step
7285        this.getStep().add((ExampleScenarioProcessStepComponent) value); // ExampleScenarioProcessStepComponent
7286        return value;
7287      default:
7288        return super.setProperty(hash, name, value);
7289      }
7290
7291    }
7292
7293    @Override
7294    public Base setProperty(String name, Base value) throws FHIRException {
7295      if (name.equals("title")) {
7296        this.title = castToString(value); // StringType
7297      } else if (name.equals("description")) {
7298        this.description = castToMarkdown(value); // MarkdownType
7299      } else if (name.equals("step")) {
7300        this.getStep().add((ExampleScenarioProcessStepComponent) value);
7301      } else
7302        return super.setProperty(name, value);
7303      return value;
7304    }
7305
7306  @Override
7307  public void removeChild(String name, Base value) throws FHIRException {
7308      if (name.equals("title")) {
7309        this.title = null;
7310      } else if (name.equals("description")) {
7311        this.description = null;
7312      } else if (name.equals("step")) {
7313        this.getStep().remove((ExampleScenarioProcessStepComponent) value);
7314      } else
7315        super.removeChild(name, value);
7316      
7317    }
7318
7319    @Override
7320    public Base makeProperty(int hash, String name) throws FHIRException {
7321      switch (hash) {
7322      case 110371416:
7323        return getTitleElement();
7324      case -1724546052:
7325        return getDescriptionElement();
7326      case 3540684:
7327        return addStep();
7328      default:
7329        return super.makeProperty(hash, name);
7330      }
7331
7332    }
7333
7334    @Override
7335    public String[] getTypesForProperty(int hash, String name) throws FHIRException {
7336      switch (hash) {
7337      case 110371416:
7338        /* title */ return new String[] { "string" };
7339      case -1724546052:
7340        /* description */ return new String[] { "markdown" };
7341      case 3540684:
7342        /* step */ return new String[] { "@ExampleScenario.process.step" };
7343      default:
7344        return super.getTypesForProperty(hash, name);
7345      }
7346
7347    }
7348
7349    @Override
7350    public Base addChild(String name) throws FHIRException {
7351      if (name.equals("title")) {
7352        throw new FHIRException("Cannot call addChild on a singleton property ExampleScenario.title");
7353      } else if (name.equals("description")) {
7354        throw new FHIRException("Cannot call addChild on a singleton property ExampleScenario.description");
7355      } else if (name.equals("step")) {
7356        return addStep();
7357      } else
7358        return super.addChild(name);
7359    }
7360
7361    public ExampleScenarioProcessStepAlternativeComponent copy() {
7362      ExampleScenarioProcessStepAlternativeComponent dst = new ExampleScenarioProcessStepAlternativeComponent();
7363      copyValues(dst);
7364      return dst;
7365    }
7366
7367    public void copyValues(ExampleScenarioProcessStepAlternativeComponent dst) {
7368      super.copyValues(dst);
7369      dst.title = title == null ? null : title.copy();
7370      dst.description = description == null ? null : description.copy();
7371      if (step != null) {
7372        dst.step = new ArrayList<ExampleScenarioProcessStepComponent>();
7373        for (ExampleScenarioProcessStepComponent i : step)
7374          dst.step.add(i.copy());
7375      }
7376      ;
7377    }
7378
7379    @Override
7380    public boolean equalsDeep(Base other_) {
7381      if (!super.equalsDeep(other_))
7382        return false;
7383      if (!(other_ instanceof ExampleScenarioProcessStepAlternativeComponent))
7384        return false;
7385      ExampleScenarioProcessStepAlternativeComponent o = (ExampleScenarioProcessStepAlternativeComponent) other_;
7386      return compareDeep(title, o.title, true) && compareDeep(description, o.description, true)
7387          && compareDeep(step, o.step, true);
7388    }
7389
7390    @Override
7391    public boolean equalsShallow(Base other_) {
7392      if (!super.equalsShallow(other_))
7393        return false;
7394      if (!(other_ instanceof ExampleScenarioProcessStepAlternativeComponent))
7395        return false;
7396      ExampleScenarioProcessStepAlternativeComponent o = (ExampleScenarioProcessStepAlternativeComponent) other_;
7397      return compareValues(title, o.title, true) && compareValues(description, o.description, true);
7398    }
7399
7400    public boolean isEmpty() {
7401      return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(title, description, step);
7402    }
7403
7404    public String fhirType() {
7405      return "ExampleScenario.process.step.alternative";
7406
7407    }
7408
7409  }
7410
7411  /**
7412   * A formal identifier that is used to identify this example scenario when it is
7413   * represented in other formats, or referenced in a specification, model, design
7414   * or an instance.
7415   */
7416  @Child(name = "identifier", type = {
7417      Identifier.class }, order = 0, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = true)
7418  @Description(shortDefinition = "Additional identifier for the example scenario", formalDefinition = "A formal identifier that is used to identify this example scenario when it is represented in other formats, or referenced in a specification, model, design or an instance.")
7419  protected List<Identifier> identifier;
7420
7421  /**
7422   * A copyright statement relating to the example scenario and/or its contents.
7423   * Copyright statements are generally legal restrictions on the use and
7424   * publishing of the example scenario.
7425   */
7426  @Child(name = "copyright", type = {
7427      MarkdownType.class }, order = 1, min = 0, max = 1, modifier = false, summary = false)
7428  @Description(shortDefinition = "Use and/or publishing restrictions", formalDefinition = "A copyright statement relating to the example scenario and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the example scenario.")
7429  protected MarkdownType copyright;
7430
7431  /**
7432   * What the example scenario resource is created for. This should not be used to
7433   * show the business purpose of the scenario itself, but the purpose of
7434   * documenting a scenario.
7435   */
7436  @Child(name = "purpose", type = {
7437      MarkdownType.class }, order = 2, min = 0, max = 1, modifier = false, summary = false)
7438  @Description(shortDefinition = "The purpose of the example, e.g. to illustrate a scenario", formalDefinition = "What the example scenario resource is created for. This should not be used to show the business purpose of the scenario itself, but the purpose of documenting a scenario.")
7439  protected MarkdownType purpose;
7440
7441  /**
7442   * Actor participating in the resource.
7443   */
7444  @Child(name = "actor", type = {}, order = 3, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = false)
7445  @Description(shortDefinition = "Actor participating in the resource", formalDefinition = "Actor participating in the resource.")
7446  protected List<ExampleScenarioActorComponent> actor;
7447
7448  /**
7449   * Each resource and each version that is present in the workflow.
7450   */
7451  @Child(name = "instance", type = {}, order = 4, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = false)
7452  @Description(shortDefinition = "Each resource and each version that is present in the workflow", formalDefinition = "Each resource and each version that is present in the workflow.")
7453  protected List<ExampleScenarioInstanceComponent> instance;
7454
7455  /**
7456   * Each major process - a group of operations.
7457   */
7458  @Child(name = "process", type = {}, order = 5, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = false)
7459  @Description(shortDefinition = "Each major process - a group of operations", formalDefinition = "Each major process - a group of operations.")
7460  protected List<ExampleScenarioProcessComponent> process;
7461
7462  /**
7463   * Another nested workflow.
7464   */
7465  @Child(name = "workflow", type = {
7466      CanonicalType.class }, order = 6, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = false)
7467  @Description(shortDefinition = "Another nested workflow", formalDefinition = "Another nested workflow.")
7468  protected List<CanonicalType> workflow;
7469
7470  private static final long serialVersionUID = 758248907L;
7471
7472  /**
7473   * Constructor
7474   */
7475  public ExampleScenario() {
7476    super();
7477  }
7478
7479  /**
7480   * Constructor
7481   */
7482  public ExampleScenario(Enumeration<PublicationStatus> status) {
7483    super();
7484    this.status = status;
7485  }
7486
7487  /**
7488   * @return {@link #url} (An absolute URI that is used to identify this example
7489   *         scenario when it is referenced in a specification, model, design or
7490   *         an instance; also called its canonical identifier. This SHOULD be
7491   *         globally unique and SHOULD be a literal address at which at which an
7492   *         authoritative instance of this example scenario is (or will be)
7493   *         published. This URL can be the target of a canonical reference. It
7494   *         SHALL remain the same when the example scenario is stored on
7495   *         different servers.). This is the underlying object with id, value and
7496   *         extensions. The accessor "getUrl" gives direct access to the value
7497   */
7498  public UriType getUrlElement() {
7499    if (this.url == null)
7500      if (Configuration.errorOnAutoCreate())
7501        throw new Error("Attempt to auto-create ExampleScenario.url");
7502      else if (Configuration.doAutoCreate())
7503        this.url = new UriType(); // bb
7504    return this.url;
7505  }
7506
7507  public boolean hasUrlElement() {
7508    return this.url != null && !this.url.isEmpty();
7509  }
7510
7511  public boolean hasUrl() {
7512    return this.url != null && !this.url.isEmpty();
7513  }
7514
7515  /**
7516   * @param value {@link #url} (An absolute URI that is used to identify this
7517   *              example scenario when it is referenced in a specification,
7518   *              model, design or an instance; also called its canonical
7519   *              identifier. This SHOULD be globally unique and SHOULD be a
7520   *              literal address at which at which an authoritative instance of
7521   *              this example scenario is (or will be) published. This URL can be
7522   *              the target of a canonical reference. It SHALL remain the same
7523   *              when the example scenario is stored on different servers.). This
7524   *              is the underlying object with id, value and extensions. The
7525   *              accessor "getUrl" gives direct access to the value
7526   */
7527  public ExampleScenario setUrlElement(UriType value) {
7528    this.url = value;
7529    return this;
7530  }
7531
7532  /**
7533   * @return An absolute URI that is used to identify this example scenario when
7534   *         it is referenced in a specification, model, design or an instance;
7535   *         also called its canonical identifier. This SHOULD be globally unique
7536   *         and SHOULD be a literal address at which at which an authoritative
7537   *         instance of this example scenario is (or will be) published. This URL
7538   *         can be the target of a canonical reference. It SHALL remain the same
7539   *         when the example scenario is stored on different servers.
7540   */
7541  public String getUrl() {
7542    return this.url == null ? null : this.url.getValue();
7543  }
7544
7545  /**
7546   * @param value An absolute URI that is used to identify this example scenario
7547   *              when it is referenced in a specification, model, design or an
7548   *              instance; also called its canonical identifier. This SHOULD be
7549   *              globally unique and SHOULD be a literal address at which at
7550   *              which an authoritative instance of this example scenario is (or
7551   *              will be) published. This URL can be the target of a canonical
7552   *              reference. It SHALL remain the same when the example scenario is
7553   *              stored on different servers.
7554   */
7555  public ExampleScenario setUrl(String value) {
7556    if (Utilities.noString(value))
7557      this.url = null;
7558    else {
7559      if (this.url == null)
7560        this.url = new UriType();
7561      this.url.setValue(value);
7562    }
7563    return this;
7564  }
7565
7566  /**
7567   * @return {@link #identifier} (A formal identifier that is used to identify
7568   *         this example scenario when it is represented in other formats, or
7569   *         referenced in a specification, model, design or an instance.)
7570   */
7571  public List<Identifier> getIdentifier() {
7572    if (this.identifier == null)
7573      this.identifier = new ArrayList<Identifier>();
7574    return this.identifier;
7575  }
7576
7577  /**
7578   * @return Returns a reference to <code>this</code> for easy method chaining
7579   */
7580  public ExampleScenario setIdentifier(List<Identifier> theIdentifier) {
7581    this.identifier = theIdentifier;
7582    return this;
7583  }
7584
7585  public boolean hasIdentifier() {
7586    if (this.identifier == null)
7587      return false;
7588    for (Identifier item : this.identifier)
7589      if (!item.isEmpty())
7590        return true;
7591    return false;
7592  }
7593
7594  public Identifier addIdentifier() { // 3
7595    Identifier t = new Identifier();
7596    if (this.identifier == null)
7597      this.identifier = new ArrayList<Identifier>();
7598    this.identifier.add(t);
7599    return t;
7600  }
7601
7602  public ExampleScenario addIdentifier(Identifier t) { // 3
7603    if (t == null)
7604      return this;
7605    if (this.identifier == null)
7606      this.identifier = new ArrayList<Identifier>();
7607    this.identifier.add(t);
7608    return this;
7609  }
7610
7611  /**
7612   * @return The first repetition of repeating field {@link #identifier}, creating
7613   *         it if it does not already exist
7614   */
7615  public Identifier getIdentifierFirstRep() {
7616    if (getIdentifier().isEmpty()) {
7617      addIdentifier();
7618    }
7619    return getIdentifier().get(0);
7620  }
7621
7622  /**
7623   * @return {@link #version} (The identifier that is used to identify this
7624   *         version of the example scenario when it is referenced in a
7625   *         specification, model, design or instance. This is an arbitrary value
7626   *         managed by the example scenario author and is not expected to be
7627   *         globally unique. For example, it might be a timestamp (e.g. yyyymmdd)
7628   *         if a managed version is not available. There is also no expectation
7629   *         that versions can be placed in a lexicographical sequence.). This is
7630   *         the underlying object with id, value and extensions. The accessor
7631   *         "getVersion" gives direct access to the value
7632   */
7633  public StringType getVersionElement() {
7634    if (this.version == null)
7635      if (Configuration.errorOnAutoCreate())
7636        throw new Error("Attempt to auto-create ExampleScenario.version");
7637      else if (Configuration.doAutoCreate())
7638        this.version = new StringType(); // bb
7639    return this.version;
7640  }
7641
7642  public boolean hasVersionElement() {
7643    return this.version != null && !this.version.isEmpty();
7644  }
7645
7646  public boolean hasVersion() {
7647    return this.version != null && !this.version.isEmpty();
7648  }
7649
7650  /**
7651   * @param value {@link #version} (The identifier that is used to identify this
7652   *              version of the example scenario when it is referenced in a
7653   *              specification, model, design or instance. This is an arbitrary
7654   *              value managed by the example scenario author and is not expected
7655   *              to be globally unique. For example, it might be a timestamp
7656   *              (e.g. yyyymmdd) if a managed version is not available. There is
7657   *              also no expectation that versions can be placed in a
7658   *              lexicographical sequence.). This is the underlying object with
7659   *              id, value and extensions. The accessor "getVersion" gives direct
7660   *              access to the value
7661   */
7662  public ExampleScenario setVersionElement(StringType value) {
7663    this.version = value;
7664    return this;
7665  }
7666
7667  /**
7668   * @return The identifier that is used to identify this version of the example
7669   *         scenario when it is referenced in a specification, model, design or
7670   *         instance. This is an arbitrary value managed by the example scenario
7671   *         author and is not expected to be globally unique. For example, it
7672   *         might be a timestamp (e.g. yyyymmdd) if a managed version is not
7673   *         available. There is also no expectation that versions can be placed
7674   *         in a lexicographical sequence.
7675   */
7676  public String getVersion() {
7677    return this.version == null ? null : this.version.getValue();
7678  }
7679
7680  /**
7681   * @param value The identifier that is used to identify this version of the
7682   *              example scenario when it is referenced in a specification,
7683   *              model, design or instance. This is an arbitrary value managed by
7684   *              the example scenario author and is not expected to be globally
7685   *              unique. For example, it might be a timestamp (e.g. yyyymmdd) if
7686   *              a managed version is not available. There is also no expectation
7687   *              that versions can be placed in a lexicographical sequence.
7688   */
7689  public ExampleScenario setVersion(String value) {
7690    if (Utilities.noString(value))
7691      this.version = null;
7692    else {
7693      if (this.version == null)
7694        this.version = new StringType();
7695      this.version.setValue(value);
7696    }
7697    return this;
7698  }
7699
7700  /**
7701   * @return {@link #name} (A natural language name identifying the example
7702   *         scenario. This name should be usable as an identifier for the module
7703   *         by machine processing applications such as code generation.). This is
7704   *         the underlying object with id, value and extensions. The accessor
7705   *         "getName" gives direct access to the value
7706   */
7707  public StringType getNameElement() {
7708    if (this.name == null)
7709      if (Configuration.errorOnAutoCreate())
7710        throw new Error("Attempt to auto-create ExampleScenario.name");
7711      else if (Configuration.doAutoCreate())
7712        this.name = new StringType(); // bb
7713    return this.name;
7714  }
7715
7716  public boolean hasNameElement() {
7717    return this.name != null && !this.name.isEmpty();
7718  }
7719
7720  public boolean hasName() {
7721    return this.name != null && !this.name.isEmpty();
7722  }
7723
7724  /**
7725   * @param value {@link #name} (A natural language name identifying the example
7726   *              scenario. This name should be usable as an identifier for the
7727   *              module by machine processing applications such as code
7728   *              generation.). This is the underlying object with id, value and
7729   *              extensions. The accessor "getName" gives direct access to the
7730   *              value
7731   */
7732  public ExampleScenario setNameElement(StringType value) {
7733    this.name = value;
7734    return this;
7735  }
7736
7737  /**
7738   * @return A natural language name identifying the example scenario. This name
7739   *         should be usable as an identifier for the module by machine
7740   *         processing applications such as code generation.
7741   */
7742  public String getName() {
7743    return this.name == null ? null : this.name.getValue();
7744  }
7745
7746  /**
7747   * @param value A natural language name identifying the example scenario. This
7748   *              name should be usable as an identifier for the module by machine
7749   *              processing applications such as code generation.
7750   */
7751  public ExampleScenario setName(String value) {
7752    if (Utilities.noString(value))
7753      this.name = null;
7754    else {
7755      if (this.name == null)
7756        this.name = new StringType();
7757      this.name.setValue(value);
7758    }
7759    return this;
7760  }
7761
7762  /**
7763   * @return {@link #status} (The status of this example scenario. Enables
7764   *         tracking the life-cycle of the content.). This is the underlying
7765   *         object with id, value and extensions. The accessor "getStatus" gives
7766   *         direct access to the value
7767   */
7768  public Enumeration<PublicationStatus> getStatusElement() {
7769    if (this.status == null)
7770      if (Configuration.errorOnAutoCreate())
7771        throw new Error("Attempt to auto-create ExampleScenario.status");
7772      else if (Configuration.doAutoCreate())
7773        this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory()); // bb
7774    return this.status;
7775  }
7776
7777  public boolean hasStatusElement() {
7778    return this.status != null && !this.status.isEmpty();
7779  }
7780
7781  public boolean hasStatus() {
7782    return this.status != null && !this.status.isEmpty();
7783  }
7784
7785  /**
7786   * @param value {@link #status} (The status of this example scenario. Enables
7787   *              tracking the life-cycle of the content.). This is the underlying
7788   *              object with id, value and extensions. The accessor "getStatus"
7789   *              gives direct access to the value
7790   */
7791  public ExampleScenario setStatusElement(Enumeration<PublicationStatus> value) {
7792    this.status = value;
7793    return this;
7794  }
7795
7796  /**
7797   * @return The status of this example scenario. Enables tracking the life-cycle
7798   *         of the content.
7799   */
7800  public PublicationStatus getStatus() {
7801    return this.status == null ? null : this.status.getValue();
7802  }
7803
7804  /**
7805   * @param value The status of this example scenario. Enables tracking the
7806   *              life-cycle of the content.
7807   */
7808  public ExampleScenario setStatus(PublicationStatus value) {
7809    if (this.status == null)
7810      this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory());
7811    this.status.setValue(value);
7812    return this;
7813  }
7814
7815  /**
7816   * @return {@link #experimental} (A Boolean value to indicate that this example
7817   *         scenario is authored for testing purposes (or
7818   *         education/evaluation/marketing) and is not intended to be used for
7819   *         genuine usage.). This is the underlying object with id, value and
7820   *         extensions. The accessor "getExperimental" gives direct access to the
7821   *         value
7822   */
7823  public BooleanType getExperimentalElement() {
7824    if (this.experimental == null)
7825      if (Configuration.errorOnAutoCreate())
7826        throw new Error("Attempt to auto-create ExampleScenario.experimental");
7827      else if (Configuration.doAutoCreate())
7828        this.experimental = new BooleanType(); // bb
7829    return this.experimental;
7830  }
7831
7832  public boolean hasExperimentalElement() {
7833    return this.experimental != null && !this.experimental.isEmpty();
7834  }
7835
7836  public boolean hasExperimental() {
7837    return this.experimental != null && !this.experimental.isEmpty();
7838  }
7839
7840  /**
7841   * @param value {@link #experimental} (A Boolean value to indicate that this
7842   *              example scenario is authored for testing purposes (or
7843   *              education/evaluation/marketing) and is not intended to be used
7844   *              for genuine usage.). This is the underlying object with id,
7845   *              value and extensions. The accessor "getExperimental" gives
7846   *              direct access to the value
7847   */
7848  public ExampleScenario setExperimentalElement(BooleanType value) {
7849    this.experimental = value;
7850    return this;
7851  }
7852
7853  /**
7854   * @return A Boolean value to indicate that this example scenario is authored
7855   *         for testing purposes (or education/evaluation/marketing) and is not
7856   *         intended to be used for genuine usage.
7857   */
7858  public boolean getExperimental() {
7859    return this.experimental == null || this.experimental.isEmpty() ? false : this.experimental.getValue();
7860  }
7861
7862  /**
7863   * @param value A Boolean value to indicate that this example scenario is
7864   *              authored for testing purposes (or
7865   *              education/evaluation/marketing) and is not intended to be used
7866   *              for genuine usage.
7867   */
7868  public ExampleScenario setExperimental(boolean value) {
7869    if (this.experimental == null)
7870      this.experimental = new BooleanType();
7871    this.experimental.setValue(value);
7872    return this;
7873  }
7874
7875  /**
7876   * @return {@link #date} (The date (and optionally time) when the example
7877   *         scenario was published. The date must change when the business
7878   *         version changes and it must change if the status code changes. In
7879   *         addition, it should change when the substantive content of the
7880   *         example scenario changes. (e.g. the 'content logical definition').).
7881   *         This is the underlying object with id, value and extensions. The
7882   *         accessor "getDate" gives direct access to the value
7883   */
7884  public DateTimeType getDateElement() {
7885    if (this.date == null)
7886      if (Configuration.errorOnAutoCreate())
7887        throw new Error("Attempt to auto-create ExampleScenario.date");
7888      else if (Configuration.doAutoCreate())
7889        this.date = new DateTimeType(); // bb
7890    return this.date;
7891  }
7892
7893  public boolean hasDateElement() {
7894    return this.date != null && !this.date.isEmpty();
7895  }
7896
7897  public boolean hasDate() {
7898    return this.date != null && !this.date.isEmpty();
7899  }
7900
7901  /**
7902   * @param value {@link #date} (The date (and optionally time) when the example
7903   *              scenario was published. The date must change when the business
7904   *              version changes and it must change if the status code changes.
7905   *              In addition, it should change when the substantive content of
7906   *              the example scenario changes. (e.g. the 'content logical
7907   *              definition').). This is the underlying object with id, value and
7908   *              extensions. The accessor "getDate" gives direct access to the
7909   *              value
7910   */
7911  public ExampleScenario setDateElement(DateTimeType value) {
7912    this.date = value;
7913    return this;
7914  }
7915
7916  /**
7917   * @return The date (and optionally time) when the example scenario was
7918   *         published. The date must change when the business version changes and
7919   *         it must change if the status code changes. In addition, it should
7920   *         change when the substantive content of the example scenario changes.
7921   *         (e.g. the 'content logical definition').
7922   */
7923  public Date getDate() {
7924    return this.date == null ? null : this.date.getValue();
7925  }
7926
7927  /**
7928   * @param value The date (and optionally time) when the example scenario was
7929   *              published. The date must change when the business version
7930   *              changes and it must change if the status code changes. In
7931   *              addition, it should change when the substantive content of the
7932   *              example scenario changes. (e.g. the 'content logical
7933   *              definition').
7934   */
7935  public ExampleScenario setDate(Date value) {
7936    if (value == null)
7937      this.date = null;
7938    else {
7939      if (this.date == null)
7940        this.date = new DateTimeType();
7941      this.date.setValue(value);
7942    }
7943    return this;
7944  }
7945
7946  /**
7947   * @return {@link #publisher} (The name of the organization or individual that
7948   *         published the example scenario.). This is the underlying object with
7949   *         id, value and extensions. The accessor "getPublisher" gives direct
7950   *         access to the value
7951   */
7952  public StringType getPublisherElement() {
7953    if (this.publisher == null)
7954      if (Configuration.errorOnAutoCreate())
7955        throw new Error("Attempt to auto-create ExampleScenario.publisher");
7956      else if (Configuration.doAutoCreate())
7957        this.publisher = new StringType(); // bb
7958    return this.publisher;
7959  }
7960
7961  public boolean hasPublisherElement() {
7962    return this.publisher != null && !this.publisher.isEmpty();
7963  }
7964
7965  public boolean hasPublisher() {
7966    return this.publisher != null && !this.publisher.isEmpty();
7967  }
7968
7969  /**
7970   * @param value {@link #publisher} (The name of the organization or individual
7971   *              that published the example scenario.). This is the underlying
7972   *              object with id, value and extensions. The accessor
7973   *              "getPublisher" gives direct access to the value
7974   */
7975  public ExampleScenario setPublisherElement(StringType value) {
7976    this.publisher = value;
7977    return this;
7978  }
7979
7980  /**
7981   * @return The name of the organization or individual that published the example
7982   *         scenario.
7983   */
7984  public String getPublisher() {
7985    return this.publisher == null ? null : this.publisher.getValue();
7986  }
7987
7988  /**
7989   * @param value The name of the organization or individual that published the
7990   *              example scenario.
7991   */
7992  public ExampleScenario setPublisher(String value) {
7993    if (Utilities.noString(value))
7994      this.publisher = null;
7995    else {
7996      if (this.publisher == null)
7997        this.publisher = new StringType();
7998      this.publisher.setValue(value);
7999    }
8000    return this;
8001  }
8002
8003  /**
8004   * @return {@link #contact} (Contact details to assist a user in finding and
8005   *         communicating with the publisher.)
8006   */
8007  public List<ContactDetail> getContact() {
8008    if (this.contact == null)
8009      this.contact = new ArrayList<ContactDetail>();
8010    return this.contact;
8011  }
8012
8013  /**
8014   * @return Returns a reference to <code>this</code> for easy method chaining
8015   */
8016  public ExampleScenario setContact(List<ContactDetail> theContact) {
8017    this.contact = theContact;
8018    return this;
8019  }
8020
8021  public boolean hasContact() {
8022    if (this.contact == null)
8023      return false;
8024    for (ContactDetail item : this.contact)
8025      if (!item.isEmpty())
8026        return true;
8027    return false;
8028  }
8029
8030  public ContactDetail addContact() { // 3
8031    ContactDetail t = new ContactDetail();
8032    if (this.contact == null)
8033      this.contact = new ArrayList<ContactDetail>();
8034    this.contact.add(t);
8035    return t;
8036  }
8037
8038  public ExampleScenario addContact(ContactDetail t) { // 3
8039    if (t == null)
8040      return this;
8041    if (this.contact == null)
8042      this.contact = new ArrayList<ContactDetail>();
8043    this.contact.add(t);
8044    return this;
8045  }
8046
8047  /**
8048   * @return The first repetition of repeating field {@link #contact}, creating it
8049   *         if it does not already exist
8050   */
8051  public ContactDetail getContactFirstRep() {
8052    if (getContact().isEmpty()) {
8053      addContact();
8054    }
8055    return getContact().get(0);
8056  }
8057
8058  /**
8059   * @return {@link #useContext} (The content was developed with a focus and
8060   *         intent of supporting the contexts that are listed. These contexts may
8061   *         be general categories (gender, age, ...) or may be references to
8062   *         specific programs (insurance plans, studies, ...) and may be used to
8063   *         assist with indexing and searching for appropriate example scenario
8064   *         instances.)
8065   */
8066  public List<UsageContext> getUseContext() {
8067    if (this.useContext == null)
8068      this.useContext = new ArrayList<UsageContext>();
8069    return this.useContext;
8070  }
8071
8072  /**
8073   * @return Returns a reference to <code>this</code> for easy method chaining
8074   */
8075  public ExampleScenario setUseContext(List<UsageContext> theUseContext) {
8076    this.useContext = theUseContext;
8077    return this;
8078  }
8079
8080  public boolean hasUseContext() {
8081    if (this.useContext == null)
8082      return false;
8083    for (UsageContext item : this.useContext)
8084      if (!item.isEmpty())
8085        return true;
8086    return false;
8087  }
8088
8089  public UsageContext addUseContext() { // 3
8090    UsageContext t = new UsageContext();
8091    if (this.useContext == null)
8092      this.useContext = new ArrayList<UsageContext>();
8093    this.useContext.add(t);
8094    return t;
8095  }
8096
8097  public ExampleScenario addUseContext(UsageContext t) { // 3
8098    if (t == null)
8099      return this;
8100    if (this.useContext == null)
8101      this.useContext = new ArrayList<UsageContext>();
8102    this.useContext.add(t);
8103    return this;
8104  }
8105
8106  /**
8107   * @return The first repetition of repeating field {@link #useContext}, creating
8108   *         it if it does not already exist
8109   */
8110  public UsageContext getUseContextFirstRep() {
8111    if (getUseContext().isEmpty()) {
8112      addUseContext();
8113    }
8114    return getUseContext().get(0);
8115  }
8116
8117  /**
8118   * @return {@link #jurisdiction} (A legal or geographic region in which the
8119   *         example scenario is intended to be used.)
8120   */
8121  public List<CodeableConcept> getJurisdiction() {
8122    if (this.jurisdiction == null)
8123      this.jurisdiction = new ArrayList<CodeableConcept>();
8124    return this.jurisdiction;
8125  }
8126
8127  /**
8128   * @return Returns a reference to <code>this</code> for easy method chaining
8129   */
8130  public ExampleScenario setJurisdiction(List<CodeableConcept> theJurisdiction) {
8131    this.jurisdiction = theJurisdiction;
8132    return this;
8133  }
8134
8135  public boolean hasJurisdiction() {
8136    if (this.jurisdiction == null)
8137      return false;
8138    for (CodeableConcept item : this.jurisdiction)
8139      if (!item.isEmpty())
8140        return true;
8141    return false;
8142  }
8143
8144  public CodeableConcept addJurisdiction() { // 3
8145    CodeableConcept t = new CodeableConcept();
8146    if (this.jurisdiction == null)
8147      this.jurisdiction = new ArrayList<CodeableConcept>();
8148    this.jurisdiction.add(t);
8149    return t;
8150  }
8151
8152  public ExampleScenario addJurisdiction(CodeableConcept t) { // 3
8153    if (t == null)
8154      return this;
8155    if (this.jurisdiction == null)
8156      this.jurisdiction = new ArrayList<CodeableConcept>();
8157    this.jurisdiction.add(t);
8158    return this;
8159  }
8160
8161  /**
8162   * @return The first repetition of repeating field {@link #jurisdiction},
8163   *         creating it if it does not already exist
8164   */
8165  public CodeableConcept getJurisdictionFirstRep() {
8166    if (getJurisdiction().isEmpty()) {
8167      addJurisdiction();
8168    }
8169    return getJurisdiction().get(0);
8170  }
8171
8172  /**
8173   * @return {@link #copyright} (A copyright statement relating to the example
8174   *         scenario and/or its contents. Copyright statements are generally
8175   *         legal restrictions on the use and publishing of the example
8176   *         scenario.). This is the underlying object with id, value and
8177   *         extensions. The accessor "getCopyright" gives direct access to the
8178   *         value
8179   */
8180  public MarkdownType getCopyrightElement() {
8181    if (this.copyright == null)
8182      if (Configuration.errorOnAutoCreate())
8183        throw new Error("Attempt to auto-create ExampleScenario.copyright");
8184      else if (Configuration.doAutoCreate())
8185        this.copyright = new MarkdownType(); // bb
8186    return this.copyright;
8187  }
8188
8189  public boolean hasCopyrightElement() {
8190    return this.copyright != null && !this.copyright.isEmpty();
8191  }
8192
8193  public boolean hasCopyright() {
8194    return this.copyright != null && !this.copyright.isEmpty();
8195  }
8196
8197  /**
8198   * @param value {@link #copyright} (A copyright statement relating to the
8199   *              example scenario and/or its contents. Copyright statements are
8200   *              generally legal restrictions on the use and publishing of the
8201   *              example scenario.). This is the underlying object with id, value
8202   *              and extensions. The accessor "getCopyright" gives direct access
8203   *              to the value
8204   */
8205  public ExampleScenario setCopyrightElement(MarkdownType value) {
8206    this.copyright = value;
8207    return this;
8208  }
8209
8210  /**
8211   * @return A copyright statement relating to the example scenario and/or its
8212   *         contents. Copyright statements are generally legal restrictions on
8213   *         the use and publishing of the example scenario.
8214   */
8215  public String getCopyright() {
8216    return this.copyright == null ? null : this.copyright.getValue();
8217  }
8218
8219  /**
8220   * @param value A copyright statement relating to the example scenario and/or
8221   *              its contents. Copyright statements are generally legal
8222   *              restrictions on the use and publishing of the example scenario.
8223   */
8224  public ExampleScenario setCopyright(String value) {
8225    if (value == null)
8226      this.copyright = null;
8227    else {
8228      if (this.copyright == null)
8229        this.copyright = new MarkdownType();
8230      this.copyright.setValue(value);
8231    }
8232    return this;
8233  }
8234
8235  /**
8236   * @return {@link #purpose} (What the example scenario resource is created for.
8237   *         This should not be used to show the business purpose of the scenario
8238   *         itself, but the purpose of documenting a scenario.). This is the
8239   *         underlying object with id, value and extensions. The accessor
8240   *         "getPurpose" gives direct access to the value
8241   */
8242  public MarkdownType getPurposeElement() {
8243    if (this.purpose == null)
8244      if (Configuration.errorOnAutoCreate())
8245        throw new Error("Attempt to auto-create ExampleScenario.purpose");
8246      else if (Configuration.doAutoCreate())
8247        this.purpose = new MarkdownType(); // bb
8248    return this.purpose;
8249  }
8250
8251  public boolean hasPurposeElement() {
8252    return this.purpose != null && !this.purpose.isEmpty();
8253  }
8254
8255  public boolean hasPurpose() {
8256    return this.purpose != null && !this.purpose.isEmpty();
8257  }
8258
8259  /**
8260   * @param value {@link #purpose} (What the example scenario resource is created
8261   *              for. This should not be used to show the business purpose of the
8262   *              scenario itself, but the purpose of documenting a scenario.).
8263   *              This is the underlying object with id, value and extensions. The
8264   *              accessor "getPurpose" gives direct access to the value
8265   */
8266  public ExampleScenario setPurposeElement(MarkdownType value) {
8267    this.purpose = value;
8268    return this;
8269  }
8270
8271  /**
8272   * @return What the example scenario resource is created for. This should not be
8273   *         used to show the business purpose of the scenario itself, but the
8274   *         purpose of documenting a scenario.
8275   */
8276  public String getPurpose() {
8277    return this.purpose == null ? null : this.purpose.getValue();
8278  }
8279
8280  /**
8281   * @param value What the example scenario resource is created for. This should
8282   *              not be used to show the business purpose of the scenario itself,
8283   *              but the purpose of documenting a scenario.
8284   */
8285  public ExampleScenario setPurpose(String value) {
8286    if (value == null)
8287      this.purpose = null;
8288    else {
8289      if (this.purpose == null)
8290        this.purpose = new MarkdownType();
8291      this.purpose.setValue(value);
8292    }
8293    return this;
8294  }
8295
8296  /**
8297   * @return {@link #actor} (Actor participating in the resource.)
8298   */
8299  public List<ExampleScenarioActorComponent> getActor() {
8300    if (this.actor == null)
8301      this.actor = new ArrayList<ExampleScenarioActorComponent>();
8302    return this.actor;
8303  }
8304
8305  /**
8306   * @return Returns a reference to <code>this</code> for easy method chaining
8307   */
8308  public ExampleScenario setActor(List<ExampleScenarioActorComponent> theActor) {
8309    this.actor = theActor;
8310    return this;
8311  }
8312
8313  public boolean hasActor() {
8314    if (this.actor == null)
8315      return false;
8316    for (ExampleScenarioActorComponent item : this.actor)
8317      if (!item.isEmpty())
8318        return true;
8319    return false;
8320  }
8321
8322  public ExampleScenarioActorComponent addActor() { // 3
8323    ExampleScenarioActorComponent t = new ExampleScenarioActorComponent();
8324    if (this.actor == null)
8325      this.actor = new ArrayList<ExampleScenarioActorComponent>();
8326    this.actor.add(t);
8327    return t;
8328  }
8329
8330  public ExampleScenario addActor(ExampleScenarioActorComponent t) { // 3
8331    if (t == null)
8332      return this;
8333    if (this.actor == null)
8334      this.actor = new ArrayList<ExampleScenarioActorComponent>();
8335    this.actor.add(t);
8336    return this;
8337  }
8338
8339  /**
8340   * @return The first repetition of repeating field {@link #actor}, creating it
8341   *         if it does not already exist
8342   */
8343  public ExampleScenarioActorComponent getActorFirstRep() {
8344    if (getActor().isEmpty()) {
8345      addActor();
8346    }
8347    return getActor().get(0);
8348  }
8349
8350  /**
8351   * @return {@link #instance} (Each resource and each version that is present in
8352   *         the workflow.)
8353   */
8354  public List<ExampleScenarioInstanceComponent> getInstance() {
8355    if (this.instance == null)
8356      this.instance = new ArrayList<ExampleScenarioInstanceComponent>();
8357    return this.instance;
8358  }
8359
8360  /**
8361   * @return Returns a reference to <code>this</code> for easy method chaining
8362   */
8363  public ExampleScenario setInstance(List<ExampleScenarioInstanceComponent> theInstance) {
8364    this.instance = theInstance;
8365    return this;
8366  }
8367
8368  public boolean hasInstance() {
8369    if (this.instance == null)
8370      return false;
8371    for (ExampleScenarioInstanceComponent item : this.instance)
8372      if (!item.isEmpty())
8373        return true;
8374    return false;
8375  }
8376
8377  public ExampleScenarioInstanceComponent addInstance() { // 3
8378    ExampleScenarioInstanceComponent t = new ExampleScenarioInstanceComponent();
8379    if (this.instance == null)
8380      this.instance = new ArrayList<ExampleScenarioInstanceComponent>();
8381    this.instance.add(t);
8382    return t;
8383  }
8384
8385  public ExampleScenario addInstance(ExampleScenarioInstanceComponent t) { // 3
8386    if (t == null)
8387      return this;
8388    if (this.instance == null)
8389      this.instance = new ArrayList<ExampleScenarioInstanceComponent>();
8390    this.instance.add(t);
8391    return this;
8392  }
8393
8394  /**
8395   * @return The first repetition of repeating field {@link #instance}, creating
8396   *         it if it does not already exist
8397   */
8398  public ExampleScenarioInstanceComponent getInstanceFirstRep() {
8399    if (getInstance().isEmpty()) {
8400      addInstance();
8401    }
8402    return getInstance().get(0);
8403  }
8404
8405  /**
8406   * @return {@link #process} (Each major process - a group of operations.)
8407   */
8408  public List<ExampleScenarioProcessComponent> getProcess() {
8409    if (this.process == null)
8410      this.process = new ArrayList<ExampleScenarioProcessComponent>();
8411    return this.process;
8412  }
8413
8414  /**
8415   * @return Returns a reference to <code>this</code> for easy method chaining
8416   */
8417  public ExampleScenario setProcess(List<ExampleScenarioProcessComponent> theProcess) {
8418    this.process = theProcess;
8419    return this;
8420  }
8421
8422  public boolean hasProcess() {
8423    if (this.process == null)
8424      return false;
8425    for (ExampleScenarioProcessComponent item : this.process)
8426      if (!item.isEmpty())
8427        return true;
8428    return false;
8429  }
8430
8431  public ExampleScenarioProcessComponent addProcess() { // 3
8432    ExampleScenarioProcessComponent t = new ExampleScenarioProcessComponent();
8433    if (this.process == null)
8434      this.process = new ArrayList<ExampleScenarioProcessComponent>();
8435    this.process.add(t);
8436    return t;
8437  }
8438
8439  public ExampleScenario addProcess(ExampleScenarioProcessComponent t) { // 3
8440    if (t == null)
8441      return this;
8442    if (this.process == null)
8443      this.process = new ArrayList<ExampleScenarioProcessComponent>();
8444    this.process.add(t);
8445    return this;
8446  }
8447
8448  /**
8449   * @return The first repetition of repeating field {@link #process}, creating it
8450   *         if it does not already exist
8451   */
8452  public ExampleScenarioProcessComponent getProcessFirstRep() {
8453    if (getProcess().isEmpty()) {
8454      addProcess();
8455    }
8456    return getProcess().get(0);
8457  }
8458
8459  /**
8460   * @return {@link #workflow} (Another nested workflow.)
8461   */
8462  public List<CanonicalType> getWorkflow() {
8463    if (this.workflow == null)
8464      this.workflow = new ArrayList<CanonicalType>();
8465    return this.workflow;
8466  }
8467
8468  /**
8469   * @return Returns a reference to <code>this</code> for easy method chaining
8470   */
8471  public ExampleScenario setWorkflow(List<CanonicalType> theWorkflow) {
8472    this.workflow = theWorkflow;
8473    return this;
8474  }
8475
8476  public boolean hasWorkflow() {
8477    if (this.workflow == null)
8478      return false;
8479    for (CanonicalType item : this.workflow)
8480      if (!item.isEmpty())
8481        return true;
8482    return false;
8483  }
8484
8485  /**
8486   * @return {@link #workflow} (Another nested workflow.)
8487   */
8488  public CanonicalType addWorkflowElement() {// 2
8489    CanonicalType t = new CanonicalType();
8490    if (this.workflow == null)
8491      this.workflow = new ArrayList<CanonicalType>();
8492    this.workflow.add(t);
8493    return t;
8494  }
8495
8496  /**
8497   * @param value {@link #workflow} (Another nested workflow.)
8498   */
8499  public ExampleScenario addWorkflow(String value) { // 1
8500    CanonicalType t = new CanonicalType();
8501    t.setValue(value);
8502    if (this.workflow == null)
8503      this.workflow = new ArrayList<CanonicalType>();
8504    this.workflow.add(t);
8505    return this;
8506  }
8507
8508  /**
8509   * @param value {@link #workflow} (Another nested workflow.)
8510   */
8511  public boolean hasWorkflow(String value) {
8512    if (this.workflow == null)
8513      return false;
8514    for (CanonicalType v : this.workflow)
8515      if (v.getValue().equals(value)) // canonical(ExampleScenario)
8516        return true;
8517    return false;
8518  }
8519
8520  protected void listChildren(List<Property> children) {
8521    super.listChildren(children);
8522    children.add(new Property("url", "uri",
8523        "An absolute URI that is used to identify this example scenario 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 example scenario is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the example scenario is stored on different servers.",
8524        0, 1, url));
8525    children.add(new Property("identifier", "Identifier",
8526        "A formal identifier that is used to identify this example scenario when it is represented in other formats, or referenced in a specification, model, design or an instance.",
8527        0, java.lang.Integer.MAX_VALUE, identifier));
8528    children.add(new Property("version", "string",
8529        "The identifier that is used to identify this version of the example scenario when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the example scenario 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.",
8530        0, 1, version));
8531    children.add(new Property("name", "string",
8532        "A natural language name identifying the example scenario. This name should be usable as an identifier for the module by machine processing applications such as code generation.",
8533        0, 1, name));
8534    children.add(new Property("status", "code",
8535        "The status of this example scenario. Enables tracking the life-cycle of the content.", 0, 1, status));
8536    children.add(new Property("experimental", "boolean",
8537        "A Boolean value to indicate that this example scenario is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.",
8538        0, 1, experimental));
8539    children.add(new Property("date", "dateTime",
8540        "The date  (and optionally time) when the example scenario 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 example scenario changes. (e.g. the 'content logical definition').",
8541        0, 1, date));
8542    children.add(new Property("publisher", "string",
8543        "The name of the organization or individual that published the example scenario.", 0, 1, publisher));
8544    children.add(new Property("contact", "ContactDetail",
8545        "Contact details to assist a user in finding and communicating with the publisher.", 0,
8546        java.lang.Integer.MAX_VALUE, contact));
8547    children.add(new Property("useContext", "UsageContext",
8548        "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 example scenario instances.",
8549        0, java.lang.Integer.MAX_VALUE, useContext));
8550    children.add(new Property("jurisdiction", "CodeableConcept",
8551        "A legal or geographic region in which the example scenario is intended to be used.", 0,
8552        java.lang.Integer.MAX_VALUE, jurisdiction));
8553    children.add(new Property("copyright", "markdown",
8554        "A copyright statement relating to the example scenario and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the example scenario.",
8555        0, 1, copyright));
8556    children.add(new Property("purpose", "markdown",
8557        "What the example scenario resource is created for. This should not be used to show the business purpose of the scenario itself, but the purpose of documenting a scenario.",
8558        0, 1, purpose));
8559    children
8560        .add(new Property("actor", "", "Actor participating in the resource.", 0, java.lang.Integer.MAX_VALUE, actor));
8561    children.add(new Property("instance", "", "Each resource and each version that is present in the workflow.", 0,
8562        java.lang.Integer.MAX_VALUE, instance));
8563    children.add(new Property("process", "", "Each major process - a group of operations.", 0,
8564        java.lang.Integer.MAX_VALUE, process));
8565    children.add(new Property("workflow", "canonical(ExampleScenario)", "Another nested workflow.", 0,
8566        java.lang.Integer.MAX_VALUE, workflow));
8567  }
8568
8569  @Override
8570  public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
8571    switch (_hash) {
8572    case 116079:
8573      /* url */ return new Property("url", "uri",
8574          "An absolute URI that is used to identify this example scenario 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 example scenario is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the example scenario is stored on different servers.",
8575          0, 1, url);
8576    case -1618432855:
8577      /* identifier */ return new Property("identifier", "Identifier",
8578          "A formal identifier that is used to identify this example scenario when it is represented in other formats, or referenced in a specification, model, design or an instance.",
8579          0, java.lang.Integer.MAX_VALUE, identifier);
8580    case 351608024:
8581      /* version */ return new Property("version", "string",
8582          "The identifier that is used to identify this version of the example scenario when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the example scenario 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.",
8583          0, 1, version);
8584    case 3373707:
8585      /* name */ return new Property("name", "string",
8586          "A natural language name identifying the example scenario. This name should be usable as an identifier for the module by machine processing applications such as code generation.",
8587          0, 1, name);
8588    case -892481550:
8589      /* status */ return new Property("status", "code",
8590          "The status of this example scenario. Enables tracking the life-cycle of the content.", 0, 1, status);
8591    case -404562712:
8592      /* experimental */ return new Property("experimental", "boolean",
8593          "A Boolean value to indicate that this example scenario is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.",
8594          0, 1, experimental);
8595    case 3076014:
8596      /* date */ return new Property("date", "dateTime",
8597          "The date  (and optionally time) when the example scenario 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 example scenario changes. (e.g. the 'content logical definition').",
8598          0, 1, date);
8599    case 1447404028:
8600      /* publisher */ return new Property("publisher", "string",
8601          "The name of the organization or individual that published the example scenario.", 0, 1, publisher);
8602    case 951526432:
8603      /* contact */ return new Property("contact", "ContactDetail",
8604          "Contact details to assist a user in finding and communicating with the publisher.", 0,
8605          java.lang.Integer.MAX_VALUE, contact);
8606    case -669707736:
8607      /* useContext */ return new Property("useContext", "UsageContext",
8608          "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 example scenario instances.",
8609          0, java.lang.Integer.MAX_VALUE, useContext);
8610    case -507075711:
8611      /* jurisdiction */ return new Property("jurisdiction", "CodeableConcept",
8612          "A legal or geographic region in which the example scenario is intended to be used.", 0,
8613          java.lang.Integer.MAX_VALUE, jurisdiction);
8614    case 1522889671:
8615      /* copyright */ return new Property("copyright", "markdown",
8616          "A copyright statement relating to the example scenario and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the example scenario.",
8617          0, 1, copyright);
8618    case -220463842:
8619      /* purpose */ return new Property("purpose", "markdown",
8620          "What the example scenario resource is created for. This should not be used to show the business purpose of the scenario itself, but the purpose of documenting a scenario.",
8621          0, 1, purpose);
8622    case 92645877:
8623      /* actor */ return new Property("actor", "", "Actor participating in the resource.", 0,
8624          java.lang.Integer.MAX_VALUE, actor);
8625    case 555127957:
8626      /* instance */ return new Property("instance", "",
8627          "Each resource and each version that is present in the workflow.", 0, java.lang.Integer.MAX_VALUE, instance);
8628    case -309518737:
8629      /* process */ return new Property("process", "", "Each major process - a group of operations.", 0,
8630          java.lang.Integer.MAX_VALUE, process);
8631    case 35379135:
8632      /* workflow */ return new Property("workflow", "canonical(ExampleScenario)", "Another nested workflow.", 0,
8633          java.lang.Integer.MAX_VALUE, workflow);
8634    default:
8635      return super.getNamedProperty(_hash, _name, _checkValid);
8636    }
8637
8638  }
8639
8640  @Override
8641  public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
8642    switch (hash) {
8643    case 116079:
8644      /* url */ return this.url == null ? new Base[0] : new Base[] { this.url }; // UriType
8645    case -1618432855:
8646      /* identifier */ return this.identifier == null ? new Base[0]
8647          : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
8648    case 351608024:
8649      /* version */ return this.version == null ? new Base[0] : new Base[] { this.version }; // StringType
8650    case 3373707:
8651      /* name */ return this.name == null ? new Base[0] : new Base[] { this.name }; // StringType
8652    case -892481550:
8653      /* status */ return this.status == null ? new Base[0] : new Base[] { this.status }; // Enumeration<PublicationStatus>
8654    case -404562712:
8655      /* experimental */ return this.experimental == null ? new Base[0] : new Base[] { this.experimental }; // BooleanType
8656    case 3076014:
8657      /* date */ return this.date == null ? new Base[0] : new Base[] { this.date }; // DateTimeType
8658    case 1447404028:
8659      /* publisher */ return this.publisher == null ? new Base[0] : new Base[] { this.publisher }; // StringType
8660    case 951526432:
8661      /* contact */ return this.contact == null ? new Base[0] : this.contact.toArray(new Base[this.contact.size()]); // ContactDetail
8662    case -669707736:
8663      /* useContext */ return this.useContext == null ? new Base[0]
8664          : this.useContext.toArray(new Base[this.useContext.size()]); // UsageContext
8665    case -507075711:
8666      /* jurisdiction */ return this.jurisdiction == null ? new Base[0]
8667          : this.jurisdiction.toArray(new Base[this.jurisdiction.size()]); // CodeableConcept
8668    case 1522889671:
8669      /* copyright */ return this.copyright == null ? new Base[0] : new Base[] { this.copyright }; // MarkdownType
8670    case -220463842:
8671      /* purpose */ return this.purpose == null ? new Base[0] : new Base[] { this.purpose }; // MarkdownType
8672    case 92645877:
8673      /* actor */ return this.actor == null ? new Base[0] : this.actor.toArray(new Base[this.actor.size()]); // ExampleScenarioActorComponent
8674    case 555127957:
8675      /* instance */ return this.instance == null ? new Base[0] : this.instance.toArray(new Base[this.instance.size()]); // ExampleScenarioInstanceComponent
8676    case -309518737:
8677      /* process */ return this.process == null ? new Base[0] : this.process.toArray(new Base[this.process.size()]); // ExampleScenarioProcessComponent
8678    case 35379135:
8679      /* workflow */ return this.workflow == null ? new Base[0] : this.workflow.toArray(new Base[this.workflow.size()]); // CanonicalType
8680    default:
8681      return super.getProperty(hash, name, checkValid);
8682    }
8683
8684  }
8685
8686  @Override
8687  public Base setProperty(int hash, String name, Base value) throws FHIRException {
8688    switch (hash) {
8689    case 116079: // url
8690      this.url = castToUri(value); // UriType
8691      return value;
8692    case -1618432855: // identifier
8693      this.getIdentifier().add(castToIdentifier(value)); // Identifier
8694      return value;
8695    case 351608024: // version
8696      this.version = castToString(value); // StringType
8697      return value;
8698    case 3373707: // name
8699      this.name = castToString(value); // StringType
8700      return value;
8701    case -892481550: // status
8702      value = new PublicationStatusEnumFactory().fromType(castToCode(value));
8703      this.status = (Enumeration) value; // Enumeration<PublicationStatus>
8704      return value;
8705    case -404562712: // experimental
8706      this.experimental = castToBoolean(value); // BooleanType
8707      return value;
8708    case 3076014: // date
8709      this.date = castToDateTime(value); // DateTimeType
8710      return value;
8711    case 1447404028: // publisher
8712      this.publisher = castToString(value); // StringType
8713      return value;
8714    case 951526432: // contact
8715      this.getContact().add(castToContactDetail(value)); // ContactDetail
8716      return value;
8717    case -669707736: // useContext
8718      this.getUseContext().add(castToUsageContext(value)); // UsageContext
8719      return value;
8720    case -507075711: // jurisdiction
8721      this.getJurisdiction().add(castToCodeableConcept(value)); // CodeableConcept
8722      return value;
8723    case 1522889671: // copyright
8724      this.copyright = castToMarkdown(value); // MarkdownType
8725      return value;
8726    case -220463842: // purpose
8727      this.purpose = castToMarkdown(value); // MarkdownType
8728      return value;
8729    case 92645877: // actor
8730      this.getActor().add((ExampleScenarioActorComponent) value); // ExampleScenarioActorComponent
8731      return value;
8732    case 555127957: // instance
8733      this.getInstance().add((ExampleScenarioInstanceComponent) value); // ExampleScenarioInstanceComponent
8734      return value;
8735    case -309518737: // process
8736      this.getProcess().add((ExampleScenarioProcessComponent) value); // ExampleScenarioProcessComponent
8737      return value;
8738    case 35379135: // workflow
8739      this.getWorkflow().add(castToCanonical(value)); // CanonicalType
8740      return value;
8741    default:
8742      return super.setProperty(hash, name, value);
8743    }
8744
8745  }
8746
8747  @Override
8748  public Base setProperty(String name, Base value) throws FHIRException {
8749    if (name.equals("url")) {
8750      this.url = castToUri(value); // UriType
8751    } else if (name.equals("identifier")) {
8752      this.getIdentifier().add(castToIdentifier(value));
8753    } else if (name.equals("version")) {
8754      this.version = castToString(value); // StringType
8755    } else if (name.equals("name")) {
8756      this.name = castToString(value); // StringType
8757    } else if (name.equals("status")) {
8758      value = new PublicationStatusEnumFactory().fromType(castToCode(value));
8759      this.status = (Enumeration) value; // Enumeration<PublicationStatus>
8760    } else if (name.equals("experimental")) {
8761      this.experimental = castToBoolean(value); // BooleanType
8762    } else if (name.equals("date")) {
8763      this.date = castToDateTime(value); // DateTimeType
8764    } else if (name.equals("publisher")) {
8765      this.publisher = castToString(value); // StringType
8766    } else if (name.equals("contact")) {
8767      this.getContact().add(castToContactDetail(value));
8768    } else if (name.equals("useContext")) {
8769      this.getUseContext().add(castToUsageContext(value));
8770    } else if (name.equals("jurisdiction")) {
8771      this.getJurisdiction().add(castToCodeableConcept(value));
8772    } else if (name.equals("copyright")) {
8773      this.copyright = castToMarkdown(value); // MarkdownType
8774    } else if (name.equals("purpose")) {
8775      this.purpose = castToMarkdown(value); // MarkdownType
8776    } else if (name.equals("actor")) {
8777      this.getActor().add((ExampleScenarioActorComponent) value);
8778    } else if (name.equals("instance")) {
8779      this.getInstance().add((ExampleScenarioInstanceComponent) value);
8780    } else if (name.equals("process")) {
8781      this.getProcess().add((ExampleScenarioProcessComponent) value);
8782    } else if (name.equals("workflow")) {
8783      this.getWorkflow().add(castToCanonical(value));
8784    } else
8785      return super.setProperty(name, value);
8786    return value;
8787  }
8788
8789  @Override
8790  public void removeChild(String name, Base value) throws FHIRException {
8791    if (name.equals("url")) {
8792      this.url = null;
8793    } else if (name.equals("identifier")) {
8794      this.getIdentifier().remove(castToIdentifier(value));
8795    } else if (name.equals("version")) {
8796      this.version = null;
8797    } else if (name.equals("name")) {
8798      this.name = null;
8799    } else if (name.equals("status")) {
8800      this.status = null;
8801    } else if (name.equals("experimental")) {
8802      this.experimental = null;
8803    } else if (name.equals("date")) {
8804      this.date = null;
8805    } else if (name.equals("publisher")) {
8806      this.publisher = null;
8807    } else if (name.equals("contact")) {
8808      this.getContact().remove(castToContactDetail(value));
8809    } else if (name.equals("useContext")) {
8810      this.getUseContext().remove(castToUsageContext(value));
8811    } else if (name.equals("jurisdiction")) {
8812      this.getJurisdiction().remove(castToCodeableConcept(value));
8813    } else if (name.equals("copyright")) {
8814      this.copyright = null;
8815    } else if (name.equals("purpose")) {
8816      this.purpose = null;
8817    } else if (name.equals("actor")) {
8818      this.getActor().remove((ExampleScenarioActorComponent) value);
8819    } else if (name.equals("instance")) {
8820      this.getInstance().remove((ExampleScenarioInstanceComponent) value);
8821    } else if (name.equals("process")) {
8822      this.getProcess().remove((ExampleScenarioProcessComponent) value);
8823    } else if (name.equals("workflow")) {
8824      this.getWorkflow().remove(castToCanonical(value));
8825    } else
8826      super.removeChild(name, value);
8827    
8828  }
8829
8830  @Override
8831  public Base makeProperty(int hash, String name) throws FHIRException {
8832    switch (hash) {
8833    case 116079:
8834      return getUrlElement();
8835    case -1618432855:
8836      return addIdentifier();
8837    case 351608024:
8838      return getVersionElement();
8839    case 3373707:
8840      return getNameElement();
8841    case -892481550:
8842      return getStatusElement();
8843    case -404562712:
8844      return getExperimentalElement();
8845    case 3076014:
8846      return getDateElement();
8847    case 1447404028:
8848      return getPublisherElement();
8849    case 951526432:
8850      return addContact();
8851    case -669707736:
8852      return addUseContext();
8853    case -507075711:
8854      return addJurisdiction();
8855    case 1522889671:
8856      return getCopyrightElement();
8857    case -220463842:
8858      return getPurposeElement();
8859    case 92645877:
8860      return addActor();
8861    case 555127957:
8862      return addInstance();
8863    case -309518737:
8864      return addProcess();
8865    case 35379135:
8866      return addWorkflowElement();
8867    default:
8868      return super.makeProperty(hash, name);
8869    }
8870
8871  }
8872
8873  @Override
8874  public String[] getTypesForProperty(int hash, String name) throws FHIRException {
8875    switch (hash) {
8876    case 116079:
8877      /* url */ return new String[] { "uri" };
8878    case -1618432855:
8879      /* identifier */ return new String[] { "Identifier" };
8880    case 351608024:
8881      /* version */ return new String[] { "string" };
8882    case 3373707:
8883      /* name */ return new String[] { "string" };
8884    case -892481550:
8885      /* status */ return new String[] { "code" };
8886    case -404562712:
8887      /* experimental */ return new String[] { "boolean" };
8888    case 3076014:
8889      /* date */ return new String[] { "dateTime" };
8890    case 1447404028:
8891      /* publisher */ return new String[] { "string" };
8892    case 951526432:
8893      /* contact */ return new String[] { "ContactDetail" };
8894    case -669707736:
8895      /* useContext */ return new String[] { "UsageContext" };
8896    case -507075711:
8897      /* jurisdiction */ return new String[] { "CodeableConcept" };
8898    case 1522889671:
8899      /* copyright */ return new String[] { "markdown" };
8900    case -220463842:
8901      /* purpose */ return new String[] { "markdown" };
8902    case 92645877:
8903      /* actor */ return new String[] {};
8904    case 555127957:
8905      /* instance */ return new String[] {};
8906    case -309518737:
8907      /* process */ return new String[] {};
8908    case 35379135:
8909      /* workflow */ return new String[] { "canonical" };
8910    default:
8911      return super.getTypesForProperty(hash, name);
8912    }
8913
8914  }
8915
8916  @Override
8917  public Base addChild(String name) throws FHIRException {
8918    if (name.equals("url")) {
8919      throw new FHIRException("Cannot call addChild on a singleton property ExampleScenario.url");
8920    } else if (name.equals("identifier")) {
8921      return addIdentifier();
8922    } else if (name.equals("version")) {
8923      throw new FHIRException("Cannot call addChild on a singleton property ExampleScenario.version");
8924    } else if (name.equals("name")) {
8925      throw new FHIRException("Cannot call addChild on a singleton property ExampleScenario.name");
8926    } else if (name.equals("status")) {
8927      throw new FHIRException("Cannot call addChild on a singleton property ExampleScenario.status");
8928    } else if (name.equals("experimental")) {
8929      throw new FHIRException("Cannot call addChild on a singleton property ExampleScenario.experimental");
8930    } else if (name.equals("date")) {
8931      throw new FHIRException("Cannot call addChild on a singleton property ExampleScenario.date");
8932    } else if (name.equals("publisher")) {
8933      throw new FHIRException("Cannot call addChild on a singleton property ExampleScenario.publisher");
8934    } else if (name.equals("contact")) {
8935      return addContact();
8936    } else if (name.equals("useContext")) {
8937      return addUseContext();
8938    } else if (name.equals("jurisdiction")) {
8939      return addJurisdiction();
8940    } else if (name.equals("copyright")) {
8941      throw new FHIRException("Cannot call addChild on a singleton property ExampleScenario.copyright");
8942    } else if (name.equals("purpose")) {
8943      throw new FHIRException("Cannot call addChild on a singleton property ExampleScenario.purpose");
8944    } else if (name.equals("actor")) {
8945      return addActor();
8946    } else if (name.equals("instance")) {
8947      return addInstance();
8948    } else if (name.equals("process")) {
8949      return addProcess();
8950    } else if (name.equals("workflow")) {
8951      throw new FHIRException("Cannot call addChild on a singleton property ExampleScenario.workflow");
8952    } else
8953      return super.addChild(name);
8954  }
8955
8956  public String fhirType() {
8957    return "ExampleScenario";
8958
8959  }
8960
8961  public ExampleScenario copy() {
8962    ExampleScenario dst = new ExampleScenario();
8963    copyValues(dst);
8964    return dst;
8965  }
8966
8967  public void copyValues(ExampleScenario dst) {
8968    super.copyValues(dst);
8969    dst.url = url == null ? null : url.copy();
8970    if (identifier != null) {
8971      dst.identifier = new ArrayList<Identifier>();
8972      for (Identifier i : identifier)
8973        dst.identifier.add(i.copy());
8974    }
8975    ;
8976    dst.version = version == null ? null : version.copy();
8977    dst.name = name == null ? null : name.copy();
8978    dst.status = status == null ? null : status.copy();
8979    dst.experimental = experimental == null ? null : experimental.copy();
8980    dst.date = date == null ? null : date.copy();
8981    dst.publisher = publisher == null ? null : publisher.copy();
8982    if (contact != null) {
8983      dst.contact = new ArrayList<ContactDetail>();
8984      for (ContactDetail i : contact)
8985        dst.contact.add(i.copy());
8986    }
8987    ;
8988    if (useContext != null) {
8989      dst.useContext = new ArrayList<UsageContext>();
8990      for (UsageContext i : useContext)
8991        dst.useContext.add(i.copy());
8992    }
8993    ;
8994    if (jurisdiction != null) {
8995      dst.jurisdiction = new ArrayList<CodeableConcept>();
8996      for (CodeableConcept i : jurisdiction)
8997        dst.jurisdiction.add(i.copy());
8998    }
8999    ;
9000    dst.copyright = copyright == null ? null : copyright.copy();
9001    dst.purpose = purpose == null ? null : purpose.copy();
9002    if (actor != null) {
9003      dst.actor = new ArrayList<ExampleScenarioActorComponent>();
9004      for (ExampleScenarioActorComponent i : actor)
9005        dst.actor.add(i.copy());
9006    }
9007    ;
9008    if (instance != null) {
9009      dst.instance = new ArrayList<ExampleScenarioInstanceComponent>();
9010      for (ExampleScenarioInstanceComponent i : instance)
9011        dst.instance.add(i.copy());
9012    }
9013    ;
9014    if (process != null) {
9015      dst.process = new ArrayList<ExampleScenarioProcessComponent>();
9016      for (ExampleScenarioProcessComponent i : process)
9017        dst.process.add(i.copy());
9018    }
9019    ;
9020    if (workflow != null) {
9021      dst.workflow = new ArrayList<CanonicalType>();
9022      for (CanonicalType i : workflow)
9023        dst.workflow.add(i.copy());
9024    }
9025    ;
9026  }
9027
9028  protected ExampleScenario typedCopy() {
9029    return copy();
9030  }
9031
9032  @Override
9033  public boolean equalsDeep(Base other_) {
9034    if (!super.equalsDeep(other_))
9035      return false;
9036    if (!(other_ instanceof ExampleScenario))
9037      return false;
9038    ExampleScenario o = (ExampleScenario) other_;
9039    return compareDeep(identifier, o.identifier, true) && compareDeep(copyright, o.copyright, true)
9040        && compareDeep(purpose, o.purpose, true) && compareDeep(actor, o.actor, true)
9041        && compareDeep(instance, o.instance, true) && compareDeep(process, o.process, true)
9042        && compareDeep(workflow, o.workflow, true);
9043  }
9044
9045  @Override
9046  public boolean equalsShallow(Base other_) {
9047    if (!super.equalsShallow(other_))
9048      return false;
9049    if (!(other_ instanceof ExampleScenario))
9050      return false;
9051    ExampleScenario o = (ExampleScenario) other_;
9052    return compareValues(copyright, o.copyright, true) && compareValues(purpose, o.purpose, true);
9053  }
9054
9055  public boolean isEmpty() {
9056    return super.isEmpty()
9057        && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, copyright, purpose, actor, instance, process, workflow);
9058  }
9059
9060  @Override
9061  public ResourceType getResourceType() {
9062    return ResourceType.ExampleScenario;
9063  }
9064
9065  /**
9066   * Search parameter: <b>date</b>
9067   * <p>
9068   * Description: <b>The example scenario publication date</b><br>
9069   * Type: <b>date</b><br>
9070   * Path: <b>ExampleScenario.date</b><br>
9071   * </p>
9072   */
9073  @SearchParamDefinition(name = "date", path = "ExampleScenario.date", description = "The example scenario publication date", type = "date")
9074  public static final String SP_DATE = "date";
9075  /**
9076   * <b>Fluent Client</b> search parameter constant for <b>date</b>
9077   * <p>
9078   * Description: <b>The example scenario publication date</b><br>
9079   * Type: <b>date</b><br>
9080   * Path: <b>ExampleScenario.date</b><br>
9081   * </p>
9082   */
9083  public static final ca.uhn.fhir.rest.gclient.DateClientParam DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(
9084      SP_DATE);
9085
9086  /**
9087   * Search parameter: <b>identifier</b>
9088   * <p>
9089   * Description: <b>External identifier for the example scenario</b><br>
9090   * Type: <b>token</b><br>
9091   * Path: <b>ExampleScenario.identifier</b><br>
9092   * </p>
9093   */
9094  @SearchParamDefinition(name = "identifier", path = "ExampleScenario.identifier", description = "External identifier for the example scenario", type = "token")
9095  public static final String SP_IDENTIFIER = "identifier";
9096  /**
9097   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
9098   * <p>
9099   * Description: <b>External identifier for the example scenario</b><br>
9100   * Type: <b>token</b><br>
9101   * Path: <b>ExampleScenario.identifier</b><br>
9102   * </p>
9103   */
9104  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(
9105      SP_IDENTIFIER);
9106
9107  /**
9108   * Search parameter: <b>context-type-value</b>
9109   * <p>
9110   * Description: <b>A use context type and value assigned to the example
9111   * scenario</b><br>
9112   * Type: <b>composite</b><br>
9113   * Path: <b></b><br>
9114   * </p>
9115   */
9116  @SearchParamDefinition(name = "context-type-value", path = "ExampleScenario.useContext", description = "A use context type and value assigned to the example scenario", type = "composite", compositeOf = {
9117      "context-type", "context" })
9118  public static final String SP_CONTEXT_TYPE_VALUE = "context-type-value";
9119  /**
9120   * <b>Fluent Client</b> search parameter constant for <b>context-type-value</b>
9121   * <p>
9122   * Description: <b>A use context type and value assigned to the example
9123   * scenario</b><br>
9124   * Type: <b>composite</b><br>
9125   * Path: <b></b><br>
9126   * </p>
9127   */
9128  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>(
9129      SP_CONTEXT_TYPE_VALUE);
9130
9131  /**
9132   * Search parameter: <b>jurisdiction</b>
9133   * <p>
9134   * Description: <b>Intended jurisdiction for the example scenario</b><br>
9135   * Type: <b>token</b><br>
9136   * Path: <b>ExampleScenario.jurisdiction</b><br>
9137   * </p>
9138   */
9139  @SearchParamDefinition(name = "jurisdiction", path = "ExampleScenario.jurisdiction", description = "Intended jurisdiction for the example scenario", type = "token")
9140  public static final String SP_JURISDICTION = "jurisdiction";
9141  /**
9142   * <b>Fluent Client</b> search parameter constant for <b>jurisdiction</b>
9143   * <p>
9144   * Description: <b>Intended jurisdiction for the example scenario</b><br>
9145   * Type: <b>token</b><br>
9146   * Path: <b>ExampleScenario.jurisdiction</b><br>
9147   * </p>
9148   */
9149  public static final ca.uhn.fhir.rest.gclient.TokenClientParam JURISDICTION = new ca.uhn.fhir.rest.gclient.TokenClientParam(
9150      SP_JURISDICTION);
9151
9152  /**
9153   * Search parameter: <b>context-type</b>
9154   * <p>
9155   * Description: <b>A type of use context assigned to the example
9156   * scenario</b><br>
9157   * Type: <b>token</b><br>
9158   * Path: <b>ExampleScenario.useContext.code</b><br>
9159   * </p>
9160   */
9161  @SearchParamDefinition(name = "context-type", path = "ExampleScenario.useContext.code", description = "A type of use context assigned to the example scenario", type = "token")
9162  public static final String SP_CONTEXT_TYPE = "context-type";
9163  /**
9164   * <b>Fluent Client</b> search parameter constant for <b>context-type</b>
9165   * <p>
9166   * Description: <b>A type of use context assigned to the example
9167   * scenario</b><br>
9168   * Type: <b>token</b><br>
9169   * Path: <b>ExampleScenario.useContext.code</b><br>
9170   * </p>
9171   */
9172  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT_TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(
9173      SP_CONTEXT_TYPE);
9174
9175  /**
9176   * Search parameter: <b>version</b>
9177   * <p>
9178   * Description: <b>The business version of the example scenario</b><br>
9179   * Type: <b>token</b><br>
9180   * Path: <b>ExampleScenario.version</b><br>
9181   * </p>
9182   */
9183  @SearchParamDefinition(name = "version", path = "ExampleScenario.version", description = "The business version of the example scenario", type = "token")
9184  public static final String SP_VERSION = "version";
9185  /**
9186   * <b>Fluent Client</b> search parameter constant for <b>version</b>
9187   * <p>
9188   * Description: <b>The business version of the example scenario</b><br>
9189   * Type: <b>token</b><br>
9190   * Path: <b>ExampleScenario.version</b><br>
9191   * </p>
9192   */
9193  public static final ca.uhn.fhir.rest.gclient.TokenClientParam VERSION = new ca.uhn.fhir.rest.gclient.TokenClientParam(
9194      SP_VERSION);
9195
9196  /**
9197   * Search parameter: <b>url</b>
9198   * <p>
9199   * Description: <b>The uri that identifies the example scenario</b><br>
9200   * Type: <b>uri</b><br>
9201   * Path: <b>ExampleScenario.url</b><br>
9202   * </p>
9203   */
9204  @SearchParamDefinition(name = "url", path = "ExampleScenario.url", description = "The uri that identifies the example scenario", type = "uri")
9205  public static final String SP_URL = "url";
9206  /**
9207   * <b>Fluent Client</b> search parameter constant for <b>url</b>
9208   * <p>
9209   * Description: <b>The uri that identifies the example scenario</b><br>
9210   * Type: <b>uri</b><br>
9211   * Path: <b>ExampleScenario.url</b><br>
9212   * </p>
9213   */
9214  public static final ca.uhn.fhir.rest.gclient.UriClientParam URL = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_URL);
9215
9216  /**
9217   * Search parameter: <b>context-quantity</b>
9218   * <p>
9219   * Description: <b>A quantity- or range-valued use context assigned to the
9220   * example scenario</b><br>
9221   * Type: <b>quantity</b><br>
9222   * Path: <b>ExampleScenario.useContext.valueQuantity,
9223   * ExampleScenario.useContext.valueRange</b><br>
9224   * </p>
9225   */
9226  @SearchParamDefinition(name = "context-quantity", path = "(ExampleScenario.useContext.value as Quantity) | (ExampleScenario.useContext.value as Range)", description = "A quantity- or range-valued use context assigned to the example scenario", type = "quantity")
9227  public static final String SP_CONTEXT_QUANTITY = "context-quantity";
9228  /**
9229   * <b>Fluent Client</b> search parameter constant for <b>context-quantity</b>
9230   * <p>
9231   * Description: <b>A quantity- or range-valued use context assigned to the
9232   * example scenario</b><br>
9233   * Type: <b>quantity</b><br>
9234   * Path: <b>ExampleScenario.useContext.valueQuantity,
9235   * ExampleScenario.useContext.valueRange</b><br>
9236   * </p>
9237   */
9238  public static final ca.uhn.fhir.rest.gclient.QuantityClientParam CONTEXT_QUANTITY = new ca.uhn.fhir.rest.gclient.QuantityClientParam(
9239      SP_CONTEXT_QUANTITY);
9240
9241  /**
9242   * Search parameter: <b>name</b>
9243   * <p>
9244   * Description: <b>Computationally friendly name of the example scenario</b><br>
9245   * Type: <b>string</b><br>
9246   * Path: <b>ExampleScenario.name</b><br>
9247   * </p>
9248   */
9249  @SearchParamDefinition(name = "name", path = "ExampleScenario.name", description = "Computationally friendly name of the example scenario", type = "string")
9250  public static final String SP_NAME = "name";
9251  /**
9252   * <b>Fluent Client</b> search parameter constant for <b>name</b>
9253   * <p>
9254   * Description: <b>Computationally friendly name of the example scenario</b><br>
9255   * Type: <b>string</b><br>
9256   * Path: <b>ExampleScenario.name</b><br>
9257   * </p>
9258   */
9259  public static final ca.uhn.fhir.rest.gclient.StringClientParam NAME = new ca.uhn.fhir.rest.gclient.StringClientParam(
9260      SP_NAME);
9261
9262  /**
9263   * Search parameter: <b>context</b>
9264   * <p>
9265   * Description: <b>A use context assigned to the example scenario</b><br>
9266   * Type: <b>token</b><br>
9267   * Path: <b>ExampleScenario.useContext.valueCodeableConcept</b><br>
9268   * </p>
9269   */
9270  @SearchParamDefinition(name = "context", path = "(ExampleScenario.useContext.value as CodeableConcept)", description = "A use context assigned to the example scenario", type = "token")
9271  public static final String SP_CONTEXT = "context";
9272  /**
9273   * <b>Fluent Client</b> search parameter constant for <b>context</b>
9274   * <p>
9275   * Description: <b>A use context assigned to the example scenario</b><br>
9276   * Type: <b>token</b><br>
9277   * Path: <b>ExampleScenario.useContext.valueCodeableConcept</b><br>
9278   * </p>
9279   */
9280  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT = new ca.uhn.fhir.rest.gclient.TokenClientParam(
9281      SP_CONTEXT);
9282
9283  /**
9284   * Search parameter: <b>publisher</b>
9285   * <p>
9286   * Description: <b>Name of the publisher of the example scenario</b><br>
9287   * Type: <b>string</b><br>
9288   * Path: <b>ExampleScenario.publisher</b><br>
9289   * </p>
9290   */
9291  @SearchParamDefinition(name = "publisher", path = "ExampleScenario.publisher", description = "Name of the publisher of the example scenario", type = "string")
9292  public static final String SP_PUBLISHER = "publisher";
9293  /**
9294   * <b>Fluent Client</b> search parameter constant for <b>publisher</b>
9295   * <p>
9296   * Description: <b>Name of the publisher of the example scenario</b><br>
9297   * Type: <b>string</b><br>
9298   * Path: <b>ExampleScenario.publisher</b><br>
9299   * </p>
9300   */
9301  public static final ca.uhn.fhir.rest.gclient.StringClientParam PUBLISHER = new ca.uhn.fhir.rest.gclient.StringClientParam(
9302      SP_PUBLISHER);
9303
9304  /**
9305   * Search parameter: <b>context-type-quantity</b>
9306   * <p>
9307   * Description: <b>A use context type and quantity- or range-based value
9308   * assigned to the example scenario</b><br>
9309   * Type: <b>composite</b><br>
9310   * Path: <b></b><br>
9311   * </p>
9312   */
9313  @SearchParamDefinition(name = "context-type-quantity", path = "ExampleScenario.useContext", description = "A use context type and quantity- or range-based value assigned to the example scenario", type = "composite", compositeOf = {
9314      "context-type", "context-quantity" })
9315  public static final String SP_CONTEXT_TYPE_QUANTITY = "context-type-quantity";
9316  /**
9317   * <b>Fluent Client</b> search parameter constant for
9318   * <b>context-type-quantity</b>
9319   * <p>
9320   * Description: <b>A use context type and quantity- or range-based value
9321   * assigned to the example scenario</b><br>
9322   * Type: <b>composite</b><br>
9323   * Path: <b></b><br>
9324   * </p>
9325   */
9326  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>(
9327      SP_CONTEXT_TYPE_QUANTITY);
9328
9329  /**
9330   * Search parameter: <b>status</b>
9331   * <p>
9332   * Description: <b>The current status of the example scenario</b><br>
9333   * Type: <b>token</b><br>
9334   * Path: <b>ExampleScenario.status</b><br>
9335   * </p>
9336   */
9337  @SearchParamDefinition(name = "status", path = "ExampleScenario.status", description = "The current status of the example scenario", type = "token")
9338  public static final String SP_STATUS = "status";
9339  /**
9340   * <b>Fluent Client</b> search parameter constant for <b>status</b>
9341   * <p>
9342   * Description: <b>The current status of the example scenario</b><br>
9343   * Type: <b>token</b><br>
9344   * Path: <b>ExampleScenario.status</b><br>
9345   * </p>
9346   */
9347  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(
9348      SP_STATUS);
9349
9350}