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