001package org.hl7.fhir.r4.model;
002
003/*
004  Copyright (c) 2011+, HL7, Inc.
005  All rights reserved.
006  
007  Redistribution and use in source and binary forms, with or without modification, 
008  are permitted provided that the following conditions are met:
009  
010   * Redistributions of source code must retain the above copyright notice, this 
011     list of conditions and the following disclaimer.
012   * Redistributions in binary form must reproduce the above copyright notice, 
013     this list of conditions and the following disclaimer in the documentation 
014     and/or other materials provided with the distribution.
015   * Neither the name of HL7 nor the names of its contributors may be used to 
016     endorse or promote products derived from this software without specific 
017     prior written permission.
018  
019  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
020  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
021  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
022  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
023  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
024  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
025  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
026  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
027  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
028  POSSIBILITY OF SUCH DAMAGE.
029  
030*/
031
032// Generated on Thu, Sep 13, 2018 09:04-0400 for FHIR v3.5.0
033
034import java.util.*;
035
036import org.hl7.fhir.utilities.Utilities;
037import org.hl7.fhir.r4.model.Enumerations.*;
038import ca.uhn.fhir.model.api.annotation.ResourceDef;
039import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
040import ca.uhn.fhir.model.api.annotation.Child;
041import ca.uhn.fhir.model.api.annotation.ChildOrder;
042import ca.uhn.fhir.model.api.annotation.Description;
043import ca.uhn.fhir.model.api.annotation.Block;
044import org.hl7.fhir.instance.model.api.*;
045import org.hl7.fhir.exceptions.FHIRException;
046/**
047 * This resource allows for the definition of some activity to be performed, independent of a particular patient, practitioner, or other performance context.
048 */
049@ResourceDef(name="ActivityDefinition", profile="http://hl7.org/fhir/StructureDefinition/ActivityDefinition")
050@ChildOrder(names={"url", "identifier", "version", "name", "title", "subtitle", "status", "experimental", "subject[x]", "date", "publisher", "contact", "description", "useContext", "jurisdiction", "purpose", "usage", "copyright", "approvalDate", "lastReviewDate", "effectivePeriod", "topic", "author", "editor", "reviewer", "endorser", "relatedArtifact", "library", "kind", "profile", "code", "intent", "priority", "doNotPerform", "timing[x]", "location", "participant", "product[x]", "quantity", "dosage", "bodySite", "specimenRequirement", "observationRequirement", "observationResultRequirement", "transform", "dynamicValue"})
051public class ActivityDefinition extends MetadataResource {
052
053    public enum ActivityDefinitionKind {
054        /**
055         * 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).
056         */
057        APPOINTMENT, 
058        /**
059         * A reply to an appointment request for a patient and/or practitioner(s), such as a confirmation or rejection.
060         */
061        APPOINTMENTRESPONSE, 
062        /**
063         * Healthcare plan for patient or group.
064         */
065        CAREPLAN, 
066        /**
067         * Claim, Pre-determination or Pre-authorization.
068         */
069        CLAIM, 
070        /**
071         * A request for information to be sent to a receiver.
072         */
073        COMMUNICATIONREQUEST, 
074        /**
075         * Legal Agreement.
076         */
077        CONTRACT, 
078        /**
079         * Medical device request.
080         */
081        DEVICEREQUEST, 
082        /**
083         * Enrollment request.
084         */
085        ENROLLMENTREQUEST, 
086        /**
087         * Guidance or advice relating to an immunization.
088         */
089        IMMUNIZATIONRECOMMENDATION, 
090        /**
091         * Ordering of medication for patient or group.
092         */
093        MEDICATIONREQUEST, 
094        /**
095         * Diet, formula or nutritional supplement request.
096         */
097        NUTRITIONORDER, 
098        /**
099         * A record of a request for service such as diagnostic investigations, treatments, or operations to be performed.
100         */
101        SERVICEREQUEST, 
102        /**
103         * Request for a medication, substance or device.
104         */
105        SUPPLYREQUEST, 
106        /**
107         * A task to be performed.
108         */
109        TASK, 
110        /**
111         * Prescription for vision correction products for a patient.
112         */
113        VISIONPRESCRIPTION, 
114        /**
115         * added to help the parsers with the generic types
116         */
117        NULL;
118        public static ActivityDefinitionKind fromCode(String codeString) throws FHIRException {
119            if (codeString == null || "".equals(codeString))
120                return null;
121        if ("Appointment".equals(codeString))
122          return APPOINTMENT;
123        if ("AppointmentResponse".equals(codeString))
124          return APPOINTMENTRESPONSE;
125        if ("CarePlan".equals(codeString))
126          return CAREPLAN;
127        if ("Claim".equals(codeString))
128          return CLAIM;
129        if ("CommunicationRequest".equals(codeString))
130          return COMMUNICATIONREQUEST;
131        if ("Contract".equals(codeString))
132          return CONTRACT;
133        if ("DeviceRequest".equals(codeString))
134          return DEVICEREQUEST;
135        if ("EnrollmentRequest".equals(codeString))
136          return ENROLLMENTREQUEST;
137        if ("ImmunizationRecommendation".equals(codeString))
138          return IMMUNIZATIONRECOMMENDATION;
139        if ("MedicationRequest".equals(codeString))
140          return MEDICATIONREQUEST;
141        if ("NutritionOrder".equals(codeString))
142          return NUTRITIONORDER;
143        if ("ServiceRequest".equals(codeString))
144          return SERVICEREQUEST;
145        if ("SupplyRequest".equals(codeString))
146          return SUPPLYREQUEST;
147        if ("Task".equals(codeString))
148          return TASK;
149        if ("VisionPrescription".equals(codeString))
150          return VISIONPRESCRIPTION;
151        if (Configuration.isAcceptInvalidEnums())
152          return null;
153        else
154          throw new FHIRException("Unknown ActivityDefinitionKind code '"+codeString+"'");
155        }
156        public String toCode() {
157          switch (this) {
158            case APPOINTMENT: return "Appointment";
159            case APPOINTMENTRESPONSE: return "AppointmentResponse";
160            case CAREPLAN: return "CarePlan";
161            case CLAIM: return "Claim";
162            case COMMUNICATIONREQUEST: return "CommunicationRequest";
163            case CONTRACT: return "Contract";
164            case DEVICEREQUEST: return "DeviceRequest";
165            case ENROLLMENTREQUEST: return "EnrollmentRequest";
166            case IMMUNIZATIONRECOMMENDATION: return "ImmunizationRecommendation";
167            case MEDICATIONREQUEST: return "MedicationRequest";
168            case NUTRITIONORDER: return "NutritionOrder";
169            case SERVICEREQUEST: return "ServiceRequest";
170            case SUPPLYREQUEST: return "SupplyRequest";
171            case TASK: return "Task";
172            case VISIONPRESCRIPTION: return "VisionPrescription";
173            default: return "?";
174          }
175        }
176        public String getSystem() {
177          switch (this) {
178            case APPOINTMENT: return "http://hl7.org/fhir/request-resource-types";
179            case APPOINTMENTRESPONSE: return "http://hl7.org/fhir/request-resource-types";
180            case CAREPLAN: return "http://hl7.org/fhir/request-resource-types";
181            case CLAIM: return "http://hl7.org/fhir/request-resource-types";
182            case COMMUNICATIONREQUEST: return "http://hl7.org/fhir/request-resource-types";
183            case CONTRACT: return "http://hl7.org/fhir/request-resource-types";
184            case DEVICEREQUEST: return "http://hl7.org/fhir/request-resource-types";
185            case ENROLLMENTREQUEST: return "http://hl7.org/fhir/request-resource-types";
186            case IMMUNIZATIONRECOMMENDATION: return "http://hl7.org/fhir/request-resource-types";
187            case MEDICATIONREQUEST: return "http://hl7.org/fhir/request-resource-types";
188            case NUTRITIONORDER: return "http://hl7.org/fhir/request-resource-types";
189            case SERVICEREQUEST: return "http://hl7.org/fhir/request-resource-types";
190            case SUPPLYREQUEST: return "http://hl7.org/fhir/request-resource-types";
191            case TASK: return "http://hl7.org/fhir/request-resource-types";
192            case VISIONPRESCRIPTION: return "http://hl7.org/fhir/request-resource-types";
193            default: return "?";
194          }
195        }
196        public String getDefinition() {
197          switch (this) {
198            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).";
199            case APPOINTMENTRESPONSE: return "A reply to an appointment request for a patient and/or practitioner(s), such as a confirmation or rejection.";
200            case CAREPLAN: return "Healthcare plan for patient or group.";
201            case CLAIM: return "Claim, Pre-determination or Pre-authorization.";
202            case COMMUNICATIONREQUEST: return "A request for information to be sent to a receiver.";
203            case CONTRACT: return "Legal Agreement.";
204            case DEVICEREQUEST: return "Medical device request.";
205            case ENROLLMENTREQUEST: return "Enrollment request.";
206            case IMMUNIZATIONRECOMMENDATION: return "Guidance or advice relating to an immunization.";
207            case MEDICATIONREQUEST: return "Ordering of medication for patient or group.";
208            case NUTRITIONORDER: return "Diet, formula or nutritional supplement request.";
209            case SERVICEREQUEST: return "A record of a request for service such as diagnostic investigations, treatments, or operations to be performed.";
210            case SUPPLYREQUEST: return "Request for a medication, substance or device.";
211            case TASK: return "A task to be performed.";
212            case VISIONPRESCRIPTION: return "Prescription for vision correction products for a patient.";
213            default: return "?";
214          }
215        }
216        public String getDisplay() {
217          switch (this) {
218            case APPOINTMENT: return "Appointment";
219            case APPOINTMENTRESPONSE: return "AppointmentResponse";
220            case CAREPLAN: return "CarePlan";
221            case CLAIM: return "Claim";
222            case COMMUNICATIONREQUEST: return "CommunicationRequest";
223            case CONTRACT: return "Contract";
224            case DEVICEREQUEST: return "DeviceRequest";
225            case ENROLLMENTREQUEST: return "EnrollmentRequest";
226            case IMMUNIZATIONRECOMMENDATION: return "ImmunizationRecommendation";
227            case MEDICATIONREQUEST: return "MedicationRequest";
228            case NUTRITIONORDER: return "NutritionOrder";
229            case SERVICEREQUEST: return "ServiceRequest";
230            case SUPPLYREQUEST: return "SupplyRequest";
231            case TASK: return "Task";
232            case VISIONPRESCRIPTION: return "VisionPrescription";
233            default: return "?";
234          }
235        }
236    }
237
238  public static class ActivityDefinitionKindEnumFactory implements EnumFactory<ActivityDefinitionKind> {
239    public ActivityDefinitionKind fromCode(String codeString) throws IllegalArgumentException {
240      if (codeString == null || "".equals(codeString))
241            if (codeString == null || "".equals(codeString))
242                return null;
243        if ("Appointment".equals(codeString))
244          return ActivityDefinitionKind.APPOINTMENT;
245        if ("AppointmentResponse".equals(codeString))
246          return ActivityDefinitionKind.APPOINTMENTRESPONSE;
247        if ("CarePlan".equals(codeString))
248          return ActivityDefinitionKind.CAREPLAN;
249        if ("Claim".equals(codeString))
250          return ActivityDefinitionKind.CLAIM;
251        if ("CommunicationRequest".equals(codeString))
252          return ActivityDefinitionKind.COMMUNICATIONREQUEST;
253        if ("Contract".equals(codeString))
254          return ActivityDefinitionKind.CONTRACT;
255        if ("DeviceRequest".equals(codeString))
256          return ActivityDefinitionKind.DEVICEREQUEST;
257        if ("EnrollmentRequest".equals(codeString))
258          return ActivityDefinitionKind.ENROLLMENTREQUEST;
259        if ("ImmunizationRecommendation".equals(codeString))
260          return ActivityDefinitionKind.IMMUNIZATIONRECOMMENDATION;
261        if ("MedicationRequest".equals(codeString))
262          return ActivityDefinitionKind.MEDICATIONREQUEST;
263        if ("NutritionOrder".equals(codeString))
264          return ActivityDefinitionKind.NUTRITIONORDER;
265        if ("ServiceRequest".equals(codeString))
266          return ActivityDefinitionKind.SERVICEREQUEST;
267        if ("SupplyRequest".equals(codeString))
268          return ActivityDefinitionKind.SUPPLYREQUEST;
269        if ("Task".equals(codeString))
270          return ActivityDefinitionKind.TASK;
271        if ("VisionPrescription".equals(codeString))
272          return ActivityDefinitionKind.VISIONPRESCRIPTION;
273        throw new IllegalArgumentException("Unknown ActivityDefinitionKind code '"+codeString+"'");
274        }
275        public Enumeration<ActivityDefinitionKind> fromType(Base code) throws FHIRException {
276          if (code == null)
277            return null;
278          if (code.isEmpty())
279            return new Enumeration<ActivityDefinitionKind>(this);
280          String codeString = ((PrimitiveType) code).asStringValue();
281          if (codeString == null || "".equals(codeString))
282            return null;
283        if ("Appointment".equals(codeString))
284          return new Enumeration<ActivityDefinitionKind>(this, ActivityDefinitionKind.APPOINTMENT);
285        if ("AppointmentResponse".equals(codeString))
286          return new Enumeration<ActivityDefinitionKind>(this, ActivityDefinitionKind.APPOINTMENTRESPONSE);
287        if ("CarePlan".equals(codeString))
288          return new Enumeration<ActivityDefinitionKind>(this, ActivityDefinitionKind.CAREPLAN);
289        if ("Claim".equals(codeString))
290          return new Enumeration<ActivityDefinitionKind>(this, ActivityDefinitionKind.CLAIM);
291        if ("CommunicationRequest".equals(codeString))
292          return new Enumeration<ActivityDefinitionKind>(this, ActivityDefinitionKind.COMMUNICATIONREQUEST);
293        if ("Contract".equals(codeString))
294          return new Enumeration<ActivityDefinitionKind>(this, ActivityDefinitionKind.CONTRACT);
295        if ("DeviceRequest".equals(codeString))
296          return new Enumeration<ActivityDefinitionKind>(this, ActivityDefinitionKind.DEVICEREQUEST);
297        if ("EnrollmentRequest".equals(codeString))
298          return new Enumeration<ActivityDefinitionKind>(this, ActivityDefinitionKind.ENROLLMENTREQUEST);
299        if ("ImmunizationRecommendation".equals(codeString))
300          return new Enumeration<ActivityDefinitionKind>(this, ActivityDefinitionKind.IMMUNIZATIONRECOMMENDATION);
301        if ("MedicationRequest".equals(codeString))
302          return new Enumeration<ActivityDefinitionKind>(this, ActivityDefinitionKind.MEDICATIONREQUEST);
303        if ("NutritionOrder".equals(codeString))
304          return new Enumeration<ActivityDefinitionKind>(this, ActivityDefinitionKind.NUTRITIONORDER);
305        if ("ServiceRequest".equals(codeString))
306          return new Enumeration<ActivityDefinitionKind>(this, ActivityDefinitionKind.SERVICEREQUEST);
307        if ("SupplyRequest".equals(codeString))
308          return new Enumeration<ActivityDefinitionKind>(this, ActivityDefinitionKind.SUPPLYREQUEST);
309        if ("Task".equals(codeString))
310          return new Enumeration<ActivityDefinitionKind>(this, ActivityDefinitionKind.TASK);
311        if ("VisionPrescription".equals(codeString))
312          return new Enumeration<ActivityDefinitionKind>(this, ActivityDefinitionKind.VISIONPRESCRIPTION);
313        throw new FHIRException("Unknown ActivityDefinitionKind code '"+codeString+"'");
314        }
315    public String toCode(ActivityDefinitionKind code) {
316      if (code == ActivityDefinitionKind.APPOINTMENT)
317        return "Appointment";
318      if (code == ActivityDefinitionKind.APPOINTMENTRESPONSE)
319        return "AppointmentResponse";
320      if (code == ActivityDefinitionKind.CAREPLAN)
321        return "CarePlan";
322      if (code == ActivityDefinitionKind.CLAIM)
323        return "Claim";
324      if (code == ActivityDefinitionKind.COMMUNICATIONREQUEST)
325        return "CommunicationRequest";
326      if (code == ActivityDefinitionKind.CONTRACT)
327        return "Contract";
328      if (code == ActivityDefinitionKind.DEVICEREQUEST)
329        return "DeviceRequest";
330      if (code == ActivityDefinitionKind.ENROLLMENTREQUEST)
331        return "EnrollmentRequest";
332      if (code == ActivityDefinitionKind.IMMUNIZATIONRECOMMENDATION)
333        return "ImmunizationRecommendation";
334      if (code == ActivityDefinitionKind.MEDICATIONREQUEST)
335        return "MedicationRequest";
336      if (code == ActivityDefinitionKind.NUTRITIONORDER)
337        return "NutritionOrder";
338      if (code == ActivityDefinitionKind.SERVICEREQUEST)
339        return "ServiceRequest";
340      if (code == ActivityDefinitionKind.SUPPLYREQUEST)
341        return "SupplyRequest";
342      if (code == ActivityDefinitionKind.TASK)
343        return "Task";
344      if (code == ActivityDefinitionKind.VISIONPRESCRIPTION)
345        return "VisionPrescription";
346      return "?";
347      }
348    public String toSystem(ActivityDefinitionKind code) {
349      return code.getSystem();
350      }
351    }
352
353    public enum RequestIntent {
354        /**
355         * The request is a suggestion made by someone/something that does not have an intention to ensure it occurs and without providing an authorization to act.
356         */
357        PROPOSAL, 
358        /**
359         * The request represents an intention to ensure something occurs without providing an authorization for others to act.
360         */
361        PLAN, 
362        /**
363         * The request represents a request/demand and authorization for action.
364         */
365        ORDER, 
366        /**
367         * The request represents an original authorization for action.
368         */
369        ORIGINALORDER, 
370        /**
371         * The request represents an automatically generated supplemental authorization for action based on a parent authorization together with initial results of the action taken against that parent authorization.
372         */
373        REFLEXORDER, 
374        /**
375         * The request represents the view of an authorization instantiated by a fulfilling system representing the details of the fulfiller's intention to act upon a submitted order.
376         */
377        FILLERORDER, 
378        /**
379         * An order created in fulfillment of a broader order that represents the authorization for a single activity occurrence.  E.g. The administration of a single dose of a drug.
380         */
381        INSTANCEORDER, 
382        /**
383         * The request represents a component or option for a RequestGroup that establishes timing, conditionality and/or other constraints among a set of requests.  Refer to [[[RequestGroup]]] for additional information on how this status is used.
384         */
385        OPTION, 
386        /**
387         * added to help the parsers with the generic types
388         */
389        NULL;
390        public static RequestIntent fromCode(String codeString) throws FHIRException {
391            if (codeString == null || "".equals(codeString))
392                return null;
393        if ("proposal".equals(codeString))
394          return PROPOSAL;
395        if ("plan".equals(codeString))
396          return PLAN;
397        if ("order".equals(codeString))
398          return ORDER;
399        if ("original-order".equals(codeString))
400          return ORIGINALORDER;
401        if ("reflex-order".equals(codeString))
402          return REFLEXORDER;
403        if ("filler-order".equals(codeString))
404          return FILLERORDER;
405        if ("instance-order".equals(codeString))
406          return INSTANCEORDER;
407        if ("option".equals(codeString))
408          return OPTION;
409        if (Configuration.isAcceptInvalidEnums())
410          return null;
411        else
412          throw new FHIRException("Unknown RequestIntent code '"+codeString+"'");
413        }
414        public String toCode() {
415          switch (this) {
416            case PROPOSAL: return "proposal";
417            case PLAN: return "plan";
418            case ORDER: return "order";
419            case ORIGINALORDER: return "original-order";
420            case REFLEXORDER: return "reflex-order";
421            case FILLERORDER: return "filler-order";
422            case INSTANCEORDER: return "instance-order";
423            case OPTION: return "option";
424            default: return "?";
425          }
426        }
427        public String getSystem() {
428          switch (this) {
429            case PROPOSAL: return "http://hl7.org/fhir/request-intent";
430            case PLAN: return "http://hl7.org/fhir/request-intent";
431            case ORDER: return "http://hl7.org/fhir/request-intent";
432            case ORIGINALORDER: return "http://hl7.org/fhir/request-intent";
433            case REFLEXORDER: return "http://hl7.org/fhir/request-intent";
434            case FILLERORDER: return "http://hl7.org/fhir/request-intent";
435            case INSTANCEORDER: return "http://hl7.org/fhir/request-intent";
436            case OPTION: return "http://hl7.org/fhir/request-intent";
437            default: return "?";
438          }
439        }
440        public String getDefinition() {
441          switch (this) {
442            case PROPOSAL: return "The request is a suggestion made by someone/something that does not have an intention to ensure it occurs and without providing an authorization to act.";
443            case PLAN: return "The request represents an intention to ensure something occurs without providing an authorization for others to act.";
444            case ORDER: return "The request represents a request/demand and authorization for action.";
445            case ORIGINALORDER: return "The request represents an original authorization for action.";
446            case REFLEXORDER: return "The request represents an automatically generated supplemental authorization for action based on a parent authorization together with initial results of the action taken against that parent authorization.";
447            case FILLERORDER: return "The request represents the view of an authorization instantiated by a fulfilling system representing the details of the fulfiller's intention to act upon a submitted order.";
448            case INSTANCEORDER: return "An order created in fulfillment of a broader order that represents the authorization for a single activity occurrence.  E.g. The administration of a single dose of a drug.";
449            case OPTION: return "The request represents a component or option for a RequestGroup that establishes timing, conditionality and/or other constraints among a set of requests.  Refer to [[[RequestGroup]]] for additional information on how this status is used.";
450            default: return "?";
451          }
452        }
453        public String getDisplay() {
454          switch (this) {
455            case PROPOSAL: return "Proposal";
456            case PLAN: return "Plan";
457            case ORDER: return "Order";
458            case ORIGINALORDER: return "Original Order";
459            case REFLEXORDER: return "Reflex Order";
460            case FILLERORDER: return "Filler Order";
461            case INSTANCEORDER: return "Instance Order";
462            case OPTION: return "Option";
463            default: return "?";
464          }
465        }
466    }
467
468  public static class RequestIntentEnumFactory implements EnumFactory<RequestIntent> {
469    public RequestIntent fromCode(String codeString) throws IllegalArgumentException {
470      if (codeString == null || "".equals(codeString))
471            if (codeString == null || "".equals(codeString))
472                return null;
473        if ("proposal".equals(codeString))
474          return RequestIntent.PROPOSAL;
475        if ("plan".equals(codeString))
476          return RequestIntent.PLAN;
477        if ("order".equals(codeString))
478          return RequestIntent.ORDER;
479        if ("original-order".equals(codeString))
480          return RequestIntent.ORIGINALORDER;
481        if ("reflex-order".equals(codeString))
482          return RequestIntent.REFLEXORDER;
483        if ("filler-order".equals(codeString))
484          return RequestIntent.FILLERORDER;
485        if ("instance-order".equals(codeString))
486          return RequestIntent.INSTANCEORDER;
487        if ("option".equals(codeString))
488          return RequestIntent.OPTION;
489        throw new IllegalArgumentException("Unknown RequestIntent code '"+codeString+"'");
490        }
491        public Enumeration<RequestIntent> fromType(Base code) throws FHIRException {
492          if (code == null)
493            return null;
494          if (code.isEmpty())
495            return new Enumeration<RequestIntent>(this);
496          String codeString = ((PrimitiveType) code).asStringValue();
497          if (codeString == null || "".equals(codeString))
498            return null;
499        if ("proposal".equals(codeString))
500          return new Enumeration<RequestIntent>(this, RequestIntent.PROPOSAL);
501        if ("plan".equals(codeString))
502          return new Enumeration<RequestIntent>(this, RequestIntent.PLAN);
503        if ("order".equals(codeString))
504          return new Enumeration<RequestIntent>(this, RequestIntent.ORDER);
505        if ("original-order".equals(codeString))
506          return new Enumeration<RequestIntent>(this, RequestIntent.ORIGINALORDER);
507        if ("reflex-order".equals(codeString))
508          return new Enumeration<RequestIntent>(this, RequestIntent.REFLEXORDER);
509        if ("filler-order".equals(codeString))
510          return new Enumeration<RequestIntent>(this, RequestIntent.FILLERORDER);
511        if ("instance-order".equals(codeString))
512          return new Enumeration<RequestIntent>(this, RequestIntent.INSTANCEORDER);
513        if ("option".equals(codeString))
514          return new Enumeration<RequestIntent>(this, RequestIntent.OPTION);
515        throw new FHIRException("Unknown RequestIntent code '"+codeString+"'");
516        }
517    public String toCode(RequestIntent code) {
518      if (code == RequestIntent.PROPOSAL)
519        return "proposal";
520      if (code == RequestIntent.PLAN)
521        return "plan";
522      if (code == RequestIntent.ORDER)
523        return "order";
524      if (code == RequestIntent.ORIGINALORDER)
525        return "original-order";
526      if (code == RequestIntent.REFLEXORDER)
527        return "reflex-order";
528      if (code == RequestIntent.FILLERORDER)
529        return "filler-order";
530      if (code == RequestIntent.INSTANCEORDER)
531        return "instance-order";
532      if (code == RequestIntent.OPTION)
533        return "option";
534      return "?";
535      }
536    public String toSystem(RequestIntent code) {
537      return code.getSystem();
538      }
539    }
540
541    public enum RequestPriority {
542        /**
543         * The request has normal priority.
544         */
545        ROUTINE, 
546        /**
547         * The request should be actioned promptly - higher priority than routine.
548         */
549        URGENT, 
550        /**
551         * The request should be actioned as soon as possible - higher priority than urgent.
552         */
553        ASAP, 
554        /**
555         * The request should be actioned immediately - highest possible priority.  E.g. an emergency.
556         */
557        STAT, 
558        /**
559         * added to help the parsers with the generic types
560         */
561        NULL;
562        public static RequestPriority fromCode(String codeString) throws FHIRException {
563            if (codeString == null || "".equals(codeString))
564                return null;
565        if ("routine".equals(codeString))
566          return ROUTINE;
567        if ("urgent".equals(codeString))
568          return URGENT;
569        if ("asap".equals(codeString))
570          return ASAP;
571        if ("stat".equals(codeString))
572          return STAT;
573        if (Configuration.isAcceptInvalidEnums())
574          return null;
575        else
576          throw new FHIRException("Unknown RequestPriority code '"+codeString+"'");
577        }
578        public String toCode() {
579          switch (this) {
580            case ROUTINE: return "routine";
581            case URGENT: return "urgent";
582            case ASAP: return "asap";
583            case STAT: return "stat";
584            default: return "?";
585          }
586        }
587        public String getSystem() {
588          switch (this) {
589            case ROUTINE: return "http://hl7.org/fhir/request-priority";
590            case URGENT: return "http://hl7.org/fhir/request-priority";
591            case ASAP: return "http://hl7.org/fhir/request-priority";
592            case STAT: return "http://hl7.org/fhir/request-priority";
593            default: return "?";
594          }
595        }
596        public String getDefinition() {
597          switch (this) {
598            case ROUTINE: return "The request has normal priority.";
599            case URGENT: return "The request should be actioned promptly - higher priority than routine.";
600            case ASAP: return "The request should be actioned as soon as possible - higher priority than urgent.";
601            case STAT: return "The request should be actioned immediately - highest possible priority.  E.g. an emergency.";
602            default: return "?";
603          }
604        }
605        public String getDisplay() {
606          switch (this) {
607            case ROUTINE: return "Routine";
608            case URGENT: return "Urgent";
609            case ASAP: return "ASAP";
610            case STAT: return "STAT";
611            default: return "?";
612          }
613        }
614    }
615
616  public static class RequestPriorityEnumFactory implements EnumFactory<RequestPriority> {
617    public RequestPriority fromCode(String codeString) throws IllegalArgumentException {
618      if (codeString == null || "".equals(codeString))
619            if (codeString == null || "".equals(codeString))
620                return null;
621        if ("routine".equals(codeString))
622          return RequestPriority.ROUTINE;
623        if ("urgent".equals(codeString))
624          return RequestPriority.URGENT;
625        if ("asap".equals(codeString))
626          return RequestPriority.ASAP;
627        if ("stat".equals(codeString))
628          return RequestPriority.STAT;
629        throw new IllegalArgumentException("Unknown RequestPriority code '"+codeString+"'");
630        }
631        public Enumeration<RequestPriority> fromType(Base code) throws FHIRException {
632          if (code == null)
633            return null;
634          if (code.isEmpty())
635            return new Enumeration<RequestPriority>(this);
636          String codeString = ((PrimitiveType) code).asStringValue();
637          if (codeString == null || "".equals(codeString))
638            return null;
639        if ("routine".equals(codeString))
640          return new Enumeration<RequestPriority>(this, RequestPriority.ROUTINE);
641        if ("urgent".equals(codeString))
642          return new Enumeration<RequestPriority>(this, RequestPriority.URGENT);
643        if ("asap".equals(codeString))
644          return new Enumeration<RequestPriority>(this, RequestPriority.ASAP);
645        if ("stat".equals(codeString))
646          return new Enumeration<RequestPriority>(this, RequestPriority.STAT);
647        throw new FHIRException("Unknown RequestPriority code '"+codeString+"'");
648        }
649    public String toCode(RequestPriority code) {
650      if (code == RequestPriority.ROUTINE)
651        return "routine";
652      if (code == RequestPriority.URGENT)
653        return "urgent";
654      if (code == RequestPriority.ASAP)
655        return "asap";
656      if (code == RequestPriority.STAT)
657        return "stat";
658      return "?";
659      }
660    public String toSystem(RequestPriority code) {
661      return code.getSystem();
662      }
663    }
664
665    public enum ActivityParticipantType {
666        /**
667         * The participant is the patient under evaluation.
668         */
669        PATIENT, 
670        /**
671         * The participant is a practitioner involved in the patient's care.
672         */
673        PRACTITIONER, 
674        /**
675         * The participant is a person related to the patient.
676         */
677        RELATEDPERSON, 
678        /**
679         * The participant is a system or device used in the care of the patient.
680         */
681        DEVICE, 
682        /**
683         * added to help the parsers with the generic types
684         */
685        NULL;
686        public static ActivityParticipantType fromCode(String codeString) throws FHIRException {
687            if (codeString == null || "".equals(codeString))
688                return null;
689        if ("patient".equals(codeString))
690          return PATIENT;
691        if ("practitioner".equals(codeString))
692          return PRACTITIONER;
693        if ("related-person".equals(codeString))
694          return RELATEDPERSON;
695        if ("device".equals(codeString))
696          return DEVICE;
697        if (Configuration.isAcceptInvalidEnums())
698          return null;
699        else
700          throw new FHIRException("Unknown ActivityParticipantType code '"+codeString+"'");
701        }
702        public String toCode() {
703          switch (this) {
704            case PATIENT: return "patient";
705            case PRACTITIONER: return "practitioner";
706            case RELATEDPERSON: return "related-person";
707            case DEVICE: return "device";
708            default: return "?";
709          }
710        }
711        public String getSystem() {
712          switch (this) {
713            case PATIENT: return "http://hl7.org/fhir/action-participant-type";
714            case PRACTITIONER: return "http://hl7.org/fhir/action-participant-type";
715            case RELATEDPERSON: return "http://hl7.org/fhir/action-participant-type";
716            case DEVICE: return "http://hl7.org/fhir/action-participant-type";
717            default: return "?";
718          }
719        }
720        public String getDefinition() {
721          switch (this) {
722            case PATIENT: return "The participant is the patient under evaluation.";
723            case PRACTITIONER: return "The participant is a practitioner involved in the patient's care.";
724            case RELATEDPERSON: return "The participant is a person related to the patient.";
725            case DEVICE: return "The participant is a system or device used in the care of the patient.";
726            default: return "?";
727          }
728        }
729        public String getDisplay() {
730          switch (this) {
731            case PATIENT: return "Patient";
732            case PRACTITIONER: return "Practitioner";
733            case RELATEDPERSON: return "Related Person";
734            case DEVICE: return "Device";
735            default: return "?";
736          }
737        }
738    }
739
740  public static class ActivityParticipantTypeEnumFactory implements EnumFactory<ActivityParticipantType> {
741    public ActivityParticipantType fromCode(String codeString) throws IllegalArgumentException {
742      if (codeString == null || "".equals(codeString))
743            if (codeString == null || "".equals(codeString))
744                return null;
745        if ("patient".equals(codeString))
746          return ActivityParticipantType.PATIENT;
747        if ("practitioner".equals(codeString))
748          return ActivityParticipantType.PRACTITIONER;
749        if ("related-person".equals(codeString))
750          return ActivityParticipantType.RELATEDPERSON;
751        if ("device".equals(codeString))
752          return ActivityParticipantType.DEVICE;
753        throw new IllegalArgumentException("Unknown ActivityParticipantType code '"+codeString+"'");
754        }
755        public Enumeration<ActivityParticipantType> fromType(Base code) throws FHIRException {
756          if (code == null)
757            return null;
758          if (code.isEmpty())
759            return new Enumeration<ActivityParticipantType>(this);
760          String codeString = ((PrimitiveType) code).asStringValue();
761          if (codeString == null || "".equals(codeString))
762            return null;
763        if ("patient".equals(codeString))
764          return new Enumeration<ActivityParticipantType>(this, ActivityParticipantType.PATIENT);
765        if ("practitioner".equals(codeString))
766          return new Enumeration<ActivityParticipantType>(this, ActivityParticipantType.PRACTITIONER);
767        if ("related-person".equals(codeString))
768          return new Enumeration<ActivityParticipantType>(this, ActivityParticipantType.RELATEDPERSON);
769        if ("device".equals(codeString))
770          return new Enumeration<ActivityParticipantType>(this, ActivityParticipantType.DEVICE);
771        throw new FHIRException("Unknown ActivityParticipantType code '"+codeString+"'");
772        }
773    public String toCode(ActivityParticipantType code) {
774      if (code == ActivityParticipantType.PATIENT)
775        return "patient";
776      if (code == ActivityParticipantType.PRACTITIONER)
777        return "practitioner";
778      if (code == ActivityParticipantType.RELATEDPERSON)
779        return "related-person";
780      if (code == ActivityParticipantType.DEVICE)
781        return "device";
782      return "?";
783      }
784    public String toSystem(ActivityParticipantType code) {
785      return code.getSystem();
786      }
787    }
788
789    @Block()
790    public static class ActivityDefinitionParticipantComponent extends BackboneElement implements IBaseBackboneElement {
791        /**
792         * The type of participant in the action.
793         */
794        @Child(name = "type", type = {CodeType.class}, order=1, min=1, max=1, modifier=false, summary=false)
795        @Description(shortDefinition="patient | practitioner | related-person | device", formalDefinition="The type of participant in the action." )
796        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/action-participant-type")
797        protected Enumeration<ActivityParticipantType> type;
798
799        /**
800         * The role the participant should play in performing the described action.
801         */
802        @Child(name = "role", type = {CodeableConcept.class}, order=2, min=0, max=1, modifier=false, summary=false)
803        @Description(shortDefinition="E.g. Nurse, Surgeon, Parent, etc.", formalDefinition="The role the participant should play in performing the described action." )
804        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/action-participant-role")
805        protected CodeableConcept role;
806
807        private static final long serialVersionUID = -1450932564L;
808
809    /**
810     * Constructor
811     */
812      public ActivityDefinitionParticipantComponent() {
813        super();
814      }
815
816    /**
817     * Constructor
818     */
819      public ActivityDefinitionParticipantComponent(Enumeration<ActivityParticipantType> type) {
820        super();
821        this.type = type;
822      }
823
824        /**
825         * @return {@link #type} (The type of participant in the action.). This is the underlying object with id, value and extensions. The accessor "getType" gives direct access to the value
826         */
827        public Enumeration<ActivityParticipantType> getTypeElement() { 
828          if (this.type == null)
829            if (Configuration.errorOnAutoCreate())
830              throw new Error("Attempt to auto-create ActivityDefinitionParticipantComponent.type");
831            else if (Configuration.doAutoCreate())
832              this.type = new Enumeration<ActivityParticipantType>(new ActivityParticipantTypeEnumFactory()); // bb
833          return this.type;
834        }
835
836        public boolean hasTypeElement() { 
837          return this.type != null && !this.type.isEmpty();
838        }
839
840        public boolean hasType() { 
841          return this.type != null && !this.type.isEmpty();
842        }
843
844        /**
845         * @param value {@link #type} (The type of participant in the action.). This is the underlying object with id, value and extensions. The accessor "getType" gives direct access to the value
846         */
847        public ActivityDefinitionParticipantComponent setTypeElement(Enumeration<ActivityParticipantType> value) { 
848          this.type = value;
849          return this;
850        }
851
852        /**
853         * @return The type of participant in the action.
854         */
855        public ActivityParticipantType getType() { 
856          return this.type == null ? null : this.type.getValue();
857        }
858
859        /**
860         * @param value The type of participant in the action.
861         */
862        public ActivityDefinitionParticipantComponent setType(ActivityParticipantType value) { 
863            if (this.type == null)
864              this.type = new Enumeration<ActivityParticipantType>(new ActivityParticipantTypeEnumFactory());
865            this.type.setValue(value);
866          return this;
867        }
868
869        /**
870         * @return {@link #role} (The role the participant should play in performing the described action.)
871         */
872        public CodeableConcept getRole() { 
873          if (this.role == null)
874            if (Configuration.errorOnAutoCreate())
875              throw new Error("Attempt to auto-create ActivityDefinitionParticipantComponent.role");
876            else if (Configuration.doAutoCreate())
877              this.role = new CodeableConcept(); // cc
878          return this.role;
879        }
880
881        public boolean hasRole() { 
882          return this.role != null && !this.role.isEmpty();
883        }
884
885        /**
886         * @param value {@link #role} (The role the participant should play in performing the described action.)
887         */
888        public ActivityDefinitionParticipantComponent setRole(CodeableConcept value) { 
889          this.role = value;
890          return this;
891        }
892
893        protected void listChildren(List<Property> children) {
894          super.listChildren(children);
895          children.add(new Property("type", "code", "The type of participant in the action.", 0, 1, type));
896          children.add(new Property("role", "CodeableConcept", "The role the participant should play in performing the described action.", 0, 1, role));
897        }
898
899        @Override
900        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
901          switch (_hash) {
902          case 3575610: /*type*/  return new Property("type", "code", "The type of participant in the action.", 0, 1, type);
903          case 3506294: /*role*/  return new Property("role", "CodeableConcept", "The role the participant should play in performing the described action.", 0, 1, role);
904          default: return super.getNamedProperty(_hash, _name, _checkValid);
905          }
906
907        }
908
909      @Override
910      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
911        switch (hash) {
912        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // Enumeration<ActivityParticipantType>
913        case 3506294: /*role*/ return this.role == null ? new Base[0] : new Base[] {this.role}; // CodeableConcept
914        default: return super.getProperty(hash, name, checkValid);
915        }
916
917      }
918
919      @Override
920      public Base setProperty(int hash, String name, Base value) throws FHIRException {
921        switch (hash) {
922        case 3575610: // type
923          value = new ActivityParticipantTypeEnumFactory().fromType(castToCode(value));
924          this.type = (Enumeration) value; // Enumeration<ActivityParticipantType>
925          return value;
926        case 3506294: // role
927          this.role = castToCodeableConcept(value); // CodeableConcept
928          return value;
929        default: return super.setProperty(hash, name, value);
930        }
931
932      }
933
934      @Override
935      public Base setProperty(String name, Base value) throws FHIRException {
936        if (name.equals("type")) {
937          value = new ActivityParticipantTypeEnumFactory().fromType(castToCode(value));
938          this.type = (Enumeration) value; // Enumeration<ActivityParticipantType>
939        } else if (name.equals("role")) {
940          this.role = castToCodeableConcept(value); // CodeableConcept
941        } else
942          return super.setProperty(name, value);
943        return value;
944      }
945
946      @Override
947      public Base makeProperty(int hash, String name) throws FHIRException {
948        switch (hash) {
949        case 3575610:  return getTypeElement();
950        case 3506294:  return getRole(); 
951        default: return super.makeProperty(hash, name);
952        }
953
954      }
955
956      @Override
957      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
958        switch (hash) {
959        case 3575610: /*type*/ return new String[] {"code"};
960        case 3506294: /*role*/ return new String[] {"CodeableConcept"};
961        default: return super.getTypesForProperty(hash, name);
962        }
963
964      }
965
966      @Override
967      public Base addChild(String name) throws FHIRException {
968        if (name.equals("type")) {
969          throw new FHIRException("Cannot call addChild on a primitive type ActivityDefinition.type");
970        }
971        else if (name.equals("role")) {
972          this.role = new CodeableConcept();
973          return this.role;
974        }
975        else
976          return super.addChild(name);
977      }
978
979      public ActivityDefinitionParticipantComponent copy() {
980        ActivityDefinitionParticipantComponent dst = new ActivityDefinitionParticipantComponent();
981        copyValues(dst);
982        dst.type = type == null ? null : type.copy();
983        dst.role = role == null ? null : role.copy();
984        return dst;
985      }
986
987      @Override
988      public boolean equalsDeep(Base other_) {
989        if (!super.equalsDeep(other_))
990          return false;
991        if (!(other_ instanceof ActivityDefinitionParticipantComponent))
992          return false;
993        ActivityDefinitionParticipantComponent o = (ActivityDefinitionParticipantComponent) other_;
994        return compareDeep(type, o.type, true) && compareDeep(role, o.role, true);
995      }
996
997      @Override
998      public boolean equalsShallow(Base other_) {
999        if (!super.equalsShallow(other_))
1000          return false;
1001        if (!(other_ instanceof ActivityDefinitionParticipantComponent))
1002          return false;
1003        ActivityDefinitionParticipantComponent o = (ActivityDefinitionParticipantComponent) other_;
1004        return compareValues(type, o.type, true);
1005      }
1006
1007      public boolean isEmpty() {
1008        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(type, role);
1009      }
1010
1011  public String fhirType() {
1012    return "ActivityDefinition.participant";
1013
1014  }
1015
1016  }
1017
1018    @Block()
1019    public static class ActivityDefinitionDynamicValueComponent extends BackboneElement implements IBaseBackboneElement {
1020        /**
1021         * The path to the element to be customized. This is the path on the resource that will hold the result of the calculation defined by the expression.
1022         */
1023        @Child(name = "path", type = {StringType.class}, order=1, min=1, max=1, modifier=false, summary=false)
1024        @Description(shortDefinition="The path to the element to be set dynamically", formalDefinition="The path to the element to be customized. This is the path on the resource that will hold the result of the calculation defined by the expression." )
1025        protected StringType path;
1026
1027        /**
1028         * An expression specifying the value of the customized element.
1029         */
1030        @Child(name = "expression", type = {Expression.class}, order=2, min=1, max=1, modifier=false, summary=false)
1031        @Description(shortDefinition="An expression that provides the dynamic value for the customization", formalDefinition="An expression specifying the value of the customized element." )
1032        protected Expression expression;
1033
1034        private static final long serialVersionUID = 1064529082L;
1035
1036    /**
1037     * Constructor
1038     */
1039      public ActivityDefinitionDynamicValueComponent() {
1040        super();
1041      }
1042
1043    /**
1044     * Constructor
1045     */
1046      public ActivityDefinitionDynamicValueComponent(StringType path, Expression expression) {
1047        super();
1048        this.path = path;
1049        this.expression = expression;
1050      }
1051
1052        /**
1053         * @return {@link #path} (The path to the element to be customized. This is the path on the resource that will hold the result of the calculation defined by the expression.). This is the underlying object with id, value and extensions. The accessor "getPath" gives direct access to the value
1054         */
1055        public StringType getPathElement() { 
1056          if (this.path == null)
1057            if (Configuration.errorOnAutoCreate())
1058              throw new Error("Attempt to auto-create ActivityDefinitionDynamicValueComponent.path");
1059            else if (Configuration.doAutoCreate())
1060              this.path = new StringType(); // bb
1061          return this.path;
1062        }
1063
1064        public boolean hasPathElement() { 
1065          return this.path != null && !this.path.isEmpty();
1066        }
1067
1068        public boolean hasPath() { 
1069          return this.path != null && !this.path.isEmpty();
1070        }
1071
1072        /**
1073         * @param value {@link #path} (The path to the element to be customized. This is the path on the resource that will hold the result of the calculation defined by the expression.). This is the underlying object with id, value and extensions. The accessor "getPath" gives direct access to the value
1074         */
1075        public ActivityDefinitionDynamicValueComponent setPathElement(StringType value) { 
1076          this.path = value;
1077          return this;
1078        }
1079
1080        /**
1081         * @return The path to the element to be customized. This is the path on the resource that will hold the result of the calculation defined by the expression.
1082         */
1083        public String getPath() { 
1084          return this.path == null ? null : this.path.getValue();
1085        }
1086
1087        /**
1088         * @param value The path to the element to be customized. This is the path on the resource that will hold the result of the calculation defined by the expression.
1089         */
1090        public ActivityDefinitionDynamicValueComponent setPath(String value) { 
1091            if (this.path == null)
1092              this.path = new StringType();
1093            this.path.setValue(value);
1094          return this;
1095        }
1096
1097        /**
1098         * @return {@link #expression} (An expression specifying the value of the customized element.)
1099         */
1100        public Expression getExpression() { 
1101          if (this.expression == null)
1102            if (Configuration.errorOnAutoCreate())
1103              throw new Error("Attempt to auto-create ActivityDefinitionDynamicValueComponent.expression");
1104            else if (Configuration.doAutoCreate())
1105              this.expression = new Expression(); // cc
1106          return this.expression;
1107        }
1108
1109        public boolean hasExpression() { 
1110          return this.expression != null && !this.expression.isEmpty();
1111        }
1112
1113        /**
1114         * @param value {@link #expression} (An expression specifying the value of the customized element.)
1115         */
1116        public ActivityDefinitionDynamicValueComponent setExpression(Expression value) { 
1117          this.expression = value;
1118          return this;
1119        }
1120
1121        protected void listChildren(List<Property> children) {
1122          super.listChildren(children);
1123          children.add(new Property("path", "string", "The path to the element to be customized. This is the path on the resource that will hold the result of the calculation defined by the expression.", 0, 1, path));
1124          children.add(new Property("expression", "Expression", "An expression specifying the value of the customized element.", 0, 1, expression));
1125        }
1126
1127        @Override
1128        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1129          switch (_hash) {
1130          case 3433509: /*path*/  return new Property("path", "string", "The path to the element to be customized. This is the path on the resource that will hold the result of the calculation defined by the expression.", 0, 1, path);
1131          case -1795452264: /*expression*/  return new Property("expression", "Expression", "An expression specifying the value of the customized element.", 0, 1, expression);
1132          default: return super.getNamedProperty(_hash, _name, _checkValid);
1133          }
1134
1135        }
1136
1137      @Override
1138      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1139        switch (hash) {
1140        case 3433509: /*path*/ return this.path == null ? new Base[0] : new Base[] {this.path}; // StringType
1141        case -1795452264: /*expression*/ return this.expression == null ? new Base[0] : new Base[] {this.expression}; // Expression
1142        default: return super.getProperty(hash, name, checkValid);
1143        }
1144
1145      }
1146
1147      @Override
1148      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1149        switch (hash) {
1150        case 3433509: // path
1151          this.path = castToString(value); // StringType
1152          return value;
1153        case -1795452264: // expression
1154          this.expression = castToExpression(value); // Expression
1155          return value;
1156        default: return super.setProperty(hash, name, value);
1157        }
1158
1159      }
1160
1161      @Override
1162      public Base setProperty(String name, Base value) throws FHIRException {
1163        if (name.equals("path")) {
1164          this.path = castToString(value); // StringType
1165        } else if (name.equals("expression")) {
1166          this.expression = castToExpression(value); // Expression
1167        } else
1168          return super.setProperty(name, value);
1169        return value;
1170      }
1171
1172      @Override
1173      public Base makeProperty(int hash, String name) throws FHIRException {
1174        switch (hash) {
1175        case 3433509:  return getPathElement();
1176        case -1795452264:  return getExpression(); 
1177        default: return super.makeProperty(hash, name);
1178        }
1179
1180      }
1181
1182      @Override
1183      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1184        switch (hash) {
1185        case 3433509: /*path*/ return new String[] {"string"};
1186        case -1795452264: /*expression*/ return new String[] {"Expression"};
1187        default: return super.getTypesForProperty(hash, name);
1188        }
1189
1190      }
1191
1192      @Override
1193      public Base addChild(String name) throws FHIRException {
1194        if (name.equals("path")) {
1195          throw new FHIRException("Cannot call addChild on a primitive type ActivityDefinition.path");
1196        }
1197        else if (name.equals("expression")) {
1198          this.expression = new Expression();
1199          return this.expression;
1200        }
1201        else
1202          return super.addChild(name);
1203      }
1204
1205      public ActivityDefinitionDynamicValueComponent copy() {
1206        ActivityDefinitionDynamicValueComponent dst = new ActivityDefinitionDynamicValueComponent();
1207        copyValues(dst);
1208        dst.path = path == null ? null : path.copy();
1209        dst.expression = expression == null ? null : expression.copy();
1210        return dst;
1211      }
1212
1213      @Override
1214      public boolean equalsDeep(Base other_) {
1215        if (!super.equalsDeep(other_))
1216          return false;
1217        if (!(other_ instanceof ActivityDefinitionDynamicValueComponent))
1218          return false;
1219        ActivityDefinitionDynamicValueComponent o = (ActivityDefinitionDynamicValueComponent) other_;
1220        return compareDeep(path, o.path, true) && compareDeep(expression, o.expression, true);
1221      }
1222
1223      @Override
1224      public boolean equalsShallow(Base other_) {
1225        if (!super.equalsShallow(other_))
1226          return false;
1227        if (!(other_ instanceof ActivityDefinitionDynamicValueComponent))
1228          return false;
1229        ActivityDefinitionDynamicValueComponent o = (ActivityDefinitionDynamicValueComponent) other_;
1230        return compareValues(path, o.path, true);
1231      }
1232
1233      public boolean isEmpty() {
1234        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(path, expression);
1235      }
1236
1237  public String fhirType() {
1238    return "ActivityDefinition.dynamicValue";
1239
1240  }
1241
1242  }
1243
1244    /**
1245     * A formal identifier that is used to identify this activity definition when it is represented in other formats, or referenced in a specification, model, design or an instance.
1246     */
1247    @Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1248    @Description(shortDefinition="Additional identifier for the activity definition", formalDefinition="A formal identifier that is used to identify this activity definition when it is represented in other formats, or referenced in a specification, model, design or an instance." )
1249    protected List<Identifier> identifier;
1250
1251    /**
1252     * An explanatory or alternate title for the activity definition giving additional information about its content.
1253     */
1254    @Child(name = "subtitle", type = {StringType.class}, order=1, min=0, max=1, modifier=false, summary=false)
1255    @Description(shortDefinition="Subordinate title of the activity definition", formalDefinition="An explanatory or alternate title for the activity definition giving additional information about its content." )
1256    protected StringType subtitle;
1257
1258    /**
1259     * A code or group definition that describes the intended subject of the activity being defined.
1260     */
1261    @Child(name = "subject", type = {CodeableConcept.class, Group.class}, order=2, min=0, max=1, modifier=false, summary=false)
1262    @Description(shortDefinition="Type of individual the activity definition is intended for", formalDefinition="A code or group definition that describes the intended subject of the activity being defined." )
1263    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/subject-type")
1264    protected Type subject;
1265
1266    /**
1267     * Explanation of why this activity definition is needed and why it has been designed as it has.
1268     */
1269    @Child(name = "purpose", type = {MarkdownType.class}, order=3, min=0, max=1, modifier=false, summary=false)
1270    @Description(shortDefinition="Why this activity definition is defined", formalDefinition="Explanation of why this activity definition is needed and why it has been designed as it has." )
1271    protected MarkdownType purpose;
1272
1273    /**
1274     * A detailed description of how the activity definition is used from a clinical perspective.
1275     */
1276    @Child(name = "usage", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=false)
1277    @Description(shortDefinition="Describes the clinical usage of the activity definition", formalDefinition="A detailed description of how the activity definition is used from a clinical perspective." )
1278    protected StringType usage;
1279
1280    /**
1281     * A copyright statement relating to the activity definition and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the activity definition.
1282     */
1283    @Child(name = "copyright", type = {MarkdownType.class}, order=5, min=0, max=1, modifier=false, summary=false)
1284    @Description(shortDefinition="Use and/or publishing restrictions", formalDefinition="A copyright statement relating to the activity definition and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the activity definition." )
1285    protected MarkdownType copyright;
1286
1287    /**
1288     * The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage.
1289     */
1290    @Child(name = "approvalDate", type = {DateType.class}, order=6, min=0, max=1, modifier=false, summary=false)
1291    @Description(shortDefinition="When the activity definition was approved by publisher", formalDefinition="The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage." )
1292    protected DateType approvalDate;
1293
1294    /**
1295     * The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date.
1296     */
1297    @Child(name = "lastReviewDate", type = {DateType.class}, order=7, min=0, max=1, modifier=false, summary=false)
1298    @Description(shortDefinition="When the activity definition was last reviewed", formalDefinition="The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date." )
1299    protected DateType lastReviewDate;
1300
1301    /**
1302     * The period during which the activity definition content was or is planned to be in active use.
1303     */
1304    @Child(name = "effectivePeriod", type = {Period.class}, order=8, min=0, max=1, modifier=false, summary=true)
1305    @Description(shortDefinition="When the activity definition is expected to be used", formalDefinition="The period during which the activity definition content was or is planned to be in active use." )
1306    protected Period effectivePeriod;
1307
1308    /**
1309     * Descriptive topics related to the content of the activity. Topics provide a high-level categorization of the activity that can be useful for filtering and searching.
1310     */
1311    @Child(name = "topic", type = {CodeableConcept.class}, order=9, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1312    @Description(shortDefinition="E.g. Education, Treatment, Assessment, etc.", formalDefinition="Descriptive topics related to the content of the activity. Topics provide a high-level categorization of the activity that can be useful for filtering and searching." )
1313    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/definition-topic")
1314    protected List<CodeableConcept> topic;
1315
1316    /**
1317     * An individiual or organization primarily involved in the creation and maintenance of the content.
1318     */
1319    @Child(name = "author", type = {ContactDetail.class}, order=10, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1320    @Description(shortDefinition="Who authored the content", formalDefinition="An individiual or organization primarily involved in the creation and maintenance of the content." )
1321    protected List<ContactDetail> author;
1322
1323    /**
1324     * An individual or organization primarily responsible for internal coherence of the content.
1325     */
1326    @Child(name = "editor", type = {ContactDetail.class}, order=11, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1327    @Description(shortDefinition="Who edited the content", formalDefinition="An individual or organization primarily responsible for internal coherence of the content." )
1328    protected List<ContactDetail> editor;
1329
1330    /**
1331     * An individual or organization primarily responsible for review of some aspect of the content.
1332     */
1333    @Child(name = "reviewer", type = {ContactDetail.class}, order=12, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1334    @Description(shortDefinition="Who reviewed the content", formalDefinition="An individual or organization primarily responsible for review of some aspect of the content." )
1335    protected List<ContactDetail> reviewer;
1336
1337    /**
1338     * An individual or organization responsible for officially endorsing the content for use in some setting.
1339     */
1340    @Child(name = "endorser", type = {ContactDetail.class}, order=13, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1341    @Description(shortDefinition="Who endorsed the content", formalDefinition="An individual or organization responsible for officially endorsing the content for use in some setting." )
1342    protected List<ContactDetail> endorser;
1343
1344    /**
1345     * Related artifacts such as additional documentation, justification, or bibliographic references.
1346     */
1347    @Child(name = "relatedArtifact", type = {RelatedArtifact.class}, order=14, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1348    @Description(shortDefinition="Additional documentation, citations, etc.", formalDefinition="Related artifacts such as additional documentation, justification, or bibliographic references." )
1349    protected List<RelatedArtifact> relatedArtifact;
1350
1351    /**
1352     * A reference to a Library resource containing any formal logic used by the activity definition.
1353     */
1354    @Child(name = "library", type = {CanonicalType.class}, order=15, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1355    @Description(shortDefinition="Logic used by the activity definition", formalDefinition="A reference to a Library resource containing any formal logic used by the activity definition." )
1356    protected List<CanonicalType> library;
1357
1358    /**
1359     * A description of the kind of resource the activity definition is representing. For example, a MedicationRequest, a ServiceRequest, or a CommunicationRequest. Typically, but not always, this is a Request resource.
1360     */
1361    @Child(name = "kind", type = {CodeType.class}, order=16, min=0, max=1, modifier=false, summary=true)
1362    @Description(shortDefinition="Kind of resource", formalDefinition="A description of the kind of resource the activity definition is representing. For example, a MedicationRequest, a ServiceRequest, or a CommunicationRequest. Typically, but not always, this is a Request resource." )
1363    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/request-resource-types")
1364    protected Enumeration<ActivityDefinitionKind> kind;
1365
1366    /**
1367     * A profile to which the target of the activity definition is expected to conform.
1368     */
1369    @Child(name = "profile", type = {CanonicalType.class}, order=17, min=0, max=1, modifier=false, summary=false)
1370    @Description(shortDefinition="What profile the resource needs to conform to", formalDefinition="A profile to which the target of the activity definition is expected to conform." )
1371    protected CanonicalType profile;
1372
1373    /**
1374     * Detailed description of the type of activity; e.g. What lab test, what procedure, what kind of encounter.
1375     */
1376    @Child(name = "code", type = {CodeableConcept.class}, order=18, min=0, max=1, modifier=false, summary=true)
1377    @Description(shortDefinition="Detail type of activity", formalDefinition="Detailed description of the type of activity; e.g. What lab test, what procedure, what kind of encounter." )
1378    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/procedure-code")
1379    protected CodeableConcept code;
1380
1381    /**
1382     * Indicates the level of authority/intentionality associated with the activity and where the request should fit into the workflow chain.
1383     */
1384    @Child(name = "intent", type = {CodeType.class}, order=19, min=0, max=1, modifier=false, summary=false)
1385    @Description(shortDefinition="proposal | plan | order", formalDefinition="Indicates the level of authority/intentionality associated with the activity and where the request should fit into the workflow chain." )
1386    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/request-intent")
1387    protected Enumeration<RequestIntent> intent;
1388
1389    /**
1390     * Indicates how quickly the activity  should be addressed with respect to other requests.
1391     */
1392    @Child(name = "priority", type = {CodeType.class}, order=20, min=0, max=1, modifier=false, summary=false)
1393    @Description(shortDefinition="routine | urgent | asap | stat", formalDefinition="Indicates how quickly the activity  should be addressed with respect to other requests." )
1394    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/request-priority")
1395    protected Enumeration<RequestPriority> priority;
1396
1397    /**
1398     * Set this to true if the definition is to indicate that a particular activity should NOT be performed. If true, this element should be interpreted to reinforce a negative coding. For example NPO as a code with a doNotPerform of true would still indicate to NOT perform the action.
1399     */
1400    @Child(name = "doNotPerform", type = {BooleanType.class}, order=21, min=0, max=1, modifier=true, summary=true)
1401    @Description(shortDefinition="True if the activity should not be performed", formalDefinition="Set this to true if the definition is to indicate that a particular activity should NOT be performed. If true, this element should be interpreted to reinforce a negative coding. For example NPO as a code with a doNotPerform of true would still indicate to NOT perform the action." )
1402    protected BooleanType doNotPerform;
1403
1404    /**
1405     * The period, timing or frequency upon which the described activity is to occur.
1406     */
1407    @Child(name = "timing", type = {Timing.class, DateTimeType.class, Age.class, Period.class, Range.class, Duration.class}, order=22, min=0, max=1, modifier=false, summary=false)
1408    @Description(shortDefinition="When activity is to occur", formalDefinition="The period, timing or frequency upon which the described activity is to occur." )
1409    protected Type timing;
1410
1411    /**
1412     * Identifies the facility where the activity will occur; e.g. home, hospital, specific clinic, etc.
1413     */
1414    @Child(name = "location", type = {Location.class}, order=23, min=0, max=1, modifier=false, summary=false)
1415    @Description(shortDefinition="Where it should happen", formalDefinition="Identifies the facility where the activity will occur; e.g. home, hospital, specific clinic, etc." )
1416    protected Reference location;
1417
1418    /**
1419     * The actual object that is the target of the reference (Identifies the facility where the activity will occur; e.g. home, hospital, specific clinic, etc.)
1420     */
1421    protected Location locationTarget;
1422
1423    /**
1424     * Indicates who should participate in performing the action described.
1425     */
1426    @Child(name = "participant", type = {}, order=24, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1427    @Description(shortDefinition="Who should participate in the action", formalDefinition="Indicates who should participate in performing the action described." )
1428    protected List<ActivityDefinitionParticipantComponent> participant;
1429
1430    /**
1431     * Identifies the food, drug or other product being consumed or supplied in the activity.
1432     */
1433    @Child(name = "product", type = {Medication.class, Substance.class, CodeableConcept.class}, order=25, min=0, max=1, modifier=false, summary=false)
1434    @Description(shortDefinition="What's administered/supplied", formalDefinition="Identifies the food, drug or other product being consumed or supplied in the activity." )
1435    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/medication-codes")
1436    protected Type product;
1437
1438    /**
1439     * Identifies the quantity expected to be consumed at once (per dose, per meal, etc.).
1440     */
1441    @Child(name = "quantity", type = {Quantity.class}, order=26, min=0, max=1, modifier=false, summary=false)
1442    @Description(shortDefinition="How much is administered/consumed/supplied", formalDefinition="Identifies the quantity expected to be consumed at once (per dose, per meal, etc.)." )
1443    protected Quantity quantity;
1444
1445    /**
1446     * Provides detailed dosage instructions in the same way that they are described for MedicationRequest resources.
1447     */
1448    @Child(name = "dosage", type = {Dosage.class}, order=27, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1449    @Description(shortDefinition="Detailed dosage instructions", formalDefinition="Provides detailed dosage instructions in the same way that they are described for MedicationRequest resources." )
1450    protected List<Dosage> dosage;
1451
1452    /**
1453     * Indicates the sites on the subject's body where the procedure should be performed (I.e. the target sites).
1454     */
1455    @Child(name = "bodySite", type = {CodeableConcept.class}, order=28, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1456    @Description(shortDefinition="What part of body to perform on", formalDefinition="Indicates the sites on the subject's body where the procedure should be performed (I.e. the target sites)." )
1457    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/body-site")
1458    protected List<CodeableConcept> bodySite;
1459
1460    /**
1461     * Defines specimen requirements for the action to be performed, such as required specimens for a lab test.
1462     */
1463    @Child(name = "specimenRequirement", type = {SpecimenDefinition.class}, order=29, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1464    @Description(shortDefinition="What specimens are required to perform this action", formalDefinition="Defines specimen requirements for the action to be performed, such as required specimens for a lab test." )
1465    protected List<Reference> specimenRequirement;
1466    /**
1467     * The actual objects that are the target of the reference (Defines specimen requirements for the action to be performed, such as required specimens for a lab test.)
1468     */
1469    protected List<SpecimenDefinition> specimenRequirementTarget;
1470
1471
1472    /**
1473     * Defines observation requirements for the action to be performed, such as body weight or surface area.
1474     */
1475    @Child(name = "observationRequirement", type = {ObservationDefinition.class}, order=30, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1476    @Description(shortDefinition="What observations are required to perform this action", formalDefinition="Defines observation requirements for the action to be performed, such as body weight or surface area." )
1477    protected List<Reference> observationRequirement;
1478    /**
1479     * The actual objects that are the target of the reference (Defines observation requirements for the action to be performed, such as body weight or surface area.)
1480     */
1481    protected List<ObservationDefinition> observationRequirementTarget;
1482
1483
1484    /**
1485     * Defines the observations that are expected to be produced by the action.
1486     */
1487    @Child(name = "observationResultRequirement", type = {ObservationDefinition.class}, order=31, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1488    @Description(shortDefinition="What observations must be produced by this action", formalDefinition="Defines the observations that are expected to be produced by the action." )
1489    protected List<Reference> observationResultRequirement;
1490    /**
1491     * The actual objects that are the target of the reference (Defines the observations that are expected to be produced by the action.)
1492     */
1493    protected List<ObservationDefinition> observationResultRequirementTarget;
1494
1495
1496    /**
1497     * A reference to a StructureMap resource that defines a transform that can be executed to produce the intent resource using the ActivityDefinition instance as the input.
1498     */
1499    @Child(name = "transform", type = {CanonicalType.class}, order=32, min=0, max=1, modifier=false, summary=false)
1500    @Description(shortDefinition="Transform to apply the template", formalDefinition="A reference to a StructureMap resource that defines a transform that can be executed to produce the intent resource using the ActivityDefinition instance as the input." )
1501    protected CanonicalType transform;
1502
1503    /**
1504     * Dynamic values that will be evaluated to produce values for elements of the resulting resource. For example, if the dosage of a medication must be computed based on the patient's weight, a dynamic value would be used to specify an expression that calculated the weight, and the path on the request resource that would contain the result.
1505     */
1506    @Child(name = "dynamicValue", type = {}, order=33, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1507    @Description(shortDefinition="Dynamic aspects of the definition", formalDefinition="Dynamic values that will be evaluated to produce values for elements of the resulting resource. For example, if the dosage of a medication must be computed based on the patient's weight, a dynamic value would be used to specify an expression that calculated the weight, and the path on the request resource that would contain the result." )
1508    protected List<ActivityDefinitionDynamicValueComponent> dynamicValue;
1509
1510    private static final long serialVersionUID = 1488459022L;
1511
1512  /**
1513   * Constructor
1514   */
1515    public ActivityDefinition() {
1516      super();
1517    }
1518
1519  /**
1520   * Constructor
1521   */
1522    public ActivityDefinition(Enumeration<PublicationStatus> status) {
1523      super();
1524      this.status = status;
1525    }
1526
1527    /**
1528     * @return {@link #url} (An absolute URI that is used to identify this activity definition 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 activity definition is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the activity definition is stored on different servers.). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
1529     */
1530    public UriType getUrlElement() { 
1531      if (this.url == null)
1532        if (Configuration.errorOnAutoCreate())
1533          throw new Error("Attempt to auto-create ActivityDefinition.url");
1534        else if (Configuration.doAutoCreate())
1535          this.url = new UriType(); // bb
1536      return this.url;
1537    }
1538
1539    public boolean hasUrlElement() { 
1540      return this.url != null && !this.url.isEmpty();
1541    }
1542
1543    public boolean hasUrl() { 
1544      return this.url != null && !this.url.isEmpty();
1545    }
1546
1547    /**
1548     * @param value {@link #url} (An absolute URI that is used to identify this activity definition 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 activity definition is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the activity definition is stored on different servers.). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
1549     */
1550    public ActivityDefinition setUrlElement(UriType value) { 
1551      this.url = value;
1552      return this;
1553    }
1554
1555    /**
1556     * @return An absolute URI that is used to identify this activity definition 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 activity definition is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the activity definition is stored on different servers.
1557     */
1558    public String getUrl() { 
1559      return this.url == null ? null : this.url.getValue();
1560    }
1561
1562    /**
1563     * @param value An absolute URI that is used to identify this activity definition 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 activity definition is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the activity definition is stored on different servers.
1564     */
1565    public ActivityDefinition setUrl(String value) { 
1566      if (Utilities.noString(value))
1567        this.url = null;
1568      else {
1569        if (this.url == null)
1570          this.url = new UriType();
1571        this.url.setValue(value);
1572      }
1573      return this;
1574    }
1575
1576    /**
1577     * @return {@link #identifier} (A formal identifier that is used to identify this activity definition when it is represented in other formats, or referenced in a specification, model, design or an instance.)
1578     */
1579    public List<Identifier> getIdentifier() { 
1580      if (this.identifier == null)
1581        this.identifier = new ArrayList<Identifier>();
1582      return this.identifier;
1583    }
1584
1585    /**
1586     * @return Returns a reference to <code>this</code> for easy method chaining
1587     */
1588    public ActivityDefinition setIdentifier(List<Identifier> theIdentifier) { 
1589      this.identifier = theIdentifier;
1590      return this;
1591    }
1592
1593    public boolean hasIdentifier() { 
1594      if (this.identifier == null)
1595        return false;
1596      for (Identifier item : this.identifier)
1597        if (!item.isEmpty())
1598          return true;
1599      return false;
1600    }
1601
1602    public Identifier addIdentifier() { //3
1603      Identifier t = new Identifier();
1604      if (this.identifier == null)
1605        this.identifier = new ArrayList<Identifier>();
1606      this.identifier.add(t);
1607      return t;
1608    }
1609
1610    public ActivityDefinition addIdentifier(Identifier t) { //3
1611      if (t == null)
1612        return this;
1613      if (this.identifier == null)
1614        this.identifier = new ArrayList<Identifier>();
1615      this.identifier.add(t);
1616      return this;
1617    }
1618
1619    /**
1620     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist
1621     */
1622    public Identifier getIdentifierFirstRep() { 
1623      if (getIdentifier().isEmpty()) {
1624        addIdentifier();
1625      }
1626      return getIdentifier().get(0);
1627    }
1628
1629    /**
1630     * @return {@link #version} (The identifier that is used to identify this version of the activity definition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the activity definition 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. To provide a version consistent with the Decision Support Service specification, use the format Major.Minor.Revision (e.g. 1.0.0). For more information on versioning knowledge assets, refer to the Decision Support Service specification. Note that a version is required for non-experimental active assets.). This is the underlying object with id, value and extensions. The accessor "getVersion" gives direct access to the value
1631     */
1632    public StringType getVersionElement() { 
1633      if (this.version == null)
1634        if (Configuration.errorOnAutoCreate())
1635          throw new Error("Attempt to auto-create ActivityDefinition.version");
1636        else if (Configuration.doAutoCreate())
1637          this.version = new StringType(); // bb
1638      return this.version;
1639    }
1640
1641    public boolean hasVersionElement() { 
1642      return this.version != null && !this.version.isEmpty();
1643    }
1644
1645    public boolean hasVersion() { 
1646      return this.version != null && !this.version.isEmpty();
1647    }
1648
1649    /**
1650     * @param value {@link #version} (The identifier that is used to identify this version of the activity definition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the activity definition 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. To provide a version consistent with the Decision Support Service specification, use the format Major.Minor.Revision (e.g. 1.0.0). For more information on versioning knowledge assets, refer to the Decision Support Service specification. Note that a version is required for non-experimental active assets.). This is the underlying object with id, value and extensions. The accessor "getVersion" gives direct access to the value
1651     */
1652    public ActivityDefinition setVersionElement(StringType value) { 
1653      this.version = value;
1654      return this;
1655    }
1656
1657    /**
1658     * @return The identifier that is used to identify this version of the activity definition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the activity definition 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. To provide a version consistent with the Decision Support Service specification, use the format Major.Minor.Revision (e.g. 1.0.0). For more information on versioning knowledge assets, refer to the Decision Support Service specification. Note that a version is required for non-experimental active assets.
1659     */
1660    public String getVersion() { 
1661      return this.version == null ? null : this.version.getValue();
1662    }
1663
1664    /**
1665     * @param value The identifier that is used to identify this version of the activity definition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the activity definition 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. To provide a version consistent with the Decision Support Service specification, use the format Major.Minor.Revision (e.g. 1.0.0). For more information on versioning knowledge assets, refer to the Decision Support Service specification. Note that a version is required for non-experimental active assets.
1666     */
1667    public ActivityDefinition setVersion(String value) { 
1668      if (Utilities.noString(value))
1669        this.version = null;
1670      else {
1671        if (this.version == null)
1672          this.version = new StringType();
1673        this.version.setValue(value);
1674      }
1675      return this;
1676    }
1677
1678    /**
1679     * @return {@link #name} (A natural language name identifying the activity definition. 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
1680     */
1681    public StringType getNameElement() { 
1682      if (this.name == null)
1683        if (Configuration.errorOnAutoCreate())
1684          throw new Error("Attempt to auto-create ActivityDefinition.name");
1685        else if (Configuration.doAutoCreate())
1686          this.name = new StringType(); // bb
1687      return this.name;
1688    }
1689
1690    public boolean hasNameElement() { 
1691      return this.name != null && !this.name.isEmpty();
1692    }
1693
1694    public boolean hasName() { 
1695      return this.name != null && !this.name.isEmpty();
1696    }
1697
1698    /**
1699     * @param value {@link #name} (A natural language name identifying the activity definition. 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
1700     */
1701    public ActivityDefinition setNameElement(StringType value) { 
1702      this.name = value;
1703      return this;
1704    }
1705
1706    /**
1707     * @return A natural language name identifying the activity definition. This name should be usable as an identifier for the module by machine processing applications such as code generation.
1708     */
1709    public String getName() { 
1710      return this.name == null ? null : this.name.getValue();
1711    }
1712
1713    /**
1714     * @param value A natural language name identifying the activity definition. This name should be usable as an identifier for the module by machine processing applications such as code generation.
1715     */
1716    public ActivityDefinition setName(String value) { 
1717      if (Utilities.noString(value))
1718        this.name = null;
1719      else {
1720        if (this.name == null)
1721          this.name = new StringType();
1722        this.name.setValue(value);
1723      }
1724      return this;
1725    }
1726
1727    /**
1728     * @return {@link #title} (A short, descriptive, user-friendly title for the activity definition.). This is the underlying object with id, value and extensions. The accessor "getTitle" gives direct access to the value
1729     */
1730    public StringType getTitleElement() { 
1731      if (this.title == null)
1732        if (Configuration.errorOnAutoCreate())
1733          throw new Error("Attempt to auto-create ActivityDefinition.title");
1734        else if (Configuration.doAutoCreate())
1735          this.title = new StringType(); // bb
1736      return this.title;
1737    }
1738
1739    public boolean hasTitleElement() { 
1740      return this.title != null && !this.title.isEmpty();
1741    }
1742
1743    public boolean hasTitle() { 
1744      return this.title != null && !this.title.isEmpty();
1745    }
1746
1747    /**
1748     * @param value {@link #title} (A short, descriptive, user-friendly title for the activity definition.). This is the underlying object with id, value and extensions. The accessor "getTitle" gives direct access to the value
1749     */
1750    public ActivityDefinition setTitleElement(StringType value) { 
1751      this.title = value;
1752      return this;
1753    }
1754
1755    /**
1756     * @return A short, descriptive, user-friendly title for the activity definition.
1757     */
1758    public String getTitle() { 
1759      return this.title == null ? null : this.title.getValue();
1760    }
1761
1762    /**
1763     * @param value A short, descriptive, user-friendly title for the activity definition.
1764     */
1765    public ActivityDefinition setTitle(String value) { 
1766      if (Utilities.noString(value))
1767        this.title = null;
1768      else {
1769        if (this.title == null)
1770          this.title = new StringType();
1771        this.title.setValue(value);
1772      }
1773      return this;
1774    }
1775
1776    /**
1777     * @return {@link #subtitle} (An explanatory or alternate title for the activity definition giving additional information about its content.). This is the underlying object with id, value and extensions. The accessor "getSubtitle" gives direct access to the value
1778     */
1779    public StringType getSubtitleElement() { 
1780      if (this.subtitle == null)
1781        if (Configuration.errorOnAutoCreate())
1782          throw new Error("Attempt to auto-create ActivityDefinition.subtitle");
1783        else if (Configuration.doAutoCreate())
1784          this.subtitle = new StringType(); // bb
1785      return this.subtitle;
1786    }
1787
1788    public boolean hasSubtitleElement() { 
1789      return this.subtitle != null && !this.subtitle.isEmpty();
1790    }
1791
1792    public boolean hasSubtitle() { 
1793      return this.subtitle != null && !this.subtitle.isEmpty();
1794    }
1795
1796    /**
1797     * @param value {@link #subtitle} (An explanatory or alternate title for the activity definition giving additional information about its content.). This is the underlying object with id, value and extensions. The accessor "getSubtitle" gives direct access to the value
1798     */
1799    public ActivityDefinition setSubtitleElement(StringType value) { 
1800      this.subtitle = value;
1801      return this;
1802    }
1803
1804    /**
1805     * @return An explanatory or alternate title for the activity definition giving additional information about its content.
1806     */
1807    public String getSubtitle() { 
1808      return this.subtitle == null ? null : this.subtitle.getValue();
1809    }
1810
1811    /**
1812     * @param value An explanatory or alternate title for the activity definition giving additional information about its content.
1813     */
1814    public ActivityDefinition setSubtitle(String value) { 
1815      if (Utilities.noString(value))
1816        this.subtitle = null;
1817      else {
1818        if (this.subtitle == null)
1819          this.subtitle = new StringType();
1820        this.subtitle.setValue(value);
1821      }
1822      return this;
1823    }
1824
1825    /**
1826     * @return {@link #status} (The status of this activity definition. 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
1827     */
1828    public Enumeration<PublicationStatus> getStatusElement() { 
1829      if (this.status == null)
1830        if (Configuration.errorOnAutoCreate())
1831          throw new Error("Attempt to auto-create ActivityDefinition.status");
1832        else if (Configuration.doAutoCreate())
1833          this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory()); // bb
1834      return this.status;
1835    }
1836
1837    public boolean hasStatusElement() { 
1838      return this.status != null && !this.status.isEmpty();
1839    }
1840
1841    public boolean hasStatus() { 
1842      return this.status != null && !this.status.isEmpty();
1843    }
1844
1845    /**
1846     * @param value {@link #status} (The status of this activity definition. 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
1847     */
1848    public ActivityDefinition setStatusElement(Enumeration<PublicationStatus> value) { 
1849      this.status = value;
1850      return this;
1851    }
1852
1853    /**
1854     * @return The status of this activity definition. Enables tracking the life-cycle of the content.
1855     */
1856    public PublicationStatus getStatus() { 
1857      return this.status == null ? null : this.status.getValue();
1858    }
1859
1860    /**
1861     * @param value The status of this activity definition. Enables tracking the life-cycle of the content.
1862     */
1863    public ActivityDefinition setStatus(PublicationStatus value) { 
1864        if (this.status == null)
1865          this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory());
1866        this.status.setValue(value);
1867      return this;
1868    }
1869
1870    /**
1871     * @return {@link #experimental} (A Boolean value to indicate that this activity definition 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
1872     */
1873    public BooleanType getExperimentalElement() { 
1874      if (this.experimental == null)
1875        if (Configuration.errorOnAutoCreate())
1876          throw new Error("Attempt to auto-create ActivityDefinition.experimental");
1877        else if (Configuration.doAutoCreate())
1878          this.experimental = new BooleanType(); // bb
1879      return this.experimental;
1880    }
1881
1882    public boolean hasExperimentalElement() { 
1883      return this.experimental != null && !this.experimental.isEmpty();
1884    }
1885
1886    public boolean hasExperimental() { 
1887      return this.experimental != null && !this.experimental.isEmpty();
1888    }
1889
1890    /**
1891     * @param value {@link #experimental} (A Boolean value to indicate that this activity definition 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
1892     */
1893    public ActivityDefinition setExperimentalElement(BooleanType value) { 
1894      this.experimental = value;
1895      return this;
1896    }
1897
1898    /**
1899     * @return A Boolean value to indicate that this activity definition is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.
1900     */
1901    public boolean getExperimental() { 
1902      return this.experimental == null || this.experimental.isEmpty() ? false : this.experimental.getValue();
1903    }
1904
1905    /**
1906     * @param value A Boolean value to indicate that this activity definition is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.
1907     */
1908    public ActivityDefinition setExperimental(boolean value) { 
1909        if (this.experimental == null)
1910          this.experimental = new BooleanType();
1911        this.experimental.setValue(value);
1912      return this;
1913    }
1914
1915    /**
1916     * @return {@link #subject} (A code or group definition that describes the intended subject of the activity being defined.)
1917     */
1918    public Type getSubject() { 
1919      return this.subject;
1920    }
1921
1922    /**
1923     * @return {@link #subject} (A code or group definition that describes the intended subject of the activity being defined.)
1924     */
1925    public CodeableConcept getSubjectCodeableConcept() throws FHIRException { 
1926      if (this.subject == null)
1927        return null;
1928      if (!(this.subject instanceof CodeableConcept))
1929        throw new FHIRException("Type mismatch: the type CodeableConcept was expected, but "+this.subject.getClass().getName()+" was encountered");
1930      return (CodeableConcept) this.subject;
1931    }
1932
1933    public boolean hasSubjectCodeableConcept() { 
1934      return this != null && this.subject instanceof CodeableConcept;
1935    }
1936
1937    /**
1938     * @return {@link #subject} (A code or group definition that describes the intended subject of the activity being defined.)
1939     */
1940    public Reference getSubjectReference() throws FHIRException { 
1941      if (this.subject == null)
1942        return null;
1943      if (!(this.subject instanceof Reference))
1944        throw new FHIRException("Type mismatch: the type Reference was expected, but "+this.subject.getClass().getName()+" was encountered");
1945      return (Reference) this.subject;
1946    }
1947
1948    public boolean hasSubjectReference() { 
1949      return this != null && this.subject instanceof Reference;
1950    }
1951
1952    public boolean hasSubject() { 
1953      return this.subject != null && !this.subject.isEmpty();
1954    }
1955
1956    /**
1957     * @param value {@link #subject} (A code or group definition that describes the intended subject of the activity being defined.)
1958     */
1959    public ActivityDefinition setSubject(Type value) { 
1960      if (value != null && !(value instanceof CodeableConcept || value instanceof Reference))
1961        throw new Error("Not the right type for ActivityDefinition.subject[x]: "+value.fhirType());
1962      this.subject = value;
1963      return this;
1964    }
1965
1966    /**
1967     * @return {@link #date} (The date  (and optionally time) when the activity definition 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 activity definition changes.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
1968     */
1969    public DateTimeType getDateElement() { 
1970      if (this.date == null)
1971        if (Configuration.errorOnAutoCreate())
1972          throw new Error("Attempt to auto-create ActivityDefinition.date");
1973        else if (Configuration.doAutoCreate())
1974          this.date = new DateTimeType(); // bb
1975      return this.date;
1976    }
1977
1978    public boolean hasDateElement() { 
1979      return this.date != null && !this.date.isEmpty();
1980    }
1981
1982    public boolean hasDate() { 
1983      return this.date != null && !this.date.isEmpty();
1984    }
1985
1986    /**
1987     * @param value {@link #date} (The date  (and optionally time) when the activity definition 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 activity definition changes.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
1988     */
1989    public ActivityDefinition setDateElement(DateTimeType value) { 
1990      this.date = value;
1991      return this;
1992    }
1993
1994    /**
1995     * @return The date  (and optionally time) when the activity definition 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 activity definition changes.
1996     */
1997    public Date getDate() { 
1998      return this.date == null ? null : this.date.getValue();
1999    }
2000
2001    /**
2002     * @param value The date  (and optionally time) when the activity definition 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 activity definition changes.
2003     */
2004    public ActivityDefinition setDate(Date value) { 
2005      if (value == null)
2006        this.date = null;
2007      else {
2008        if (this.date == null)
2009          this.date = new DateTimeType();
2010        this.date.setValue(value);
2011      }
2012      return this;
2013    }
2014
2015    /**
2016     * @return {@link #publisher} (The name of the organization or individual that published the activity definition.). This is the underlying object with id, value and extensions. The accessor "getPublisher" gives direct access to the value
2017     */
2018    public StringType getPublisherElement() { 
2019      if (this.publisher == null)
2020        if (Configuration.errorOnAutoCreate())
2021          throw new Error("Attempt to auto-create ActivityDefinition.publisher");
2022        else if (Configuration.doAutoCreate())
2023          this.publisher = new StringType(); // bb
2024      return this.publisher;
2025    }
2026
2027    public boolean hasPublisherElement() { 
2028      return this.publisher != null && !this.publisher.isEmpty();
2029    }
2030
2031    public boolean hasPublisher() { 
2032      return this.publisher != null && !this.publisher.isEmpty();
2033    }
2034
2035    /**
2036     * @param value {@link #publisher} (The name of the organization or individual that published the activity definition.). This is the underlying object with id, value and extensions. The accessor "getPublisher" gives direct access to the value
2037     */
2038    public ActivityDefinition setPublisherElement(StringType value) { 
2039      this.publisher = value;
2040      return this;
2041    }
2042
2043    /**
2044     * @return The name of the organization or individual that published the activity definition.
2045     */
2046    public String getPublisher() { 
2047      return this.publisher == null ? null : this.publisher.getValue();
2048    }
2049
2050    /**
2051     * @param value The name of the organization or individual that published the activity definition.
2052     */
2053    public ActivityDefinition setPublisher(String value) { 
2054      if (Utilities.noString(value))
2055        this.publisher = null;
2056      else {
2057        if (this.publisher == null)
2058          this.publisher = new StringType();
2059        this.publisher.setValue(value);
2060      }
2061      return this;
2062    }
2063
2064    /**
2065     * @return {@link #contact} (Contact details to assist a user in finding and communicating with the publisher.)
2066     */
2067    public List<ContactDetail> getContact() { 
2068      if (this.contact == null)
2069        this.contact = new ArrayList<ContactDetail>();
2070      return this.contact;
2071    }
2072
2073    /**
2074     * @return Returns a reference to <code>this</code> for easy method chaining
2075     */
2076    public ActivityDefinition setContact(List<ContactDetail> theContact) { 
2077      this.contact = theContact;
2078      return this;
2079    }
2080
2081    public boolean hasContact() { 
2082      if (this.contact == null)
2083        return false;
2084      for (ContactDetail item : this.contact)
2085        if (!item.isEmpty())
2086          return true;
2087      return false;
2088    }
2089
2090    public ContactDetail addContact() { //3
2091      ContactDetail t = new ContactDetail();
2092      if (this.contact == null)
2093        this.contact = new ArrayList<ContactDetail>();
2094      this.contact.add(t);
2095      return t;
2096    }
2097
2098    public ActivityDefinition addContact(ContactDetail t) { //3
2099      if (t == null)
2100        return this;
2101      if (this.contact == null)
2102        this.contact = new ArrayList<ContactDetail>();
2103      this.contact.add(t);
2104      return this;
2105    }
2106
2107    /**
2108     * @return The first repetition of repeating field {@link #contact}, creating it if it does not already exist
2109     */
2110    public ContactDetail getContactFirstRep() { 
2111      if (getContact().isEmpty()) {
2112        addContact();
2113      }
2114      return getContact().get(0);
2115    }
2116
2117    /**
2118     * @return {@link #description} (A free text natural language description of the activity definition from a consumer's perspective.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
2119     */
2120    public MarkdownType getDescriptionElement() { 
2121      if (this.description == null)
2122        if (Configuration.errorOnAutoCreate())
2123          throw new Error("Attempt to auto-create ActivityDefinition.description");
2124        else if (Configuration.doAutoCreate())
2125          this.description = new MarkdownType(); // bb
2126      return this.description;
2127    }
2128
2129    public boolean hasDescriptionElement() { 
2130      return this.description != null && !this.description.isEmpty();
2131    }
2132
2133    public boolean hasDescription() { 
2134      return this.description != null && !this.description.isEmpty();
2135    }
2136
2137    /**
2138     * @param value {@link #description} (A free text natural language description of the activity definition from a consumer's perspective.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
2139     */
2140    public ActivityDefinition setDescriptionElement(MarkdownType value) { 
2141      this.description = value;
2142      return this;
2143    }
2144
2145    /**
2146     * @return A free text natural language description of the activity definition from a consumer's perspective.
2147     */
2148    public String getDescription() { 
2149      return this.description == null ? null : this.description.getValue();
2150    }
2151
2152    /**
2153     * @param value A free text natural language description of the activity definition from a consumer's perspective.
2154     */
2155    public ActivityDefinition setDescription(String value) { 
2156      if (value == null)
2157        this.description = null;
2158      else {
2159        if (this.description == null)
2160          this.description = new MarkdownType();
2161        this.description.setValue(value);
2162      }
2163      return this;
2164    }
2165
2166    /**
2167     * @return {@link #useContext} (The content was developed with a focus and intent of supporting the contexts that are listed. These terms may be used to assist with indexing and searching for appropriate activity definition instances.)
2168     */
2169    public List<UsageContext> getUseContext() { 
2170      if (this.useContext == null)
2171        this.useContext = new ArrayList<UsageContext>();
2172      return this.useContext;
2173    }
2174
2175    /**
2176     * @return Returns a reference to <code>this</code> for easy method chaining
2177     */
2178    public ActivityDefinition setUseContext(List<UsageContext> theUseContext) { 
2179      this.useContext = theUseContext;
2180      return this;
2181    }
2182
2183    public boolean hasUseContext() { 
2184      if (this.useContext == null)
2185        return false;
2186      for (UsageContext item : this.useContext)
2187        if (!item.isEmpty())
2188          return true;
2189      return false;
2190    }
2191
2192    public UsageContext addUseContext() { //3
2193      UsageContext t = new UsageContext();
2194      if (this.useContext == null)
2195        this.useContext = new ArrayList<UsageContext>();
2196      this.useContext.add(t);
2197      return t;
2198    }
2199
2200    public ActivityDefinition addUseContext(UsageContext t) { //3
2201      if (t == null)
2202        return this;
2203      if (this.useContext == null)
2204        this.useContext = new ArrayList<UsageContext>();
2205      this.useContext.add(t);
2206      return this;
2207    }
2208
2209    /**
2210     * @return The first repetition of repeating field {@link #useContext}, creating it if it does not already exist
2211     */
2212    public UsageContext getUseContextFirstRep() { 
2213      if (getUseContext().isEmpty()) {
2214        addUseContext();
2215      }
2216      return getUseContext().get(0);
2217    }
2218
2219    /**
2220     * @return {@link #jurisdiction} (A legal or geographic region in which the activity definition is intended to be used.)
2221     */
2222    public List<CodeableConcept> getJurisdiction() { 
2223      if (this.jurisdiction == null)
2224        this.jurisdiction = new ArrayList<CodeableConcept>();
2225      return this.jurisdiction;
2226    }
2227
2228    /**
2229     * @return Returns a reference to <code>this</code> for easy method chaining
2230     */
2231    public ActivityDefinition setJurisdiction(List<CodeableConcept> theJurisdiction) { 
2232      this.jurisdiction = theJurisdiction;
2233      return this;
2234    }
2235
2236    public boolean hasJurisdiction() { 
2237      if (this.jurisdiction == null)
2238        return false;
2239      for (CodeableConcept item : this.jurisdiction)
2240        if (!item.isEmpty())
2241          return true;
2242      return false;
2243    }
2244
2245    public CodeableConcept addJurisdiction() { //3
2246      CodeableConcept t = new CodeableConcept();
2247      if (this.jurisdiction == null)
2248        this.jurisdiction = new ArrayList<CodeableConcept>();
2249      this.jurisdiction.add(t);
2250      return t;
2251    }
2252
2253    public ActivityDefinition addJurisdiction(CodeableConcept t) { //3
2254      if (t == null)
2255        return this;
2256      if (this.jurisdiction == null)
2257        this.jurisdiction = new ArrayList<CodeableConcept>();
2258      this.jurisdiction.add(t);
2259      return this;
2260    }
2261
2262    /**
2263     * @return The first repetition of repeating field {@link #jurisdiction}, creating it if it does not already exist
2264     */
2265    public CodeableConcept getJurisdictionFirstRep() { 
2266      if (getJurisdiction().isEmpty()) {
2267        addJurisdiction();
2268      }
2269      return getJurisdiction().get(0);
2270    }
2271
2272    /**
2273     * @return {@link #purpose} (Explanation of why this activity definition is needed and why it has been designed as it has.). This is the underlying object with id, value and extensions. The accessor "getPurpose" gives direct access to the value
2274     */
2275    public MarkdownType getPurposeElement() { 
2276      if (this.purpose == null)
2277        if (Configuration.errorOnAutoCreate())
2278          throw new Error("Attempt to auto-create ActivityDefinition.purpose");
2279        else if (Configuration.doAutoCreate())
2280          this.purpose = new MarkdownType(); // bb
2281      return this.purpose;
2282    }
2283
2284    public boolean hasPurposeElement() { 
2285      return this.purpose != null && !this.purpose.isEmpty();
2286    }
2287
2288    public boolean hasPurpose() { 
2289      return this.purpose != null && !this.purpose.isEmpty();
2290    }
2291
2292    /**
2293     * @param value {@link #purpose} (Explanation of why this activity definition is needed and why it has been designed as it has.). This is the underlying object with id, value and extensions. The accessor "getPurpose" gives direct access to the value
2294     */
2295    public ActivityDefinition setPurposeElement(MarkdownType value) { 
2296      this.purpose = value;
2297      return this;
2298    }
2299
2300    /**
2301     * @return Explanation of why this activity definition is needed and why it has been designed as it has.
2302     */
2303    public String getPurpose() { 
2304      return this.purpose == null ? null : this.purpose.getValue();
2305    }
2306
2307    /**
2308     * @param value Explanation of why this activity definition is needed and why it has been designed as it has.
2309     */
2310    public ActivityDefinition setPurpose(String value) { 
2311      if (value == null)
2312        this.purpose = null;
2313      else {
2314        if (this.purpose == null)
2315          this.purpose = new MarkdownType();
2316        this.purpose.setValue(value);
2317      }
2318      return this;
2319    }
2320
2321    /**
2322     * @return {@link #usage} (A detailed description of how the activity definition is used from a clinical perspective.). This is the underlying object with id, value and extensions. The accessor "getUsage" gives direct access to the value
2323     */
2324    public StringType getUsageElement() { 
2325      if (this.usage == null)
2326        if (Configuration.errorOnAutoCreate())
2327          throw new Error("Attempt to auto-create ActivityDefinition.usage");
2328        else if (Configuration.doAutoCreate())
2329          this.usage = new StringType(); // bb
2330      return this.usage;
2331    }
2332
2333    public boolean hasUsageElement() { 
2334      return this.usage != null && !this.usage.isEmpty();
2335    }
2336
2337    public boolean hasUsage() { 
2338      return this.usage != null && !this.usage.isEmpty();
2339    }
2340
2341    /**
2342     * @param value {@link #usage} (A detailed description of how the activity definition is used from a clinical perspective.). This is the underlying object with id, value and extensions. The accessor "getUsage" gives direct access to the value
2343     */
2344    public ActivityDefinition setUsageElement(StringType value) { 
2345      this.usage = value;
2346      return this;
2347    }
2348
2349    /**
2350     * @return A detailed description of how the activity definition is used from a clinical perspective.
2351     */
2352    public String getUsage() { 
2353      return this.usage == null ? null : this.usage.getValue();
2354    }
2355
2356    /**
2357     * @param value A detailed description of how the activity definition is used from a clinical perspective.
2358     */
2359    public ActivityDefinition setUsage(String value) { 
2360      if (Utilities.noString(value))
2361        this.usage = null;
2362      else {
2363        if (this.usage == null)
2364          this.usage = new StringType();
2365        this.usage.setValue(value);
2366      }
2367      return this;
2368    }
2369
2370    /**
2371     * @return {@link #copyright} (A copyright statement relating to the activity definition and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the activity definition.). This is the underlying object with id, value and extensions. The accessor "getCopyright" gives direct access to the value
2372     */
2373    public MarkdownType getCopyrightElement() { 
2374      if (this.copyright == null)
2375        if (Configuration.errorOnAutoCreate())
2376          throw new Error("Attempt to auto-create ActivityDefinition.copyright");
2377        else if (Configuration.doAutoCreate())
2378          this.copyright = new MarkdownType(); // bb
2379      return this.copyright;
2380    }
2381
2382    public boolean hasCopyrightElement() { 
2383      return this.copyright != null && !this.copyright.isEmpty();
2384    }
2385
2386    public boolean hasCopyright() { 
2387      return this.copyright != null && !this.copyright.isEmpty();
2388    }
2389
2390    /**
2391     * @param value {@link #copyright} (A copyright statement relating to the activity definition and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the activity definition.). This is the underlying object with id, value and extensions. The accessor "getCopyright" gives direct access to the value
2392     */
2393    public ActivityDefinition setCopyrightElement(MarkdownType value) { 
2394      this.copyright = value;
2395      return this;
2396    }
2397
2398    /**
2399     * @return A copyright statement relating to the activity definition and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the activity definition.
2400     */
2401    public String getCopyright() { 
2402      return this.copyright == null ? null : this.copyright.getValue();
2403    }
2404
2405    /**
2406     * @param value A copyright statement relating to the activity definition and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the activity definition.
2407     */
2408    public ActivityDefinition setCopyright(String value) { 
2409      if (value == null)
2410        this.copyright = null;
2411      else {
2412        if (this.copyright == null)
2413          this.copyright = new MarkdownType();
2414        this.copyright.setValue(value);
2415      }
2416      return this;
2417    }
2418
2419    /**
2420     * @return {@link #approvalDate} (The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage.). This is the underlying object with id, value and extensions. The accessor "getApprovalDate" gives direct access to the value
2421     */
2422    public DateType getApprovalDateElement() { 
2423      if (this.approvalDate == null)
2424        if (Configuration.errorOnAutoCreate())
2425          throw new Error("Attempt to auto-create ActivityDefinition.approvalDate");
2426        else if (Configuration.doAutoCreate())
2427          this.approvalDate = new DateType(); // bb
2428      return this.approvalDate;
2429    }
2430
2431    public boolean hasApprovalDateElement() { 
2432      return this.approvalDate != null && !this.approvalDate.isEmpty();
2433    }
2434
2435    public boolean hasApprovalDate() { 
2436      return this.approvalDate != null && !this.approvalDate.isEmpty();
2437    }
2438
2439    /**
2440     * @param value {@link #approvalDate} (The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage.). This is the underlying object with id, value and extensions. The accessor "getApprovalDate" gives direct access to the value
2441     */
2442    public ActivityDefinition setApprovalDateElement(DateType value) { 
2443      this.approvalDate = value;
2444      return this;
2445    }
2446
2447    /**
2448     * @return The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage.
2449     */
2450    public Date getApprovalDate() { 
2451      return this.approvalDate == null ? null : this.approvalDate.getValue();
2452    }
2453
2454    /**
2455     * @param value The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage.
2456     */
2457    public ActivityDefinition setApprovalDate(Date value) { 
2458      if (value == null)
2459        this.approvalDate = null;
2460      else {
2461        if (this.approvalDate == null)
2462          this.approvalDate = new DateType();
2463        this.approvalDate.setValue(value);
2464      }
2465      return this;
2466    }
2467
2468    /**
2469     * @return {@link #lastReviewDate} (The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date.). This is the underlying object with id, value and extensions. The accessor "getLastReviewDate" gives direct access to the value
2470     */
2471    public DateType getLastReviewDateElement() { 
2472      if (this.lastReviewDate == null)
2473        if (Configuration.errorOnAutoCreate())
2474          throw new Error("Attempt to auto-create ActivityDefinition.lastReviewDate");
2475        else if (Configuration.doAutoCreate())
2476          this.lastReviewDate = new DateType(); // bb
2477      return this.lastReviewDate;
2478    }
2479
2480    public boolean hasLastReviewDateElement() { 
2481      return this.lastReviewDate != null && !this.lastReviewDate.isEmpty();
2482    }
2483
2484    public boolean hasLastReviewDate() { 
2485      return this.lastReviewDate != null && !this.lastReviewDate.isEmpty();
2486    }
2487
2488    /**
2489     * @param value {@link #lastReviewDate} (The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date.). This is the underlying object with id, value and extensions. The accessor "getLastReviewDate" gives direct access to the value
2490     */
2491    public ActivityDefinition setLastReviewDateElement(DateType value) { 
2492      this.lastReviewDate = value;
2493      return this;
2494    }
2495
2496    /**
2497     * @return The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date.
2498     */
2499    public Date getLastReviewDate() { 
2500      return this.lastReviewDate == null ? null : this.lastReviewDate.getValue();
2501    }
2502
2503    /**
2504     * @param value The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date.
2505     */
2506    public ActivityDefinition setLastReviewDate(Date value) { 
2507      if (value == null)
2508        this.lastReviewDate = null;
2509      else {
2510        if (this.lastReviewDate == null)
2511          this.lastReviewDate = new DateType();
2512        this.lastReviewDate.setValue(value);
2513      }
2514      return this;
2515    }
2516
2517    /**
2518     * @return {@link #effectivePeriod} (The period during which the activity definition content was or is planned to be in active use.)
2519     */
2520    public Period getEffectivePeriod() { 
2521      if (this.effectivePeriod == null)
2522        if (Configuration.errorOnAutoCreate())
2523          throw new Error("Attempt to auto-create ActivityDefinition.effectivePeriod");
2524        else if (Configuration.doAutoCreate())
2525          this.effectivePeriod = new Period(); // cc
2526      return this.effectivePeriod;
2527    }
2528
2529    public boolean hasEffectivePeriod() { 
2530      return this.effectivePeriod != null && !this.effectivePeriod.isEmpty();
2531    }
2532
2533    /**
2534     * @param value {@link #effectivePeriod} (The period during which the activity definition content was or is planned to be in active use.)
2535     */
2536    public ActivityDefinition setEffectivePeriod(Period value) { 
2537      this.effectivePeriod = value;
2538      return this;
2539    }
2540
2541    /**
2542     * @return {@link #topic} (Descriptive topics related to the content of the activity. Topics provide a high-level categorization of the activity that can be useful for filtering and searching.)
2543     */
2544    public List<CodeableConcept> getTopic() { 
2545      if (this.topic == null)
2546        this.topic = new ArrayList<CodeableConcept>();
2547      return this.topic;
2548    }
2549
2550    /**
2551     * @return Returns a reference to <code>this</code> for easy method chaining
2552     */
2553    public ActivityDefinition setTopic(List<CodeableConcept> theTopic) { 
2554      this.topic = theTopic;
2555      return this;
2556    }
2557
2558    public boolean hasTopic() { 
2559      if (this.topic == null)
2560        return false;
2561      for (CodeableConcept item : this.topic)
2562        if (!item.isEmpty())
2563          return true;
2564      return false;
2565    }
2566
2567    public CodeableConcept addTopic() { //3
2568      CodeableConcept t = new CodeableConcept();
2569      if (this.topic == null)
2570        this.topic = new ArrayList<CodeableConcept>();
2571      this.topic.add(t);
2572      return t;
2573    }
2574
2575    public ActivityDefinition addTopic(CodeableConcept t) { //3
2576      if (t == null)
2577        return this;
2578      if (this.topic == null)
2579        this.topic = new ArrayList<CodeableConcept>();
2580      this.topic.add(t);
2581      return this;
2582    }
2583
2584    /**
2585     * @return The first repetition of repeating field {@link #topic}, creating it if it does not already exist
2586     */
2587    public CodeableConcept getTopicFirstRep() { 
2588      if (getTopic().isEmpty()) {
2589        addTopic();
2590      }
2591      return getTopic().get(0);
2592    }
2593
2594    /**
2595     * @return {@link #author} (An individiual or organization primarily involved in the creation and maintenance of the content.)
2596     */
2597    public List<ContactDetail> getAuthor() { 
2598      if (this.author == null)
2599        this.author = new ArrayList<ContactDetail>();
2600      return this.author;
2601    }
2602
2603    /**
2604     * @return Returns a reference to <code>this</code> for easy method chaining
2605     */
2606    public ActivityDefinition setAuthor(List<ContactDetail> theAuthor) { 
2607      this.author = theAuthor;
2608      return this;
2609    }
2610
2611    public boolean hasAuthor() { 
2612      if (this.author == null)
2613        return false;
2614      for (ContactDetail item : this.author)
2615        if (!item.isEmpty())
2616          return true;
2617      return false;
2618    }
2619
2620    public ContactDetail addAuthor() { //3
2621      ContactDetail t = new ContactDetail();
2622      if (this.author == null)
2623        this.author = new ArrayList<ContactDetail>();
2624      this.author.add(t);
2625      return t;
2626    }
2627
2628    public ActivityDefinition addAuthor(ContactDetail t) { //3
2629      if (t == null)
2630        return this;
2631      if (this.author == null)
2632        this.author = new ArrayList<ContactDetail>();
2633      this.author.add(t);
2634      return this;
2635    }
2636
2637    /**
2638     * @return The first repetition of repeating field {@link #author}, creating it if it does not already exist
2639     */
2640    public ContactDetail getAuthorFirstRep() { 
2641      if (getAuthor().isEmpty()) {
2642        addAuthor();
2643      }
2644      return getAuthor().get(0);
2645    }
2646
2647    /**
2648     * @return {@link #editor} (An individual or organization primarily responsible for internal coherence of the content.)
2649     */
2650    public List<ContactDetail> getEditor() { 
2651      if (this.editor == null)
2652        this.editor = new ArrayList<ContactDetail>();
2653      return this.editor;
2654    }
2655
2656    /**
2657     * @return Returns a reference to <code>this</code> for easy method chaining
2658     */
2659    public ActivityDefinition setEditor(List<ContactDetail> theEditor) { 
2660      this.editor = theEditor;
2661      return this;
2662    }
2663
2664    public boolean hasEditor() { 
2665      if (this.editor == null)
2666        return false;
2667      for (ContactDetail item : this.editor)
2668        if (!item.isEmpty())
2669          return true;
2670      return false;
2671    }
2672
2673    public ContactDetail addEditor() { //3
2674      ContactDetail t = new ContactDetail();
2675      if (this.editor == null)
2676        this.editor = new ArrayList<ContactDetail>();
2677      this.editor.add(t);
2678      return t;
2679    }
2680
2681    public ActivityDefinition addEditor(ContactDetail t) { //3
2682      if (t == null)
2683        return this;
2684      if (this.editor == null)
2685        this.editor = new ArrayList<ContactDetail>();
2686      this.editor.add(t);
2687      return this;
2688    }
2689
2690    /**
2691     * @return The first repetition of repeating field {@link #editor}, creating it if it does not already exist
2692     */
2693    public ContactDetail getEditorFirstRep() { 
2694      if (getEditor().isEmpty()) {
2695        addEditor();
2696      }
2697      return getEditor().get(0);
2698    }
2699
2700    /**
2701     * @return {@link #reviewer} (An individual or organization primarily responsible for review of some aspect of the content.)
2702     */
2703    public List<ContactDetail> getReviewer() { 
2704      if (this.reviewer == null)
2705        this.reviewer = new ArrayList<ContactDetail>();
2706      return this.reviewer;
2707    }
2708
2709    /**
2710     * @return Returns a reference to <code>this</code> for easy method chaining
2711     */
2712    public ActivityDefinition setReviewer(List<ContactDetail> theReviewer) { 
2713      this.reviewer = theReviewer;
2714      return this;
2715    }
2716
2717    public boolean hasReviewer() { 
2718      if (this.reviewer == null)
2719        return false;
2720      for (ContactDetail item : this.reviewer)
2721        if (!item.isEmpty())
2722          return true;
2723      return false;
2724    }
2725
2726    public ContactDetail addReviewer() { //3
2727      ContactDetail t = new ContactDetail();
2728      if (this.reviewer == null)
2729        this.reviewer = new ArrayList<ContactDetail>();
2730      this.reviewer.add(t);
2731      return t;
2732    }
2733
2734    public ActivityDefinition addReviewer(ContactDetail t) { //3
2735      if (t == null)
2736        return this;
2737      if (this.reviewer == null)
2738        this.reviewer = new ArrayList<ContactDetail>();
2739      this.reviewer.add(t);
2740      return this;
2741    }
2742
2743    /**
2744     * @return The first repetition of repeating field {@link #reviewer}, creating it if it does not already exist
2745     */
2746    public ContactDetail getReviewerFirstRep() { 
2747      if (getReviewer().isEmpty()) {
2748        addReviewer();
2749      }
2750      return getReviewer().get(0);
2751    }
2752
2753    /**
2754     * @return {@link #endorser} (An individual or organization responsible for officially endorsing the content for use in some setting.)
2755     */
2756    public List<ContactDetail> getEndorser() { 
2757      if (this.endorser == null)
2758        this.endorser = new ArrayList<ContactDetail>();
2759      return this.endorser;
2760    }
2761
2762    /**
2763     * @return Returns a reference to <code>this</code> for easy method chaining
2764     */
2765    public ActivityDefinition setEndorser(List<ContactDetail> theEndorser) { 
2766      this.endorser = theEndorser;
2767      return this;
2768    }
2769
2770    public boolean hasEndorser() { 
2771      if (this.endorser == null)
2772        return false;
2773      for (ContactDetail item : this.endorser)
2774        if (!item.isEmpty())
2775          return true;
2776      return false;
2777    }
2778
2779    public ContactDetail addEndorser() { //3
2780      ContactDetail t = new ContactDetail();
2781      if (this.endorser == null)
2782        this.endorser = new ArrayList<ContactDetail>();
2783      this.endorser.add(t);
2784      return t;
2785    }
2786
2787    public ActivityDefinition addEndorser(ContactDetail t) { //3
2788      if (t == null)
2789        return this;
2790      if (this.endorser == null)
2791        this.endorser = new ArrayList<ContactDetail>();
2792      this.endorser.add(t);
2793      return this;
2794    }
2795
2796    /**
2797     * @return The first repetition of repeating field {@link #endorser}, creating it if it does not already exist
2798     */
2799    public ContactDetail getEndorserFirstRep() { 
2800      if (getEndorser().isEmpty()) {
2801        addEndorser();
2802      }
2803      return getEndorser().get(0);
2804    }
2805
2806    /**
2807     * @return {@link #relatedArtifact} (Related artifacts such as additional documentation, justification, or bibliographic references.)
2808     */
2809    public List<RelatedArtifact> getRelatedArtifact() { 
2810      if (this.relatedArtifact == null)
2811        this.relatedArtifact = new ArrayList<RelatedArtifact>();
2812      return this.relatedArtifact;
2813    }
2814
2815    /**
2816     * @return Returns a reference to <code>this</code> for easy method chaining
2817     */
2818    public ActivityDefinition setRelatedArtifact(List<RelatedArtifact> theRelatedArtifact) { 
2819      this.relatedArtifact = theRelatedArtifact;
2820      return this;
2821    }
2822
2823    public boolean hasRelatedArtifact() { 
2824      if (this.relatedArtifact == null)
2825        return false;
2826      for (RelatedArtifact item : this.relatedArtifact)
2827        if (!item.isEmpty())
2828          return true;
2829      return false;
2830    }
2831
2832    public RelatedArtifact addRelatedArtifact() { //3
2833      RelatedArtifact t = new RelatedArtifact();
2834      if (this.relatedArtifact == null)
2835        this.relatedArtifact = new ArrayList<RelatedArtifact>();
2836      this.relatedArtifact.add(t);
2837      return t;
2838    }
2839
2840    public ActivityDefinition addRelatedArtifact(RelatedArtifact t) { //3
2841      if (t == null)
2842        return this;
2843      if (this.relatedArtifact == null)
2844        this.relatedArtifact = new ArrayList<RelatedArtifact>();
2845      this.relatedArtifact.add(t);
2846      return this;
2847    }
2848
2849    /**
2850     * @return The first repetition of repeating field {@link #relatedArtifact}, creating it if it does not already exist
2851     */
2852    public RelatedArtifact getRelatedArtifactFirstRep() { 
2853      if (getRelatedArtifact().isEmpty()) {
2854        addRelatedArtifact();
2855      }
2856      return getRelatedArtifact().get(0);
2857    }
2858
2859    /**
2860     * @return {@link #library} (A reference to a Library resource containing any formal logic used by the activity definition.)
2861     */
2862    public List<CanonicalType> getLibrary() { 
2863      if (this.library == null)
2864        this.library = new ArrayList<CanonicalType>();
2865      return this.library;
2866    }
2867
2868    /**
2869     * @return Returns a reference to <code>this</code> for easy method chaining
2870     */
2871    public ActivityDefinition setLibrary(List<CanonicalType> theLibrary) { 
2872      this.library = theLibrary;
2873      return this;
2874    }
2875
2876    public boolean hasLibrary() { 
2877      if (this.library == null)
2878        return false;
2879      for (CanonicalType item : this.library)
2880        if (!item.isEmpty())
2881          return true;
2882      return false;
2883    }
2884
2885    /**
2886     * @return {@link #library} (A reference to a Library resource containing any formal logic used by the activity definition.)
2887     */
2888    public CanonicalType addLibraryElement() {//2 
2889      CanonicalType t = new CanonicalType();
2890      if (this.library == null)
2891        this.library = new ArrayList<CanonicalType>();
2892      this.library.add(t);
2893      return t;
2894    }
2895
2896    /**
2897     * @param value {@link #library} (A reference to a Library resource containing any formal logic used by the activity definition.)
2898     */
2899    public ActivityDefinition addLibrary(String value) { //1
2900      CanonicalType t = new CanonicalType();
2901      t.setValue(value);
2902      if (this.library == null)
2903        this.library = new ArrayList<CanonicalType>();
2904      this.library.add(t);
2905      return this;
2906    }
2907
2908    /**
2909     * @param value {@link #library} (A reference to a Library resource containing any formal logic used by the activity definition.)
2910     */
2911    public boolean hasLibrary(String value) { 
2912      if (this.library == null)
2913        return false;
2914      for (CanonicalType v : this.library)
2915        if (v.getValue().equals(value)) // canonical(Library)
2916          return true;
2917      return false;
2918    }
2919
2920    /**
2921     * @return {@link #kind} (A description of the kind of resource the activity definition is representing. For example, a MedicationRequest, a ServiceRequest, or a CommunicationRequest. Typically, but not always, this is a Request resource.). This is the underlying object with id, value and extensions. The accessor "getKind" gives direct access to the value
2922     */
2923    public Enumeration<ActivityDefinitionKind> getKindElement() { 
2924      if (this.kind == null)
2925        if (Configuration.errorOnAutoCreate())
2926          throw new Error("Attempt to auto-create ActivityDefinition.kind");
2927        else if (Configuration.doAutoCreate())
2928          this.kind = new Enumeration<ActivityDefinitionKind>(new ActivityDefinitionKindEnumFactory()); // bb
2929      return this.kind;
2930    }
2931
2932    public boolean hasKindElement() { 
2933      return this.kind != null && !this.kind.isEmpty();
2934    }
2935
2936    public boolean hasKind() { 
2937      return this.kind != null && !this.kind.isEmpty();
2938    }
2939
2940    /**
2941     * @param value {@link #kind} (A description of the kind of resource the activity definition is representing. For example, a MedicationRequest, a ServiceRequest, or a CommunicationRequest. Typically, but not always, this is a Request resource.). This is the underlying object with id, value and extensions. The accessor "getKind" gives direct access to the value
2942     */
2943    public ActivityDefinition setKindElement(Enumeration<ActivityDefinitionKind> value) { 
2944      this.kind = value;
2945      return this;
2946    }
2947
2948    /**
2949     * @return A description of the kind of resource the activity definition is representing. For example, a MedicationRequest, a ServiceRequest, or a CommunicationRequest. Typically, but not always, this is a Request resource.
2950     */
2951    public ActivityDefinitionKind getKind() { 
2952      return this.kind == null ? null : this.kind.getValue();
2953    }
2954
2955    /**
2956     * @param value A description of the kind of resource the activity definition is representing. For example, a MedicationRequest, a ServiceRequest, or a CommunicationRequest. Typically, but not always, this is a Request resource.
2957     */
2958    public ActivityDefinition setKind(ActivityDefinitionKind value) { 
2959      if (value == null)
2960        this.kind = null;
2961      else {
2962        if (this.kind == null)
2963          this.kind = new Enumeration<ActivityDefinitionKind>(new ActivityDefinitionKindEnumFactory());
2964        this.kind.setValue(value);
2965      }
2966      return this;
2967    }
2968
2969    /**
2970     * @return {@link #profile} (A profile to which the target of the activity definition is expected to conform.). This is the underlying object with id, value and extensions. The accessor "getProfile" gives direct access to the value
2971     */
2972    public CanonicalType getProfileElement() { 
2973      if (this.profile == null)
2974        if (Configuration.errorOnAutoCreate())
2975          throw new Error("Attempt to auto-create ActivityDefinition.profile");
2976        else if (Configuration.doAutoCreate())
2977          this.profile = new CanonicalType(); // bb
2978      return this.profile;
2979    }
2980
2981    public boolean hasProfileElement() { 
2982      return this.profile != null && !this.profile.isEmpty();
2983    }
2984
2985    public boolean hasProfile() { 
2986      return this.profile != null && !this.profile.isEmpty();
2987    }
2988
2989    /**
2990     * @param value {@link #profile} (A profile to which the target of the activity definition is expected to conform.). This is the underlying object with id, value and extensions. The accessor "getProfile" gives direct access to the value
2991     */
2992    public ActivityDefinition setProfileElement(CanonicalType value) { 
2993      this.profile = value;
2994      return this;
2995    }
2996
2997    /**
2998     * @return A profile to which the target of the activity definition is expected to conform.
2999     */
3000    public String getProfile() { 
3001      return this.profile == null ? null : this.profile.getValue();
3002    }
3003
3004    /**
3005     * @param value A profile to which the target of the activity definition is expected to conform.
3006     */
3007    public ActivityDefinition setProfile(String value) { 
3008      if (Utilities.noString(value))
3009        this.profile = null;
3010      else {
3011        if (this.profile == null)
3012          this.profile = new CanonicalType();
3013        this.profile.setValue(value);
3014      }
3015      return this;
3016    }
3017
3018    /**
3019     * @return {@link #code} (Detailed description of the type of activity; e.g. What lab test, what procedure, what kind of encounter.)
3020     */
3021    public CodeableConcept getCode() { 
3022      if (this.code == null)
3023        if (Configuration.errorOnAutoCreate())
3024          throw new Error("Attempt to auto-create ActivityDefinition.code");
3025        else if (Configuration.doAutoCreate())
3026          this.code = new CodeableConcept(); // cc
3027      return this.code;
3028    }
3029
3030    public boolean hasCode() { 
3031      return this.code != null && !this.code.isEmpty();
3032    }
3033
3034    /**
3035     * @param value {@link #code} (Detailed description of the type of activity; e.g. What lab test, what procedure, what kind of encounter.)
3036     */
3037    public ActivityDefinition setCode(CodeableConcept value) { 
3038      this.code = value;
3039      return this;
3040    }
3041
3042    /**
3043     * @return {@link #intent} (Indicates the level of authority/intentionality associated with the activity and where the request should fit into the workflow chain.). This is the underlying object with id, value and extensions. The accessor "getIntent" gives direct access to the value
3044     */
3045    public Enumeration<RequestIntent> getIntentElement() { 
3046      if (this.intent == null)
3047        if (Configuration.errorOnAutoCreate())
3048          throw new Error("Attempt to auto-create ActivityDefinition.intent");
3049        else if (Configuration.doAutoCreate())
3050          this.intent = new Enumeration<RequestIntent>(new RequestIntentEnumFactory()); // bb
3051      return this.intent;
3052    }
3053
3054    public boolean hasIntentElement() { 
3055      return this.intent != null && !this.intent.isEmpty();
3056    }
3057
3058    public boolean hasIntent() { 
3059      return this.intent != null && !this.intent.isEmpty();
3060    }
3061
3062    /**
3063     * @param value {@link #intent} (Indicates the level of authority/intentionality associated with the activity and where the request should fit into the workflow chain.). This is the underlying object with id, value and extensions. The accessor "getIntent" gives direct access to the value
3064     */
3065    public ActivityDefinition setIntentElement(Enumeration<RequestIntent> value) { 
3066      this.intent = value;
3067      return this;
3068    }
3069
3070    /**
3071     * @return Indicates the level of authority/intentionality associated with the activity and where the request should fit into the workflow chain.
3072     */
3073    public RequestIntent getIntent() { 
3074      return this.intent == null ? null : this.intent.getValue();
3075    }
3076
3077    /**
3078     * @param value Indicates the level of authority/intentionality associated with the activity and where the request should fit into the workflow chain.
3079     */
3080    public ActivityDefinition setIntent(RequestIntent value) { 
3081      if (value == null)
3082        this.intent = null;
3083      else {
3084        if (this.intent == null)
3085          this.intent = new Enumeration<RequestIntent>(new RequestIntentEnumFactory());
3086        this.intent.setValue(value);
3087      }
3088      return this;
3089    }
3090
3091    /**
3092     * @return {@link #priority} (Indicates how quickly the activity  should be addressed with respect to other requests.). This is the underlying object with id, value and extensions. The accessor "getPriority" gives direct access to the value
3093     */
3094    public Enumeration<RequestPriority> getPriorityElement() { 
3095      if (this.priority == null)
3096        if (Configuration.errorOnAutoCreate())
3097          throw new Error("Attempt to auto-create ActivityDefinition.priority");
3098        else if (Configuration.doAutoCreate())
3099          this.priority = new Enumeration<RequestPriority>(new RequestPriorityEnumFactory()); // bb
3100      return this.priority;
3101    }
3102
3103    public boolean hasPriorityElement() { 
3104      return this.priority != null && !this.priority.isEmpty();
3105    }
3106
3107    public boolean hasPriority() { 
3108      return this.priority != null && !this.priority.isEmpty();
3109    }
3110
3111    /**
3112     * @param value {@link #priority} (Indicates how quickly the activity  should be addressed with respect to other requests.). This is the underlying object with id, value and extensions. The accessor "getPriority" gives direct access to the value
3113     */
3114    public ActivityDefinition setPriorityElement(Enumeration<RequestPriority> value) { 
3115      this.priority = value;
3116      return this;
3117    }
3118
3119    /**
3120     * @return Indicates how quickly the activity  should be addressed with respect to other requests.
3121     */
3122    public RequestPriority getPriority() { 
3123      return this.priority == null ? null : this.priority.getValue();
3124    }
3125
3126    /**
3127     * @param value Indicates how quickly the activity  should be addressed with respect to other requests.
3128     */
3129    public ActivityDefinition setPriority(RequestPriority value) { 
3130      if (value == null)
3131        this.priority = null;
3132      else {
3133        if (this.priority == null)
3134          this.priority = new Enumeration<RequestPriority>(new RequestPriorityEnumFactory());
3135        this.priority.setValue(value);
3136      }
3137      return this;
3138    }
3139
3140    /**
3141     * @return {@link #doNotPerform} (Set this to true if the definition is to indicate that a particular activity should NOT be performed. If true, this element should be interpreted to reinforce a negative coding. For example NPO as a code with a doNotPerform of true would still indicate to NOT perform the action.). This is the underlying object with id, value and extensions. The accessor "getDoNotPerform" gives direct access to the value
3142     */
3143    public BooleanType getDoNotPerformElement() { 
3144      if (this.doNotPerform == null)
3145        if (Configuration.errorOnAutoCreate())
3146          throw new Error("Attempt to auto-create ActivityDefinition.doNotPerform");
3147        else if (Configuration.doAutoCreate())
3148          this.doNotPerform = new BooleanType(); // bb
3149      return this.doNotPerform;
3150    }
3151
3152    public boolean hasDoNotPerformElement() { 
3153      return this.doNotPerform != null && !this.doNotPerform.isEmpty();
3154    }
3155
3156    public boolean hasDoNotPerform() { 
3157      return this.doNotPerform != null && !this.doNotPerform.isEmpty();
3158    }
3159
3160    /**
3161     * @param value {@link #doNotPerform} (Set this to true if the definition is to indicate that a particular activity should NOT be performed. If true, this element should be interpreted to reinforce a negative coding. For example NPO as a code with a doNotPerform of true would still indicate to NOT perform the action.). This is the underlying object with id, value and extensions. The accessor "getDoNotPerform" gives direct access to the value
3162     */
3163    public ActivityDefinition setDoNotPerformElement(BooleanType value) { 
3164      this.doNotPerform = value;
3165      return this;
3166    }
3167
3168    /**
3169     * @return Set this to true if the definition is to indicate that a particular activity should NOT be performed. If true, this element should be interpreted to reinforce a negative coding. For example NPO as a code with a doNotPerform of true would still indicate to NOT perform the action.
3170     */
3171    public boolean getDoNotPerform() { 
3172      return this.doNotPerform == null || this.doNotPerform.isEmpty() ? false : this.doNotPerform.getValue();
3173    }
3174
3175    /**
3176     * @param value Set this to true if the definition is to indicate that a particular activity should NOT be performed. If true, this element should be interpreted to reinforce a negative coding. For example NPO as a code with a doNotPerform of true would still indicate to NOT perform the action.
3177     */
3178    public ActivityDefinition setDoNotPerform(boolean value) { 
3179        if (this.doNotPerform == null)
3180          this.doNotPerform = new BooleanType();
3181        this.doNotPerform.setValue(value);
3182      return this;
3183    }
3184
3185    /**
3186     * @return {@link #timing} (The period, timing or frequency upon which the described activity is to occur.)
3187     */
3188    public Type getTiming() { 
3189      return this.timing;
3190    }
3191
3192    /**
3193     * @return {@link #timing} (The period, timing or frequency upon which the described activity is to occur.)
3194     */
3195    public Timing getTimingTiming() throws FHIRException { 
3196      if (this.timing == null)
3197        return null;
3198      if (!(this.timing instanceof Timing))
3199        throw new FHIRException("Type mismatch: the type Timing was expected, but "+this.timing.getClass().getName()+" was encountered");
3200      return (Timing) this.timing;
3201    }
3202
3203    public boolean hasTimingTiming() { 
3204      return this != null && this.timing instanceof Timing;
3205    }
3206
3207    /**
3208     * @return {@link #timing} (The period, timing or frequency upon which the described activity is to occur.)
3209     */
3210    public DateTimeType getTimingDateTimeType() throws FHIRException { 
3211      if (this.timing == null)
3212        return null;
3213      if (!(this.timing instanceof DateTimeType))
3214        throw new FHIRException("Type mismatch: the type DateTimeType was expected, but "+this.timing.getClass().getName()+" was encountered");
3215      return (DateTimeType) this.timing;
3216    }
3217
3218    public boolean hasTimingDateTimeType() { 
3219      return this != null && this.timing instanceof DateTimeType;
3220    }
3221
3222    /**
3223     * @return {@link #timing} (The period, timing or frequency upon which the described activity is to occur.)
3224     */
3225    public Age getTimingAge() throws FHIRException { 
3226      if (this.timing == null)
3227        return null;
3228      if (!(this.timing instanceof Age))
3229        throw new FHIRException("Type mismatch: the type Age was expected, but "+this.timing.getClass().getName()+" was encountered");
3230      return (Age) this.timing;
3231    }
3232
3233    public boolean hasTimingAge() { 
3234      return this != null && this.timing instanceof Age;
3235    }
3236
3237    /**
3238     * @return {@link #timing} (The period, timing or frequency upon which the described activity is to occur.)
3239     */
3240    public Period getTimingPeriod() throws FHIRException { 
3241      if (this.timing == null)
3242        return null;
3243      if (!(this.timing instanceof Period))
3244        throw new FHIRException("Type mismatch: the type Period was expected, but "+this.timing.getClass().getName()+" was encountered");
3245      return (Period) this.timing;
3246    }
3247
3248    public boolean hasTimingPeriod() { 
3249      return this != null && this.timing instanceof Period;
3250    }
3251
3252    /**
3253     * @return {@link #timing} (The period, timing or frequency upon which the described activity is to occur.)
3254     */
3255    public Range getTimingRange() throws FHIRException { 
3256      if (this.timing == null)
3257        return null;
3258      if (!(this.timing instanceof Range))
3259        throw new FHIRException("Type mismatch: the type Range was expected, but "+this.timing.getClass().getName()+" was encountered");
3260      return (Range) this.timing;
3261    }
3262
3263    public boolean hasTimingRange() { 
3264      return this != null && this.timing instanceof Range;
3265    }
3266
3267    /**
3268     * @return {@link #timing} (The period, timing or frequency upon which the described activity is to occur.)
3269     */
3270    public Duration getTimingDuration() throws FHIRException { 
3271      if (this.timing == null)
3272        return null;
3273      if (!(this.timing instanceof Duration))
3274        throw new FHIRException("Type mismatch: the type Duration was expected, but "+this.timing.getClass().getName()+" was encountered");
3275      return (Duration) this.timing;
3276    }
3277
3278    public boolean hasTimingDuration() { 
3279      return this != null && this.timing instanceof Duration;
3280    }
3281
3282    public boolean hasTiming() { 
3283      return this.timing != null && !this.timing.isEmpty();
3284    }
3285
3286    /**
3287     * @param value {@link #timing} (The period, timing or frequency upon which the described activity is to occur.)
3288     */
3289    public ActivityDefinition setTiming(Type value) { 
3290      if (value != null && !(value instanceof Timing || value instanceof DateTimeType || value instanceof Age || value instanceof Period || value instanceof Range || value instanceof Duration))
3291        throw new Error("Not the right type for ActivityDefinition.timing[x]: "+value.fhirType());
3292      this.timing = value;
3293      return this;
3294    }
3295
3296    /**
3297     * @return {@link #location} (Identifies the facility where the activity will occur; e.g. home, hospital, specific clinic, etc.)
3298     */
3299    public Reference getLocation() { 
3300      if (this.location == null)
3301        if (Configuration.errorOnAutoCreate())
3302          throw new Error("Attempt to auto-create ActivityDefinition.location");
3303        else if (Configuration.doAutoCreate())
3304          this.location = new Reference(); // cc
3305      return this.location;
3306    }
3307
3308    public boolean hasLocation() { 
3309      return this.location != null && !this.location.isEmpty();
3310    }
3311
3312    /**
3313     * @param value {@link #location} (Identifies the facility where the activity will occur; e.g. home, hospital, specific clinic, etc.)
3314     */
3315    public ActivityDefinition setLocation(Reference value) { 
3316      this.location = value;
3317      return this;
3318    }
3319
3320    /**
3321     * @return {@link #location} The actual object that is the target of the reference. The reference library doesn't populate this, but you can use it to hold the resource if you resolve it. (Identifies the facility where the activity will occur; e.g. home, hospital, specific clinic, etc.)
3322     */
3323    public Location getLocationTarget() { 
3324      if (this.locationTarget == null)
3325        if (Configuration.errorOnAutoCreate())
3326          throw new Error("Attempt to auto-create ActivityDefinition.location");
3327        else if (Configuration.doAutoCreate())
3328          this.locationTarget = new Location(); // aa
3329      return this.locationTarget;
3330    }
3331
3332    /**
3333     * @param value {@link #location} The actual object that is the target of the reference. The reference library doesn't use these, but you can use it to hold the resource if you resolve it. (Identifies the facility where the activity will occur; e.g. home, hospital, specific clinic, etc.)
3334     */
3335    public ActivityDefinition setLocationTarget(Location value) { 
3336      this.locationTarget = value;
3337      return this;
3338    }
3339
3340    /**
3341     * @return {@link #participant} (Indicates who should participate in performing the action described.)
3342     */
3343    public List<ActivityDefinitionParticipantComponent> getParticipant() { 
3344      if (this.participant == null)
3345        this.participant = new ArrayList<ActivityDefinitionParticipantComponent>();
3346      return this.participant;
3347    }
3348
3349    /**
3350     * @return Returns a reference to <code>this</code> for easy method chaining
3351     */
3352    public ActivityDefinition setParticipant(List<ActivityDefinitionParticipantComponent> theParticipant) { 
3353      this.participant = theParticipant;
3354      return this;
3355    }
3356
3357    public boolean hasParticipant() { 
3358      if (this.participant == null)
3359        return false;
3360      for (ActivityDefinitionParticipantComponent item : this.participant)
3361        if (!item.isEmpty())
3362          return true;
3363      return false;
3364    }
3365
3366    public ActivityDefinitionParticipantComponent addParticipant() { //3
3367      ActivityDefinitionParticipantComponent t = new ActivityDefinitionParticipantComponent();
3368      if (this.participant == null)
3369        this.participant = new ArrayList<ActivityDefinitionParticipantComponent>();
3370      this.participant.add(t);
3371      return t;
3372    }
3373
3374    public ActivityDefinition addParticipant(ActivityDefinitionParticipantComponent t) { //3
3375      if (t == null)
3376        return this;
3377      if (this.participant == null)
3378        this.participant = new ArrayList<ActivityDefinitionParticipantComponent>();
3379      this.participant.add(t);
3380      return this;
3381    }
3382
3383    /**
3384     * @return The first repetition of repeating field {@link #participant}, creating it if it does not already exist
3385     */
3386    public ActivityDefinitionParticipantComponent getParticipantFirstRep() { 
3387      if (getParticipant().isEmpty()) {
3388        addParticipant();
3389      }
3390      return getParticipant().get(0);
3391    }
3392
3393    /**
3394     * @return {@link #product} (Identifies the food, drug or other product being consumed or supplied in the activity.)
3395     */
3396    public Type getProduct() { 
3397      return this.product;
3398    }
3399
3400    /**
3401     * @return {@link #product} (Identifies the food, drug or other product being consumed or supplied in the activity.)
3402     */
3403    public Reference getProductReference() throws FHIRException { 
3404      if (this.product == null)
3405        return null;
3406      if (!(this.product instanceof Reference))
3407        throw new FHIRException("Type mismatch: the type Reference was expected, but "+this.product.getClass().getName()+" was encountered");
3408      return (Reference) this.product;
3409    }
3410
3411    public boolean hasProductReference() { 
3412      return this != null && this.product instanceof Reference;
3413    }
3414
3415    /**
3416     * @return {@link #product} (Identifies the food, drug or other product being consumed or supplied in the activity.)
3417     */
3418    public CodeableConcept getProductCodeableConcept() throws FHIRException { 
3419      if (this.product == null)
3420        return null;
3421      if (!(this.product instanceof CodeableConcept))
3422        throw new FHIRException("Type mismatch: the type CodeableConcept was expected, but "+this.product.getClass().getName()+" was encountered");
3423      return (CodeableConcept) this.product;
3424    }
3425
3426    public boolean hasProductCodeableConcept() { 
3427      return this != null && this.product instanceof CodeableConcept;
3428    }
3429
3430    public boolean hasProduct() { 
3431      return this.product != null && !this.product.isEmpty();
3432    }
3433
3434    /**
3435     * @param value {@link #product} (Identifies the food, drug or other product being consumed or supplied in the activity.)
3436     */
3437    public ActivityDefinition setProduct(Type value) { 
3438      if (value != null && !(value instanceof Reference || value instanceof CodeableConcept))
3439        throw new Error("Not the right type for ActivityDefinition.product[x]: "+value.fhirType());
3440      this.product = value;
3441      return this;
3442    }
3443
3444    /**
3445     * @return {@link #quantity} (Identifies the quantity expected to be consumed at once (per dose, per meal, etc.).)
3446     */
3447    public Quantity getQuantity() { 
3448      if (this.quantity == null)
3449        if (Configuration.errorOnAutoCreate())
3450          throw new Error("Attempt to auto-create ActivityDefinition.quantity");
3451        else if (Configuration.doAutoCreate())
3452          this.quantity = new Quantity(); // cc
3453      return this.quantity;
3454    }
3455
3456    public boolean hasQuantity() { 
3457      return this.quantity != null && !this.quantity.isEmpty();
3458    }
3459
3460    /**
3461     * @param value {@link #quantity} (Identifies the quantity expected to be consumed at once (per dose, per meal, etc.).)
3462     */
3463    public ActivityDefinition setQuantity(Quantity value) { 
3464      this.quantity = value;
3465      return this;
3466    }
3467
3468    /**
3469     * @return {@link #dosage} (Provides detailed dosage instructions in the same way that they are described for MedicationRequest resources.)
3470     */
3471    public List<Dosage> getDosage() { 
3472      if (this.dosage == null)
3473        this.dosage = new ArrayList<Dosage>();
3474      return this.dosage;
3475    }
3476
3477    /**
3478     * @return Returns a reference to <code>this</code> for easy method chaining
3479     */
3480    public ActivityDefinition setDosage(List<Dosage> theDosage) { 
3481      this.dosage = theDosage;
3482      return this;
3483    }
3484
3485    public boolean hasDosage() { 
3486      if (this.dosage == null)
3487        return false;
3488      for (Dosage item : this.dosage)
3489        if (!item.isEmpty())
3490          return true;
3491      return false;
3492    }
3493
3494    public Dosage addDosage() { //3
3495      Dosage t = new Dosage();
3496      if (this.dosage == null)
3497        this.dosage = new ArrayList<Dosage>();
3498      this.dosage.add(t);
3499      return t;
3500    }
3501
3502    public ActivityDefinition addDosage(Dosage t) { //3
3503      if (t == null)
3504        return this;
3505      if (this.dosage == null)
3506        this.dosage = new ArrayList<Dosage>();
3507      this.dosage.add(t);
3508      return this;
3509    }
3510
3511    /**
3512     * @return The first repetition of repeating field {@link #dosage}, creating it if it does not already exist
3513     */
3514    public Dosage getDosageFirstRep() { 
3515      if (getDosage().isEmpty()) {
3516        addDosage();
3517      }
3518      return getDosage().get(0);
3519    }
3520
3521    /**
3522     * @return {@link #bodySite} (Indicates the sites on the subject's body where the procedure should be performed (I.e. the target sites).)
3523     */
3524    public List<CodeableConcept> getBodySite() { 
3525      if (this.bodySite == null)
3526        this.bodySite = new ArrayList<CodeableConcept>();
3527      return this.bodySite;
3528    }
3529
3530    /**
3531     * @return Returns a reference to <code>this</code> for easy method chaining
3532     */
3533    public ActivityDefinition setBodySite(List<CodeableConcept> theBodySite) { 
3534      this.bodySite = theBodySite;
3535      return this;
3536    }
3537
3538    public boolean hasBodySite() { 
3539      if (this.bodySite == null)
3540        return false;
3541      for (CodeableConcept item : this.bodySite)
3542        if (!item.isEmpty())
3543          return true;
3544      return false;
3545    }
3546
3547    public CodeableConcept addBodySite() { //3
3548      CodeableConcept t = new CodeableConcept();
3549      if (this.bodySite == null)
3550        this.bodySite = new ArrayList<CodeableConcept>();
3551      this.bodySite.add(t);
3552      return t;
3553    }
3554
3555    public ActivityDefinition addBodySite(CodeableConcept t) { //3
3556      if (t == null)
3557        return this;
3558      if (this.bodySite == null)
3559        this.bodySite = new ArrayList<CodeableConcept>();
3560      this.bodySite.add(t);
3561      return this;
3562    }
3563
3564    /**
3565     * @return The first repetition of repeating field {@link #bodySite}, creating it if it does not already exist
3566     */
3567    public CodeableConcept getBodySiteFirstRep() { 
3568      if (getBodySite().isEmpty()) {
3569        addBodySite();
3570      }
3571      return getBodySite().get(0);
3572    }
3573
3574    /**
3575     * @return {@link #specimenRequirement} (Defines specimen requirements for the action to be performed, such as required specimens for a lab test.)
3576     */
3577    public List<Reference> getSpecimenRequirement() { 
3578      if (this.specimenRequirement == null)
3579        this.specimenRequirement = new ArrayList<Reference>();
3580      return this.specimenRequirement;
3581    }
3582
3583    /**
3584     * @return Returns a reference to <code>this</code> for easy method chaining
3585     */
3586    public ActivityDefinition setSpecimenRequirement(List<Reference> theSpecimenRequirement) { 
3587      this.specimenRequirement = theSpecimenRequirement;
3588      return this;
3589    }
3590
3591    public boolean hasSpecimenRequirement() { 
3592      if (this.specimenRequirement == null)
3593        return false;
3594      for (Reference item : this.specimenRequirement)
3595        if (!item.isEmpty())
3596          return true;
3597      return false;
3598    }
3599
3600    public Reference addSpecimenRequirement() { //3
3601      Reference t = new Reference();
3602      if (this.specimenRequirement == null)
3603        this.specimenRequirement = new ArrayList<Reference>();
3604      this.specimenRequirement.add(t);
3605      return t;
3606    }
3607
3608    public ActivityDefinition addSpecimenRequirement(Reference t) { //3
3609      if (t == null)
3610        return this;
3611      if (this.specimenRequirement == null)
3612        this.specimenRequirement = new ArrayList<Reference>();
3613      this.specimenRequirement.add(t);
3614      return this;
3615    }
3616
3617    /**
3618     * @return The first repetition of repeating field {@link #specimenRequirement}, creating it if it does not already exist
3619     */
3620    public Reference getSpecimenRequirementFirstRep() { 
3621      if (getSpecimenRequirement().isEmpty()) {
3622        addSpecimenRequirement();
3623      }
3624      return getSpecimenRequirement().get(0);
3625    }
3626
3627    /**
3628     * @deprecated Use Reference#setResource(IBaseResource) instead
3629     */
3630    @Deprecated
3631    public List<SpecimenDefinition> getSpecimenRequirementTarget() { 
3632      if (this.specimenRequirementTarget == null)
3633        this.specimenRequirementTarget = new ArrayList<SpecimenDefinition>();
3634      return this.specimenRequirementTarget;
3635    }
3636
3637    /**
3638     * @deprecated Use Reference#setResource(IBaseResource) instead
3639     */
3640    @Deprecated
3641    public SpecimenDefinition addSpecimenRequirementTarget() { 
3642      SpecimenDefinition r = new SpecimenDefinition();
3643      if (this.specimenRequirementTarget == null)
3644        this.specimenRequirementTarget = new ArrayList<SpecimenDefinition>();
3645      this.specimenRequirementTarget.add(r);
3646      return r;
3647    }
3648
3649    /**
3650     * @return {@link #observationRequirement} (Defines observation requirements for the action to be performed, such as body weight or surface area.)
3651     */
3652    public List<Reference> getObservationRequirement() { 
3653      if (this.observationRequirement == null)
3654        this.observationRequirement = new ArrayList<Reference>();
3655      return this.observationRequirement;
3656    }
3657
3658    /**
3659     * @return Returns a reference to <code>this</code> for easy method chaining
3660     */
3661    public ActivityDefinition setObservationRequirement(List<Reference> theObservationRequirement) { 
3662      this.observationRequirement = theObservationRequirement;
3663      return this;
3664    }
3665
3666    public boolean hasObservationRequirement() { 
3667      if (this.observationRequirement == null)
3668        return false;
3669      for (Reference item : this.observationRequirement)
3670        if (!item.isEmpty())
3671          return true;
3672      return false;
3673    }
3674
3675    public Reference addObservationRequirement() { //3
3676      Reference t = new Reference();
3677      if (this.observationRequirement == null)
3678        this.observationRequirement = new ArrayList<Reference>();
3679      this.observationRequirement.add(t);
3680      return t;
3681    }
3682
3683    public ActivityDefinition addObservationRequirement(Reference t) { //3
3684      if (t == null)
3685        return this;
3686      if (this.observationRequirement == null)
3687        this.observationRequirement = new ArrayList<Reference>();
3688      this.observationRequirement.add(t);
3689      return this;
3690    }
3691
3692    /**
3693     * @return The first repetition of repeating field {@link #observationRequirement}, creating it if it does not already exist
3694     */
3695    public Reference getObservationRequirementFirstRep() { 
3696      if (getObservationRequirement().isEmpty()) {
3697        addObservationRequirement();
3698      }
3699      return getObservationRequirement().get(0);
3700    }
3701
3702    /**
3703     * @deprecated Use Reference#setResource(IBaseResource) instead
3704     */
3705    @Deprecated
3706    public List<ObservationDefinition> getObservationRequirementTarget() { 
3707      if (this.observationRequirementTarget == null)
3708        this.observationRequirementTarget = new ArrayList<ObservationDefinition>();
3709      return this.observationRequirementTarget;
3710    }
3711
3712    /**
3713     * @deprecated Use Reference#setResource(IBaseResource) instead
3714     */
3715    @Deprecated
3716    public ObservationDefinition addObservationRequirementTarget() { 
3717      ObservationDefinition r = new ObservationDefinition();
3718      if (this.observationRequirementTarget == null)
3719        this.observationRequirementTarget = new ArrayList<ObservationDefinition>();
3720      this.observationRequirementTarget.add(r);
3721      return r;
3722    }
3723
3724    /**
3725     * @return {@link #observationResultRequirement} (Defines the observations that are expected to be produced by the action.)
3726     */
3727    public List<Reference> getObservationResultRequirement() { 
3728      if (this.observationResultRequirement == null)
3729        this.observationResultRequirement = new ArrayList<Reference>();
3730      return this.observationResultRequirement;
3731    }
3732
3733    /**
3734     * @return Returns a reference to <code>this</code> for easy method chaining
3735     */
3736    public ActivityDefinition setObservationResultRequirement(List<Reference> theObservationResultRequirement) { 
3737      this.observationResultRequirement = theObservationResultRequirement;
3738      return this;
3739    }
3740
3741    public boolean hasObservationResultRequirement() { 
3742      if (this.observationResultRequirement == null)
3743        return false;
3744      for (Reference item : this.observationResultRequirement)
3745        if (!item.isEmpty())
3746          return true;
3747      return false;
3748    }
3749
3750    public Reference addObservationResultRequirement() { //3
3751      Reference t = new Reference();
3752      if (this.observationResultRequirement == null)
3753        this.observationResultRequirement = new ArrayList<Reference>();
3754      this.observationResultRequirement.add(t);
3755      return t;
3756    }
3757
3758    public ActivityDefinition addObservationResultRequirement(Reference t) { //3
3759      if (t == null)
3760        return this;
3761      if (this.observationResultRequirement == null)
3762        this.observationResultRequirement = new ArrayList<Reference>();
3763      this.observationResultRequirement.add(t);
3764      return this;
3765    }
3766
3767    /**
3768     * @return The first repetition of repeating field {@link #observationResultRequirement}, creating it if it does not already exist
3769     */
3770    public Reference getObservationResultRequirementFirstRep() { 
3771      if (getObservationResultRequirement().isEmpty()) {
3772        addObservationResultRequirement();
3773      }
3774      return getObservationResultRequirement().get(0);
3775    }
3776
3777    /**
3778     * @deprecated Use Reference#setResource(IBaseResource) instead
3779     */
3780    @Deprecated
3781    public List<ObservationDefinition> getObservationResultRequirementTarget() { 
3782      if (this.observationResultRequirementTarget == null)
3783        this.observationResultRequirementTarget = new ArrayList<ObservationDefinition>();
3784      return this.observationResultRequirementTarget;
3785    }
3786
3787    /**
3788     * @deprecated Use Reference#setResource(IBaseResource) instead
3789     */
3790    @Deprecated
3791    public ObservationDefinition addObservationResultRequirementTarget() { 
3792      ObservationDefinition r = new ObservationDefinition();
3793      if (this.observationResultRequirementTarget == null)
3794        this.observationResultRequirementTarget = new ArrayList<ObservationDefinition>();
3795      this.observationResultRequirementTarget.add(r);
3796      return r;
3797    }
3798
3799    /**
3800     * @return {@link #transform} (A reference to a StructureMap resource that defines a transform that can be executed to produce the intent resource using the ActivityDefinition instance as the input.). This is the underlying object with id, value and extensions. The accessor "getTransform" gives direct access to the value
3801     */
3802    public CanonicalType getTransformElement() { 
3803      if (this.transform == null)
3804        if (Configuration.errorOnAutoCreate())
3805          throw new Error("Attempt to auto-create ActivityDefinition.transform");
3806        else if (Configuration.doAutoCreate())
3807          this.transform = new CanonicalType(); // bb
3808      return this.transform;
3809    }
3810
3811    public boolean hasTransformElement() { 
3812      return this.transform != null && !this.transform.isEmpty();
3813    }
3814
3815    public boolean hasTransform() { 
3816      return this.transform != null && !this.transform.isEmpty();
3817    }
3818
3819    /**
3820     * @param value {@link #transform} (A reference to a StructureMap resource that defines a transform that can be executed to produce the intent resource using the ActivityDefinition instance as the input.). This is the underlying object with id, value and extensions. The accessor "getTransform" gives direct access to the value
3821     */
3822    public ActivityDefinition setTransformElement(CanonicalType value) { 
3823      this.transform = value;
3824      return this;
3825    }
3826
3827    /**
3828     * @return A reference to a StructureMap resource that defines a transform that can be executed to produce the intent resource using the ActivityDefinition instance as the input.
3829     */
3830    public String getTransform() { 
3831      return this.transform == null ? null : this.transform.getValue();
3832    }
3833
3834    /**
3835     * @param value A reference to a StructureMap resource that defines a transform that can be executed to produce the intent resource using the ActivityDefinition instance as the input.
3836     */
3837    public ActivityDefinition setTransform(String value) { 
3838      if (Utilities.noString(value))
3839        this.transform = null;
3840      else {
3841        if (this.transform == null)
3842          this.transform = new CanonicalType();
3843        this.transform.setValue(value);
3844      }
3845      return this;
3846    }
3847
3848    /**
3849     * @return {@link #dynamicValue} (Dynamic values that will be evaluated to produce values for elements of the resulting resource. For example, if the dosage of a medication must be computed based on the patient's weight, a dynamic value would be used to specify an expression that calculated the weight, and the path on the request resource that would contain the result.)
3850     */
3851    public List<ActivityDefinitionDynamicValueComponent> getDynamicValue() { 
3852      if (this.dynamicValue == null)
3853        this.dynamicValue = new ArrayList<ActivityDefinitionDynamicValueComponent>();
3854      return this.dynamicValue;
3855    }
3856
3857    /**
3858     * @return Returns a reference to <code>this</code> for easy method chaining
3859     */
3860    public ActivityDefinition setDynamicValue(List<ActivityDefinitionDynamicValueComponent> theDynamicValue) { 
3861      this.dynamicValue = theDynamicValue;
3862      return this;
3863    }
3864
3865    public boolean hasDynamicValue() { 
3866      if (this.dynamicValue == null)
3867        return false;
3868      for (ActivityDefinitionDynamicValueComponent item : this.dynamicValue)
3869        if (!item.isEmpty())
3870          return true;
3871      return false;
3872    }
3873
3874    public ActivityDefinitionDynamicValueComponent addDynamicValue() { //3
3875      ActivityDefinitionDynamicValueComponent t = new ActivityDefinitionDynamicValueComponent();
3876      if (this.dynamicValue == null)
3877        this.dynamicValue = new ArrayList<ActivityDefinitionDynamicValueComponent>();
3878      this.dynamicValue.add(t);
3879      return t;
3880    }
3881
3882    public ActivityDefinition addDynamicValue(ActivityDefinitionDynamicValueComponent t) { //3
3883      if (t == null)
3884        return this;
3885      if (this.dynamicValue == null)
3886        this.dynamicValue = new ArrayList<ActivityDefinitionDynamicValueComponent>();
3887      this.dynamicValue.add(t);
3888      return this;
3889    }
3890
3891    /**
3892     * @return The first repetition of repeating field {@link #dynamicValue}, creating it if it does not already exist
3893     */
3894    public ActivityDefinitionDynamicValueComponent getDynamicValueFirstRep() { 
3895      if (getDynamicValue().isEmpty()) {
3896        addDynamicValue();
3897      }
3898      return getDynamicValue().get(0);
3899    }
3900
3901      protected void listChildren(List<Property> children) {
3902        super.listChildren(children);
3903        children.add(new Property("url", "uri", "An absolute URI that is used to identify this activity definition 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 activity definition is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the activity definition is stored on different servers.", 0, 1, url));
3904        children.add(new Property("identifier", "Identifier", "A formal identifier that is used to identify this activity definition when it is represented in other formats, or referenced in a specification, model, design or an instance.", 0, java.lang.Integer.MAX_VALUE, identifier));
3905        children.add(new Property("version", "string", "The identifier that is used to identify this version of the activity definition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the activity definition 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. To provide a version consistent with the Decision Support Service specification, use the format Major.Minor.Revision (e.g. 1.0.0). For more information on versioning knowledge assets, refer to the Decision Support Service specification. Note that a version is required for non-experimental active assets.", 0, 1, version));
3906        children.add(new Property("name", "string", "A natural language name identifying the activity definition. This name should be usable as an identifier for the module by machine processing applications such as code generation.", 0, 1, name));
3907        children.add(new Property("title", "string", "A short, descriptive, user-friendly title for the activity definition.", 0, 1, title));
3908        children.add(new Property("subtitle", "string", "An explanatory or alternate title for the activity definition giving additional information about its content.", 0, 1, subtitle));
3909        children.add(new Property("status", "code", "The status of this activity definition. Enables tracking the life-cycle of the content.", 0, 1, status));
3910        children.add(new Property("experimental", "boolean", "A Boolean value to indicate that this activity definition is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.", 0, 1, experimental));
3911        children.add(new Property("subject[x]", "CodeableConcept|Reference(Group)", "A code or group definition that describes the intended subject of the activity being defined.", 0, 1, subject));
3912        children.add(new Property("date", "dateTime", "The date  (and optionally time) when the activity definition 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 activity definition changes.", 0, 1, date));
3913        children.add(new Property("publisher", "string", "The name of the organization or individual that published the activity definition.", 0, 1, publisher));
3914        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));
3915        children.add(new Property("description", "markdown", "A free text natural language description of the activity definition from a consumer's perspective.", 0, 1, description));
3916        children.add(new Property("useContext", "UsageContext", "The content was developed with a focus and intent of supporting the contexts that are listed. These terms may be used to assist with indexing and searching for appropriate activity definition instances.", 0, java.lang.Integer.MAX_VALUE, useContext));
3917        children.add(new Property("jurisdiction", "CodeableConcept", "A legal or geographic region in which the activity definition is intended to be used.", 0, java.lang.Integer.MAX_VALUE, jurisdiction));
3918        children.add(new Property("purpose", "markdown", "Explanation of why this activity definition is needed and why it has been designed as it has.", 0, 1, purpose));
3919        children.add(new Property("usage", "string", "A detailed description of how the activity definition is used from a clinical perspective.", 0, 1, usage));
3920        children.add(new Property("copyright", "markdown", "A copyright statement relating to the activity definition and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the activity definition.", 0, 1, copyright));
3921        children.add(new Property("approvalDate", "date", "The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage.", 0, 1, approvalDate));
3922        children.add(new Property("lastReviewDate", "date", "The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date.", 0, 1, lastReviewDate));
3923        children.add(new Property("effectivePeriod", "Period", "The period during which the activity definition content was or is planned to be in active use.", 0, 1, effectivePeriod));
3924        children.add(new Property("topic", "CodeableConcept", "Descriptive topics related to the content of the activity. Topics provide a high-level categorization of the activity that can be useful for filtering and searching.", 0, java.lang.Integer.MAX_VALUE, topic));
3925        children.add(new Property("author", "ContactDetail", "An individiual or organization primarily involved in the creation and maintenance of the content.", 0, java.lang.Integer.MAX_VALUE, author));
3926        children.add(new Property("editor", "ContactDetail", "An individual or organization primarily responsible for internal coherence of the content.", 0, java.lang.Integer.MAX_VALUE, editor));
3927        children.add(new Property("reviewer", "ContactDetail", "An individual or organization primarily responsible for review of some aspect of the content.", 0, java.lang.Integer.MAX_VALUE, reviewer));
3928        children.add(new Property("endorser", "ContactDetail", "An individual or organization responsible for officially endorsing the content for use in some setting.", 0, java.lang.Integer.MAX_VALUE, endorser));
3929        children.add(new Property("relatedArtifact", "RelatedArtifact", "Related artifacts such as additional documentation, justification, or bibliographic references.", 0, java.lang.Integer.MAX_VALUE, relatedArtifact));
3930        children.add(new Property("library", "canonical(Library)", "A reference to a Library resource containing any formal logic used by the activity definition.", 0, java.lang.Integer.MAX_VALUE, library));
3931        children.add(new Property("kind", "code", "A description of the kind of resource the activity definition is representing. For example, a MedicationRequest, a ServiceRequest, or a CommunicationRequest. Typically, but not always, this is a Request resource.", 0, 1, kind));
3932        children.add(new Property("profile", "canonical(StructureDefinition)", "A profile to which the target of the activity definition is expected to conform.", 0, 1, profile));
3933        children.add(new Property("code", "CodeableConcept", "Detailed description of the type of activity; e.g. What lab test, what procedure, what kind of encounter.", 0, 1, code));
3934        children.add(new Property("intent", "code", "Indicates the level of authority/intentionality associated with the activity and where the request should fit into the workflow chain.", 0, 1, intent));
3935        children.add(new Property("priority", "code", "Indicates how quickly the activity  should be addressed with respect to other requests.", 0, 1, priority));
3936        children.add(new Property("doNotPerform", "boolean", "Set this to true if the definition is to indicate that a particular activity should NOT be performed. If true, this element should be interpreted to reinforce a negative coding. For example NPO as a code with a doNotPerform of true would still indicate to NOT perform the action.", 0, 1, doNotPerform));
3937        children.add(new Property("timing[x]", "Timing|dateTime|Age|Period|Range|Duration", "The period, timing or frequency upon which the described activity is to occur.", 0, 1, timing));
3938        children.add(new Property("location", "Reference(Location)", "Identifies the facility where the activity will occur; e.g. home, hospital, specific clinic, etc.", 0, 1, location));
3939        children.add(new Property("participant", "", "Indicates who should participate in performing the action described.", 0, java.lang.Integer.MAX_VALUE, participant));
3940        children.add(new Property("product[x]", "Reference(Medication|Substance)|CodeableConcept", "Identifies the food, drug or other product being consumed or supplied in the activity.", 0, 1, product));
3941        children.add(new Property("quantity", "SimpleQuantity", "Identifies the quantity expected to be consumed at once (per dose, per meal, etc.).", 0, 1, quantity));
3942        children.add(new Property("dosage", "Dosage", "Provides detailed dosage instructions in the same way that they are described for MedicationRequest resources.", 0, java.lang.Integer.MAX_VALUE, dosage));
3943        children.add(new Property("bodySite", "CodeableConcept", "Indicates the sites on the subject's body where the procedure should be performed (I.e. the target sites).", 0, java.lang.Integer.MAX_VALUE, bodySite));
3944        children.add(new Property("specimenRequirement", "Reference(SpecimenDefinition)", "Defines specimen requirements for the action to be performed, such as required specimens for a lab test.", 0, java.lang.Integer.MAX_VALUE, specimenRequirement));
3945        children.add(new Property("observationRequirement", "Reference(ObservationDefinition)", "Defines observation requirements for the action to be performed, such as body weight or surface area.", 0, java.lang.Integer.MAX_VALUE, observationRequirement));
3946        children.add(new Property("observationResultRequirement", "Reference(ObservationDefinition)", "Defines the observations that are expected to be produced by the action.", 0, java.lang.Integer.MAX_VALUE, observationResultRequirement));
3947        children.add(new Property("transform", "canonical(StructureMap)", "A reference to a StructureMap resource that defines a transform that can be executed to produce the intent resource using the ActivityDefinition instance as the input.", 0, 1, transform));
3948        children.add(new Property("dynamicValue", "", "Dynamic values that will be evaluated to produce values for elements of the resulting resource. For example, if the dosage of a medication must be computed based on the patient's weight, a dynamic value would be used to specify an expression that calculated the weight, and the path on the request resource that would contain the result.", 0, java.lang.Integer.MAX_VALUE, dynamicValue));
3949      }
3950
3951      @Override
3952      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
3953        switch (_hash) {
3954        case 116079: /*url*/  return new Property("url", "uri", "An absolute URI that is used to identify this activity definition 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 activity definition is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the activity definition is stored on different servers.", 0, 1, url);
3955        case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "A formal identifier that is used to identify this activity definition when it is represented in other formats, or referenced in a specification, model, design or an instance.", 0, java.lang.Integer.MAX_VALUE, identifier);
3956        case 351608024: /*version*/  return new Property("version", "string", "The identifier that is used to identify this version of the activity definition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the activity definition 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. To provide a version consistent with the Decision Support Service specification, use the format Major.Minor.Revision (e.g. 1.0.0). For more information on versioning knowledge assets, refer to the Decision Support Service specification. Note that a version is required for non-experimental active assets.", 0, 1, version);
3957        case 3373707: /*name*/  return new Property("name", "string", "A natural language name identifying the activity definition. This name should be usable as an identifier for the module by machine processing applications such as code generation.", 0, 1, name);
3958        case 110371416: /*title*/  return new Property("title", "string", "A short, descriptive, user-friendly title for the activity definition.", 0, 1, title);
3959        case -2060497896: /*subtitle*/  return new Property("subtitle", "string", "An explanatory or alternate title for the activity definition giving additional information about its content.", 0, 1, subtitle);
3960        case -892481550: /*status*/  return new Property("status", "code", "The status of this activity definition. Enables tracking the life-cycle of the content.", 0, 1, status);
3961        case -404562712: /*experimental*/  return new Property("experimental", "boolean", "A Boolean value to indicate that this activity definition is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.", 0, 1, experimental);
3962        case -573640748: /*subject[x]*/  return new Property("subject[x]", "CodeableConcept|Reference(Group)", "A code or group definition that describes the intended subject of the activity being defined.", 0, 1, subject);
3963        case -1867885268: /*subject*/  return new Property("subject[x]", "CodeableConcept|Reference(Group)", "A code or group definition that describes the intended subject of the activity being defined.", 0, 1, subject);
3964        case -1257122603: /*subjectCodeableConcept*/  return new Property("subject[x]", "CodeableConcept|Reference(Group)", "A code or group definition that describes the intended subject of the activity being defined.", 0, 1, subject);
3965        case 772938623: /*subjectReference*/  return new Property("subject[x]", "CodeableConcept|Reference(Group)", "A code or group definition that describes the intended subject of the activity being defined.", 0, 1, subject);
3966        case 3076014: /*date*/  return new Property("date", "dateTime", "The date  (and optionally time) when the activity definition 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 activity definition changes.", 0, 1, date);
3967        case 1447404028: /*publisher*/  return new Property("publisher", "string", "The name of the organization or individual that published the activity definition.", 0, 1, publisher);
3968        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);
3969        case -1724546052: /*description*/  return new Property("description", "markdown", "A free text natural language description of the activity definition from a consumer's perspective.", 0, 1, description);
3970        case -669707736: /*useContext*/  return new Property("useContext", "UsageContext", "The content was developed with a focus and intent of supporting the contexts that are listed. These terms may be used to assist with indexing and searching for appropriate activity definition instances.", 0, java.lang.Integer.MAX_VALUE, useContext);
3971        case -507075711: /*jurisdiction*/  return new Property("jurisdiction", "CodeableConcept", "A legal or geographic region in which the activity definition is intended to be used.", 0, java.lang.Integer.MAX_VALUE, jurisdiction);
3972        case -220463842: /*purpose*/  return new Property("purpose", "markdown", "Explanation of why this activity definition is needed and why it has been designed as it has.", 0, 1, purpose);
3973        case 111574433: /*usage*/  return new Property("usage", "string", "A detailed description of how the activity definition is used from a clinical perspective.", 0, 1, usage);
3974        case 1522889671: /*copyright*/  return new Property("copyright", "markdown", "A copyright statement relating to the activity definition and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the activity definition.", 0, 1, copyright);
3975        case 223539345: /*approvalDate*/  return new Property("approvalDate", "date", "The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage.", 0, 1, approvalDate);
3976        case -1687512484: /*lastReviewDate*/  return new Property("lastReviewDate", "date", "The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date.", 0, 1, lastReviewDate);
3977        case -403934648: /*effectivePeriod*/  return new Property("effectivePeriod", "Period", "The period during which the activity definition content was or is planned to be in active use.", 0, 1, effectivePeriod);
3978        case 110546223: /*topic*/  return new Property("topic", "CodeableConcept", "Descriptive topics related to the content of the activity. Topics provide a high-level categorization of the activity that can be useful for filtering and searching.", 0, java.lang.Integer.MAX_VALUE, topic);
3979        case -1406328437: /*author*/  return new Property("author", "ContactDetail", "An individiual or organization primarily involved in the creation and maintenance of the content.", 0, java.lang.Integer.MAX_VALUE, author);
3980        case -1307827859: /*editor*/  return new Property("editor", "ContactDetail", "An individual or organization primarily responsible for internal coherence of the content.", 0, java.lang.Integer.MAX_VALUE, editor);
3981        case -261190139: /*reviewer*/  return new Property("reviewer", "ContactDetail", "An individual or organization primarily responsible for review of some aspect of the content.", 0, java.lang.Integer.MAX_VALUE, reviewer);
3982        case 1740277666: /*endorser*/  return new Property("endorser", "ContactDetail", "An individual or organization responsible for officially endorsing the content for use in some setting.", 0, java.lang.Integer.MAX_VALUE, endorser);
3983        case 666807069: /*relatedArtifact*/  return new Property("relatedArtifact", "RelatedArtifact", "Related artifacts such as additional documentation, justification, or bibliographic references.", 0, java.lang.Integer.MAX_VALUE, relatedArtifact);
3984        case 166208699: /*library*/  return new Property("library", "canonical(Library)", "A reference to a Library resource containing any formal logic used by the activity definition.", 0, java.lang.Integer.MAX_VALUE, library);
3985        case 3292052: /*kind*/  return new Property("kind", "code", "A description of the kind of resource the activity definition is representing. For example, a MedicationRequest, a ServiceRequest, or a CommunicationRequest. Typically, but not always, this is a Request resource.", 0, 1, kind);
3986        case -309425751: /*profile*/  return new Property("profile", "canonical(StructureDefinition)", "A profile to which the target of the activity definition is expected to conform.", 0, 1, profile);
3987        case 3059181: /*code*/  return new Property("code", "CodeableConcept", "Detailed description of the type of activity; e.g. What lab test, what procedure, what kind of encounter.", 0, 1, code);
3988        case -1183762788: /*intent*/  return new Property("intent", "code", "Indicates the level of authority/intentionality associated with the activity and where the request should fit into the workflow chain.", 0, 1, intent);
3989        case -1165461084: /*priority*/  return new Property("priority", "code", "Indicates how quickly the activity  should be addressed with respect to other requests.", 0, 1, priority);
3990        case -1788508167: /*doNotPerform*/  return new Property("doNotPerform", "boolean", "Set this to true if the definition is to indicate that a particular activity should NOT be performed. If true, this element should be interpreted to reinforce a negative coding. For example NPO as a code with a doNotPerform of true would still indicate to NOT perform the action.", 0, 1, doNotPerform);
3991        case 164632566: /*timing[x]*/  return new Property("timing[x]", "Timing|dateTime|Age|Period|Range|Duration", "The period, timing or frequency upon which the described activity is to occur.", 0, 1, timing);
3992        case -873664438: /*timing*/  return new Property("timing[x]", "Timing|dateTime|Age|Period|Range|Duration", "The period, timing or frequency upon which the described activity is to occur.", 0, 1, timing);
3993        case -497554124: /*timingTiming*/  return new Property("timing[x]", "Timing|dateTime|Age|Period|Range|Duration", "The period, timing or frequency upon which the described activity is to occur.", 0, 1, timing);
3994        case -1837458939: /*timingDateTime*/  return new Property("timing[x]", "Timing|dateTime|Age|Period|Range|Duration", "The period, timing or frequency upon which the described activity is to occur.", 0, 1, timing);
3995        case 164607061: /*timingAge*/  return new Property("timing[x]", "Timing|dateTime|Age|Period|Range|Duration", "The period, timing or frequency upon which the described activity is to occur.", 0, 1, timing);
3996        case -615615829: /*timingPeriod*/  return new Property("timing[x]", "Timing|dateTime|Age|Period|Range|Duration", "The period, timing or frequency upon which the described activity is to occur.", 0, 1, timing);
3997        case -710871277: /*timingRange*/  return new Property("timing[x]", "Timing|dateTime|Age|Period|Range|Duration", "The period, timing or frequency upon which the described activity is to occur.", 0, 1, timing);
3998        case -1327253506: /*timingDuration*/  return new Property("timing[x]", "Timing|dateTime|Age|Period|Range|Duration", "The period, timing or frequency upon which the described activity is to occur.", 0, 1, timing);
3999        case 1901043637: /*location*/  return new Property("location", "Reference(Location)", "Identifies the facility where the activity will occur; e.g. home, hospital, specific clinic, etc.", 0, 1, location);
4000        case 767422259: /*participant*/  return new Property("participant", "", "Indicates who should participate in performing the action described.", 0, java.lang.Integer.MAX_VALUE, participant);
4001        case 1753005361: /*product[x]*/  return new Property("product[x]", "Reference(Medication|Substance)|CodeableConcept", "Identifies the food, drug or other product being consumed or supplied in the activity.", 0, 1, product);
4002        case -309474065: /*product*/  return new Property("product[x]", "Reference(Medication|Substance)|CodeableConcept", "Identifies the food, drug or other product being consumed or supplied in the activity.", 0, 1, product);
4003        case -669667556: /*productReference*/  return new Property("product[x]", "Reference(Medication|Substance)|CodeableConcept", "Identifies the food, drug or other product being consumed or supplied in the activity.", 0, 1, product);
4004        case 906854066: /*productCodeableConcept*/  return new Property("product[x]", "Reference(Medication|Substance)|CodeableConcept", "Identifies the food, drug or other product being consumed or supplied in the activity.", 0, 1, product);
4005        case -1285004149: /*quantity*/  return new Property("quantity", "SimpleQuantity", "Identifies the quantity expected to be consumed at once (per dose, per meal, etc.).", 0, 1, quantity);
4006        case -1326018889: /*dosage*/  return new Property("dosage", "Dosage", "Provides detailed dosage instructions in the same way that they are described for MedicationRequest resources.", 0, java.lang.Integer.MAX_VALUE, dosage);
4007        case 1702620169: /*bodySite*/  return new Property("bodySite", "CodeableConcept", "Indicates the sites on the subject's body where the procedure should be performed (I.e. the target sites).", 0, java.lang.Integer.MAX_VALUE, bodySite);
4008        case 1498467355: /*specimenRequirement*/  return new Property("specimenRequirement", "Reference(SpecimenDefinition)", "Defines specimen requirements for the action to be performed, such as required specimens for a lab test.", 0, java.lang.Integer.MAX_VALUE, specimenRequirement);
4009        case 362354807: /*observationRequirement*/  return new Property("observationRequirement", "Reference(ObservationDefinition)", "Defines observation requirements for the action to be performed, such as body weight or surface area.", 0, java.lang.Integer.MAX_VALUE, observationRequirement);
4010        case 395230490: /*observationResultRequirement*/  return new Property("observationResultRequirement", "Reference(ObservationDefinition)", "Defines the observations that are expected to be produced by the action.", 0, java.lang.Integer.MAX_VALUE, observationResultRequirement);
4011        case 1052666732: /*transform*/  return new Property("transform", "canonical(StructureMap)", "A reference to a StructureMap resource that defines a transform that can be executed to produce the intent resource using the ActivityDefinition instance as the input.", 0, 1, transform);
4012        case 572625010: /*dynamicValue*/  return new Property("dynamicValue", "", "Dynamic values that will be evaluated to produce values for elements of the resulting resource. For example, if the dosage of a medication must be computed based on the patient's weight, a dynamic value would be used to specify an expression that calculated the weight, and the path on the request resource that would contain the result.", 0, java.lang.Integer.MAX_VALUE, dynamicValue);
4013        default: return super.getNamedProperty(_hash, _name, _checkValid);
4014        }
4015
4016      }
4017
4018      @Override
4019      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
4020        switch (hash) {
4021        case 116079: /*url*/ return this.url == null ? new Base[0] : new Base[] {this.url}; // UriType
4022        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
4023        case 351608024: /*version*/ return this.version == null ? new Base[0] : new Base[] {this.version}; // StringType
4024        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
4025        case 110371416: /*title*/ return this.title == null ? new Base[0] : new Base[] {this.title}; // StringType
4026        case -2060497896: /*subtitle*/ return this.subtitle == null ? new Base[0] : new Base[] {this.subtitle}; // StringType
4027        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<PublicationStatus>
4028        case -404562712: /*experimental*/ return this.experimental == null ? new Base[0] : new Base[] {this.experimental}; // BooleanType
4029        case -1867885268: /*subject*/ return this.subject == null ? new Base[0] : new Base[] {this.subject}; // Type
4030        case 3076014: /*date*/ return this.date == null ? new Base[0] : new Base[] {this.date}; // DateTimeType
4031        case 1447404028: /*publisher*/ return this.publisher == null ? new Base[0] : new Base[] {this.publisher}; // StringType
4032        case 951526432: /*contact*/ return this.contact == null ? new Base[0] : this.contact.toArray(new Base[this.contact.size()]); // ContactDetail
4033        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // MarkdownType
4034        case -669707736: /*useContext*/ return this.useContext == null ? new Base[0] : this.useContext.toArray(new Base[this.useContext.size()]); // UsageContext
4035        case -507075711: /*jurisdiction*/ return this.jurisdiction == null ? new Base[0] : this.jurisdiction.toArray(new Base[this.jurisdiction.size()]); // CodeableConcept
4036        case -220463842: /*purpose*/ return this.purpose == null ? new Base[0] : new Base[] {this.purpose}; // MarkdownType
4037        case 111574433: /*usage*/ return this.usage == null ? new Base[0] : new Base[] {this.usage}; // StringType
4038        case 1522889671: /*copyright*/ return this.copyright == null ? new Base[0] : new Base[] {this.copyright}; // MarkdownType
4039        case 223539345: /*approvalDate*/ return this.approvalDate == null ? new Base[0] : new Base[] {this.approvalDate}; // DateType
4040        case -1687512484: /*lastReviewDate*/ return this.lastReviewDate == null ? new Base[0] : new Base[] {this.lastReviewDate}; // DateType
4041        case -403934648: /*effectivePeriod*/ return this.effectivePeriod == null ? new Base[0] : new Base[] {this.effectivePeriod}; // Period
4042        case 110546223: /*topic*/ return this.topic == null ? new Base[0] : this.topic.toArray(new Base[this.topic.size()]); // CodeableConcept
4043        case -1406328437: /*author*/ return this.author == null ? new Base[0] : this.author.toArray(new Base[this.author.size()]); // ContactDetail
4044        case -1307827859: /*editor*/ return this.editor == null ? new Base[0] : this.editor.toArray(new Base[this.editor.size()]); // ContactDetail
4045        case -261190139: /*reviewer*/ return this.reviewer == null ? new Base[0] : this.reviewer.toArray(new Base[this.reviewer.size()]); // ContactDetail
4046        case 1740277666: /*endorser*/ return this.endorser == null ? new Base[0] : this.endorser.toArray(new Base[this.endorser.size()]); // ContactDetail
4047        case 666807069: /*relatedArtifact*/ return this.relatedArtifact == null ? new Base[0] : this.relatedArtifact.toArray(new Base[this.relatedArtifact.size()]); // RelatedArtifact
4048        case 166208699: /*library*/ return this.library == null ? new Base[0] : this.library.toArray(new Base[this.library.size()]); // CanonicalType
4049        case 3292052: /*kind*/ return this.kind == null ? new Base[0] : new Base[] {this.kind}; // Enumeration<ActivityDefinitionKind>
4050        case -309425751: /*profile*/ return this.profile == null ? new Base[0] : new Base[] {this.profile}; // CanonicalType
4051        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // CodeableConcept
4052        case -1183762788: /*intent*/ return this.intent == null ? new Base[0] : new Base[] {this.intent}; // Enumeration<RequestIntent>
4053        case -1165461084: /*priority*/ return this.priority == null ? new Base[0] : new Base[] {this.priority}; // Enumeration<RequestPriority>
4054        case -1788508167: /*doNotPerform*/ return this.doNotPerform == null ? new Base[0] : new Base[] {this.doNotPerform}; // BooleanType
4055        case -873664438: /*timing*/ return this.timing == null ? new Base[0] : new Base[] {this.timing}; // Type
4056        case 1901043637: /*location*/ return this.location == null ? new Base[0] : new Base[] {this.location}; // Reference
4057        case 767422259: /*participant*/ return this.participant == null ? new Base[0] : this.participant.toArray(new Base[this.participant.size()]); // ActivityDefinitionParticipantComponent
4058        case -309474065: /*product*/ return this.product == null ? new Base[0] : new Base[] {this.product}; // Type
4059        case -1285004149: /*quantity*/ return this.quantity == null ? new Base[0] : new Base[] {this.quantity}; // Quantity
4060        case -1326018889: /*dosage*/ return this.dosage == null ? new Base[0] : this.dosage.toArray(new Base[this.dosage.size()]); // Dosage
4061        case 1702620169: /*bodySite*/ return this.bodySite == null ? new Base[0] : this.bodySite.toArray(new Base[this.bodySite.size()]); // CodeableConcept
4062        case 1498467355: /*specimenRequirement*/ return this.specimenRequirement == null ? new Base[0] : this.specimenRequirement.toArray(new Base[this.specimenRequirement.size()]); // Reference
4063        case 362354807: /*observationRequirement*/ return this.observationRequirement == null ? new Base[0] : this.observationRequirement.toArray(new Base[this.observationRequirement.size()]); // Reference
4064        case 395230490: /*observationResultRequirement*/ return this.observationResultRequirement == null ? new Base[0] : this.observationResultRequirement.toArray(new Base[this.observationResultRequirement.size()]); // Reference
4065        case 1052666732: /*transform*/ return this.transform == null ? new Base[0] : new Base[] {this.transform}; // CanonicalType
4066        case 572625010: /*dynamicValue*/ return this.dynamicValue == null ? new Base[0] : this.dynamicValue.toArray(new Base[this.dynamicValue.size()]); // ActivityDefinitionDynamicValueComponent
4067        default: return super.getProperty(hash, name, checkValid);
4068        }
4069
4070      }
4071
4072      @Override
4073      public Base setProperty(int hash, String name, Base value) throws FHIRException {
4074        switch (hash) {
4075        case 116079: // url
4076          this.url = castToUri(value); // UriType
4077          return value;
4078        case -1618432855: // identifier
4079          this.getIdentifier().add(castToIdentifier(value)); // Identifier
4080          return value;
4081        case 351608024: // version
4082          this.version = castToString(value); // StringType
4083          return value;
4084        case 3373707: // name
4085          this.name = castToString(value); // StringType
4086          return value;
4087        case 110371416: // title
4088          this.title = castToString(value); // StringType
4089          return value;
4090        case -2060497896: // subtitle
4091          this.subtitle = castToString(value); // StringType
4092          return value;
4093        case -892481550: // status
4094          value = new PublicationStatusEnumFactory().fromType(castToCode(value));
4095          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
4096          return value;
4097        case -404562712: // experimental
4098          this.experimental = castToBoolean(value); // BooleanType
4099          return value;
4100        case -1867885268: // subject
4101          this.subject = castToType(value); // Type
4102          return value;
4103        case 3076014: // date
4104          this.date = castToDateTime(value); // DateTimeType
4105          return value;
4106        case 1447404028: // publisher
4107          this.publisher = castToString(value); // StringType
4108          return value;
4109        case 951526432: // contact
4110          this.getContact().add(castToContactDetail(value)); // ContactDetail
4111          return value;
4112        case -1724546052: // description
4113          this.description = castToMarkdown(value); // MarkdownType
4114          return value;
4115        case -669707736: // useContext
4116          this.getUseContext().add(castToUsageContext(value)); // UsageContext
4117          return value;
4118        case -507075711: // jurisdiction
4119          this.getJurisdiction().add(castToCodeableConcept(value)); // CodeableConcept
4120          return value;
4121        case -220463842: // purpose
4122          this.purpose = castToMarkdown(value); // MarkdownType
4123          return value;
4124        case 111574433: // usage
4125          this.usage = castToString(value); // StringType
4126          return value;
4127        case 1522889671: // copyright
4128          this.copyright = castToMarkdown(value); // MarkdownType
4129          return value;
4130        case 223539345: // approvalDate
4131          this.approvalDate = castToDate(value); // DateType
4132          return value;
4133        case -1687512484: // lastReviewDate
4134          this.lastReviewDate = castToDate(value); // DateType
4135          return value;
4136        case -403934648: // effectivePeriod
4137          this.effectivePeriod = castToPeriod(value); // Period
4138          return value;
4139        case 110546223: // topic
4140          this.getTopic().add(castToCodeableConcept(value)); // CodeableConcept
4141          return value;
4142        case -1406328437: // author
4143          this.getAuthor().add(castToContactDetail(value)); // ContactDetail
4144          return value;
4145        case -1307827859: // editor
4146          this.getEditor().add(castToContactDetail(value)); // ContactDetail
4147          return value;
4148        case -261190139: // reviewer
4149          this.getReviewer().add(castToContactDetail(value)); // ContactDetail
4150          return value;
4151        case 1740277666: // endorser
4152          this.getEndorser().add(castToContactDetail(value)); // ContactDetail
4153          return value;
4154        case 666807069: // relatedArtifact
4155          this.getRelatedArtifact().add(castToRelatedArtifact(value)); // RelatedArtifact
4156          return value;
4157        case 166208699: // library
4158          this.getLibrary().add(castToCanonical(value)); // CanonicalType
4159          return value;
4160        case 3292052: // kind
4161          value = new ActivityDefinitionKindEnumFactory().fromType(castToCode(value));
4162          this.kind = (Enumeration) value; // Enumeration<ActivityDefinitionKind>
4163          return value;
4164        case -309425751: // profile
4165          this.profile = castToCanonical(value); // CanonicalType
4166          return value;
4167        case 3059181: // code
4168          this.code = castToCodeableConcept(value); // CodeableConcept
4169          return value;
4170        case -1183762788: // intent
4171          value = new RequestIntentEnumFactory().fromType(castToCode(value));
4172          this.intent = (Enumeration) value; // Enumeration<RequestIntent>
4173          return value;
4174        case -1165461084: // priority
4175          value = new RequestPriorityEnumFactory().fromType(castToCode(value));
4176          this.priority = (Enumeration) value; // Enumeration<RequestPriority>
4177          return value;
4178        case -1788508167: // doNotPerform
4179          this.doNotPerform = castToBoolean(value); // BooleanType
4180          return value;
4181        case -873664438: // timing
4182          this.timing = castToType(value); // Type
4183          return value;
4184        case 1901043637: // location
4185          this.location = castToReference(value); // Reference
4186          return value;
4187        case 767422259: // participant
4188          this.getParticipant().add((ActivityDefinitionParticipantComponent) value); // ActivityDefinitionParticipantComponent
4189          return value;
4190        case -309474065: // product
4191          this.product = castToType(value); // Type
4192          return value;
4193        case -1285004149: // quantity
4194          this.quantity = castToQuantity(value); // Quantity
4195          return value;
4196        case -1326018889: // dosage
4197          this.getDosage().add(castToDosage(value)); // Dosage
4198          return value;
4199        case 1702620169: // bodySite
4200          this.getBodySite().add(castToCodeableConcept(value)); // CodeableConcept
4201          return value;
4202        case 1498467355: // specimenRequirement
4203          this.getSpecimenRequirement().add(castToReference(value)); // Reference
4204          return value;
4205        case 362354807: // observationRequirement
4206          this.getObservationRequirement().add(castToReference(value)); // Reference
4207          return value;
4208        case 395230490: // observationResultRequirement
4209          this.getObservationResultRequirement().add(castToReference(value)); // Reference
4210          return value;
4211        case 1052666732: // transform
4212          this.transform = castToCanonical(value); // CanonicalType
4213          return value;
4214        case 572625010: // dynamicValue
4215          this.getDynamicValue().add((ActivityDefinitionDynamicValueComponent) value); // ActivityDefinitionDynamicValueComponent
4216          return value;
4217        default: return super.setProperty(hash, name, value);
4218        }
4219
4220      }
4221
4222      @Override
4223      public Base setProperty(String name, Base value) throws FHIRException {
4224        if (name.equals("url")) {
4225          this.url = castToUri(value); // UriType
4226        } else if (name.equals("identifier")) {
4227          this.getIdentifier().add(castToIdentifier(value));
4228        } else if (name.equals("version")) {
4229          this.version = castToString(value); // StringType
4230        } else if (name.equals("name")) {
4231          this.name = castToString(value); // StringType
4232        } else if (name.equals("title")) {
4233          this.title = castToString(value); // StringType
4234        } else if (name.equals("subtitle")) {
4235          this.subtitle = castToString(value); // StringType
4236        } else if (name.equals("status")) {
4237          value = new PublicationStatusEnumFactory().fromType(castToCode(value));
4238          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
4239        } else if (name.equals("experimental")) {
4240          this.experimental = castToBoolean(value); // BooleanType
4241        } else if (name.equals("subject[x]")) {
4242          this.subject = castToType(value); // Type
4243        } else if (name.equals("date")) {
4244          this.date = castToDateTime(value); // DateTimeType
4245        } else if (name.equals("publisher")) {
4246          this.publisher = castToString(value); // StringType
4247        } else if (name.equals("contact")) {
4248          this.getContact().add(castToContactDetail(value));
4249        } else if (name.equals("description")) {
4250          this.description = castToMarkdown(value); // MarkdownType
4251        } else if (name.equals("useContext")) {
4252          this.getUseContext().add(castToUsageContext(value));
4253        } else if (name.equals("jurisdiction")) {
4254          this.getJurisdiction().add(castToCodeableConcept(value));
4255        } else if (name.equals("purpose")) {
4256          this.purpose = castToMarkdown(value); // MarkdownType
4257        } else if (name.equals("usage")) {
4258          this.usage = castToString(value); // StringType
4259        } else if (name.equals("copyright")) {
4260          this.copyright = castToMarkdown(value); // MarkdownType
4261        } else if (name.equals("approvalDate")) {
4262          this.approvalDate = castToDate(value); // DateType
4263        } else if (name.equals("lastReviewDate")) {
4264          this.lastReviewDate = castToDate(value); // DateType
4265        } else if (name.equals("effectivePeriod")) {
4266          this.effectivePeriod = castToPeriod(value); // Period
4267        } else if (name.equals("topic")) {
4268          this.getTopic().add(castToCodeableConcept(value));
4269        } else if (name.equals("author")) {
4270          this.getAuthor().add(castToContactDetail(value));
4271        } else if (name.equals("editor")) {
4272          this.getEditor().add(castToContactDetail(value));
4273        } else if (name.equals("reviewer")) {
4274          this.getReviewer().add(castToContactDetail(value));
4275        } else if (name.equals("endorser")) {
4276          this.getEndorser().add(castToContactDetail(value));
4277        } else if (name.equals("relatedArtifact")) {
4278          this.getRelatedArtifact().add(castToRelatedArtifact(value));
4279        } else if (name.equals("library")) {
4280          this.getLibrary().add(castToCanonical(value));
4281        } else if (name.equals("kind")) {
4282          value = new ActivityDefinitionKindEnumFactory().fromType(castToCode(value));
4283          this.kind = (Enumeration) value; // Enumeration<ActivityDefinitionKind>
4284        } else if (name.equals("profile")) {
4285          this.profile = castToCanonical(value); // CanonicalType
4286        } else if (name.equals("code")) {
4287          this.code = castToCodeableConcept(value); // CodeableConcept
4288        } else if (name.equals("intent")) {
4289          value = new RequestIntentEnumFactory().fromType(castToCode(value));
4290          this.intent = (Enumeration) value; // Enumeration<RequestIntent>
4291        } else if (name.equals("priority")) {
4292          value = new RequestPriorityEnumFactory().fromType(castToCode(value));
4293          this.priority = (Enumeration) value; // Enumeration<RequestPriority>
4294        } else if (name.equals("doNotPerform")) {
4295          this.doNotPerform = castToBoolean(value); // BooleanType
4296        } else if (name.equals("timing[x]")) {
4297          this.timing = castToType(value); // Type
4298        } else if (name.equals("location")) {
4299          this.location = castToReference(value); // Reference
4300        } else if (name.equals("participant")) {
4301          this.getParticipant().add((ActivityDefinitionParticipantComponent) value);
4302        } else if (name.equals("product[x]")) {
4303          this.product = castToType(value); // Type
4304        } else if (name.equals("quantity")) {
4305          this.quantity = castToQuantity(value); // Quantity
4306        } else if (name.equals("dosage")) {
4307          this.getDosage().add(castToDosage(value));
4308        } else if (name.equals("bodySite")) {
4309          this.getBodySite().add(castToCodeableConcept(value));
4310        } else if (name.equals("specimenRequirement")) {
4311          this.getSpecimenRequirement().add(castToReference(value));
4312        } else if (name.equals("observationRequirement")) {
4313          this.getObservationRequirement().add(castToReference(value));
4314        } else if (name.equals("observationResultRequirement")) {
4315          this.getObservationResultRequirement().add(castToReference(value));
4316        } else if (name.equals("transform")) {
4317          this.transform = castToCanonical(value); // CanonicalType
4318        } else if (name.equals("dynamicValue")) {
4319          this.getDynamicValue().add((ActivityDefinitionDynamicValueComponent) value);
4320        } else
4321          return super.setProperty(name, value);
4322        return value;
4323      }
4324
4325      @Override
4326      public Base makeProperty(int hash, String name) throws FHIRException {
4327        switch (hash) {
4328        case 116079:  return getUrlElement();
4329        case -1618432855:  return addIdentifier(); 
4330        case 351608024:  return getVersionElement();
4331        case 3373707:  return getNameElement();
4332        case 110371416:  return getTitleElement();
4333        case -2060497896:  return getSubtitleElement();
4334        case -892481550:  return getStatusElement();
4335        case -404562712:  return getExperimentalElement();
4336        case -573640748:  return getSubject(); 
4337        case -1867885268:  return getSubject(); 
4338        case 3076014:  return getDateElement();
4339        case 1447404028:  return getPublisherElement();
4340        case 951526432:  return addContact(); 
4341        case -1724546052:  return getDescriptionElement();
4342        case -669707736:  return addUseContext(); 
4343        case -507075711:  return addJurisdiction(); 
4344        case -220463842:  return getPurposeElement();
4345        case 111574433:  return getUsageElement();
4346        case 1522889671:  return getCopyrightElement();
4347        case 223539345:  return getApprovalDateElement();
4348        case -1687512484:  return getLastReviewDateElement();
4349        case -403934648:  return getEffectivePeriod(); 
4350        case 110546223:  return addTopic(); 
4351        case -1406328437:  return addAuthor(); 
4352        case -1307827859:  return addEditor(); 
4353        case -261190139:  return addReviewer(); 
4354        case 1740277666:  return addEndorser(); 
4355        case 666807069:  return addRelatedArtifact(); 
4356        case 166208699:  return addLibraryElement();
4357        case 3292052:  return getKindElement();
4358        case -309425751:  return getProfileElement();
4359        case 3059181:  return getCode(); 
4360        case -1183762788:  return getIntentElement();
4361        case -1165461084:  return getPriorityElement();
4362        case -1788508167:  return getDoNotPerformElement();
4363        case 164632566:  return getTiming(); 
4364        case -873664438:  return getTiming(); 
4365        case 1901043637:  return getLocation(); 
4366        case 767422259:  return addParticipant(); 
4367        case 1753005361:  return getProduct(); 
4368        case -309474065:  return getProduct(); 
4369        case -1285004149:  return getQuantity(); 
4370        case -1326018889:  return addDosage(); 
4371        case 1702620169:  return addBodySite(); 
4372        case 1498467355:  return addSpecimenRequirement(); 
4373        case 362354807:  return addObservationRequirement(); 
4374        case 395230490:  return addObservationResultRequirement(); 
4375        case 1052666732:  return getTransformElement();
4376        case 572625010:  return addDynamicValue(); 
4377        default: return super.makeProperty(hash, name);
4378        }
4379
4380      }
4381
4382      @Override
4383      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
4384        switch (hash) {
4385        case 116079: /*url*/ return new String[] {"uri"};
4386        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
4387        case 351608024: /*version*/ return new String[] {"string"};
4388        case 3373707: /*name*/ return new String[] {"string"};
4389        case 110371416: /*title*/ return new String[] {"string"};
4390        case -2060497896: /*subtitle*/ return new String[] {"string"};
4391        case -892481550: /*status*/ return new String[] {"code"};
4392        case -404562712: /*experimental*/ return new String[] {"boolean"};
4393        case -1867885268: /*subject*/ return new String[] {"CodeableConcept", "Reference"};
4394        case 3076014: /*date*/ return new String[] {"dateTime"};
4395        case 1447404028: /*publisher*/ return new String[] {"string"};
4396        case 951526432: /*contact*/ return new String[] {"ContactDetail"};
4397        case -1724546052: /*description*/ return new String[] {"markdown"};
4398        case -669707736: /*useContext*/ return new String[] {"UsageContext"};
4399        case -507075711: /*jurisdiction*/ return new String[] {"CodeableConcept"};
4400        case -220463842: /*purpose*/ return new String[] {"markdown"};
4401        case 111574433: /*usage*/ return new String[] {"string"};
4402        case 1522889671: /*copyright*/ return new String[] {"markdown"};
4403        case 223539345: /*approvalDate*/ return new String[] {"date"};
4404        case -1687512484: /*lastReviewDate*/ return new String[] {"date"};
4405        case -403934648: /*effectivePeriod*/ return new String[] {"Period"};
4406        case 110546223: /*topic*/ return new String[] {"CodeableConcept"};
4407        case -1406328437: /*author*/ return new String[] {"ContactDetail"};
4408        case -1307827859: /*editor*/ return new String[] {"ContactDetail"};
4409        case -261190139: /*reviewer*/ return new String[] {"ContactDetail"};
4410        case 1740277666: /*endorser*/ return new String[] {"ContactDetail"};
4411        case 666807069: /*relatedArtifact*/ return new String[] {"RelatedArtifact"};
4412        case 166208699: /*library*/ return new String[] {"canonical"};
4413        case 3292052: /*kind*/ return new String[] {"code"};
4414        case -309425751: /*profile*/ return new String[] {"canonical"};
4415        case 3059181: /*code*/ return new String[] {"CodeableConcept"};
4416        case -1183762788: /*intent*/ return new String[] {"code"};
4417        case -1165461084: /*priority*/ return new String[] {"code"};
4418        case -1788508167: /*doNotPerform*/ return new String[] {"boolean"};
4419        case -873664438: /*timing*/ return new String[] {"Timing", "dateTime", "Age", "Period", "Range", "Duration"};
4420        case 1901043637: /*location*/ return new String[] {"Reference"};
4421        case 767422259: /*participant*/ return new String[] {};
4422        case -309474065: /*product*/ return new String[] {"Reference", "CodeableConcept"};
4423        case -1285004149: /*quantity*/ return new String[] {"SimpleQuantity"};
4424        case -1326018889: /*dosage*/ return new String[] {"Dosage"};
4425        case 1702620169: /*bodySite*/ return new String[] {"CodeableConcept"};
4426        case 1498467355: /*specimenRequirement*/ return new String[] {"Reference"};
4427        case 362354807: /*observationRequirement*/ return new String[] {"Reference"};
4428        case 395230490: /*observationResultRequirement*/ return new String[] {"Reference"};
4429        case 1052666732: /*transform*/ return new String[] {"canonical"};
4430        case 572625010: /*dynamicValue*/ return new String[] {};
4431        default: return super.getTypesForProperty(hash, name);
4432        }
4433
4434      }
4435
4436      @Override
4437      public Base addChild(String name) throws FHIRException {
4438        if (name.equals("url")) {
4439          throw new FHIRException("Cannot call addChild on a primitive type ActivityDefinition.url");
4440        }
4441        else if (name.equals("identifier")) {
4442          return addIdentifier();
4443        }
4444        else if (name.equals("version")) {
4445          throw new FHIRException("Cannot call addChild on a primitive type ActivityDefinition.version");
4446        }
4447        else if (name.equals("name")) {
4448          throw new FHIRException("Cannot call addChild on a primitive type ActivityDefinition.name");
4449        }
4450        else if (name.equals("title")) {
4451          throw new FHIRException("Cannot call addChild on a primitive type ActivityDefinition.title");
4452        }
4453        else if (name.equals("subtitle")) {
4454          throw new FHIRException("Cannot call addChild on a primitive type ActivityDefinition.subtitle");
4455        }
4456        else if (name.equals("status")) {
4457          throw new FHIRException("Cannot call addChild on a primitive type ActivityDefinition.status");
4458        }
4459        else if (name.equals("experimental")) {
4460          throw new FHIRException("Cannot call addChild on a primitive type ActivityDefinition.experimental");
4461        }
4462        else if (name.equals("subjectCodeableConcept")) {
4463          this.subject = new CodeableConcept();
4464          return this.subject;
4465        }
4466        else if (name.equals("subjectReference")) {
4467          this.subject = new Reference();
4468          return this.subject;
4469        }
4470        else if (name.equals("date")) {
4471          throw new FHIRException("Cannot call addChild on a primitive type ActivityDefinition.date");
4472        }
4473        else if (name.equals("publisher")) {
4474          throw new FHIRException("Cannot call addChild on a primitive type ActivityDefinition.publisher");
4475        }
4476        else if (name.equals("contact")) {
4477          return addContact();
4478        }
4479        else if (name.equals("description")) {
4480          throw new FHIRException("Cannot call addChild on a primitive type ActivityDefinition.description");
4481        }
4482        else if (name.equals("useContext")) {
4483          return addUseContext();
4484        }
4485        else if (name.equals("jurisdiction")) {
4486          return addJurisdiction();
4487        }
4488        else if (name.equals("purpose")) {
4489          throw new FHIRException("Cannot call addChild on a primitive type ActivityDefinition.purpose");
4490        }
4491        else if (name.equals("usage")) {
4492          throw new FHIRException("Cannot call addChild on a primitive type ActivityDefinition.usage");
4493        }
4494        else if (name.equals("copyright")) {
4495          throw new FHIRException("Cannot call addChild on a primitive type ActivityDefinition.copyright");
4496        }
4497        else if (name.equals("approvalDate")) {
4498          throw new FHIRException("Cannot call addChild on a primitive type ActivityDefinition.approvalDate");
4499        }
4500        else if (name.equals("lastReviewDate")) {
4501          throw new FHIRException("Cannot call addChild on a primitive type ActivityDefinition.lastReviewDate");
4502        }
4503        else if (name.equals("effectivePeriod")) {
4504          this.effectivePeriod = new Period();
4505          return this.effectivePeriod;
4506        }
4507        else if (name.equals("topic")) {
4508          return addTopic();
4509        }
4510        else if (name.equals("author")) {
4511          return addAuthor();
4512        }
4513        else if (name.equals("editor")) {
4514          return addEditor();
4515        }
4516        else if (name.equals("reviewer")) {
4517          return addReviewer();
4518        }
4519        else if (name.equals("endorser")) {
4520          return addEndorser();
4521        }
4522        else if (name.equals("relatedArtifact")) {
4523          return addRelatedArtifact();
4524        }
4525        else if (name.equals("library")) {
4526          throw new FHIRException("Cannot call addChild on a primitive type ActivityDefinition.library");
4527        }
4528        else if (name.equals("kind")) {
4529          throw new FHIRException("Cannot call addChild on a primitive type ActivityDefinition.kind");
4530        }
4531        else if (name.equals("profile")) {
4532          throw new FHIRException("Cannot call addChild on a primitive type ActivityDefinition.profile");
4533        }
4534        else if (name.equals("code")) {
4535          this.code = new CodeableConcept();
4536          return this.code;
4537        }
4538        else if (name.equals("intent")) {
4539          throw new FHIRException("Cannot call addChild on a primitive type ActivityDefinition.intent");
4540        }
4541        else if (name.equals("priority")) {
4542          throw new FHIRException("Cannot call addChild on a primitive type ActivityDefinition.priority");
4543        }
4544        else if (name.equals("doNotPerform")) {
4545          throw new FHIRException("Cannot call addChild on a primitive type ActivityDefinition.doNotPerform");
4546        }
4547        else if (name.equals("timingTiming")) {
4548          this.timing = new Timing();
4549          return this.timing;
4550        }
4551        else if (name.equals("timingDateTime")) {
4552          this.timing = new DateTimeType();
4553          return this.timing;
4554        }
4555        else if (name.equals("timingAge")) {
4556          this.timing = new Age();
4557          return this.timing;
4558        }
4559        else if (name.equals("timingPeriod")) {
4560          this.timing = new Period();
4561          return this.timing;
4562        }
4563        else if (name.equals("timingRange")) {
4564          this.timing = new Range();
4565          return this.timing;
4566        }
4567        else if (name.equals("timingDuration")) {
4568          this.timing = new Duration();
4569          return this.timing;
4570        }
4571        else if (name.equals("location")) {
4572          this.location = new Reference();
4573          return this.location;
4574        }
4575        else if (name.equals("participant")) {
4576          return addParticipant();
4577        }
4578        else if (name.equals("productReference")) {
4579          this.product = new Reference();
4580          return this.product;
4581        }
4582        else if (name.equals("productCodeableConcept")) {
4583          this.product = new CodeableConcept();
4584          return this.product;
4585        }
4586        else if (name.equals("quantity")) {
4587          this.quantity = new Quantity();
4588          return this.quantity;
4589        }
4590        else if (name.equals("dosage")) {
4591          return addDosage();
4592        }
4593        else if (name.equals("bodySite")) {
4594          return addBodySite();
4595        }
4596        else if (name.equals("specimenRequirement")) {
4597          return addSpecimenRequirement();
4598        }
4599        else if (name.equals("observationRequirement")) {
4600          return addObservationRequirement();
4601        }
4602        else if (name.equals("observationResultRequirement")) {
4603          return addObservationResultRequirement();
4604        }
4605        else if (name.equals("transform")) {
4606          throw new FHIRException("Cannot call addChild on a primitive type ActivityDefinition.transform");
4607        }
4608        else if (name.equals("dynamicValue")) {
4609          return addDynamicValue();
4610        }
4611        else
4612          return super.addChild(name);
4613      }
4614
4615  public String fhirType() {
4616    return "ActivityDefinition";
4617
4618  }
4619
4620      public ActivityDefinition copy() {
4621        ActivityDefinition dst = new ActivityDefinition();
4622        copyValues(dst);
4623        dst.url = url == null ? null : url.copy();
4624        if (identifier != null) {
4625          dst.identifier = new ArrayList<Identifier>();
4626          for (Identifier i : identifier)
4627            dst.identifier.add(i.copy());
4628        };
4629        dst.version = version == null ? null : version.copy();
4630        dst.name = name == null ? null : name.copy();
4631        dst.title = title == null ? null : title.copy();
4632        dst.subtitle = subtitle == null ? null : subtitle.copy();
4633        dst.status = status == null ? null : status.copy();
4634        dst.experimental = experimental == null ? null : experimental.copy();
4635        dst.subject = subject == null ? null : subject.copy();
4636        dst.date = date == null ? null : date.copy();
4637        dst.publisher = publisher == null ? null : publisher.copy();
4638        if (contact != null) {
4639          dst.contact = new ArrayList<ContactDetail>();
4640          for (ContactDetail i : contact)
4641            dst.contact.add(i.copy());
4642        };
4643        dst.description = description == null ? null : description.copy();
4644        if (useContext != null) {
4645          dst.useContext = new ArrayList<UsageContext>();
4646          for (UsageContext i : useContext)
4647            dst.useContext.add(i.copy());
4648        };
4649        if (jurisdiction != null) {
4650          dst.jurisdiction = new ArrayList<CodeableConcept>();
4651          for (CodeableConcept i : jurisdiction)
4652            dst.jurisdiction.add(i.copy());
4653        };
4654        dst.purpose = purpose == null ? null : purpose.copy();
4655        dst.usage = usage == null ? null : usage.copy();
4656        dst.copyright = copyright == null ? null : copyright.copy();
4657        dst.approvalDate = approvalDate == null ? null : approvalDate.copy();
4658        dst.lastReviewDate = lastReviewDate == null ? null : lastReviewDate.copy();
4659        dst.effectivePeriod = effectivePeriod == null ? null : effectivePeriod.copy();
4660        if (topic != null) {
4661          dst.topic = new ArrayList<CodeableConcept>();
4662          for (CodeableConcept i : topic)
4663            dst.topic.add(i.copy());
4664        };
4665        if (author != null) {
4666          dst.author = new ArrayList<ContactDetail>();
4667          for (ContactDetail i : author)
4668            dst.author.add(i.copy());
4669        };
4670        if (editor != null) {
4671          dst.editor = new ArrayList<ContactDetail>();
4672          for (ContactDetail i : editor)
4673            dst.editor.add(i.copy());
4674        };
4675        if (reviewer != null) {
4676          dst.reviewer = new ArrayList<ContactDetail>();
4677          for (ContactDetail i : reviewer)
4678            dst.reviewer.add(i.copy());
4679        };
4680        if (endorser != null) {
4681          dst.endorser = new ArrayList<ContactDetail>();
4682          for (ContactDetail i : endorser)
4683            dst.endorser.add(i.copy());
4684        };
4685        if (relatedArtifact != null) {
4686          dst.relatedArtifact = new ArrayList<RelatedArtifact>();
4687          for (RelatedArtifact i : relatedArtifact)
4688            dst.relatedArtifact.add(i.copy());
4689        };
4690        if (library != null) {
4691          dst.library = new ArrayList<CanonicalType>();
4692          for (CanonicalType i : library)
4693            dst.library.add(i.copy());
4694        };
4695        dst.kind = kind == null ? null : kind.copy();
4696        dst.profile = profile == null ? null : profile.copy();
4697        dst.code = code == null ? null : code.copy();
4698        dst.intent = intent == null ? null : intent.copy();
4699        dst.priority = priority == null ? null : priority.copy();
4700        dst.doNotPerform = doNotPerform == null ? null : doNotPerform.copy();
4701        dst.timing = timing == null ? null : timing.copy();
4702        dst.location = location == null ? null : location.copy();
4703        if (participant != null) {
4704          dst.participant = new ArrayList<ActivityDefinitionParticipantComponent>();
4705          for (ActivityDefinitionParticipantComponent i : participant)
4706            dst.participant.add(i.copy());
4707        };
4708        dst.product = product == null ? null : product.copy();
4709        dst.quantity = quantity == null ? null : quantity.copy();
4710        if (dosage != null) {
4711          dst.dosage = new ArrayList<Dosage>();
4712          for (Dosage i : dosage)
4713            dst.dosage.add(i.copy());
4714        };
4715        if (bodySite != null) {
4716          dst.bodySite = new ArrayList<CodeableConcept>();
4717          for (CodeableConcept i : bodySite)
4718            dst.bodySite.add(i.copy());
4719        };
4720        if (specimenRequirement != null) {
4721          dst.specimenRequirement = new ArrayList<Reference>();
4722          for (Reference i : specimenRequirement)
4723            dst.specimenRequirement.add(i.copy());
4724        };
4725        if (observationRequirement != null) {
4726          dst.observationRequirement = new ArrayList<Reference>();
4727          for (Reference i : observationRequirement)
4728            dst.observationRequirement.add(i.copy());
4729        };
4730        if (observationResultRequirement != null) {
4731          dst.observationResultRequirement = new ArrayList<Reference>();
4732          for (Reference i : observationResultRequirement)
4733            dst.observationResultRequirement.add(i.copy());
4734        };
4735        dst.transform = transform == null ? null : transform.copy();
4736        if (dynamicValue != null) {
4737          dst.dynamicValue = new ArrayList<ActivityDefinitionDynamicValueComponent>();
4738          for (ActivityDefinitionDynamicValueComponent i : dynamicValue)
4739            dst.dynamicValue.add(i.copy());
4740        };
4741        return dst;
4742      }
4743
4744      protected ActivityDefinition typedCopy() {
4745        return copy();
4746      }
4747
4748      @Override
4749      public boolean equalsDeep(Base other_) {
4750        if (!super.equalsDeep(other_))
4751          return false;
4752        if (!(other_ instanceof ActivityDefinition))
4753          return false;
4754        ActivityDefinition o = (ActivityDefinition) other_;
4755        return compareDeep(identifier, o.identifier, true) && compareDeep(subtitle, o.subtitle, true) && compareDeep(subject, o.subject, true)
4756           && compareDeep(purpose, o.purpose, true) && compareDeep(usage, o.usage, true) && compareDeep(copyright, o.copyright, true)
4757           && compareDeep(approvalDate, o.approvalDate, true) && compareDeep(lastReviewDate, o.lastReviewDate, true)
4758           && compareDeep(effectivePeriod, o.effectivePeriod, true) && compareDeep(topic, o.topic, true) && compareDeep(author, o.author, true)
4759           && compareDeep(editor, o.editor, true) && compareDeep(reviewer, o.reviewer, true) && compareDeep(endorser, o.endorser, true)
4760           && compareDeep(relatedArtifact, o.relatedArtifact, true) && compareDeep(library, o.library, true)
4761           && compareDeep(kind, o.kind, true) && compareDeep(profile, o.profile, true) && compareDeep(code, o.code, true)
4762           && compareDeep(intent, o.intent, true) && compareDeep(priority, o.priority, true) && compareDeep(doNotPerform, o.doNotPerform, true)
4763           && compareDeep(timing, o.timing, true) && compareDeep(location, o.location, true) && compareDeep(participant, o.participant, true)
4764           && compareDeep(product, o.product, true) && compareDeep(quantity, o.quantity, true) && compareDeep(dosage, o.dosage, true)
4765           && compareDeep(bodySite, o.bodySite, true) && compareDeep(specimenRequirement, o.specimenRequirement, true)
4766           && compareDeep(observationRequirement, o.observationRequirement, true) && compareDeep(observationResultRequirement, o.observationResultRequirement, true)
4767           && compareDeep(transform, o.transform, true) && compareDeep(dynamicValue, o.dynamicValue, true)
4768          ;
4769      }
4770
4771      @Override
4772      public boolean equalsShallow(Base other_) {
4773        if (!super.equalsShallow(other_))
4774          return false;
4775        if (!(other_ instanceof ActivityDefinition))
4776          return false;
4777        ActivityDefinition o = (ActivityDefinition) other_;
4778        return compareValues(subtitle, o.subtitle, true) && compareValues(purpose, o.purpose, true) && compareValues(usage, o.usage, true)
4779           && compareValues(copyright, o.copyright, true) && compareValues(approvalDate, o.approvalDate, true)
4780           && compareValues(lastReviewDate, o.lastReviewDate, true) && compareValues(kind, o.kind, true) && compareValues(intent, o.intent, true)
4781           && compareValues(priority, o.priority, true) && compareValues(doNotPerform, o.doNotPerform, true);
4782      }
4783
4784      public boolean isEmpty() {
4785        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, subtitle, subject
4786          , purpose, usage, copyright, approvalDate, lastReviewDate, effectivePeriod, topic
4787          , author, editor, reviewer, endorser, relatedArtifact, library, kind, profile
4788          , code, intent, priority, doNotPerform, timing, location, participant, product
4789          , quantity, dosage, bodySite, specimenRequirement, observationRequirement, observationResultRequirement
4790          , transform, dynamicValue);
4791      }
4792
4793  @Override
4794  public ResourceType getResourceType() {
4795    return ResourceType.ActivityDefinition;
4796   }
4797
4798 /**
4799   * Search parameter: <b>date</b>
4800   * <p>
4801   * Description: <b>The activity definition publication date</b><br>
4802   * Type: <b>date</b><br>
4803   * Path: <b>ActivityDefinition.date</b><br>
4804   * </p>
4805   */
4806  @SearchParamDefinition(name="date", path="ActivityDefinition.date", description="The activity definition publication date", type="date" )
4807  public static final String SP_DATE = "date";
4808 /**
4809   * <b>Fluent Client</b> search parameter constant for <b>date</b>
4810   * <p>
4811   * Description: <b>The activity definition publication date</b><br>
4812   * Type: <b>date</b><br>
4813   * Path: <b>ActivityDefinition.date</b><br>
4814   * </p>
4815   */
4816  public static final ca.uhn.fhir.rest.gclient.DateClientParam DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_DATE);
4817
4818 /**
4819   * Search parameter: <b>identifier</b>
4820   * <p>
4821   * Description: <b>External identifier for the activity definition</b><br>
4822   * Type: <b>token</b><br>
4823   * Path: <b>ActivityDefinition.identifier</b><br>
4824   * </p>
4825   */
4826  @SearchParamDefinition(name="identifier", path="ActivityDefinition.identifier", description="External identifier for the activity definition", type="token" )
4827  public static final String SP_IDENTIFIER = "identifier";
4828 /**
4829   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
4830   * <p>
4831   * Description: <b>External identifier for the activity definition</b><br>
4832   * Type: <b>token</b><br>
4833   * Path: <b>ActivityDefinition.identifier</b><br>
4834   * </p>
4835   */
4836  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
4837
4838 /**
4839   * Search parameter: <b>successor</b>
4840   * <p>
4841   * Description: <b>What resource is being referenced</b><br>
4842   * Type: <b>reference</b><br>
4843   * Path: <b>ActivityDefinition.relatedArtifact.resource</b><br>
4844   * </p>
4845   */
4846  @SearchParamDefinition(name="successor", path="ActivityDefinition.relatedArtifact.where(type='successor').resource", description="What resource is being referenced", type="reference" )
4847  public static final String SP_SUCCESSOR = "successor";
4848 /**
4849   * <b>Fluent Client</b> search parameter constant for <b>successor</b>
4850   * <p>
4851   * Description: <b>What resource is being referenced</b><br>
4852   * Type: <b>reference</b><br>
4853   * Path: <b>ActivityDefinition.relatedArtifact.resource</b><br>
4854   * </p>
4855   */
4856  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SUCCESSOR = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SUCCESSOR);
4857
4858/**
4859   * Constant for fluent queries to be used to add include statements. Specifies
4860   * the path value of "<b>ActivityDefinition:successor</b>".
4861   */
4862  public static final ca.uhn.fhir.model.api.Include INCLUDE_SUCCESSOR = new ca.uhn.fhir.model.api.Include("ActivityDefinition:successor").toLocked();
4863
4864 /**
4865   * Search parameter: <b>context-type-value</b>
4866   * <p>
4867   * Description: <b>A use context type and value assigned to the activity definition</b><br>
4868   * Type: <b>composite</b><br>
4869   * Path: <b></b><br>
4870   * </p>
4871   */
4872  @SearchParamDefinition(name="context-type-value", path="ActivityDefinition.useContext", description="A use context type and value assigned to the activity definition", type="composite", compositeOf={"context-type", "context"} )
4873  public static final String SP_CONTEXT_TYPE_VALUE = "context-type-value";
4874 /**
4875   * <b>Fluent Client</b> search parameter constant for <b>context-type-value</b>
4876   * <p>
4877   * Description: <b>A use context type and value assigned to the activity definition</b><br>
4878   * Type: <b>composite</b><br>
4879   * Path: <b></b><br>
4880   * </p>
4881   */
4882  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);
4883
4884 /**
4885   * Search parameter: <b>jurisdiction</b>
4886   * <p>
4887   * Description: <b>Intended jurisdiction for the activity definition</b><br>
4888   * Type: <b>token</b><br>
4889   * Path: <b>ActivityDefinition.jurisdiction</b><br>
4890   * </p>
4891   */
4892  @SearchParamDefinition(name="jurisdiction", path="ActivityDefinition.jurisdiction", description="Intended jurisdiction for the activity definition", type="token" )
4893  public static final String SP_JURISDICTION = "jurisdiction";
4894 /**
4895   * <b>Fluent Client</b> search parameter constant for <b>jurisdiction</b>
4896   * <p>
4897   * Description: <b>Intended jurisdiction for the activity definition</b><br>
4898   * Type: <b>token</b><br>
4899   * Path: <b>ActivityDefinition.jurisdiction</b><br>
4900   * </p>
4901   */
4902  public static final ca.uhn.fhir.rest.gclient.TokenClientParam JURISDICTION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_JURISDICTION);
4903
4904 /**
4905   * Search parameter: <b>description</b>
4906   * <p>
4907   * Description: <b>The description of the activity definition</b><br>
4908   * Type: <b>string</b><br>
4909   * Path: <b>ActivityDefinition.description</b><br>
4910   * </p>
4911   */
4912  @SearchParamDefinition(name="description", path="ActivityDefinition.description", description="The description of the activity definition", type="string" )
4913  public static final String SP_DESCRIPTION = "description";
4914 /**
4915   * <b>Fluent Client</b> search parameter constant for <b>description</b>
4916   * <p>
4917   * Description: <b>The description of the activity definition</b><br>
4918   * Type: <b>string</b><br>
4919   * Path: <b>ActivityDefinition.description</b><br>
4920   * </p>
4921   */
4922  public static final ca.uhn.fhir.rest.gclient.StringClientParam DESCRIPTION = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_DESCRIPTION);
4923
4924 /**
4925   * Search parameter: <b>derived-from</b>
4926   * <p>
4927   * Description: <b>What resource is being referenced</b><br>
4928   * Type: <b>reference</b><br>
4929   * Path: <b>ActivityDefinition.relatedArtifact.resource</b><br>
4930   * </p>
4931   */
4932  @SearchParamDefinition(name="derived-from", path="ActivityDefinition.relatedArtifact.where(type='derived-from').resource", description="What resource is being referenced", type="reference" )
4933  public static final String SP_DERIVED_FROM = "derived-from";
4934 /**
4935   * <b>Fluent Client</b> search parameter constant for <b>derived-from</b>
4936   * <p>
4937   * Description: <b>What resource is being referenced</b><br>
4938   * Type: <b>reference</b><br>
4939   * Path: <b>ActivityDefinition.relatedArtifact.resource</b><br>
4940   * </p>
4941   */
4942  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam DERIVED_FROM = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_DERIVED_FROM);
4943
4944/**
4945   * Constant for fluent queries to be used to add include statements. Specifies
4946   * the path value of "<b>ActivityDefinition:derived-from</b>".
4947   */
4948  public static final ca.uhn.fhir.model.api.Include INCLUDE_DERIVED_FROM = new ca.uhn.fhir.model.api.Include("ActivityDefinition:derived-from").toLocked();
4949
4950 /**
4951   * Search parameter: <b>context-type</b>
4952   * <p>
4953   * Description: <b>A type of use context assigned to the activity definition</b><br>
4954   * Type: <b>token</b><br>
4955   * Path: <b>ActivityDefinition.useContext.code</b><br>
4956   * </p>
4957   */
4958  @SearchParamDefinition(name="context-type", path="ActivityDefinition.useContext.code", description="A type of use context assigned to the activity definition", type="token" )
4959  public static final String SP_CONTEXT_TYPE = "context-type";
4960 /**
4961   * <b>Fluent Client</b> search parameter constant for <b>context-type</b>
4962   * <p>
4963   * Description: <b>A type of use context assigned to the activity definition</b><br>
4964   * Type: <b>token</b><br>
4965   * Path: <b>ActivityDefinition.useContext.code</b><br>
4966   * </p>
4967   */
4968  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT_TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTEXT_TYPE);
4969
4970 /**
4971   * Search parameter: <b>predecessor</b>
4972   * <p>
4973   * Description: <b>What resource is being referenced</b><br>
4974   * Type: <b>reference</b><br>
4975   * Path: <b>ActivityDefinition.relatedArtifact.resource</b><br>
4976   * </p>
4977   */
4978  @SearchParamDefinition(name="predecessor", path="ActivityDefinition.relatedArtifact.where(type='predecessor').resource", description="What resource is being referenced", type="reference" )
4979  public static final String SP_PREDECESSOR = "predecessor";
4980 /**
4981   * <b>Fluent Client</b> search parameter constant for <b>predecessor</b>
4982   * <p>
4983   * Description: <b>What resource is being referenced</b><br>
4984   * Type: <b>reference</b><br>
4985   * Path: <b>ActivityDefinition.relatedArtifact.resource</b><br>
4986   * </p>
4987   */
4988  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PREDECESSOR = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PREDECESSOR);
4989
4990/**
4991   * Constant for fluent queries to be used to add include statements. Specifies
4992   * the path value of "<b>ActivityDefinition:predecessor</b>".
4993   */
4994  public static final ca.uhn.fhir.model.api.Include INCLUDE_PREDECESSOR = new ca.uhn.fhir.model.api.Include("ActivityDefinition:predecessor").toLocked();
4995
4996 /**
4997   * Search parameter: <b>title</b>
4998   * <p>
4999   * Description: <b>The human-friendly name of the activity definition</b><br>
5000   * Type: <b>string</b><br>
5001   * Path: <b>ActivityDefinition.title</b><br>
5002   * </p>
5003   */
5004  @SearchParamDefinition(name="title", path="ActivityDefinition.title", description="The human-friendly name of the activity definition", type="string" )
5005  public static final String SP_TITLE = "title";
5006 /**
5007   * <b>Fluent Client</b> search parameter constant for <b>title</b>
5008   * <p>
5009   * Description: <b>The human-friendly name of the activity definition</b><br>
5010   * Type: <b>string</b><br>
5011   * Path: <b>ActivityDefinition.title</b><br>
5012   * </p>
5013   */
5014  public static final ca.uhn.fhir.rest.gclient.StringClientParam TITLE = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_TITLE);
5015
5016 /**
5017   * Search parameter: <b>composed-of</b>
5018   * <p>
5019   * Description: <b>What resource is being referenced</b><br>
5020   * Type: <b>reference</b><br>
5021   * Path: <b>ActivityDefinition.relatedArtifact.resource</b><br>
5022   * </p>
5023   */
5024  @SearchParamDefinition(name="composed-of", path="ActivityDefinition.relatedArtifact.where(type='composed-of').resource", description="What resource is being referenced", type="reference" )
5025  public static final String SP_COMPOSED_OF = "composed-of";
5026 /**
5027   * <b>Fluent Client</b> search parameter constant for <b>composed-of</b>
5028   * <p>
5029   * Description: <b>What resource is being referenced</b><br>
5030   * Type: <b>reference</b><br>
5031   * Path: <b>ActivityDefinition.relatedArtifact.resource</b><br>
5032   * </p>
5033   */
5034  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam COMPOSED_OF = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_COMPOSED_OF);
5035
5036/**
5037   * Constant for fluent queries to be used to add include statements. Specifies
5038   * the path value of "<b>ActivityDefinition:composed-of</b>".
5039   */
5040  public static final ca.uhn.fhir.model.api.Include INCLUDE_COMPOSED_OF = new ca.uhn.fhir.model.api.Include("ActivityDefinition:composed-of").toLocked();
5041
5042 /**
5043   * Search parameter: <b>version</b>
5044   * <p>
5045   * Description: <b>The business version of the activity definition</b><br>
5046   * Type: <b>token</b><br>
5047   * Path: <b>ActivityDefinition.version</b><br>
5048   * </p>
5049   */
5050  @SearchParamDefinition(name="version", path="ActivityDefinition.version", description="The business version of the activity definition", type="token" )
5051  public static final String SP_VERSION = "version";
5052 /**
5053   * <b>Fluent Client</b> search parameter constant for <b>version</b>
5054   * <p>
5055   * Description: <b>The business version of the activity definition</b><br>
5056   * Type: <b>token</b><br>
5057   * Path: <b>ActivityDefinition.version</b><br>
5058   * </p>
5059   */
5060  public static final ca.uhn.fhir.rest.gclient.TokenClientParam VERSION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_VERSION);
5061
5062 /**
5063   * Search parameter: <b>url</b>
5064   * <p>
5065   * Description: <b>The uri that identifies the activity definition</b><br>
5066   * Type: <b>uri</b><br>
5067   * Path: <b>ActivityDefinition.url</b><br>
5068   * </p>
5069   */
5070  @SearchParamDefinition(name="url", path="ActivityDefinition.url", description="The uri that identifies the activity definition", type="uri" )
5071  public static final String SP_URL = "url";
5072 /**
5073   * <b>Fluent Client</b> search parameter constant for <b>url</b>
5074   * <p>
5075   * Description: <b>The uri that identifies the activity definition</b><br>
5076   * Type: <b>uri</b><br>
5077   * Path: <b>ActivityDefinition.url</b><br>
5078   * </p>
5079   */
5080  public static final ca.uhn.fhir.rest.gclient.UriClientParam URL = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_URL);
5081
5082 /**
5083   * Search parameter: <b>context-quantity</b>
5084   * <p>
5085   * Description: <b>A quantity- or range-valued use context assigned to the activity definition</b><br>
5086   * Type: <b>quantity</b><br>
5087   * Path: <b>ActivityDefinition.useContext.valueQuantity, ActivityDefinition.useContext.valueRange</b><br>
5088   * </p>
5089   */
5090  @SearchParamDefinition(name="context-quantity", path="(ActivityDefinition.useContext.value as Quantity) | (ActivityDefinition.useContext.value as Range)", description="A quantity- or range-valued use context assigned to the activity definition", type="quantity" )
5091  public static final String SP_CONTEXT_QUANTITY = "context-quantity";
5092 /**
5093   * <b>Fluent Client</b> search parameter constant for <b>context-quantity</b>
5094   * <p>
5095   * Description: <b>A quantity- or range-valued use context assigned to the activity definition</b><br>
5096   * Type: <b>quantity</b><br>
5097   * Path: <b>ActivityDefinition.useContext.valueQuantity, ActivityDefinition.useContext.valueRange</b><br>
5098   * </p>
5099   */
5100  public static final ca.uhn.fhir.rest.gclient.QuantityClientParam CONTEXT_QUANTITY = new ca.uhn.fhir.rest.gclient.QuantityClientParam(SP_CONTEXT_QUANTITY);
5101
5102 /**
5103   * Search parameter: <b>effective</b>
5104   * <p>
5105   * Description: <b>The time during which the activity definition is intended to be in use</b><br>
5106   * Type: <b>date</b><br>
5107   * Path: <b>ActivityDefinition.effectivePeriod</b><br>
5108   * </p>
5109   */
5110  @SearchParamDefinition(name="effective", path="ActivityDefinition.effectivePeriod", description="The time during which the activity definition is intended to be in use", type="date" )
5111  public static final String SP_EFFECTIVE = "effective";
5112 /**
5113   * <b>Fluent Client</b> search parameter constant for <b>effective</b>
5114   * <p>
5115   * Description: <b>The time during which the activity definition is intended to be in use</b><br>
5116   * Type: <b>date</b><br>
5117   * Path: <b>ActivityDefinition.effectivePeriod</b><br>
5118   * </p>
5119   */
5120  public static final ca.uhn.fhir.rest.gclient.DateClientParam EFFECTIVE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_EFFECTIVE);
5121
5122 /**
5123   * Search parameter: <b>depends-on</b>
5124   * <p>
5125   * Description: <b>What resource is being referenced</b><br>
5126   * Type: <b>reference</b><br>
5127   * Path: <b>ActivityDefinition.relatedArtifact.resource, ActivityDefinition.library</b><br>
5128   * </p>
5129   */
5130  @SearchParamDefinition(name="depends-on", path="ActivityDefinition.relatedArtifact.where(type='depends-on').resource | ActivityDefinition.library", description="What resource is being referenced", type="reference" )
5131  public static final String SP_DEPENDS_ON = "depends-on";
5132 /**
5133   * <b>Fluent Client</b> search parameter constant for <b>depends-on</b>
5134   * <p>
5135   * Description: <b>What resource is being referenced</b><br>
5136   * Type: <b>reference</b><br>
5137   * Path: <b>ActivityDefinition.relatedArtifact.resource, ActivityDefinition.library</b><br>
5138   * </p>
5139   */
5140  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam DEPENDS_ON = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_DEPENDS_ON);
5141
5142/**
5143   * Constant for fluent queries to be used to add include statements. Specifies
5144   * the path value of "<b>ActivityDefinition:depends-on</b>".
5145   */
5146  public static final ca.uhn.fhir.model.api.Include INCLUDE_DEPENDS_ON = new ca.uhn.fhir.model.api.Include("ActivityDefinition:depends-on").toLocked();
5147
5148 /**
5149   * Search parameter: <b>name</b>
5150   * <p>
5151   * Description: <b>Computationally friendly name of the activity definition</b><br>
5152   * Type: <b>string</b><br>
5153   * Path: <b>ActivityDefinition.name</b><br>
5154   * </p>
5155   */
5156  @SearchParamDefinition(name="name", path="ActivityDefinition.name", description="Computationally friendly name of the activity definition", type="string" )
5157  public static final String SP_NAME = "name";
5158 /**
5159   * <b>Fluent Client</b> search parameter constant for <b>name</b>
5160   * <p>
5161   * Description: <b>Computationally friendly name of the activity definition</b><br>
5162   * Type: <b>string</b><br>
5163   * Path: <b>ActivityDefinition.name</b><br>
5164   * </p>
5165   */
5166  public static final ca.uhn.fhir.rest.gclient.StringClientParam NAME = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_NAME);
5167
5168 /**
5169   * Search parameter: <b>context</b>
5170   * <p>
5171   * Description: <b>A use context assigned to the activity definition</b><br>
5172   * Type: <b>token</b><br>
5173   * Path: <b>ActivityDefinition.useContext.valueCodeableConcept</b><br>
5174   * </p>
5175   */
5176  @SearchParamDefinition(name="context", path="(ActivityDefinition.useContext.value as CodeableConcept)", description="A use context assigned to the activity definition", type="token" )
5177  public static final String SP_CONTEXT = "context";
5178 /**
5179   * <b>Fluent Client</b> search parameter constant for <b>context</b>
5180   * <p>
5181   * Description: <b>A use context assigned to the activity definition</b><br>
5182   * Type: <b>token</b><br>
5183   * Path: <b>ActivityDefinition.useContext.valueCodeableConcept</b><br>
5184   * </p>
5185   */
5186  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTEXT);
5187
5188 /**
5189   * Search parameter: <b>publisher</b>
5190   * <p>
5191   * Description: <b>Name of the publisher of the activity definition</b><br>
5192   * Type: <b>string</b><br>
5193   * Path: <b>ActivityDefinition.publisher</b><br>
5194   * </p>
5195   */
5196  @SearchParamDefinition(name="publisher", path="ActivityDefinition.publisher", description="Name of the publisher of the activity definition", type="string" )
5197  public static final String SP_PUBLISHER = "publisher";
5198 /**
5199   * <b>Fluent Client</b> search parameter constant for <b>publisher</b>
5200   * <p>
5201   * Description: <b>Name of the publisher of the activity definition</b><br>
5202   * Type: <b>string</b><br>
5203   * Path: <b>ActivityDefinition.publisher</b><br>
5204   * </p>
5205   */
5206  public static final ca.uhn.fhir.rest.gclient.StringClientParam PUBLISHER = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_PUBLISHER);
5207
5208 /**
5209   * Search parameter: <b>topic</b>
5210   * <p>
5211   * Description: <b>Topics associated with the module</b><br>
5212   * Type: <b>token</b><br>
5213   * Path: <b>ActivityDefinition.topic</b><br>
5214   * </p>
5215   */
5216  @SearchParamDefinition(name="topic", path="ActivityDefinition.topic", description="Topics associated with the module", type="token" )
5217  public static final String SP_TOPIC = "topic";
5218 /**
5219   * <b>Fluent Client</b> search parameter constant for <b>topic</b>
5220   * <p>
5221   * Description: <b>Topics associated with the module</b><br>
5222   * Type: <b>token</b><br>
5223   * Path: <b>ActivityDefinition.topic</b><br>
5224   * </p>
5225   */
5226  public static final ca.uhn.fhir.rest.gclient.TokenClientParam TOPIC = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_TOPIC);
5227
5228 /**
5229   * Search parameter: <b>context-type-quantity</b>
5230   * <p>
5231   * Description: <b>A use context type and quantity- or range-based value assigned to the activity definition</b><br>
5232   * Type: <b>composite</b><br>
5233   * Path: <b></b><br>
5234   * </p>
5235   */
5236  @SearchParamDefinition(name="context-type-quantity", path="ActivityDefinition.useContext", description="A use context type and quantity- or range-based value assigned to the activity definition", type="composite", compositeOf={"context-type", "context-quantity"} )
5237  public static final String SP_CONTEXT_TYPE_QUANTITY = "context-type-quantity";
5238 /**
5239   * <b>Fluent Client</b> search parameter constant for <b>context-type-quantity</b>
5240   * <p>
5241   * Description: <b>A use context type and quantity- or range-based value assigned to the activity definition</b><br>
5242   * Type: <b>composite</b><br>
5243   * Path: <b></b><br>
5244   * </p>
5245   */
5246  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);
5247
5248 /**
5249   * Search parameter: <b>status</b>
5250   * <p>
5251   * Description: <b>The current status of the activity definition</b><br>
5252   * Type: <b>token</b><br>
5253   * Path: <b>ActivityDefinition.status</b><br>
5254   * </p>
5255   */
5256  @SearchParamDefinition(name="status", path="ActivityDefinition.status", description="The current status of the activity definition", type="token" )
5257  public static final String SP_STATUS = "status";
5258 /**
5259   * <b>Fluent Client</b> search parameter constant for <b>status</b>
5260   * <p>
5261   * Description: <b>The current status of the activity definition</b><br>
5262   * Type: <b>token</b><br>
5263   * Path: <b>ActivityDefinition.status</b><br>
5264   * </p>
5265   */
5266  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
5267
5268
5269}
5270