001package org.hl7.fhir.r5.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 Thu, Mar 23, 2023 19:59+1100 for FHIR v5.0.0
033
034import java.util.ArrayList;
035import java.util.Date;
036import java.util.List;
037import org.hl7.fhir.utilities.Utilities;
038import org.hl7.fhir.r5.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 * Describes a stream of resource state changes identified by trigger criteria and annotated with labels useful to filter projections from this topic.
052 */
053@ResourceDef(name="SubscriptionTopic", profile="http://hl7.org/fhir/StructureDefinition/SubscriptionTopic")
054public class SubscriptionTopic extends CanonicalResource {
055
056    public enum CriteriaNotExistsBehavior {
057        /**
058         * The requested conditional statement will pass if a matching state does not exist (e.g., previous state during create).
059         */
060        TESTPASSES, 
061        /**
062         * The requested conditional statement will fail if a matching state does not exist (e.g., previous state during create).
063         */
064        TESTFAILS, 
065        /**
066         * added to help the parsers with the generic types
067         */
068        NULL;
069        public static CriteriaNotExistsBehavior fromCode(String codeString) throws FHIRException {
070            if (codeString == null || "".equals(codeString))
071                return null;
072        if ("test-passes".equals(codeString))
073          return TESTPASSES;
074        if ("test-fails".equals(codeString))
075          return TESTFAILS;
076        if (Configuration.isAcceptInvalidEnums())
077          return null;
078        else
079          throw new FHIRException("Unknown CriteriaNotExistsBehavior code '"+codeString+"'");
080        }
081        public String toCode() {
082          switch (this) {
083            case TESTPASSES: return "test-passes";
084            case TESTFAILS: return "test-fails";
085            case NULL: return null;
086            default: return "?";
087          }
088        }
089        public String getSystem() {
090          switch (this) {
091            case TESTPASSES: return "http://hl7.org/fhir/subscriptiontopic-cr-behavior";
092            case TESTFAILS: return "http://hl7.org/fhir/subscriptiontopic-cr-behavior";
093            case NULL: return null;
094            default: return "?";
095          }
096        }
097        public String getDefinition() {
098          switch (this) {
099            case TESTPASSES: return "The requested conditional statement will pass if a matching state does not exist (e.g., previous state during create).";
100            case TESTFAILS: return "The requested conditional statement will fail if a matching state does not exist (e.g., previous state during create).";
101            case NULL: return null;
102            default: return "?";
103          }
104        }
105        public String getDisplay() {
106          switch (this) {
107            case TESTPASSES: return "Test passes";
108            case TESTFAILS: return "Test fails";
109            case NULL: return null;
110            default: return "?";
111          }
112        }
113    }
114
115  public static class CriteriaNotExistsBehaviorEnumFactory implements EnumFactory<CriteriaNotExistsBehavior> {
116    public CriteriaNotExistsBehavior fromCode(String codeString) throws IllegalArgumentException {
117      if (codeString == null || "".equals(codeString))
118            if (codeString == null || "".equals(codeString))
119                return null;
120        if ("test-passes".equals(codeString))
121          return CriteriaNotExistsBehavior.TESTPASSES;
122        if ("test-fails".equals(codeString))
123          return CriteriaNotExistsBehavior.TESTFAILS;
124        throw new IllegalArgumentException("Unknown CriteriaNotExistsBehavior code '"+codeString+"'");
125        }
126        public Enumeration<CriteriaNotExistsBehavior> fromType(PrimitiveType<?> code) throws FHIRException {
127          if (code == null)
128            return null;
129          if (code.isEmpty())
130            return new Enumeration<CriteriaNotExistsBehavior>(this, CriteriaNotExistsBehavior.NULL, code);
131          String codeString = ((PrimitiveType) code).asStringValue();
132          if (codeString == null || "".equals(codeString))
133            return new Enumeration<CriteriaNotExistsBehavior>(this, CriteriaNotExistsBehavior.NULL, code);
134        if ("test-passes".equals(codeString))
135          return new Enumeration<CriteriaNotExistsBehavior>(this, CriteriaNotExistsBehavior.TESTPASSES, code);
136        if ("test-fails".equals(codeString))
137          return new Enumeration<CriteriaNotExistsBehavior>(this, CriteriaNotExistsBehavior.TESTFAILS, code);
138        throw new FHIRException("Unknown CriteriaNotExistsBehavior code '"+codeString+"'");
139        }
140    public String toCode(CriteriaNotExistsBehavior code) {
141      if (code == CriteriaNotExistsBehavior.TESTPASSES)
142        return "test-passes";
143      if (code == CriteriaNotExistsBehavior.TESTFAILS)
144        return "test-fails";
145      return "?";
146      }
147    public String toSystem(CriteriaNotExistsBehavior code) {
148      return code.getSystem();
149      }
150    }
151
152    public enum InteractionTrigger {
153        /**
154         * Create a new resource with a server assigned id.
155         */
156        CREATE, 
157        /**
158         * Update an existing resource by its id (or create it if it is new).
159         */
160        UPDATE, 
161        /**
162         * Delete a resource.
163         */
164        DELETE, 
165        /**
166         * added to help the parsers with the generic types
167         */
168        NULL;
169        public static InteractionTrigger fromCode(String codeString) throws FHIRException {
170            if (codeString == null || "".equals(codeString))
171                return null;
172        if ("create".equals(codeString))
173          return CREATE;
174        if ("update".equals(codeString))
175          return UPDATE;
176        if ("delete".equals(codeString))
177          return DELETE;
178        if (Configuration.isAcceptInvalidEnums())
179          return null;
180        else
181          throw new FHIRException("Unknown InteractionTrigger code '"+codeString+"'");
182        }
183        public String toCode() {
184          switch (this) {
185            case CREATE: return "create";
186            case UPDATE: return "update";
187            case DELETE: return "delete";
188            case NULL: return null;
189            default: return "?";
190          }
191        }
192        public String getSystem() {
193          switch (this) {
194            case CREATE: return "http://hl7.org/fhir/restful-interaction";
195            case UPDATE: return "http://hl7.org/fhir/restful-interaction";
196            case DELETE: return "http://hl7.org/fhir/restful-interaction";
197            case NULL: return null;
198            default: return "?";
199          }
200        }
201        public String getDefinition() {
202          switch (this) {
203            case CREATE: return "Create a new resource with a server assigned id.";
204            case UPDATE: return "Update an existing resource by its id (or create it if it is new).";
205            case DELETE: return "Delete a resource.";
206            case NULL: return null;
207            default: return "?";
208          }
209        }
210        public String getDisplay() {
211          switch (this) {
212            case CREATE: return "create";
213            case UPDATE: return "update";
214            case DELETE: return "delete";
215            case NULL: return null;
216            default: return "?";
217          }
218        }
219    }
220
221  public static class InteractionTriggerEnumFactory implements EnumFactory<InteractionTrigger> {
222    public InteractionTrigger fromCode(String codeString) throws IllegalArgumentException {
223      if (codeString == null || "".equals(codeString))
224            if (codeString == null || "".equals(codeString))
225                return null;
226        if ("create".equals(codeString))
227          return InteractionTrigger.CREATE;
228        if ("update".equals(codeString))
229          return InteractionTrigger.UPDATE;
230        if ("delete".equals(codeString))
231          return InteractionTrigger.DELETE;
232        throw new IllegalArgumentException("Unknown InteractionTrigger code '"+codeString+"'");
233        }
234        public Enumeration<InteractionTrigger> fromType(PrimitiveType<?> code) throws FHIRException {
235          if (code == null)
236            return null;
237          if (code.isEmpty())
238            return new Enumeration<InteractionTrigger>(this, InteractionTrigger.NULL, code);
239          String codeString = ((PrimitiveType) code).asStringValue();
240          if (codeString == null || "".equals(codeString))
241            return new Enumeration<InteractionTrigger>(this, InteractionTrigger.NULL, code);
242        if ("create".equals(codeString))
243          return new Enumeration<InteractionTrigger>(this, InteractionTrigger.CREATE, code);
244        if ("update".equals(codeString))
245          return new Enumeration<InteractionTrigger>(this, InteractionTrigger.UPDATE, code);
246        if ("delete".equals(codeString))
247          return new Enumeration<InteractionTrigger>(this, InteractionTrigger.DELETE, code);
248        throw new FHIRException("Unknown InteractionTrigger code '"+codeString+"'");
249        }
250    public String toCode(InteractionTrigger code) {
251      if (code == InteractionTrigger.CREATE)
252        return "create";
253      if (code == InteractionTrigger.UPDATE)
254        return "update";
255      if (code == InteractionTrigger.DELETE)
256        return "delete";
257      return "?";
258      }
259    public String toSystem(InteractionTrigger code) {
260      return code.getSystem();
261      }
262    }
263
264    @Block()
265    public static class SubscriptionTopicResourceTriggerComponent extends BackboneElement implements IBaseBackboneElement {
266        /**
267         * The human readable description of this resource trigger for the SubscriptionTopic -  for example, "An Encounter enters the 'in-progress' state".
268         */
269        @Child(name = "description", type = {MarkdownType.class}, order=1, min=0, max=1, modifier=false, summary=true)
270        @Description(shortDefinition="Text representation of the resource trigger", formalDefinition="The human readable description of this resource trigger for the SubscriptionTopic -  for example, \"An Encounter enters the 'in-progress' state\"." )
271        protected MarkdownType description;
272
273        /**
274         * URL of the Resource that is the type used in this resource trigger.  Relative URLs are relative to the StructureDefinition root of the implemented FHIR version (e.g., http://hl7.org/fhir/StructureDefinition). For example, "Patient" maps to http://hl7.org/fhir/StructureDefinition/Patient.  For more information, see <a href="elementdefinition-definitions.html#ElementDefinition.type.code">ElementDefinition.type.code</a>.
275         */
276        @Child(name = "resource", type = {UriType.class}, order=2, min=1, max=1, modifier=false, summary=true)
277        @Description(shortDefinition="Data Type or Resource (reference to definition) for this trigger definition", formalDefinition="URL of the Resource that is the type used in this resource trigger.  Relative URLs are relative to the StructureDefinition root of the implemented FHIR version (e.g., http://hl7.org/fhir/StructureDefinition). For example, \"Patient\" maps to http://hl7.org/fhir/StructureDefinition/Patient.  For more information, see <a href=\"elementdefinition-definitions.html#ElementDefinition.type.code\">ElementDefinition.type.code</a>." )
278        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/subscription-types")
279        protected UriType resource;
280
281        /**
282         * The FHIR RESTful interaction which can be used to trigger a notification for the SubscriptionTopic. Multiple values are considered OR joined (e.g., CREATE or UPDATE). If not present, all supported interactions are assumed.
283         */
284        @Child(name = "supportedInteraction", type = {CodeType.class}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
285        @Description(shortDefinition="create | update | delete", formalDefinition="The FHIR RESTful interaction which can be used to trigger a notification for the SubscriptionTopic. Multiple values are considered OR joined (e.g., CREATE or UPDATE). If not present, all supported interactions are assumed." )
286        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/interaction-trigger")
287        protected List<Enumeration<InteractionTrigger>> supportedInteraction;
288
289        /**
290         * The FHIR query based rules that the server should use to determine when to trigger a notification for this subscription topic.
291         */
292        @Child(name = "queryCriteria", type = {}, order=4, min=0, max=1, modifier=false, summary=true)
293        @Description(shortDefinition="Query based trigger rule", formalDefinition="The FHIR query based rules that the server should use to determine when to trigger a notification for this subscription topic." )
294        protected SubscriptionTopicResourceTriggerQueryCriteriaComponent queryCriteria;
295
296        /**
297         * The FHIRPath based rules that the server should use to determine when to trigger a notification for this topic.
298         */
299        @Child(name = "fhirPathCriteria", type = {StringType.class}, order=5, min=0, max=1, modifier=false, summary=true)
300        @Description(shortDefinition="FHIRPath based trigger rule", formalDefinition="The FHIRPath based rules that the server should use to determine when to trigger a notification for this topic." )
301        protected StringType fhirPathCriteria;
302
303        private static final long serialVersionUID = -1086940999L;
304
305    /**
306     * Constructor
307     */
308      public SubscriptionTopicResourceTriggerComponent() {
309        super();
310      }
311
312    /**
313     * Constructor
314     */
315      public SubscriptionTopicResourceTriggerComponent(String resource) {
316        super();
317        this.setResource(resource);
318      }
319
320        /**
321         * @return {@link #description} (The human readable description of this resource trigger for the SubscriptionTopic -  for example, "An Encounter enters the 'in-progress' state".). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
322         */
323        public MarkdownType getDescriptionElement() { 
324          if (this.description == null)
325            if (Configuration.errorOnAutoCreate())
326              throw new Error("Attempt to auto-create SubscriptionTopicResourceTriggerComponent.description");
327            else if (Configuration.doAutoCreate())
328              this.description = new MarkdownType(); // bb
329          return this.description;
330        }
331
332        public boolean hasDescriptionElement() { 
333          return this.description != null && !this.description.isEmpty();
334        }
335
336        public boolean hasDescription() { 
337          return this.description != null && !this.description.isEmpty();
338        }
339
340        /**
341         * @param value {@link #description} (The human readable description of this resource trigger for the SubscriptionTopic -  for example, "An Encounter enters the 'in-progress' state".). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
342         */
343        public SubscriptionTopicResourceTriggerComponent setDescriptionElement(MarkdownType value) { 
344          this.description = value;
345          return this;
346        }
347
348        /**
349         * @return The human readable description of this resource trigger for the SubscriptionTopic -  for example, "An Encounter enters the 'in-progress' state".
350         */
351        public String getDescription() { 
352          return this.description == null ? null : this.description.getValue();
353        }
354
355        /**
356         * @param value The human readable description of this resource trigger for the SubscriptionTopic -  for example, "An Encounter enters the 'in-progress' state".
357         */
358        public SubscriptionTopicResourceTriggerComponent setDescription(String value) { 
359          if (Utilities.noString(value))
360            this.description = null;
361          else {
362            if (this.description == null)
363              this.description = new MarkdownType();
364            this.description.setValue(value);
365          }
366          return this;
367        }
368
369        /**
370         * @return {@link #resource} (URL of the Resource that is the type used in this resource trigger.  Relative URLs are relative to the StructureDefinition root of the implemented FHIR version (e.g., http://hl7.org/fhir/StructureDefinition). For example, "Patient" maps to http://hl7.org/fhir/StructureDefinition/Patient.  For more information, see <a href="elementdefinition-definitions.html#ElementDefinition.type.code">ElementDefinition.type.code</a>.). This is the underlying object with id, value and extensions. The accessor "getResource" gives direct access to the value
371         */
372        public UriType getResourceElement() { 
373          if (this.resource == null)
374            if (Configuration.errorOnAutoCreate())
375              throw new Error("Attempt to auto-create SubscriptionTopicResourceTriggerComponent.resource");
376            else if (Configuration.doAutoCreate())
377              this.resource = new UriType(); // bb
378          return this.resource;
379        }
380
381        public boolean hasResourceElement() { 
382          return this.resource != null && !this.resource.isEmpty();
383        }
384
385        public boolean hasResource() { 
386          return this.resource != null && !this.resource.isEmpty();
387        }
388
389        /**
390         * @param value {@link #resource} (URL of the Resource that is the type used in this resource trigger.  Relative URLs are relative to the StructureDefinition root of the implemented FHIR version (e.g., http://hl7.org/fhir/StructureDefinition). For example, "Patient" maps to http://hl7.org/fhir/StructureDefinition/Patient.  For more information, see <a href="elementdefinition-definitions.html#ElementDefinition.type.code">ElementDefinition.type.code</a>.). This is the underlying object with id, value and extensions. The accessor "getResource" gives direct access to the value
391         */
392        public SubscriptionTopicResourceTriggerComponent setResourceElement(UriType value) { 
393          this.resource = value;
394          return this;
395        }
396
397        /**
398         * @return URL of the Resource that is the type used in this resource trigger.  Relative URLs are relative to the StructureDefinition root of the implemented FHIR version (e.g., http://hl7.org/fhir/StructureDefinition). For example, "Patient" maps to http://hl7.org/fhir/StructureDefinition/Patient.  For more information, see <a href="elementdefinition-definitions.html#ElementDefinition.type.code">ElementDefinition.type.code</a>.
399         */
400        public String getResource() { 
401          return this.resource == null ? null : this.resource.getValue();
402        }
403
404        /**
405         * @param value URL of the Resource that is the type used in this resource trigger.  Relative URLs are relative to the StructureDefinition root of the implemented FHIR version (e.g., http://hl7.org/fhir/StructureDefinition). For example, "Patient" maps to http://hl7.org/fhir/StructureDefinition/Patient.  For more information, see <a href="elementdefinition-definitions.html#ElementDefinition.type.code">ElementDefinition.type.code</a>.
406         */
407        public SubscriptionTopicResourceTriggerComponent setResource(String value) { 
408            if (this.resource == null)
409              this.resource = new UriType();
410            this.resource.setValue(value);
411          return this;
412        }
413
414        /**
415         * @return {@link #supportedInteraction} (The FHIR RESTful interaction which can be used to trigger a notification for the SubscriptionTopic. Multiple values are considered OR joined (e.g., CREATE or UPDATE). If not present, all supported interactions are assumed.)
416         */
417        public List<Enumeration<InteractionTrigger>> getSupportedInteraction() { 
418          if (this.supportedInteraction == null)
419            this.supportedInteraction = new ArrayList<Enumeration<InteractionTrigger>>();
420          return this.supportedInteraction;
421        }
422
423        /**
424         * @return Returns a reference to <code>this</code> for easy method chaining
425         */
426        public SubscriptionTopicResourceTriggerComponent setSupportedInteraction(List<Enumeration<InteractionTrigger>> theSupportedInteraction) { 
427          this.supportedInteraction = theSupportedInteraction;
428          return this;
429        }
430
431        public boolean hasSupportedInteraction() { 
432          if (this.supportedInteraction == null)
433            return false;
434          for (Enumeration<InteractionTrigger> item : this.supportedInteraction)
435            if (!item.isEmpty())
436              return true;
437          return false;
438        }
439
440        /**
441         * @return {@link #supportedInteraction} (The FHIR RESTful interaction which can be used to trigger a notification for the SubscriptionTopic. Multiple values are considered OR joined (e.g., CREATE or UPDATE). If not present, all supported interactions are assumed.)
442         */
443        public Enumeration<InteractionTrigger> addSupportedInteractionElement() {//2 
444          Enumeration<InteractionTrigger> t = new Enumeration<InteractionTrigger>(new InteractionTriggerEnumFactory());
445          if (this.supportedInteraction == null)
446            this.supportedInteraction = new ArrayList<Enumeration<InteractionTrigger>>();
447          this.supportedInteraction.add(t);
448          return t;
449        }
450
451        /**
452         * @param value {@link #supportedInteraction} (The FHIR RESTful interaction which can be used to trigger a notification for the SubscriptionTopic. Multiple values are considered OR joined (e.g., CREATE or UPDATE). If not present, all supported interactions are assumed.)
453         */
454        public SubscriptionTopicResourceTriggerComponent addSupportedInteraction(InteractionTrigger value) { //1
455          Enumeration<InteractionTrigger> t = new Enumeration<InteractionTrigger>(new InteractionTriggerEnumFactory());
456          t.setValue(value);
457          if (this.supportedInteraction == null)
458            this.supportedInteraction = new ArrayList<Enumeration<InteractionTrigger>>();
459          this.supportedInteraction.add(t);
460          return this;
461        }
462
463        /**
464         * @param value {@link #supportedInteraction} (The FHIR RESTful interaction which can be used to trigger a notification for the SubscriptionTopic. Multiple values are considered OR joined (e.g., CREATE or UPDATE). If not present, all supported interactions are assumed.)
465         */
466        public boolean hasSupportedInteraction(InteractionTrigger value) { 
467          if (this.supportedInteraction == null)
468            return false;
469          for (Enumeration<InteractionTrigger> v : this.supportedInteraction)
470            if (v.getValue().equals(value)) // code
471              return true;
472          return false;
473        }
474
475        /**
476         * @return {@link #queryCriteria} (The FHIR query based rules that the server should use to determine when to trigger a notification for this subscription topic.)
477         */
478        public SubscriptionTopicResourceTriggerQueryCriteriaComponent getQueryCriteria() { 
479          if (this.queryCriteria == null)
480            if (Configuration.errorOnAutoCreate())
481              throw new Error("Attempt to auto-create SubscriptionTopicResourceTriggerComponent.queryCriteria");
482            else if (Configuration.doAutoCreate())
483              this.queryCriteria = new SubscriptionTopicResourceTriggerQueryCriteriaComponent(); // cc
484          return this.queryCriteria;
485        }
486
487        public boolean hasQueryCriteria() { 
488          return this.queryCriteria != null && !this.queryCriteria.isEmpty();
489        }
490
491        /**
492         * @param value {@link #queryCriteria} (The FHIR query based rules that the server should use to determine when to trigger a notification for this subscription topic.)
493         */
494        public SubscriptionTopicResourceTriggerComponent setQueryCriteria(SubscriptionTopicResourceTriggerQueryCriteriaComponent value) { 
495          this.queryCriteria = value;
496          return this;
497        }
498
499        /**
500         * @return {@link #fhirPathCriteria} (The FHIRPath based rules that the server should use to determine when to trigger a notification for this topic.). This is the underlying object with id, value and extensions. The accessor "getFhirPathCriteria" gives direct access to the value
501         */
502        public StringType getFhirPathCriteriaElement() { 
503          if (this.fhirPathCriteria == null)
504            if (Configuration.errorOnAutoCreate())
505              throw new Error("Attempt to auto-create SubscriptionTopicResourceTriggerComponent.fhirPathCriteria");
506            else if (Configuration.doAutoCreate())
507              this.fhirPathCriteria = new StringType(); // bb
508          return this.fhirPathCriteria;
509        }
510
511        public boolean hasFhirPathCriteriaElement() { 
512          return this.fhirPathCriteria != null && !this.fhirPathCriteria.isEmpty();
513        }
514
515        public boolean hasFhirPathCriteria() { 
516          return this.fhirPathCriteria != null && !this.fhirPathCriteria.isEmpty();
517        }
518
519        /**
520         * @param value {@link #fhirPathCriteria} (The FHIRPath based rules that the server should use to determine when to trigger a notification for this topic.). This is the underlying object with id, value and extensions. The accessor "getFhirPathCriteria" gives direct access to the value
521         */
522        public SubscriptionTopicResourceTriggerComponent setFhirPathCriteriaElement(StringType value) { 
523          this.fhirPathCriteria = value;
524          return this;
525        }
526
527        /**
528         * @return The FHIRPath based rules that the server should use to determine when to trigger a notification for this topic.
529         */
530        public String getFhirPathCriteria() { 
531          return this.fhirPathCriteria == null ? null : this.fhirPathCriteria.getValue();
532        }
533
534        /**
535         * @param value The FHIRPath based rules that the server should use to determine when to trigger a notification for this topic.
536         */
537        public SubscriptionTopicResourceTriggerComponent setFhirPathCriteria(String value) { 
538          if (Utilities.noString(value))
539            this.fhirPathCriteria = null;
540          else {
541            if (this.fhirPathCriteria == null)
542              this.fhirPathCriteria = new StringType();
543            this.fhirPathCriteria.setValue(value);
544          }
545          return this;
546        }
547
548        protected void listChildren(List<Property> children) {
549          super.listChildren(children);
550          children.add(new Property("description", "markdown", "The human readable description of this resource trigger for the SubscriptionTopic -  for example, \"An Encounter enters the 'in-progress' state\".", 0, 1, description));
551          children.add(new Property("resource", "uri", "URL of the Resource that is the type used in this resource trigger.  Relative URLs are relative to the StructureDefinition root of the implemented FHIR version (e.g., http://hl7.org/fhir/StructureDefinition). For example, \"Patient\" maps to http://hl7.org/fhir/StructureDefinition/Patient.  For more information, see <a href=\"elementdefinition-definitions.html#ElementDefinition.type.code\">ElementDefinition.type.code</a>.", 0, 1, resource));
552          children.add(new Property("supportedInteraction", "code", "The FHIR RESTful interaction which can be used to trigger a notification for the SubscriptionTopic. Multiple values are considered OR joined (e.g., CREATE or UPDATE). If not present, all supported interactions are assumed.", 0, java.lang.Integer.MAX_VALUE, supportedInteraction));
553          children.add(new Property("queryCriteria", "", "The FHIR query based rules that the server should use to determine when to trigger a notification for this subscription topic.", 0, 1, queryCriteria));
554          children.add(new Property("fhirPathCriteria", "string", "The FHIRPath based rules that the server should use to determine when to trigger a notification for this topic.", 0, 1, fhirPathCriteria));
555        }
556
557        @Override
558        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
559          switch (_hash) {
560          case -1724546052: /*description*/  return new Property("description", "markdown", "The human readable description of this resource trigger for the SubscriptionTopic -  for example, \"An Encounter enters the 'in-progress' state\".", 0, 1, description);
561          case -341064690: /*resource*/  return new Property("resource", "uri", "URL of the Resource that is the type used in this resource trigger.  Relative URLs are relative to the StructureDefinition root of the implemented FHIR version (e.g., http://hl7.org/fhir/StructureDefinition). For example, \"Patient\" maps to http://hl7.org/fhir/StructureDefinition/Patient.  For more information, see <a href=\"elementdefinition-definitions.html#ElementDefinition.type.code\">ElementDefinition.type.code</a>.", 0, 1, resource);
562          case 1838450820: /*supportedInteraction*/  return new Property("supportedInteraction", "code", "The FHIR RESTful interaction which can be used to trigger a notification for the SubscriptionTopic. Multiple values are considered OR joined (e.g., CREATE or UPDATE). If not present, all supported interactions are assumed.", 0, java.lang.Integer.MAX_VALUE, supportedInteraction);
563          case -545123257: /*queryCriteria*/  return new Property("queryCriteria", "", "The FHIR query based rules that the server should use to determine when to trigger a notification for this subscription topic.", 0, 1, queryCriteria);
564          case 1929785263: /*fhirPathCriteria*/  return new Property("fhirPathCriteria", "string", "The FHIRPath based rules that the server should use to determine when to trigger a notification for this topic.", 0, 1, fhirPathCriteria);
565          default: return super.getNamedProperty(_hash, _name, _checkValid);
566          }
567
568        }
569
570      @Override
571      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
572        switch (hash) {
573        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // MarkdownType
574        case -341064690: /*resource*/ return this.resource == null ? new Base[0] : new Base[] {this.resource}; // UriType
575        case 1838450820: /*supportedInteraction*/ return this.supportedInteraction == null ? new Base[0] : this.supportedInteraction.toArray(new Base[this.supportedInteraction.size()]); // Enumeration<InteractionTrigger>
576        case -545123257: /*queryCriteria*/ return this.queryCriteria == null ? new Base[0] : new Base[] {this.queryCriteria}; // SubscriptionTopicResourceTriggerQueryCriteriaComponent
577        case 1929785263: /*fhirPathCriteria*/ return this.fhirPathCriteria == null ? new Base[0] : new Base[] {this.fhirPathCriteria}; // StringType
578        default: return super.getProperty(hash, name, checkValid);
579        }
580
581      }
582
583      @Override
584      public Base setProperty(int hash, String name, Base value) throws FHIRException {
585        switch (hash) {
586        case -1724546052: // description
587          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
588          return value;
589        case -341064690: // resource
590          this.resource = TypeConvertor.castToUri(value); // UriType
591          return value;
592        case 1838450820: // supportedInteraction
593          value = new InteractionTriggerEnumFactory().fromType(TypeConvertor.castToCode(value));
594          this.getSupportedInteraction().add((Enumeration) value); // Enumeration<InteractionTrigger>
595          return value;
596        case -545123257: // queryCriteria
597          this.queryCriteria = (SubscriptionTopicResourceTriggerQueryCriteriaComponent) value; // SubscriptionTopicResourceTriggerQueryCriteriaComponent
598          return value;
599        case 1929785263: // fhirPathCriteria
600          this.fhirPathCriteria = TypeConvertor.castToString(value); // StringType
601          return value;
602        default: return super.setProperty(hash, name, value);
603        }
604
605      }
606
607      @Override
608      public Base setProperty(String name, Base value) throws FHIRException {
609        if (name.equals("description")) {
610          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
611        } else if (name.equals("resource")) {
612          this.resource = TypeConvertor.castToUri(value); // UriType
613        } else if (name.equals("supportedInteraction")) {
614          value = new InteractionTriggerEnumFactory().fromType(TypeConvertor.castToCode(value));
615          this.getSupportedInteraction().add((Enumeration) value);
616        } else if (name.equals("queryCriteria")) {
617          this.queryCriteria = (SubscriptionTopicResourceTriggerQueryCriteriaComponent) value; // SubscriptionTopicResourceTriggerQueryCriteriaComponent
618        } else if (name.equals("fhirPathCriteria")) {
619          this.fhirPathCriteria = TypeConvertor.castToString(value); // StringType
620        } else
621          return super.setProperty(name, value);
622        return value;
623      }
624
625      @Override
626      public Base makeProperty(int hash, String name) throws FHIRException {
627        switch (hash) {
628        case -1724546052:  return getDescriptionElement();
629        case -341064690:  return getResourceElement();
630        case 1838450820:  return addSupportedInteractionElement();
631        case -545123257:  return getQueryCriteria();
632        case 1929785263:  return getFhirPathCriteriaElement();
633        default: return super.makeProperty(hash, name);
634        }
635
636      }
637
638      @Override
639      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
640        switch (hash) {
641        case -1724546052: /*description*/ return new String[] {"markdown"};
642        case -341064690: /*resource*/ return new String[] {"uri"};
643        case 1838450820: /*supportedInteraction*/ return new String[] {"code"};
644        case -545123257: /*queryCriteria*/ return new String[] {};
645        case 1929785263: /*fhirPathCriteria*/ return new String[] {"string"};
646        default: return super.getTypesForProperty(hash, name);
647        }
648
649      }
650
651      @Override
652      public Base addChild(String name) throws FHIRException {
653        if (name.equals("description")) {
654          throw new FHIRException("Cannot call addChild on a singleton property SubscriptionTopic.resourceTrigger.description");
655        }
656        else if (name.equals("resource")) {
657          throw new FHIRException("Cannot call addChild on a singleton property SubscriptionTopic.resourceTrigger.resource");
658        }
659        else if (name.equals("supportedInteraction")) {
660          throw new FHIRException("Cannot call addChild on a singleton property SubscriptionTopic.resourceTrigger.supportedInteraction");
661        }
662        else if (name.equals("queryCriteria")) {
663          this.queryCriteria = new SubscriptionTopicResourceTriggerQueryCriteriaComponent();
664          return this.queryCriteria;
665        }
666        else if (name.equals("fhirPathCriteria")) {
667          throw new FHIRException("Cannot call addChild on a singleton property SubscriptionTopic.resourceTrigger.fhirPathCriteria");
668        }
669        else
670          return super.addChild(name);
671      }
672
673      public SubscriptionTopicResourceTriggerComponent copy() {
674        SubscriptionTopicResourceTriggerComponent dst = new SubscriptionTopicResourceTriggerComponent();
675        copyValues(dst);
676        return dst;
677      }
678
679      public void copyValues(SubscriptionTopicResourceTriggerComponent dst) {
680        super.copyValues(dst);
681        dst.description = description == null ? null : description.copy();
682        dst.resource = resource == null ? null : resource.copy();
683        if (supportedInteraction != null) {
684          dst.supportedInteraction = new ArrayList<Enumeration<InteractionTrigger>>();
685          for (Enumeration<InteractionTrigger> i : supportedInteraction)
686            dst.supportedInteraction.add(i.copy());
687        };
688        dst.queryCriteria = queryCriteria == null ? null : queryCriteria.copy();
689        dst.fhirPathCriteria = fhirPathCriteria == null ? null : fhirPathCriteria.copy();
690      }
691
692      @Override
693      public boolean equalsDeep(Base other_) {
694        if (!super.equalsDeep(other_))
695          return false;
696        if (!(other_ instanceof SubscriptionTopicResourceTriggerComponent))
697          return false;
698        SubscriptionTopicResourceTriggerComponent o = (SubscriptionTopicResourceTriggerComponent) other_;
699        return compareDeep(description, o.description, true) && compareDeep(resource, o.resource, true)
700           && compareDeep(supportedInteraction, o.supportedInteraction, true) && compareDeep(queryCriteria, o.queryCriteria, true)
701           && compareDeep(fhirPathCriteria, o.fhirPathCriteria, true);
702      }
703
704      @Override
705      public boolean equalsShallow(Base other_) {
706        if (!super.equalsShallow(other_))
707          return false;
708        if (!(other_ instanceof SubscriptionTopicResourceTriggerComponent))
709          return false;
710        SubscriptionTopicResourceTriggerComponent o = (SubscriptionTopicResourceTriggerComponent) other_;
711        return compareValues(description, o.description, true) && compareValues(resource, o.resource, true)
712           && compareValues(supportedInteraction, o.supportedInteraction, true) && compareValues(fhirPathCriteria, o.fhirPathCriteria, true)
713          ;
714      }
715
716      public boolean isEmpty() {
717        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(description, resource, supportedInteraction
718          , queryCriteria, fhirPathCriteria);
719      }
720
721  public String fhirType() {
722    return "SubscriptionTopic.resourceTrigger";
723
724  }
725
726  }
727
728    @Block()
729    public static class SubscriptionTopicResourceTriggerQueryCriteriaComponent extends BackboneElement implements IBaseBackboneElement {
730        /**
731         * The FHIR query based rules are applied to the previous resource state (e.g., state before an update).
732         */
733        @Child(name = "previous", type = {StringType.class}, order=1, min=0, max=1, modifier=false, summary=true)
734        @Description(shortDefinition="Rule applied to previous resource state", formalDefinition="The FHIR query based rules are applied to the previous resource state (e.g., state before an update)." )
735        protected StringType previous;
736
737        /**
738         * For `create` interactions, should the `previous` criteria count as an automatic pass or an automatic fail. If not present, the testing behavior during `create` interactions is unspecified (server discretion).
739         */
740        @Child(name = "resultForCreate", type = {CodeType.class}, order=2, min=0, max=1, modifier=false, summary=true)
741        @Description(shortDefinition="test-passes | test-fails", formalDefinition="For `create` interactions, should the `previous` criteria count as an automatic pass or an automatic fail. If not present, the testing behavior during `create` interactions is unspecified (server discretion)." )
742        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/subscriptiontopic-cr-behavior")
743        protected Enumeration<CriteriaNotExistsBehavior> resultForCreate;
744
745        /**
746         * The FHIR query based rules are applied to the current resource state (e.g., state after an update).
747         */
748        @Child(name = "current", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=true)
749        @Description(shortDefinition="Rule applied to current resource state", formalDefinition="The FHIR query based rules are applied to the current resource state (e.g., state after an update)." )
750        protected StringType current;
751
752        /**
753         * For 'delete' interactions, should the 'current' query criteria count as an automatic pass or an automatic fail. If not present, the testing behavior during `delete` interactions is unspecified (server discretion).
754         */
755        @Child(name = "resultForDelete", type = {CodeType.class}, order=4, min=0, max=1, modifier=false, summary=true)
756        @Description(shortDefinition="test-passes | test-fails", formalDefinition="For 'delete' interactions, should the 'current' query criteria count as an automatic pass or an automatic fail. If not present, the testing behavior during `delete` interactions is unspecified (server discretion)." )
757        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/subscriptiontopic-cr-behavior")
758        protected Enumeration<CriteriaNotExistsBehavior> resultForDelete;
759
760        /**
761         * If set to `true`, both the `current` and `previous` query criteria must evaluate `true` to trigger a notification for this topic.  If set to `false` or not present, a notification for this topic will be triggered if either the `current` or `previous` tests evaluate to `true`.
762         */
763        @Child(name = "requireBoth", type = {BooleanType.class}, order=5, min=0, max=1, modifier=false, summary=true)
764        @Description(shortDefinition="Both must be true flag", formalDefinition="If set to `true`, both the `current` and `previous` query criteria must evaluate `true` to trigger a notification for this topic.  If set to `false` or not present, a notification for this topic will be triggered if either the `current` or `previous` tests evaluate to `true`." )
765        protected BooleanType requireBoth;
766
767        private static final long serialVersionUID = -291746067L;
768
769    /**
770     * Constructor
771     */
772      public SubscriptionTopicResourceTriggerQueryCriteriaComponent() {
773        super();
774      }
775
776        /**
777         * @return {@link #previous} (The FHIR query based rules are applied to the previous resource state (e.g., state before an update).). This is the underlying object with id, value and extensions. The accessor "getPrevious" gives direct access to the value
778         */
779        public StringType getPreviousElement() { 
780          if (this.previous == null)
781            if (Configuration.errorOnAutoCreate())
782              throw new Error("Attempt to auto-create SubscriptionTopicResourceTriggerQueryCriteriaComponent.previous");
783            else if (Configuration.doAutoCreate())
784              this.previous = new StringType(); // bb
785          return this.previous;
786        }
787
788        public boolean hasPreviousElement() { 
789          return this.previous != null && !this.previous.isEmpty();
790        }
791
792        public boolean hasPrevious() { 
793          return this.previous != null && !this.previous.isEmpty();
794        }
795
796        /**
797         * @param value {@link #previous} (The FHIR query based rules are applied to the previous resource state (e.g., state before an update).). This is the underlying object with id, value and extensions. The accessor "getPrevious" gives direct access to the value
798         */
799        public SubscriptionTopicResourceTriggerQueryCriteriaComponent setPreviousElement(StringType value) { 
800          this.previous = value;
801          return this;
802        }
803
804        /**
805         * @return The FHIR query based rules are applied to the previous resource state (e.g., state before an update).
806         */
807        public String getPrevious() { 
808          return this.previous == null ? null : this.previous.getValue();
809        }
810
811        /**
812         * @param value The FHIR query based rules are applied to the previous resource state (e.g., state before an update).
813         */
814        public SubscriptionTopicResourceTriggerQueryCriteriaComponent setPrevious(String value) { 
815          if (Utilities.noString(value))
816            this.previous = null;
817          else {
818            if (this.previous == null)
819              this.previous = new StringType();
820            this.previous.setValue(value);
821          }
822          return this;
823        }
824
825        /**
826         * @return {@link #resultForCreate} (For `create` interactions, should the `previous` criteria count as an automatic pass or an automatic fail. If not present, the testing behavior during `create` interactions is unspecified (server discretion).). This is the underlying object with id, value and extensions. The accessor "getResultForCreate" gives direct access to the value
827         */
828        public Enumeration<CriteriaNotExistsBehavior> getResultForCreateElement() { 
829          if (this.resultForCreate == null)
830            if (Configuration.errorOnAutoCreate())
831              throw new Error("Attempt to auto-create SubscriptionTopicResourceTriggerQueryCriteriaComponent.resultForCreate");
832            else if (Configuration.doAutoCreate())
833              this.resultForCreate = new Enumeration<CriteriaNotExistsBehavior>(new CriteriaNotExistsBehaviorEnumFactory()); // bb
834          return this.resultForCreate;
835        }
836
837        public boolean hasResultForCreateElement() { 
838          return this.resultForCreate != null && !this.resultForCreate.isEmpty();
839        }
840
841        public boolean hasResultForCreate() { 
842          return this.resultForCreate != null && !this.resultForCreate.isEmpty();
843        }
844
845        /**
846         * @param value {@link #resultForCreate} (For `create` interactions, should the `previous` criteria count as an automatic pass or an automatic fail. If not present, the testing behavior during `create` interactions is unspecified (server discretion).). This is the underlying object with id, value and extensions. The accessor "getResultForCreate" gives direct access to the value
847         */
848        public SubscriptionTopicResourceTriggerQueryCriteriaComponent setResultForCreateElement(Enumeration<CriteriaNotExistsBehavior> value) { 
849          this.resultForCreate = value;
850          return this;
851        }
852
853        /**
854         * @return For `create` interactions, should the `previous` criteria count as an automatic pass or an automatic fail. If not present, the testing behavior during `create` interactions is unspecified (server discretion).
855         */
856        public CriteriaNotExistsBehavior getResultForCreate() { 
857          return this.resultForCreate == null ? null : this.resultForCreate.getValue();
858        }
859
860        /**
861         * @param value For `create` interactions, should the `previous` criteria count as an automatic pass or an automatic fail. If not present, the testing behavior during `create` interactions is unspecified (server discretion).
862         */
863        public SubscriptionTopicResourceTriggerQueryCriteriaComponent setResultForCreate(CriteriaNotExistsBehavior value) { 
864          if (value == null)
865            this.resultForCreate = null;
866          else {
867            if (this.resultForCreate == null)
868              this.resultForCreate = new Enumeration<CriteriaNotExistsBehavior>(new CriteriaNotExistsBehaviorEnumFactory());
869            this.resultForCreate.setValue(value);
870          }
871          return this;
872        }
873
874        /**
875         * @return {@link #current} (The FHIR query based rules are applied to the current resource state (e.g., state after an update).). This is the underlying object with id, value and extensions. The accessor "getCurrent" gives direct access to the value
876         */
877        public StringType getCurrentElement() { 
878          if (this.current == null)
879            if (Configuration.errorOnAutoCreate())
880              throw new Error("Attempt to auto-create SubscriptionTopicResourceTriggerQueryCriteriaComponent.current");
881            else if (Configuration.doAutoCreate())
882              this.current = new StringType(); // bb
883          return this.current;
884        }
885
886        public boolean hasCurrentElement() { 
887          return this.current != null && !this.current.isEmpty();
888        }
889
890        public boolean hasCurrent() { 
891          return this.current != null && !this.current.isEmpty();
892        }
893
894        /**
895         * @param value {@link #current} (The FHIR query based rules are applied to the current resource state (e.g., state after an update).). This is the underlying object with id, value and extensions. The accessor "getCurrent" gives direct access to the value
896         */
897        public SubscriptionTopicResourceTriggerQueryCriteriaComponent setCurrentElement(StringType value) { 
898          this.current = value;
899          return this;
900        }
901
902        /**
903         * @return The FHIR query based rules are applied to the current resource state (e.g., state after an update).
904         */
905        public String getCurrent() { 
906          return this.current == null ? null : this.current.getValue();
907        }
908
909        /**
910         * @param value The FHIR query based rules are applied to the current resource state (e.g., state after an update).
911         */
912        public SubscriptionTopicResourceTriggerQueryCriteriaComponent setCurrent(String value) { 
913          if (Utilities.noString(value))
914            this.current = null;
915          else {
916            if (this.current == null)
917              this.current = new StringType();
918            this.current.setValue(value);
919          }
920          return this;
921        }
922
923        /**
924         * @return {@link #resultForDelete} (For 'delete' interactions, should the 'current' query criteria count as an automatic pass or an automatic fail. If not present, the testing behavior during `delete` interactions is unspecified (server discretion).). This is the underlying object with id, value and extensions. The accessor "getResultForDelete" gives direct access to the value
925         */
926        public Enumeration<CriteriaNotExistsBehavior> getResultForDeleteElement() { 
927          if (this.resultForDelete == null)
928            if (Configuration.errorOnAutoCreate())
929              throw new Error("Attempt to auto-create SubscriptionTopicResourceTriggerQueryCriteriaComponent.resultForDelete");
930            else if (Configuration.doAutoCreate())
931              this.resultForDelete = new Enumeration<CriteriaNotExistsBehavior>(new CriteriaNotExistsBehaviorEnumFactory()); // bb
932          return this.resultForDelete;
933        }
934
935        public boolean hasResultForDeleteElement() { 
936          return this.resultForDelete != null && !this.resultForDelete.isEmpty();
937        }
938
939        public boolean hasResultForDelete() { 
940          return this.resultForDelete != null && !this.resultForDelete.isEmpty();
941        }
942
943        /**
944         * @param value {@link #resultForDelete} (For 'delete' interactions, should the 'current' query criteria count as an automatic pass or an automatic fail. If not present, the testing behavior during `delete` interactions is unspecified (server discretion).). This is the underlying object with id, value and extensions. The accessor "getResultForDelete" gives direct access to the value
945         */
946        public SubscriptionTopicResourceTriggerQueryCriteriaComponent setResultForDeleteElement(Enumeration<CriteriaNotExistsBehavior> value) { 
947          this.resultForDelete = value;
948          return this;
949        }
950
951        /**
952         * @return For 'delete' interactions, should the 'current' query criteria count as an automatic pass or an automatic fail. If not present, the testing behavior during `delete` interactions is unspecified (server discretion).
953         */
954        public CriteriaNotExistsBehavior getResultForDelete() { 
955          return this.resultForDelete == null ? null : this.resultForDelete.getValue();
956        }
957
958        /**
959         * @param value For 'delete' interactions, should the 'current' query criteria count as an automatic pass or an automatic fail. If not present, the testing behavior during `delete` interactions is unspecified (server discretion).
960         */
961        public SubscriptionTopicResourceTriggerQueryCriteriaComponent setResultForDelete(CriteriaNotExistsBehavior value) { 
962          if (value == null)
963            this.resultForDelete = null;
964          else {
965            if (this.resultForDelete == null)
966              this.resultForDelete = new Enumeration<CriteriaNotExistsBehavior>(new CriteriaNotExistsBehaviorEnumFactory());
967            this.resultForDelete.setValue(value);
968          }
969          return this;
970        }
971
972        /**
973         * @return {@link #requireBoth} (If set to `true`, both the `current` and `previous` query criteria must evaluate `true` to trigger a notification for this topic.  If set to `false` or not present, a notification for this topic will be triggered if either the `current` or `previous` tests evaluate to `true`.). This is the underlying object with id, value and extensions. The accessor "getRequireBoth" gives direct access to the value
974         */
975        public BooleanType getRequireBothElement() { 
976          if (this.requireBoth == null)
977            if (Configuration.errorOnAutoCreate())
978              throw new Error("Attempt to auto-create SubscriptionTopicResourceTriggerQueryCriteriaComponent.requireBoth");
979            else if (Configuration.doAutoCreate())
980              this.requireBoth = new BooleanType(); // bb
981          return this.requireBoth;
982        }
983
984        public boolean hasRequireBothElement() { 
985          return this.requireBoth != null && !this.requireBoth.isEmpty();
986        }
987
988        public boolean hasRequireBoth() { 
989          return this.requireBoth != null && !this.requireBoth.isEmpty();
990        }
991
992        /**
993         * @param value {@link #requireBoth} (If set to `true`, both the `current` and `previous` query criteria must evaluate `true` to trigger a notification for this topic.  If set to `false` or not present, a notification for this topic will be triggered if either the `current` or `previous` tests evaluate to `true`.). This is the underlying object with id, value and extensions. The accessor "getRequireBoth" gives direct access to the value
994         */
995        public SubscriptionTopicResourceTriggerQueryCriteriaComponent setRequireBothElement(BooleanType value) { 
996          this.requireBoth = value;
997          return this;
998        }
999
1000        /**
1001         * @return If set to `true`, both the `current` and `previous` query criteria must evaluate `true` to trigger a notification for this topic.  If set to `false` or not present, a notification for this topic will be triggered if either the `current` or `previous` tests evaluate to `true`.
1002         */
1003        public boolean getRequireBoth() { 
1004          return this.requireBoth == null || this.requireBoth.isEmpty() ? false : this.requireBoth.getValue();
1005        }
1006
1007        /**
1008         * @param value If set to `true`, both the `current` and `previous` query criteria must evaluate `true` to trigger a notification for this topic.  If set to `false` or not present, a notification for this topic will be triggered if either the `current` or `previous` tests evaluate to `true`.
1009         */
1010        public SubscriptionTopicResourceTriggerQueryCriteriaComponent setRequireBoth(boolean value) { 
1011            if (this.requireBoth == null)
1012              this.requireBoth = new BooleanType();
1013            this.requireBoth.setValue(value);
1014          return this;
1015        }
1016
1017        protected void listChildren(List<Property> children) {
1018          super.listChildren(children);
1019          children.add(new Property("previous", "string", "The FHIR query based rules are applied to the previous resource state (e.g., state before an update).", 0, 1, previous));
1020          children.add(new Property("resultForCreate", "code", "For `create` interactions, should the `previous` criteria count as an automatic pass or an automatic fail. If not present, the testing behavior during `create` interactions is unspecified (server discretion).", 0, 1, resultForCreate));
1021          children.add(new Property("current", "string", "The FHIR query based rules are applied to the current resource state (e.g., state after an update).", 0, 1, current));
1022          children.add(new Property("resultForDelete", "code", "For 'delete' interactions, should the 'current' query criteria count as an automatic pass or an automatic fail. If not present, the testing behavior during `delete` interactions is unspecified (server discretion).", 0, 1, resultForDelete));
1023          children.add(new Property("requireBoth", "boolean", "If set to `true`, both the `current` and `previous` query criteria must evaluate `true` to trigger a notification for this topic.  If set to `false` or not present, a notification for this topic will be triggered if either the `current` or `previous` tests evaluate to `true`.", 0, 1, requireBoth));
1024        }
1025
1026        @Override
1027        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1028          switch (_hash) {
1029          case -1273775369: /*previous*/  return new Property("previous", "string", "The FHIR query based rules are applied to the previous resource state (e.g., state before an update).", 0, 1, previous);
1030          case -407976056: /*resultForCreate*/  return new Property("resultForCreate", "code", "For `create` interactions, should the `previous` criteria count as an automatic pass or an automatic fail. If not present, the testing behavior during `create` interactions is unspecified (server discretion).", 0, 1, resultForCreate);
1031          case 1126940025: /*current*/  return new Property("current", "string", "The FHIR query based rules are applied to the current resource state (e.g., state after an update).", 0, 1, current);
1032          case -391140297: /*resultForDelete*/  return new Property("resultForDelete", "code", "For 'delete' interactions, should the 'current' query criteria count as an automatic pass or an automatic fail. If not present, the testing behavior during `delete` interactions is unspecified (server discretion).", 0, 1, resultForDelete);
1033          case 362116742: /*requireBoth*/  return new Property("requireBoth", "boolean", "If set to `true`, both the `current` and `previous` query criteria must evaluate `true` to trigger a notification for this topic.  If set to `false` or not present, a notification for this topic will be triggered if either the `current` or `previous` tests evaluate to `true`.", 0, 1, requireBoth);
1034          default: return super.getNamedProperty(_hash, _name, _checkValid);
1035          }
1036
1037        }
1038
1039      @Override
1040      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1041        switch (hash) {
1042        case -1273775369: /*previous*/ return this.previous == null ? new Base[0] : new Base[] {this.previous}; // StringType
1043        case -407976056: /*resultForCreate*/ return this.resultForCreate == null ? new Base[0] : new Base[] {this.resultForCreate}; // Enumeration<CriteriaNotExistsBehavior>
1044        case 1126940025: /*current*/ return this.current == null ? new Base[0] : new Base[] {this.current}; // StringType
1045        case -391140297: /*resultForDelete*/ return this.resultForDelete == null ? new Base[0] : new Base[] {this.resultForDelete}; // Enumeration<CriteriaNotExistsBehavior>
1046        case 362116742: /*requireBoth*/ return this.requireBoth == null ? new Base[0] : new Base[] {this.requireBoth}; // BooleanType
1047        default: return super.getProperty(hash, name, checkValid);
1048        }
1049
1050      }
1051
1052      @Override
1053      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1054        switch (hash) {
1055        case -1273775369: // previous
1056          this.previous = TypeConvertor.castToString(value); // StringType
1057          return value;
1058        case -407976056: // resultForCreate
1059          value = new CriteriaNotExistsBehaviorEnumFactory().fromType(TypeConvertor.castToCode(value));
1060          this.resultForCreate = (Enumeration) value; // Enumeration<CriteriaNotExistsBehavior>
1061          return value;
1062        case 1126940025: // current
1063          this.current = TypeConvertor.castToString(value); // StringType
1064          return value;
1065        case -391140297: // resultForDelete
1066          value = new CriteriaNotExistsBehaviorEnumFactory().fromType(TypeConvertor.castToCode(value));
1067          this.resultForDelete = (Enumeration) value; // Enumeration<CriteriaNotExistsBehavior>
1068          return value;
1069        case 362116742: // requireBoth
1070          this.requireBoth = TypeConvertor.castToBoolean(value); // BooleanType
1071          return value;
1072        default: return super.setProperty(hash, name, value);
1073        }
1074
1075      }
1076
1077      @Override
1078      public Base setProperty(String name, Base value) throws FHIRException {
1079        if (name.equals("previous")) {
1080          this.previous = TypeConvertor.castToString(value); // StringType
1081        } else if (name.equals("resultForCreate")) {
1082          value = new CriteriaNotExistsBehaviorEnumFactory().fromType(TypeConvertor.castToCode(value));
1083          this.resultForCreate = (Enumeration) value; // Enumeration<CriteriaNotExistsBehavior>
1084        } else if (name.equals("current")) {
1085          this.current = TypeConvertor.castToString(value); // StringType
1086        } else if (name.equals("resultForDelete")) {
1087          value = new CriteriaNotExistsBehaviorEnumFactory().fromType(TypeConvertor.castToCode(value));
1088          this.resultForDelete = (Enumeration) value; // Enumeration<CriteriaNotExistsBehavior>
1089        } else if (name.equals("requireBoth")) {
1090          this.requireBoth = TypeConvertor.castToBoolean(value); // BooleanType
1091        } else
1092          return super.setProperty(name, value);
1093        return value;
1094      }
1095
1096      @Override
1097      public Base makeProperty(int hash, String name) throws FHIRException {
1098        switch (hash) {
1099        case -1273775369:  return getPreviousElement();
1100        case -407976056:  return getResultForCreateElement();
1101        case 1126940025:  return getCurrentElement();
1102        case -391140297:  return getResultForDeleteElement();
1103        case 362116742:  return getRequireBothElement();
1104        default: return super.makeProperty(hash, name);
1105        }
1106
1107      }
1108
1109      @Override
1110      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1111        switch (hash) {
1112        case -1273775369: /*previous*/ return new String[] {"string"};
1113        case -407976056: /*resultForCreate*/ return new String[] {"code"};
1114        case 1126940025: /*current*/ return new String[] {"string"};
1115        case -391140297: /*resultForDelete*/ return new String[] {"code"};
1116        case 362116742: /*requireBoth*/ return new String[] {"boolean"};
1117        default: return super.getTypesForProperty(hash, name);
1118        }
1119
1120      }
1121
1122      @Override
1123      public Base addChild(String name) throws FHIRException {
1124        if (name.equals("previous")) {
1125          throw new FHIRException("Cannot call addChild on a singleton property SubscriptionTopic.resourceTrigger.queryCriteria.previous");
1126        }
1127        else if (name.equals("resultForCreate")) {
1128          throw new FHIRException("Cannot call addChild on a singleton property SubscriptionTopic.resourceTrigger.queryCriteria.resultForCreate");
1129        }
1130        else if (name.equals("current")) {
1131          throw new FHIRException("Cannot call addChild on a singleton property SubscriptionTopic.resourceTrigger.queryCriteria.current");
1132        }
1133        else if (name.equals("resultForDelete")) {
1134          throw new FHIRException("Cannot call addChild on a singleton property SubscriptionTopic.resourceTrigger.queryCriteria.resultForDelete");
1135        }
1136        else if (name.equals("requireBoth")) {
1137          throw new FHIRException("Cannot call addChild on a singleton property SubscriptionTopic.resourceTrigger.queryCriteria.requireBoth");
1138        }
1139        else
1140          return super.addChild(name);
1141      }
1142
1143      public SubscriptionTopicResourceTriggerQueryCriteriaComponent copy() {
1144        SubscriptionTopicResourceTriggerQueryCriteriaComponent dst = new SubscriptionTopicResourceTriggerQueryCriteriaComponent();
1145        copyValues(dst);
1146        return dst;
1147      }
1148
1149      public void copyValues(SubscriptionTopicResourceTriggerQueryCriteriaComponent dst) {
1150        super.copyValues(dst);
1151        dst.previous = previous == null ? null : previous.copy();
1152        dst.resultForCreate = resultForCreate == null ? null : resultForCreate.copy();
1153        dst.current = current == null ? null : current.copy();
1154        dst.resultForDelete = resultForDelete == null ? null : resultForDelete.copy();
1155        dst.requireBoth = requireBoth == null ? null : requireBoth.copy();
1156      }
1157
1158      @Override
1159      public boolean equalsDeep(Base other_) {
1160        if (!super.equalsDeep(other_))
1161          return false;
1162        if (!(other_ instanceof SubscriptionTopicResourceTriggerQueryCriteriaComponent))
1163          return false;
1164        SubscriptionTopicResourceTriggerQueryCriteriaComponent o = (SubscriptionTopicResourceTriggerQueryCriteriaComponent) other_;
1165        return compareDeep(previous, o.previous, true) && compareDeep(resultForCreate, o.resultForCreate, true)
1166           && compareDeep(current, o.current, true) && compareDeep(resultForDelete, o.resultForDelete, true)
1167           && compareDeep(requireBoth, o.requireBoth, true);
1168      }
1169
1170      @Override
1171      public boolean equalsShallow(Base other_) {
1172        if (!super.equalsShallow(other_))
1173          return false;
1174        if (!(other_ instanceof SubscriptionTopicResourceTriggerQueryCriteriaComponent))
1175          return false;
1176        SubscriptionTopicResourceTriggerQueryCriteriaComponent o = (SubscriptionTopicResourceTriggerQueryCriteriaComponent) other_;
1177        return compareValues(previous, o.previous, true) && compareValues(resultForCreate, o.resultForCreate, true)
1178           && compareValues(current, o.current, true) && compareValues(resultForDelete, o.resultForDelete, true)
1179           && compareValues(requireBoth, o.requireBoth, true);
1180      }
1181
1182      public boolean isEmpty() {
1183        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(previous, resultForCreate
1184          , current, resultForDelete, requireBoth);
1185      }
1186
1187  public String fhirType() {
1188    return "SubscriptionTopic.resourceTrigger.queryCriteria";
1189
1190  }
1191
1192  }
1193
1194    @Block()
1195    public static class SubscriptionTopicEventTriggerComponent extends BackboneElement implements IBaseBackboneElement {
1196        /**
1197         * The human readable description of an event to trigger a notification for the SubscriptionTopic - for example, "Patient Admission, as defined in HL7v2 via message ADT^A01". Multiple values are considered OR joined (e.g., matching any single event listed).
1198         */
1199        @Child(name = "description", type = {MarkdownType.class}, order=1, min=0, max=1, modifier=false, summary=true)
1200        @Description(shortDefinition="Text representation of the event trigger", formalDefinition="The human readable description of an event to trigger a notification for the SubscriptionTopic - for example, \"Patient Admission, as defined in HL7v2 via message ADT^A01\". Multiple values are considered OR joined (e.g., matching any single event listed)." )
1201        protected MarkdownType description;
1202
1203        /**
1204         * A well-defined event which can be used to trigger notifications from the SubscriptionTopic.
1205         */
1206        @Child(name = "event", type = {CodeableConcept.class}, order=2, min=1, max=1, modifier=false, summary=true)
1207        @Description(shortDefinition="Event which can trigger a notification from the SubscriptionTopic", formalDefinition="A well-defined event which can be used to trigger notifications from the SubscriptionTopic." )
1208        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://terminology.hl7.org/ValueSet/v2-0003")
1209        protected CodeableConcept event;
1210
1211        /**
1212         * URL of the Resource that is the focus type used in this event trigger.  Relative URLs are relative to the StructureDefinition root of the implemented FHIR version (e.g., http://hl7.org/fhir/StructureDefinition). For example, "Patient" maps to http://hl7.org/fhir/StructureDefinition/Patient.  For more information, see <a href="elementdefinition-definitions.html#ElementDefinition.type.code">ElementDefinition.type.code</a>.
1213         */
1214        @Child(name = "resource", type = {UriType.class}, order=3, min=1, max=1, modifier=false, summary=true)
1215        @Description(shortDefinition="Data Type or Resource (reference to definition) for this trigger definition", formalDefinition="URL of the Resource that is the focus type used in this event trigger.  Relative URLs are relative to the StructureDefinition root of the implemented FHIR version (e.g., http://hl7.org/fhir/StructureDefinition). For example, \"Patient\" maps to http://hl7.org/fhir/StructureDefinition/Patient.  For more information, see <a href=\"elementdefinition-definitions.html#ElementDefinition.type.code\">ElementDefinition.type.code</a>." )
1216        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/subscription-types")
1217        protected UriType resource;
1218
1219        private static final long serialVersionUID = 1818872110L;
1220
1221    /**
1222     * Constructor
1223     */
1224      public SubscriptionTopicEventTriggerComponent() {
1225        super();
1226      }
1227
1228    /**
1229     * Constructor
1230     */
1231      public SubscriptionTopicEventTriggerComponent(CodeableConcept event, String resource) {
1232        super();
1233        this.setEvent(event);
1234        this.setResource(resource);
1235      }
1236
1237        /**
1238         * @return {@link #description} (The human readable description of an event to trigger a notification for the SubscriptionTopic - for example, "Patient Admission, as defined in HL7v2 via message ADT^A01". Multiple values are considered OR joined (e.g., matching any single event listed).). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
1239         */
1240        public MarkdownType getDescriptionElement() { 
1241          if (this.description == null)
1242            if (Configuration.errorOnAutoCreate())
1243              throw new Error("Attempt to auto-create SubscriptionTopicEventTriggerComponent.description");
1244            else if (Configuration.doAutoCreate())
1245              this.description = new MarkdownType(); // bb
1246          return this.description;
1247        }
1248
1249        public boolean hasDescriptionElement() { 
1250          return this.description != null && !this.description.isEmpty();
1251        }
1252
1253        public boolean hasDescription() { 
1254          return this.description != null && !this.description.isEmpty();
1255        }
1256
1257        /**
1258         * @param value {@link #description} (The human readable description of an event to trigger a notification for the SubscriptionTopic - for example, "Patient Admission, as defined in HL7v2 via message ADT^A01". Multiple values are considered OR joined (e.g., matching any single event listed).). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
1259         */
1260        public SubscriptionTopicEventTriggerComponent setDescriptionElement(MarkdownType value) { 
1261          this.description = value;
1262          return this;
1263        }
1264
1265        /**
1266         * @return The human readable description of an event to trigger a notification for the SubscriptionTopic - for example, "Patient Admission, as defined in HL7v2 via message ADT^A01". Multiple values are considered OR joined (e.g., matching any single event listed).
1267         */
1268        public String getDescription() { 
1269          return this.description == null ? null : this.description.getValue();
1270        }
1271
1272        /**
1273         * @param value The human readable description of an event to trigger a notification for the SubscriptionTopic - for example, "Patient Admission, as defined in HL7v2 via message ADT^A01". Multiple values are considered OR joined (e.g., matching any single event listed).
1274         */
1275        public SubscriptionTopicEventTriggerComponent setDescription(String value) { 
1276          if (Utilities.noString(value))
1277            this.description = null;
1278          else {
1279            if (this.description == null)
1280              this.description = new MarkdownType();
1281            this.description.setValue(value);
1282          }
1283          return this;
1284        }
1285
1286        /**
1287         * @return {@link #event} (A well-defined event which can be used to trigger notifications from the SubscriptionTopic.)
1288         */
1289        public CodeableConcept getEvent() { 
1290          if (this.event == null)
1291            if (Configuration.errorOnAutoCreate())
1292              throw new Error("Attempt to auto-create SubscriptionTopicEventTriggerComponent.event");
1293            else if (Configuration.doAutoCreate())
1294              this.event = new CodeableConcept(); // cc
1295          return this.event;
1296        }
1297
1298        public boolean hasEvent() { 
1299          return this.event != null && !this.event.isEmpty();
1300        }
1301
1302        /**
1303         * @param value {@link #event} (A well-defined event which can be used to trigger notifications from the SubscriptionTopic.)
1304         */
1305        public SubscriptionTopicEventTriggerComponent setEvent(CodeableConcept value) { 
1306          this.event = value;
1307          return this;
1308        }
1309
1310        /**
1311         * @return {@link #resource} (URL of the Resource that is the focus type used in this event trigger.  Relative URLs are relative to the StructureDefinition root of the implemented FHIR version (e.g., http://hl7.org/fhir/StructureDefinition). For example, "Patient" maps to http://hl7.org/fhir/StructureDefinition/Patient.  For more information, see <a href="elementdefinition-definitions.html#ElementDefinition.type.code">ElementDefinition.type.code</a>.). This is the underlying object with id, value and extensions. The accessor "getResource" gives direct access to the value
1312         */
1313        public UriType getResourceElement() { 
1314          if (this.resource == null)
1315            if (Configuration.errorOnAutoCreate())
1316              throw new Error("Attempt to auto-create SubscriptionTopicEventTriggerComponent.resource");
1317            else if (Configuration.doAutoCreate())
1318              this.resource = new UriType(); // bb
1319          return this.resource;
1320        }
1321
1322        public boolean hasResourceElement() { 
1323          return this.resource != null && !this.resource.isEmpty();
1324        }
1325
1326        public boolean hasResource() { 
1327          return this.resource != null && !this.resource.isEmpty();
1328        }
1329
1330        /**
1331         * @param value {@link #resource} (URL of the Resource that is the focus type used in this event trigger.  Relative URLs are relative to the StructureDefinition root of the implemented FHIR version (e.g., http://hl7.org/fhir/StructureDefinition). For example, "Patient" maps to http://hl7.org/fhir/StructureDefinition/Patient.  For more information, see <a href="elementdefinition-definitions.html#ElementDefinition.type.code">ElementDefinition.type.code</a>.). This is the underlying object with id, value and extensions. The accessor "getResource" gives direct access to the value
1332         */
1333        public SubscriptionTopicEventTriggerComponent setResourceElement(UriType value) { 
1334          this.resource = value;
1335          return this;
1336        }
1337
1338        /**
1339         * @return URL of the Resource that is the focus type used in this event trigger.  Relative URLs are relative to the StructureDefinition root of the implemented FHIR version (e.g., http://hl7.org/fhir/StructureDefinition). For example, "Patient" maps to http://hl7.org/fhir/StructureDefinition/Patient.  For more information, see <a href="elementdefinition-definitions.html#ElementDefinition.type.code">ElementDefinition.type.code</a>.
1340         */
1341        public String getResource() { 
1342          return this.resource == null ? null : this.resource.getValue();
1343        }
1344
1345        /**
1346         * @param value URL of the Resource that is the focus type used in this event trigger.  Relative URLs are relative to the StructureDefinition root of the implemented FHIR version (e.g., http://hl7.org/fhir/StructureDefinition). For example, "Patient" maps to http://hl7.org/fhir/StructureDefinition/Patient.  For more information, see <a href="elementdefinition-definitions.html#ElementDefinition.type.code">ElementDefinition.type.code</a>.
1347         */
1348        public SubscriptionTopicEventTriggerComponent setResource(String value) { 
1349            if (this.resource == null)
1350              this.resource = new UriType();
1351            this.resource.setValue(value);
1352          return this;
1353        }
1354
1355        protected void listChildren(List<Property> children) {
1356          super.listChildren(children);
1357          children.add(new Property("description", "markdown", "The human readable description of an event to trigger a notification for the SubscriptionTopic - for example, \"Patient Admission, as defined in HL7v2 via message ADT^A01\". Multiple values are considered OR joined (e.g., matching any single event listed).", 0, 1, description));
1358          children.add(new Property("event", "CodeableConcept", "A well-defined event which can be used to trigger notifications from the SubscriptionTopic.", 0, 1, event));
1359          children.add(new Property("resource", "uri", "URL of the Resource that is the focus type used in this event trigger.  Relative URLs are relative to the StructureDefinition root of the implemented FHIR version (e.g., http://hl7.org/fhir/StructureDefinition). For example, \"Patient\" maps to http://hl7.org/fhir/StructureDefinition/Patient.  For more information, see <a href=\"elementdefinition-definitions.html#ElementDefinition.type.code\">ElementDefinition.type.code</a>.", 0, 1, resource));
1360        }
1361
1362        @Override
1363        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1364          switch (_hash) {
1365          case -1724546052: /*description*/  return new Property("description", "markdown", "The human readable description of an event to trigger a notification for the SubscriptionTopic - for example, \"Patient Admission, as defined in HL7v2 via message ADT^A01\". Multiple values are considered OR joined (e.g., matching any single event listed).", 0, 1, description);
1366          case 96891546: /*event*/  return new Property("event", "CodeableConcept", "A well-defined event which can be used to trigger notifications from the SubscriptionTopic.", 0, 1, event);
1367          case -341064690: /*resource*/  return new Property("resource", "uri", "URL of the Resource that is the focus type used in this event trigger.  Relative URLs are relative to the StructureDefinition root of the implemented FHIR version (e.g., http://hl7.org/fhir/StructureDefinition). For example, \"Patient\" maps to http://hl7.org/fhir/StructureDefinition/Patient.  For more information, see <a href=\"elementdefinition-definitions.html#ElementDefinition.type.code\">ElementDefinition.type.code</a>.", 0, 1, resource);
1368          default: return super.getNamedProperty(_hash, _name, _checkValid);
1369          }
1370
1371        }
1372
1373      @Override
1374      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1375        switch (hash) {
1376        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // MarkdownType
1377        case 96891546: /*event*/ return this.event == null ? new Base[0] : new Base[] {this.event}; // CodeableConcept
1378        case -341064690: /*resource*/ return this.resource == null ? new Base[0] : new Base[] {this.resource}; // UriType
1379        default: return super.getProperty(hash, name, checkValid);
1380        }
1381
1382      }
1383
1384      @Override
1385      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1386        switch (hash) {
1387        case -1724546052: // description
1388          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
1389          return value;
1390        case 96891546: // event
1391          this.event = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1392          return value;
1393        case -341064690: // resource
1394          this.resource = TypeConvertor.castToUri(value); // UriType
1395          return value;
1396        default: return super.setProperty(hash, name, value);
1397        }
1398
1399      }
1400
1401      @Override
1402      public Base setProperty(String name, Base value) throws FHIRException {
1403        if (name.equals("description")) {
1404          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
1405        } else if (name.equals("event")) {
1406          this.event = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1407        } else if (name.equals("resource")) {
1408          this.resource = TypeConvertor.castToUri(value); // UriType
1409        } else
1410          return super.setProperty(name, value);
1411        return value;
1412      }
1413
1414      @Override
1415      public Base makeProperty(int hash, String name) throws FHIRException {
1416        switch (hash) {
1417        case -1724546052:  return getDescriptionElement();
1418        case 96891546:  return getEvent();
1419        case -341064690:  return getResourceElement();
1420        default: return super.makeProperty(hash, name);
1421        }
1422
1423      }
1424
1425      @Override
1426      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1427        switch (hash) {
1428        case -1724546052: /*description*/ return new String[] {"markdown"};
1429        case 96891546: /*event*/ return new String[] {"CodeableConcept"};
1430        case -341064690: /*resource*/ return new String[] {"uri"};
1431        default: return super.getTypesForProperty(hash, name);
1432        }
1433
1434      }
1435
1436      @Override
1437      public Base addChild(String name) throws FHIRException {
1438        if (name.equals("description")) {
1439          throw new FHIRException("Cannot call addChild on a singleton property SubscriptionTopic.eventTrigger.description");
1440        }
1441        else if (name.equals("event")) {
1442          this.event = new CodeableConcept();
1443          return this.event;
1444        }
1445        else if (name.equals("resource")) {
1446          throw new FHIRException("Cannot call addChild on a singleton property SubscriptionTopic.eventTrigger.resource");
1447        }
1448        else
1449          return super.addChild(name);
1450      }
1451
1452      public SubscriptionTopicEventTriggerComponent copy() {
1453        SubscriptionTopicEventTriggerComponent dst = new SubscriptionTopicEventTriggerComponent();
1454        copyValues(dst);
1455        return dst;
1456      }
1457
1458      public void copyValues(SubscriptionTopicEventTriggerComponent dst) {
1459        super.copyValues(dst);
1460        dst.description = description == null ? null : description.copy();
1461        dst.event = event == null ? null : event.copy();
1462        dst.resource = resource == null ? null : resource.copy();
1463      }
1464
1465      @Override
1466      public boolean equalsDeep(Base other_) {
1467        if (!super.equalsDeep(other_))
1468          return false;
1469        if (!(other_ instanceof SubscriptionTopicEventTriggerComponent))
1470          return false;
1471        SubscriptionTopicEventTriggerComponent o = (SubscriptionTopicEventTriggerComponent) other_;
1472        return compareDeep(description, o.description, true) && compareDeep(event, o.event, true) && compareDeep(resource, o.resource, true)
1473          ;
1474      }
1475
1476      @Override
1477      public boolean equalsShallow(Base other_) {
1478        if (!super.equalsShallow(other_))
1479          return false;
1480        if (!(other_ instanceof SubscriptionTopicEventTriggerComponent))
1481          return false;
1482        SubscriptionTopicEventTriggerComponent o = (SubscriptionTopicEventTriggerComponent) other_;
1483        return compareValues(description, o.description, true) && compareValues(resource, o.resource, true)
1484          ;
1485      }
1486
1487      public boolean isEmpty() {
1488        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(description, event, resource
1489          );
1490      }
1491
1492  public String fhirType() {
1493    return "SubscriptionTopic.eventTrigger";
1494
1495  }
1496
1497  }
1498
1499    @Block()
1500    public static class SubscriptionTopicCanFilterByComponent extends BackboneElement implements IBaseBackboneElement {
1501        /**
1502         * Description of how this filtering parameter is intended to be used.
1503         */
1504        @Child(name = "description", type = {MarkdownType.class}, order=1, min=0, max=1, modifier=false, summary=true)
1505        @Description(shortDefinition="Description of this filter parameter", formalDefinition="Description of how this filtering parameter is intended to be used." )
1506        protected MarkdownType description;
1507
1508        /**
1509         * URL of the Resource that is the type used in this filter. This is the "focus" of the topic (or one of them if there are more than one). It will be the same, a generality, or a specificity of SubscriptionTopic.resourceTrigger.resource or SubscriptionTopic.eventTrigger.resource when they are present.
1510         */
1511        @Child(name = "resource", type = {UriType.class}, order=2, min=0, max=1, modifier=false, summary=true)
1512        @Description(shortDefinition="URL of the triggering Resource that this filter applies to", formalDefinition="URL of the Resource that is the type used in this filter. This is the \"focus\" of the topic (or one of them if there are more than one). It will be the same, a generality, or a specificity of SubscriptionTopic.resourceTrigger.resource or SubscriptionTopic.eventTrigger.resource when they are present." )
1513        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/subscription-types")
1514        protected UriType resource;
1515
1516        /**
1517         * Either the canonical URL to a search parameter (like "http://hl7.org/fhir/SearchParameter/encounter-patient") or topic-defined parameter (like "hub.event") which is a label for the filter.
1518         */
1519        @Child(name = "filterParameter", type = {StringType.class}, order=3, min=1, max=1, modifier=false, summary=true)
1520        @Description(shortDefinition="Human-readable and computation-friendly name for a filter parameter usable by subscriptions on this topic, via Subscription.filterBy.filterParameter", formalDefinition="Either the canonical URL to a search parameter (like \"http://hl7.org/fhir/SearchParameter/encounter-patient\") or topic-defined parameter (like \"hub.event\") which is a label for the filter." )
1521        protected StringType filterParameter;
1522
1523        /**
1524         * Either the canonical URL to a search parameter (like "http://hl7.org/fhir/SearchParameter/encounter-patient") or the officially-defined URI for a shared filter concept (like "http://example.org/concepts/shared-common-event").
1525         */
1526        @Child(name = "filterDefinition", type = {UriType.class}, order=4, min=0, max=1, modifier=false, summary=true)
1527        @Description(shortDefinition="Canonical URL for a filterParameter definition", formalDefinition="Either the canonical URL to a search parameter (like \"http://hl7.org/fhir/SearchParameter/encounter-patient\") or the officially-defined URI for a shared filter concept (like \"http://example.org/concepts/shared-common-event\")." )
1528        protected UriType filterDefinition;
1529
1530        /**
1531         * Comparators allowed for the filter parameter.
1532         */
1533        @Child(name = "comparator", type = {CodeType.class}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1534        @Description(shortDefinition="eq | ne | gt | lt | ge | le | sa | eb | ap", formalDefinition="Comparators allowed for the filter parameter." )
1535        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/search-comparator")
1536        protected List<Enumeration<SearchComparator>> comparator;
1537
1538        /**
1539         * Modifiers allowed for the filter parameter.
1540         */
1541        @Child(name = "modifier", type = {CodeType.class}, order=6, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1542        @Description(shortDefinition="missing | exact | contains | not | text | in | not-in | below | above | type | identifier | of-type | code-text | text-advanced | iterate", formalDefinition="Modifiers allowed for the filter parameter." )
1543        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/search-modifier-code")
1544        protected List<Enumeration<SearchModifierCode>> modifier;
1545
1546        private static final long serialVersionUID = -1521606527L;
1547
1548    /**
1549     * Constructor
1550     */
1551      public SubscriptionTopicCanFilterByComponent() {
1552        super();
1553      }
1554
1555    /**
1556     * Constructor
1557     */
1558      public SubscriptionTopicCanFilterByComponent(String filterParameter) {
1559        super();
1560        this.setFilterParameter(filterParameter);
1561      }
1562
1563        /**
1564         * @return {@link #description} (Description of how this filtering parameter is intended to be used.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
1565         */
1566        public MarkdownType getDescriptionElement() { 
1567          if (this.description == null)
1568            if (Configuration.errorOnAutoCreate())
1569              throw new Error("Attempt to auto-create SubscriptionTopicCanFilterByComponent.description");
1570            else if (Configuration.doAutoCreate())
1571              this.description = new MarkdownType(); // bb
1572          return this.description;
1573        }
1574
1575        public boolean hasDescriptionElement() { 
1576          return this.description != null && !this.description.isEmpty();
1577        }
1578
1579        public boolean hasDescription() { 
1580          return this.description != null && !this.description.isEmpty();
1581        }
1582
1583        /**
1584         * @param value {@link #description} (Description of how this filtering parameter is intended to be used.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
1585         */
1586        public SubscriptionTopicCanFilterByComponent setDescriptionElement(MarkdownType value) { 
1587          this.description = value;
1588          return this;
1589        }
1590
1591        /**
1592         * @return Description of how this filtering parameter is intended to be used.
1593         */
1594        public String getDescription() { 
1595          return this.description == null ? null : this.description.getValue();
1596        }
1597
1598        /**
1599         * @param value Description of how this filtering parameter is intended to be used.
1600         */
1601        public SubscriptionTopicCanFilterByComponent setDescription(String value) { 
1602          if (Utilities.noString(value))
1603            this.description = null;
1604          else {
1605            if (this.description == null)
1606              this.description = new MarkdownType();
1607            this.description.setValue(value);
1608          }
1609          return this;
1610        }
1611
1612        /**
1613         * @return {@link #resource} (URL of the Resource that is the type used in this filter. This is the "focus" of the topic (or one of them if there are more than one). It will be the same, a generality, or a specificity of SubscriptionTopic.resourceTrigger.resource or SubscriptionTopic.eventTrigger.resource when they are present.). This is the underlying object with id, value and extensions. The accessor "getResource" gives direct access to the value
1614         */
1615        public UriType getResourceElement() { 
1616          if (this.resource == null)
1617            if (Configuration.errorOnAutoCreate())
1618              throw new Error("Attempt to auto-create SubscriptionTopicCanFilterByComponent.resource");
1619            else if (Configuration.doAutoCreate())
1620              this.resource = new UriType(); // bb
1621          return this.resource;
1622        }
1623
1624        public boolean hasResourceElement() { 
1625          return this.resource != null && !this.resource.isEmpty();
1626        }
1627
1628        public boolean hasResource() { 
1629          return this.resource != null && !this.resource.isEmpty();
1630        }
1631
1632        /**
1633         * @param value {@link #resource} (URL of the Resource that is the type used in this filter. This is the "focus" of the topic (or one of them if there are more than one). It will be the same, a generality, or a specificity of SubscriptionTopic.resourceTrigger.resource or SubscriptionTopic.eventTrigger.resource when they are present.). This is the underlying object with id, value and extensions. The accessor "getResource" gives direct access to the value
1634         */
1635        public SubscriptionTopicCanFilterByComponent setResourceElement(UriType value) { 
1636          this.resource = value;
1637          return this;
1638        }
1639
1640        /**
1641         * @return URL of the Resource that is the type used in this filter. This is the "focus" of the topic (or one of them if there are more than one). It will be the same, a generality, or a specificity of SubscriptionTopic.resourceTrigger.resource or SubscriptionTopic.eventTrigger.resource when they are present.
1642         */
1643        public String getResource() { 
1644          return this.resource == null ? null : this.resource.getValue();
1645        }
1646
1647        /**
1648         * @param value URL of the Resource that is the type used in this filter. This is the "focus" of the topic (or one of them if there are more than one). It will be the same, a generality, or a specificity of SubscriptionTopic.resourceTrigger.resource or SubscriptionTopic.eventTrigger.resource when they are present.
1649         */
1650        public SubscriptionTopicCanFilterByComponent setResource(String value) { 
1651          if (Utilities.noString(value))
1652            this.resource = null;
1653          else {
1654            if (this.resource == null)
1655              this.resource = new UriType();
1656            this.resource.setValue(value);
1657          }
1658          return this;
1659        }
1660
1661        /**
1662         * @return {@link #filterParameter} (Either the canonical URL to a search parameter (like "http://hl7.org/fhir/SearchParameter/encounter-patient") or topic-defined parameter (like "hub.event") which is a label for the filter.). This is the underlying object with id, value and extensions. The accessor "getFilterParameter" gives direct access to the value
1663         */
1664        public StringType getFilterParameterElement() { 
1665          if (this.filterParameter == null)
1666            if (Configuration.errorOnAutoCreate())
1667              throw new Error("Attempt to auto-create SubscriptionTopicCanFilterByComponent.filterParameter");
1668            else if (Configuration.doAutoCreate())
1669              this.filterParameter = new StringType(); // bb
1670          return this.filterParameter;
1671        }
1672
1673        public boolean hasFilterParameterElement() { 
1674          return this.filterParameter != null && !this.filterParameter.isEmpty();
1675        }
1676
1677        public boolean hasFilterParameter() { 
1678          return this.filterParameter != null && !this.filterParameter.isEmpty();
1679        }
1680
1681        /**
1682         * @param value {@link #filterParameter} (Either the canonical URL to a search parameter (like "http://hl7.org/fhir/SearchParameter/encounter-patient") or topic-defined parameter (like "hub.event") which is a label for the filter.). This is the underlying object with id, value and extensions. The accessor "getFilterParameter" gives direct access to the value
1683         */
1684        public SubscriptionTopicCanFilterByComponent setFilterParameterElement(StringType value) { 
1685          this.filterParameter = value;
1686          return this;
1687        }
1688
1689        /**
1690         * @return Either the canonical URL to a search parameter (like "http://hl7.org/fhir/SearchParameter/encounter-patient") or topic-defined parameter (like "hub.event") which is a label for the filter.
1691         */
1692        public String getFilterParameter() { 
1693          return this.filterParameter == null ? null : this.filterParameter.getValue();
1694        }
1695
1696        /**
1697         * @param value Either the canonical URL to a search parameter (like "http://hl7.org/fhir/SearchParameter/encounter-patient") or topic-defined parameter (like "hub.event") which is a label for the filter.
1698         */
1699        public SubscriptionTopicCanFilterByComponent setFilterParameter(String value) { 
1700            if (this.filterParameter == null)
1701              this.filterParameter = new StringType();
1702            this.filterParameter.setValue(value);
1703          return this;
1704        }
1705
1706        /**
1707         * @return {@link #filterDefinition} (Either the canonical URL to a search parameter (like "http://hl7.org/fhir/SearchParameter/encounter-patient") or the officially-defined URI for a shared filter concept (like "http://example.org/concepts/shared-common-event").). This is the underlying object with id, value and extensions. The accessor "getFilterDefinition" gives direct access to the value
1708         */
1709        public UriType getFilterDefinitionElement() { 
1710          if (this.filterDefinition == null)
1711            if (Configuration.errorOnAutoCreate())
1712              throw new Error("Attempt to auto-create SubscriptionTopicCanFilterByComponent.filterDefinition");
1713            else if (Configuration.doAutoCreate())
1714              this.filterDefinition = new UriType(); // bb
1715          return this.filterDefinition;
1716        }
1717
1718        public boolean hasFilterDefinitionElement() { 
1719          return this.filterDefinition != null && !this.filterDefinition.isEmpty();
1720        }
1721
1722        public boolean hasFilterDefinition() { 
1723          return this.filterDefinition != null && !this.filterDefinition.isEmpty();
1724        }
1725
1726        /**
1727         * @param value {@link #filterDefinition} (Either the canonical URL to a search parameter (like "http://hl7.org/fhir/SearchParameter/encounter-patient") or the officially-defined URI for a shared filter concept (like "http://example.org/concepts/shared-common-event").). This is the underlying object with id, value and extensions. The accessor "getFilterDefinition" gives direct access to the value
1728         */
1729        public SubscriptionTopicCanFilterByComponent setFilterDefinitionElement(UriType value) { 
1730          this.filterDefinition = value;
1731          return this;
1732        }
1733
1734        /**
1735         * @return Either the canonical URL to a search parameter (like "http://hl7.org/fhir/SearchParameter/encounter-patient") or the officially-defined URI for a shared filter concept (like "http://example.org/concepts/shared-common-event").
1736         */
1737        public String getFilterDefinition() { 
1738          return this.filterDefinition == null ? null : this.filterDefinition.getValue();
1739        }
1740
1741        /**
1742         * @param value Either the canonical URL to a search parameter (like "http://hl7.org/fhir/SearchParameter/encounter-patient") or the officially-defined URI for a shared filter concept (like "http://example.org/concepts/shared-common-event").
1743         */
1744        public SubscriptionTopicCanFilterByComponent setFilterDefinition(String value) { 
1745          if (Utilities.noString(value))
1746            this.filterDefinition = null;
1747          else {
1748            if (this.filterDefinition == null)
1749              this.filterDefinition = new UriType();
1750            this.filterDefinition.setValue(value);
1751          }
1752          return this;
1753        }
1754
1755        /**
1756         * @return {@link #comparator} (Comparators allowed for the filter parameter.)
1757         */
1758        public List<Enumeration<SearchComparator>> getComparator() { 
1759          if (this.comparator == null)
1760            this.comparator = new ArrayList<Enumeration<SearchComparator>>();
1761          return this.comparator;
1762        }
1763
1764        /**
1765         * @return Returns a reference to <code>this</code> for easy method chaining
1766         */
1767        public SubscriptionTopicCanFilterByComponent setComparator(List<Enumeration<SearchComparator>> theComparator) { 
1768          this.comparator = theComparator;
1769          return this;
1770        }
1771
1772        public boolean hasComparator() { 
1773          if (this.comparator == null)
1774            return false;
1775          for (Enumeration<SearchComparator> item : this.comparator)
1776            if (!item.isEmpty())
1777              return true;
1778          return false;
1779        }
1780
1781        /**
1782         * @return {@link #comparator} (Comparators allowed for the filter parameter.)
1783         */
1784        public Enumeration<SearchComparator> addComparatorElement() {//2 
1785          Enumeration<SearchComparator> t = new Enumeration<SearchComparator>(new SearchComparatorEnumFactory());
1786          if (this.comparator == null)
1787            this.comparator = new ArrayList<Enumeration<SearchComparator>>();
1788          this.comparator.add(t);
1789          return t;
1790        }
1791
1792        /**
1793         * @param value {@link #comparator} (Comparators allowed for the filter parameter.)
1794         */
1795        public SubscriptionTopicCanFilterByComponent addComparator(SearchComparator value) { //1
1796          Enumeration<SearchComparator> t = new Enumeration<SearchComparator>(new SearchComparatorEnumFactory());
1797          t.setValue(value);
1798          if (this.comparator == null)
1799            this.comparator = new ArrayList<Enumeration<SearchComparator>>();
1800          this.comparator.add(t);
1801          return this;
1802        }
1803
1804        /**
1805         * @param value {@link #comparator} (Comparators allowed for the filter parameter.)
1806         */
1807        public boolean hasComparator(SearchComparator value) { 
1808          if (this.comparator == null)
1809            return false;
1810          for (Enumeration<SearchComparator> v : this.comparator)
1811            if (v.getValue().equals(value)) // code
1812              return true;
1813          return false;
1814        }
1815
1816        /**
1817         * @return {@link #modifier} (Modifiers allowed for the filter parameter.)
1818         */
1819        public List<Enumeration<SearchModifierCode>> getModifier() { 
1820          if (this.modifier == null)
1821            this.modifier = new ArrayList<Enumeration<SearchModifierCode>>();
1822          return this.modifier;
1823        }
1824
1825        /**
1826         * @return Returns a reference to <code>this</code> for easy method chaining
1827         */
1828        public SubscriptionTopicCanFilterByComponent setModifier(List<Enumeration<SearchModifierCode>> theModifier) { 
1829          this.modifier = theModifier;
1830          return this;
1831        }
1832
1833        public boolean hasModifier() { 
1834          if (this.modifier == null)
1835            return false;
1836          for (Enumeration<SearchModifierCode> item : this.modifier)
1837            if (!item.isEmpty())
1838              return true;
1839          return false;
1840        }
1841
1842        /**
1843         * @return {@link #modifier} (Modifiers allowed for the filter parameter.)
1844         */
1845        public Enumeration<SearchModifierCode> addModifierElement() {//2 
1846          Enumeration<SearchModifierCode> t = new Enumeration<SearchModifierCode>(new SearchModifierCodeEnumFactory());
1847          if (this.modifier == null)
1848            this.modifier = new ArrayList<Enumeration<SearchModifierCode>>();
1849          this.modifier.add(t);
1850          return t;
1851        }
1852
1853        /**
1854         * @param value {@link #modifier} (Modifiers allowed for the filter parameter.)
1855         */
1856        public SubscriptionTopicCanFilterByComponent addModifier(SearchModifierCode value) { //1
1857          Enumeration<SearchModifierCode> t = new Enumeration<SearchModifierCode>(new SearchModifierCodeEnumFactory());
1858          t.setValue(value);
1859          if (this.modifier == null)
1860            this.modifier = new ArrayList<Enumeration<SearchModifierCode>>();
1861          this.modifier.add(t);
1862          return this;
1863        }
1864
1865        /**
1866         * @param value {@link #modifier} (Modifiers allowed for the filter parameter.)
1867         */
1868        public boolean hasModifier(SearchModifierCode value) { 
1869          if (this.modifier == null)
1870            return false;
1871          for (Enumeration<SearchModifierCode> v : this.modifier)
1872            if (v.getValue().equals(value)) // code
1873              return true;
1874          return false;
1875        }
1876
1877        protected void listChildren(List<Property> children) {
1878          super.listChildren(children);
1879          children.add(new Property("description", "markdown", "Description of how this filtering parameter is intended to be used.", 0, 1, description));
1880          children.add(new Property("resource", "uri", "URL of the Resource that is the type used in this filter. This is the \"focus\" of the topic (or one of them if there are more than one). It will be the same, a generality, or a specificity of SubscriptionTopic.resourceTrigger.resource or SubscriptionTopic.eventTrigger.resource when they are present.", 0, 1, resource));
1881          children.add(new Property("filterParameter", "string", "Either the canonical URL to a search parameter (like \"http://hl7.org/fhir/SearchParameter/encounter-patient\") or topic-defined parameter (like \"hub.event\") which is a label for the filter.", 0, 1, filterParameter));
1882          children.add(new Property("filterDefinition", "uri", "Either the canonical URL to a search parameter (like \"http://hl7.org/fhir/SearchParameter/encounter-patient\") or the officially-defined URI for a shared filter concept (like \"http://example.org/concepts/shared-common-event\").", 0, 1, filterDefinition));
1883          children.add(new Property("comparator", "code", "Comparators allowed for the filter parameter.", 0, java.lang.Integer.MAX_VALUE, comparator));
1884          children.add(new Property("modifier", "code", "Modifiers allowed for the filter parameter.", 0, java.lang.Integer.MAX_VALUE, modifier));
1885        }
1886
1887        @Override
1888        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1889          switch (_hash) {
1890          case -1724546052: /*description*/  return new Property("description", "markdown", "Description of how this filtering parameter is intended to be used.", 0, 1, description);
1891          case -341064690: /*resource*/  return new Property("resource", "uri", "URL of the Resource that is the type used in this filter. This is the \"focus\" of the topic (or one of them if there are more than one). It will be the same, a generality, or a specificity of SubscriptionTopic.resourceTrigger.resource or SubscriptionTopic.eventTrigger.resource when they are present.", 0, 1, resource);
1892          case 618257: /*filterParameter*/  return new Property("filterParameter", "string", "Either the canonical URL to a search parameter (like \"http://hl7.org/fhir/SearchParameter/encounter-patient\") or topic-defined parameter (like \"hub.event\") which is a label for the filter.", 0, 1, filterParameter);
1893          case -1453988117: /*filterDefinition*/  return new Property("filterDefinition", "uri", "Either the canonical URL to a search parameter (like \"http://hl7.org/fhir/SearchParameter/encounter-patient\") or the officially-defined URI for a shared filter concept (like \"http://example.org/concepts/shared-common-event\").", 0, 1, filterDefinition);
1894          case -844673834: /*comparator*/  return new Property("comparator", "code", "Comparators allowed for the filter parameter.", 0, java.lang.Integer.MAX_VALUE, comparator);
1895          case -615513385: /*modifier*/  return new Property("modifier", "code", "Modifiers allowed for the filter parameter.", 0, java.lang.Integer.MAX_VALUE, modifier);
1896          default: return super.getNamedProperty(_hash, _name, _checkValid);
1897          }
1898
1899        }
1900
1901      @Override
1902      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1903        switch (hash) {
1904        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // MarkdownType
1905        case -341064690: /*resource*/ return this.resource == null ? new Base[0] : new Base[] {this.resource}; // UriType
1906        case 618257: /*filterParameter*/ return this.filterParameter == null ? new Base[0] : new Base[] {this.filterParameter}; // StringType
1907        case -1453988117: /*filterDefinition*/ return this.filterDefinition == null ? new Base[0] : new Base[] {this.filterDefinition}; // UriType
1908        case -844673834: /*comparator*/ return this.comparator == null ? new Base[0] : this.comparator.toArray(new Base[this.comparator.size()]); // Enumeration<SearchComparator>
1909        case -615513385: /*modifier*/ return this.modifier == null ? new Base[0] : this.modifier.toArray(new Base[this.modifier.size()]); // Enumeration<SearchModifierCode>
1910        default: return super.getProperty(hash, name, checkValid);
1911        }
1912
1913      }
1914
1915      @Override
1916      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1917        switch (hash) {
1918        case -1724546052: // description
1919          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
1920          return value;
1921        case -341064690: // resource
1922          this.resource = TypeConvertor.castToUri(value); // UriType
1923          return value;
1924        case 618257: // filterParameter
1925          this.filterParameter = TypeConvertor.castToString(value); // StringType
1926          return value;
1927        case -1453988117: // filterDefinition
1928          this.filterDefinition = TypeConvertor.castToUri(value); // UriType
1929          return value;
1930        case -844673834: // comparator
1931          value = new SearchComparatorEnumFactory().fromType(TypeConvertor.castToCode(value));
1932          this.getComparator().add((Enumeration) value); // Enumeration<SearchComparator>
1933          return value;
1934        case -615513385: // modifier
1935          value = new SearchModifierCodeEnumFactory().fromType(TypeConvertor.castToCode(value));
1936          this.getModifier().add((Enumeration) value); // Enumeration<SearchModifierCode>
1937          return value;
1938        default: return super.setProperty(hash, name, value);
1939        }
1940
1941      }
1942
1943      @Override
1944      public Base setProperty(String name, Base value) throws FHIRException {
1945        if (name.equals("description")) {
1946          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
1947        } else if (name.equals("resource")) {
1948          this.resource = TypeConvertor.castToUri(value); // UriType
1949        } else if (name.equals("filterParameter")) {
1950          this.filterParameter = TypeConvertor.castToString(value); // StringType
1951        } else if (name.equals("filterDefinition")) {
1952          this.filterDefinition = TypeConvertor.castToUri(value); // UriType
1953        } else if (name.equals("comparator")) {
1954          value = new SearchComparatorEnumFactory().fromType(TypeConvertor.castToCode(value));
1955          this.getComparator().add((Enumeration) value);
1956        } else if (name.equals("modifier")) {
1957          value = new SearchModifierCodeEnumFactory().fromType(TypeConvertor.castToCode(value));
1958          this.getModifier().add((Enumeration) value);
1959        } else
1960          return super.setProperty(name, value);
1961        return value;
1962      }
1963
1964      @Override
1965      public Base makeProperty(int hash, String name) throws FHIRException {
1966        switch (hash) {
1967        case -1724546052:  return getDescriptionElement();
1968        case -341064690:  return getResourceElement();
1969        case 618257:  return getFilterParameterElement();
1970        case -1453988117:  return getFilterDefinitionElement();
1971        case -844673834:  return addComparatorElement();
1972        case -615513385:  return addModifierElement();
1973        default: return super.makeProperty(hash, name);
1974        }
1975
1976      }
1977
1978      @Override
1979      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1980        switch (hash) {
1981        case -1724546052: /*description*/ return new String[] {"markdown"};
1982        case -341064690: /*resource*/ return new String[] {"uri"};
1983        case 618257: /*filterParameter*/ return new String[] {"string"};
1984        case -1453988117: /*filterDefinition*/ return new String[] {"uri"};
1985        case -844673834: /*comparator*/ return new String[] {"code"};
1986        case -615513385: /*modifier*/ return new String[] {"code"};
1987        default: return super.getTypesForProperty(hash, name);
1988        }
1989
1990      }
1991
1992      @Override
1993      public Base addChild(String name) throws FHIRException {
1994        if (name.equals("description")) {
1995          throw new FHIRException("Cannot call addChild on a singleton property SubscriptionTopic.canFilterBy.description");
1996        }
1997        else if (name.equals("resource")) {
1998          throw new FHIRException("Cannot call addChild on a singleton property SubscriptionTopic.canFilterBy.resource");
1999        }
2000        else if (name.equals("filterParameter")) {
2001          throw new FHIRException("Cannot call addChild on a singleton property SubscriptionTopic.canFilterBy.filterParameter");
2002        }
2003        else if (name.equals("filterDefinition")) {
2004          throw new FHIRException("Cannot call addChild on a singleton property SubscriptionTopic.canFilterBy.filterDefinition");
2005        }
2006        else if (name.equals("comparator")) {
2007          throw new FHIRException("Cannot call addChild on a singleton property SubscriptionTopic.canFilterBy.comparator");
2008        }
2009        else if (name.equals("modifier")) {
2010          throw new FHIRException("Cannot call addChild on a singleton property SubscriptionTopic.canFilterBy.modifier");
2011        }
2012        else
2013          return super.addChild(name);
2014      }
2015
2016      public SubscriptionTopicCanFilterByComponent copy() {
2017        SubscriptionTopicCanFilterByComponent dst = new SubscriptionTopicCanFilterByComponent();
2018        copyValues(dst);
2019        return dst;
2020      }
2021
2022      public void copyValues(SubscriptionTopicCanFilterByComponent dst) {
2023        super.copyValues(dst);
2024        dst.description = description == null ? null : description.copy();
2025        dst.resource = resource == null ? null : resource.copy();
2026        dst.filterParameter = filterParameter == null ? null : filterParameter.copy();
2027        dst.filterDefinition = filterDefinition == null ? null : filterDefinition.copy();
2028        if (comparator != null) {
2029          dst.comparator = new ArrayList<Enumeration<SearchComparator>>();
2030          for (Enumeration<SearchComparator> i : comparator)
2031            dst.comparator.add(i.copy());
2032        };
2033        if (modifier != null) {
2034          dst.modifier = new ArrayList<Enumeration<SearchModifierCode>>();
2035          for (Enumeration<SearchModifierCode> i : modifier)
2036            dst.modifier.add(i.copy());
2037        };
2038      }
2039
2040      @Override
2041      public boolean equalsDeep(Base other_) {
2042        if (!super.equalsDeep(other_))
2043          return false;
2044        if (!(other_ instanceof SubscriptionTopicCanFilterByComponent))
2045          return false;
2046        SubscriptionTopicCanFilterByComponent o = (SubscriptionTopicCanFilterByComponent) other_;
2047        return compareDeep(description, o.description, true) && compareDeep(resource, o.resource, true)
2048           && compareDeep(filterParameter, o.filterParameter, true) && compareDeep(filterDefinition, o.filterDefinition, true)
2049           && compareDeep(comparator, o.comparator, true) && compareDeep(modifier, o.modifier, true);
2050      }
2051
2052      @Override
2053      public boolean equalsShallow(Base other_) {
2054        if (!super.equalsShallow(other_))
2055          return false;
2056        if (!(other_ instanceof SubscriptionTopicCanFilterByComponent))
2057          return false;
2058        SubscriptionTopicCanFilterByComponent o = (SubscriptionTopicCanFilterByComponent) other_;
2059        return compareValues(description, o.description, true) && compareValues(resource, o.resource, true)
2060           && compareValues(filterParameter, o.filterParameter, true) && compareValues(filterDefinition, o.filterDefinition, true)
2061           && compareValues(comparator, o.comparator, true) && compareValues(modifier, o.modifier, true);
2062      }
2063
2064      public boolean isEmpty() {
2065        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(description, resource, filterParameter
2066          , filterDefinition, comparator, modifier);
2067      }
2068
2069  public String fhirType() {
2070    return "SubscriptionTopic.canFilterBy";
2071
2072  }
2073
2074  }
2075
2076    @Block()
2077    public static class SubscriptionTopicNotificationShapeComponent extends BackboneElement implements IBaseBackboneElement {
2078        /**
2079         * URL of the Resource that is the type used in this shape. This is the 'focus' resource of the topic (or one of them if there are more than one) and the root resource for this shape definition. It will be the same, a generality, or a specificity of SubscriptionTopic.resourceTrigger.resource or SubscriptionTopic.eventTrigger.resource when they are present.
2080         */
2081        @Child(name = "resource", type = {UriType.class}, order=1, min=1, max=1, modifier=false, summary=true)
2082        @Description(shortDefinition="URL of the Resource that is the focus (main) resource in a notification shape", formalDefinition="URL of the Resource that is the type used in this shape. This is the 'focus' resource of the topic (or one of them if there are more than one) and the root resource for this shape definition. It will be the same, a generality, or a specificity of SubscriptionTopic.resourceTrigger.resource or SubscriptionTopic.eventTrigger.resource when they are present." )
2083        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/subscription-types")
2084        protected UriType resource;
2085
2086        /**
2087         * Search-style _include directives, rooted in the resource for this shape. Servers SHOULD include resources listed here, if they exist and the user is authorized to receive them.  Clients SHOULD be prepared to receive these additional resources, but SHALL function properly without them.
2088         */
2089        @Child(name = "include", type = {StringType.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
2090        @Description(shortDefinition="Include directives, rooted in the resource for this shape", formalDefinition="Search-style _include directives, rooted in the resource for this shape. Servers SHOULD include resources listed here, if they exist and the user is authorized to receive them.  Clients SHOULD be prepared to receive these additional resources, but SHALL function properly without them." )
2091        protected List<StringType> include;
2092
2093        /**
2094         * Search-style _revinclude directives, rooted in the resource for this shape. Servers SHOULD include resources listed here, if they exist and the user is authorized to receive them.  Clients SHOULD be prepared to receive these additional resources, but SHALL function properly without them.
2095         */
2096        @Child(name = "revInclude", type = {StringType.class}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
2097        @Description(shortDefinition="Reverse include directives, rooted in the resource for this shape", formalDefinition="Search-style _revinclude directives, rooted in the resource for this shape. Servers SHOULD include resources listed here, if they exist and the user is authorized to receive them.  Clients SHOULD be prepared to receive these additional resources, but SHALL function properly without them." )
2098        protected List<StringType> revInclude;
2099
2100        private static final long serialVersionUID = -1718592091L;
2101
2102    /**
2103     * Constructor
2104     */
2105      public SubscriptionTopicNotificationShapeComponent() {
2106        super();
2107      }
2108
2109    /**
2110     * Constructor
2111     */
2112      public SubscriptionTopicNotificationShapeComponent(String resource) {
2113        super();
2114        this.setResource(resource);
2115      }
2116
2117        /**
2118         * @return {@link #resource} (URL of the Resource that is the type used in this shape. This is the 'focus' resource of the topic (or one of them if there are more than one) and the root resource for this shape definition. It will be the same, a generality, or a specificity of SubscriptionTopic.resourceTrigger.resource or SubscriptionTopic.eventTrigger.resource when they are present.). This is the underlying object with id, value and extensions. The accessor "getResource" gives direct access to the value
2119         */
2120        public UriType getResourceElement() { 
2121          if (this.resource == null)
2122            if (Configuration.errorOnAutoCreate())
2123              throw new Error("Attempt to auto-create SubscriptionTopicNotificationShapeComponent.resource");
2124            else if (Configuration.doAutoCreate())
2125              this.resource = new UriType(); // bb
2126          return this.resource;
2127        }
2128
2129        public boolean hasResourceElement() { 
2130          return this.resource != null && !this.resource.isEmpty();
2131        }
2132
2133        public boolean hasResource() { 
2134          return this.resource != null && !this.resource.isEmpty();
2135        }
2136
2137        /**
2138         * @param value {@link #resource} (URL of the Resource that is the type used in this shape. This is the 'focus' resource of the topic (or one of them if there are more than one) and the root resource for this shape definition. It will be the same, a generality, or a specificity of SubscriptionTopic.resourceTrigger.resource or SubscriptionTopic.eventTrigger.resource when they are present.). This is the underlying object with id, value and extensions. The accessor "getResource" gives direct access to the value
2139         */
2140        public SubscriptionTopicNotificationShapeComponent setResourceElement(UriType value) { 
2141          this.resource = value;
2142          return this;
2143        }
2144
2145        /**
2146         * @return URL of the Resource that is the type used in this shape. This is the 'focus' resource of the topic (or one of them if there are more than one) and the root resource for this shape definition. It will be the same, a generality, or a specificity of SubscriptionTopic.resourceTrigger.resource or SubscriptionTopic.eventTrigger.resource when they are present.
2147         */
2148        public String getResource() { 
2149          return this.resource == null ? null : this.resource.getValue();
2150        }
2151
2152        /**
2153         * @param value URL of the Resource that is the type used in this shape. This is the 'focus' resource of the topic (or one of them if there are more than one) and the root resource for this shape definition. It will be the same, a generality, or a specificity of SubscriptionTopic.resourceTrigger.resource or SubscriptionTopic.eventTrigger.resource when they are present.
2154         */
2155        public SubscriptionTopicNotificationShapeComponent setResource(String value) { 
2156            if (this.resource == null)
2157              this.resource = new UriType();
2158            this.resource.setValue(value);
2159          return this;
2160        }
2161
2162        /**
2163         * @return {@link #include} (Search-style _include directives, rooted in the resource for this shape. Servers SHOULD include resources listed here, if they exist and the user is authorized to receive them.  Clients SHOULD be prepared to receive these additional resources, but SHALL function properly without them.)
2164         */
2165        public List<StringType> getInclude() { 
2166          if (this.include == null)
2167            this.include = new ArrayList<StringType>();
2168          return this.include;
2169        }
2170
2171        /**
2172         * @return Returns a reference to <code>this</code> for easy method chaining
2173         */
2174        public SubscriptionTopicNotificationShapeComponent setInclude(List<StringType> theInclude) { 
2175          this.include = theInclude;
2176          return this;
2177        }
2178
2179        public boolean hasInclude() { 
2180          if (this.include == null)
2181            return false;
2182          for (StringType item : this.include)
2183            if (!item.isEmpty())
2184              return true;
2185          return false;
2186        }
2187
2188        /**
2189         * @return {@link #include} (Search-style _include directives, rooted in the resource for this shape. Servers SHOULD include resources listed here, if they exist and the user is authorized to receive them.  Clients SHOULD be prepared to receive these additional resources, but SHALL function properly without them.)
2190         */
2191        public StringType addIncludeElement() {//2 
2192          StringType t = new StringType();
2193          if (this.include == null)
2194            this.include = new ArrayList<StringType>();
2195          this.include.add(t);
2196          return t;
2197        }
2198
2199        /**
2200         * @param value {@link #include} (Search-style _include directives, rooted in the resource for this shape. Servers SHOULD include resources listed here, if they exist and the user is authorized to receive them.  Clients SHOULD be prepared to receive these additional resources, but SHALL function properly without them.)
2201         */
2202        public SubscriptionTopicNotificationShapeComponent addInclude(String value) { //1
2203          StringType t = new StringType();
2204          t.setValue(value);
2205          if (this.include == null)
2206            this.include = new ArrayList<StringType>();
2207          this.include.add(t);
2208          return this;
2209        }
2210
2211        /**
2212         * @param value {@link #include} (Search-style _include directives, rooted in the resource for this shape. Servers SHOULD include resources listed here, if they exist and the user is authorized to receive them.  Clients SHOULD be prepared to receive these additional resources, but SHALL function properly without them.)
2213         */
2214        public boolean hasInclude(String value) { 
2215          if (this.include == null)
2216            return false;
2217          for (StringType v : this.include)
2218            if (v.getValue().equals(value)) // string
2219              return true;
2220          return false;
2221        }
2222
2223        /**
2224         * @return {@link #revInclude} (Search-style _revinclude directives, rooted in the resource for this shape. Servers SHOULD include resources listed here, if they exist and the user is authorized to receive them.  Clients SHOULD be prepared to receive these additional resources, but SHALL function properly without them.)
2225         */
2226        public List<StringType> getRevInclude() { 
2227          if (this.revInclude == null)
2228            this.revInclude = new ArrayList<StringType>();
2229          return this.revInclude;
2230        }
2231
2232        /**
2233         * @return Returns a reference to <code>this</code> for easy method chaining
2234         */
2235        public SubscriptionTopicNotificationShapeComponent setRevInclude(List<StringType> theRevInclude) { 
2236          this.revInclude = theRevInclude;
2237          return this;
2238        }
2239
2240        public boolean hasRevInclude() { 
2241          if (this.revInclude == null)
2242            return false;
2243          for (StringType item : this.revInclude)
2244            if (!item.isEmpty())
2245              return true;
2246          return false;
2247        }
2248
2249        /**
2250         * @return {@link #revInclude} (Search-style _revinclude directives, rooted in the resource for this shape. Servers SHOULD include resources listed here, if they exist and the user is authorized to receive them.  Clients SHOULD be prepared to receive these additional resources, but SHALL function properly without them.)
2251         */
2252        public StringType addRevIncludeElement() {//2 
2253          StringType t = new StringType();
2254          if (this.revInclude == null)
2255            this.revInclude = new ArrayList<StringType>();
2256          this.revInclude.add(t);
2257          return t;
2258        }
2259
2260        /**
2261         * @param value {@link #revInclude} (Search-style _revinclude directives, rooted in the resource for this shape. Servers SHOULD include resources listed here, if they exist and the user is authorized to receive them.  Clients SHOULD be prepared to receive these additional resources, but SHALL function properly without them.)
2262         */
2263        public SubscriptionTopicNotificationShapeComponent addRevInclude(String value) { //1
2264          StringType t = new StringType();
2265          t.setValue(value);
2266          if (this.revInclude == null)
2267            this.revInclude = new ArrayList<StringType>();
2268          this.revInclude.add(t);
2269          return this;
2270        }
2271
2272        /**
2273         * @param value {@link #revInclude} (Search-style _revinclude directives, rooted in the resource for this shape. Servers SHOULD include resources listed here, if they exist and the user is authorized to receive them.  Clients SHOULD be prepared to receive these additional resources, but SHALL function properly without them.)
2274         */
2275        public boolean hasRevInclude(String value) { 
2276          if (this.revInclude == null)
2277            return false;
2278          for (StringType v : this.revInclude)
2279            if (v.getValue().equals(value)) // string
2280              return true;
2281          return false;
2282        }
2283
2284        protected void listChildren(List<Property> children) {
2285          super.listChildren(children);
2286          children.add(new Property("resource", "uri", "URL of the Resource that is the type used in this shape. This is the 'focus' resource of the topic (or one of them if there are more than one) and the root resource for this shape definition. It will be the same, a generality, or a specificity of SubscriptionTopic.resourceTrigger.resource or SubscriptionTopic.eventTrigger.resource when they are present.", 0, 1, resource));
2287          children.add(new Property("include", "string", "Search-style _include directives, rooted in the resource for this shape. Servers SHOULD include resources listed here, if they exist and the user is authorized to receive them.  Clients SHOULD be prepared to receive these additional resources, but SHALL function properly without them.", 0, java.lang.Integer.MAX_VALUE, include));
2288          children.add(new Property("revInclude", "string", "Search-style _revinclude directives, rooted in the resource for this shape. Servers SHOULD include resources listed here, if they exist and the user is authorized to receive them.  Clients SHOULD be prepared to receive these additional resources, but SHALL function properly without them.", 0, java.lang.Integer.MAX_VALUE, revInclude));
2289        }
2290
2291        @Override
2292        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
2293          switch (_hash) {
2294          case -341064690: /*resource*/  return new Property("resource", "uri", "URL of the Resource that is the type used in this shape. This is the 'focus' resource of the topic (or one of them if there are more than one) and the root resource for this shape definition. It will be the same, a generality, or a specificity of SubscriptionTopic.resourceTrigger.resource or SubscriptionTopic.eventTrigger.resource when they are present.", 0, 1, resource);
2295          case 1942574248: /*include*/  return new Property("include", "string", "Search-style _include directives, rooted in the resource for this shape. Servers SHOULD include resources listed here, if they exist and the user is authorized to receive them.  Clients SHOULD be prepared to receive these additional resources, but SHALL function properly without them.", 0, java.lang.Integer.MAX_VALUE, include);
2296          case 8439429: /*revInclude*/  return new Property("revInclude", "string", "Search-style _revinclude directives, rooted in the resource for this shape. Servers SHOULD include resources listed here, if they exist and the user is authorized to receive them.  Clients SHOULD be prepared to receive these additional resources, but SHALL function properly without them.", 0, java.lang.Integer.MAX_VALUE, revInclude);
2297          default: return super.getNamedProperty(_hash, _name, _checkValid);
2298          }
2299
2300        }
2301
2302      @Override
2303      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
2304        switch (hash) {
2305        case -341064690: /*resource*/ return this.resource == null ? new Base[0] : new Base[] {this.resource}; // UriType
2306        case 1942574248: /*include*/ return this.include == null ? new Base[0] : this.include.toArray(new Base[this.include.size()]); // StringType
2307        case 8439429: /*revInclude*/ return this.revInclude == null ? new Base[0] : this.revInclude.toArray(new Base[this.revInclude.size()]); // StringType
2308        default: return super.getProperty(hash, name, checkValid);
2309        }
2310
2311      }
2312
2313      @Override
2314      public Base setProperty(int hash, String name, Base value) throws FHIRException {
2315        switch (hash) {
2316        case -341064690: // resource
2317          this.resource = TypeConvertor.castToUri(value); // UriType
2318          return value;
2319        case 1942574248: // include
2320          this.getInclude().add(TypeConvertor.castToString(value)); // StringType
2321          return value;
2322        case 8439429: // revInclude
2323          this.getRevInclude().add(TypeConvertor.castToString(value)); // StringType
2324          return value;
2325        default: return super.setProperty(hash, name, value);
2326        }
2327
2328      }
2329
2330      @Override
2331      public Base setProperty(String name, Base value) throws FHIRException {
2332        if (name.equals("resource")) {
2333          this.resource = TypeConvertor.castToUri(value); // UriType
2334        } else if (name.equals("include")) {
2335          this.getInclude().add(TypeConvertor.castToString(value));
2336        } else if (name.equals("revInclude")) {
2337          this.getRevInclude().add(TypeConvertor.castToString(value));
2338        } else
2339          return super.setProperty(name, value);
2340        return value;
2341      }
2342
2343      @Override
2344      public Base makeProperty(int hash, String name) throws FHIRException {
2345        switch (hash) {
2346        case -341064690:  return getResourceElement();
2347        case 1942574248:  return addIncludeElement();
2348        case 8439429:  return addRevIncludeElement();
2349        default: return super.makeProperty(hash, name);
2350        }
2351
2352      }
2353
2354      @Override
2355      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
2356        switch (hash) {
2357        case -341064690: /*resource*/ return new String[] {"uri"};
2358        case 1942574248: /*include*/ return new String[] {"string"};
2359        case 8439429: /*revInclude*/ return new String[] {"string"};
2360        default: return super.getTypesForProperty(hash, name);
2361        }
2362
2363      }
2364
2365      @Override
2366      public Base addChild(String name) throws FHIRException {
2367        if (name.equals("resource")) {
2368          throw new FHIRException("Cannot call addChild on a singleton property SubscriptionTopic.notificationShape.resource");
2369        }
2370        else if (name.equals("include")) {
2371          throw new FHIRException("Cannot call addChild on a singleton property SubscriptionTopic.notificationShape.include");
2372        }
2373        else if (name.equals("revInclude")) {
2374          throw new FHIRException("Cannot call addChild on a singleton property SubscriptionTopic.notificationShape.revInclude");
2375        }
2376        else
2377          return super.addChild(name);
2378      }
2379
2380      public SubscriptionTopicNotificationShapeComponent copy() {
2381        SubscriptionTopicNotificationShapeComponent dst = new SubscriptionTopicNotificationShapeComponent();
2382        copyValues(dst);
2383        return dst;
2384      }
2385
2386      public void copyValues(SubscriptionTopicNotificationShapeComponent dst) {
2387        super.copyValues(dst);
2388        dst.resource = resource == null ? null : resource.copy();
2389        if (include != null) {
2390          dst.include = new ArrayList<StringType>();
2391          for (StringType i : include)
2392            dst.include.add(i.copy());
2393        };
2394        if (revInclude != null) {
2395          dst.revInclude = new ArrayList<StringType>();
2396          for (StringType i : revInclude)
2397            dst.revInclude.add(i.copy());
2398        };
2399      }
2400
2401      @Override
2402      public boolean equalsDeep(Base other_) {
2403        if (!super.equalsDeep(other_))
2404          return false;
2405        if (!(other_ instanceof SubscriptionTopicNotificationShapeComponent))
2406          return false;
2407        SubscriptionTopicNotificationShapeComponent o = (SubscriptionTopicNotificationShapeComponent) other_;
2408        return compareDeep(resource, o.resource, true) && compareDeep(include, o.include, true) && compareDeep(revInclude, o.revInclude, true)
2409          ;
2410      }
2411
2412      @Override
2413      public boolean equalsShallow(Base other_) {
2414        if (!super.equalsShallow(other_))
2415          return false;
2416        if (!(other_ instanceof SubscriptionTopicNotificationShapeComponent))
2417          return false;
2418        SubscriptionTopicNotificationShapeComponent o = (SubscriptionTopicNotificationShapeComponent) other_;
2419        return compareValues(resource, o.resource, true) && compareValues(include, o.include, true) && compareValues(revInclude, o.revInclude, true)
2420          ;
2421      }
2422
2423      public boolean isEmpty() {
2424        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(resource, include, revInclude
2425          );
2426      }
2427
2428  public String fhirType() {
2429    return "SubscriptionTopic.notificationShape";
2430
2431  }
2432
2433  }
2434
2435    /**
2436     * An absolute URI that is used to identify this subscription topic 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 an authoritative instance of this subscription topic is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the subscription topic is stored on different servers.
2437     */
2438    @Child(name = "url", type = {UriType.class}, order=0, min=1, max=1, modifier=false, summary=true)
2439    @Description(shortDefinition="Canonical identifier for this subscription topic, represented as an absolute URI (globally unique)", formalDefinition="An absolute URI that is used to identify this subscription topic 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 an authoritative instance of this subscription topic is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the subscription topic is stored on different servers." )
2440    protected UriType url;
2441
2442    /**
2443     * Business identifiers assigned to this subscription topic by the performer and/or other systems.  These identifiers remain constant as the resource is updated and propagates from server to server.
2444     */
2445    @Child(name = "identifier", type = {Identifier.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
2446    @Description(shortDefinition="Business identifier for subscription topic", formalDefinition="Business identifiers assigned to this subscription topic by the performer and/or other systems.  These identifiers remain constant as the resource is updated and propagates from server to server." )
2447    protected List<Identifier> identifier;
2448
2449    /**
2450     * The identifier that is used to identify this version of the subscription topic when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the Topic 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 are orderable.
2451     */
2452    @Child(name = "version", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=true)
2453    @Description(shortDefinition="Business version of the subscription topic", formalDefinition="The identifier that is used to identify this version of the subscription topic when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the Topic 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 are orderable." )
2454    protected StringType version;
2455
2456    /**
2457     * Indicates the mechanism used to compare versions to determine which is more current.
2458     */
2459    @Child(name = "versionAlgorithm", type = {StringType.class, Coding.class}, order=3, min=0, max=1, modifier=false, summary=true)
2460    @Description(shortDefinition="How to compare versions", formalDefinition="Indicates the mechanism used to compare versions to determine which is more current." )
2461    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/version-algorithm")
2462    protected DataType versionAlgorithm;
2463
2464    /**
2465     * A natural language name identifying the subscription topic This name should be usable as an identifier for the module by machine processing applications such as code generation.
2466     */
2467    @Child(name = "name", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=true)
2468    @Description(shortDefinition="Name for this subscription topic (computer friendly)", formalDefinition="A natural language name identifying the subscription topic This name should be usable as an identifier for the module by machine processing applications such as code generation." )
2469    protected StringType name;
2470
2471    /**
2472     * A short, descriptive, user-friendly title for the subscription topic.  For example, "admission".
2473     */
2474    @Child(name = "title", type = {StringType.class}, order=5, min=0, max=1, modifier=false, summary=true)
2475    @Description(shortDefinition="Name for this subscription topic (human friendly)", formalDefinition="A short, descriptive, user-friendly title for the subscription topic.  For example, \"admission\"." )
2476    protected StringType title;
2477
2478    /**
2479     * The canonical URL pointing to another FHIR-defined SubscriptionTopic that is adhered to in whole or in part by this SubscriptionTopic.
2480     */
2481    @Child(name = "derivedFrom", type = {CanonicalType.class}, order=6, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
2482    @Description(shortDefinition="Based on FHIR protocol or definition", formalDefinition="The canonical URL pointing to another FHIR-defined SubscriptionTopic that is adhered to in whole or in part by this SubscriptionTopic." )
2483    protected List<CanonicalType> derivedFrom;
2484
2485    /**
2486     * The current state of the SubscriptionTopic.
2487     */
2488    @Child(name = "status", type = {CodeType.class}, order=7, min=1, max=1, modifier=true, summary=true)
2489    @Description(shortDefinition="draft | active | retired | unknown", formalDefinition="The current state of the SubscriptionTopic." )
2490    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/publication-status")
2491    protected Enumeration<PublicationStatus> status;
2492
2493    /**
2494     * A flag to indicate that this TopSubscriptionTopicic is authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage.
2495     */
2496    @Child(name = "experimental", type = {BooleanType.class}, order=8, min=0, max=1, modifier=false, summary=true)
2497    @Description(shortDefinition="If for testing purposes, not real usage", formalDefinition="A flag to indicate that this TopSubscriptionTopicic is authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage." )
2498    protected BooleanType experimental;
2499
2500    /**
2501     * The date (and optionally time) when the subscription topic was last significantly changed. 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 subscription topic changes.
2502     */
2503    @Child(name = "date", type = {DateTimeType.class}, order=9, min=0, max=1, modifier=false, summary=true)
2504    @Description(shortDefinition="Date status first applied", formalDefinition="The date (and optionally time) when the subscription topic was last significantly changed. 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 subscription topic changes." )
2505    protected DateTimeType date;
2506
2507    /**
2508     * Helps establish the "authority/credibility" of the SubscriptionTopic.  May also allow for contact.
2509     */
2510    @Child(name = "publisher", type = {StringType.class}, order=10, min=0, max=1, modifier=false, summary=true)
2511    @Description(shortDefinition="The name of the individual or organization that published the SubscriptionTopic", formalDefinition="Helps establish the \"authority/credibility\" of the SubscriptionTopic.  May also allow for contact." )
2512    protected StringType publisher;
2513
2514    /**
2515     * Contact details to assist a user in finding and communicating with the publisher.
2516     */
2517    @Child(name = "contact", type = {ContactDetail.class}, order=11, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
2518    @Description(shortDefinition="Contact details for the publisher", formalDefinition="Contact details to assist a user in finding and communicating with the publisher." )
2519    protected List<ContactDetail> contact;
2520
2521    /**
2522     * A free text natural language description of the Topic from the consumer's perspective.
2523     */
2524    @Child(name = "description", type = {MarkdownType.class}, order=12, min=0, max=1, modifier=false, summary=false)
2525    @Description(shortDefinition="Natural language description of the SubscriptionTopic", formalDefinition="A free text natural language description of the Topic from the consumer's perspective." )
2526    protected MarkdownType description;
2527
2528    /**
2529     * The content was developed with a focus and intent of supporting the contexts that are listed. These terms may be used to assist with indexing and searching of code system definitions.
2530     */
2531    @Child(name = "useContext", type = {UsageContext.class}, order=13, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
2532    @Description(shortDefinition="Content intends to support these contexts", formalDefinition="The content was developed with a focus and intent of supporting the contexts that are listed. These terms may be used to assist with indexing and searching of code system definitions." )
2533    protected List<UsageContext> useContext;
2534
2535    /**
2536     * A jurisdiction in which the Topic is intended to be used.
2537     */
2538    @Child(name = "jurisdiction", type = {CodeableConcept.class}, order=14, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
2539    @Description(shortDefinition="Intended jurisdiction of the SubscriptionTopic (if applicable)", formalDefinition="A jurisdiction in which the Topic is intended to be used." )
2540    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/jurisdiction")
2541    protected List<CodeableConcept> jurisdiction;
2542
2543    /**
2544     * Explains why this Topic is needed and why it has been designed as it has.
2545     */
2546    @Child(name = "purpose", type = {MarkdownType.class}, order=15, min=0, max=1, modifier=false, summary=false)
2547    @Description(shortDefinition="Why this SubscriptionTopic is defined", formalDefinition="Explains why this Topic is needed and why it has been designed as it has." )
2548    protected MarkdownType purpose;
2549
2550    /**
2551     * A copyright statement relating to the SubscriptionTopic and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the SubscriptionTopic.
2552     */
2553    @Child(name = "copyright", type = {MarkdownType.class}, order=16, min=0, max=1, modifier=false, summary=false)
2554    @Description(shortDefinition="Use and/or publishing restrictions", formalDefinition="A copyright statement relating to the SubscriptionTopic and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the SubscriptionTopic." )
2555    protected MarkdownType copyright;
2556
2557    /**
2558     * A short string (<50 characters), suitable for inclusion in a page footer that identifies the copyright holder, effective period, and optionally whether rights are resctricted. (e.g. 'All rights reserved', 'Some rights reserved').
2559     */
2560    @Child(name = "copyrightLabel", type = {StringType.class}, order=17, min=0, max=1, modifier=false, summary=false)
2561    @Description(shortDefinition="Copyright holder and year(s)", formalDefinition="A short string (<50 characters), suitable for inclusion in a page footer that identifies the copyright holder, effective period, and optionally whether rights are resctricted. (e.g. 'All rights reserved', 'Some rights reserved')." )
2562    protected StringType copyrightLabel;
2563
2564    /**
2565     * The date on which the asset content was approved by the publisher. Approval happens once when the content is officially approved for usage.
2566     */
2567    @Child(name = "approvalDate", type = {DateType.class}, order=18, min=0, max=1, modifier=false, summary=false)
2568    @Description(shortDefinition="When SubscriptionTopic is/was approved by publisher", formalDefinition="The date on which the asset content was approved by the publisher. Approval happens once when the content is officially approved for usage." )
2569    protected DateType approvalDate;
2570
2571    /**
2572     * The date on which the asset content was last reviewed. Review happens periodically after that, but doesn't change the original approval date.
2573     */
2574    @Child(name = "lastReviewDate", type = {DateType.class}, order=19, min=0, max=1, modifier=false, summary=false)
2575    @Description(shortDefinition="Date the Subscription Topic was last reviewed by the publisher", formalDefinition="The date on which the asset content was last reviewed. Review happens periodically after that, but doesn't change the original approval date." )
2576    protected DateType lastReviewDate;
2577
2578    /**
2579     * The period during which the SubscriptionTopic content was or is planned to be effective.
2580     */
2581    @Child(name = "effectivePeriod", type = {Period.class}, order=20, min=0, max=1, modifier=false, summary=true)
2582    @Description(shortDefinition="The effective date range for the SubscriptionTopic", formalDefinition="The period during which the SubscriptionTopic content was or is planned to be effective." )
2583    protected Period effectivePeriod;
2584
2585    /**
2586     * A definition of a resource-based event that triggers a notification based on the SubscriptionTopic. The criteria may be just a human readable description and/or a full FHIR search string or FHIRPath expression. Multiple triggers are considered OR joined (e.g., a resource update matching ANY of the definitions will trigger a notification).
2587     */
2588    @Child(name = "resourceTrigger", type = {}, order=21, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
2589    @Description(shortDefinition="Definition of a resource-based trigger for the subscription topic", formalDefinition="A definition of a resource-based event that triggers a notification based on the SubscriptionTopic. The criteria may be just a human readable description and/or a full FHIR search string or FHIRPath expression. Multiple triggers are considered OR joined (e.g., a resource update matching ANY of the definitions will trigger a notification)." )
2590    protected List<SubscriptionTopicResourceTriggerComponent> resourceTrigger;
2591
2592    /**
2593     * Event definition which can be used to trigger the SubscriptionTopic.
2594     */
2595    @Child(name = "eventTrigger", type = {}, order=22, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
2596    @Description(shortDefinition="Event definitions the SubscriptionTopic", formalDefinition="Event definition which can be used to trigger the SubscriptionTopic." )
2597    protected List<SubscriptionTopicEventTriggerComponent> eventTrigger;
2598
2599    /**
2600     * List of properties by which Subscriptions on the SubscriptionTopic can be filtered. May be defined Search Parameters (e.g., Encounter.patient) or parameters defined within this SubscriptionTopic context (e.g., hub.event).
2601     */
2602    @Child(name = "canFilterBy", type = {}, order=23, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
2603    @Description(shortDefinition="Properties by which a Subscription can filter notifications from the SubscriptionTopic", formalDefinition="List of properties by which Subscriptions on the SubscriptionTopic can be filtered. May be defined Search Parameters (e.g., Encounter.patient) or parameters defined within this SubscriptionTopic context (e.g., hub.event)." )
2604    protected List<SubscriptionTopicCanFilterByComponent> canFilterBy;
2605
2606    /**
2607     * List of properties to describe the shape (e.g., resources) included in notifications from this Subscription Topic.
2608     */
2609    @Child(name = "notificationShape", type = {}, order=24, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
2610    @Description(shortDefinition="Properties for describing the shape of notifications generated by this topic", formalDefinition="List of properties to describe the shape (e.g., resources) included in notifications from this Subscription Topic." )
2611    protected List<SubscriptionTopicNotificationShapeComponent> notificationShape;
2612
2613    private static final long serialVersionUID = -194061063L;
2614
2615  /**
2616   * Constructor
2617   */
2618    public SubscriptionTopic() {
2619      super();
2620    }
2621
2622  /**
2623   * Constructor
2624   */
2625    public SubscriptionTopic(String url, PublicationStatus status) {
2626      super();
2627      this.setUrl(url);
2628      this.setStatus(status);
2629    }
2630
2631    /**
2632     * @return {@link #url} (An absolute URI that is used to identify this subscription topic 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 an authoritative instance of this subscription topic is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the subscription topic is stored on different servers.). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
2633     */
2634    public UriType getUrlElement() { 
2635      if (this.url == null)
2636        if (Configuration.errorOnAutoCreate())
2637          throw new Error("Attempt to auto-create SubscriptionTopic.url");
2638        else if (Configuration.doAutoCreate())
2639          this.url = new UriType(); // bb
2640      return this.url;
2641    }
2642
2643    public boolean hasUrlElement() { 
2644      return this.url != null && !this.url.isEmpty();
2645    }
2646
2647    public boolean hasUrl() { 
2648      return this.url != null && !this.url.isEmpty();
2649    }
2650
2651    /**
2652     * @param value {@link #url} (An absolute URI that is used to identify this subscription topic 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 an authoritative instance of this subscription topic is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the subscription topic is stored on different servers.). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
2653     */
2654    public SubscriptionTopic setUrlElement(UriType value) { 
2655      this.url = value;
2656      return this;
2657    }
2658
2659    /**
2660     * @return An absolute URI that is used to identify this subscription topic 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 an authoritative instance of this subscription topic is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the subscription topic is stored on different servers.
2661     */
2662    public String getUrl() { 
2663      return this.url == null ? null : this.url.getValue();
2664    }
2665
2666    /**
2667     * @param value An absolute URI that is used to identify this subscription topic 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 an authoritative instance of this subscription topic is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the subscription topic is stored on different servers.
2668     */
2669    public SubscriptionTopic setUrl(String value) { 
2670        if (this.url == null)
2671          this.url = new UriType();
2672        this.url.setValue(value);
2673      return this;
2674    }
2675
2676    /**
2677     * @return {@link #identifier} (Business identifiers assigned to this subscription topic by the performer and/or other systems.  These identifiers remain constant as the resource is updated and propagates from server to server.)
2678     */
2679    public List<Identifier> getIdentifier() { 
2680      if (this.identifier == null)
2681        this.identifier = new ArrayList<Identifier>();
2682      return this.identifier;
2683    }
2684
2685    /**
2686     * @return Returns a reference to <code>this</code> for easy method chaining
2687     */
2688    public SubscriptionTopic setIdentifier(List<Identifier> theIdentifier) { 
2689      this.identifier = theIdentifier;
2690      return this;
2691    }
2692
2693    public boolean hasIdentifier() { 
2694      if (this.identifier == null)
2695        return false;
2696      for (Identifier item : this.identifier)
2697        if (!item.isEmpty())
2698          return true;
2699      return false;
2700    }
2701
2702    public Identifier addIdentifier() { //3
2703      Identifier t = new Identifier();
2704      if (this.identifier == null)
2705        this.identifier = new ArrayList<Identifier>();
2706      this.identifier.add(t);
2707      return t;
2708    }
2709
2710    public SubscriptionTopic addIdentifier(Identifier t) { //3
2711      if (t == null)
2712        return this;
2713      if (this.identifier == null)
2714        this.identifier = new ArrayList<Identifier>();
2715      this.identifier.add(t);
2716      return this;
2717    }
2718
2719    /**
2720     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {3}
2721     */
2722    public Identifier getIdentifierFirstRep() { 
2723      if (getIdentifier().isEmpty()) {
2724        addIdentifier();
2725      }
2726      return getIdentifier().get(0);
2727    }
2728
2729    /**
2730     * @return {@link #version} (The identifier that is used to identify this version of the subscription topic when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the Topic 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 are orderable.). This is the underlying object with id, value and extensions. The accessor "getVersion" gives direct access to the value
2731     */
2732    public StringType getVersionElement() { 
2733      if (this.version == null)
2734        if (Configuration.errorOnAutoCreate())
2735          throw new Error("Attempt to auto-create SubscriptionTopic.version");
2736        else if (Configuration.doAutoCreate())
2737          this.version = new StringType(); // bb
2738      return this.version;
2739    }
2740
2741    public boolean hasVersionElement() { 
2742      return this.version != null && !this.version.isEmpty();
2743    }
2744
2745    public boolean hasVersion() { 
2746      return this.version != null && !this.version.isEmpty();
2747    }
2748
2749    /**
2750     * @param value {@link #version} (The identifier that is used to identify this version of the subscription topic when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the Topic 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 are orderable.). This is the underlying object with id, value and extensions. The accessor "getVersion" gives direct access to the value
2751     */
2752    public SubscriptionTopic setVersionElement(StringType value) { 
2753      this.version = value;
2754      return this;
2755    }
2756
2757    /**
2758     * @return The identifier that is used to identify this version of the subscription topic when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the Topic 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 are orderable.
2759     */
2760    public String getVersion() { 
2761      return this.version == null ? null : this.version.getValue();
2762    }
2763
2764    /**
2765     * @param value The identifier that is used to identify this version of the subscription topic when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the Topic 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 are orderable.
2766     */
2767    public SubscriptionTopic setVersion(String value) { 
2768      if (Utilities.noString(value))
2769        this.version = null;
2770      else {
2771        if (this.version == null)
2772          this.version = new StringType();
2773        this.version.setValue(value);
2774      }
2775      return this;
2776    }
2777
2778    /**
2779     * @return {@link #versionAlgorithm} (Indicates the mechanism used to compare versions to determine which is more current.)
2780     */
2781    public DataType getVersionAlgorithm() { 
2782      return this.versionAlgorithm;
2783    }
2784
2785    /**
2786     * @return {@link #versionAlgorithm} (Indicates the mechanism used to compare versions to determine which is more current.)
2787     */
2788    public StringType getVersionAlgorithmStringType() throws FHIRException { 
2789      if (this.versionAlgorithm == null)
2790        this.versionAlgorithm = new StringType();
2791      if (!(this.versionAlgorithm instanceof StringType))
2792        throw new FHIRException("Type mismatch: the type StringType was expected, but "+this.versionAlgorithm.getClass().getName()+" was encountered");
2793      return (StringType) this.versionAlgorithm;
2794    }
2795
2796    public boolean hasVersionAlgorithmStringType() { 
2797      return this != null && this.versionAlgorithm instanceof StringType;
2798    }
2799
2800    /**
2801     * @return {@link #versionAlgorithm} (Indicates the mechanism used to compare versions to determine which is more current.)
2802     */
2803    public Coding getVersionAlgorithmCoding() throws FHIRException { 
2804      if (this.versionAlgorithm == null)
2805        this.versionAlgorithm = new Coding();
2806      if (!(this.versionAlgorithm instanceof Coding))
2807        throw new FHIRException("Type mismatch: the type Coding was expected, but "+this.versionAlgorithm.getClass().getName()+" was encountered");
2808      return (Coding) this.versionAlgorithm;
2809    }
2810
2811    public boolean hasVersionAlgorithmCoding() { 
2812      return this != null && this.versionAlgorithm instanceof Coding;
2813    }
2814
2815    public boolean hasVersionAlgorithm() { 
2816      return this.versionAlgorithm != null && !this.versionAlgorithm.isEmpty();
2817    }
2818
2819    /**
2820     * @param value {@link #versionAlgorithm} (Indicates the mechanism used to compare versions to determine which is more current.)
2821     */
2822    public SubscriptionTopic setVersionAlgorithm(DataType value) { 
2823      if (value != null && !(value instanceof StringType || value instanceof Coding))
2824        throw new FHIRException("Not the right type for SubscriptionTopic.versionAlgorithm[x]: "+value.fhirType());
2825      this.versionAlgorithm = value;
2826      return this;
2827    }
2828
2829    /**
2830     * @return {@link #name} (A natural language name identifying the subscription topic 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
2831     */
2832    public StringType getNameElement() { 
2833      if (this.name == null)
2834        if (Configuration.errorOnAutoCreate())
2835          throw new Error("Attempt to auto-create SubscriptionTopic.name");
2836        else if (Configuration.doAutoCreate())
2837          this.name = new StringType(); // bb
2838      return this.name;
2839    }
2840
2841    public boolean hasNameElement() { 
2842      return this.name != null && !this.name.isEmpty();
2843    }
2844
2845    public boolean hasName() { 
2846      return this.name != null && !this.name.isEmpty();
2847    }
2848
2849    /**
2850     * @param value {@link #name} (A natural language name identifying the subscription topic 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
2851     */
2852    public SubscriptionTopic setNameElement(StringType value) { 
2853      this.name = value;
2854      return this;
2855    }
2856
2857    /**
2858     * @return A natural language name identifying the subscription topic This name should be usable as an identifier for the module by machine processing applications such as code generation.
2859     */
2860    public String getName() { 
2861      return this.name == null ? null : this.name.getValue();
2862    }
2863
2864    /**
2865     * @param value A natural language name identifying the subscription topic This name should be usable as an identifier for the module by machine processing applications such as code generation.
2866     */
2867    public SubscriptionTopic setName(String value) { 
2868      if (Utilities.noString(value))
2869        this.name = null;
2870      else {
2871        if (this.name == null)
2872          this.name = new StringType();
2873        this.name.setValue(value);
2874      }
2875      return this;
2876    }
2877
2878    /**
2879     * @return {@link #title} (A short, descriptive, user-friendly title for the subscription topic.  For example, "admission".). This is the underlying object with id, value and extensions. The accessor "getTitle" gives direct access to the value
2880     */
2881    public StringType getTitleElement() { 
2882      if (this.title == null)
2883        if (Configuration.errorOnAutoCreate())
2884          throw new Error("Attempt to auto-create SubscriptionTopic.title");
2885        else if (Configuration.doAutoCreate())
2886          this.title = new StringType(); // bb
2887      return this.title;
2888    }
2889
2890    public boolean hasTitleElement() { 
2891      return this.title != null && !this.title.isEmpty();
2892    }
2893
2894    public boolean hasTitle() { 
2895      return this.title != null && !this.title.isEmpty();
2896    }
2897
2898    /**
2899     * @param value {@link #title} (A short, descriptive, user-friendly title for the subscription topic.  For example, "admission".). This is the underlying object with id, value and extensions. The accessor "getTitle" gives direct access to the value
2900     */
2901    public SubscriptionTopic setTitleElement(StringType value) { 
2902      this.title = value;
2903      return this;
2904    }
2905
2906    /**
2907     * @return A short, descriptive, user-friendly title for the subscription topic.  For example, "admission".
2908     */
2909    public String getTitle() { 
2910      return this.title == null ? null : this.title.getValue();
2911    }
2912
2913    /**
2914     * @param value A short, descriptive, user-friendly title for the subscription topic.  For example, "admission".
2915     */
2916    public SubscriptionTopic setTitle(String value) { 
2917      if (Utilities.noString(value))
2918        this.title = null;
2919      else {
2920        if (this.title == null)
2921          this.title = new StringType();
2922        this.title.setValue(value);
2923      }
2924      return this;
2925    }
2926
2927    /**
2928     * @return {@link #derivedFrom} (The canonical URL pointing to another FHIR-defined SubscriptionTopic that is adhered to in whole or in part by this SubscriptionTopic.)
2929     */
2930    public List<CanonicalType> getDerivedFrom() { 
2931      if (this.derivedFrom == null)
2932        this.derivedFrom = new ArrayList<CanonicalType>();
2933      return this.derivedFrom;
2934    }
2935
2936    /**
2937     * @return Returns a reference to <code>this</code> for easy method chaining
2938     */
2939    public SubscriptionTopic setDerivedFrom(List<CanonicalType> theDerivedFrom) { 
2940      this.derivedFrom = theDerivedFrom;
2941      return this;
2942    }
2943
2944    public boolean hasDerivedFrom() { 
2945      if (this.derivedFrom == null)
2946        return false;
2947      for (CanonicalType item : this.derivedFrom)
2948        if (!item.isEmpty())
2949          return true;
2950      return false;
2951    }
2952
2953    /**
2954     * @return {@link #derivedFrom} (The canonical URL pointing to another FHIR-defined SubscriptionTopic that is adhered to in whole or in part by this SubscriptionTopic.)
2955     */
2956    public CanonicalType addDerivedFromElement() {//2 
2957      CanonicalType t = new CanonicalType();
2958      if (this.derivedFrom == null)
2959        this.derivedFrom = new ArrayList<CanonicalType>();
2960      this.derivedFrom.add(t);
2961      return t;
2962    }
2963
2964    /**
2965     * @param value {@link #derivedFrom} (The canonical URL pointing to another FHIR-defined SubscriptionTopic that is adhered to in whole or in part by this SubscriptionTopic.)
2966     */
2967    public SubscriptionTopic addDerivedFrom(String value) { //1
2968      CanonicalType t = new CanonicalType();
2969      t.setValue(value);
2970      if (this.derivedFrom == null)
2971        this.derivedFrom = new ArrayList<CanonicalType>();
2972      this.derivedFrom.add(t);
2973      return this;
2974    }
2975
2976    /**
2977     * @param value {@link #derivedFrom} (The canonical URL pointing to another FHIR-defined SubscriptionTopic that is adhered to in whole or in part by this SubscriptionTopic.)
2978     */
2979    public boolean hasDerivedFrom(String value) { 
2980      if (this.derivedFrom == null)
2981        return false;
2982      for (CanonicalType v : this.derivedFrom)
2983        if (v.getValue().equals(value)) // canonical
2984          return true;
2985      return false;
2986    }
2987
2988    /**
2989     * @return {@link #status} (The current state of the SubscriptionTopic.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
2990     */
2991    public Enumeration<PublicationStatus> getStatusElement() { 
2992      if (this.status == null)
2993        if (Configuration.errorOnAutoCreate())
2994          throw new Error("Attempt to auto-create SubscriptionTopic.status");
2995        else if (Configuration.doAutoCreate())
2996          this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory()); // bb
2997      return this.status;
2998    }
2999
3000    public boolean hasStatusElement() { 
3001      return this.status != null && !this.status.isEmpty();
3002    }
3003
3004    public boolean hasStatus() { 
3005      return this.status != null && !this.status.isEmpty();
3006    }
3007
3008    /**
3009     * @param value {@link #status} (The current state of the SubscriptionTopic.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
3010     */
3011    public SubscriptionTopic setStatusElement(Enumeration<PublicationStatus> value) { 
3012      this.status = value;
3013      return this;
3014    }
3015
3016    /**
3017     * @return The current state of the SubscriptionTopic.
3018     */
3019    public PublicationStatus getStatus() { 
3020      return this.status == null ? null : this.status.getValue();
3021    }
3022
3023    /**
3024     * @param value The current state of the SubscriptionTopic.
3025     */
3026    public SubscriptionTopic setStatus(PublicationStatus value) { 
3027        if (this.status == null)
3028          this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory());
3029        this.status.setValue(value);
3030      return this;
3031    }
3032
3033    /**
3034     * @return {@link #experimental} (A flag to indicate that this TopSubscriptionTopicic 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
3035     */
3036    public BooleanType getExperimentalElement() { 
3037      if (this.experimental == null)
3038        if (Configuration.errorOnAutoCreate())
3039          throw new Error("Attempt to auto-create SubscriptionTopic.experimental");
3040        else if (Configuration.doAutoCreate())
3041          this.experimental = new BooleanType(); // bb
3042      return this.experimental;
3043    }
3044
3045    public boolean hasExperimentalElement() { 
3046      return this.experimental != null && !this.experimental.isEmpty();
3047    }
3048
3049    public boolean hasExperimental() { 
3050      return this.experimental != null && !this.experimental.isEmpty();
3051    }
3052
3053    /**
3054     * @param value {@link #experimental} (A flag to indicate that this TopSubscriptionTopicic 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
3055     */
3056    public SubscriptionTopic setExperimentalElement(BooleanType value) { 
3057      this.experimental = value;
3058      return this;
3059    }
3060
3061    /**
3062     * @return A flag to indicate that this TopSubscriptionTopicic is authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage.
3063     */
3064    public boolean getExperimental() { 
3065      return this.experimental == null || this.experimental.isEmpty() ? false : this.experimental.getValue();
3066    }
3067
3068    /**
3069     * @param value A flag to indicate that this TopSubscriptionTopicic is authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage.
3070     */
3071    public SubscriptionTopic setExperimental(boolean value) { 
3072        if (this.experimental == null)
3073          this.experimental = new BooleanType();
3074        this.experimental.setValue(value);
3075      return this;
3076    }
3077
3078    /**
3079     * @return {@link #date} (The date (and optionally time) when the subscription topic was last significantly changed. 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 subscription topic changes.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
3080     */
3081    public DateTimeType getDateElement() { 
3082      if (this.date == null)
3083        if (Configuration.errorOnAutoCreate())
3084          throw new Error("Attempt to auto-create SubscriptionTopic.date");
3085        else if (Configuration.doAutoCreate())
3086          this.date = new DateTimeType(); // bb
3087      return this.date;
3088    }
3089
3090    public boolean hasDateElement() { 
3091      return this.date != null && !this.date.isEmpty();
3092    }
3093
3094    public boolean hasDate() { 
3095      return this.date != null && !this.date.isEmpty();
3096    }
3097
3098    /**
3099     * @param value {@link #date} (The date (and optionally time) when the subscription topic was last significantly changed. 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 subscription topic changes.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
3100     */
3101    public SubscriptionTopic setDateElement(DateTimeType value) { 
3102      this.date = value;
3103      return this;
3104    }
3105
3106    /**
3107     * @return The date (and optionally time) when the subscription topic was last significantly changed. 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 subscription topic changes.
3108     */
3109    public Date getDate() { 
3110      return this.date == null ? null : this.date.getValue();
3111    }
3112
3113    /**
3114     * @param value The date (and optionally time) when the subscription topic was last significantly changed. 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 subscription topic changes.
3115     */
3116    public SubscriptionTopic setDate(Date value) { 
3117      if (value == null)
3118        this.date = null;
3119      else {
3120        if (this.date == null)
3121          this.date = new DateTimeType();
3122        this.date.setValue(value);
3123      }
3124      return this;
3125    }
3126
3127    /**
3128     * @return {@link #publisher} (Helps establish the "authority/credibility" of the SubscriptionTopic.  May also allow for contact.). This is the underlying object with id, value and extensions. The accessor "getPublisher" gives direct access to the value
3129     */
3130    public StringType getPublisherElement() { 
3131      if (this.publisher == null)
3132        if (Configuration.errorOnAutoCreate())
3133          throw new Error("Attempt to auto-create SubscriptionTopic.publisher");
3134        else if (Configuration.doAutoCreate())
3135          this.publisher = new StringType(); // bb
3136      return this.publisher;
3137    }
3138
3139    public boolean hasPublisherElement() { 
3140      return this.publisher != null && !this.publisher.isEmpty();
3141    }
3142
3143    public boolean hasPublisher() { 
3144      return this.publisher != null && !this.publisher.isEmpty();
3145    }
3146
3147    /**
3148     * @param value {@link #publisher} (Helps establish the "authority/credibility" of the SubscriptionTopic.  May also allow for contact.). This is the underlying object with id, value and extensions. The accessor "getPublisher" gives direct access to the value
3149     */
3150    public SubscriptionTopic setPublisherElement(StringType value) { 
3151      this.publisher = value;
3152      return this;
3153    }
3154
3155    /**
3156     * @return Helps establish the "authority/credibility" of the SubscriptionTopic.  May also allow for contact.
3157     */
3158    public String getPublisher() { 
3159      return this.publisher == null ? null : this.publisher.getValue();
3160    }
3161
3162    /**
3163     * @param value Helps establish the "authority/credibility" of the SubscriptionTopic.  May also allow for contact.
3164     */
3165    public SubscriptionTopic setPublisher(String value) { 
3166      if (Utilities.noString(value))
3167        this.publisher = null;
3168      else {
3169        if (this.publisher == null)
3170          this.publisher = new StringType();
3171        this.publisher.setValue(value);
3172      }
3173      return this;
3174    }
3175
3176    /**
3177     * @return {@link #contact} (Contact details to assist a user in finding and communicating with the publisher.)
3178     */
3179    public List<ContactDetail> getContact() { 
3180      if (this.contact == null)
3181        this.contact = new ArrayList<ContactDetail>();
3182      return this.contact;
3183    }
3184
3185    /**
3186     * @return Returns a reference to <code>this</code> for easy method chaining
3187     */
3188    public SubscriptionTopic setContact(List<ContactDetail> theContact) { 
3189      this.contact = theContact;
3190      return this;
3191    }
3192
3193    public boolean hasContact() { 
3194      if (this.contact == null)
3195        return false;
3196      for (ContactDetail item : this.contact)
3197        if (!item.isEmpty())
3198          return true;
3199      return false;
3200    }
3201
3202    public ContactDetail addContact() { //3
3203      ContactDetail t = new ContactDetail();
3204      if (this.contact == null)
3205        this.contact = new ArrayList<ContactDetail>();
3206      this.contact.add(t);
3207      return t;
3208    }
3209
3210    public SubscriptionTopic addContact(ContactDetail t) { //3
3211      if (t == null)
3212        return this;
3213      if (this.contact == null)
3214        this.contact = new ArrayList<ContactDetail>();
3215      this.contact.add(t);
3216      return this;
3217    }
3218
3219    /**
3220     * @return The first repetition of repeating field {@link #contact}, creating it if it does not already exist {3}
3221     */
3222    public ContactDetail getContactFirstRep() { 
3223      if (getContact().isEmpty()) {
3224        addContact();
3225      }
3226      return getContact().get(0);
3227    }
3228
3229    /**
3230     * @return {@link #description} (A free text natural language description of the Topic from the consumer's perspective.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
3231     */
3232    public MarkdownType getDescriptionElement() { 
3233      if (this.description == null)
3234        if (Configuration.errorOnAutoCreate())
3235          throw new Error("Attempt to auto-create SubscriptionTopic.description");
3236        else if (Configuration.doAutoCreate())
3237          this.description = new MarkdownType(); // bb
3238      return this.description;
3239    }
3240
3241    public boolean hasDescriptionElement() { 
3242      return this.description != null && !this.description.isEmpty();
3243    }
3244
3245    public boolean hasDescription() { 
3246      return this.description != null && !this.description.isEmpty();
3247    }
3248
3249    /**
3250     * @param value {@link #description} (A free text natural language description of the Topic from the consumer's perspective.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
3251     */
3252    public SubscriptionTopic setDescriptionElement(MarkdownType value) { 
3253      this.description = value;
3254      return this;
3255    }
3256
3257    /**
3258     * @return A free text natural language description of the Topic from the consumer's perspective.
3259     */
3260    public String getDescription() { 
3261      return this.description == null ? null : this.description.getValue();
3262    }
3263
3264    /**
3265     * @param value A free text natural language description of the Topic from the consumer's perspective.
3266     */
3267    public SubscriptionTopic setDescription(String value) { 
3268      if (Utilities.noString(value))
3269        this.description = null;
3270      else {
3271        if (this.description == null)
3272          this.description = new MarkdownType();
3273        this.description.setValue(value);
3274      }
3275      return this;
3276    }
3277
3278    /**
3279     * @return {@link #useContext} (The content was developed with a focus and intent of supporting the contexts that are listed. These terms may be used to assist with indexing and searching of code system definitions.)
3280     */
3281    public List<UsageContext> getUseContext() { 
3282      if (this.useContext == null)
3283        this.useContext = new ArrayList<UsageContext>();
3284      return this.useContext;
3285    }
3286
3287    /**
3288     * @return Returns a reference to <code>this</code> for easy method chaining
3289     */
3290    public SubscriptionTopic setUseContext(List<UsageContext> theUseContext) { 
3291      this.useContext = theUseContext;
3292      return this;
3293    }
3294
3295    public boolean hasUseContext() { 
3296      if (this.useContext == null)
3297        return false;
3298      for (UsageContext item : this.useContext)
3299        if (!item.isEmpty())
3300          return true;
3301      return false;
3302    }
3303
3304    public UsageContext addUseContext() { //3
3305      UsageContext t = new UsageContext();
3306      if (this.useContext == null)
3307        this.useContext = new ArrayList<UsageContext>();
3308      this.useContext.add(t);
3309      return t;
3310    }
3311
3312    public SubscriptionTopic addUseContext(UsageContext t) { //3
3313      if (t == null)
3314        return this;
3315      if (this.useContext == null)
3316        this.useContext = new ArrayList<UsageContext>();
3317      this.useContext.add(t);
3318      return this;
3319    }
3320
3321    /**
3322     * @return The first repetition of repeating field {@link #useContext}, creating it if it does not already exist {3}
3323     */
3324    public UsageContext getUseContextFirstRep() { 
3325      if (getUseContext().isEmpty()) {
3326        addUseContext();
3327      }
3328      return getUseContext().get(0);
3329    }
3330
3331    /**
3332     * @return {@link #jurisdiction} (A jurisdiction in which the Topic is intended to be used.)
3333     */
3334    public List<CodeableConcept> getJurisdiction() { 
3335      if (this.jurisdiction == null)
3336        this.jurisdiction = new ArrayList<CodeableConcept>();
3337      return this.jurisdiction;
3338    }
3339
3340    /**
3341     * @return Returns a reference to <code>this</code> for easy method chaining
3342     */
3343    public SubscriptionTopic setJurisdiction(List<CodeableConcept> theJurisdiction) { 
3344      this.jurisdiction = theJurisdiction;
3345      return this;
3346    }
3347
3348    public boolean hasJurisdiction() { 
3349      if (this.jurisdiction == null)
3350        return false;
3351      for (CodeableConcept item : this.jurisdiction)
3352        if (!item.isEmpty())
3353          return true;
3354      return false;
3355    }
3356
3357    public CodeableConcept addJurisdiction() { //3
3358      CodeableConcept t = new CodeableConcept();
3359      if (this.jurisdiction == null)
3360        this.jurisdiction = new ArrayList<CodeableConcept>();
3361      this.jurisdiction.add(t);
3362      return t;
3363    }
3364
3365    public SubscriptionTopic addJurisdiction(CodeableConcept t) { //3
3366      if (t == null)
3367        return this;
3368      if (this.jurisdiction == null)
3369        this.jurisdiction = new ArrayList<CodeableConcept>();
3370      this.jurisdiction.add(t);
3371      return this;
3372    }
3373
3374    /**
3375     * @return The first repetition of repeating field {@link #jurisdiction}, creating it if it does not already exist {3}
3376     */
3377    public CodeableConcept getJurisdictionFirstRep() { 
3378      if (getJurisdiction().isEmpty()) {
3379        addJurisdiction();
3380      }
3381      return getJurisdiction().get(0);
3382    }
3383
3384    /**
3385     * @return {@link #purpose} (Explains why this Topic 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
3386     */
3387    public MarkdownType getPurposeElement() { 
3388      if (this.purpose == null)
3389        if (Configuration.errorOnAutoCreate())
3390          throw new Error("Attempt to auto-create SubscriptionTopic.purpose");
3391        else if (Configuration.doAutoCreate())
3392          this.purpose = new MarkdownType(); // bb
3393      return this.purpose;
3394    }
3395
3396    public boolean hasPurposeElement() { 
3397      return this.purpose != null && !this.purpose.isEmpty();
3398    }
3399
3400    public boolean hasPurpose() { 
3401      return this.purpose != null && !this.purpose.isEmpty();
3402    }
3403
3404    /**
3405     * @param value {@link #purpose} (Explains why this Topic 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
3406     */
3407    public SubscriptionTopic setPurposeElement(MarkdownType value) { 
3408      this.purpose = value;
3409      return this;
3410    }
3411
3412    /**
3413     * @return Explains why this Topic is needed and why it has been designed as it has.
3414     */
3415    public String getPurpose() { 
3416      return this.purpose == null ? null : this.purpose.getValue();
3417    }
3418
3419    /**
3420     * @param value Explains why this Topic is needed and why it has been designed as it has.
3421     */
3422    public SubscriptionTopic setPurpose(String value) { 
3423      if (Utilities.noString(value))
3424        this.purpose = null;
3425      else {
3426        if (this.purpose == null)
3427          this.purpose = new MarkdownType();
3428        this.purpose.setValue(value);
3429      }
3430      return this;
3431    }
3432
3433    /**
3434     * @return {@link #copyright} (A copyright statement relating to the SubscriptionTopic and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the SubscriptionTopic.). This is the underlying object with id, value and extensions. The accessor "getCopyright" gives direct access to the value
3435     */
3436    public MarkdownType getCopyrightElement() { 
3437      if (this.copyright == null)
3438        if (Configuration.errorOnAutoCreate())
3439          throw new Error("Attempt to auto-create SubscriptionTopic.copyright");
3440        else if (Configuration.doAutoCreate())
3441          this.copyright = new MarkdownType(); // bb
3442      return this.copyright;
3443    }
3444
3445    public boolean hasCopyrightElement() { 
3446      return this.copyright != null && !this.copyright.isEmpty();
3447    }
3448
3449    public boolean hasCopyright() { 
3450      return this.copyright != null && !this.copyright.isEmpty();
3451    }
3452
3453    /**
3454     * @param value {@link #copyright} (A copyright statement relating to the SubscriptionTopic and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the SubscriptionTopic.). This is the underlying object with id, value and extensions. The accessor "getCopyright" gives direct access to the value
3455     */
3456    public SubscriptionTopic setCopyrightElement(MarkdownType value) { 
3457      this.copyright = value;
3458      return this;
3459    }
3460
3461    /**
3462     * @return A copyright statement relating to the SubscriptionTopic and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the SubscriptionTopic.
3463     */
3464    public String getCopyright() { 
3465      return this.copyright == null ? null : this.copyright.getValue();
3466    }
3467
3468    /**
3469     * @param value A copyright statement relating to the SubscriptionTopic and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the SubscriptionTopic.
3470     */
3471    public SubscriptionTopic setCopyright(String value) { 
3472      if (Utilities.noString(value))
3473        this.copyright = null;
3474      else {
3475        if (this.copyright == null)
3476          this.copyright = new MarkdownType();
3477        this.copyright.setValue(value);
3478      }
3479      return this;
3480    }
3481
3482    /**
3483     * @return {@link #copyrightLabel} (A short string (<50 characters), suitable for inclusion in a page footer that identifies the copyright holder, effective period, and optionally whether rights are resctricted. (e.g. 'All rights reserved', 'Some rights reserved').). This is the underlying object with id, value and extensions. The accessor "getCopyrightLabel" gives direct access to the value
3484     */
3485    public StringType getCopyrightLabelElement() { 
3486      if (this.copyrightLabel == null)
3487        if (Configuration.errorOnAutoCreate())
3488          throw new Error("Attempt to auto-create SubscriptionTopic.copyrightLabel");
3489        else if (Configuration.doAutoCreate())
3490          this.copyrightLabel = new StringType(); // bb
3491      return this.copyrightLabel;
3492    }
3493
3494    public boolean hasCopyrightLabelElement() { 
3495      return this.copyrightLabel != null && !this.copyrightLabel.isEmpty();
3496    }
3497
3498    public boolean hasCopyrightLabel() { 
3499      return this.copyrightLabel != null && !this.copyrightLabel.isEmpty();
3500    }
3501
3502    /**
3503     * @param value {@link #copyrightLabel} (A short string (<50 characters), suitable for inclusion in a page footer that identifies the copyright holder, effective period, and optionally whether rights are resctricted. (e.g. 'All rights reserved', 'Some rights reserved').). This is the underlying object with id, value and extensions. The accessor "getCopyrightLabel" gives direct access to the value
3504     */
3505    public SubscriptionTopic setCopyrightLabelElement(StringType value) { 
3506      this.copyrightLabel = value;
3507      return this;
3508    }
3509
3510    /**
3511     * @return A short string (<50 characters), suitable for inclusion in a page footer that identifies the copyright holder, effective period, and optionally whether rights are resctricted. (e.g. 'All rights reserved', 'Some rights reserved').
3512     */
3513    public String getCopyrightLabel() { 
3514      return this.copyrightLabel == null ? null : this.copyrightLabel.getValue();
3515    }
3516
3517    /**
3518     * @param value A short string (<50 characters), suitable for inclusion in a page footer that identifies the copyright holder, effective period, and optionally whether rights are resctricted. (e.g. 'All rights reserved', 'Some rights reserved').
3519     */
3520    public SubscriptionTopic setCopyrightLabel(String value) { 
3521      if (Utilities.noString(value))
3522        this.copyrightLabel = null;
3523      else {
3524        if (this.copyrightLabel == null)
3525          this.copyrightLabel = new StringType();
3526        this.copyrightLabel.setValue(value);
3527      }
3528      return this;
3529    }
3530
3531    /**
3532     * @return {@link #approvalDate} (The date on which the asset 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
3533     */
3534    public DateType getApprovalDateElement() { 
3535      if (this.approvalDate == null)
3536        if (Configuration.errorOnAutoCreate())
3537          throw new Error("Attempt to auto-create SubscriptionTopic.approvalDate");
3538        else if (Configuration.doAutoCreate())
3539          this.approvalDate = new DateType(); // bb
3540      return this.approvalDate;
3541    }
3542
3543    public boolean hasApprovalDateElement() { 
3544      return this.approvalDate != null && !this.approvalDate.isEmpty();
3545    }
3546
3547    public boolean hasApprovalDate() { 
3548      return this.approvalDate != null && !this.approvalDate.isEmpty();
3549    }
3550
3551    /**
3552     * @param value {@link #approvalDate} (The date on which the asset 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
3553     */
3554    public SubscriptionTopic setApprovalDateElement(DateType value) { 
3555      this.approvalDate = value;
3556      return this;
3557    }
3558
3559    /**
3560     * @return The date on which the asset content was approved by the publisher. Approval happens once when the content is officially approved for usage.
3561     */
3562    public Date getApprovalDate() { 
3563      return this.approvalDate == null ? null : this.approvalDate.getValue();
3564    }
3565
3566    /**
3567     * @param value The date on which the asset content was approved by the publisher. Approval happens once when the content is officially approved for usage.
3568     */
3569    public SubscriptionTopic setApprovalDate(Date value) { 
3570      if (value == null)
3571        this.approvalDate = null;
3572      else {
3573        if (this.approvalDate == null)
3574          this.approvalDate = new DateType();
3575        this.approvalDate.setValue(value);
3576      }
3577      return this;
3578    }
3579
3580    /**
3581     * @return {@link #lastReviewDate} (The date on which the asset content was last reviewed. Review happens periodically after that, but doesn't change the original approval date.). This is the underlying object with id, value and extensions. The accessor "getLastReviewDate" gives direct access to the value
3582     */
3583    public DateType getLastReviewDateElement() { 
3584      if (this.lastReviewDate == null)
3585        if (Configuration.errorOnAutoCreate())
3586          throw new Error("Attempt to auto-create SubscriptionTopic.lastReviewDate");
3587        else if (Configuration.doAutoCreate())
3588          this.lastReviewDate = new DateType(); // bb
3589      return this.lastReviewDate;
3590    }
3591
3592    public boolean hasLastReviewDateElement() { 
3593      return this.lastReviewDate != null && !this.lastReviewDate.isEmpty();
3594    }
3595
3596    public boolean hasLastReviewDate() { 
3597      return this.lastReviewDate != null && !this.lastReviewDate.isEmpty();
3598    }
3599
3600    /**
3601     * @param value {@link #lastReviewDate} (The date on which the asset content was last reviewed. Review happens periodically after that, but doesn't change the original approval date.). This is the underlying object with id, value and extensions. The accessor "getLastReviewDate" gives direct access to the value
3602     */
3603    public SubscriptionTopic setLastReviewDateElement(DateType value) { 
3604      this.lastReviewDate = value;
3605      return this;
3606    }
3607
3608    /**
3609     * @return The date on which the asset content was last reviewed. Review happens periodically after that, but doesn't change the original approval date.
3610     */
3611    public Date getLastReviewDate() { 
3612      return this.lastReviewDate == null ? null : this.lastReviewDate.getValue();
3613    }
3614
3615    /**
3616     * @param value The date on which the asset content was last reviewed. Review happens periodically after that, but doesn't change the original approval date.
3617     */
3618    public SubscriptionTopic setLastReviewDate(Date value) { 
3619      if (value == null)
3620        this.lastReviewDate = null;
3621      else {
3622        if (this.lastReviewDate == null)
3623          this.lastReviewDate = new DateType();
3624        this.lastReviewDate.setValue(value);
3625      }
3626      return this;
3627    }
3628
3629    /**
3630     * @return {@link #effectivePeriod} (The period during which the SubscriptionTopic content was or is planned to be effective.)
3631     */
3632    public Period getEffectivePeriod() { 
3633      if (this.effectivePeriod == null)
3634        if (Configuration.errorOnAutoCreate())
3635          throw new Error("Attempt to auto-create SubscriptionTopic.effectivePeriod");
3636        else if (Configuration.doAutoCreate())
3637          this.effectivePeriod = new Period(); // cc
3638      return this.effectivePeriod;
3639    }
3640
3641    public boolean hasEffectivePeriod() { 
3642      return this.effectivePeriod != null && !this.effectivePeriod.isEmpty();
3643    }
3644
3645    /**
3646     * @param value {@link #effectivePeriod} (The period during which the SubscriptionTopic content was or is planned to be effective.)
3647     */
3648    public SubscriptionTopic setEffectivePeriod(Period value) { 
3649      this.effectivePeriod = value;
3650      return this;
3651    }
3652
3653    /**
3654     * @return {@link #resourceTrigger} (A definition of a resource-based event that triggers a notification based on the SubscriptionTopic. The criteria may be just a human readable description and/or a full FHIR search string or FHIRPath expression. Multiple triggers are considered OR joined (e.g., a resource update matching ANY of the definitions will trigger a notification).)
3655     */
3656    public List<SubscriptionTopicResourceTriggerComponent> getResourceTrigger() { 
3657      if (this.resourceTrigger == null)
3658        this.resourceTrigger = new ArrayList<SubscriptionTopicResourceTriggerComponent>();
3659      return this.resourceTrigger;
3660    }
3661
3662    /**
3663     * @return Returns a reference to <code>this</code> for easy method chaining
3664     */
3665    public SubscriptionTopic setResourceTrigger(List<SubscriptionTopicResourceTriggerComponent> theResourceTrigger) { 
3666      this.resourceTrigger = theResourceTrigger;
3667      return this;
3668    }
3669
3670    public boolean hasResourceTrigger() { 
3671      if (this.resourceTrigger == null)
3672        return false;
3673      for (SubscriptionTopicResourceTriggerComponent item : this.resourceTrigger)
3674        if (!item.isEmpty())
3675          return true;
3676      return false;
3677    }
3678
3679    public SubscriptionTopicResourceTriggerComponent addResourceTrigger() { //3
3680      SubscriptionTopicResourceTriggerComponent t = new SubscriptionTopicResourceTriggerComponent();
3681      if (this.resourceTrigger == null)
3682        this.resourceTrigger = new ArrayList<SubscriptionTopicResourceTriggerComponent>();
3683      this.resourceTrigger.add(t);
3684      return t;
3685    }
3686
3687    public SubscriptionTopic addResourceTrigger(SubscriptionTopicResourceTriggerComponent t) { //3
3688      if (t == null)
3689        return this;
3690      if (this.resourceTrigger == null)
3691        this.resourceTrigger = new ArrayList<SubscriptionTopicResourceTriggerComponent>();
3692      this.resourceTrigger.add(t);
3693      return this;
3694    }
3695
3696    /**
3697     * @return The first repetition of repeating field {@link #resourceTrigger}, creating it if it does not already exist {3}
3698     */
3699    public SubscriptionTopicResourceTriggerComponent getResourceTriggerFirstRep() { 
3700      if (getResourceTrigger().isEmpty()) {
3701        addResourceTrigger();
3702      }
3703      return getResourceTrigger().get(0);
3704    }
3705
3706    /**
3707     * @return {@link #eventTrigger} (Event definition which can be used to trigger the SubscriptionTopic.)
3708     */
3709    public List<SubscriptionTopicEventTriggerComponent> getEventTrigger() { 
3710      if (this.eventTrigger == null)
3711        this.eventTrigger = new ArrayList<SubscriptionTopicEventTriggerComponent>();
3712      return this.eventTrigger;
3713    }
3714
3715    /**
3716     * @return Returns a reference to <code>this</code> for easy method chaining
3717     */
3718    public SubscriptionTopic setEventTrigger(List<SubscriptionTopicEventTriggerComponent> theEventTrigger) { 
3719      this.eventTrigger = theEventTrigger;
3720      return this;
3721    }
3722
3723    public boolean hasEventTrigger() { 
3724      if (this.eventTrigger == null)
3725        return false;
3726      for (SubscriptionTopicEventTriggerComponent item : this.eventTrigger)
3727        if (!item.isEmpty())
3728          return true;
3729      return false;
3730    }
3731
3732    public SubscriptionTopicEventTriggerComponent addEventTrigger() { //3
3733      SubscriptionTopicEventTriggerComponent t = new SubscriptionTopicEventTriggerComponent();
3734      if (this.eventTrigger == null)
3735        this.eventTrigger = new ArrayList<SubscriptionTopicEventTriggerComponent>();
3736      this.eventTrigger.add(t);
3737      return t;
3738    }
3739
3740    public SubscriptionTopic addEventTrigger(SubscriptionTopicEventTriggerComponent t) { //3
3741      if (t == null)
3742        return this;
3743      if (this.eventTrigger == null)
3744        this.eventTrigger = new ArrayList<SubscriptionTopicEventTriggerComponent>();
3745      this.eventTrigger.add(t);
3746      return this;
3747    }
3748
3749    /**
3750     * @return The first repetition of repeating field {@link #eventTrigger}, creating it if it does not already exist {3}
3751     */
3752    public SubscriptionTopicEventTriggerComponent getEventTriggerFirstRep() { 
3753      if (getEventTrigger().isEmpty()) {
3754        addEventTrigger();
3755      }
3756      return getEventTrigger().get(0);
3757    }
3758
3759    /**
3760     * @return {@link #canFilterBy} (List of properties by which Subscriptions on the SubscriptionTopic can be filtered. May be defined Search Parameters (e.g., Encounter.patient) or parameters defined within this SubscriptionTopic context (e.g., hub.event).)
3761     */
3762    public List<SubscriptionTopicCanFilterByComponent> getCanFilterBy() { 
3763      if (this.canFilterBy == null)
3764        this.canFilterBy = new ArrayList<SubscriptionTopicCanFilterByComponent>();
3765      return this.canFilterBy;
3766    }
3767
3768    /**
3769     * @return Returns a reference to <code>this</code> for easy method chaining
3770     */
3771    public SubscriptionTopic setCanFilterBy(List<SubscriptionTopicCanFilterByComponent> theCanFilterBy) { 
3772      this.canFilterBy = theCanFilterBy;
3773      return this;
3774    }
3775
3776    public boolean hasCanFilterBy() { 
3777      if (this.canFilterBy == null)
3778        return false;
3779      for (SubscriptionTopicCanFilterByComponent item : this.canFilterBy)
3780        if (!item.isEmpty())
3781          return true;
3782      return false;
3783    }
3784
3785    public SubscriptionTopicCanFilterByComponent addCanFilterBy() { //3
3786      SubscriptionTopicCanFilterByComponent t = new SubscriptionTopicCanFilterByComponent();
3787      if (this.canFilterBy == null)
3788        this.canFilterBy = new ArrayList<SubscriptionTopicCanFilterByComponent>();
3789      this.canFilterBy.add(t);
3790      return t;
3791    }
3792
3793    public SubscriptionTopic addCanFilterBy(SubscriptionTopicCanFilterByComponent t) { //3
3794      if (t == null)
3795        return this;
3796      if (this.canFilterBy == null)
3797        this.canFilterBy = new ArrayList<SubscriptionTopicCanFilterByComponent>();
3798      this.canFilterBy.add(t);
3799      return this;
3800    }
3801
3802    /**
3803     * @return The first repetition of repeating field {@link #canFilterBy}, creating it if it does not already exist {3}
3804     */
3805    public SubscriptionTopicCanFilterByComponent getCanFilterByFirstRep() { 
3806      if (getCanFilterBy().isEmpty()) {
3807        addCanFilterBy();
3808      }
3809      return getCanFilterBy().get(0);
3810    }
3811
3812    /**
3813     * @return {@link #notificationShape} (List of properties to describe the shape (e.g., resources) included in notifications from this Subscription Topic.)
3814     */
3815    public List<SubscriptionTopicNotificationShapeComponent> getNotificationShape() { 
3816      if (this.notificationShape == null)
3817        this.notificationShape = new ArrayList<SubscriptionTopicNotificationShapeComponent>();
3818      return this.notificationShape;
3819    }
3820
3821    /**
3822     * @return Returns a reference to <code>this</code> for easy method chaining
3823     */
3824    public SubscriptionTopic setNotificationShape(List<SubscriptionTopicNotificationShapeComponent> theNotificationShape) { 
3825      this.notificationShape = theNotificationShape;
3826      return this;
3827    }
3828
3829    public boolean hasNotificationShape() { 
3830      if (this.notificationShape == null)
3831        return false;
3832      for (SubscriptionTopicNotificationShapeComponent item : this.notificationShape)
3833        if (!item.isEmpty())
3834          return true;
3835      return false;
3836    }
3837
3838    public SubscriptionTopicNotificationShapeComponent addNotificationShape() { //3
3839      SubscriptionTopicNotificationShapeComponent t = new SubscriptionTopicNotificationShapeComponent();
3840      if (this.notificationShape == null)
3841        this.notificationShape = new ArrayList<SubscriptionTopicNotificationShapeComponent>();
3842      this.notificationShape.add(t);
3843      return t;
3844    }
3845
3846    public SubscriptionTopic addNotificationShape(SubscriptionTopicNotificationShapeComponent t) { //3
3847      if (t == null)
3848        return this;
3849      if (this.notificationShape == null)
3850        this.notificationShape = new ArrayList<SubscriptionTopicNotificationShapeComponent>();
3851      this.notificationShape.add(t);
3852      return this;
3853    }
3854
3855    /**
3856     * @return The first repetition of repeating field {@link #notificationShape}, creating it if it does not already exist {3}
3857     */
3858    public SubscriptionTopicNotificationShapeComponent getNotificationShapeFirstRep() { 
3859      if (getNotificationShape().isEmpty()) {
3860        addNotificationShape();
3861      }
3862      return getNotificationShape().get(0);
3863    }
3864
3865      protected void listChildren(List<Property> children) {
3866        super.listChildren(children);
3867        children.add(new Property("url", "uri", "An absolute URI that is used to identify this subscription topic 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 an authoritative instance of this subscription topic is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the subscription topic is stored on different servers.", 0, 1, url));
3868        children.add(new Property("identifier", "Identifier", "Business identifiers assigned to this subscription topic by the performer and/or other systems.  These identifiers remain constant as the resource is updated and propagates from server to server.", 0, java.lang.Integer.MAX_VALUE, identifier));
3869        children.add(new Property("version", "string", "The identifier that is used to identify this version of the subscription topic when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the Topic 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 are orderable.", 0, 1, version));
3870        children.add(new Property("versionAlgorithm[x]", "string|Coding", "Indicates the mechanism used to compare versions to determine which is more current.", 0, 1, versionAlgorithm));
3871        children.add(new Property("name", "string", "A natural language name identifying the subscription topic This name should be usable as an identifier for the module by machine processing applications such as code generation.", 0, 1, name));
3872        children.add(new Property("title", "string", "A short, descriptive, user-friendly title for the subscription topic.  For example, \"admission\".", 0, 1, title));
3873        children.add(new Property("derivedFrom", "canonical(SubscriptionTopic)", "The canonical URL pointing to another FHIR-defined SubscriptionTopic that is adhered to in whole or in part by this SubscriptionTopic.", 0, java.lang.Integer.MAX_VALUE, derivedFrom));
3874        children.add(new Property("status", "code", "The current state of the SubscriptionTopic.", 0, 1, status));
3875        children.add(new Property("experimental", "boolean", "A flag to indicate that this TopSubscriptionTopicic is authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage.", 0, 1, experimental));
3876        children.add(new Property("date", "dateTime", "The date (and optionally time) when the subscription topic was last significantly changed. 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 subscription topic changes.", 0, 1, date));
3877        children.add(new Property("publisher", "string", "Helps establish the \"authority/credibility\" of the SubscriptionTopic.  May also allow for contact.", 0, 1, publisher));
3878        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));
3879        children.add(new Property("description", "markdown", "A free text natural language description of the Topic from the consumer's perspective.", 0, 1, description));
3880        children.add(new Property("useContext", "UsageContext", "The content was developed with a focus and intent of supporting the contexts that are listed. These terms may be used to assist with indexing and searching of code system definitions.", 0, java.lang.Integer.MAX_VALUE, useContext));
3881        children.add(new Property("jurisdiction", "CodeableConcept", "A jurisdiction in which the Topic is intended to be used.", 0, java.lang.Integer.MAX_VALUE, jurisdiction));
3882        children.add(new Property("purpose", "markdown", "Explains why this Topic is needed and why it has been designed as it has.", 0, 1, purpose));
3883        children.add(new Property("copyright", "markdown", "A copyright statement relating to the SubscriptionTopic and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the SubscriptionTopic.", 0, 1, copyright));
3884        children.add(new Property("copyrightLabel", "string", "A short string (<50 characters), suitable for inclusion in a page footer that identifies the copyright holder, effective period, and optionally whether rights are resctricted. (e.g. 'All rights reserved', 'Some rights reserved').", 0, 1, copyrightLabel));
3885        children.add(new Property("approvalDate", "date", "The date on which the asset content was approved by the publisher. Approval happens once when the content is officially approved for usage.", 0, 1, approvalDate));
3886        children.add(new Property("lastReviewDate", "date", "The date on which the asset content was last reviewed. Review happens periodically after that, but doesn't change the original approval date.", 0, 1, lastReviewDate));
3887        children.add(new Property("effectivePeriod", "Period", "The period during which the SubscriptionTopic content was or is planned to be effective.", 0, 1, effectivePeriod));
3888        children.add(new Property("resourceTrigger", "", "A definition of a resource-based event that triggers a notification based on the SubscriptionTopic. The criteria may be just a human readable description and/or a full FHIR search string or FHIRPath expression. Multiple triggers are considered OR joined (e.g., a resource update matching ANY of the definitions will trigger a notification).", 0, java.lang.Integer.MAX_VALUE, resourceTrigger));
3889        children.add(new Property("eventTrigger", "", "Event definition which can be used to trigger the SubscriptionTopic.", 0, java.lang.Integer.MAX_VALUE, eventTrigger));
3890        children.add(new Property("canFilterBy", "", "List of properties by which Subscriptions on the SubscriptionTopic can be filtered. May be defined Search Parameters (e.g., Encounter.patient) or parameters defined within this SubscriptionTopic context (e.g., hub.event).", 0, java.lang.Integer.MAX_VALUE, canFilterBy));
3891        children.add(new Property("notificationShape", "", "List of properties to describe the shape (e.g., resources) included in notifications from this Subscription Topic.", 0, java.lang.Integer.MAX_VALUE, notificationShape));
3892      }
3893
3894      @Override
3895      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
3896        switch (_hash) {
3897        case 116079: /*url*/  return new Property("url", "uri", "An absolute URI that is used to identify this subscription topic 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 an authoritative instance of this subscription topic is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the subscription topic is stored on different servers.", 0, 1, url);
3898        case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "Business identifiers assigned to this subscription topic by the performer and/or other systems.  These identifiers remain constant as the resource is updated and propagates from server to server.", 0, java.lang.Integer.MAX_VALUE, identifier);
3899        case 351608024: /*version*/  return new Property("version", "string", "The identifier that is used to identify this version of the subscription topic when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the Topic 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 are orderable.", 0, 1, version);
3900        case -115699031: /*versionAlgorithm[x]*/  return new Property("versionAlgorithm[x]", "string|Coding", "Indicates the mechanism used to compare versions to determine which is more current.", 0, 1, versionAlgorithm);
3901        case 1508158071: /*versionAlgorithm*/  return new Property("versionAlgorithm[x]", "string|Coding", "Indicates the mechanism used to compare versions to determine which is more current.", 0, 1, versionAlgorithm);
3902        case 1836908904: /*versionAlgorithmString*/  return new Property("versionAlgorithm[x]", "string", "Indicates the mechanism used to compare versions to determine which is more current.", 0, 1, versionAlgorithm);
3903        case 1373807809: /*versionAlgorithmCoding*/  return new Property("versionAlgorithm[x]", "Coding", "Indicates the mechanism used to compare versions to determine which is more current.", 0, 1, versionAlgorithm);
3904        case 3373707: /*name*/  return new Property("name", "string", "A natural language name identifying the subscription topic This name should be usable as an identifier for the module by machine processing applications such as code generation.", 0, 1, name);
3905        case 110371416: /*title*/  return new Property("title", "string", "A short, descriptive, user-friendly title for the subscription topic.  For example, \"admission\".", 0, 1, title);
3906        case 1077922663: /*derivedFrom*/  return new Property("derivedFrom", "canonical(SubscriptionTopic)", "The canonical URL pointing to another FHIR-defined SubscriptionTopic that is adhered to in whole or in part by this SubscriptionTopic.", 0, java.lang.Integer.MAX_VALUE, derivedFrom);
3907        case -892481550: /*status*/  return new Property("status", "code", "The current state of the SubscriptionTopic.", 0, 1, status);
3908        case -404562712: /*experimental*/  return new Property("experimental", "boolean", "A flag to indicate that this TopSubscriptionTopicic is authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage.", 0, 1, experimental);
3909        case 3076014: /*date*/  return new Property("date", "dateTime", "The date (and optionally time) when the subscription topic was last significantly changed. 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 subscription topic changes.", 0, 1, date);
3910        case 1447404028: /*publisher*/  return new Property("publisher", "string", "Helps establish the \"authority/credibility\" of the SubscriptionTopic.  May also allow for contact.", 0, 1, publisher);
3911        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);
3912        case -1724546052: /*description*/  return new Property("description", "markdown", "A free text natural language description of the Topic from the consumer's perspective.", 0, 1, description);
3913        case -669707736: /*useContext*/  return new Property("useContext", "UsageContext", "The content was developed with a focus and intent of supporting the contexts that are listed. These terms may be used to assist with indexing and searching of code system definitions.", 0, java.lang.Integer.MAX_VALUE, useContext);
3914        case -507075711: /*jurisdiction*/  return new Property("jurisdiction", "CodeableConcept", "A jurisdiction in which the Topic is intended to be used.", 0, java.lang.Integer.MAX_VALUE, jurisdiction);
3915        case -220463842: /*purpose*/  return new Property("purpose", "markdown", "Explains why this Topic is needed and why it has been designed as it has.", 0, 1, purpose);
3916        case 1522889671: /*copyright*/  return new Property("copyright", "markdown", "A copyright statement relating to the SubscriptionTopic and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the SubscriptionTopic.", 0, 1, copyright);
3917        case 765157229: /*copyrightLabel*/  return new Property("copyrightLabel", "string", "A short string (<50 characters), suitable for inclusion in a page footer that identifies the copyright holder, effective period, and optionally whether rights are resctricted. (e.g. 'All rights reserved', 'Some rights reserved').", 0, 1, copyrightLabel);
3918        case 223539345: /*approvalDate*/  return new Property("approvalDate", "date", "The date on which the asset content was approved by the publisher. Approval happens once when the content is officially approved for usage.", 0, 1, approvalDate);
3919        case -1687512484: /*lastReviewDate*/  return new Property("lastReviewDate", "date", "The date on which the asset content was last reviewed. Review happens periodically after that, but doesn't change the original approval date.", 0, 1, lastReviewDate);
3920        case -403934648: /*effectivePeriod*/  return new Property("effectivePeriod", "Period", "The period during which the SubscriptionTopic content was or is planned to be effective.", 0, 1, effectivePeriod);
3921        case -424927798: /*resourceTrigger*/  return new Property("resourceTrigger", "", "A definition of a resource-based event that triggers a notification based on the SubscriptionTopic. The criteria may be just a human readable description and/or a full FHIR search string or FHIRPath expression. Multiple triggers are considered OR joined (e.g., a resource update matching ANY of the definitions will trigger a notification).", 0, java.lang.Integer.MAX_VALUE, resourceTrigger);
3922        case -151635522: /*eventTrigger*/  return new Property("eventTrigger", "", "Event definition which can be used to trigger the SubscriptionTopic.", 0, java.lang.Integer.MAX_VALUE, eventTrigger);
3923        case -1299519009: /*canFilterBy*/  return new Property("canFilterBy", "", "List of properties by which Subscriptions on the SubscriptionTopic can be filtered. May be defined Search Parameters (e.g., Encounter.patient) or parameters defined within this SubscriptionTopic context (e.g., hub.event).", 0, java.lang.Integer.MAX_VALUE, canFilterBy);
3924        case -1583369866: /*notificationShape*/  return new Property("notificationShape", "", "List of properties to describe the shape (e.g., resources) included in notifications from this Subscription Topic.", 0, java.lang.Integer.MAX_VALUE, notificationShape);
3925        default: return super.getNamedProperty(_hash, _name, _checkValid);
3926        }
3927
3928      }
3929
3930      @Override
3931      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
3932        switch (hash) {
3933        case 116079: /*url*/ return this.url == null ? new Base[0] : new Base[] {this.url}; // UriType
3934        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
3935        case 351608024: /*version*/ return this.version == null ? new Base[0] : new Base[] {this.version}; // StringType
3936        case 1508158071: /*versionAlgorithm*/ return this.versionAlgorithm == null ? new Base[0] : new Base[] {this.versionAlgorithm}; // DataType
3937        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
3938        case 110371416: /*title*/ return this.title == null ? new Base[0] : new Base[] {this.title}; // StringType
3939        case 1077922663: /*derivedFrom*/ return this.derivedFrom == null ? new Base[0] : this.derivedFrom.toArray(new Base[this.derivedFrom.size()]); // CanonicalType
3940        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<PublicationStatus>
3941        case -404562712: /*experimental*/ return this.experimental == null ? new Base[0] : new Base[] {this.experimental}; // BooleanType
3942        case 3076014: /*date*/ return this.date == null ? new Base[0] : new Base[] {this.date}; // DateTimeType
3943        case 1447404028: /*publisher*/ return this.publisher == null ? new Base[0] : new Base[] {this.publisher}; // StringType
3944        case 951526432: /*contact*/ return this.contact == null ? new Base[0] : this.contact.toArray(new Base[this.contact.size()]); // ContactDetail
3945        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // MarkdownType
3946        case -669707736: /*useContext*/ return this.useContext == null ? new Base[0] : this.useContext.toArray(new Base[this.useContext.size()]); // UsageContext
3947        case -507075711: /*jurisdiction*/ return this.jurisdiction == null ? new Base[0] : this.jurisdiction.toArray(new Base[this.jurisdiction.size()]); // CodeableConcept
3948        case -220463842: /*purpose*/ return this.purpose == null ? new Base[0] : new Base[] {this.purpose}; // MarkdownType
3949        case 1522889671: /*copyright*/ return this.copyright == null ? new Base[0] : new Base[] {this.copyright}; // MarkdownType
3950        case 765157229: /*copyrightLabel*/ return this.copyrightLabel == null ? new Base[0] : new Base[] {this.copyrightLabel}; // StringType
3951        case 223539345: /*approvalDate*/ return this.approvalDate == null ? new Base[0] : new Base[] {this.approvalDate}; // DateType
3952        case -1687512484: /*lastReviewDate*/ return this.lastReviewDate == null ? new Base[0] : new Base[] {this.lastReviewDate}; // DateType
3953        case -403934648: /*effectivePeriod*/ return this.effectivePeriod == null ? new Base[0] : new Base[] {this.effectivePeriod}; // Period
3954        case -424927798: /*resourceTrigger*/ return this.resourceTrigger == null ? new Base[0] : this.resourceTrigger.toArray(new Base[this.resourceTrigger.size()]); // SubscriptionTopicResourceTriggerComponent
3955        case -151635522: /*eventTrigger*/ return this.eventTrigger == null ? new Base[0] : this.eventTrigger.toArray(new Base[this.eventTrigger.size()]); // SubscriptionTopicEventTriggerComponent
3956        case -1299519009: /*canFilterBy*/ return this.canFilterBy == null ? new Base[0] : this.canFilterBy.toArray(new Base[this.canFilterBy.size()]); // SubscriptionTopicCanFilterByComponent
3957        case -1583369866: /*notificationShape*/ return this.notificationShape == null ? new Base[0] : this.notificationShape.toArray(new Base[this.notificationShape.size()]); // SubscriptionTopicNotificationShapeComponent
3958        default: return super.getProperty(hash, name, checkValid);
3959        }
3960
3961      }
3962
3963      @Override
3964      public Base setProperty(int hash, String name, Base value) throws FHIRException {
3965        switch (hash) {
3966        case 116079: // url
3967          this.url = TypeConvertor.castToUri(value); // UriType
3968          return value;
3969        case -1618432855: // identifier
3970          this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier
3971          return value;
3972        case 351608024: // version
3973          this.version = TypeConvertor.castToString(value); // StringType
3974          return value;
3975        case 1508158071: // versionAlgorithm
3976          this.versionAlgorithm = TypeConvertor.castToType(value); // DataType
3977          return value;
3978        case 3373707: // name
3979          this.name = TypeConvertor.castToString(value); // StringType
3980          return value;
3981        case 110371416: // title
3982          this.title = TypeConvertor.castToString(value); // StringType
3983          return value;
3984        case 1077922663: // derivedFrom
3985          this.getDerivedFrom().add(TypeConvertor.castToCanonical(value)); // CanonicalType
3986          return value;
3987        case -892481550: // status
3988          value = new PublicationStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
3989          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
3990          return value;
3991        case -404562712: // experimental
3992          this.experimental = TypeConvertor.castToBoolean(value); // BooleanType
3993          return value;
3994        case 3076014: // date
3995          this.date = TypeConvertor.castToDateTime(value); // DateTimeType
3996          return value;
3997        case 1447404028: // publisher
3998          this.publisher = TypeConvertor.castToString(value); // StringType
3999          return value;
4000        case 951526432: // contact
4001          this.getContact().add(TypeConvertor.castToContactDetail(value)); // ContactDetail
4002          return value;
4003        case -1724546052: // description
4004          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
4005          return value;
4006        case -669707736: // useContext
4007          this.getUseContext().add(TypeConvertor.castToUsageContext(value)); // UsageContext
4008          return value;
4009        case -507075711: // jurisdiction
4010          this.getJurisdiction().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
4011          return value;
4012        case -220463842: // purpose
4013          this.purpose = TypeConvertor.castToMarkdown(value); // MarkdownType
4014          return value;
4015        case 1522889671: // copyright
4016          this.copyright = TypeConvertor.castToMarkdown(value); // MarkdownType
4017          return value;
4018        case 765157229: // copyrightLabel
4019          this.copyrightLabel = TypeConvertor.castToString(value); // StringType
4020          return value;
4021        case 223539345: // approvalDate
4022          this.approvalDate = TypeConvertor.castToDate(value); // DateType
4023          return value;
4024        case -1687512484: // lastReviewDate
4025          this.lastReviewDate = TypeConvertor.castToDate(value); // DateType
4026          return value;
4027        case -403934648: // effectivePeriod
4028          this.effectivePeriod = TypeConvertor.castToPeriod(value); // Period
4029          return value;
4030        case -424927798: // resourceTrigger
4031          this.getResourceTrigger().add((SubscriptionTopicResourceTriggerComponent) value); // SubscriptionTopicResourceTriggerComponent
4032          return value;
4033        case -151635522: // eventTrigger
4034          this.getEventTrigger().add((SubscriptionTopicEventTriggerComponent) value); // SubscriptionTopicEventTriggerComponent
4035          return value;
4036        case -1299519009: // canFilterBy
4037          this.getCanFilterBy().add((SubscriptionTopicCanFilterByComponent) value); // SubscriptionTopicCanFilterByComponent
4038          return value;
4039        case -1583369866: // notificationShape
4040          this.getNotificationShape().add((SubscriptionTopicNotificationShapeComponent) value); // SubscriptionTopicNotificationShapeComponent
4041          return value;
4042        default: return super.setProperty(hash, name, value);
4043        }
4044
4045      }
4046
4047      @Override
4048      public Base setProperty(String name, Base value) throws FHIRException {
4049        if (name.equals("url")) {
4050          this.url = TypeConvertor.castToUri(value); // UriType
4051        } else if (name.equals("identifier")) {
4052          this.getIdentifier().add(TypeConvertor.castToIdentifier(value));
4053        } else if (name.equals("version")) {
4054          this.version = TypeConvertor.castToString(value); // StringType
4055        } else if (name.equals("versionAlgorithm[x]")) {
4056          this.versionAlgorithm = TypeConvertor.castToType(value); // DataType
4057        } else if (name.equals("name")) {
4058          this.name = TypeConvertor.castToString(value); // StringType
4059        } else if (name.equals("title")) {
4060          this.title = TypeConvertor.castToString(value); // StringType
4061        } else if (name.equals("derivedFrom")) {
4062          this.getDerivedFrom().add(TypeConvertor.castToCanonical(value));
4063        } else if (name.equals("status")) {
4064          value = new PublicationStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
4065          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
4066        } else if (name.equals("experimental")) {
4067          this.experimental = TypeConvertor.castToBoolean(value); // BooleanType
4068        } else if (name.equals("date")) {
4069          this.date = TypeConvertor.castToDateTime(value); // DateTimeType
4070        } else if (name.equals("publisher")) {
4071          this.publisher = TypeConvertor.castToString(value); // StringType
4072        } else if (name.equals("contact")) {
4073          this.getContact().add(TypeConvertor.castToContactDetail(value));
4074        } else if (name.equals("description")) {
4075          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
4076        } else if (name.equals("useContext")) {
4077          this.getUseContext().add(TypeConvertor.castToUsageContext(value));
4078        } else if (name.equals("jurisdiction")) {
4079          this.getJurisdiction().add(TypeConvertor.castToCodeableConcept(value));
4080        } else if (name.equals("purpose")) {
4081          this.purpose = TypeConvertor.castToMarkdown(value); // MarkdownType
4082        } else if (name.equals("copyright")) {
4083          this.copyright = TypeConvertor.castToMarkdown(value); // MarkdownType
4084        } else if (name.equals("copyrightLabel")) {
4085          this.copyrightLabel = TypeConvertor.castToString(value); // StringType
4086        } else if (name.equals("approvalDate")) {
4087          this.approvalDate = TypeConvertor.castToDate(value); // DateType
4088        } else if (name.equals("lastReviewDate")) {
4089          this.lastReviewDate = TypeConvertor.castToDate(value); // DateType
4090        } else if (name.equals("effectivePeriod")) {
4091          this.effectivePeriod = TypeConvertor.castToPeriod(value); // Period
4092        } else if (name.equals("resourceTrigger")) {
4093          this.getResourceTrigger().add((SubscriptionTopicResourceTriggerComponent) value);
4094        } else if (name.equals("eventTrigger")) {
4095          this.getEventTrigger().add((SubscriptionTopicEventTriggerComponent) value);
4096        } else if (name.equals("canFilterBy")) {
4097          this.getCanFilterBy().add((SubscriptionTopicCanFilterByComponent) value);
4098        } else if (name.equals("notificationShape")) {
4099          this.getNotificationShape().add((SubscriptionTopicNotificationShapeComponent) value);
4100        } else
4101          return super.setProperty(name, value);
4102        return value;
4103      }
4104
4105      @Override
4106      public Base makeProperty(int hash, String name) throws FHIRException {
4107        switch (hash) {
4108        case 116079:  return getUrlElement();
4109        case -1618432855:  return addIdentifier(); 
4110        case 351608024:  return getVersionElement();
4111        case -115699031:  return getVersionAlgorithm();
4112        case 1508158071:  return getVersionAlgorithm();
4113        case 3373707:  return getNameElement();
4114        case 110371416:  return getTitleElement();
4115        case 1077922663:  return addDerivedFromElement();
4116        case -892481550:  return getStatusElement();
4117        case -404562712:  return getExperimentalElement();
4118        case 3076014:  return getDateElement();
4119        case 1447404028:  return getPublisherElement();
4120        case 951526432:  return addContact(); 
4121        case -1724546052:  return getDescriptionElement();
4122        case -669707736:  return addUseContext(); 
4123        case -507075711:  return addJurisdiction(); 
4124        case -220463842:  return getPurposeElement();
4125        case 1522889671:  return getCopyrightElement();
4126        case 765157229:  return getCopyrightLabelElement();
4127        case 223539345:  return getApprovalDateElement();
4128        case -1687512484:  return getLastReviewDateElement();
4129        case -403934648:  return getEffectivePeriod();
4130        case -424927798:  return addResourceTrigger(); 
4131        case -151635522:  return addEventTrigger(); 
4132        case -1299519009:  return addCanFilterBy(); 
4133        case -1583369866:  return addNotificationShape(); 
4134        default: return super.makeProperty(hash, name);
4135        }
4136
4137      }
4138
4139      @Override
4140      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
4141        switch (hash) {
4142        case 116079: /*url*/ return new String[] {"uri"};
4143        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
4144        case 351608024: /*version*/ return new String[] {"string"};
4145        case 1508158071: /*versionAlgorithm*/ return new String[] {"string", "Coding"};
4146        case 3373707: /*name*/ return new String[] {"string"};
4147        case 110371416: /*title*/ return new String[] {"string"};
4148        case 1077922663: /*derivedFrom*/ return new String[] {"canonical"};
4149        case -892481550: /*status*/ return new String[] {"code"};
4150        case -404562712: /*experimental*/ return new String[] {"boolean"};
4151        case 3076014: /*date*/ return new String[] {"dateTime"};
4152        case 1447404028: /*publisher*/ return new String[] {"string"};
4153        case 951526432: /*contact*/ return new String[] {"ContactDetail"};
4154        case -1724546052: /*description*/ return new String[] {"markdown"};
4155        case -669707736: /*useContext*/ return new String[] {"UsageContext"};
4156        case -507075711: /*jurisdiction*/ return new String[] {"CodeableConcept"};
4157        case -220463842: /*purpose*/ return new String[] {"markdown"};
4158        case 1522889671: /*copyright*/ return new String[] {"markdown"};
4159        case 765157229: /*copyrightLabel*/ return new String[] {"string"};
4160        case 223539345: /*approvalDate*/ return new String[] {"date"};
4161        case -1687512484: /*lastReviewDate*/ return new String[] {"date"};
4162        case -403934648: /*effectivePeriod*/ return new String[] {"Period"};
4163        case -424927798: /*resourceTrigger*/ return new String[] {};
4164        case -151635522: /*eventTrigger*/ return new String[] {};
4165        case -1299519009: /*canFilterBy*/ return new String[] {};
4166        case -1583369866: /*notificationShape*/ return new String[] {};
4167        default: return super.getTypesForProperty(hash, name);
4168        }
4169
4170      }
4171
4172      @Override
4173      public Base addChild(String name) throws FHIRException {
4174        if (name.equals("url")) {
4175          throw new FHIRException("Cannot call addChild on a singleton property SubscriptionTopic.url");
4176        }
4177        else if (name.equals("identifier")) {
4178          return addIdentifier();
4179        }
4180        else if (name.equals("version")) {
4181          throw new FHIRException("Cannot call addChild on a singleton property SubscriptionTopic.version");
4182        }
4183        else if (name.equals("versionAlgorithmString")) {
4184          this.versionAlgorithm = new StringType();
4185          return this.versionAlgorithm;
4186        }
4187        else if (name.equals("versionAlgorithmCoding")) {
4188          this.versionAlgorithm = new Coding();
4189          return this.versionAlgorithm;
4190        }
4191        else if (name.equals("name")) {
4192          throw new FHIRException("Cannot call addChild on a singleton property SubscriptionTopic.name");
4193        }
4194        else if (name.equals("title")) {
4195          throw new FHIRException("Cannot call addChild on a singleton property SubscriptionTopic.title");
4196        }
4197        else if (name.equals("derivedFrom")) {
4198          throw new FHIRException("Cannot call addChild on a singleton property SubscriptionTopic.derivedFrom");
4199        }
4200        else if (name.equals("status")) {
4201          throw new FHIRException("Cannot call addChild on a singleton property SubscriptionTopic.status");
4202        }
4203        else if (name.equals("experimental")) {
4204          throw new FHIRException("Cannot call addChild on a singleton property SubscriptionTopic.experimental");
4205        }
4206        else if (name.equals("date")) {
4207          throw new FHIRException("Cannot call addChild on a singleton property SubscriptionTopic.date");
4208        }
4209        else if (name.equals("publisher")) {
4210          throw new FHIRException("Cannot call addChild on a singleton property SubscriptionTopic.publisher");
4211        }
4212        else if (name.equals("contact")) {
4213          return addContact();
4214        }
4215        else if (name.equals("description")) {
4216          throw new FHIRException("Cannot call addChild on a singleton property SubscriptionTopic.description");
4217        }
4218        else if (name.equals("useContext")) {
4219          return addUseContext();
4220        }
4221        else if (name.equals("jurisdiction")) {
4222          return addJurisdiction();
4223        }
4224        else if (name.equals("purpose")) {
4225          throw new FHIRException("Cannot call addChild on a singleton property SubscriptionTopic.purpose");
4226        }
4227        else if (name.equals("copyright")) {
4228          throw new FHIRException("Cannot call addChild on a singleton property SubscriptionTopic.copyright");
4229        }
4230        else if (name.equals("copyrightLabel")) {
4231          throw new FHIRException("Cannot call addChild on a singleton property SubscriptionTopic.copyrightLabel");
4232        }
4233        else if (name.equals("approvalDate")) {
4234          throw new FHIRException("Cannot call addChild on a singleton property SubscriptionTopic.approvalDate");
4235        }
4236        else if (name.equals("lastReviewDate")) {
4237          throw new FHIRException("Cannot call addChild on a singleton property SubscriptionTopic.lastReviewDate");
4238        }
4239        else if (name.equals("effectivePeriod")) {
4240          this.effectivePeriod = new Period();
4241          return this.effectivePeriod;
4242        }
4243        else if (name.equals("resourceTrigger")) {
4244          return addResourceTrigger();
4245        }
4246        else if (name.equals("eventTrigger")) {
4247          return addEventTrigger();
4248        }
4249        else if (name.equals("canFilterBy")) {
4250          return addCanFilterBy();
4251        }
4252        else if (name.equals("notificationShape")) {
4253          return addNotificationShape();
4254        }
4255        else
4256          return super.addChild(name);
4257      }
4258
4259  public String fhirType() {
4260    return "SubscriptionTopic";
4261
4262  }
4263
4264      public SubscriptionTopic copy() {
4265        SubscriptionTopic dst = new SubscriptionTopic();
4266        copyValues(dst);
4267        return dst;
4268      }
4269
4270      public void copyValues(SubscriptionTopic dst) {
4271        super.copyValues(dst);
4272        dst.url = url == null ? null : url.copy();
4273        if (identifier != null) {
4274          dst.identifier = new ArrayList<Identifier>();
4275          for (Identifier i : identifier)
4276            dst.identifier.add(i.copy());
4277        };
4278        dst.version = version == null ? null : version.copy();
4279        dst.versionAlgorithm = versionAlgorithm == null ? null : versionAlgorithm.copy();
4280        dst.name = name == null ? null : name.copy();
4281        dst.title = title == null ? null : title.copy();
4282        if (derivedFrom != null) {
4283          dst.derivedFrom = new ArrayList<CanonicalType>();
4284          for (CanonicalType i : derivedFrom)
4285            dst.derivedFrom.add(i.copy());
4286        };
4287        dst.status = status == null ? null : status.copy();
4288        dst.experimental = experimental == null ? null : experimental.copy();
4289        dst.date = date == null ? null : date.copy();
4290        dst.publisher = publisher == null ? null : publisher.copy();
4291        if (contact != null) {
4292          dst.contact = new ArrayList<ContactDetail>();
4293          for (ContactDetail i : contact)
4294            dst.contact.add(i.copy());
4295        };
4296        dst.description = description == null ? null : description.copy();
4297        if (useContext != null) {
4298          dst.useContext = new ArrayList<UsageContext>();
4299          for (UsageContext i : useContext)
4300            dst.useContext.add(i.copy());
4301        };
4302        if (jurisdiction != null) {
4303          dst.jurisdiction = new ArrayList<CodeableConcept>();
4304          for (CodeableConcept i : jurisdiction)
4305            dst.jurisdiction.add(i.copy());
4306        };
4307        dst.purpose = purpose == null ? null : purpose.copy();
4308        dst.copyright = copyright == null ? null : copyright.copy();
4309        dst.copyrightLabel = copyrightLabel == null ? null : copyrightLabel.copy();
4310        dst.approvalDate = approvalDate == null ? null : approvalDate.copy();
4311        dst.lastReviewDate = lastReviewDate == null ? null : lastReviewDate.copy();
4312        dst.effectivePeriod = effectivePeriod == null ? null : effectivePeriod.copy();
4313        if (resourceTrigger != null) {
4314          dst.resourceTrigger = new ArrayList<SubscriptionTopicResourceTriggerComponent>();
4315          for (SubscriptionTopicResourceTriggerComponent i : resourceTrigger)
4316            dst.resourceTrigger.add(i.copy());
4317        };
4318        if (eventTrigger != null) {
4319          dst.eventTrigger = new ArrayList<SubscriptionTopicEventTriggerComponent>();
4320          for (SubscriptionTopicEventTriggerComponent i : eventTrigger)
4321            dst.eventTrigger.add(i.copy());
4322        };
4323        if (canFilterBy != null) {
4324          dst.canFilterBy = new ArrayList<SubscriptionTopicCanFilterByComponent>();
4325          for (SubscriptionTopicCanFilterByComponent i : canFilterBy)
4326            dst.canFilterBy.add(i.copy());
4327        };
4328        if (notificationShape != null) {
4329          dst.notificationShape = new ArrayList<SubscriptionTopicNotificationShapeComponent>();
4330          for (SubscriptionTopicNotificationShapeComponent i : notificationShape)
4331            dst.notificationShape.add(i.copy());
4332        };
4333      }
4334
4335      protected SubscriptionTopic typedCopy() {
4336        return copy();
4337      }
4338
4339      @Override
4340      public boolean equalsDeep(Base other_) {
4341        if (!super.equalsDeep(other_))
4342          return false;
4343        if (!(other_ instanceof SubscriptionTopic))
4344          return false;
4345        SubscriptionTopic o = (SubscriptionTopic) other_;
4346        return compareDeep(url, o.url, true) && compareDeep(identifier, o.identifier, true) && compareDeep(version, o.version, true)
4347           && compareDeep(versionAlgorithm, o.versionAlgorithm, true) && compareDeep(name, o.name, true) && compareDeep(title, o.title, true)
4348           && compareDeep(derivedFrom, o.derivedFrom, true) && compareDeep(status, o.status, true) && compareDeep(experimental, o.experimental, true)
4349           && compareDeep(date, o.date, true) && compareDeep(publisher, o.publisher, true) && compareDeep(contact, o.contact, true)
4350           && compareDeep(description, o.description, true) && compareDeep(useContext, o.useContext, true)
4351           && compareDeep(jurisdiction, o.jurisdiction, true) && compareDeep(purpose, o.purpose, true) && compareDeep(copyright, o.copyright, true)
4352           && compareDeep(copyrightLabel, o.copyrightLabel, true) && compareDeep(approvalDate, o.approvalDate, true)
4353           && compareDeep(lastReviewDate, o.lastReviewDate, true) && compareDeep(effectivePeriod, o.effectivePeriod, true)
4354           && compareDeep(resourceTrigger, o.resourceTrigger, true) && compareDeep(eventTrigger, o.eventTrigger, true)
4355           && compareDeep(canFilterBy, o.canFilterBy, true) && compareDeep(notificationShape, o.notificationShape, true)
4356          ;
4357      }
4358
4359      @Override
4360      public boolean equalsShallow(Base other_) {
4361        if (!super.equalsShallow(other_))
4362          return false;
4363        if (!(other_ instanceof SubscriptionTopic))
4364          return false;
4365        SubscriptionTopic o = (SubscriptionTopic) other_;
4366        return compareValues(url, o.url, true) && compareValues(version, o.version, true) && compareValues(name, o.name, true)
4367           && compareValues(title, o.title, true) && compareValues(derivedFrom, o.derivedFrom, true) && compareValues(status, o.status, true)
4368           && compareValues(experimental, o.experimental, true) && compareValues(date, o.date, true) && compareValues(publisher, o.publisher, true)
4369           && compareValues(description, o.description, true) && compareValues(purpose, o.purpose, true) && compareValues(copyright, o.copyright, true)
4370           && compareValues(copyrightLabel, o.copyrightLabel, true) && compareValues(approvalDate, o.approvalDate, true)
4371           && compareValues(lastReviewDate, o.lastReviewDate, true);
4372      }
4373
4374      public boolean isEmpty() {
4375        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(url, identifier, version
4376          , versionAlgorithm, name, title, derivedFrom, status, experimental, date, publisher
4377          , contact, description, useContext, jurisdiction, purpose, copyright, copyrightLabel
4378          , approvalDate, lastReviewDate, effectivePeriod, resourceTrigger, eventTrigger, canFilterBy
4379          , notificationShape);
4380      }
4381
4382  @Override
4383  public ResourceType getResourceType() {
4384    return ResourceType.SubscriptionTopic;
4385   }
4386
4387 /**
4388   * Search parameter: <b>date</b>
4389   * <p>
4390   * Description: <b>Multiple Resources: 
4391
4392* [ActivityDefinition](activitydefinition.html): The activity definition publication date
4393* [ActorDefinition](actordefinition.html): The Actor Definition publication date
4394* [CapabilityStatement](capabilitystatement.html): The capability statement publication date
4395* [ChargeItemDefinition](chargeitemdefinition.html): The charge item definition publication date
4396* [Citation](citation.html): The citation publication date
4397* [CodeSystem](codesystem.html): The code system publication date
4398* [CompartmentDefinition](compartmentdefinition.html): The compartment definition publication date
4399* [ConceptMap](conceptmap.html): The concept map publication date
4400* [ConditionDefinition](conditiondefinition.html): The condition definition publication date
4401* [EventDefinition](eventdefinition.html): The event definition publication date
4402* [Evidence](evidence.html): The evidence publication date
4403* [EvidenceVariable](evidencevariable.html): The evidence variable publication date
4404* [ExampleScenario](examplescenario.html): The example scenario publication date
4405* [GraphDefinition](graphdefinition.html): The graph definition publication date
4406* [ImplementationGuide](implementationguide.html): The implementation guide publication date
4407* [Library](library.html): The library publication date
4408* [Measure](measure.html): The measure publication date
4409* [MessageDefinition](messagedefinition.html): The message definition publication date
4410* [NamingSystem](namingsystem.html): The naming system publication date
4411* [OperationDefinition](operationdefinition.html): The operation definition publication date
4412* [PlanDefinition](plandefinition.html): The plan definition publication date
4413* [Questionnaire](questionnaire.html): The questionnaire publication date
4414* [Requirements](requirements.html): The requirements publication date
4415* [SearchParameter](searchparameter.html): The search parameter publication date
4416* [StructureDefinition](structuredefinition.html): The structure definition publication date
4417* [StructureMap](structuremap.html): The structure map publication date
4418* [SubscriptionTopic](subscriptiontopic.html): Date status first applied
4419* [TerminologyCapabilities](terminologycapabilities.html): The terminology capabilities publication date
4420* [TestScript](testscript.html): The test script publication date
4421* [ValueSet](valueset.html): The value set publication date
4422</b><br>
4423   * Type: <b>date</b><br>
4424   * Path: <b>ActivityDefinition.date | ActorDefinition.date | CapabilityStatement.date | ChargeItemDefinition.date | Citation.date | CodeSystem.date | CompartmentDefinition.date | ConceptMap.date | ConditionDefinition.date | EventDefinition.date | Evidence.date | EvidenceVariable.date | ExampleScenario.date | GraphDefinition.date | ImplementationGuide.date | Library.date | Measure.date | MessageDefinition.date | NamingSystem.date | OperationDefinition.date | PlanDefinition.date | Questionnaire.date | Requirements.date | SearchParameter.date | StructureDefinition.date | StructureMap.date | SubscriptionTopic.date | TerminologyCapabilities.date | TestScript.date | ValueSet.date</b><br>
4425   * </p>
4426   */
4427  @SearchParamDefinition(name="date", path="ActivityDefinition.date | ActorDefinition.date | CapabilityStatement.date | ChargeItemDefinition.date | Citation.date | CodeSystem.date | CompartmentDefinition.date | ConceptMap.date | ConditionDefinition.date | EventDefinition.date | Evidence.date | EvidenceVariable.date | ExampleScenario.date | GraphDefinition.date | ImplementationGuide.date | Library.date | Measure.date | MessageDefinition.date | NamingSystem.date | OperationDefinition.date | PlanDefinition.date | Questionnaire.date | Requirements.date | SearchParameter.date | StructureDefinition.date | StructureMap.date | SubscriptionTopic.date | TerminologyCapabilities.date | TestScript.date | ValueSet.date", description="Multiple Resources: \r\n\r\n* [ActivityDefinition](activitydefinition.html): The activity definition publication date\r\n* [ActorDefinition](actordefinition.html): The Actor Definition publication date\r\n* [CapabilityStatement](capabilitystatement.html): The capability statement publication date\r\n* [ChargeItemDefinition](chargeitemdefinition.html): The charge item definition publication date\r\n* [Citation](citation.html): The citation publication date\r\n* [CodeSystem](codesystem.html): The code system publication date\r\n* [CompartmentDefinition](compartmentdefinition.html): The compartment definition publication date\r\n* [ConceptMap](conceptmap.html): The concept map publication date\r\n* [ConditionDefinition](conditiondefinition.html): The condition definition publication date\r\n* [EventDefinition](eventdefinition.html): The event definition publication date\r\n* [Evidence](evidence.html): The evidence publication date\r\n* [EvidenceVariable](evidencevariable.html): The evidence variable publication date\r\n* [ExampleScenario](examplescenario.html): The example scenario publication date\r\n* [GraphDefinition](graphdefinition.html): The graph definition publication date\r\n* [ImplementationGuide](implementationguide.html): The implementation guide publication date\r\n* [Library](library.html): The library publication date\r\n* [Measure](measure.html): The measure publication date\r\n* [MessageDefinition](messagedefinition.html): The message definition publication date\r\n* [NamingSystem](namingsystem.html): The naming system publication date\r\n* [OperationDefinition](operationdefinition.html): The operation definition publication date\r\n* [PlanDefinition](plandefinition.html): The plan definition publication date\r\n* [Questionnaire](questionnaire.html): The questionnaire publication date\r\n* [Requirements](requirements.html): The requirements publication date\r\n* [SearchParameter](searchparameter.html): The search parameter publication date\r\n* [StructureDefinition](structuredefinition.html): The structure definition publication date\r\n* [StructureMap](structuremap.html): The structure map publication date\r\n* [SubscriptionTopic](subscriptiontopic.html): Date status first applied\r\n* [TerminologyCapabilities](terminologycapabilities.html): The terminology capabilities publication date\r\n* [TestScript](testscript.html): The test script publication date\r\n* [ValueSet](valueset.html): The value set publication date\r\n", type="date" )
4428  public static final String SP_DATE = "date";
4429 /**
4430   * <b>Fluent Client</b> search parameter constant for <b>date</b>
4431   * <p>
4432   * Description: <b>Multiple Resources: 
4433
4434* [ActivityDefinition](activitydefinition.html): The activity definition publication date
4435* [ActorDefinition](actordefinition.html): The Actor Definition publication date
4436* [CapabilityStatement](capabilitystatement.html): The capability statement publication date
4437* [ChargeItemDefinition](chargeitemdefinition.html): The charge item definition publication date
4438* [Citation](citation.html): The citation publication date
4439* [CodeSystem](codesystem.html): The code system publication date
4440* [CompartmentDefinition](compartmentdefinition.html): The compartment definition publication date
4441* [ConceptMap](conceptmap.html): The concept map publication date
4442* [ConditionDefinition](conditiondefinition.html): The condition definition publication date
4443* [EventDefinition](eventdefinition.html): The event definition publication date
4444* [Evidence](evidence.html): The evidence publication date
4445* [EvidenceVariable](evidencevariable.html): The evidence variable publication date
4446* [ExampleScenario](examplescenario.html): The example scenario publication date
4447* [GraphDefinition](graphdefinition.html): The graph definition publication date
4448* [ImplementationGuide](implementationguide.html): The implementation guide publication date
4449* [Library](library.html): The library publication date
4450* [Measure](measure.html): The measure publication date
4451* [MessageDefinition](messagedefinition.html): The message definition publication date
4452* [NamingSystem](namingsystem.html): The naming system publication date
4453* [OperationDefinition](operationdefinition.html): The operation definition publication date
4454* [PlanDefinition](plandefinition.html): The plan definition publication date
4455* [Questionnaire](questionnaire.html): The questionnaire publication date
4456* [Requirements](requirements.html): The requirements publication date
4457* [SearchParameter](searchparameter.html): The search parameter publication date
4458* [StructureDefinition](structuredefinition.html): The structure definition publication date
4459* [StructureMap](structuremap.html): The structure map publication date
4460* [SubscriptionTopic](subscriptiontopic.html): Date status first applied
4461* [TerminologyCapabilities](terminologycapabilities.html): The terminology capabilities publication date
4462* [TestScript](testscript.html): The test script publication date
4463* [ValueSet](valueset.html): The value set publication date
4464</b><br>
4465   * Type: <b>date</b><br>
4466   * Path: <b>ActivityDefinition.date | ActorDefinition.date | CapabilityStatement.date | ChargeItemDefinition.date | Citation.date | CodeSystem.date | CompartmentDefinition.date | ConceptMap.date | ConditionDefinition.date | EventDefinition.date | Evidence.date | EvidenceVariable.date | ExampleScenario.date | GraphDefinition.date | ImplementationGuide.date | Library.date | Measure.date | MessageDefinition.date | NamingSystem.date | OperationDefinition.date | PlanDefinition.date | Questionnaire.date | Requirements.date | SearchParameter.date | StructureDefinition.date | StructureMap.date | SubscriptionTopic.date | TerminologyCapabilities.date | TestScript.date | ValueSet.date</b><br>
4467   * </p>
4468   */
4469  public static final ca.uhn.fhir.rest.gclient.DateClientParam DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_DATE);
4470
4471 /**
4472   * Search parameter: <b>identifier</b>
4473   * <p>
4474   * Description: <b>Multiple Resources: 
4475
4476* [ActivityDefinition](activitydefinition.html): External identifier for the activity definition
4477* [ActorDefinition](actordefinition.html): External identifier for the Actor Definition
4478* [CapabilityStatement](capabilitystatement.html): External identifier for the capability statement
4479* [ChargeItemDefinition](chargeitemdefinition.html): External identifier for the charge item definition
4480* [Citation](citation.html): External identifier for the citation
4481* [CodeSystem](codesystem.html): External identifier for the code system
4482* [ConceptMap](conceptmap.html): External identifier for the concept map
4483* [ConditionDefinition](conditiondefinition.html): External identifier for the condition definition
4484* [EventDefinition](eventdefinition.html): External identifier for the event definition
4485* [Evidence](evidence.html): External identifier for the evidence
4486* [EvidenceReport](evidencereport.html): External identifier for the evidence report
4487* [EvidenceVariable](evidencevariable.html): External identifier for the evidence variable
4488* [ExampleScenario](examplescenario.html): External identifier for the example scenario
4489* [GraphDefinition](graphdefinition.html): External identifier for the graph definition
4490* [ImplementationGuide](implementationguide.html): External identifier for the implementation guide
4491* [Library](library.html): External identifier for the library
4492* [Measure](measure.html): External identifier for the measure
4493* [MedicationKnowledge](medicationknowledge.html): Business identifier for this medication
4494* [MessageDefinition](messagedefinition.html): External identifier for the message definition
4495* [NamingSystem](namingsystem.html): External identifier for the naming system
4496* [ObservationDefinition](observationdefinition.html): The unique identifier associated with the specimen definition
4497* [OperationDefinition](operationdefinition.html): External identifier for the search parameter
4498* [PlanDefinition](plandefinition.html): External identifier for the plan definition
4499* [Questionnaire](questionnaire.html): External identifier for the questionnaire
4500* [Requirements](requirements.html): External identifier for the requirements
4501* [SearchParameter](searchparameter.html): External identifier for the search parameter
4502* [SpecimenDefinition](specimendefinition.html): The unique identifier associated with the SpecimenDefinition
4503* [StructureDefinition](structuredefinition.html): External identifier for the structure definition
4504* [StructureMap](structuremap.html): External identifier for the structure map
4505* [SubscriptionTopic](subscriptiontopic.html): Business Identifier for SubscriptionTopic
4506* [TerminologyCapabilities](terminologycapabilities.html): External identifier for the terminology capabilities
4507* [TestPlan](testplan.html): An identifier for the test plan
4508* [TestScript](testscript.html): External identifier for the test script
4509* [ValueSet](valueset.html): External identifier for the value set
4510</b><br>
4511   * Type: <b>token</b><br>
4512   * Path: <b>ActivityDefinition.identifier | ActorDefinition.identifier | CapabilityStatement.identifier | ChargeItemDefinition.identifier | Citation.identifier | CodeSystem.identifier | ConceptMap.identifier | ConditionDefinition.identifier | EventDefinition.identifier | Evidence.identifier | EvidenceReport.identifier | EvidenceVariable.identifier | ExampleScenario.identifier | GraphDefinition.identifier | ImplementationGuide.identifier | Library.identifier | Measure.identifier | MedicationKnowledge.identifier | MessageDefinition.identifier | NamingSystem.identifier | ObservationDefinition.identifier | OperationDefinition.identifier | PlanDefinition.identifier | Questionnaire.identifier | Requirements.identifier | SearchParameter.identifier | SpecimenDefinition.identifier | StructureDefinition.identifier | StructureMap.identifier | SubscriptionTopic.identifier | TerminologyCapabilities.identifier | TestPlan.identifier | TestScript.identifier | ValueSet.identifier</b><br>
4513   * </p>
4514   */
4515  @SearchParamDefinition(name="identifier", path="ActivityDefinition.identifier | ActorDefinition.identifier | CapabilityStatement.identifier | ChargeItemDefinition.identifier | Citation.identifier | CodeSystem.identifier | ConceptMap.identifier | ConditionDefinition.identifier | EventDefinition.identifier | Evidence.identifier | EvidenceReport.identifier | EvidenceVariable.identifier | ExampleScenario.identifier | GraphDefinition.identifier | ImplementationGuide.identifier | Library.identifier | Measure.identifier | MedicationKnowledge.identifier | MessageDefinition.identifier | NamingSystem.identifier | ObservationDefinition.identifier | OperationDefinition.identifier | PlanDefinition.identifier | Questionnaire.identifier | Requirements.identifier | SearchParameter.identifier | SpecimenDefinition.identifier | StructureDefinition.identifier | StructureMap.identifier | SubscriptionTopic.identifier | TerminologyCapabilities.identifier | TestPlan.identifier | TestScript.identifier | ValueSet.identifier", description="Multiple Resources: \r\n\r\n* [ActivityDefinition](activitydefinition.html): External identifier for the activity definition\r\n* [ActorDefinition](actordefinition.html): External identifier for the Actor Definition\r\n* [CapabilityStatement](capabilitystatement.html): External identifier for the capability statement\r\n* [ChargeItemDefinition](chargeitemdefinition.html): External identifier for the charge item definition\r\n* [Citation](citation.html): External identifier for the citation\r\n* [CodeSystem](codesystem.html): External identifier for the code system\r\n* [ConceptMap](conceptmap.html): External identifier for the concept map\r\n* [ConditionDefinition](conditiondefinition.html): External identifier for the condition definition\r\n* [EventDefinition](eventdefinition.html): External identifier for the event definition\r\n* [Evidence](evidence.html): External identifier for the evidence\r\n* [EvidenceReport](evidencereport.html): External identifier for the evidence report\r\n* [EvidenceVariable](evidencevariable.html): External identifier for the evidence variable\r\n* [ExampleScenario](examplescenario.html): External identifier for the example scenario\r\n* [GraphDefinition](graphdefinition.html): External identifier for the graph definition\r\n* [ImplementationGuide](implementationguide.html): External identifier for the implementation guide\r\n* [Library](library.html): External identifier for the library\r\n* [Measure](measure.html): External identifier for the measure\r\n* [MedicationKnowledge](medicationknowledge.html): Business identifier for this medication\r\n* [MessageDefinition](messagedefinition.html): External identifier for the message definition\r\n* [NamingSystem](namingsystem.html): External identifier for the naming system\r\n* [ObservationDefinition](observationdefinition.html): The unique identifier associated with the specimen definition\r\n* [OperationDefinition](operationdefinition.html): External identifier for the search parameter\r\n* [PlanDefinition](plandefinition.html): External identifier for the plan definition\r\n* [Questionnaire](questionnaire.html): External identifier for the questionnaire\r\n* [Requirements](requirements.html): External identifier for the requirements\r\n* [SearchParameter](searchparameter.html): External identifier for the search parameter\r\n* [SpecimenDefinition](specimendefinition.html): The unique identifier associated with the SpecimenDefinition\r\n* [StructureDefinition](structuredefinition.html): External identifier for the structure definition\r\n* [StructureMap](structuremap.html): External identifier for the structure map\r\n* [SubscriptionTopic](subscriptiontopic.html): Business Identifier for SubscriptionTopic\r\n* [TerminologyCapabilities](terminologycapabilities.html): External identifier for the terminology capabilities\r\n* [TestPlan](testplan.html): An identifier for the test plan\r\n* [TestScript](testscript.html): External identifier for the test script\r\n* [ValueSet](valueset.html): External identifier for the value set\r\n", type="token" )
4516  public static final String SP_IDENTIFIER = "identifier";
4517 /**
4518   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
4519   * <p>
4520   * Description: <b>Multiple Resources: 
4521
4522* [ActivityDefinition](activitydefinition.html): External identifier for the activity definition
4523* [ActorDefinition](actordefinition.html): External identifier for the Actor Definition
4524* [CapabilityStatement](capabilitystatement.html): External identifier for the capability statement
4525* [ChargeItemDefinition](chargeitemdefinition.html): External identifier for the charge item definition
4526* [Citation](citation.html): External identifier for the citation
4527* [CodeSystem](codesystem.html): External identifier for the code system
4528* [ConceptMap](conceptmap.html): External identifier for the concept map
4529* [ConditionDefinition](conditiondefinition.html): External identifier for the condition definition
4530* [EventDefinition](eventdefinition.html): External identifier for the event definition
4531* [Evidence](evidence.html): External identifier for the evidence
4532* [EvidenceReport](evidencereport.html): External identifier for the evidence report
4533* [EvidenceVariable](evidencevariable.html): External identifier for the evidence variable
4534* [ExampleScenario](examplescenario.html): External identifier for the example scenario
4535* [GraphDefinition](graphdefinition.html): External identifier for the graph definition
4536* [ImplementationGuide](implementationguide.html): External identifier for the implementation guide
4537* [Library](library.html): External identifier for the library
4538* [Measure](measure.html): External identifier for the measure
4539* [MedicationKnowledge](medicationknowledge.html): Business identifier for this medication
4540* [MessageDefinition](messagedefinition.html): External identifier for the message definition
4541* [NamingSystem](namingsystem.html): External identifier for the naming system
4542* [ObservationDefinition](observationdefinition.html): The unique identifier associated with the specimen definition
4543* [OperationDefinition](operationdefinition.html): External identifier for the search parameter
4544* [PlanDefinition](plandefinition.html): External identifier for the plan definition
4545* [Questionnaire](questionnaire.html): External identifier for the questionnaire
4546* [Requirements](requirements.html): External identifier for the requirements
4547* [SearchParameter](searchparameter.html): External identifier for the search parameter
4548* [SpecimenDefinition](specimendefinition.html): The unique identifier associated with the SpecimenDefinition
4549* [StructureDefinition](structuredefinition.html): External identifier for the structure definition
4550* [StructureMap](structuremap.html): External identifier for the structure map
4551* [SubscriptionTopic](subscriptiontopic.html): Business Identifier for SubscriptionTopic
4552* [TerminologyCapabilities](terminologycapabilities.html): External identifier for the terminology capabilities
4553* [TestPlan](testplan.html): An identifier for the test plan
4554* [TestScript](testscript.html): External identifier for the test script
4555* [ValueSet](valueset.html): External identifier for the value set
4556</b><br>
4557   * Type: <b>token</b><br>
4558   * Path: <b>ActivityDefinition.identifier | ActorDefinition.identifier | CapabilityStatement.identifier | ChargeItemDefinition.identifier | Citation.identifier | CodeSystem.identifier | ConceptMap.identifier | ConditionDefinition.identifier | EventDefinition.identifier | Evidence.identifier | EvidenceReport.identifier | EvidenceVariable.identifier | ExampleScenario.identifier | GraphDefinition.identifier | ImplementationGuide.identifier | Library.identifier | Measure.identifier | MedicationKnowledge.identifier | MessageDefinition.identifier | NamingSystem.identifier | ObservationDefinition.identifier | OperationDefinition.identifier | PlanDefinition.identifier | Questionnaire.identifier | Requirements.identifier | SearchParameter.identifier | SpecimenDefinition.identifier | StructureDefinition.identifier | StructureMap.identifier | SubscriptionTopic.identifier | TerminologyCapabilities.identifier | TestPlan.identifier | TestScript.identifier | ValueSet.identifier</b><br>
4559   * </p>
4560   */
4561  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
4562
4563 /**
4564   * Search parameter: <b>status</b>
4565   * <p>
4566   * Description: <b>Multiple Resources: 
4567
4568* [ActivityDefinition](activitydefinition.html): The current status of the activity definition
4569* [ActorDefinition](actordefinition.html): The current status of the Actor Definition
4570* [CapabilityStatement](capabilitystatement.html): The current status of the capability statement
4571* [ChargeItemDefinition](chargeitemdefinition.html): The current status of the charge item definition
4572* [Citation](citation.html): The current status of the citation
4573* [CodeSystem](codesystem.html): The current status of the code system
4574* [CompartmentDefinition](compartmentdefinition.html): The current status of the compartment definition
4575* [ConceptMap](conceptmap.html): The current status of the concept map
4576* [ConditionDefinition](conditiondefinition.html): The current status of the condition definition
4577* [EventDefinition](eventdefinition.html): The current status of the event definition
4578* [Evidence](evidence.html): The current status of the evidence
4579* [EvidenceReport](evidencereport.html): The current status of the evidence report
4580* [EvidenceVariable](evidencevariable.html): The current status of the evidence variable
4581* [ExampleScenario](examplescenario.html): The current status of the example scenario
4582* [GraphDefinition](graphdefinition.html): The current status of the graph definition
4583* [ImplementationGuide](implementationguide.html): The current status of the implementation guide
4584* [Library](library.html): The current status of the library
4585* [Measure](measure.html): The current status of the measure
4586* [MedicationKnowledge](medicationknowledge.html): active | inactive | entered-in-error
4587* [MessageDefinition](messagedefinition.html): The current status of the message definition
4588* [NamingSystem](namingsystem.html): The current status of the naming system
4589* [ObservationDefinition](observationdefinition.html): Publication status of the ObservationDefinition: draft, active, retired, unknown
4590* [OperationDefinition](operationdefinition.html): The current status of the operation definition
4591* [PlanDefinition](plandefinition.html): The current status of the plan definition
4592* [Questionnaire](questionnaire.html): The current status of the questionnaire
4593* [Requirements](requirements.html): The current status of the requirements
4594* [SearchParameter](searchparameter.html): The current status of the search parameter
4595* [SpecimenDefinition](specimendefinition.html): Publication status of the SpecimenDefinition: draft, active, retired, unknown
4596* [StructureDefinition](structuredefinition.html): The current status of the structure definition
4597* [StructureMap](structuremap.html): The current status of the structure map
4598* [SubscriptionTopic](subscriptiontopic.html): draft | active | retired | unknown
4599* [TerminologyCapabilities](terminologycapabilities.html): The current status of the terminology capabilities
4600* [TestPlan](testplan.html): The current status of the test plan
4601* [TestScript](testscript.html): The current status of the test script
4602* [ValueSet](valueset.html): The current status of the value set
4603</b><br>
4604   * Type: <b>token</b><br>
4605   * Path: <b>ActivityDefinition.status | ActorDefinition.status | CapabilityStatement.status | ChargeItemDefinition.status | Citation.status | CodeSystem.status | CompartmentDefinition.status | ConceptMap.status | ConditionDefinition.status | EventDefinition.status | Evidence.status | EvidenceReport.status | EvidenceVariable.status | ExampleScenario.status | GraphDefinition.status | ImplementationGuide.status | Library.status | Measure.status | MedicationKnowledge.status | MessageDefinition.status | NamingSystem.status | ObservationDefinition.status | OperationDefinition.status | PlanDefinition.status | Questionnaire.status | Requirements.status | SearchParameter.status | SpecimenDefinition.status | StructureDefinition.status | StructureMap.status | SubscriptionTopic.status | TerminologyCapabilities.status | TestPlan.status | TestScript.status | ValueSet.status</b><br>
4606   * </p>
4607   */
4608  @SearchParamDefinition(name="status", path="ActivityDefinition.status | ActorDefinition.status | CapabilityStatement.status | ChargeItemDefinition.status | Citation.status | CodeSystem.status | CompartmentDefinition.status | ConceptMap.status | ConditionDefinition.status | EventDefinition.status | Evidence.status | EvidenceReport.status | EvidenceVariable.status | ExampleScenario.status | GraphDefinition.status | ImplementationGuide.status | Library.status | Measure.status | MedicationKnowledge.status | MessageDefinition.status | NamingSystem.status | ObservationDefinition.status | OperationDefinition.status | PlanDefinition.status | Questionnaire.status | Requirements.status | SearchParameter.status | SpecimenDefinition.status | StructureDefinition.status | StructureMap.status | SubscriptionTopic.status | TerminologyCapabilities.status | TestPlan.status | TestScript.status | ValueSet.status", description="Multiple Resources: \r\n\r\n* [ActivityDefinition](activitydefinition.html): The current status of the activity definition\r\n* [ActorDefinition](actordefinition.html): The current status of the Actor Definition\r\n* [CapabilityStatement](capabilitystatement.html): The current status of the capability statement\r\n* [ChargeItemDefinition](chargeitemdefinition.html): The current status of the charge item definition\r\n* [Citation](citation.html): The current status of the citation\r\n* [CodeSystem](codesystem.html): The current status of the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): The current status of the compartment definition\r\n* [ConceptMap](conceptmap.html): The current status of the concept map\r\n* [ConditionDefinition](conditiondefinition.html): The current status of the condition definition\r\n* [EventDefinition](eventdefinition.html): The current status of the event definition\r\n* [Evidence](evidence.html): The current status of the evidence\r\n* [EvidenceReport](evidencereport.html): The current status of the evidence report\r\n* [EvidenceVariable](evidencevariable.html): The current status of the evidence variable\r\n* [ExampleScenario](examplescenario.html): The current status of the example scenario\r\n* [GraphDefinition](graphdefinition.html): The current status of the graph definition\r\n* [ImplementationGuide](implementationguide.html): The current status of the implementation guide\r\n* [Library](library.html): The current status of the library\r\n* [Measure](measure.html): The current status of the measure\r\n* [MedicationKnowledge](medicationknowledge.html): active | inactive | entered-in-error\r\n* [MessageDefinition](messagedefinition.html): The current status of the message definition\r\n* [NamingSystem](namingsystem.html): The current status of the naming system\r\n* [ObservationDefinition](observationdefinition.html): Publication status of the ObservationDefinition: draft, active, retired, unknown\r\n* [OperationDefinition](operationdefinition.html): The current status of the operation definition\r\n* [PlanDefinition](plandefinition.html): The current status of the plan definition\r\n* [Questionnaire](questionnaire.html): The current status of the questionnaire\r\n* [Requirements](requirements.html): The current status of the requirements\r\n* [SearchParameter](searchparameter.html): The current status of the search parameter\r\n* [SpecimenDefinition](specimendefinition.html): Publication status of the SpecimenDefinition: draft, active, retired, unknown\r\n* [StructureDefinition](structuredefinition.html): The current status of the structure definition\r\n* [StructureMap](structuremap.html): The current status of the structure map\r\n* [SubscriptionTopic](subscriptiontopic.html): draft | active | retired | unknown\r\n* [TerminologyCapabilities](terminologycapabilities.html): The current status of the terminology capabilities\r\n* [TestPlan](testplan.html): The current status of the test plan\r\n* [TestScript](testscript.html): The current status of the test script\r\n* [ValueSet](valueset.html): The current status of the value set\r\n", type="token" )
4609  public static final String SP_STATUS = "status";
4610 /**
4611   * <b>Fluent Client</b> search parameter constant for <b>status</b>
4612   * <p>
4613   * Description: <b>Multiple Resources: 
4614
4615* [ActivityDefinition](activitydefinition.html): The current status of the activity definition
4616* [ActorDefinition](actordefinition.html): The current status of the Actor Definition
4617* [CapabilityStatement](capabilitystatement.html): The current status of the capability statement
4618* [ChargeItemDefinition](chargeitemdefinition.html): The current status of the charge item definition
4619* [Citation](citation.html): The current status of the citation
4620* [CodeSystem](codesystem.html): The current status of the code system
4621* [CompartmentDefinition](compartmentdefinition.html): The current status of the compartment definition
4622* [ConceptMap](conceptmap.html): The current status of the concept map
4623* [ConditionDefinition](conditiondefinition.html): The current status of the condition definition
4624* [EventDefinition](eventdefinition.html): The current status of the event definition
4625* [Evidence](evidence.html): The current status of the evidence
4626* [EvidenceReport](evidencereport.html): The current status of the evidence report
4627* [EvidenceVariable](evidencevariable.html): The current status of the evidence variable
4628* [ExampleScenario](examplescenario.html): The current status of the example scenario
4629* [GraphDefinition](graphdefinition.html): The current status of the graph definition
4630* [ImplementationGuide](implementationguide.html): The current status of the implementation guide
4631* [Library](library.html): The current status of the library
4632* [Measure](measure.html): The current status of the measure
4633* [MedicationKnowledge](medicationknowledge.html): active | inactive | entered-in-error
4634* [MessageDefinition](messagedefinition.html): The current status of the message definition
4635* [NamingSystem](namingsystem.html): The current status of the naming system
4636* [ObservationDefinition](observationdefinition.html): Publication status of the ObservationDefinition: draft, active, retired, unknown
4637* [OperationDefinition](operationdefinition.html): The current status of the operation definition
4638* [PlanDefinition](plandefinition.html): The current status of the plan definition
4639* [Questionnaire](questionnaire.html): The current status of the questionnaire
4640* [Requirements](requirements.html): The current status of the requirements
4641* [SearchParameter](searchparameter.html): The current status of the search parameter
4642* [SpecimenDefinition](specimendefinition.html): Publication status of the SpecimenDefinition: draft, active, retired, unknown
4643* [StructureDefinition](structuredefinition.html): The current status of the structure definition
4644* [StructureMap](structuremap.html): The current status of the structure map
4645* [SubscriptionTopic](subscriptiontopic.html): draft | active | retired | unknown
4646* [TerminologyCapabilities](terminologycapabilities.html): The current status of the terminology capabilities
4647* [TestPlan](testplan.html): The current status of the test plan
4648* [TestScript](testscript.html): The current status of the test script
4649* [ValueSet](valueset.html): The current status of the value set
4650</b><br>
4651   * Type: <b>token</b><br>
4652   * Path: <b>ActivityDefinition.status | ActorDefinition.status | CapabilityStatement.status | ChargeItemDefinition.status | Citation.status | CodeSystem.status | CompartmentDefinition.status | ConceptMap.status | ConditionDefinition.status | EventDefinition.status | Evidence.status | EvidenceReport.status | EvidenceVariable.status | ExampleScenario.status | GraphDefinition.status | ImplementationGuide.status | Library.status | Measure.status | MedicationKnowledge.status | MessageDefinition.status | NamingSystem.status | ObservationDefinition.status | OperationDefinition.status | PlanDefinition.status | Questionnaire.status | Requirements.status | SearchParameter.status | SpecimenDefinition.status | StructureDefinition.status | StructureMap.status | SubscriptionTopic.status | TerminologyCapabilities.status | TestPlan.status | TestScript.status | ValueSet.status</b><br>
4653   * </p>
4654   */
4655  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
4656
4657 /**
4658   * Search parameter: <b>title</b>
4659   * <p>
4660   * Description: <b>Multiple Resources: 
4661
4662* [ActivityDefinition](activitydefinition.html): The human-friendly name of the activity definition
4663* [ActorDefinition](actordefinition.html): The human-friendly name of the Actor Definition
4664* [CapabilityStatement](capabilitystatement.html): The human-friendly name of the capability statement
4665* [ChargeItemDefinition](chargeitemdefinition.html): The human-friendly name of the charge item definition
4666* [Citation](citation.html): The human-friendly name of the citation
4667* [CodeSystem](codesystem.html): The human-friendly name of the code system
4668* [ConceptMap](conceptmap.html): The human-friendly name of the concept map
4669* [ConditionDefinition](conditiondefinition.html): The human-friendly name of the condition definition
4670* [EventDefinition](eventdefinition.html): The human-friendly name of the event definition
4671* [Evidence](evidence.html): The human-friendly name of the evidence
4672* [EvidenceVariable](evidencevariable.html): The human-friendly name of the evidence variable
4673* [ImplementationGuide](implementationguide.html): The human-friendly name of the implementation guide
4674* [Library](library.html): The human-friendly name of the library
4675* [Measure](measure.html): The human-friendly name of the measure
4676* [MessageDefinition](messagedefinition.html): The human-friendly name of the message definition
4677* [ObservationDefinition](observationdefinition.html): Human-friendly name of the ObservationDefinition
4678* [OperationDefinition](operationdefinition.html): The human-friendly name of the operation definition
4679* [PlanDefinition](plandefinition.html): The human-friendly name of the plan definition
4680* [Questionnaire](questionnaire.html): The human-friendly name of the questionnaire
4681* [Requirements](requirements.html): The human-friendly name of the requirements
4682* [SpecimenDefinition](specimendefinition.html): Human-friendly name of the SpecimenDefinition
4683* [StructureDefinition](structuredefinition.html): The human-friendly name of the structure definition
4684* [StructureMap](structuremap.html): The human-friendly name of the structure map
4685* [SubscriptionTopic](subscriptiontopic.html): Name for this SubscriptionTopic (Human friendly)
4686* [TerminologyCapabilities](terminologycapabilities.html): The human-friendly name of the terminology capabilities
4687* [TestScript](testscript.html): The human-friendly name of the test script
4688* [ValueSet](valueset.html): The human-friendly name of the value set
4689</b><br>
4690   * Type: <b>string</b><br>
4691   * Path: <b>ActivityDefinition.title | ActorDefinition.title | CapabilityStatement.title | ChargeItemDefinition.title | Citation.title | CodeSystem.title | ConceptMap.title | ConditionDefinition.title | EventDefinition.title | Evidence.title | EvidenceVariable.title | ImplementationGuide.title | Library.title | Measure.title | MessageDefinition.title | ObservationDefinition.title | OperationDefinition.title | PlanDefinition.title | Questionnaire.title | Requirements.title | SpecimenDefinition.title | StructureDefinition.title | StructureMap.title | SubscriptionTopic.title | TerminologyCapabilities.title | TestScript.title | ValueSet.title</b><br>
4692   * </p>
4693   */
4694  @SearchParamDefinition(name="title", path="ActivityDefinition.title | ActorDefinition.title | CapabilityStatement.title | ChargeItemDefinition.title | Citation.title | CodeSystem.title | ConceptMap.title | ConditionDefinition.title | EventDefinition.title | Evidence.title | EvidenceVariable.title | ImplementationGuide.title | Library.title | Measure.title | MessageDefinition.title | ObservationDefinition.title | OperationDefinition.title | PlanDefinition.title | Questionnaire.title | Requirements.title | SpecimenDefinition.title | StructureDefinition.title | StructureMap.title | SubscriptionTopic.title | TerminologyCapabilities.title | TestScript.title | ValueSet.title", description="Multiple Resources: \r\n\r\n* [ActivityDefinition](activitydefinition.html): The human-friendly name of the activity definition\r\n* [ActorDefinition](actordefinition.html): The human-friendly name of the Actor Definition\r\n* [CapabilityStatement](capabilitystatement.html): The human-friendly name of the capability statement\r\n* [ChargeItemDefinition](chargeitemdefinition.html): The human-friendly name of the charge item definition\r\n* [Citation](citation.html): The human-friendly name of the citation\r\n* [CodeSystem](codesystem.html): The human-friendly name of the code system\r\n* [ConceptMap](conceptmap.html): The human-friendly name of the concept map\r\n* [ConditionDefinition](conditiondefinition.html): The human-friendly name of the condition definition\r\n* [EventDefinition](eventdefinition.html): The human-friendly name of the event definition\r\n* [Evidence](evidence.html): The human-friendly name of the evidence\r\n* [EvidenceVariable](evidencevariable.html): The human-friendly name of the evidence variable\r\n* [ImplementationGuide](implementationguide.html): The human-friendly name of the implementation guide\r\n* [Library](library.html): The human-friendly name of the library\r\n* [Measure](measure.html): The human-friendly name of the measure\r\n* [MessageDefinition](messagedefinition.html): The human-friendly name of the message definition\r\n* [ObservationDefinition](observationdefinition.html): Human-friendly name of the ObservationDefinition\r\n* [OperationDefinition](operationdefinition.html): The human-friendly name of the operation definition\r\n* [PlanDefinition](plandefinition.html): The human-friendly name of the plan definition\r\n* [Questionnaire](questionnaire.html): The human-friendly name of the questionnaire\r\n* [Requirements](requirements.html): The human-friendly name of the requirements\r\n* [SpecimenDefinition](specimendefinition.html): Human-friendly name of the SpecimenDefinition\r\n* [StructureDefinition](structuredefinition.html): The human-friendly name of the structure definition\r\n* [StructureMap](structuremap.html): The human-friendly name of the structure map\r\n* [SubscriptionTopic](subscriptiontopic.html): Name for this SubscriptionTopic (Human friendly)\r\n* [TerminologyCapabilities](terminologycapabilities.html): The human-friendly name of the terminology capabilities\r\n* [TestScript](testscript.html): The human-friendly name of the test script\r\n* [ValueSet](valueset.html): The human-friendly name of the value set\r\n", type="string" )
4695  public static final String SP_TITLE = "title";
4696 /**
4697   * <b>Fluent Client</b> search parameter constant for <b>title</b>
4698   * <p>
4699   * Description: <b>Multiple Resources: 
4700
4701* [ActivityDefinition](activitydefinition.html): The human-friendly name of the activity definition
4702* [ActorDefinition](actordefinition.html): The human-friendly name of the Actor Definition
4703* [CapabilityStatement](capabilitystatement.html): The human-friendly name of the capability statement
4704* [ChargeItemDefinition](chargeitemdefinition.html): The human-friendly name of the charge item definition
4705* [Citation](citation.html): The human-friendly name of the citation
4706* [CodeSystem](codesystem.html): The human-friendly name of the code system
4707* [ConceptMap](conceptmap.html): The human-friendly name of the concept map
4708* [ConditionDefinition](conditiondefinition.html): The human-friendly name of the condition definition
4709* [EventDefinition](eventdefinition.html): The human-friendly name of the event definition
4710* [Evidence](evidence.html): The human-friendly name of the evidence
4711* [EvidenceVariable](evidencevariable.html): The human-friendly name of the evidence variable
4712* [ImplementationGuide](implementationguide.html): The human-friendly name of the implementation guide
4713* [Library](library.html): The human-friendly name of the library
4714* [Measure](measure.html): The human-friendly name of the measure
4715* [MessageDefinition](messagedefinition.html): The human-friendly name of the message definition
4716* [ObservationDefinition](observationdefinition.html): Human-friendly name of the ObservationDefinition
4717* [OperationDefinition](operationdefinition.html): The human-friendly name of the operation definition
4718* [PlanDefinition](plandefinition.html): The human-friendly name of the plan definition
4719* [Questionnaire](questionnaire.html): The human-friendly name of the questionnaire
4720* [Requirements](requirements.html): The human-friendly name of the requirements
4721* [SpecimenDefinition](specimendefinition.html): Human-friendly name of the SpecimenDefinition
4722* [StructureDefinition](structuredefinition.html): The human-friendly name of the structure definition
4723* [StructureMap](structuremap.html): The human-friendly name of the structure map
4724* [SubscriptionTopic](subscriptiontopic.html): Name for this SubscriptionTopic (Human friendly)
4725* [TerminologyCapabilities](terminologycapabilities.html): The human-friendly name of the terminology capabilities
4726* [TestScript](testscript.html): The human-friendly name of the test script
4727* [ValueSet](valueset.html): The human-friendly name of the value set
4728</b><br>
4729   * Type: <b>string</b><br>
4730   * Path: <b>ActivityDefinition.title | ActorDefinition.title | CapabilityStatement.title | ChargeItemDefinition.title | Citation.title | CodeSystem.title | ConceptMap.title | ConditionDefinition.title | EventDefinition.title | Evidence.title | EvidenceVariable.title | ImplementationGuide.title | Library.title | Measure.title | MessageDefinition.title | ObservationDefinition.title | OperationDefinition.title | PlanDefinition.title | Questionnaire.title | Requirements.title | SpecimenDefinition.title | StructureDefinition.title | StructureMap.title | SubscriptionTopic.title | TerminologyCapabilities.title | TestScript.title | ValueSet.title</b><br>
4731   * </p>
4732   */
4733  public static final ca.uhn.fhir.rest.gclient.StringClientParam TITLE = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_TITLE);
4734
4735 /**
4736   * Search parameter: <b>url</b>
4737   * <p>
4738   * Description: <b>Multiple Resources: 
4739
4740* [ActivityDefinition](activitydefinition.html): The uri that identifies the activity definition
4741* [ActorDefinition](actordefinition.html): The uri that identifies the Actor Definition
4742* [CapabilityStatement](capabilitystatement.html): The uri that identifies the capability statement
4743* [ChargeItemDefinition](chargeitemdefinition.html): The uri that identifies the charge item definition
4744* [Citation](citation.html): The uri that identifies the citation
4745* [CodeSystem](codesystem.html): The uri that identifies the code system
4746* [CompartmentDefinition](compartmentdefinition.html): The uri that identifies the compartment definition
4747* [ConceptMap](conceptmap.html): The URI that identifies the concept map
4748* [ConditionDefinition](conditiondefinition.html): The uri that identifies the condition definition
4749* [EventDefinition](eventdefinition.html): The uri that identifies the event definition
4750* [Evidence](evidence.html): The uri that identifies the evidence
4751* [EvidenceReport](evidencereport.html): The uri that identifies the evidence report
4752* [EvidenceVariable](evidencevariable.html): The uri that identifies the evidence variable
4753* [ExampleScenario](examplescenario.html): The uri that identifies the example scenario
4754* [GraphDefinition](graphdefinition.html): The uri that identifies the graph definition
4755* [ImplementationGuide](implementationguide.html): The uri that identifies the implementation guide
4756* [Library](library.html): The uri that identifies the library
4757* [Measure](measure.html): The uri that identifies the measure
4758* [MessageDefinition](messagedefinition.html): The uri that identifies the message definition
4759* [NamingSystem](namingsystem.html): The uri that identifies the naming system
4760* [ObservationDefinition](observationdefinition.html): The uri that identifies the observation definition
4761* [OperationDefinition](operationdefinition.html): The uri that identifies the operation definition
4762* [PlanDefinition](plandefinition.html): The uri that identifies the plan definition
4763* [Questionnaire](questionnaire.html): The uri that identifies the questionnaire
4764* [Requirements](requirements.html): The uri that identifies the requirements
4765* [SearchParameter](searchparameter.html): The uri that identifies the search parameter
4766* [SpecimenDefinition](specimendefinition.html): The uri that identifies the specimen definition
4767* [StructureDefinition](structuredefinition.html): The uri that identifies the structure definition
4768* [StructureMap](structuremap.html): The uri that identifies the structure map
4769* [SubscriptionTopic](subscriptiontopic.html): Logical canonical URL to reference this SubscriptionTopic (globally unique)
4770* [TerminologyCapabilities](terminologycapabilities.html): The uri that identifies the terminology capabilities
4771* [TestPlan](testplan.html): The uri that identifies the test plan
4772* [TestScript](testscript.html): The uri that identifies the test script
4773* [ValueSet](valueset.html): The uri that identifies the value set
4774</b><br>
4775   * Type: <b>uri</b><br>
4776   * Path: <b>ActivityDefinition.url | ActorDefinition.url | CapabilityStatement.url | ChargeItemDefinition.url | Citation.url | CodeSystem.url | CompartmentDefinition.url | ConceptMap.url | ConditionDefinition.url | EventDefinition.url | Evidence.url | EvidenceReport.url | EvidenceVariable.url | ExampleScenario.url | GraphDefinition.url | ImplementationGuide.url | Library.url | Measure.url | MessageDefinition.url | NamingSystem.url | ObservationDefinition.url | OperationDefinition.url | PlanDefinition.url | Questionnaire.url | Requirements.url | SearchParameter.url | SpecimenDefinition.url | StructureDefinition.url | StructureMap.url | SubscriptionTopic.url | TerminologyCapabilities.url | TestPlan.url | TestScript.url | ValueSet.url</b><br>
4777   * </p>
4778   */
4779  @SearchParamDefinition(name="url", path="ActivityDefinition.url | ActorDefinition.url | CapabilityStatement.url | ChargeItemDefinition.url | Citation.url | CodeSystem.url | CompartmentDefinition.url | ConceptMap.url | ConditionDefinition.url | EventDefinition.url | Evidence.url | EvidenceReport.url | EvidenceVariable.url | ExampleScenario.url | GraphDefinition.url | ImplementationGuide.url | Library.url | Measure.url | MessageDefinition.url | NamingSystem.url | ObservationDefinition.url | OperationDefinition.url | PlanDefinition.url | Questionnaire.url | Requirements.url | SearchParameter.url | SpecimenDefinition.url | StructureDefinition.url | StructureMap.url | SubscriptionTopic.url | TerminologyCapabilities.url | TestPlan.url | TestScript.url | ValueSet.url", description="Multiple Resources: \r\n\r\n* [ActivityDefinition](activitydefinition.html): The uri that identifies the activity definition\r\n* [ActorDefinition](actordefinition.html): The uri that identifies the Actor Definition\r\n* [CapabilityStatement](capabilitystatement.html): The uri that identifies the capability statement\r\n* [ChargeItemDefinition](chargeitemdefinition.html): The uri that identifies the charge item definition\r\n* [Citation](citation.html): The uri that identifies the citation\r\n* [CodeSystem](codesystem.html): The uri that identifies the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): The uri that identifies the compartment definition\r\n* [ConceptMap](conceptmap.html): The URI that identifies the concept map\r\n* [ConditionDefinition](conditiondefinition.html): The uri that identifies the condition definition\r\n* [EventDefinition](eventdefinition.html): The uri that identifies the event definition\r\n* [Evidence](evidence.html): The uri that identifies the evidence\r\n* [EvidenceReport](evidencereport.html): The uri that identifies the evidence report\r\n* [EvidenceVariable](evidencevariable.html): The uri that identifies the evidence variable\r\n* [ExampleScenario](examplescenario.html): The uri that identifies the example scenario\r\n* [GraphDefinition](graphdefinition.html): The uri that identifies the graph definition\r\n* [ImplementationGuide](implementationguide.html): The uri that identifies the implementation guide\r\n* [Library](library.html): The uri that identifies the library\r\n* [Measure](measure.html): The uri that identifies the measure\r\n* [MessageDefinition](messagedefinition.html): The uri that identifies the message definition\r\n* [NamingSystem](namingsystem.html): The uri that identifies the naming system\r\n* [ObservationDefinition](observationdefinition.html): The uri that identifies the observation definition\r\n* [OperationDefinition](operationdefinition.html): The uri that identifies the operation definition\r\n* [PlanDefinition](plandefinition.html): The uri that identifies the plan definition\r\n* [Questionnaire](questionnaire.html): The uri that identifies the questionnaire\r\n* [Requirements](requirements.html): The uri that identifies the requirements\r\n* [SearchParameter](searchparameter.html): The uri that identifies the search parameter\r\n* [SpecimenDefinition](specimendefinition.html): The uri that identifies the specimen definition\r\n* [StructureDefinition](structuredefinition.html): The uri that identifies the structure definition\r\n* [StructureMap](structuremap.html): The uri that identifies the structure map\r\n* [SubscriptionTopic](subscriptiontopic.html): Logical canonical URL to reference this SubscriptionTopic (globally unique)\r\n* [TerminologyCapabilities](terminologycapabilities.html): The uri that identifies the terminology capabilities\r\n* [TestPlan](testplan.html): The uri that identifies the test plan\r\n* [TestScript](testscript.html): The uri that identifies the test script\r\n* [ValueSet](valueset.html): The uri that identifies the value set\r\n", type="uri" )
4780  public static final String SP_URL = "url";
4781 /**
4782   * <b>Fluent Client</b> search parameter constant for <b>url</b>
4783   * <p>
4784   * Description: <b>Multiple Resources: 
4785
4786* [ActivityDefinition](activitydefinition.html): The uri that identifies the activity definition
4787* [ActorDefinition](actordefinition.html): The uri that identifies the Actor Definition
4788* [CapabilityStatement](capabilitystatement.html): The uri that identifies the capability statement
4789* [ChargeItemDefinition](chargeitemdefinition.html): The uri that identifies the charge item definition
4790* [Citation](citation.html): The uri that identifies the citation
4791* [CodeSystem](codesystem.html): The uri that identifies the code system
4792* [CompartmentDefinition](compartmentdefinition.html): The uri that identifies the compartment definition
4793* [ConceptMap](conceptmap.html): The URI that identifies the concept map
4794* [ConditionDefinition](conditiondefinition.html): The uri that identifies the condition definition
4795* [EventDefinition](eventdefinition.html): The uri that identifies the event definition
4796* [Evidence](evidence.html): The uri that identifies the evidence
4797* [EvidenceReport](evidencereport.html): The uri that identifies the evidence report
4798* [EvidenceVariable](evidencevariable.html): The uri that identifies the evidence variable
4799* [ExampleScenario](examplescenario.html): The uri that identifies the example scenario
4800* [GraphDefinition](graphdefinition.html): The uri that identifies the graph definition
4801* [ImplementationGuide](implementationguide.html): The uri that identifies the implementation guide
4802* [Library](library.html): The uri that identifies the library
4803* [Measure](measure.html): The uri that identifies the measure
4804* [MessageDefinition](messagedefinition.html): The uri that identifies the message definition
4805* [NamingSystem](namingsystem.html): The uri that identifies the naming system
4806* [ObservationDefinition](observationdefinition.html): The uri that identifies the observation definition
4807* [OperationDefinition](operationdefinition.html): The uri that identifies the operation definition
4808* [PlanDefinition](plandefinition.html): The uri that identifies the plan definition
4809* [Questionnaire](questionnaire.html): The uri that identifies the questionnaire
4810* [Requirements](requirements.html): The uri that identifies the requirements
4811* [SearchParameter](searchparameter.html): The uri that identifies the search parameter
4812* [SpecimenDefinition](specimendefinition.html): The uri that identifies the specimen definition
4813* [StructureDefinition](structuredefinition.html): The uri that identifies the structure definition
4814* [StructureMap](structuremap.html): The uri that identifies the structure map
4815* [SubscriptionTopic](subscriptiontopic.html): Logical canonical URL to reference this SubscriptionTopic (globally unique)
4816* [TerminologyCapabilities](terminologycapabilities.html): The uri that identifies the terminology capabilities
4817* [TestPlan](testplan.html): The uri that identifies the test plan
4818* [TestScript](testscript.html): The uri that identifies the test script
4819* [ValueSet](valueset.html): The uri that identifies the value set
4820</b><br>
4821   * Type: <b>uri</b><br>
4822   * Path: <b>ActivityDefinition.url | ActorDefinition.url | CapabilityStatement.url | ChargeItemDefinition.url | Citation.url | CodeSystem.url | CompartmentDefinition.url | ConceptMap.url | ConditionDefinition.url | EventDefinition.url | Evidence.url | EvidenceReport.url | EvidenceVariable.url | ExampleScenario.url | GraphDefinition.url | ImplementationGuide.url | Library.url | Measure.url | MessageDefinition.url | NamingSystem.url | ObservationDefinition.url | OperationDefinition.url | PlanDefinition.url | Questionnaire.url | Requirements.url | SearchParameter.url | SpecimenDefinition.url | StructureDefinition.url | StructureMap.url | SubscriptionTopic.url | TerminologyCapabilities.url | TestPlan.url | TestScript.url | ValueSet.url</b><br>
4823   * </p>
4824   */
4825  public static final ca.uhn.fhir.rest.gclient.UriClientParam URL = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_URL);
4826
4827 /**
4828   * Search parameter: <b>version</b>
4829   * <p>
4830   * Description: <b>Multiple Resources: 
4831
4832* [ActivityDefinition](activitydefinition.html): The business version of the activity definition
4833* [ActorDefinition](actordefinition.html): The business version of the Actor Definition
4834* [CapabilityStatement](capabilitystatement.html): The business version of the capability statement
4835* [ChargeItemDefinition](chargeitemdefinition.html): The business version of the charge item definition
4836* [Citation](citation.html): The business version of the citation
4837* [CodeSystem](codesystem.html): The business version of the code system
4838* [CompartmentDefinition](compartmentdefinition.html): The business version of the compartment definition
4839* [ConceptMap](conceptmap.html): The business version of the concept map
4840* [ConditionDefinition](conditiondefinition.html): The business version of the condition definition
4841* [EventDefinition](eventdefinition.html): The business version of the event definition
4842* [Evidence](evidence.html): The business version of the evidence
4843* [EvidenceVariable](evidencevariable.html): The business version of the evidence variable
4844* [ExampleScenario](examplescenario.html): The business version of the example scenario
4845* [GraphDefinition](graphdefinition.html): The business version of the graph definition
4846* [ImplementationGuide](implementationguide.html): The business version of the implementation guide
4847* [Library](library.html): The business version of the library
4848* [Measure](measure.html): The business version of the measure
4849* [MessageDefinition](messagedefinition.html): The business version of the message definition
4850* [NamingSystem](namingsystem.html): The business version of the naming system
4851* [OperationDefinition](operationdefinition.html): The business version of the operation definition
4852* [PlanDefinition](plandefinition.html): The business version of the plan definition
4853* [Questionnaire](questionnaire.html): The business version of the questionnaire
4854* [Requirements](requirements.html): The business version of the requirements
4855* [SearchParameter](searchparameter.html): The business version of the search parameter
4856* [StructureDefinition](structuredefinition.html): The business version of the structure definition
4857* [StructureMap](structuremap.html): The business version of the structure map
4858* [SubscriptionTopic](subscriptiontopic.html): Business version of the SubscriptionTopic
4859* [TerminologyCapabilities](terminologycapabilities.html): The business version of the terminology capabilities
4860* [TestScript](testscript.html): The business version of the test script
4861* [ValueSet](valueset.html): The business version of the value set
4862</b><br>
4863   * Type: <b>token</b><br>
4864   * Path: <b>ActivityDefinition.version | ActorDefinition.version | CapabilityStatement.version | ChargeItemDefinition.version | Citation.version | CodeSystem.version | CompartmentDefinition.version | ConceptMap.version | ConditionDefinition.version | EventDefinition.version | Evidence.version | EvidenceVariable.version | ExampleScenario.version | GraphDefinition.version | ImplementationGuide.version | Library.version | Measure.version | MessageDefinition.version | NamingSystem.version | OperationDefinition.version | PlanDefinition.version | Questionnaire.version | Requirements.version | SearchParameter.version | StructureDefinition.version | StructureMap.version | SubscriptionTopic.version | TerminologyCapabilities.version | TestScript.version | ValueSet.version</b><br>
4865   * </p>
4866   */
4867  @SearchParamDefinition(name="version", path="ActivityDefinition.version | ActorDefinition.version | CapabilityStatement.version | ChargeItemDefinition.version | Citation.version | CodeSystem.version | CompartmentDefinition.version | ConceptMap.version | ConditionDefinition.version | EventDefinition.version | Evidence.version | EvidenceVariable.version | ExampleScenario.version | GraphDefinition.version | ImplementationGuide.version | Library.version | Measure.version | MessageDefinition.version | NamingSystem.version | OperationDefinition.version | PlanDefinition.version | Questionnaire.version | Requirements.version | SearchParameter.version | StructureDefinition.version | StructureMap.version | SubscriptionTopic.version | TerminologyCapabilities.version | TestScript.version | ValueSet.version", description="Multiple Resources: \r\n\r\n* [ActivityDefinition](activitydefinition.html): The business version of the activity definition\r\n* [ActorDefinition](actordefinition.html): The business version of the Actor Definition\r\n* [CapabilityStatement](capabilitystatement.html): The business version of the capability statement\r\n* [ChargeItemDefinition](chargeitemdefinition.html): The business version of the charge item definition\r\n* [Citation](citation.html): The business version of the citation\r\n* [CodeSystem](codesystem.html): The business version of the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): The business version of the compartment definition\r\n* [ConceptMap](conceptmap.html): The business version of the concept map\r\n* [ConditionDefinition](conditiondefinition.html): The business version of the condition definition\r\n* [EventDefinition](eventdefinition.html): The business version of the event definition\r\n* [Evidence](evidence.html): The business version of the evidence\r\n* [EvidenceVariable](evidencevariable.html): The business version of the evidence variable\r\n* [ExampleScenario](examplescenario.html): The business version of the example scenario\r\n* [GraphDefinition](graphdefinition.html): The business version of the graph definition\r\n* [ImplementationGuide](implementationguide.html): The business version of the implementation guide\r\n* [Library](library.html): The business version of the library\r\n* [Measure](measure.html): The business version of the measure\r\n* [MessageDefinition](messagedefinition.html): The business version of the message definition\r\n* [NamingSystem](namingsystem.html): The business version of the naming system\r\n* [OperationDefinition](operationdefinition.html): The business version of the operation definition\r\n* [PlanDefinition](plandefinition.html): The business version of the plan definition\r\n* [Questionnaire](questionnaire.html): The business version of the questionnaire\r\n* [Requirements](requirements.html): The business version of the requirements\r\n* [SearchParameter](searchparameter.html): The business version of the search parameter\r\n* [StructureDefinition](structuredefinition.html): The business version of the structure definition\r\n* [StructureMap](structuremap.html): The business version of the structure map\r\n* [SubscriptionTopic](subscriptiontopic.html): Business version of the SubscriptionTopic\r\n* [TerminologyCapabilities](terminologycapabilities.html): The business version of the terminology capabilities\r\n* [TestScript](testscript.html): The business version of the test script\r\n* [ValueSet](valueset.html): The business version of the value set\r\n", type="token" )
4868  public static final String SP_VERSION = "version";
4869 /**
4870   * <b>Fluent Client</b> search parameter constant for <b>version</b>
4871   * <p>
4872   * Description: <b>Multiple Resources: 
4873
4874* [ActivityDefinition](activitydefinition.html): The business version of the activity definition
4875* [ActorDefinition](actordefinition.html): The business version of the Actor Definition
4876* [CapabilityStatement](capabilitystatement.html): The business version of the capability statement
4877* [ChargeItemDefinition](chargeitemdefinition.html): The business version of the charge item definition
4878* [Citation](citation.html): The business version of the citation
4879* [CodeSystem](codesystem.html): The business version of the code system
4880* [CompartmentDefinition](compartmentdefinition.html): The business version of the compartment definition
4881* [ConceptMap](conceptmap.html): The business version of the concept map
4882* [ConditionDefinition](conditiondefinition.html): The business version of the condition definition
4883* [EventDefinition](eventdefinition.html): The business version of the event definition
4884* [Evidence](evidence.html): The business version of the evidence
4885* [EvidenceVariable](evidencevariable.html): The business version of the evidence variable
4886* [ExampleScenario](examplescenario.html): The business version of the example scenario
4887* [GraphDefinition](graphdefinition.html): The business version of the graph definition
4888* [ImplementationGuide](implementationguide.html): The business version of the implementation guide
4889* [Library](library.html): The business version of the library
4890* [Measure](measure.html): The business version of the measure
4891* [MessageDefinition](messagedefinition.html): The business version of the message definition
4892* [NamingSystem](namingsystem.html): The business version of the naming system
4893* [OperationDefinition](operationdefinition.html): The business version of the operation definition
4894* [PlanDefinition](plandefinition.html): The business version of the plan definition
4895* [Questionnaire](questionnaire.html): The business version of the questionnaire
4896* [Requirements](requirements.html): The business version of the requirements
4897* [SearchParameter](searchparameter.html): The business version of the search parameter
4898* [StructureDefinition](structuredefinition.html): The business version of the structure definition
4899* [StructureMap](structuremap.html): The business version of the structure map
4900* [SubscriptionTopic](subscriptiontopic.html): Business version of the SubscriptionTopic
4901* [TerminologyCapabilities](terminologycapabilities.html): The business version of the terminology capabilities
4902* [TestScript](testscript.html): The business version of the test script
4903* [ValueSet](valueset.html): The business version of the value set
4904</b><br>
4905   * Type: <b>token</b><br>
4906   * Path: <b>ActivityDefinition.version | ActorDefinition.version | CapabilityStatement.version | ChargeItemDefinition.version | Citation.version | CodeSystem.version | CompartmentDefinition.version | ConceptMap.version | ConditionDefinition.version | EventDefinition.version | Evidence.version | EvidenceVariable.version | ExampleScenario.version | GraphDefinition.version | ImplementationGuide.version | Library.version | Measure.version | MessageDefinition.version | NamingSystem.version | OperationDefinition.version | PlanDefinition.version | Questionnaire.version | Requirements.version | SearchParameter.version | StructureDefinition.version | StructureMap.version | SubscriptionTopic.version | TerminologyCapabilities.version | TestScript.version | ValueSet.version</b><br>
4907   * </p>
4908   */
4909  public static final ca.uhn.fhir.rest.gclient.TokenClientParam VERSION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_VERSION);
4910
4911 /**
4912   * Search parameter: <b>derived-or-self</b>
4913   * <p>
4914   * Description: <b>A server defined search that matches either the url or derivedFrom</b><br>
4915   * Type: <b>uri</b><br>
4916   * Path: <b>SubscriptionTopic.url | SubscriptionTopic.derivedFrom</b><br>
4917   * </p>
4918   */
4919  @SearchParamDefinition(name="derived-or-self", path="SubscriptionTopic.url | SubscriptionTopic.derivedFrom", description="A server defined search that matches either the url or derivedFrom", type="uri" )
4920  public static final String SP_DERIVED_OR_SELF = "derived-or-self";
4921 /**
4922   * <b>Fluent Client</b> search parameter constant for <b>derived-or-self</b>
4923   * <p>
4924   * Description: <b>A server defined search that matches either the url or derivedFrom</b><br>
4925   * Type: <b>uri</b><br>
4926   * Path: <b>SubscriptionTopic.url | SubscriptionTopic.derivedFrom</b><br>
4927   * </p>
4928   */
4929  public static final ca.uhn.fhir.rest.gclient.UriClientParam DERIVED_OR_SELF = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_DERIVED_OR_SELF);
4930
4931 /**
4932   * Search parameter: <b>effective</b>
4933   * <p>
4934   * Description: <b>Effective period</b><br>
4935   * Type: <b>date</b><br>
4936   * Path: <b>SubscriptionTopic.effectivePeriod</b><br>
4937   * </p>
4938   */
4939  @SearchParamDefinition(name="effective", path="SubscriptionTopic.effectivePeriod", description="Effective period", type="date" )
4940  public static final String SP_EFFECTIVE = "effective";
4941 /**
4942   * <b>Fluent Client</b> search parameter constant for <b>effective</b>
4943   * <p>
4944   * Description: <b>Effective period</b><br>
4945   * Type: <b>date</b><br>
4946   * Path: <b>SubscriptionTopic.effectivePeriod</b><br>
4947   * </p>
4948   */
4949  public static final ca.uhn.fhir.rest.gclient.DateClientParam EFFECTIVE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_EFFECTIVE);
4950
4951 /**
4952   * Search parameter: <b>event</b>
4953   * <p>
4954   * Description: <b>Event trigger</b><br>
4955   * Type: <b>token</b><br>
4956   * Path: <b>SubscriptionTopic.eventTrigger.event</b><br>
4957   * </p>
4958   */
4959  @SearchParamDefinition(name="event", path="SubscriptionTopic.eventTrigger.event", description="Event trigger", type="token" )
4960  public static final String SP_EVENT = "event";
4961 /**
4962   * <b>Fluent Client</b> search parameter constant for <b>event</b>
4963   * <p>
4964   * Description: <b>Event trigger</b><br>
4965   * Type: <b>token</b><br>
4966   * Path: <b>SubscriptionTopic.eventTrigger.event</b><br>
4967   * </p>
4968   */
4969  public static final ca.uhn.fhir.rest.gclient.TokenClientParam EVENT = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_EVENT);
4970
4971 /**
4972   * Search parameter: <b>resource</b>
4973   * <p>
4974   * Description: <b>Allowed resource for this definition</b><br>
4975   * Type: <b>uri</b><br>
4976   * Path: <b>SubscriptionTopic.resourceTrigger.resource | SubscriptionTopic.eventTrigger.resource | SubscriptionTopic.canFilterBy.resource | SubscriptionTopic.notificationShape.resource</b><br>
4977   * </p>
4978   */
4979  @SearchParamDefinition(name="resource", path="SubscriptionTopic.resourceTrigger.resource | SubscriptionTopic.eventTrigger.resource | SubscriptionTopic.canFilterBy.resource | SubscriptionTopic.notificationShape.resource", description="Allowed resource for this definition", type="uri" )
4980  public static final String SP_RESOURCE = "resource";
4981 /**
4982   * <b>Fluent Client</b> search parameter constant for <b>resource</b>
4983   * <p>
4984   * Description: <b>Allowed resource for this definition</b><br>
4985   * Type: <b>uri</b><br>
4986   * Path: <b>SubscriptionTopic.resourceTrigger.resource | SubscriptionTopic.eventTrigger.resource | SubscriptionTopic.canFilterBy.resource | SubscriptionTopic.notificationShape.resource</b><br>
4987   * </p>
4988   */
4989  public static final ca.uhn.fhir.rest.gclient.UriClientParam RESOURCE = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_RESOURCE);
4990
4991 /**
4992   * Search parameter: <b>trigger-description</b>
4993   * <p>
4994   * Description: <b>Text representation of the trigger</b><br>
4995   * Type: <b>string</b><br>
4996   * Path: <b>SubscriptionTopic.resourceTrigger.description</b><br>
4997   * </p>
4998   */
4999  @SearchParamDefinition(name="trigger-description", path="SubscriptionTopic.resourceTrigger.description", description="Text representation of the trigger", type="string" )
5000  public static final String SP_TRIGGER_DESCRIPTION = "trigger-description";
5001 /**
5002   * <b>Fluent Client</b> search parameter constant for <b>trigger-description</b>
5003   * <p>
5004   * Description: <b>Text representation of the trigger</b><br>
5005   * Type: <b>string</b><br>
5006   * Path: <b>SubscriptionTopic.resourceTrigger.description</b><br>
5007   * </p>
5008   */
5009  public static final ca.uhn.fhir.rest.gclient.StringClientParam TRIGGER_DESCRIPTION = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_TRIGGER_DESCRIPTION);
5010
5011
5012}
5013