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