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