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