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 != null && 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 != null && 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 != null && 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 != null && 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 != null && 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 != null && 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 != null && 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 != null && 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 != null && 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 != null && 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   * @deprecated Use Reference#setResource(IBaseResource) instead
4446   */
4447  @Deprecated
4448  public List<SpecimenDefinition> getSpecimenRequirementTarget() {
4449    if (this.specimenRequirementTarget == null)
4450      this.specimenRequirementTarget = new ArrayList<SpecimenDefinition>();
4451    return this.specimenRequirementTarget;
4452  }
4453
4454  /**
4455   * @deprecated Use Reference#setResource(IBaseResource) instead
4456   */
4457  @Deprecated
4458  public SpecimenDefinition addSpecimenRequirementTarget() {
4459    SpecimenDefinition r = new SpecimenDefinition();
4460    if (this.specimenRequirementTarget == null)
4461      this.specimenRequirementTarget = new ArrayList<SpecimenDefinition>();
4462    this.specimenRequirementTarget.add(r);
4463    return r;
4464  }
4465
4466  /**
4467   * @return {@link #observationRequirement} (Defines observation requirements for
4468   *         the action to be performed, such as body weight or surface area.)
4469   */
4470  public List<Reference> getObservationRequirement() {
4471    if (this.observationRequirement == null)
4472      this.observationRequirement = new ArrayList<Reference>();
4473    return this.observationRequirement;
4474  }
4475
4476  /**
4477   * @return Returns a reference to <code>this</code> for easy method chaining
4478   */
4479  public ActivityDefinition setObservationRequirement(List<Reference> theObservationRequirement) {
4480    this.observationRequirement = theObservationRequirement;
4481    return this;
4482  }
4483
4484  public boolean hasObservationRequirement() {
4485    if (this.observationRequirement == null)
4486      return false;
4487    for (Reference item : this.observationRequirement)
4488      if (!item.isEmpty())
4489        return true;
4490    return false;
4491  }
4492
4493  public Reference addObservationRequirement() { // 3
4494    Reference t = new Reference();
4495    if (this.observationRequirement == null)
4496      this.observationRequirement = new ArrayList<Reference>();
4497    this.observationRequirement.add(t);
4498    return t;
4499  }
4500
4501  public ActivityDefinition addObservationRequirement(Reference t) { // 3
4502    if (t == null)
4503      return this;
4504    if (this.observationRequirement == null)
4505      this.observationRequirement = new ArrayList<Reference>();
4506    this.observationRequirement.add(t);
4507    return this;
4508  }
4509
4510  /**
4511   * @return The first repetition of repeating field
4512   *         {@link #observationRequirement}, creating it if it does not already
4513   *         exist
4514   */
4515  public Reference getObservationRequirementFirstRep() {
4516    if (getObservationRequirement().isEmpty()) {
4517      addObservationRequirement();
4518    }
4519    return getObservationRequirement().get(0);
4520  }
4521
4522  /**
4523   * @deprecated Use Reference#setResource(IBaseResource) instead
4524   */
4525  @Deprecated
4526  public List<ObservationDefinition> getObservationRequirementTarget() {
4527    if (this.observationRequirementTarget == null)
4528      this.observationRequirementTarget = new ArrayList<ObservationDefinition>();
4529    return this.observationRequirementTarget;
4530  }
4531
4532  /**
4533   * @deprecated Use Reference#setResource(IBaseResource) instead
4534   */
4535  @Deprecated
4536  public ObservationDefinition addObservationRequirementTarget() {
4537    ObservationDefinition r = new ObservationDefinition();
4538    if (this.observationRequirementTarget == null)
4539      this.observationRequirementTarget = new ArrayList<ObservationDefinition>();
4540    this.observationRequirementTarget.add(r);
4541    return r;
4542  }
4543
4544  /**
4545   * @return {@link #observationResultRequirement} (Defines the observations that
4546   *         are expected to be produced by the action.)
4547   */
4548  public List<Reference> getObservationResultRequirement() {
4549    if (this.observationResultRequirement == null)
4550      this.observationResultRequirement = new ArrayList<Reference>();
4551    return this.observationResultRequirement;
4552  }
4553
4554  /**
4555   * @return Returns a reference to <code>this</code> for easy method chaining
4556   */
4557  public ActivityDefinition setObservationResultRequirement(List<Reference> theObservationResultRequirement) {
4558    this.observationResultRequirement = theObservationResultRequirement;
4559    return this;
4560  }
4561
4562  public boolean hasObservationResultRequirement() {
4563    if (this.observationResultRequirement == null)
4564      return false;
4565    for (Reference item : this.observationResultRequirement)
4566      if (!item.isEmpty())
4567        return true;
4568    return false;
4569  }
4570
4571  public Reference addObservationResultRequirement() { // 3
4572    Reference t = new Reference();
4573    if (this.observationResultRequirement == null)
4574      this.observationResultRequirement = new ArrayList<Reference>();
4575    this.observationResultRequirement.add(t);
4576    return t;
4577  }
4578
4579  public ActivityDefinition addObservationResultRequirement(Reference t) { // 3
4580    if (t == null)
4581      return this;
4582    if (this.observationResultRequirement == null)
4583      this.observationResultRequirement = new ArrayList<Reference>();
4584    this.observationResultRequirement.add(t);
4585    return this;
4586  }
4587
4588  /**
4589   * @return The first repetition of repeating field
4590   *         {@link #observationResultRequirement}, creating it if it does not
4591   *         already exist
4592   */
4593  public Reference getObservationResultRequirementFirstRep() {
4594    if (getObservationResultRequirement().isEmpty()) {
4595      addObservationResultRequirement();
4596    }
4597    return getObservationResultRequirement().get(0);
4598  }
4599
4600  /**
4601   * @deprecated Use Reference#setResource(IBaseResource) instead
4602   */
4603  @Deprecated
4604  public List<ObservationDefinition> getObservationResultRequirementTarget() {
4605    if (this.observationResultRequirementTarget == null)
4606      this.observationResultRequirementTarget = new ArrayList<ObservationDefinition>();
4607    return this.observationResultRequirementTarget;
4608  }
4609
4610  /**
4611   * @deprecated Use Reference#setResource(IBaseResource) instead
4612   */
4613  @Deprecated
4614  public ObservationDefinition addObservationResultRequirementTarget() {
4615    ObservationDefinition r = new ObservationDefinition();
4616    if (this.observationResultRequirementTarget == null)
4617      this.observationResultRequirementTarget = new ArrayList<ObservationDefinition>();
4618    this.observationResultRequirementTarget.add(r);
4619    return r;
4620  }
4621
4622  /**
4623   * @return {@link #transform} (A reference to a StructureMap resource that
4624   *         defines a transform that can be executed to produce the intent
4625   *         resource using the ActivityDefinition instance as the input.). This
4626   *         is the underlying object with id, value and extensions. The accessor
4627   *         "getTransform" gives direct access to the value
4628   */
4629  public CanonicalType getTransformElement() {
4630    if (this.transform == null)
4631      if (Configuration.errorOnAutoCreate())
4632        throw new Error("Attempt to auto-create ActivityDefinition.transform");
4633      else if (Configuration.doAutoCreate())
4634        this.transform = new CanonicalType(); // bb
4635    return this.transform;
4636  }
4637
4638  public boolean hasTransformElement() {
4639    return this.transform != null && !this.transform.isEmpty();
4640  }
4641
4642  public boolean hasTransform() {
4643    return this.transform != null && !this.transform.isEmpty();
4644  }
4645
4646  /**
4647   * @param value {@link #transform} (A reference to a StructureMap resource that
4648   *              defines a transform that can be executed to produce the intent
4649   *              resource using the ActivityDefinition instance as the input.).
4650   *              This is the underlying object with id, value and extensions. The
4651   *              accessor "getTransform" gives direct access to the value
4652   */
4653  public ActivityDefinition setTransformElement(CanonicalType value) {
4654    this.transform = value;
4655    return this;
4656  }
4657
4658  /**
4659   * @return A reference to a StructureMap resource that defines a transform that
4660   *         can be executed to produce the intent resource using the
4661   *         ActivityDefinition instance as the input.
4662   */
4663  public String getTransform() {
4664    return this.transform == null ? null : this.transform.getValue();
4665  }
4666
4667  /**
4668   * @param value A reference to a StructureMap resource that defines a transform
4669   *              that can be executed to produce the intent resource using the
4670   *              ActivityDefinition instance as the input.
4671   */
4672  public ActivityDefinition setTransform(String value) {
4673    if (Utilities.noString(value))
4674      this.transform = null;
4675    else {
4676      if (this.transform == null)
4677        this.transform = new CanonicalType();
4678      this.transform.setValue(value);
4679    }
4680    return this;
4681  }
4682
4683  /**
4684   * @return {@link #dynamicValue} (Dynamic values that will be evaluated to
4685   *         produce values for elements of the resulting resource. For example,
4686   *         if the dosage of a medication must be computed based on the patient's
4687   *         weight, a dynamic value would be used to specify an expression that
4688   *         calculated the weight, and the path on the request resource that
4689   *         would contain the result.)
4690   */
4691  public List<ActivityDefinitionDynamicValueComponent> getDynamicValue() {
4692    if (this.dynamicValue == null)
4693      this.dynamicValue = new ArrayList<ActivityDefinitionDynamicValueComponent>();
4694    return this.dynamicValue;
4695  }
4696
4697  /**
4698   * @return Returns a reference to <code>this</code> for easy method chaining
4699   */
4700  public ActivityDefinition setDynamicValue(List<ActivityDefinitionDynamicValueComponent> theDynamicValue) {
4701    this.dynamicValue = theDynamicValue;
4702    return this;
4703  }
4704
4705  public boolean hasDynamicValue() {
4706    if (this.dynamicValue == null)
4707      return false;
4708    for (ActivityDefinitionDynamicValueComponent item : this.dynamicValue)
4709      if (!item.isEmpty())
4710        return true;
4711    return false;
4712  }
4713
4714  public ActivityDefinitionDynamicValueComponent addDynamicValue() { // 3
4715    ActivityDefinitionDynamicValueComponent t = new ActivityDefinitionDynamicValueComponent();
4716    if (this.dynamicValue == null)
4717      this.dynamicValue = new ArrayList<ActivityDefinitionDynamicValueComponent>();
4718    this.dynamicValue.add(t);
4719    return t;
4720  }
4721
4722  public ActivityDefinition addDynamicValue(ActivityDefinitionDynamicValueComponent t) { // 3
4723    if (t == null)
4724      return this;
4725    if (this.dynamicValue == null)
4726      this.dynamicValue = new ArrayList<ActivityDefinitionDynamicValueComponent>();
4727    this.dynamicValue.add(t);
4728    return this;
4729  }
4730
4731  /**
4732   * @return The first repetition of repeating field {@link #dynamicValue},
4733   *         creating it if it does not already exist
4734   */
4735  public ActivityDefinitionDynamicValueComponent getDynamicValueFirstRep() {
4736    if (getDynamicValue().isEmpty()) {
4737      addDynamicValue();
4738    }
4739    return getDynamicValue().get(0);
4740  }
4741
4742  protected void listChildren(List<Property> children) {
4743    super.listChildren(children);
4744    children.add(new Property("url", "uri",
4745        "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.",
4746        0, 1, url));
4747    children.add(new Property("identifier", "Identifier",
4748        "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.",
4749        0, java.lang.Integer.MAX_VALUE, identifier));
4750    children.add(new Property("version", "string",
4751        "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.",
4752        0, 1, version));
4753    children.add(new Property("name", "string",
4754        "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.",
4755        0, 1, name));
4756    children.add(new Property("title", "string",
4757        "A short, descriptive, user-friendly title for the activity definition.", 0, 1, title));
4758    children.add(new Property("subtitle", "string",
4759        "An explanatory or alternate title for the activity definition giving additional information about its content.",
4760        0, 1, subtitle));
4761    children.add(new Property("status", "code",
4762        "The status of this activity definition. Enables tracking the life-cycle of the content.", 0, 1, status));
4763    children.add(new Property("experimental", "boolean",
4764        "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.",
4765        0, 1, experimental));
4766    children.add(new Property("subject[x]", "CodeableConcept|Reference(Group)",
4767        "A code or group definition that describes the intended subject of the activity being defined.", 0, 1,
4768        subject));
4769    children.add(new Property("date", "dateTime",
4770        "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.",
4771        0, 1, date));
4772    children.add(new Property("publisher", "string",
4773        "The name of the organization or individual that published the activity definition.", 0, 1, publisher));
4774    children.add(new Property("contact", "ContactDetail",
4775        "Contact details to assist a user in finding and communicating with the publisher.", 0,
4776        java.lang.Integer.MAX_VALUE, contact));
4777    children.add(new Property("description", "markdown",
4778        "A free text natural language description of the activity definition from a consumer's perspective.", 0, 1,
4779        description));
4780    children.add(new Property("useContext", "UsageContext",
4781        "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.",
4782        0, java.lang.Integer.MAX_VALUE, useContext));
4783    children.add(new Property("jurisdiction", "CodeableConcept",
4784        "A legal or geographic region in which the activity definition is intended to be used.", 0,
4785        java.lang.Integer.MAX_VALUE, jurisdiction));
4786    children.add(new Property("purpose", "markdown",
4787        "Explanation of why this activity definition is needed and why it has been designed as it has.", 0, 1,
4788        purpose));
4789    children.add(new Property("usage", "string",
4790        "A detailed description of how the activity definition is used from a clinical perspective.", 0, 1, usage));
4791    children.add(new Property("copyright", "markdown",
4792        "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.",
4793        0, 1, copyright));
4794    children.add(new Property("approvalDate", "date",
4795        "The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage.",
4796        0, 1, approvalDate));
4797    children.add(new Property("lastReviewDate", "date",
4798        "The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date.",
4799        0, 1, lastReviewDate));
4800    children.add(new Property("effectivePeriod", "Period",
4801        "The period during which the activity definition content was or is planned to be in active use.", 0, 1,
4802        effectivePeriod));
4803    children.add(new Property("topic", "CodeableConcept",
4804        "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.",
4805        0, java.lang.Integer.MAX_VALUE, topic));
4806    children.add(new Property("author", "ContactDetail",
4807        "An individiual or organization primarily involved in the creation and maintenance of the content.", 0,
4808        java.lang.Integer.MAX_VALUE, author));
4809    children.add(new Property("editor", "ContactDetail",
4810        "An individual or organization primarily responsible for internal coherence of the content.", 0,
4811        java.lang.Integer.MAX_VALUE, editor));
4812    children.add(new Property("reviewer", "ContactDetail",
4813        "An individual or organization primarily responsible for review of some aspect of the content.", 0,
4814        java.lang.Integer.MAX_VALUE, reviewer));
4815    children.add(new Property("endorser", "ContactDetail",
4816        "An individual or organization responsible for officially endorsing the content for use in some setting.", 0,
4817        java.lang.Integer.MAX_VALUE, endorser));
4818    children.add(new Property("relatedArtifact", "RelatedArtifact",
4819        "Related artifacts such as additional documentation, justification, or bibliographic references.", 0,
4820        java.lang.Integer.MAX_VALUE, relatedArtifact));
4821    children.add(new Property("library", "canonical(Library)",
4822        "A reference to a Library resource containing any formal logic used by the activity definition.", 0,
4823        java.lang.Integer.MAX_VALUE, library));
4824    children.add(new Property("kind", "code",
4825        "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.",
4826        0, 1, kind));
4827    children.add(new Property("profile", "canonical(StructureDefinition)",
4828        "A profile to which the target of the activity definition is expected to conform.", 0, 1, profile));
4829    children.add(new Property("code", "CodeableConcept",
4830        "Detailed description of the type of activity; e.g. What lab test, what procedure, what kind of encounter.", 0,
4831        1, code));
4832    children.add(new Property("intent", "code",
4833        "Indicates the level of authority/intentionality associated with the activity and where the request should fit into the workflow chain.",
4834        0, 1, intent));
4835    children.add(new Property("priority", "code",
4836        "Indicates how quickly the activity  should be addressed with respect to other requests.", 0, 1, priority));
4837    children.add(new Property("doNotPerform", "boolean",
4838        "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.",
4839        0, 1, doNotPerform));
4840    children.add(new Property("timing[x]", "Timing|dateTime|Age|Period|Range|Duration",
4841        "The period, timing or frequency upon which the described activity is to occur.", 0, 1, timing));
4842    children.add(new Property("location", "Reference(Location)",
4843        "Identifies the facility where the activity will occur; e.g. home, hospital, specific clinic, etc.", 0, 1,
4844        location));
4845    children.add(new Property("participant", "", "Indicates who should participate in performing the action described.",
4846        0, java.lang.Integer.MAX_VALUE, participant));
4847    children.add(new Property("product[x]", "Reference(Medication|Substance)|CodeableConcept",
4848        "Identifies the food, drug or other product being consumed or supplied in the activity.", 0, 1, product));
4849    children.add(new Property("quantity", "SimpleQuantity",
4850        "Identifies the quantity expected to be consumed at once (per dose, per meal, etc.).", 0, 1, quantity));
4851    children.add(new Property("dosage", "Dosage",
4852        "Provides detailed dosage instructions in the same way that they are described for MedicationRequest resources.",
4853        0, java.lang.Integer.MAX_VALUE, dosage));
4854    children.add(new Property("bodySite", "CodeableConcept",
4855        "Indicates the sites on the subject's body where the procedure should be performed (I.e. the target sites).", 0,
4856        java.lang.Integer.MAX_VALUE, bodySite));
4857    children.add(new Property("specimenRequirement", "Reference(SpecimenDefinition)",
4858        "Defines specimen requirements for the action to be performed, such as required specimens for a lab test.", 0,
4859        java.lang.Integer.MAX_VALUE, specimenRequirement));
4860    children.add(new Property("observationRequirement", "Reference(ObservationDefinition)",
4861        "Defines observation requirements for the action to be performed, such as body weight or surface area.", 0,
4862        java.lang.Integer.MAX_VALUE, observationRequirement));
4863    children.add(new Property("observationResultRequirement", "Reference(ObservationDefinition)",
4864        "Defines the observations that are expected to be produced by the action.", 0, java.lang.Integer.MAX_VALUE,
4865        observationResultRequirement));
4866    children.add(new Property("transform", "canonical(StructureMap)",
4867        "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.",
4868        0, 1, transform));
4869    children.add(new Property("dynamicValue", "",
4870        "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.",
4871        0, java.lang.Integer.MAX_VALUE, dynamicValue));
4872  }
4873
4874  @Override
4875  public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
4876    switch (_hash) {
4877    case 116079:
4878      /* url */ return new Property("url", "uri",
4879          "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.",
4880          0, 1, url);
4881    case -1618432855:
4882      /* identifier */ return new Property("identifier", "Identifier",
4883          "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.",
4884          0, java.lang.Integer.MAX_VALUE, identifier);
4885    case 351608024:
4886      /* version */ return new Property("version", "string",
4887          "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.",
4888          0, 1, version);
4889    case 3373707:
4890      /* name */ return new Property("name", "string",
4891          "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.",
4892          0, 1, name);
4893    case 110371416:
4894      /* title */ return new Property("title", "string",
4895          "A short, descriptive, user-friendly title for the activity definition.", 0, 1, title);
4896    case -2060497896:
4897      /* subtitle */ return new Property("subtitle", "string",
4898          "An explanatory or alternate title for the activity definition giving additional information about its content.",
4899          0, 1, subtitle);
4900    case -892481550:
4901      /* status */ return new Property("status", "code",
4902          "The status of this activity definition. Enables tracking the life-cycle of the content.", 0, 1, status);
4903    case -404562712:
4904      /* experimental */ return new Property("experimental", "boolean",
4905          "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.",
4906          0, 1, experimental);
4907    case -573640748:
4908      /* subject[x] */ return new Property("subject[x]", "CodeableConcept|Reference(Group)",
4909          "A code or group definition that describes the intended subject of the activity being defined.", 0, 1,
4910          subject);
4911    case -1867885268:
4912      /* subject */ return new Property("subject[x]", "CodeableConcept|Reference(Group)",
4913          "A code or group definition that describes the intended subject of the activity being defined.", 0, 1,
4914          subject);
4915    case -1257122603:
4916      /* subjectCodeableConcept */ return new Property("subject[x]", "CodeableConcept|Reference(Group)",
4917          "A code or group definition that describes the intended subject of the activity being defined.", 0, 1,
4918          subject);
4919    case 772938623:
4920      /* subjectReference */ return new Property("subject[x]", "CodeableConcept|Reference(Group)",
4921          "A code or group definition that describes the intended subject of the activity being defined.", 0, 1,
4922          subject);
4923    case 3076014:
4924      /* date */ return new Property("date", "dateTime",
4925          "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.",
4926          0, 1, date);
4927    case 1447404028:
4928      /* publisher */ return new Property("publisher", "string",
4929          "The name of the organization or individual that published the activity definition.", 0, 1, publisher);
4930    case 951526432:
4931      /* contact */ return new Property("contact", "ContactDetail",
4932          "Contact details to assist a user in finding and communicating with the publisher.", 0,
4933          java.lang.Integer.MAX_VALUE, contact);
4934    case -1724546052:
4935      /* description */ return new Property("description", "markdown",
4936          "A free text natural language description of the activity definition from a consumer's perspective.", 0, 1,
4937          description);
4938    case -669707736:
4939      /* useContext */ return new Property("useContext", "UsageContext",
4940          "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.",
4941          0, java.lang.Integer.MAX_VALUE, useContext);
4942    case -507075711:
4943      /* jurisdiction */ return new Property("jurisdiction", "CodeableConcept",
4944          "A legal or geographic region in which the activity definition is intended to be used.", 0,
4945          java.lang.Integer.MAX_VALUE, jurisdiction);
4946    case -220463842:
4947      /* purpose */ return new Property("purpose", "markdown",
4948          "Explanation of why this activity definition is needed and why it has been designed as it has.", 0, 1,
4949          purpose);
4950    case 111574433:
4951      /* usage */ return new Property("usage", "string",
4952          "A detailed description of how the activity definition is used from a clinical perspective.", 0, 1, usage);
4953    case 1522889671:
4954      /* copyright */ return new Property("copyright", "markdown",
4955          "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.",
4956          0, 1, copyright);
4957    case 223539345:
4958      /* approvalDate */ return new Property("approvalDate", "date",
4959          "The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage.",
4960          0, 1, approvalDate);
4961    case -1687512484:
4962      /* lastReviewDate */ return new Property("lastReviewDate", "date",
4963          "The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date.",
4964          0, 1, lastReviewDate);
4965    case -403934648:
4966      /* effectivePeriod */ return new Property("effectivePeriod", "Period",
4967          "The period during which the activity definition content was or is planned to be in active use.", 0, 1,
4968          effectivePeriod);
4969    case 110546223:
4970      /* topic */ return new Property("topic", "CodeableConcept",
4971          "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.",
4972          0, java.lang.Integer.MAX_VALUE, topic);
4973    case -1406328437:
4974      /* author */ return new Property("author", "ContactDetail",
4975          "An individiual or organization primarily involved in the creation and maintenance of the content.", 0,
4976          java.lang.Integer.MAX_VALUE, author);
4977    case -1307827859:
4978      /* editor */ return new Property("editor", "ContactDetail",
4979          "An individual or organization primarily responsible for internal coherence of the content.", 0,
4980          java.lang.Integer.MAX_VALUE, editor);
4981    case -261190139:
4982      /* reviewer */ return new Property("reviewer", "ContactDetail",
4983          "An individual or organization primarily responsible for review of some aspect of the content.", 0,
4984          java.lang.Integer.MAX_VALUE, reviewer);
4985    case 1740277666:
4986      /* endorser */ return new Property("endorser", "ContactDetail",
4987          "An individual or organization responsible for officially endorsing the content for use in some setting.", 0,
4988          java.lang.Integer.MAX_VALUE, endorser);
4989    case 666807069:
4990      /* relatedArtifact */ return new Property("relatedArtifact", "RelatedArtifact",
4991          "Related artifacts such as additional documentation, justification, or bibliographic references.", 0,
4992          java.lang.Integer.MAX_VALUE, relatedArtifact);
4993    case 166208699:
4994      /* library */ return new Property("library", "canonical(Library)",
4995          "A reference to a Library resource containing any formal logic used by the activity definition.", 0,
4996          java.lang.Integer.MAX_VALUE, library);
4997    case 3292052:
4998      /* kind */ return new Property("kind", "code",
4999          "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.",
5000          0, 1, kind);
5001    case -309425751:
5002      /* profile */ return new Property("profile", "canonical(StructureDefinition)",
5003          "A profile to which the target of the activity definition is expected to conform.", 0, 1, profile);
5004    case 3059181:
5005      /* code */ return new Property("code", "CodeableConcept",
5006          "Detailed description of the type of activity; e.g. What lab test, what procedure, what kind of encounter.",
5007          0, 1, code);
5008    case -1183762788:
5009      /* intent */ return new Property("intent", "code",
5010          "Indicates the level of authority/intentionality associated with the activity and where the request should fit into the workflow chain.",
5011          0, 1, intent);
5012    case -1165461084:
5013      /* priority */ return new Property("priority", "code",
5014          "Indicates how quickly the activity  should be addressed with respect to other requests.", 0, 1, priority);
5015    case -1788508167:
5016      /* doNotPerform */ return new Property("doNotPerform", "boolean",
5017          "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.",
5018          0, 1, doNotPerform);
5019    case 164632566:
5020      /* timing[x] */ return new Property("timing[x]", "Timing|dateTime|Age|Period|Range|Duration",
5021          "The period, timing or frequency upon which the described activity is to occur.", 0, 1, timing);
5022    case -873664438:
5023      /* timing */ return new Property("timing[x]", "Timing|dateTime|Age|Period|Range|Duration",
5024          "The period, timing or frequency upon which the described activity is to occur.", 0, 1, timing);
5025    case -497554124:
5026      /* timingTiming */ return new Property("timing[x]", "Timing|dateTime|Age|Period|Range|Duration",
5027          "The period, timing or frequency upon which the described activity is to occur.", 0, 1, timing);
5028    case -1837458939:
5029      /* timingDateTime */ return new Property("timing[x]", "Timing|dateTime|Age|Period|Range|Duration",
5030          "The period, timing or frequency upon which the described activity is to occur.", 0, 1, timing);
5031    case 164607061:
5032      /* timingAge */ return new Property("timing[x]", "Timing|dateTime|Age|Period|Range|Duration",
5033          "The period, timing or frequency upon which the described activity is to occur.", 0, 1, timing);
5034    case -615615829:
5035      /* timingPeriod */ return new Property("timing[x]", "Timing|dateTime|Age|Period|Range|Duration",
5036          "The period, timing or frequency upon which the described activity is to occur.", 0, 1, timing);
5037    case -710871277:
5038      /* timingRange */ return new Property("timing[x]", "Timing|dateTime|Age|Period|Range|Duration",
5039          "The period, timing or frequency upon which the described activity is to occur.", 0, 1, timing);
5040    case -1327253506:
5041      /* timingDuration */ return new Property("timing[x]", "Timing|dateTime|Age|Period|Range|Duration",
5042          "The period, timing or frequency upon which the described activity is to occur.", 0, 1, timing);
5043    case 1901043637:
5044      /* location */ return new Property("location", "Reference(Location)",
5045          "Identifies the facility where the activity will occur; e.g. home, hospital, specific clinic, etc.", 0, 1,
5046          location);
5047    case 767422259:
5048      /* participant */ return new Property("participant", "",
5049          "Indicates who should participate in performing the action described.", 0, java.lang.Integer.MAX_VALUE,
5050          participant);
5051    case 1753005361:
5052      /* product[x] */ return new Property("product[x]", "Reference(Medication|Substance)|CodeableConcept",
5053          "Identifies the food, drug or other product being consumed or supplied in the activity.", 0, 1, product);
5054    case -309474065:
5055      /* product */ return new Property("product[x]", "Reference(Medication|Substance)|CodeableConcept",
5056          "Identifies the food, drug or other product being consumed or supplied in the activity.", 0, 1, product);
5057    case -669667556:
5058      /* productReference */ return new Property("product[x]", "Reference(Medication|Substance)|CodeableConcept",
5059          "Identifies the food, drug or other product being consumed or supplied in the activity.", 0, 1, product);
5060    case 906854066:
5061      /* productCodeableConcept */ return new Property("product[x]", "Reference(Medication|Substance)|CodeableConcept",
5062          "Identifies the food, drug or other product being consumed or supplied in the activity.", 0, 1, product);
5063    case -1285004149:
5064      /* quantity */ return new Property("quantity", "SimpleQuantity",
5065          "Identifies the quantity expected to be consumed at once (per dose, per meal, etc.).", 0, 1, quantity);
5066    case -1326018889:
5067      /* dosage */ return new Property("dosage", "Dosage",
5068          "Provides detailed dosage instructions in the same way that they are described for MedicationRequest resources.",
5069          0, java.lang.Integer.MAX_VALUE, dosage);
5070    case 1702620169:
5071      /* bodySite */ return new Property("bodySite", "CodeableConcept",
5072          "Indicates the sites on the subject's body where the procedure should be performed (I.e. the target sites).",
5073          0, java.lang.Integer.MAX_VALUE, bodySite);
5074    case 1498467355:
5075      /* specimenRequirement */ return new Property("specimenRequirement", "Reference(SpecimenDefinition)",
5076          "Defines specimen requirements for the action to be performed, such as required specimens for a lab test.", 0,
5077          java.lang.Integer.MAX_VALUE, specimenRequirement);
5078    case 362354807:
5079      /* observationRequirement */ return new Property("observationRequirement", "Reference(ObservationDefinition)",
5080          "Defines observation requirements for the action to be performed, such as body weight or surface area.", 0,
5081          java.lang.Integer.MAX_VALUE, observationRequirement);
5082    case 395230490:
5083      /* observationResultRequirement */ return new Property("observationResultRequirement",
5084          "Reference(ObservationDefinition)",
5085          "Defines the observations that are expected to be produced by the action.", 0, java.lang.Integer.MAX_VALUE,
5086          observationResultRequirement);
5087    case 1052666732:
5088      /* transform */ return new Property("transform", "canonical(StructureMap)",
5089          "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.",
5090          0, 1, transform);
5091    case 572625010:
5092      /* dynamicValue */ return new Property("dynamicValue", "",
5093          "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.",
5094          0, java.lang.Integer.MAX_VALUE, dynamicValue);
5095    default:
5096      return super.getNamedProperty(_hash, _name, _checkValid);
5097    }
5098
5099  }
5100
5101  @Override
5102  public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
5103    switch (hash) {
5104    case 116079:
5105      /* url */ return this.url == null ? new Base[0] : new Base[] { this.url }; // UriType
5106    case -1618432855:
5107      /* identifier */ return this.identifier == null ? new Base[0]
5108          : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
5109    case 351608024:
5110      /* version */ return this.version == null ? new Base[0] : new Base[] { this.version }; // StringType
5111    case 3373707:
5112      /* name */ return this.name == null ? new Base[0] : new Base[] { this.name }; // StringType
5113    case 110371416:
5114      /* title */ return this.title == null ? new Base[0] : new Base[] { this.title }; // StringType
5115    case -2060497896:
5116      /* subtitle */ return this.subtitle == null ? new Base[0] : new Base[] { this.subtitle }; // StringType
5117    case -892481550:
5118      /* status */ return this.status == null ? new Base[0] : new Base[] { this.status }; // Enumeration<PublicationStatus>
5119    case -404562712:
5120      /* experimental */ return this.experimental == null ? new Base[0] : new Base[] { this.experimental }; // BooleanType
5121    case -1867885268:
5122      /* subject */ return this.subject == null ? new Base[0] : new Base[] { this.subject }; // Type
5123    case 3076014:
5124      /* date */ return this.date == null ? new Base[0] : new Base[] { this.date }; // DateTimeType
5125    case 1447404028:
5126      /* publisher */ return this.publisher == null ? new Base[0] : new Base[] { this.publisher }; // StringType
5127    case 951526432:
5128      /* contact */ return this.contact == null ? new Base[0] : this.contact.toArray(new Base[this.contact.size()]); // ContactDetail
5129    case -1724546052:
5130      /* description */ return this.description == null ? new Base[0] : new Base[] { this.description }; // MarkdownType
5131    case -669707736:
5132      /* useContext */ return this.useContext == null ? new Base[0]
5133          : this.useContext.toArray(new Base[this.useContext.size()]); // UsageContext
5134    case -507075711:
5135      /* jurisdiction */ return this.jurisdiction == null ? new Base[0]
5136          : this.jurisdiction.toArray(new Base[this.jurisdiction.size()]); // CodeableConcept
5137    case -220463842:
5138      /* purpose */ return this.purpose == null ? new Base[0] : new Base[] { this.purpose }; // MarkdownType
5139    case 111574433:
5140      /* usage */ return this.usage == null ? new Base[0] : new Base[] { this.usage }; // StringType
5141    case 1522889671:
5142      /* copyright */ return this.copyright == null ? new Base[0] : new Base[] { this.copyright }; // MarkdownType
5143    case 223539345:
5144      /* approvalDate */ return this.approvalDate == null ? new Base[0] : new Base[] { this.approvalDate }; // DateType
5145    case -1687512484:
5146      /* lastReviewDate */ return this.lastReviewDate == null ? new Base[0] : new Base[] { this.lastReviewDate }; // DateType
5147    case -403934648:
5148      /* effectivePeriod */ return this.effectivePeriod == null ? new Base[0] : new Base[] { this.effectivePeriod }; // Period
5149    case 110546223:
5150      /* topic */ return this.topic == null ? new Base[0] : this.topic.toArray(new Base[this.topic.size()]); // CodeableConcept
5151    case -1406328437:
5152      /* author */ return this.author == null ? new Base[0] : this.author.toArray(new Base[this.author.size()]); // ContactDetail
5153    case -1307827859:
5154      /* editor */ return this.editor == null ? new Base[0] : this.editor.toArray(new Base[this.editor.size()]); // ContactDetail
5155    case -261190139:
5156      /* reviewer */ return this.reviewer == null ? new Base[0] : this.reviewer.toArray(new Base[this.reviewer.size()]); // ContactDetail
5157    case 1740277666:
5158      /* endorser */ return this.endorser == null ? new Base[0] : this.endorser.toArray(new Base[this.endorser.size()]); // ContactDetail
5159    case 666807069:
5160      /* relatedArtifact */ return this.relatedArtifact == null ? new Base[0]
5161          : this.relatedArtifact.toArray(new Base[this.relatedArtifact.size()]); // RelatedArtifact
5162    case 166208699:
5163      /* library */ return this.library == null ? new Base[0] : this.library.toArray(new Base[this.library.size()]); // CanonicalType
5164    case 3292052:
5165      /* kind */ return this.kind == null ? new Base[0] : new Base[] { this.kind }; // Enumeration<ActivityDefinitionKind>
5166    case -309425751:
5167      /* profile */ return this.profile == null ? new Base[0] : new Base[] { this.profile }; // CanonicalType
5168    case 3059181:
5169      /* code */ return this.code == null ? new Base[0] : new Base[] { this.code }; // CodeableConcept
5170    case -1183762788:
5171      /* intent */ return this.intent == null ? new Base[0] : new Base[] { this.intent }; // Enumeration<RequestIntent>
5172    case -1165461084:
5173      /* priority */ return this.priority == null ? new Base[0] : new Base[] { this.priority }; // Enumeration<RequestPriority>
5174    case -1788508167:
5175      /* doNotPerform */ return this.doNotPerform == null ? new Base[0] : new Base[] { this.doNotPerform }; // BooleanType
5176    case -873664438:
5177      /* timing */ return this.timing == null ? new Base[0] : new Base[] { this.timing }; // Type
5178    case 1901043637:
5179      /* location */ return this.location == null ? new Base[0] : new Base[] { this.location }; // Reference
5180    case 767422259:
5181      /* participant */ return this.participant == null ? new Base[0]
5182          : this.participant.toArray(new Base[this.participant.size()]); // ActivityDefinitionParticipantComponent
5183    case -309474065:
5184      /* product */ return this.product == null ? new Base[0] : new Base[] { this.product }; // Type
5185    case -1285004149:
5186      /* quantity */ return this.quantity == null ? new Base[0] : new Base[] { this.quantity }; // Quantity
5187    case -1326018889:
5188      /* dosage */ return this.dosage == null ? new Base[0] : this.dosage.toArray(new Base[this.dosage.size()]); // Dosage
5189    case 1702620169:
5190      /* bodySite */ return this.bodySite == null ? new Base[0] : this.bodySite.toArray(new Base[this.bodySite.size()]); // CodeableConcept
5191    case 1498467355:
5192      /* specimenRequirement */ return this.specimenRequirement == null ? new Base[0]
5193          : this.specimenRequirement.toArray(new Base[this.specimenRequirement.size()]); // Reference
5194    case 362354807:
5195      /* observationRequirement */ return this.observationRequirement == null ? new Base[0]
5196          : this.observationRequirement.toArray(new Base[this.observationRequirement.size()]); // Reference
5197    case 395230490:
5198      /* observationResultRequirement */ return this.observationResultRequirement == null ? new Base[0]
5199          : this.observationResultRequirement.toArray(new Base[this.observationResultRequirement.size()]); // Reference
5200    case 1052666732:
5201      /* transform */ return this.transform == null ? new Base[0] : new Base[] { this.transform }; // CanonicalType
5202    case 572625010:
5203      /* dynamicValue */ return this.dynamicValue == null ? new Base[0]
5204          : this.dynamicValue.toArray(new Base[this.dynamicValue.size()]); // ActivityDefinitionDynamicValueComponent
5205    default:
5206      return super.getProperty(hash, name, checkValid);
5207    }
5208
5209  }
5210
5211  @Override
5212  public Base setProperty(int hash, String name, Base value) throws FHIRException {
5213    switch (hash) {
5214    case 116079: // url
5215      this.url = castToUri(value); // UriType
5216      return value;
5217    case -1618432855: // identifier
5218      this.getIdentifier().add(castToIdentifier(value)); // Identifier
5219      return value;
5220    case 351608024: // version
5221      this.version = castToString(value); // StringType
5222      return value;
5223    case 3373707: // name
5224      this.name = castToString(value); // StringType
5225      return value;
5226    case 110371416: // title
5227      this.title = castToString(value); // StringType
5228      return value;
5229    case -2060497896: // subtitle
5230      this.subtitle = castToString(value); // StringType
5231      return value;
5232    case -892481550: // status
5233      value = new PublicationStatusEnumFactory().fromType(castToCode(value));
5234      this.status = (Enumeration) value; // Enumeration<PublicationStatus>
5235      return value;
5236    case -404562712: // experimental
5237      this.experimental = castToBoolean(value); // BooleanType
5238      return value;
5239    case -1867885268: // subject
5240      this.subject = castToType(value); // Type
5241      return value;
5242    case 3076014: // date
5243      this.date = castToDateTime(value); // DateTimeType
5244      return value;
5245    case 1447404028: // publisher
5246      this.publisher = castToString(value); // StringType
5247      return value;
5248    case 951526432: // contact
5249      this.getContact().add(castToContactDetail(value)); // ContactDetail
5250      return value;
5251    case -1724546052: // description
5252      this.description = castToMarkdown(value); // MarkdownType
5253      return value;
5254    case -669707736: // useContext
5255      this.getUseContext().add(castToUsageContext(value)); // UsageContext
5256      return value;
5257    case -507075711: // jurisdiction
5258      this.getJurisdiction().add(castToCodeableConcept(value)); // CodeableConcept
5259      return value;
5260    case -220463842: // purpose
5261      this.purpose = castToMarkdown(value); // MarkdownType
5262      return value;
5263    case 111574433: // usage
5264      this.usage = castToString(value); // StringType
5265      return value;
5266    case 1522889671: // copyright
5267      this.copyright = castToMarkdown(value); // MarkdownType
5268      return value;
5269    case 223539345: // approvalDate
5270      this.approvalDate = castToDate(value); // DateType
5271      return value;
5272    case -1687512484: // lastReviewDate
5273      this.lastReviewDate = castToDate(value); // DateType
5274      return value;
5275    case -403934648: // effectivePeriod
5276      this.effectivePeriod = castToPeriod(value); // Period
5277      return value;
5278    case 110546223: // topic
5279      this.getTopic().add(castToCodeableConcept(value)); // CodeableConcept
5280      return value;
5281    case -1406328437: // author
5282      this.getAuthor().add(castToContactDetail(value)); // ContactDetail
5283      return value;
5284    case -1307827859: // editor
5285      this.getEditor().add(castToContactDetail(value)); // ContactDetail
5286      return value;
5287    case -261190139: // reviewer
5288      this.getReviewer().add(castToContactDetail(value)); // ContactDetail
5289      return value;
5290    case 1740277666: // endorser
5291      this.getEndorser().add(castToContactDetail(value)); // ContactDetail
5292      return value;
5293    case 666807069: // relatedArtifact
5294      this.getRelatedArtifact().add(castToRelatedArtifact(value)); // RelatedArtifact
5295      return value;
5296    case 166208699: // library
5297      this.getLibrary().add(castToCanonical(value)); // CanonicalType
5298      return value;
5299    case 3292052: // kind
5300      value = new ActivityDefinitionKindEnumFactory().fromType(castToCode(value));
5301      this.kind = (Enumeration) value; // Enumeration<ActivityDefinitionKind>
5302      return value;
5303    case -309425751: // profile
5304      this.profile = castToCanonical(value); // CanonicalType
5305      return value;
5306    case 3059181: // code
5307      this.code = castToCodeableConcept(value); // CodeableConcept
5308      return value;
5309    case -1183762788: // intent
5310      value = new RequestIntentEnumFactory().fromType(castToCode(value));
5311      this.intent = (Enumeration) value; // Enumeration<RequestIntent>
5312      return value;
5313    case -1165461084: // priority
5314      value = new RequestPriorityEnumFactory().fromType(castToCode(value));
5315      this.priority = (Enumeration) value; // Enumeration<RequestPriority>
5316      return value;
5317    case -1788508167: // doNotPerform
5318      this.doNotPerform = castToBoolean(value); // BooleanType
5319      return value;
5320    case -873664438: // timing
5321      this.timing = castToType(value); // Type
5322      return value;
5323    case 1901043637: // location
5324      this.location = castToReference(value); // Reference
5325      return value;
5326    case 767422259: // participant
5327      this.getParticipant().add((ActivityDefinitionParticipantComponent) value); // ActivityDefinitionParticipantComponent
5328      return value;
5329    case -309474065: // product
5330      this.product = castToType(value); // Type
5331      return value;
5332    case -1285004149: // quantity
5333      this.quantity = castToQuantity(value); // Quantity
5334      return value;
5335    case -1326018889: // dosage
5336      this.getDosage().add(castToDosage(value)); // Dosage
5337      return value;
5338    case 1702620169: // bodySite
5339      this.getBodySite().add(castToCodeableConcept(value)); // CodeableConcept
5340      return value;
5341    case 1498467355: // specimenRequirement
5342      this.getSpecimenRequirement().add(castToReference(value)); // Reference
5343      return value;
5344    case 362354807: // observationRequirement
5345      this.getObservationRequirement().add(castToReference(value)); // Reference
5346      return value;
5347    case 395230490: // observationResultRequirement
5348      this.getObservationResultRequirement().add(castToReference(value)); // Reference
5349      return value;
5350    case 1052666732: // transform
5351      this.transform = castToCanonical(value); // CanonicalType
5352      return value;
5353    case 572625010: // dynamicValue
5354      this.getDynamicValue().add((ActivityDefinitionDynamicValueComponent) value); // ActivityDefinitionDynamicValueComponent
5355      return value;
5356    default:
5357      return super.setProperty(hash, name, value);
5358    }
5359
5360  }
5361
5362  @Override
5363  public Base setProperty(String name, Base value) throws FHIRException {
5364    if (name.equals("url")) {
5365      this.url = castToUri(value); // UriType
5366    } else if (name.equals("identifier")) {
5367      this.getIdentifier().add(castToIdentifier(value));
5368    } else if (name.equals("version")) {
5369      this.version = castToString(value); // StringType
5370    } else if (name.equals("name")) {
5371      this.name = castToString(value); // StringType
5372    } else if (name.equals("title")) {
5373      this.title = castToString(value); // StringType
5374    } else if (name.equals("subtitle")) {
5375      this.subtitle = castToString(value); // StringType
5376    } else if (name.equals("status")) {
5377      value = new PublicationStatusEnumFactory().fromType(castToCode(value));
5378      this.status = (Enumeration) value; // Enumeration<PublicationStatus>
5379    } else if (name.equals("experimental")) {
5380      this.experimental = castToBoolean(value); // BooleanType
5381    } else if (name.equals("subject[x]")) {
5382      this.subject = castToType(value); // Type
5383    } else if (name.equals("date")) {
5384      this.date = castToDateTime(value); // DateTimeType
5385    } else if (name.equals("publisher")) {
5386      this.publisher = castToString(value); // StringType
5387    } else if (name.equals("contact")) {
5388      this.getContact().add(castToContactDetail(value));
5389    } else if (name.equals("description")) {
5390      this.description = castToMarkdown(value); // MarkdownType
5391    } else if (name.equals("useContext")) {
5392      this.getUseContext().add(castToUsageContext(value));
5393    } else if (name.equals("jurisdiction")) {
5394      this.getJurisdiction().add(castToCodeableConcept(value));
5395    } else if (name.equals("purpose")) {
5396      this.purpose = castToMarkdown(value); // MarkdownType
5397    } else if (name.equals("usage")) {
5398      this.usage = castToString(value); // StringType
5399    } else if (name.equals("copyright")) {
5400      this.copyright = castToMarkdown(value); // MarkdownType
5401    } else if (name.equals("approvalDate")) {
5402      this.approvalDate = castToDate(value); // DateType
5403    } else if (name.equals("lastReviewDate")) {
5404      this.lastReviewDate = castToDate(value); // DateType
5405    } else if (name.equals("effectivePeriod")) {
5406      this.effectivePeriod = castToPeriod(value); // Period
5407    } else if (name.equals("topic")) {
5408      this.getTopic().add(castToCodeableConcept(value));
5409    } else if (name.equals("author")) {
5410      this.getAuthor().add(castToContactDetail(value));
5411    } else if (name.equals("editor")) {
5412      this.getEditor().add(castToContactDetail(value));
5413    } else if (name.equals("reviewer")) {
5414      this.getReviewer().add(castToContactDetail(value));
5415    } else if (name.equals("endorser")) {
5416      this.getEndorser().add(castToContactDetail(value));
5417    } else if (name.equals("relatedArtifact")) {
5418      this.getRelatedArtifact().add(castToRelatedArtifact(value));
5419    } else if (name.equals("library")) {
5420      this.getLibrary().add(castToCanonical(value));
5421    } else if (name.equals("kind")) {
5422      value = new ActivityDefinitionKindEnumFactory().fromType(castToCode(value));
5423      this.kind = (Enumeration) value; // Enumeration<ActivityDefinitionKind>
5424    } else if (name.equals("profile")) {
5425      this.profile = castToCanonical(value); // CanonicalType
5426    } else if (name.equals("code")) {
5427      this.code = castToCodeableConcept(value); // CodeableConcept
5428    } else if (name.equals("intent")) {
5429      value = new RequestIntentEnumFactory().fromType(castToCode(value));
5430      this.intent = (Enumeration) value; // Enumeration<RequestIntent>
5431    } else if (name.equals("priority")) {
5432      value = new RequestPriorityEnumFactory().fromType(castToCode(value));
5433      this.priority = (Enumeration) value; // Enumeration<RequestPriority>
5434    } else if (name.equals("doNotPerform")) {
5435      this.doNotPerform = castToBoolean(value); // BooleanType
5436    } else if (name.equals("timing[x]")) {
5437      this.timing = castToType(value); // Type
5438    } else if (name.equals("location")) {
5439      this.location = castToReference(value); // Reference
5440    } else if (name.equals("participant")) {
5441      this.getParticipant().add((ActivityDefinitionParticipantComponent) value);
5442    } else if (name.equals("product[x]")) {
5443      this.product = castToType(value); // Type
5444    } else if (name.equals("quantity")) {
5445      this.quantity = castToQuantity(value); // Quantity
5446    } else if (name.equals("dosage")) {
5447      this.getDosage().add(castToDosage(value));
5448    } else if (name.equals("bodySite")) {
5449      this.getBodySite().add(castToCodeableConcept(value));
5450    } else if (name.equals("specimenRequirement")) {
5451      this.getSpecimenRequirement().add(castToReference(value));
5452    } else if (name.equals("observationRequirement")) {
5453      this.getObservationRequirement().add(castToReference(value));
5454    } else if (name.equals("observationResultRequirement")) {
5455      this.getObservationResultRequirement().add(castToReference(value));
5456    } else if (name.equals("transform")) {
5457      this.transform = castToCanonical(value); // CanonicalType
5458    } else if (name.equals("dynamicValue")) {
5459      this.getDynamicValue().add((ActivityDefinitionDynamicValueComponent) value);
5460    } else
5461      return super.setProperty(name, value);
5462    return value;
5463  }
5464
5465  @Override
5466  public void removeChild(String name, Base value) throws FHIRException {
5467    if (name.equals("url")) {
5468      this.url = null;
5469    } else if (name.equals("identifier")) {
5470      this.getIdentifier().remove(castToIdentifier(value));
5471    } else if (name.equals("version")) {
5472      this.version = null;
5473    } else if (name.equals("name")) {
5474      this.name = null;
5475    } else if (name.equals("title")) {
5476      this.title = null;
5477    } else if (name.equals("subtitle")) {
5478      this.subtitle = null;
5479    } else if (name.equals("status")) {
5480      this.status = null;
5481    } else if (name.equals("experimental")) {
5482      this.experimental = null;
5483    } else if (name.equals("subject[x]")) {
5484      this.subject = null;
5485    } else if (name.equals("date")) {
5486      this.date = null;
5487    } else if (name.equals("publisher")) {
5488      this.publisher = null;
5489    } else if (name.equals("contact")) {
5490      this.getContact().remove(castToContactDetail(value));
5491    } else if (name.equals("description")) {
5492      this.description = null;
5493    } else if (name.equals("useContext")) {
5494      this.getUseContext().remove(castToUsageContext(value));
5495    } else if (name.equals("jurisdiction")) {
5496      this.getJurisdiction().remove(castToCodeableConcept(value));
5497    } else if (name.equals("purpose")) {
5498      this.purpose = null;
5499    } else if (name.equals("usage")) {
5500      this.usage = null;
5501    } else if (name.equals("copyright")) {
5502      this.copyright = null;
5503    } else if (name.equals("approvalDate")) {
5504      this.approvalDate = null;
5505    } else if (name.equals("lastReviewDate")) {
5506      this.lastReviewDate = null;
5507    } else if (name.equals("effectivePeriod")) {
5508      this.effectivePeriod = null;
5509    } else if (name.equals("topic")) {
5510      this.getTopic().remove(castToCodeableConcept(value));
5511    } else if (name.equals("author")) {
5512      this.getAuthor().remove(castToContactDetail(value));
5513    } else if (name.equals("editor")) {
5514      this.getEditor().remove(castToContactDetail(value));
5515    } else if (name.equals("reviewer")) {
5516      this.getReviewer().remove(castToContactDetail(value));
5517    } else if (name.equals("endorser")) {
5518      this.getEndorser().remove(castToContactDetail(value));
5519    } else if (name.equals("relatedArtifact")) {
5520      this.getRelatedArtifact().remove(castToRelatedArtifact(value));
5521    } else if (name.equals("library")) {
5522      this.getLibrary().remove(castToCanonical(value));
5523    } else if (name.equals("kind")) {
5524      this.kind = null;
5525    } else if (name.equals("profile")) {
5526      this.profile = null;
5527    } else if (name.equals("code")) {
5528      this.code = null;
5529    } else if (name.equals("intent")) {
5530      this.intent = null;
5531    } else if (name.equals("priority")) {
5532      this.priority = null;
5533    } else if (name.equals("doNotPerform")) {
5534      this.doNotPerform = null;
5535    } else if (name.equals("timing[x]")) {
5536      this.timing = null;
5537    } else if (name.equals("location")) {
5538      this.location = null;
5539    } else if (name.equals("participant")) {
5540      this.getParticipant().remove((ActivityDefinitionParticipantComponent) value);
5541    } else if (name.equals("product[x]")) {
5542      this.product = null;
5543    } else if (name.equals("quantity")) {
5544      this.quantity = null;
5545    } else if (name.equals("dosage")) {
5546      this.getDosage().remove(castToDosage(value));
5547    } else if (name.equals("bodySite")) {
5548      this.getBodySite().remove(castToCodeableConcept(value));
5549    } else if (name.equals("specimenRequirement")) {
5550      this.getSpecimenRequirement().remove(castToReference(value));
5551    } else if (name.equals("observationRequirement")) {
5552      this.getObservationRequirement().remove(castToReference(value));
5553    } else if (name.equals("observationResultRequirement")) {
5554      this.getObservationResultRequirement().remove(castToReference(value));
5555    } else if (name.equals("transform")) {
5556      this.transform = null;
5557    } else if (name.equals("dynamicValue")) {
5558      this.getDynamicValue().remove((ActivityDefinitionDynamicValueComponent) value);
5559    } else
5560      super.removeChild(name, value);
5561    
5562  }
5563
5564  @Override
5565  public Base makeProperty(int hash, String name) throws FHIRException {
5566    switch (hash) {
5567    case 116079:
5568      return getUrlElement();
5569    case -1618432855:
5570      return addIdentifier();
5571    case 351608024:
5572      return getVersionElement();
5573    case 3373707:
5574      return getNameElement();
5575    case 110371416:
5576      return getTitleElement();
5577    case -2060497896:
5578      return getSubtitleElement();
5579    case -892481550:
5580      return getStatusElement();
5581    case -404562712:
5582      return getExperimentalElement();
5583    case -573640748:
5584      return getSubject();
5585    case -1867885268:
5586      return getSubject();
5587    case 3076014:
5588      return getDateElement();
5589    case 1447404028:
5590      return getPublisherElement();
5591    case 951526432:
5592      return addContact();
5593    case -1724546052:
5594      return getDescriptionElement();
5595    case -669707736:
5596      return addUseContext();
5597    case -507075711:
5598      return addJurisdiction();
5599    case -220463842:
5600      return getPurposeElement();
5601    case 111574433:
5602      return getUsageElement();
5603    case 1522889671:
5604      return getCopyrightElement();
5605    case 223539345:
5606      return getApprovalDateElement();
5607    case -1687512484:
5608      return getLastReviewDateElement();
5609    case -403934648:
5610      return getEffectivePeriod();
5611    case 110546223:
5612      return addTopic();
5613    case -1406328437:
5614      return addAuthor();
5615    case -1307827859:
5616      return addEditor();
5617    case -261190139:
5618      return addReviewer();
5619    case 1740277666:
5620      return addEndorser();
5621    case 666807069:
5622      return addRelatedArtifact();
5623    case 166208699:
5624      return addLibraryElement();
5625    case 3292052:
5626      return getKindElement();
5627    case -309425751:
5628      return getProfileElement();
5629    case 3059181:
5630      return getCode();
5631    case -1183762788:
5632      return getIntentElement();
5633    case -1165461084:
5634      return getPriorityElement();
5635    case -1788508167:
5636      return getDoNotPerformElement();
5637    case 164632566:
5638      return getTiming();
5639    case -873664438:
5640      return getTiming();
5641    case 1901043637:
5642      return getLocation();
5643    case 767422259:
5644      return addParticipant();
5645    case 1753005361:
5646      return getProduct();
5647    case -309474065:
5648      return getProduct();
5649    case -1285004149:
5650      return getQuantity();
5651    case -1326018889:
5652      return addDosage();
5653    case 1702620169:
5654      return addBodySite();
5655    case 1498467355:
5656      return addSpecimenRequirement();
5657    case 362354807:
5658      return addObservationRequirement();
5659    case 395230490:
5660      return addObservationResultRequirement();
5661    case 1052666732:
5662      return getTransformElement();
5663    case 572625010:
5664      return addDynamicValue();
5665    default:
5666      return super.makeProperty(hash, name);
5667    }
5668
5669  }
5670
5671  @Override
5672  public String[] getTypesForProperty(int hash, String name) throws FHIRException {
5673    switch (hash) {
5674    case 116079:
5675      /* url */ return new String[] { "uri" };
5676    case -1618432855:
5677      /* identifier */ return new String[] { "Identifier" };
5678    case 351608024:
5679      /* version */ return new String[] { "string" };
5680    case 3373707:
5681      /* name */ return new String[] { "string" };
5682    case 110371416:
5683      /* title */ return new String[] { "string" };
5684    case -2060497896:
5685      /* subtitle */ return new String[] { "string" };
5686    case -892481550:
5687      /* status */ return new String[] { "code" };
5688    case -404562712:
5689      /* experimental */ return new String[] { "boolean" };
5690    case -1867885268:
5691      /* subject */ return new String[] { "CodeableConcept", "Reference" };
5692    case 3076014:
5693      /* date */ return new String[] { "dateTime" };
5694    case 1447404028:
5695      /* publisher */ return new String[] { "string" };
5696    case 951526432:
5697      /* contact */ return new String[] { "ContactDetail" };
5698    case -1724546052:
5699      /* description */ return new String[] { "markdown" };
5700    case -669707736:
5701      /* useContext */ return new String[] { "UsageContext" };
5702    case -507075711:
5703      /* jurisdiction */ return new String[] { "CodeableConcept" };
5704    case -220463842:
5705      /* purpose */ return new String[] { "markdown" };
5706    case 111574433:
5707      /* usage */ return new String[] { "string" };
5708    case 1522889671:
5709      /* copyright */ return new String[] { "markdown" };
5710    case 223539345:
5711      /* approvalDate */ return new String[] { "date" };
5712    case -1687512484:
5713      /* lastReviewDate */ return new String[] { "date" };
5714    case -403934648:
5715      /* effectivePeriod */ return new String[] { "Period" };
5716    case 110546223:
5717      /* topic */ return new String[] { "CodeableConcept" };
5718    case -1406328437:
5719      /* author */ return new String[] { "ContactDetail" };
5720    case -1307827859:
5721      /* editor */ return new String[] { "ContactDetail" };
5722    case -261190139:
5723      /* reviewer */ return new String[] { "ContactDetail" };
5724    case 1740277666:
5725      /* endorser */ return new String[] { "ContactDetail" };
5726    case 666807069:
5727      /* relatedArtifact */ return new String[] { "RelatedArtifact" };
5728    case 166208699:
5729      /* library */ return new String[] { "canonical" };
5730    case 3292052:
5731      /* kind */ return new String[] { "code" };
5732    case -309425751:
5733      /* profile */ return new String[] { "canonical" };
5734    case 3059181:
5735      /* code */ return new String[] { "CodeableConcept" };
5736    case -1183762788:
5737      /* intent */ return new String[] { "code" };
5738    case -1165461084:
5739      /* priority */ return new String[] { "code" };
5740    case -1788508167:
5741      /* doNotPerform */ return new String[] { "boolean" };
5742    case -873664438:
5743      /* timing */ return new String[] { "Timing", "dateTime", "Age", "Period", "Range", "Duration" };
5744    case 1901043637:
5745      /* location */ return new String[] { "Reference" };
5746    case 767422259:
5747      /* participant */ return new String[] {};
5748    case -309474065:
5749      /* product */ return new String[] { "Reference", "CodeableConcept" };
5750    case -1285004149:
5751      /* quantity */ return new String[] { "SimpleQuantity" };
5752    case -1326018889:
5753      /* dosage */ return new String[] { "Dosage" };
5754    case 1702620169:
5755      /* bodySite */ return new String[] { "CodeableConcept" };
5756    case 1498467355:
5757      /* specimenRequirement */ return new String[] { "Reference" };
5758    case 362354807:
5759      /* observationRequirement */ return new String[] { "Reference" };
5760    case 395230490:
5761      /* observationResultRequirement */ return new String[] { "Reference" };
5762    case 1052666732:
5763      /* transform */ return new String[] { "canonical" };
5764    case 572625010:
5765      /* dynamicValue */ return new String[] {};
5766    default:
5767      return super.getTypesForProperty(hash, name);
5768    }
5769
5770  }
5771
5772  @Override
5773  public Base addChild(String name) throws FHIRException {
5774    if (name.equals("url")) {
5775      throw new FHIRException("Cannot call addChild on a singleton property ActivityDefinition.url");
5776    } else if (name.equals("identifier")) {
5777      return addIdentifier();
5778    } else if (name.equals("version")) {
5779      throw new FHIRException("Cannot call addChild on a singleton property ActivityDefinition.version");
5780    } else if (name.equals("name")) {
5781      throw new FHIRException("Cannot call addChild on a singleton property ActivityDefinition.name");
5782    } else if (name.equals("title")) {
5783      throw new FHIRException("Cannot call addChild on a singleton property ActivityDefinition.title");
5784    } else if (name.equals("subtitle")) {
5785      throw new FHIRException("Cannot call addChild on a singleton property ActivityDefinition.subtitle");
5786    } else if (name.equals("status")) {
5787      throw new FHIRException("Cannot call addChild on a singleton property ActivityDefinition.status");
5788    } else if (name.equals("experimental")) {
5789      throw new FHIRException("Cannot call addChild on a singleton property ActivityDefinition.experimental");
5790    } else if (name.equals("subjectCodeableConcept")) {
5791      this.subject = new CodeableConcept();
5792      return this.subject;
5793    } else if (name.equals("subjectReference")) {
5794      this.subject = new Reference();
5795      return this.subject;
5796    } else if (name.equals("date")) {
5797      throw new FHIRException("Cannot call addChild on a singleton property ActivityDefinition.date");
5798    } else if (name.equals("publisher")) {
5799      throw new FHIRException("Cannot call addChild on a singleton property ActivityDefinition.publisher");
5800    } else if (name.equals("contact")) {
5801      return addContact();
5802    } else if (name.equals("description")) {
5803      throw new FHIRException("Cannot call addChild on a singleton property ActivityDefinition.description");
5804    } else if (name.equals("useContext")) {
5805      return addUseContext();
5806    } else if (name.equals("jurisdiction")) {
5807      return addJurisdiction();
5808    } else if (name.equals("purpose")) {
5809      throw new FHIRException("Cannot call addChild on a singleton property ActivityDefinition.purpose");
5810    } else if (name.equals("usage")) {
5811      throw new FHIRException("Cannot call addChild on a singleton property ActivityDefinition.usage");
5812    } else if (name.equals("copyright")) {
5813      throw new FHIRException("Cannot call addChild on a singleton property ActivityDefinition.copyright");
5814    } else if (name.equals("approvalDate")) {
5815      throw new FHIRException("Cannot call addChild on a singleton property ActivityDefinition.approvalDate");
5816    } else if (name.equals("lastReviewDate")) {
5817      throw new FHIRException("Cannot call addChild on a singleton property ActivityDefinition.lastReviewDate");
5818    } else if (name.equals("effectivePeriod")) {
5819      this.effectivePeriod = new Period();
5820      return this.effectivePeriod;
5821    } else if (name.equals("topic")) {
5822      return addTopic();
5823    } else if (name.equals("author")) {
5824      return addAuthor();
5825    } else if (name.equals("editor")) {
5826      return addEditor();
5827    } else if (name.equals("reviewer")) {
5828      return addReviewer();
5829    } else if (name.equals("endorser")) {
5830      return addEndorser();
5831    } else if (name.equals("relatedArtifact")) {
5832      return addRelatedArtifact();
5833    } else if (name.equals("library")) {
5834      throw new FHIRException("Cannot call addChild on a singleton property ActivityDefinition.library");
5835    } else if (name.equals("kind")) {
5836      throw new FHIRException("Cannot call addChild on a singleton property ActivityDefinition.kind");
5837    } else if (name.equals("profile")) {
5838      throw new FHIRException("Cannot call addChild on a singleton property ActivityDefinition.profile");
5839    } else if (name.equals("code")) {
5840      this.code = new CodeableConcept();
5841      return this.code;
5842    } else if (name.equals("intent")) {
5843      throw new FHIRException("Cannot call addChild on a singleton property ActivityDefinition.intent");
5844    } else if (name.equals("priority")) {
5845      throw new FHIRException("Cannot call addChild on a singleton property ActivityDefinition.priority");
5846    } else if (name.equals("doNotPerform")) {
5847      throw new FHIRException("Cannot call addChild on a singleton property ActivityDefinition.doNotPerform");
5848    } else if (name.equals("timingTiming")) {
5849      this.timing = new Timing();
5850      return this.timing;
5851    } else if (name.equals("timingDateTime")) {
5852      this.timing = new DateTimeType();
5853      return this.timing;
5854    } else if (name.equals("timingAge")) {
5855      this.timing = new Age();
5856      return this.timing;
5857    } else if (name.equals("timingPeriod")) {
5858      this.timing = new Period();
5859      return this.timing;
5860    } else if (name.equals("timingRange")) {
5861      this.timing = new Range();
5862      return this.timing;
5863    } else if (name.equals("timingDuration")) {
5864      this.timing = new Duration();
5865      return this.timing;
5866    } else if (name.equals("location")) {
5867      this.location = new Reference();
5868      return this.location;
5869    } else if (name.equals("participant")) {
5870      return addParticipant();
5871    } else if (name.equals("productReference")) {
5872      this.product = new Reference();
5873      return this.product;
5874    } else if (name.equals("productCodeableConcept")) {
5875      this.product = new CodeableConcept();
5876      return this.product;
5877    } else if (name.equals("quantity")) {
5878      this.quantity = new Quantity();
5879      return this.quantity;
5880    } else if (name.equals("dosage")) {
5881      return addDosage();
5882    } else if (name.equals("bodySite")) {
5883      return addBodySite();
5884    } else if (name.equals("specimenRequirement")) {
5885      return addSpecimenRequirement();
5886    } else if (name.equals("observationRequirement")) {
5887      return addObservationRequirement();
5888    } else if (name.equals("observationResultRequirement")) {
5889      return addObservationResultRequirement();
5890    } else if (name.equals("transform")) {
5891      throw new FHIRException("Cannot call addChild on a singleton property ActivityDefinition.transform");
5892    } else if (name.equals("dynamicValue")) {
5893      return addDynamicValue();
5894    } else
5895      return super.addChild(name);
5896  }
5897
5898  public String fhirType() {
5899    return "ActivityDefinition";
5900
5901  }
5902
5903  public ActivityDefinition copy() {
5904    ActivityDefinition dst = new ActivityDefinition();
5905    copyValues(dst);
5906    return dst;
5907  }
5908
5909  public void copyValues(ActivityDefinition dst) {
5910    super.copyValues(dst);
5911    dst.url = url == null ? null : url.copy();
5912    if (identifier != null) {
5913      dst.identifier = new ArrayList<Identifier>();
5914      for (Identifier i : identifier)
5915        dst.identifier.add(i.copy());
5916    }
5917    ;
5918    dst.version = version == null ? null : version.copy();
5919    dst.name = name == null ? null : name.copy();
5920    dst.title = title == null ? null : title.copy();
5921    dst.subtitle = subtitle == null ? null : subtitle.copy();
5922    dst.status = status == null ? null : status.copy();
5923    dst.experimental = experimental == null ? null : experimental.copy();
5924    dst.subject = subject == null ? null : subject.copy();
5925    dst.date = date == null ? null : date.copy();
5926    dst.publisher = publisher == null ? null : publisher.copy();
5927    if (contact != null) {
5928      dst.contact = new ArrayList<ContactDetail>();
5929      for (ContactDetail i : contact)
5930        dst.contact.add(i.copy());
5931    }
5932    ;
5933    dst.description = description == null ? null : description.copy();
5934    if (useContext != null) {
5935      dst.useContext = new ArrayList<UsageContext>();
5936      for (UsageContext i : useContext)
5937        dst.useContext.add(i.copy());
5938    }
5939    ;
5940    if (jurisdiction != null) {
5941      dst.jurisdiction = new ArrayList<CodeableConcept>();
5942      for (CodeableConcept i : jurisdiction)
5943        dst.jurisdiction.add(i.copy());
5944    }
5945    ;
5946    dst.purpose = purpose == null ? null : purpose.copy();
5947    dst.usage = usage == null ? null : usage.copy();
5948    dst.copyright = copyright == null ? null : copyright.copy();
5949    dst.approvalDate = approvalDate == null ? null : approvalDate.copy();
5950    dst.lastReviewDate = lastReviewDate == null ? null : lastReviewDate.copy();
5951    dst.effectivePeriod = effectivePeriod == null ? null : effectivePeriod.copy();
5952    if (topic != null) {
5953      dst.topic = new ArrayList<CodeableConcept>();
5954      for (CodeableConcept i : topic)
5955        dst.topic.add(i.copy());
5956    }
5957    ;
5958    if (author != null) {
5959      dst.author = new ArrayList<ContactDetail>();
5960      for (ContactDetail i : author)
5961        dst.author.add(i.copy());
5962    }
5963    ;
5964    if (editor != null) {
5965      dst.editor = new ArrayList<ContactDetail>();
5966      for (ContactDetail i : editor)
5967        dst.editor.add(i.copy());
5968    }
5969    ;
5970    if (reviewer != null) {
5971      dst.reviewer = new ArrayList<ContactDetail>();
5972      for (ContactDetail i : reviewer)
5973        dst.reviewer.add(i.copy());
5974    }
5975    ;
5976    if (endorser != null) {
5977      dst.endorser = new ArrayList<ContactDetail>();
5978      for (ContactDetail i : endorser)
5979        dst.endorser.add(i.copy());
5980    }
5981    ;
5982    if (relatedArtifact != null) {
5983      dst.relatedArtifact = new ArrayList<RelatedArtifact>();
5984      for (RelatedArtifact i : relatedArtifact)
5985        dst.relatedArtifact.add(i.copy());
5986    }
5987    ;
5988    if (library != null) {
5989      dst.library = new ArrayList<CanonicalType>();
5990      for (CanonicalType i : library)
5991        dst.library.add(i.copy());
5992    }
5993    ;
5994    dst.kind = kind == null ? null : kind.copy();
5995    dst.profile = profile == null ? null : profile.copy();
5996    dst.code = code == null ? null : code.copy();
5997    dst.intent = intent == null ? null : intent.copy();
5998    dst.priority = priority == null ? null : priority.copy();
5999    dst.doNotPerform = doNotPerform == null ? null : doNotPerform.copy();
6000    dst.timing = timing == null ? null : timing.copy();
6001    dst.location = location == null ? null : location.copy();
6002    if (participant != null) {
6003      dst.participant = new ArrayList<ActivityDefinitionParticipantComponent>();
6004      for (ActivityDefinitionParticipantComponent i : participant)
6005        dst.participant.add(i.copy());
6006    }
6007    ;
6008    dst.product = product == null ? null : product.copy();
6009    dst.quantity = quantity == null ? null : quantity.copy();
6010    if (dosage != null) {
6011      dst.dosage = new ArrayList<Dosage>();
6012      for (Dosage i : dosage)
6013        dst.dosage.add(i.copy());
6014    }
6015    ;
6016    if (bodySite != null) {
6017      dst.bodySite = new ArrayList<CodeableConcept>();
6018      for (CodeableConcept i : bodySite)
6019        dst.bodySite.add(i.copy());
6020    }
6021    ;
6022    if (specimenRequirement != null) {
6023      dst.specimenRequirement = new ArrayList<Reference>();
6024      for (Reference i : specimenRequirement)
6025        dst.specimenRequirement.add(i.copy());
6026    }
6027    ;
6028    if (observationRequirement != null) {
6029      dst.observationRequirement = new ArrayList<Reference>();
6030      for (Reference i : observationRequirement)
6031        dst.observationRequirement.add(i.copy());
6032    }
6033    ;
6034    if (observationResultRequirement != null) {
6035      dst.observationResultRequirement = new ArrayList<Reference>();
6036      for (Reference i : observationResultRequirement)
6037        dst.observationResultRequirement.add(i.copy());
6038    }
6039    ;
6040    dst.transform = transform == null ? null : transform.copy();
6041    if (dynamicValue != null) {
6042      dst.dynamicValue = new ArrayList<ActivityDefinitionDynamicValueComponent>();
6043      for (ActivityDefinitionDynamicValueComponent i : dynamicValue)
6044        dst.dynamicValue.add(i.copy());
6045    }
6046    ;
6047  }
6048
6049  protected ActivityDefinition typedCopy() {
6050    return copy();
6051  }
6052
6053  @Override
6054  public boolean equalsDeep(Base other_) {
6055    if (!super.equalsDeep(other_))
6056      return false;
6057    if (!(other_ instanceof ActivityDefinition))
6058      return false;
6059    ActivityDefinition o = (ActivityDefinition) other_;
6060    return compareDeep(identifier, o.identifier, true) && compareDeep(subtitle, o.subtitle, true)
6061        && compareDeep(subject, o.subject, true) && compareDeep(purpose, o.purpose, true)
6062        && compareDeep(usage, o.usage, true) && compareDeep(copyright, o.copyright, true)
6063        && compareDeep(approvalDate, o.approvalDate, true) && compareDeep(lastReviewDate, o.lastReviewDate, true)
6064        && compareDeep(effectivePeriod, o.effectivePeriod, true) && compareDeep(topic, o.topic, true)
6065        && compareDeep(author, o.author, true) && compareDeep(editor, o.editor, true)
6066        && compareDeep(reviewer, o.reviewer, true) && compareDeep(endorser, o.endorser, true)
6067        && compareDeep(relatedArtifact, o.relatedArtifact, true) && compareDeep(library, o.library, true)
6068        && compareDeep(kind, o.kind, true) && compareDeep(profile, o.profile, true) && compareDeep(code, o.code, true)
6069        && compareDeep(intent, o.intent, true) && compareDeep(priority, o.priority, true)
6070        && compareDeep(doNotPerform, o.doNotPerform, true) && compareDeep(timing, o.timing, true)
6071        && compareDeep(location, o.location, true) && compareDeep(participant, o.participant, true)
6072        && compareDeep(product, o.product, true) && compareDeep(quantity, o.quantity, true)
6073        && compareDeep(dosage, o.dosage, true) && compareDeep(bodySite, o.bodySite, true)
6074        && compareDeep(specimenRequirement, o.specimenRequirement, true)
6075        && compareDeep(observationRequirement, o.observationRequirement, true)
6076        && compareDeep(observationResultRequirement, o.observationResultRequirement, true)
6077        && compareDeep(transform, o.transform, true) && compareDeep(dynamicValue, o.dynamicValue, true);
6078  }
6079
6080  @Override
6081  public boolean equalsShallow(Base other_) {
6082    if (!super.equalsShallow(other_))
6083      return false;
6084    if (!(other_ instanceof ActivityDefinition))
6085      return false;
6086    ActivityDefinition o = (ActivityDefinition) other_;
6087    return compareValues(subtitle, o.subtitle, true) && compareValues(purpose, o.purpose, true)
6088        && compareValues(usage, o.usage, true) && compareValues(copyright, o.copyright, true)
6089        && compareValues(approvalDate, o.approvalDate, true) && compareValues(lastReviewDate, o.lastReviewDate, true)
6090        && compareValues(kind, o.kind, true) && compareValues(intent, o.intent, true)
6091        && compareValues(priority, o.priority, true) && compareValues(doNotPerform, o.doNotPerform, true);
6092  }
6093
6094  public boolean isEmpty() {
6095    return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, subtitle, subject, purpose, usage,
6096        copyright, approvalDate, lastReviewDate, effectivePeriod, topic, author, editor, reviewer, endorser,
6097        relatedArtifact, library, kind, profile, code, intent, priority, doNotPerform, timing, location, participant,
6098        product, quantity, dosage, bodySite, specimenRequirement, observationRequirement, observationResultRequirement,
6099        transform, dynamicValue);
6100  }
6101
6102  @Override
6103  public ResourceType getResourceType() {
6104    return ResourceType.ActivityDefinition;
6105  }
6106
6107  /**
6108   * Search parameter: <b>date</b>
6109   * <p>
6110   * Description: <b>The activity definition publication date</b><br>
6111   * Type: <b>date</b><br>
6112   * Path: <b>ActivityDefinition.date</b><br>
6113   * </p>
6114   */
6115  @SearchParamDefinition(name = "date", path = "ActivityDefinition.date", description = "The activity definition publication date", type = "date")
6116  public static final String SP_DATE = "date";
6117  /**
6118   * <b>Fluent Client</b> search parameter constant for <b>date</b>
6119   * <p>
6120   * Description: <b>The activity definition publication date</b><br>
6121   * Type: <b>date</b><br>
6122   * Path: <b>ActivityDefinition.date</b><br>
6123   * </p>
6124   */
6125  public static final ca.uhn.fhir.rest.gclient.DateClientParam DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(
6126      SP_DATE);
6127
6128  /**
6129   * Search parameter: <b>identifier</b>
6130   * <p>
6131   * Description: <b>External identifier for the activity definition</b><br>
6132   * Type: <b>token</b><br>
6133   * Path: <b>ActivityDefinition.identifier</b><br>
6134   * </p>
6135   */
6136  @SearchParamDefinition(name = "identifier", path = "ActivityDefinition.identifier", description = "External identifier for the activity definition", type = "token")
6137  public static final String SP_IDENTIFIER = "identifier";
6138  /**
6139   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
6140   * <p>
6141   * Description: <b>External identifier for the activity definition</b><br>
6142   * Type: <b>token</b><br>
6143   * Path: <b>ActivityDefinition.identifier</b><br>
6144   * </p>
6145   */
6146  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(
6147      SP_IDENTIFIER);
6148
6149  /**
6150   * Search parameter: <b>successor</b>
6151   * <p>
6152   * Description: <b>What resource is being referenced</b><br>
6153   * Type: <b>reference</b><br>
6154   * Path: <b>ActivityDefinition.relatedArtifact.resource</b><br>
6155   * </p>
6156   */
6157  @SearchParamDefinition(name = "successor", path = "ActivityDefinition.relatedArtifact.where(type='successor').resource", description = "What resource is being referenced", type = "reference")
6158  public static final String SP_SUCCESSOR = "successor";
6159  /**
6160   * <b>Fluent Client</b> search parameter constant for <b>successor</b>
6161   * <p>
6162   * Description: <b>What resource is being referenced</b><br>
6163   * Type: <b>reference</b><br>
6164   * Path: <b>ActivityDefinition.relatedArtifact.resource</b><br>
6165   * </p>
6166   */
6167  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SUCCESSOR = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(
6168      SP_SUCCESSOR);
6169
6170  /**
6171   * Constant for fluent queries to be used to add include statements. Specifies
6172   * the path value of "<b>ActivityDefinition:successor</b>".
6173   */
6174  public static final ca.uhn.fhir.model.api.Include INCLUDE_SUCCESSOR = new ca.uhn.fhir.model.api.Include(
6175      "ActivityDefinition:successor").toLocked();
6176
6177  /**
6178   * Search parameter: <b>context-type-value</b>
6179   * <p>
6180   * Description: <b>A use context type and value assigned to the activity
6181   * definition</b><br>
6182   * Type: <b>composite</b><br>
6183   * Path: <b></b><br>
6184   * </p>
6185   */
6186  @SearchParamDefinition(name = "context-type-value", path = "ActivityDefinition.useContext", description = "A use context type and value assigned to the activity definition", type = "composite", compositeOf = {
6187      "context-type", "context" })
6188  public static final String SP_CONTEXT_TYPE_VALUE = "context-type-value";
6189  /**
6190   * <b>Fluent Client</b> search parameter constant for <b>context-type-value</b>
6191   * <p>
6192   * Description: <b>A use context type and value assigned to the activity
6193   * definition</b><br>
6194   * Type: <b>composite</b><br>
6195   * Path: <b></b><br>
6196   * </p>
6197   */
6198  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>(
6199      SP_CONTEXT_TYPE_VALUE);
6200
6201  /**
6202   * Search parameter: <b>jurisdiction</b>
6203   * <p>
6204   * Description: <b>Intended jurisdiction for the activity definition</b><br>
6205   * Type: <b>token</b><br>
6206   * Path: <b>ActivityDefinition.jurisdiction</b><br>
6207   * </p>
6208   */
6209  @SearchParamDefinition(name = "jurisdiction", path = "ActivityDefinition.jurisdiction", description = "Intended jurisdiction for the activity definition", type = "token")
6210  public static final String SP_JURISDICTION = "jurisdiction";
6211  /**
6212   * <b>Fluent Client</b> search parameter constant for <b>jurisdiction</b>
6213   * <p>
6214   * Description: <b>Intended jurisdiction for the activity definition</b><br>
6215   * Type: <b>token</b><br>
6216   * Path: <b>ActivityDefinition.jurisdiction</b><br>
6217   * </p>
6218   */
6219  public static final ca.uhn.fhir.rest.gclient.TokenClientParam JURISDICTION = new ca.uhn.fhir.rest.gclient.TokenClientParam(
6220      SP_JURISDICTION);
6221
6222  /**
6223   * Search parameter: <b>description</b>
6224   * <p>
6225   * Description: <b>The description of the activity definition</b><br>
6226   * Type: <b>string</b><br>
6227   * Path: <b>ActivityDefinition.description</b><br>
6228   * </p>
6229   */
6230  @SearchParamDefinition(name = "description", path = "ActivityDefinition.description", description = "The description of the activity definition", type = "string")
6231  public static final String SP_DESCRIPTION = "description";
6232  /**
6233   * <b>Fluent Client</b> search parameter constant for <b>description</b>
6234   * <p>
6235   * Description: <b>The description of the activity definition</b><br>
6236   * Type: <b>string</b><br>
6237   * Path: <b>ActivityDefinition.description</b><br>
6238   * </p>
6239   */
6240  public static final ca.uhn.fhir.rest.gclient.StringClientParam DESCRIPTION = new ca.uhn.fhir.rest.gclient.StringClientParam(
6241      SP_DESCRIPTION);
6242
6243  /**
6244   * Search parameter: <b>derived-from</b>
6245   * <p>
6246   * Description: <b>What resource is being referenced</b><br>
6247   * Type: <b>reference</b><br>
6248   * Path: <b>ActivityDefinition.relatedArtifact.resource</b><br>
6249   * </p>
6250   */
6251  @SearchParamDefinition(name = "derived-from", path = "ActivityDefinition.relatedArtifact.where(type='derived-from').resource", description = "What resource is being referenced", type = "reference")
6252  public static final String SP_DERIVED_FROM = "derived-from";
6253  /**
6254   * <b>Fluent Client</b> search parameter constant for <b>derived-from</b>
6255   * <p>
6256   * Description: <b>What resource is being referenced</b><br>
6257   * Type: <b>reference</b><br>
6258   * Path: <b>ActivityDefinition.relatedArtifact.resource</b><br>
6259   * </p>
6260   */
6261  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam DERIVED_FROM = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(
6262      SP_DERIVED_FROM);
6263
6264  /**
6265   * Constant for fluent queries to be used to add include statements. Specifies
6266   * the path value of "<b>ActivityDefinition:derived-from</b>".
6267   */
6268  public static final ca.uhn.fhir.model.api.Include INCLUDE_DERIVED_FROM = new ca.uhn.fhir.model.api.Include(
6269      "ActivityDefinition:derived-from").toLocked();
6270
6271  /**
6272   * Search parameter: <b>context-type</b>
6273   * <p>
6274   * Description: <b>A type of use context assigned to the activity
6275   * definition</b><br>
6276   * Type: <b>token</b><br>
6277   * Path: <b>ActivityDefinition.useContext.code</b><br>
6278   * </p>
6279   */
6280  @SearchParamDefinition(name = "context-type", path = "ActivityDefinition.useContext.code", description = "A type of use context assigned to the activity definition", type = "token")
6281  public static final String SP_CONTEXT_TYPE = "context-type";
6282  /**
6283   * <b>Fluent Client</b> search parameter constant for <b>context-type</b>
6284   * <p>
6285   * Description: <b>A type of use context assigned to the activity
6286   * definition</b><br>
6287   * Type: <b>token</b><br>
6288   * Path: <b>ActivityDefinition.useContext.code</b><br>
6289   * </p>
6290   */
6291  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT_TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(
6292      SP_CONTEXT_TYPE);
6293
6294  /**
6295   * Search parameter: <b>predecessor</b>
6296   * <p>
6297   * Description: <b>What resource is being referenced</b><br>
6298   * Type: <b>reference</b><br>
6299   * Path: <b>ActivityDefinition.relatedArtifact.resource</b><br>
6300   * </p>
6301   */
6302  @SearchParamDefinition(name = "predecessor", path = "ActivityDefinition.relatedArtifact.where(type='predecessor').resource", description = "What resource is being referenced", type = "reference")
6303  public static final String SP_PREDECESSOR = "predecessor";
6304  /**
6305   * <b>Fluent Client</b> search parameter constant for <b>predecessor</b>
6306   * <p>
6307   * Description: <b>What resource is being referenced</b><br>
6308   * Type: <b>reference</b><br>
6309   * Path: <b>ActivityDefinition.relatedArtifact.resource</b><br>
6310   * </p>
6311   */
6312  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PREDECESSOR = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(
6313      SP_PREDECESSOR);
6314
6315  /**
6316   * Constant for fluent queries to be used to add include statements. Specifies
6317   * the path value of "<b>ActivityDefinition:predecessor</b>".
6318   */
6319  public static final ca.uhn.fhir.model.api.Include INCLUDE_PREDECESSOR = new ca.uhn.fhir.model.api.Include(
6320      "ActivityDefinition:predecessor").toLocked();
6321
6322  /**
6323   * Search parameter: <b>title</b>
6324   * <p>
6325   * Description: <b>The human-friendly name of the activity definition</b><br>
6326   * Type: <b>string</b><br>
6327   * Path: <b>ActivityDefinition.title</b><br>
6328   * </p>
6329   */
6330  @SearchParamDefinition(name = "title", path = "ActivityDefinition.title", description = "The human-friendly name of the activity definition", type = "string")
6331  public static final String SP_TITLE = "title";
6332  /**
6333   * <b>Fluent Client</b> search parameter constant for <b>title</b>
6334   * <p>
6335   * Description: <b>The human-friendly name of the activity definition</b><br>
6336   * Type: <b>string</b><br>
6337   * Path: <b>ActivityDefinition.title</b><br>
6338   * </p>
6339   */
6340  public static final ca.uhn.fhir.rest.gclient.StringClientParam TITLE = new ca.uhn.fhir.rest.gclient.StringClientParam(
6341      SP_TITLE);
6342
6343  /**
6344   * Search parameter: <b>composed-of</b>
6345   * <p>
6346   * Description: <b>What resource is being referenced</b><br>
6347   * Type: <b>reference</b><br>
6348   * Path: <b>ActivityDefinition.relatedArtifact.resource</b><br>
6349   * </p>
6350   */
6351  @SearchParamDefinition(name = "composed-of", path = "ActivityDefinition.relatedArtifact.where(type='composed-of').resource", description = "What resource is being referenced", type = "reference")
6352  public static final String SP_COMPOSED_OF = "composed-of";
6353  /**
6354   * <b>Fluent Client</b> search parameter constant for <b>composed-of</b>
6355   * <p>
6356   * Description: <b>What resource is being referenced</b><br>
6357   * Type: <b>reference</b><br>
6358   * Path: <b>ActivityDefinition.relatedArtifact.resource</b><br>
6359   * </p>
6360   */
6361  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam COMPOSED_OF = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(
6362      SP_COMPOSED_OF);
6363
6364  /**
6365   * Constant for fluent queries to be used to add include statements. Specifies
6366   * the path value of "<b>ActivityDefinition:composed-of</b>".
6367   */
6368  public static final ca.uhn.fhir.model.api.Include INCLUDE_COMPOSED_OF = new ca.uhn.fhir.model.api.Include(
6369      "ActivityDefinition:composed-of").toLocked();
6370
6371  /**
6372   * Search parameter: <b>version</b>
6373   * <p>
6374   * Description: <b>The business version of the activity definition</b><br>
6375   * Type: <b>token</b><br>
6376   * Path: <b>ActivityDefinition.version</b><br>
6377   * </p>
6378   */
6379  @SearchParamDefinition(name = "version", path = "ActivityDefinition.version", description = "The business version of the activity definition", type = "token")
6380  public static final String SP_VERSION = "version";
6381  /**
6382   * <b>Fluent Client</b> search parameter constant for <b>version</b>
6383   * <p>
6384   * Description: <b>The business version of the activity definition</b><br>
6385   * Type: <b>token</b><br>
6386   * Path: <b>ActivityDefinition.version</b><br>
6387   * </p>
6388   */
6389  public static final ca.uhn.fhir.rest.gclient.TokenClientParam VERSION = new ca.uhn.fhir.rest.gclient.TokenClientParam(
6390      SP_VERSION);
6391
6392  /**
6393   * Search parameter: <b>url</b>
6394   * <p>
6395   * Description: <b>The uri that identifies the activity definition</b><br>
6396   * Type: <b>uri</b><br>
6397   * Path: <b>ActivityDefinition.url</b><br>
6398   * </p>
6399   */
6400  @SearchParamDefinition(name = "url", path = "ActivityDefinition.url", description = "The uri that identifies the activity definition", type = "uri")
6401  public static final String SP_URL = "url";
6402  /**
6403   * <b>Fluent Client</b> search parameter constant for <b>url</b>
6404   * <p>
6405   * Description: <b>The uri that identifies the activity definition</b><br>
6406   * Type: <b>uri</b><br>
6407   * Path: <b>ActivityDefinition.url</b><br>
6408   * </p>
6409   */
6410  public static final ca.uhn.fhir.rest.gclient.UriClientParam URL = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_URL);
6411
6412  /**
6413   * Search parameter: <b>context-quantity</b>
6414   * <p>
6415   * Description: <b>A quantity- or range-valued use context assigned to the
6416   * activity definition</b><br>
6417   * Type: <b>quantity</b><br>
6418   * Path: <b>ActivityDefinition.useContext.valueQuantity,
6419   * ActivityDefinition.useContext.valueRange</b><br>
6420   * </p>
6421   */
6422  @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")
6423  public static final String SP_CONTEXT_QUANTITY = "context-quantity";
6424  /**
6425   * <b>Fluent Client</b> search parameter constant for <b>context-quantity</b>
6426   * <p>
6427   * Description: <b>A quantity- or range-valued use context assigned to the
6428   * activity definition</b><br>
6429   * Type: <b>quantity</b><br>
6430   * Path: <b>ActivityDefinition.useContext.valueQuantity,
6431   * ActivityDefinition.useContext.valueRange</b><br>
6432   * </p>
6433   */
6434  public static final ca.uhn.fhir.rest.gclient.QuantityClientParam CONTEXT_QUANTITY = new ca.uhn.fhir.rest.gclient.QuantityClientParam(
6435      SP_CONTEXT_QUANTITY);
6436
6437  /**
6438   * Search parameter: <b>effective</b>
6439   * <p>
6440   * Description: <b>The time during which the activity definition is intended to
6441   * be in use</b><br>
6442   * Type: <b>date</b><br>
6443   * Path: <b>ActivityDefinition.effectivePeriod</b><br>
6444   * </p>
6445   */
6446  @SearchParamDefinition(name = "effective", path = "ActivityDefinition.effectivePeriod", description = "The time during which the activity definition is intended to be in use", type = "date")
6447  public static final String SP_EFFECTIVE = "effective";
6448  /**
6449   * <b>Fluent Client</b> search parameter constant for <b>effective</b>
6450   * <p>
6451   * Description: <b>The time during which the activity definition is intended to
6452   * be in use</b><br>
6453   * Type: <b>date</b><br>
6454   * Path: <b>ActivityDefinition.effectivePeriod</b><br>
6455   * </p>
6456   */
6457  public static final ca.uhn.fhir.rest.gclient.DateClientParam EFFECTIVE = new ca.uhn.fhir.rest.gclient.DateClientParam(
6458      SP_EFFECTIVE);
6459
6460  /**
6461   * Search parameter: <b>depends-on</b>
6462   * <p>
6463   * Description: <b>What resource is being referenced</b><br>
6464   * Type: <b>reference</b><br>
6465   * Path: <b>ActivityDefinition.relatedArtifact.resource,
6466   * ActivityDefinition.library</b><br>
6467   * </p>
6468   */
6469  @SearchParamDefinition(name = "depends-on", path = "ActivityDefinition.relatedArtifact.where(type='depends-on').resource | ActivityDefinition.library", description = "What resource is being referenced", type = "reference")
6470  public static final String SP_DEPENDS_ON = "depends-on";
6471  /**
6472   * <b>Fluent Client</b> search parameter constant for <b>depends-on</b>
6473   * <p>
6474   * Description: <b>What resource is being referenced</b><br>
6475   * Type: <b>reference</b><br>
6476   * Path: <b>ActivityDefinition.relatedArtifact.resource,
6477   * ActivityDefinition.library</b><br>
6478   * </p>
6479   */
6480  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam DEPENDS_ON = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(
6481      SP_DEPENDS_ON);
6482
6483  /**
6484   * Constant for fluent queries to be used to add include statements. Specifies
6485   * the path value of "<b>ActivityDefinition:depends-on</b>".
6486   */
6487  public static final ca.uhn.fhir.model.api.Include INCLUDE_DEPENDS_ON = new ca.uhn.fhir.model.api.Include(
6488      "ActivityDefinition:depends-on").toLocked();
6489
6490  /**
6491   * Search parameter: <b>name</b>
6492   * <p>
6493   * Description: <b>Computationally friendly name of the activity
6494   * definition</b><br>
6495   * Type: <b>string</b><br>
6496   * Path: <b>ActivityDefinition.name</b><br>
6497   * </p>
6498   */
6499  @SearchParamDefinition(name = "name", path = "ActivityDefinition.name", description = "Computationally friendly name of the activity definition", type = "string")
6500  public static final String SP_NAME = "name";
6501  /**
6502   * <b>Fluent Client</b> search parameter constant for <b>name</b>
6503   * <p>
6504   * Description: <b>Computationally friendly name of the activity
6505   * definition</b><br>
6506   * Type: <b>string</b><br>
6507   * Path: <b>ActivityDefinition.name</b><br>
6508   * </p>
6509   */
6510  public static final ca.uhn.fhir.rest.gclient.StringClientParam NAME = new ca.uhn.fhir.rest.gclient.StringClientParam(
6511      SP_NAME);
6512
6513  /**
6514   * Search parameter: <b>context</b>
6515   * <p>
6516   * Description: <b>A use context assigned to the activity definition</b><br>
6517   * Type: <b>token</b><br>
6518   * Path: <b>ActivityDefinition.useContext.valueCodeableConcept</b><br>
6519   * </p>
6520   */
6521  @SearchParamDefinition(name = "context", path = "(ActivityDefinition.useContext.value as CodeableConcept)", description = "A use context assigned to the activity definition", type = "token")
6522  public static final String SP_CONTEXT = "context";
6523  /**
6524   * <b>Fluent Client</b> search parameter constant for <b>context</b>
6525   * <p>
6526   * Description: <b>A use context assigned to the activity definition</b><br>
6527   * Type: <b>token</b><br>
6528   * Path: <b>ActivityDefinition.useContext.valueCodeableConcept</b><br>
6529   * </p>
6530   */
6531  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT = new ca.uhn.fhir.rest.gclient.TokenClientParam(
6532      SP_CONTEXT);
6533
6534  /**
6535   * Search parameter: <b>publisher</b>
6536   * <p>
6537   * Description: <b>Name of the publisher of the activity definition</b><br>
6538   * Type: <b>string</b><br>
6539   * Path: <b>ActivityDefinition.publisher</b><br>
6540   * </p>
6541   */
6542  @SearchParamDefinition(name = "publisher", path = "ActivityDefinition.publisher", description = "Name of the publisher of the activity definition", type = "string")
6543  public static final String SP_PUBLISHER = "publisher";
6544  /**
6545   * <b>Fluent Client</b> search parameter constant for <b>publisher</b>
6546   * <p>
6547   * Description: <b>Name of the publisher of the activity definition</b><br>
6548   * Type: <b>string</b><br>
6549   * Path: <b>ActivityDefinition.publisher</b><br>
6550   * </p>
6551   */
6552  public static final ca.uhn.fhir.rest.gclient.StringClientParam PUBLISHER = new ca.uhn.fhir.rest.gclient.StringClientParam(
6553      SP_PUBLISHER);
6554
6555  /**
6556   * Search parameter: <b>topic</b>
6557   * <p>
6558   * Description: <b>Topics associated with the module</b><br>
6559   * Type: <b>token</b><br>
6560   * Path: <b>ActivityDefinition.topic</b><br>
6561   * </p>
6562   */
6563  @SearchParamDefinition(name = "topic", path = "ActivityDefinition.topic", description = "Topics associated with the module", type = "token")
6564  public static final String SP_TOPIC = "topic";
6565  /**
6566   * <b>Fluent Client</b> search parameter constant for <b>topic</b>
6567   * <p>
6568   * Description: <b>Topics associated with the module</b><br>
6569   * Type: <b>token</b><br>
6570   * Path: <b>ActivityDefinition.topic</b><br>
6571   * </p>
6572   */
6573  public static final ca.uhn.fhir.rest.gclient.TokenClientParam TOPIC = new ca.uhn.fhir.rest.gclient.TokenClientParam(
6574      SP_TOPIC);
6575
6576  /**
6577   * Search parameter: <b>context-type-quantity</b>
6578   * <p>
6579   * Description: <b>A use context type and quantity- or range-based value
6580   * assigned to the activity definition</b><br>
6581   * Type: <b>composite</b><br>
6582   * Path: <b></b><br>
6583   * </p>
6584   */
6585  @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 = {
6586      "context-type", "context-quantity" })
6587  public static final String SP_CONTEXT_TYPE_QUANTITY = "context-type-quantity";
6588  /**
6589   * <b>Fluent Client</b> search parameter constant for
6590   * <b>context-type-quantity</b>
6591   * <p>
6592   * Description: <b>A use context type and quantity- or range-based value
6593   * assigned to the activity definition</b><br>
6594   * Type: <b>composite</b><br>
6595   * Path: <b></b><br>
6596   * </p>
6597   */
6598  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>(
6599      SP_CONTEXT_TYPE_QUANTITY);
6600
6601  /**
6602   * Search parameter: <b>status</b>
6603   * <p>
6604   * Description: <b>The current status of the activity definition</b><br>
6605   * Type: <b>token</b><br>
6606   * Path: <b>ActivityDefinition.status</b><br>
6607   * </p>
6608   */
6609  @SearchParamDefinition(name = "status", path = "ActivityDefinition.status", description = "The current status of the activity definition", type = "token")
6610  public static final String SP_STATUS = "status";
6611  /**
6612   * <b>Fluent Client</b> search parameter constant for <b>status</b>
6613   * <p>
6614   * Description: <b>The current status of the activity definition</b><br>
6615   * Type: <b>token</b><br>
6616   * Path: <b>ActivityDefinition.status</b><br>
6617   * </p>
6618   */
6619  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(
6620      SP_STATUS);
6621
6622}