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