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