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 Tue, Dec 28, 2021 07:16+1100 for FHIR v5.0.0-snapshot1
033
034import java.util.ArrayList;
035import java.util.Date;
036import java.util.List;
037import org.hl7.fhir.utilities.Utilities;
038import org.hl7.fhir.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 * Defines the characteristics of a message that can be shared between systems, including the type of event that initiates the message, the content to be transmitted and what response(s), if any, are permitted.
052 */
053@ResourceDef(name="MessageDefinition", profile="http://hl7.org/fhir/StructureDefinition/MessageDefinition")
054public class MessageDefinition extends CanonicalResource {
055
056    public enum MessageSignificanceCategory {
057        /**
058         * The message represents/requests a change that should not be processed more than once; e.g., making a booking for an appointment.
059         */
060        CONSEQUENCE, 
061        /**
062         * The message represents a response to query for current information. Retrospective processing is wrong and/or wasteful.
063         */
064        CURRENCY, 
065        /**
066         * The content is not necessarily intended to be current, and it can be reprocessed, though there may be version issues created by processing old notifications.
067         */
068        NOTIFICATION, 
069        /**
070         * added to help the parsers with the generic types
071         */
072        NULL;
073        public static MessageSignificanceCategory fromCode(String codeString) throws FHIRException {
074            if (codeString == null || "".equals(codeString))
075                return null;
076        if ("consequence".equals(codeString))
077          return CONSEQUENCE;
078        if ("currency".equals(codeString))
079          return CURRENCY;
080        if ("notification".equals(codeString))
081          return NOTIFICATION;
082        if (Configuration.isAcceptInvalidEnums())
083          return null;
084        else
085          throw new FHIRException("Unknown MessageSignificanceCategory code '"+codeString+"'");
086        }
087        public String toCode() {
088          switch (this) {
089            case CONSEQUENCE: return "consequence";
090            case CURRENCY: return "currency";
091            case NOTIFICATION: return "notification";
092            default: return "?";
093          }
094        }
095        public String getSystem() {
096          switch (this) {
097            case CONSEQUENCE: return "http://hl7.org/fhir/message-significance-category";
098            case CURRENCY: return "http://hl7.org/fhir/message-significance-category";
099            case NOTIFICATION: return "http://hl7.org/fhir/message-significance-category";
100            default: return "?";
101          }
102        }
103        public String getDefinition() {
104          switch (this) {
105            case CONSEQUENCE: return "The message represents/requests a change that should not be processed more than once; e.g., making a booking for an appointment.";
106            case CURRENCY: return "The message represents a response to query for current information. Retrospective processing is wrong and/or wasteful.";
107            case NOTIFICATION: return "The content is not necessarily intended to be current, and it can be reprocessed, though there may be version issues created by processing old notifications.";
108            default: return "?";
109          }
110        }
111        public String getDisplay() {
112          switch (this) {
113            case CONSEQUENCE: return "Consequence";
114            case CURRENCY: return "Currency";
115            case NOTIFICATION: return "Notification";
116            default: return "?";
117          }
118        }
119    }
120
121  public static class MessageSignificanceCategoryEnumFactory implements EnumFactory<MessageSignificanceCategory> {
122    public MessageSignificanceCategory fromCode(String codeString) throws IllegalArgumentException {
123      if (codeString == null || "".equals(codeString))
124            if (codeString == null || "".equals(codeString))
125                return null;
126        if ("consequence".equals(codeString))
127          return MessageSignificanceCategory.CONSEQUENCE;
128        if ("currency".equals(codeString))
129          return MessageSignificanceCategory.CURRENCY;
130        if ("notification".equals(codeString))
131          return MessageSignificanceCategory.NOTIFICATION;
132        throw new IllegalArgumentException("Unknown MessageSignificanceCategory code '"+codeString+"'");
133        }
134        public Enumeration<MessageSignificanceCategory> fromType(Base code) throws FHIRException {
135          if (code == null)
136            return null;
137          if (code.isEmpty())
138            return new Enumeration<MessageSignificanceCategory>(this);
139          String codeString = ((PrimitiveType) code).asStringValue();
140          if (codeString == null || "".equals(codeString))
141            return null;
142        if ("consequence".equals(codeString))
143          return new Enumeration<MessageSignificanceCategory>(this, MessageSignificanceCategory.CONSEQUENCE);
144        if ("currency".equals(codeString))
145          return new Enumeration<MessageSignificanceCategory>(this, MessageSignificanceCategory.CURRENCY);
146        if ("notification".equals(codeString))
147          return new Enumeration<MessageSignificanceCategory>(this, MessageSignificanceCategory.NOTIFICATION);
148        throw new FHIRException("Unknown MessageSignificanceCategory code '"+codeString+"'");
149        }
150    public String toCode(MessageSignificanceCategory code) {
151      if (code == MessageSignificanceCategory.CONSEQUENCE)
152        return "consequence";
153      if (code == MessageSignificanceCategory.CURRENCY)
154        return "currency";
155      if (code == MessageSignificanceCategory.NOTIFICATION)
156        return "notification";
157      return "?";
158      }
159    public String toSystem(MessageSignificanceCategory code) {
160      return code.getSystem();
161      }
162    }
163
164    public enum MessageheaderResponseRequest {
165        /**
166         * initiator expects a response for this message.
167         */
168        ALWAYS, 
169        /**
170         * initiator expects a response only if in error.
171         */
172        ONERROR, 
173        /**
174         * initiator does not expect a response.
175         */
176        NEVER, 
177        /**
178         * initiator expects a response only if successful.
179         */
180        ONSUCCESS, 
181        /**
182         * added to help the parsers with the generic types
183         */
184        NULL;
185        public static MessageheaderResponseRequest fromCode(String codeString) throws FHIRException {
186            if (codeString == null || "".equals(codeString))
187                return null;
188        if ("always".equals(codeString))
189          return ALWAYS;
190        if ("on-error".equals(codeString))
191          return ONERROR;
192        if ("never".equals(codeString))
193          return NEVER;
194        if ("on-success".equals(codeString))
195          return ONSUCCESS;
196        if (Configuration.isAcceptInvalidEnums())
197          return null;
198        else
199          throw new FHIRException("Unknown MessageheaderResponseRequest code '"+codeString+"'");
200        }
201        public String toCode() {
202          switch (this) {
203            case ALWAYS: return "always";
204            case ONERROR: return "on-error";
205            case NEVER: return "never";
206            case ONSUCCESS: return "on-success";
207            default: return "?";
208          }
209        }
210        public String getSystem() {
211          switch (this) {
212            case ALWAYS: return "http://hl7.org/fhir/messageheader-response-request";
213            case ONERROR: return "http://hl7.org/fhir/messageheader-response-request";
214            case NEVER: return "http://hl7.org/fhir/messageheader-response-request";
215            case ONSUCCESS: return "http://hl7.org/fhir/messageheader-response-request";
216            default: return "?";
217          }
218        }
219        public String getDefinition() {
220          switch (this) {
221            case ALWAYS: return "initiator expects a response for this message.";
222            case ONERROR: return "initiator expects a response only if in error.";
223            case NEVER: return "initiator does not expect a response.";
224            case ONSUCCESS: return "initiator expects a response only if successful.";
225            default: return "?";
226          }
227        }
228        public String getDisplay() {
229          switch (this) {
230            case ALWAYS: return "Always";
231            case ONERROR: return "Error/reject conditions only";
232            case NEVER: return "Never";
233            case ONSUCCESS: return "Successful completion only";
234            default: return "?";
235          }
236        }
237    }
238
239  public static class MessageheaderResponseRequestEnumFactory implements EnumFactory<MessageheaderResponseRequest> {
240    public MessageheaderResponseRequest fromCode(String codeString) throws IllegalArgumentException {
241      if (codeString == null || "".equals(codeString))
242            if (codeString == null || "".equals(codeString))
243                return null;
244        if ("always".equals(codeString))
245          return MessageheaderResponseRequest.ALWAYS;
246        if ("on-error".equals(codeString))
247          return MessageheaderResponseRequest.ONERROR;
248        if ("never".equals(codeString))
249          return MessageheaderResponseRequest.NEVER;
250        if ("on-success".equals(codeString))
251          return MessageheaderResponseRequest.ONSUCCESS;
252        throw new IllegalArgumentException("Unknown MessageheaderResponseRequest code '"+codeString+"'");
253        }
254        public Enumeration<MessageheaderResponseRequest> fromType(Base code) throws FHIRException {
255          if (code == null)
256            return null;
257          if (code.isEmpty())
258            return new Enumeration<MessageheaderResponseRequest>(this);
259          String codeString = ((PrimitiveType) code).asStringValue();
260          if (codeString == null || "".equals(codeString))
261            return null;
262        if ("always".equals(codeString))
263          return new Enumeration<MessageheaderResponseRequest>(this, MessageheaderResponseRequest.ALWAYS);
264        if ("on-error".equals(codeString))
265          return new Enumeration<MessageheaderResponseRequest>(this, MessageheaderResponseRequest.ONERROR);
266        if ("never".equals(codeString))
267          return new Enumeration<MessageheaderResponseRequest>(this, MessageheaderResponseRequest.NEVER);
268        if ("on-success".equals(codeString))
269          return new Enumeration<MessageheaderResponseRequest>(this, MessageheaderResponseRequest.ONSUCCESS);
270        throw new FHIRException("Unknown MessageheaderResponseRequest code '"+codeString+"'");
271        }
272    public String toCode(MessageheaderResponseRequest code) {
273      if (code == MessageheaderResponseRequest.ALWAYS)
274        return "always";
275      if (code == MessageheaderResponseRequest.ONERROR)
276        return "on-error";
277      if (code == MessageheaderResponseRequest.NEVER)
278        return "never";
279      if (code == MessageheaderResponseRequest.ONSUCCESS)
280        return "on-success";
281      return "?";
282      }
283    public String toSystem(MessageheaderResponseRequest code) {
284      return code.getSystem();
285      }
286    }
287
288    @Block()
289    public static class MessageDefinitionFocusComponent extends BackboneElement implements IBaseBackboneElement {
290        /**
291         * The kind of resource that must be the focus for this message.
292         */
293        @Child(name = "code", type = {CodeType.class}, order=1, min=1, max=1, modifier=false, summary=true)
294        @Description(shortDefinition="Type of resource", formalDefinition="The kind of resource that must be the focus for this message." )
295        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/resource-types")
296        protected CodeType code;
297
298        /**
299         * A profile that reflects constraints for the focal resource (and potentially for related resources).
300         */
301        @Child(name = "profile", type = {CanonicalType.class}, order=2, min=0, max=1, modifier=false, summary=false)
302        @Description(shortDefinition="Profile that must be adhered to by focus", formalDefinition="A profile that reflects constraints for the focal resource (and potentially for related resources)." )
303        protected CanonicalType profile;
304
305        /**
306         * Identifies the minimum number of resources of this type that must be pointed to by a message in order for it to be valid against this MessageDefinition.
307         */
308        @Child(name = "min", type = {UnsignedIntType.class}, order=3, min=1, max=1, modifier=false, summary=true)
309        @Description(shortDefinition="Minimum number of focuses of this type", formalDefinition="Identifies the minimum number of resources of this type that must be pointed to by a message in order for it to be valid against this MessageDefinition." )
310        protected UnsignedIntType min;
311
312        /**
313         * Identifies the maximum number of resources of this type that must be pointed to by a message in order for it to be valid against this MessageDefinition.
314         */
315        @Child(name = "max", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=false)
316        @Description(shortDefinition="Maximum number of focuses of this type", formalDefinition="Identifies the maximum number of resources of this type that must be pointed to by a message in order for it to be valid against this MessageDefinition." )
317        protected StringType max;
318
319        private static final long serialVersionUID = -68504836L;
320
321    /**
322     * Constructor
323     */
324      public MessageDefinitionFocusComponent() {
325        super();
326      }
327
328    /**
329     * Constructor
330     */
331      public MessageDefinitionFocusComponent(String code, int min) {
332        super();
333        this.setCode(code);
334        this.setMin(min);
335      }
336
337        /**
338         * @return {@link #code} (The kind of resource that must be the focus for this message.). This is the underlying object with id, value and extensions. The accessor "getCode" gives direct access to the value
339         */
340        public CodeType getCodeElement() { 
341          if (this.code == null)
342            if (Configuration.errorOnAutoCreate())
343              throw new Error("Attempt to auto-create MessageDefinitionFocusComponent.code");
344            else if (Configuration.doAutoCreate())
345              this.code = new CodeType(); // bb
346          return this.code;
347        }
348
349        public boolean hasCodeElement() { 
350          return this.code != null && !this.code.isEmpty();
351        }
352
353        public boolean hasCode() { 
354          return this.code != null && !this.code.isEmpty();
355        }
356
357        /**
358         * @param value {@link #code} (The kind of resource that must be the focus for this message.). This is the underlying object with id, value and extensions. The accessor "getCode" gives direct access to the value
359         */
360        public MessageDefinitionFocusComponent setCodeElement(CodeType value) { 
361          this.code = value;
362          return this;
363        }
364
365        /**
366         * @return The kind of resource that must be the focus for this message.
367         */
368        public String getCode() { 
369          return this.code == null ? null : this.code.getValue();
370        }
371
372        /**
373         * @param value The kind of resource that must be the focus for this message.
374         */
375        public MessageDefinitionFocusComponent setCode(String value) { 
376            if (this.code == null)
377              this.code = new CodeType();
378            this.code.setValue(value);
379          return this;
380        }
381
382        /**
383         * @return {@link #profile} (A profile that reflects constraints for the focal resource (and potentially for related resources).). This is the underlying object with id, value and extensions. The accessor "getProfile" gives direct access to the value
384         */
385        public CanonicalType getProfileElement() { 
386          if (this.profile == null)
387            if (Configuration.errorOnAutoCreate())
388              throw new Error("Attempt to auto-create MessageDefinitionFocusComponent.profile");
389            else if (Configuration.doAutoCreate())
390              this.profile = new CanonicalType(); // bb
391          return this.profile;
392        }
393
394        public boolean hasProfileElement() { 
395          return this.profile != null && !this.profile.isEmpty();
396        }
397
398        public boolean hasProfile() { 
399          return this.profile != null && !this.profile.isEmpty();
400        }
401
402        /**
403         * @param value {@link #profile} (A profile that reflects constraints for the focal resource (and potentially for related resources).). This is the underlying object with id, value and extensions. The accessor "getProfile" gives direct access to the value
404         */
405        public MessageDefinitionFocusComponent setProfileElement(CanonicalType value) { 
406          this.profile = value;
407          return this;
408        }
409
410        /**
411         * @return A profile that reflects constraints for the focal resource (and potentially for related resources).
412         */
413        public String getProfile() { 
414          return this.profile == null ? null : this.profile.getValue();
415        }
416
417        /**
418         * @param value A profile that reflects constraints for the focal resource (and potentially for related resources).
419         */
420        public MessageDefinitionFocusComponent setProfile(String value) { 
421          if (Utilities.noString(value))
422            this.profile = null;
423          else {
424            if (this.profile == null)
425              this.profile = new CanonicalType();
426            this.profile.setValue(value);
427          }
428          return this;
429        }
430
431        /**
432         * @return {@link #min} (Identifies the minimum number of resources of this type that must be pointed to by a message in order for it to be valid against this MessageDefinition.). This is the underlying object with id, value and extensions. The accessor "getMin" gives direct access to the value
433         */
434        public UnsignedIntType getMinElement() { 
435          if (this.min == null)
436            if (Configuration.errorOnAutoCreate())
437              throw new Error("Attempt to auto-create MessageDefinitionFocusComponent.min");
438            else if (Configuration.doAutoCreate())
439              this.min = new UnsignedIntType(); // bb
440          return this.min;
441        }
442
443        public boolean hasMinElement() { 
444          return this.min != null && !this.min.isEmpty();
445        }
446
447        public boolean hasMin() { 
448          return this.min != null && !this.min.isEmpty();
449        }
450
451        /**
452         * @param value {@link #min} (Identifies the minimum number of resources of this type that must be pointed to by a message in order for it to be valid against this MessageDefinition.). This is the underlying object with id, value and extensions. The accessor "getMin" gives direct access to the value
453         */
454        public MessageDefinitionFocusComponent setMinElement(UnsignedIntType value) { 
455          this.min = value;
456          return this;
457        }
458
459        /**
460         * @return Identifies the minimum number of resources of this type that must be pointed to by a message in order for it to be valid against this MessageDefinition.
461         */
462        public int getMin() { 
463          return this.min == null || this.min.isEmpty() ? 0 : this.min.getValue();
464        }
465
466        /**
467         * @param value Identifies the minimum number of resources of this type that must be pointed to by a message in order for it to be valid against this MessageDefinition.
468         */
469        public MessageDefinitionFocusComponent setMin(int value) { 
470            if (this.min == null)
471              this.min = new UnsignedIntType();
472            this.min.setValue(value);
473          return this;
474        }
475
476        /**
477         * @return {@link #max} (Identifies the maximum number of resources of this type that must be pointed to by a message in order for it to be valid against this MessageDefinition.). This is the underlying object with id, value and extensions. The accessor "getMax" gives direct access to the value
478         */
479        public StringType getMaxElement() { 
480          if (this.max == null)
481            if (Configuration.errorOnAutoCreate())
482              throw new Error("Attempt to auto-create MessageDefinitionFocusComponent.max");
483            else if (Configuration.doAutoCreate())
484              this.max = new StringType(); // bb
485          return this.max;
486        }
487
488        public boolean hasMaxElement() { 
489          return this.max != null && !this.max.isEmpty();
490        }
491
492        public boolean hasMax() { 
493          return this.max != null && !this.max.isEmpty();
494        }
495
496        /**
497         * @param value {@link #max} (Identifies the maximum number of resources of this type that must be pointed to by a message in order for it to be valid against this MessageDefinition.). This is the underlying object with id, value and extensions. The accessor "getMax" gives direct access to the value
498         */
499        public MessageDefinitionFocusComponent setMaxElement(StringType value) { 
500          this.max = value;
501          return this;
502        }
503
504        /**
505         * @return Identifies the maximum number of resources of this type that must be pointed to by a message in order for it to be valid against this MessageDefinition.
506         */
507        public String getMax() { 
508          return this.max == null ? null : this.max.getValue();
509        }
510
511        /**
512         * @param value Identifies the maximum number of resources of this type that must be pointed to by a message in order for it to be valid against this MessageDefinition.
513         */
514        public MessageDefinitionFocusComponent setMax(String value) { 
515          if (Utilities.noString(value))
516            this.max = null;
517          else {
518            if (this.max == null)
519              this.max = new StringType();
520            this.max.setValue(value);
521          }
522          return this;
523        }
524
525        protected void listChildren(List<Property> children) {
526          super.listChildren(children);
527          children.add(new Property("code", "code", "The kind of resource that must be the focus for this message.", 0, 1, code));
528          children.add(new Property("profile", "canonical(StructureDefinition)", "A profile that reflects constraints for the focal resource (and potentially for related resources).", 0, 1, profile));
529          children.add(new Property("min", "unsignedInt", "Identifies the minimum number of resources of this type that must be pointed to by a message in order for it to be valid against this MessageDefinition.", 0, 1, min));
530          children.add(new Property("max", "string", "Identifies the maximum number of resources of this type that must be pointed to by a message in order for it to be valid against this MessageDefinition.", 0, 1, max));
531        }
532
533        @Override
534        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
535          switch (_hash) {
536          case 3059181: /*code*/  return new Property("code", "code", "The kind of resource that must be the focus for this message.", 0, 1, code);
537          case -309425751: /*profile*/  return new Property("profile", "canonical(StructureDefinition)", "A profile that reflects constraints for the focal resource (and potentially for related resources).", 0, 1, profile);
538          case 108114: /*min*/  return new Property("min", "unsignedInt", "Identifies the minimum number of resources of this type that must be pointed to by a message in order for it to be valid against this MessageDefinition.", 0, 1, min);
539          case 107876: /*max*/  return new Property("max", "string", "Identifies the maximum number of resources of this type that must be pointed to by a message in order for it to be valid against this MessageDefinition.", 0, 1, max);
540          default: return super.getNamedProperty(_hash, _name, _checkValid);
541          }
542
543        }
544
545      @Override
546      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
547        switch (hash) {
548        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // CodeType
549        case -309425751: /*profile*/ return this.profile == null ? new Base[0] : new Base[] {this.profile}; // CanonicalType
550        case 108114: /*min*/ return this.min == null ? new Base[0] : new Base[] {this.min}; // UnsignedIntType
551        case 107876: /*max*/ return this.max == null ? new Base[0] : new Base[] {this.max}; // StringType
552        default: return super.getProperty(hash, name, checkValid);
553        }
554
555      }
556
557      @Override
558      public Base setProperty(int hash, String name, Base value) throws FHIRException {
559        switch (hash) {
560        case 3059181: // code
561          this.code = TypeConvertor.castToCode(value); // CodeType
562          return value;
563        case -309425751: // profile
564          this.profile = TypeConvertor.castToCanonical(value); // CanonicalType
565          return value;
566        case 108114: // min
567          this.min = TypeConvertor.castToUnsignedInt(value); // UnsignedIntType
568          return value;
569        case 107876: // max
570          this.max = TypeConvertor.castToString(value); // StringType
571          return value;
572        default: return super.setProperty(hash, name, value);
573        }
574
575      }
576
577      @Override
578      public Base setProperty(String name, Base value) throws FHIRException {
579        if (name.equals("code")) {
580          this.code = TypeConvertor.castToCode(value); // CodeType
581        } else if (name.equals("profile")) {
582          this.profile = TypeConvertor.castToCanonical(value); // CanonicalType
583        } else if (name.equals("min")) {
584          this.min = TypeConvertor.castToUnsignedInt(value); // UnsignedIntType
585        } else if (name.equals("max")) {
586          this.max = TypeConvertor.castToString(value); // StringType
587        } else
588          return super.setProperty(name, value);
589        return value;
590      }
591
592      @Override
593      public Base makeProperty(int hash, String name) throws FHIRException {
594        switch (hash) {
595        case 3059181:  return getCodeElement();
596        case -309425751:  return getProfileElement();
597        case 108114:  return getMinElement();
598        case 107876:  return getMaxElement();
599        default: return super.makeProperty(hash, name);
600        }
601
602      }
603
604      @Override
605      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
606        switch (hash) {
607        case 3059181: /*code*/ return new String[] {"code"};
608        case -309425751: /*profile*/ return new String[] {"canonical"};
609        case 108114: /*min*/ return new String[] {"unsignedInt"};
610        case 107876: /*max*/ return new String[] {"string"};
611        default: return super.getTypesForProperty(hash, name);
612        }
613
614      }
615
616      @Override
617      public Base addChild(String name) throws FHIRException {
618        if (name.equals("code")) {
619          throw new FHIRException("Cannot call addChild on a primitive type MessageDefinition.focus.code");
620        }
621        else if (name.equals("profile")) {
622          throw new FHIRException("Cannot call addChild on a primitive type MessageDefinition.focus.profile");
623        }
624        else if (name.equals("min")) {
625          throw new FHIRException("Cannot call addChild on a primitive type MessageDefinition.focus.min");
626        }
627        else if (name.equals("max")) {
628          throw new FHIRException("Cannot call addChild on a primitive type MessageDefinition.focus.max");
629        }
630        else
631          return super.addChild(name);
632      }
633
634      public MessageDefinitionFocusComponent copy() {
635        MessageDefinitionFocusComponent dst = new MessageDefinitionFocusComponent();
636        copyValues(dst);
637        return dst;
638      }
639
640      public void copyValues(MessageDefinitionFocusComponent dst) {
641        super.copyValues(dst);
642        dst.code = code == null ? null : code.copy();
643        dst.profile = profile == null ? null : profile.copy();
644        dst.min = min == null ? null : min.copy();
645        dst.max = max == null ? null : max.copy();
646      }
647
648      @Override
649      public boolean equalsDeep(Base other_) {
650        if (!super.equalsDeep(other_))
651          return false;
652        if (!(other_ instanceof MessageDefinitionFocusComponent))
653          return false;
654        MessageDefinitionFocusComponent o = (MessageDefinitionFocusComponent) other_;
655        return compareDeep(code, o.code, true) && compareDeep(profile, o.profile, true) && compareDeep(min, o.min, true)
656           && compareDeep(max, o.max, true);
657      }
658
659      @Override
660      public boolean equalsShallow(Base other_) {
661        if (!super.equalsShallow(other_))
662          return false;
663        if (!(other_ instanceof MessageDefinitionFocusComponent))
664          return false;
665        MessageDefinitionFocusComponent o = (MessageDefinitionFocusComponent) other_;
666        return compareValues(code, o.code, true) && compareValues(profile, o.profile, true) && compareValues(min, o.min, true)
667           && compareValues(max, o.max, true);
668      }
669
670      public boolean isEmpty() {
671        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(code, profile, min, max
672          );
673      }
674
675  public String fhirType() {
676    return "MessageDefinition.focus";
677
678  }
679
680  }
681
682    @Block()
683    public static class MessageDefinitionAllowedResponseComponent extends BackboneElement implements IBaseBackboneElement {
684        /**
685         * A reference to the message definition that must be adhered to by this supported response.
686         */
687        @Child(name = "message", type = {CanonicalType.class}, order=1, min=1, max=1, modifier=false, summary=false)
688        @Description(shortDefinition="Reference to allowed message definition response", formalDefinition="A reference to the message definition that must be adhered to by this supported response." )
689        protected CanonicalType message;
690
691        /**
692         * Provides a description of the circumstances in which this response should be used (as opposed to one of the alternative responses).
693         */
694        @Child(name = "situation", type = {MarkdownType.class}, order=2, min=0, max=1, modifier=false, summary=false)
695        @Description(shortDefinition="When should this response be used", formalDefinition="Provides a description of the circumstances in which this response should be used (as opposed to one of the alternative responses)." )
696        protected MarkdownType situation;
697
698        private static final long serialVersionUID = -1943810550L;
699
700    /**
701     * Constructor
702     */
703      public MessageDefinitionAllowedResponseComponent() {
704        super();
705      }
706
707    /**
708     * Constructor
709     */
710      public MessageDefinitionAllowedResponseComponent(String message) {
711        super();
712        this.setMessage(message);
713      }
714
715        /**
716         * @return {@link #message} (A reference to the message definition that must be adhered to by this supported response.). This is the underlying object with id, value and extensions. The accessor "getMessage" gives direct access to the value
717         */
718        public CanonicalType getMessageElement() { 
719          if (this.message == null)
720            if (Configuration.errorOnAutoCreate())
721              throw new Error("Attempt to auto-create MessageDefinitionAllowedResponseComponent.message");
722            else if (Configuration.doAutoCreate())
723              this.message = new CanonicalType(); // bb
724          return this.message;
725        }
726
727        public boolean hasMessageElement() { 
728          return this.message != null && !this.message.isEmpty();
729        }
730
731        public boolean hasMessage() { 
732          return this.message != null && !this.message.isEmpty();
733        }
734
735        /**
736         * @param value {@link #message} (A reference to the message definition that must be adhered to by this supported response.). This is the underlying object with id, value and extensions. The accessor "getMessage" gives direct access to the value
737         */
738        public MessageDefinitionAllowedResponseComponent setMessageElement(CanonicalType value) { 
739          this.message = value;
740          return this;
741        }
742
743        /**
744         * @return A reference to the message definition that must be adhered to by this supported response.
745         */
746        public String getMessage() { 
747          return this.message == null ? null : this.message.getValue();
748        }
749
750        /**
751         * @param value A reference to the message definition that must be adhered to by this supported response.
752         */
753        public MessageDefinitionAllowedResponseComponent setMessage(String value) { 
754            if (this.message == null)
755              this.message = new CanonicalType();
756            this.message.setValue(value);
757          return this;
758        }
759
760        /**
761         * @return {@link #situation} (Provides a description of the circumstances in which this response should be used (as opposed to one of the alternative responses).). This is the underlying object with id, value and extensions. The accessor "getSituation" gives direct access to the value
762         */
763        public MarkdownType getSituationElement() { 
764          if (this.situation == null)
765            if (Configuration.errorOnAutoCreate())
766              throw new Error("Attempt to auto-create MessageDefinitionAllowedResponseComponent.situation");
767            else if (Configuration.doAutoCreate())
768              this.situation = new MarkdownType(); // bb
769          return this.situation;
770        }
771
772        public boolean hasSituationElement() { 
773          return this.situation != null && !this.situation.isEmpty();
774        }
775
776        public boolean hasSituation() { 
777          return this.situation != null && !this.situation.isEmpty();
778        }
779
780        /**
781         * @param value {@link #situation} (Provides a description of the circumstances in which this response should be used (as opposed to one of the alternative responses).). This is the underlying object with id, value and extensions. The accessor "getSituation" gives direct access to the value
782         */
783        public MessageDefinitionAllowedResponseComponent setSituationElement(MarkdownType value) { 
784          this.situation = value;
785          return this;
786        }
787
788        /**
789         * @return Provides a description of the circumstances in which this response should be used (as opposed to one of the alternative responses).
790         */
791        public String getSituation() { 
792          return this.situation == null ? null : this.situation.getValue();
793        }
794
795        /**
796         * @param value Provides a description of the circumstances in which this response should be used (as opposed to one of the alternative responses).
797         */
798        public MessageDefinitionAllowedResponseComponent setSituation(String value) { 
799          if (value == null)
800            this.situation = null;
801          else {
802            if (this.situation == null)
803              this.situation = new MarkdownType();
804            this.situation.setValue(value);
805          }
806          return this;
807        }
808
809        protected void listChildren(List<Property> children) {
810          super.listChildren(children);
811          children.add(new Property("message", "canonical(MessageDefinition)", "A reference to the message definition that must be adhered to by this supported response.", 0, 1, message));
812          children.add(new Property("situation", "markdown", "Provides a description of the circumstances in which this response should be used (as opposed to one of the alternative responses).", 0, 1, situation));
813        }
814
815        @Override
816        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
817          switch (_hash) {
818          case 954925063: /*message*/  return new Property("message", "canonical(MessageDefinition)", "A reference to the message definition that must be adhered to by this supported response.", 0, 1, message);
819          case -73377282: /*situation*/  return new Property("situation", "markdown", "Provides a description of the circumstances in which this response should be used (as opposed to one of the alternative responses).", 0, 1, situation);
820          default: return super.getNamedProperty(_hash, _name, _checkValid);
821          }
822
823        }
824
825      @Override
826      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
827        switch (hash) {
828        case 954925063: /*message*/ return this.message == null ? new Base[0] : new Base[] {this.message}; // CanonicalType
829        case -73377282: /*situation*/ return this.situation == null ? new Base[0] : new Base[] {this.situation}; // MarkdownType
830        default: return super.getProperty(hash, name, checkValid);
831        }
832
833      }
834
835      @Override
836      public Base setProperty(int hash, String name, Base value) throws FHIRException {
837        switch (hash) {
838        case 954925063: // message
839          this.message = TypeConvertor.castToCanonical(value); // CanonicalType
840          return value;
841        case -73377282: // situation
842          this.situation = TypeConvertor.castToMarkdown(value); // MarkdownType
843          return value;
844        default: return super.setProperty(hash, name, value);
845        }
846
847      }
848
849      @Override
850      public Base setProperty(String name, Base value) throws FHIRException {
851        if (name.equals("message")) {
852          this.message = TypeConvertor.castToCanonical(value); // CanonicalType
853        } else if (name.equals("situation")) {
854          this.situation = TypeConvertor.castToMarkdown(value); // MarkdownType
855        } else
856          return super.setProperty(name, value);
857        return value;
858      }
859
860      @Override
861      public Base makeProperty(int hash, String name) throws FHIRException {
862        switch (hash) {
863        case 954925063:  return getMessageElement();
864        case -73377282:  return getSituationElement();
865        default: return super.makeProperty(hash, name);
866        }
867
868      }
869
870      @Override
871      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
872        switch (hash) {
873        case 954925063: /*message*/ return new String[] {"canonical"};
874        case -73377282: /*situation*/ return new String[] {"markdown"};
875        default: return super.getTypesForProperty(hash, name);
876        }
877
878      }
879
880      @Override
881      public Base addChild(String name) throws FHIRException {
882        if (name.equals("message")) {
883          throw new FHIRException("Cannot call addChild on a primitive type MessageDefinition.allowedResponse.message");
884        }
885        else if (name.equals("situation")) {
886          throw new FHIRException("Cannot call addChild on a primitive type MessageDefinition.allowedResponse.situation");
887        }
888        else
889          return super.addChild(name);
890      }
891
892      public MessageDefinitionAllowedResponseComponent copy() {
893        MessageDefinitionAllowedResponseComponent dst = new MessageDefinitionAllowedResponseComponent();
894        copyValues(dst);
895        return dst;
896      }
897
898      public void copyValues(MessageDefinitionAllowedResponseComponent dst) {
899        super.copyValues(dst);
900        dst.message = message == null ? null : message.copy();
901        dst.situation = situation == null ? null : situation.copy();
902      }
903
904      @Override
905      public boolean equalsDeep(Base other_) {
906        if (!super.equalsDeep(other_))
907          return false;
908        if (!(other_ instanceof MessageDefinitionAllowedResponseComponent))
909          return false;
910        MessageDefinitionAllowedResponseComponent o = (MessageDefinitionAllowedResponseComponent) other_;
911        return compareDeep(message, o.message, true) && compareDeep(situation, o.situation, true);
912      }
913
914      @Override
915      public boolean equalsShallow(Base other_) {
916        if (!super.equalsShallow(other_))
917          return false;
918        if (!(other_ instanceof MessageDefinitionAllowedResponseComponent))
919          return false;
920        MessageDefinitionAllowedResponseComponent o = (MessageDefinitionAllowedResponseComponent) other_;
921        return compareValues(message, o.message, true) && compareValues(situation, o.situation, true);
922      }
923
924      public boolean isEmpty() {
925        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(message, situation);
926      }
927
928  public String fhirType() {
929    return "MessageDefinition.allowedResponse";
930
931  }
932
933  }
934
935    /**
936     * The business identifier that is used to reference the MessageDefinition and *is* expected to be consistent from server to server.
937     */
938    @Child(name = "url", type = {UriType.class}, order=0, min=0, max=1, modifier=false, summary=true)
939    @Description(shortDefinition="Business Identifier for a given MessageDefinition", formalDefinition="The business identifier that is used to reference the MessageDefinition and *is* expected to be consistent from server to server." )
940    protected UriType url;
941
942    /**
943     * A formal identifier that is used to identify this message definition when it is represented in other formats, or referenced in a specification, model, design or an instance.
944     */
945    @Child(name = "identifier", type = {Identifier.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
946    @Description(shortDefinition="Primary key for the message definition on a given server", formalDefinition="A formal identifier that is used to identify this message definition when it is represented in other formats, or referenced in a specification, model, design or an instance." )
947    protected List<Identifier> identifier;
948
949    /**
950     * The identifier that is used to identify this version of the message definition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the message definition author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence.
951     */
952    @Child(name = "version", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=true)
953    @Description(shortDefinition="Business version of the message definition", formalDefinition="The identifier that is used to identify this version of the message definition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the message definition author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence." )
954    protected StringType version;
955
956    /**
957     * A natural language name identifying the message definition. This name should be usable as an identifier for the module by machine processing applications such as code generation.
958     */
959    @Child(name = "name", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=true)
960    @Description(shortDefinition="Name for this message definition (computer friendly)", formalDefinition="A natural language name identifying the message definition. This name should be usable as an identifier for the module by machine processing applications such as code generation." )
961    protected StringType name;
962
963    /**
964     * A short, descriptive, user-friendly title for the message definition.
965     */
966    @Child(name = "title", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=true)
967    @Description(shortDefinition="Name for this message definition (human friendly)", formalDefinition="A short, descriptive, user-friendly title for the message definition." )
968    protected StringType title;
969
970    /**
971     * A MessageDefinition that is superseded by this definition.
972     */
973    @Child(name = "replaces", type = {CanonicalType.class}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
974    @Description(shortDefinition="Takes the place of", formalDefinition="A MessageDefinition that is superseded by this definition." )
975    protected List<CanonicalType> replaces;
976
977    /**
978     * The status of this message definition. Enables tracking the life-cycle of the content.
979     */
980    @Child(name = "status", type = {CodeType.class}, order=6, min=1, max=1, modifier=true, summary=true)
981    @Description(shortDefinition="draft | active | retired | unknown", formalDefinition="The status of this message definition. Enables tracking the life-cycle of the content." )
982    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/publication-status")
983    protected Enumeration<PublicationStatus> status;
984
985    /**
986     * A Boolean value to indicate that this message definition is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.
987     */
988    @Child(name = "experimental", type = {BooleanType.class}, order=7, min=0, max=1, modifier=false, summary=true)
989    @Description(shortDefinition="For testing purposes, not real usage", formalDefinition="A Boolean value to indicate that this message definition is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage." )
990    protected BooleanType experimental;
991
992    /**
993     * The date  (and optionally time) when the message definition was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the message definition changes.
994     */
995    @Child(name = "date", type = {DateTimeType.class}, order=8, min=1, max=1, modifier=false, summary=true)
996    @Description(shortDefinition="Date last changed", formalDefinition="The date  (and optionally time) when the message definition was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the message definition changes." )
997    protected DateTimeType date;
998
999    /**
1000     * The name of the organization or individual that published the message definition.
1001     */
1002    @Child(name = "publisher", type = {StringType.class}, order=9, min=0, max=1, modifier=false, summary=true)
1003    @Description(shortDefinition="Name of the publisher (organization or individual)", formalDefinition="The name of the organization or individual that published the message definition." )
1004    protected StringType publisher;
1005
1006    /**
1007     * Contact details to assist a user in finding and communicating with the publisher.
1008     */
1009    @Child(name = "contact", type = {ContactDetail.class}, order=10, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1010    @Description(shortDefinition="Contact details for the publisher", formalDefinition="Contact details to assist a user in finding and communicating with the publisher." )
1011    protected List<ContactDetail> contact;
1012
1013    /**
1014     * A free text natural language description of the message definition from a consumer's perspective.
1015     */
1016    @Child(name = "description", type = {MarkdownType.class}, order=11, min=0, max=1, modifier=false, summary=true)
1017    @Description(shortDefinition="Natural language description of the message definition", formalDefinition="A free text natural language description of the message definition from a consumer's perspective." )
1018    protected MarkdownType description;
1019
1020    /**
1021     * The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate message definition instances.
1022     */
1023    @Child(name = "useContext", type = {UsageContext.class}, order=12, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1024    @Description(shortDefinition="The context that the content is intended to support", formalDefinition="The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate message definition instances." )
1025    protected List<UsageContext> useContext;
1026
1027    /**
1028     * A legal or geographic region in which the message definition is intended to be used.
1029     */
1030    @Child(name = "jurisdiction", type = {CodeableConcept.class}, order=13, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1031    @Description(shortDefinition="Intended jurisdiction for message definition (if applicable)", formalDefinition="A legal or geographic region in which the message definition is intended to be used." )
1032    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/jurisdiction")
1033    protected List<CodeableConcept> jurisdiction;
1034
1035    /**
1036     * Explanation of why this message definition is needed and why it has been designed as it has.
1037     */
1038    @Child(name = "purpose", type = {MarkdownType.class}, order=14, min=0, max=1, modifier=false, summary=true)
1039    @Description(shortDefinition="Why this message definition is defined", formalDefinition="Explanation of why this message definition is needed and why it has been designed as it has." )
1040    protected MarkdownType purpose;
1041
1042    /**
1043     * A copyright statement relating to the message definition and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the message definition.
1044     */
1045    @Child(name = "copyright", type = {MarkdownType.class}, order=15, min=0, max=1, modifier=false, summary=false)
1046    @Description(shortDefinition="Use and/or publishing restrictions", formalDefinition="A copyright statement relating to the message definition and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the message definition." )
1047    protected MarkdownType copyright;
1048
1049    /**
1050     * The MessageDefinition that is the basis for the contents of this resource.
1051     */
1052    @Child(name = "base", type = {CanonicalType.class}, order=16, min=0, max=1, modifier=false, summary=true)
1053    @Description(shortDefinition="Definition this one is based on", formalDefinition="The MessageDefinition that is the basis for the contents of this resource." )
1054    protected CanonicalType base;
1055
1056    /**
1057     * Identifies a protocol or workflow that this MessageDefinition represents a step in.
1058     */
1059    @Child(name = "parent", type = {CanonicalType.class}, order=17, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1060    @Description(shortDefinition="Protocol/workflow this is part of", formalDefinition="Identifies a protocol or workflow that this MessageDefinition represents a step in." )
1061    protected List<CanonicalType> parent;
1062
1063    /**
1064     * Event code or link to the EventDefinition.
1065     */
1066    @Child(name = "event", type = {Coding.class, UriType.class}, order=18, min=1, max=1, modifier=false, summary=true)
1067    @Description(shortDefinition="Event code  or link to the EventDefinition", formalDefinition="Event code or link to the EventDefinition." )
1068    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/message-events")
1069    protected DataType event;
1070
1071    /**
1072     * The impact of the content of the message.
1073     */
1074    @Child(name = "category", type = {CodeType.class}, order=19, min=0, max=1, modifier=false, summary=true)
1075    @Description(shortDefinition="consequence | currency | notification", formalDefinition="The impact of the content of the message." )
1076    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/message-significance-category")
1077    protected Enumeration<MessageSignificanceCategory> category;
1078
1079    /**
1080     * Identifies the resource (or resources) that are being addressed by the event.  For example, the Encounter for an admit message or two Account records for a merge.
1081     */
1082    @Child(name = "focus", type = {}, order=20, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1083    @Description(shortDefinition="Resource(s) that are the subject of the event", formalDefinition="Identifies the resource (or resources) that are being addressed by the event.  For example, the Encounter for an admit message or two Account records for a merge." )
1084    protected List<MessageDefinitionFocusComponent> focus;
1085
1086    /**
1087     * Declare at a message definition level whether a response is required or only upon error or success, or never.
1088     */
1089    @Child(name = "responseRequired", type = {CodeType.class}, order=21, min=0, max=1, modifier=false, summary=false)
1090    @Description(shortDefinition="always | on-error | never | on-success", formalDefinition="Declare at a message definition level whether a response is required or only upon error or success, or never." )
1091    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/messageheader-response-request")
1092    protected Enumeration<MessageheaderResponseRequest> responseRequired;
1093
1094    /**
1095     * Indicates what types of messages may be sent as an application-level response to this message.
1096     */
1097    @Child(name = "allowedResponse", type = {}, order=22, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1098    @Description(shortDefinition="Responses to this message", formalDefinition="Indicates what types of messages may be sent as an application-level response to this message." )
1099    protected List<MessageDefinitionAllowedResponseComponent> allowedResponse;
1100
1101    /**
1102     * Canonical reference to a GraphDefinition. If a URL is provided, it is the canonical reference to a [GraphDefinition](graphdefinition.html) that it controls what resources are to be added to the bundle when building the document. The GraphDefinition can also specify profiles that apply to the various resources.
1103     */
1104    @Child(name = "graph", type = {CanonicalType.class}, order=23, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1105    @Description(shortDefinition="Canonical reference to a GraphDefinition", formalDefinition="Canonical reference to a GraphDefinition. If a URL is provided, it is the canonical reference to a [GraphDefinition](graphdefinition.html) that it controls what resources are to be added to the bundle when building the document. The GraphDefinition can also specify profiles that apply to the various resources." )
1106    protected List<CanonicalType> graph;
1107
1108    private static final long serialVersionUID = -1567425385L;
1109
1110  /**
1111   * Constructor
1112   */
1113    public MessageDefinition() {
1114      super();
1115    }
1116
1117  /**
1118   * Constructor
1119   */
1120    public MessageDefinition(PublicationStatus status, Date date, DataType event) {
1121      super();
1122      this.setStatus(status);
1123      this.setDate(date);
1124      this.setEvent(event);
1125    }
1126
1127    /**
1128     * @return {@link #url} (The business identifier that is used to reference the MessageDefinition and *is* expected to be consistent from server to server.). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
1129     */
1130    public UriType getUrlElement() { 
1131      if (this.url == null)
1132        if (Configuration.errorOnAutoCreate())
1133          throw new Error("Attempt to auto-create MessageDefinition.url");
1134        else if (Configuration.doAutoCreate())
1135          this.url = new UriType(); // bb
1136      return this.url;
1137    }
1138
1139    public boolean hasUrlElement() { 
1140      return this.url != null && !this.url.isEmpty();
1141    }
1142
1143    public boolean hasUrl() { 
1144      return this.url != null && !this.url.isEmpty();
1145    }
1146
1147    /**
1148     * @param value {@link #url} (The business identifier that is used to reference the MessageDefinition and *is* expected to be consistent from server to server.). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
1149     */
1150    public MessageDefinition setUrlElement(UriType value) { 
1151      this.url = value;
1152      return this;
1153    }
1154
1155    /**
1156     * @return The business identifier that is used to reference the MessageDefinition and *is* expected to be consistent from server to server.
1157     */
1158    public String getUrl() { 
1159      return this.url == null ? null : this.url.getValue();
1160    }
1161
1162    /**
1163     * @param value The business identifier that is used to reference the MessageDefinition and *is* expected to be consistent from server to server.
1164     */
1165    public MessageDefinition setUrl(String value) { 
1166      if (Utilities.noString(value))
1167        this.url = null;
1168      else {
1169        if (this.url == null)
1170          this.url = new UriType();
1171        this.url.setValue(value);
1172      }
1173      return this;
1174    }
1175
1176    /**
1177     * @return {@link #identifier} (A formal identifier that is used to identify this message definition when it is represented in other formats, or referenced in a specification, model, design or an instance.)
1178     */
1179    public List<Identifier> getIdentifier() { 
1180      if (this.identifier == null)
1181        this.identifier = new ArrayList<Identifier>();
1182      return this.identifier;
1183    }
1184
1185    /**
1186     * @return Returns a reference to <code>this</code> for easy method chaining
1187     */
1188    public MessageDefinition setIdentifier(List<Identifier> theIdentifier) { 
1189      this.identifier = theIdentifier;
1190      return this;
1191    }
1192
1193    public boolean hasIdentifier() { 
1194      if (this.identifier == null)
1195        return false;
1196      for (Identifier item : this.identifier)
1197        if (!item.isEmpty())
1198          return true;
1199      return false;
1200    }
1201
1202    public Identifier addIdentifier() { //3
1203      Identifier t = new Identifier();
1204      if (this.identifier == null)
1205        this.identifier = new ArrayList<Identifier>();
1206      this.identifier.add(t);
1207      return t;
1208    }
1209
1210    public MessageDefinition addIdentifier(Identifier t) { //3
1211      if (t == null)
1212        return this;
1213      if (this.identifier == null)
1214        this.identifier = new ArrayList<Identifier>();
1215      this.identifier.add(t);
1216      return this;
1217    }
1218
1219    /**
1220     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {3}
1221     */
1222    public Identifier getIdentifierFirstRep() { 
1223      if (getIdentifier().isEmpty()) {
1224        addIdentifier();
1225      }
1226      return getIdentifier().get(0);
1227    }
1228
1229    /**
1230     * @return {@link #version} (The identifier that is used to identify this version of the message definition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the message definition author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence.). This is the underlying object with id, value and extensions. The accessor "getVersion" gives direct access to the value
1231     */
1232    public StringType getVersionElement() { 
1233      if (this.version == null)
1234        if (Configuration.errorOnAutoCreate())
1235          throw new Error("Attempt to auto-create MessageDefinition.version");
1236        else if (Configuration.doAutoCreate())
1237          this.version = new StringType(); // bb
1238      return this.version;
1239    }
1240
1241    public boolean hasVersionElement() { 
1242      return this.version != null && !this.version.isEmpty();
1243    }
1244
1245    public boolean hasVersion() { 
1246      return this.version != null && !this.version.isEmpty();
1247    }
1248
1249    /**
1250     * @param value {@link #version} (The identifier that is used to identify this version of the message definition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the message definition author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence.). This is the underlying object with id, value and extensions. The accessor "getVersion" gives direct access to the value
1251     */
1252    public MessageDefinition setVersionElement(StringType value) { 
1253      this.version = value;
1254      return this;
1255    }
1256
1257    /**
1258     * @return The identifier that is used to identify this version of the message definition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the message definition author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence.
1259     */
1260    public String getVersion() { 
1261      return this.version == null ? null : this.version.getValue();
1262    }
1263
1264    /**
1265     * @param value The identifier that is used to identify this version of the message definition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the message definition author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence.
1266     */
1267    public MessageDefinition setVersion(String value) { 
1268      if (Utilities.noString(value))
1269        this.version = null;
1270      else {
1271        if (this.version == null)
1272          this.version = new StringType();
1273        this.version.setValue(value);
1274      }
1275      return this;
1276    }
1277
1278    /**
1279     * @return {@link #name} (A natural language name identifying the message definition. This name should be usable as an identifier for the module by machine processing applications such as code generation.). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
1280     */
1281    public StringType getNameElement() { 
1282      if (this.name == null)
1283        if (Configuration.errorOnAutoCreate())
1284          throw new Error("Attempt to auto-create MessageDefinition.name");
1285        else if (Configuration.doAutoCreate())
1286          this.name = new StringType(); // bb
1287      return this.name;
1288    }
1289
1290    public boolean hasNameElement() { 
1291      return this.name != null && !this.name.isEmpty();
1292    }
1293
1294    public boolean hasName() { 
1295      return this.name != null && !this.name.isEmpty();
1296    }
1297
1298    /**
1299     * @param value {@link #name} (A natural language name identifying the message definition. This name should be usable as an identifier for the module by machine processing applications such as code generation.). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
1300     */
1301    public MessageDefinition setNameElement(StringType value) { 
1302      this.name = value;
1303      return this;
1304    }
1305
1306    /**
1307     * @return A natural language name identifying the message definition. This name should be usable as an identifier for the module by machine processing applications such as code generation.
1308     */
1309    public String getName() { 
1310      return this.name == null ? null : this.name.getValue();
1311    }
1312
1313    /**
1314     * @param value A natural language name identifying the message definition. This name should be usable as an identifier for the module by machine processing applications such as code generation.
1315     */
1316    public MessageDefinition setName(String value) { 
1317      if (Utilities.noString(value))
1318        this.name = null;
1319      else {
1320        if (this.name == null)
1321          this.name = new StringType();
1322        this.name.setValue(value);
1323      }
1324      return this;
1325    }
1326
1327    /**
1328     * @return {@link #title} (A short, descriptive, user-friendly title for the message definition.). This is the underlying object with id, value and extensions. The accessor "getTitle" gives direct access to the value
1329     */
1330    public StringType getTitleElement() { 
1331      if (this.title == null)
1332        if (Configuration.errorOnAutoCreate())
1333          throw new Error("Attempt to auto-create MessageDefinition.title");
1334        else if (Configuration.doAutoCreate())
1335          this.title = new StringType(); // bb
1336      return this.title;
1337    }
1338
1339    public boolean hasTitleElement() { 
1340      return this.title != null && !this.title.isEmpty();
1341    }
1342
1343    public boolean hasTitle() { 
1344      return this.title != null && !this.title.isEmpty();
1345    }
1346
1347    /**
1348     * @param value {@link #title} (A short, descriptive, user-friendly title for the message definition.). This is the underlying object with id, value and extensions. The accessor "getTitle" gives direct access to the value
1349     */
1350    public MessageDefinition setTitleElement(StringType value) { 
1351      this.title = value;
1352      return this;
1353    }
1354
1355    /**
1356     * @return A short, descriptive, user-friendly title for the message definition.
1357     */
1358    public String getTitle() { 
1359      return this.title == null ? null : this.title.getValue();
1360    }
1361
1362    /**
1363     * @param value A short, descriptive, user-friendly title for the message definition.
1364     */
1365    public MessageDefinition setTitle(String value) { 
1366      if (Utilities.noString(value))
1367        this.title = null;
1368      else {
1369        if (this.title == null)
1370          this.title = new StringType();
1371        this.title.setValue(value);
1372      }
1373      return this;
1374    }
1375
1376    /**
1377     * @return {@link #replaces} (A MessageDefinition that is superseded by this definition.)
1378     */
1379    public List<CanonicalType> getReplaces() { 
1380      if (this.replaces == null)
1381        this.replaces = new ArrayList<CanonicalType>();
1382      return this.replaces;
1383    }
1384
1385    /**
1386     * @return Returns a reference to <code>this</code> for easy method chaining
1387     */
1388    public MessageDefinition setReplaces(List<CanonicalType> theReplaces) { 
1389      this.replaces = theReplaces;
1390      return this;
1391    }
1392
1393    public boolean hasReplaces() { 
1394      if (this.replaces == null)
1395        return false;
1396      for (CanonicalType item : this.replaces)
1397        if (!item.isEmpty())
1398          return true;
1399      return false;
1400    }
1401
1402    /**
1403     * @return {@link #replaces} (A MessageDefinition that is superseded by this definition.)
1404     */
1405    public CanonicalType addReplacesElement() {//2 
1406      CanonicalType t = new CanonicalType();
1407      if (this.replaces == null)
1408        this.replaces = new ArrayList<CanonicalType>();
1409      this.replaces.add(t);
1410      return t;
1411    }
1412
1413    /**
1414     * @param value {@link #replaces} (A MessageDefinition that is superseded by this definition.)
1415     */
1416    public MessageDefinition addReplaces(String value) { //1
1417      CanonicalType t = new CanonicalType();
1418      t.setValue(value);
1419      if (this.replaces == null)
1420        this.replaces = new ArrayList<CanonicalType>();
1421      this.replaces.add(t);
1422      return this;
1423    }
1424
1425    /**
1426     * @param value {@link #replaces} (A MessageDefinition that is superseded by this definition.)
1427     */
1428    public boolean hasReplaces(String value) { 
1429      if (this.replaces == null)
1430        return false;
1431      for (CanonicalType v : this.replaces)
1432        if (v.getValue().equals(value)) // canonical
1433          return true;
1434      return false;
1435    }
1436
1437    /**
1438     * @return {@link #status} (The status of this message definition. Enables tracking the life-cycle of the content.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
1439     */
1440    public Enumeration<PublicationStatus> getStatusElement() { 
1441      if (this.status == null)
1442        if (Configuration.errorOnAutoCreate())
1443          throw new Error("Attempt to auto-create MessageDefinition.status");
1444        else if (Configuration.doAutoCreate())
1445          this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory()); // bb
1446      return this.status;
1447    }
1448
1449    public boolean hasStatusElement() { 
1450      return this.status != null && !this.status.isEmpty();
1451    }
1452
1453    public boolean hasStatus() { 
1454      return this.status != null && !this.status.isEmpty();
1455    }
1456
1457    /**
1458     * @param value {@link #status} (The status of this message definition. Enables tracking the life-cycle of the content.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
1459     */
1460    public MessageDefinition setStatusElement(Enumeration<PublicationStatus> value) { 
1461      this.status = value;
1462      return this;
1463    }
1464
1465    /**
1466     * @return The status of this message definition. Enables tracking the life-cycle of the content.
1467     */
1468    public PublicationStatus getStatus() { 
1469      return this.status == null ? null : this.status.getValue();
1470    }
1471
1472    /**
1473     * @param value The status of this message definition. Enables tracking the life-cycle of the content.
1474     */
1475    public MessageDefinition setStatus(PublicationStatus value) { 
1476        if (this.status == null)
1477          this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory());
1478        this.status.setValue(value);
1479      return this;
1480    }
1481
1482    /**
1483     * @return {@link #experimental} (A Boolean value to indicate that this message definition is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.). This is the underlying object with id, value and extensions. The accessor "getExperimental" gives direct access to the value
1484     */
1485    public BooleanType getExperimentalElement() { 
1486      if (this.experimental == null)
1487        if (Configuration.errorOnAutoCreate())
1488          throw new Error("Attempt to auto-create MessageDefinition.experimental");
1489        else if (Configuration.doAutoCreate())
1490          this.experimental = new BooleanType(); // bb
1491      return this.experimental;
1492    }
1493
1494    public boolean hasExperimentalElement() { 
1495      return this.experimental != null && !this.experimental.isEmpty();
1496    }
1497
1498    public boolean hasExperimental() { 
1499      return this.experimental != null && !this.experimental.isEmpty();
1500    }
1501
1502    /**
1503     * @param value {@link #experimental} (A Boolean value to indicate that this message definition is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.). This is the underlying object with id, value and extensions. The accessor "getExperimental" gives direct access to the value
1504     */
1505    public MessageDefinition setExperimentalElement(BooleanType value) { 
1506      this.experimental = value;
1507      return this;
1508    }
1509
1510    /**
1511     * @return A Boolean value to indicate that this message definition is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.
1512     */
1513    public boolean getExperimental() { 
1514      return this.experimental == null || this.experimental.isEmpty() ? false : this.experimental.getValue();
1515    }
1516
1517    /**
1518     * @param value A Boolean value to indicate that this message definition is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.
1519     */
1520    public MessageDefinition setExperimental(boolean value) { 
1521        if (this.experimental == null)
1522          this.experimental = new BooleanType();
1523        this.experimental.setValue(value);
1524      return this;
1525    }
1526
1527    /**
1528     * @return {@link #date} (The date  (and optionally time) when the message definition was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the message definition changes.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
1529     */
1530    public DateTimeType getDateElement() { 
1531      if (this.date == null)
1532        if (Configuration.errorOnAutoCreate())
1533          throw new Error("Attempt to auto-create MessageDefinition.date");
1534        else if (Configuration.doAutoCreate())
1535          this.date = new DateTimeType(); // bb
1536      return this.date;
1537    }
1538
1539    public boolean hasDateElement() { 
1540      return this.date != null && !this.date.isEmpty();
1541    }
1542
1543    public boolean hasDate() { 
1544      return this.date != null && !this.date.isEmpty();
1545    }
1546
1547    /**
1548     * @param value {@link #date} (The date  (and optionally time) when the message definition was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the message definition changes.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
1549     */
1550    public MessageDefinition setDateElement(DateTimeType value) { 
1551      this.date = value;
1552      return this;
1553    }
1554
1555    /**
1556     * @return The date  (and optionally time) when the message definition was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the message definition changes.
1557     */
1558    public Date getDate() { 
1559      return this.date == null ? null : this.date.getValue();
1560    }
1561
1562    /**
1563     * @param value The date  (and optionally time) when the message definition was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the message definition changes.
1564     */
1565    public MessageDefinition setDate(Date value) { 
1566        if (this.date == null)
1567          this.date = new DateTimeType();
1568        this.date.setValue(value);
1569      return this;
1570    }
1571
1572    /**
1573     * @return {@link #publisher} (The name of the organization or individual that published the message definition.). This is the underlying object with id, value and extensions. The accessor "getPublisher" gives direct access to the value
1574     */
1575    public StringType getPublisherElement() { 
1576      if (this.publisher == null)
1577        if (Configuration.errorOnAutoCreate())
1578          throw new Error("Attempt to auto-create MessageDefinition.publisher");
1579        else if (Configuration.doAutoCreate())
1580          this.publisher = new StringType(); // bb
1581      return this.publisher;
1582    }
1583
1584    public boolean hasPublisherElement() { 
1585      return this.publisher != null && !this.publisher.isEmpty();
1586    }
1587
1588    public boolean hasPublisher() { 
1589      return this.publisher != null && !this.publisher.isEmpty();
1590    }
1591
1592    /**
1593     * @param value {@link #publisher} (The name of the organization or individual that published the message definition.). This is the underlying object with id, value and extensions. The accessor "getPublisher" gives direct access to the value
1594     */
1595    public MessageDefinition setPublisherElement(StringType value) { 
1596      this.publisher = value;
1597      return this;
1598    }
1599
1600    /**
1601     * @return The name of the organization or individual that published the message definition.
1602     */
1603    public String getPublisher() { 
1604      return this.publisher == null ? null : this.publisher.getValue();
1605    }
1606
1607    /**
1608     * @param value The name of the organization or individual that published the message definition.
1609     */
1610    public MessageDefinition setPublisher(String value) { 
1611      if (Utilities.noString(value))
1612        this.publisher = null;
1613      else {
1614        if (this.publisher == null)
1615          this.publisher = new StringType();
1616        this.publisher.setValue(value);
1617      }
1618      return this;
1619    }
1620
1621    /**
1622     * @return {@link #contact} (Contact details to assist a user in finding and communicating with the publisher.)
1623     */
1624    public List<ContactDetail> getContact() { 
1625      if (this.contact == null)
1626        this.contact = new ArrayList<ContactDetail>();
1627      return this.contact;
1628    }
1629
1630    /**
1631     * @return Returns a reference to <code>this</code> for easy method chaining
1632     */
1633    public MessageDefinition setContact(List<ContactDetail> theContact) { 
1634      this.contact = theContact;
1635      return this;
1636    }
1637
1638    public boolean hasContact() { 
1639      if (this.contact == null)
1640        return false;
1641      for (ContactDetail item : this.contact)
1642        if (!item.isEmpty())
1643          return true;
1644      return false;
1645    }
1646
1647    public ContactDetail addContact() { //3
1648      ContactDetail t = new ContactDetail();
1649      if (this.contact == null)
1650        this.contact = new ArrayList<ContactDetail>();
1651      this.contact.add(t);
1652      return t;
1653    }
1654
1655    public MessageDefinition addContact(ContactDetail t) { //3
1656      if (t == null)
1657        return this;
1658      if (this.contact == null)
1659        this.contact = new ArrayList<ContactDetail>();
1660      this.contact.add(t);
1661      return this;
1662    }
1663
1664    /**
1665     * @return The first repetition of repeating field {@link #contact}, creating it if it does not already exist {3}
1666     */
1667    public ContactDetail getContactFirstRep() { 
1668      if (getContact().isEmpty()) {
1669        addContact();
1670      }
1671      return getContact().get(0);
1672    }
1673
1674    /**
1675     * @return {@link #description} (A free text natural language description of the message definition from a consumer's perspective.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
1676     */
1677    public MarkdownType getDescriptionElement() { 
1678      if (this.description == null)
1679        if (Configuration.errorOnAutoCreate())
1680          throw new Error("Attempt to auto-create MessageDefinition.description");
1681        else if (Configuration.doAutoCreate())
1682          this.description = new MarkdownType(); // bb
1683      return this.description;
1684    }
1685
1686    public boolean hasDescriptionElement() { 
1687      return this.description != null && !this.description.isEmpty();
1688    }
1689
1690    public boolean hasDescription() { 
1691      return this.description != null && !this.description.isEmpty();
1692    }
1693
1694    /**
1695     * @param value {@link #description} (A free text natural language description of the message definition from a consumer's perspective.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
1696     */
1697    public MessageDefinition setDescriptionElement(MarkdownType value) { 
1698      this.description = value;
1699      return this;
1700    }
1701
1702    /**
1703     * @return A free text natural language description of the message definition from a consumer's perspective.
1704     */
1705    public String getDescription() { 
1706      return this.description == null ? null : this.description.getValue();
1707    }
1708
1709    /**
1710     * @param value A free text natural language description of the message definition from a consumer's perspective.
1711     */
1712    public MessageDefinition setDescription(String value) { 
1713      if (value == null)
1714        this.description = null;
1715      else {
1716        if (this.description == null)
1717          this.description = new MarkdownType();
1718        this.description.setValue(value);
1719      }
1720      return this;
1721    }
1722
1723    /**
1724     * @return {@link #useContext} (The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate message definition instances.)
1725     */
1726    public List<UsageContext> getUseContext() { 
1727      if (this.useContext == null)
1728        this.useContext = new ArrayList<UsageContext>();
1729      return this.useContext;
1730    }
1731
1732    /**
1733     * @return Returns a reference to <code>this</code> for easy method chaining
1734     */
1735    public MessageDefinition setUseContext(List<UsageContext> theUseContext) { 
1736      this.useContext = theUseContext;
1737      return this;
1738    }
1739
1740    public boolean hasUseContext() { 
1741      if (this.useContext == null)
1742        return false;
1743      for (UsageContext item : this.useContext)
1744        if (!item.isEmpty())
1745          return true;
1746      return false;
1747    }
1748
1749    public UsageContext addUseContext() { //3
1750      UsageContext t = new UsageContext();
1751      if (this.useContext == null)
1752        this.useContext = new ArrayList<UsageContext>();
1753      this.useContext.add(t);
1754      return t;
1755    }
1756
1757    public MessageDefinition addUseContext(UsageContext t) { //3
1758      if (t == null)
1759        return this;
1760      if (this.useContext == null)
1761        this.useContext = new ArrayList<UsageContext>();
1762      this.useContext.add(t);
1763      return this;
1764    }
1765
1766    /**
1767     * @return The first repetition of repeating field {@link #useContext}, creating it if it does not already exist {3}
1768     */
1769    public UsageContext getUseContextFirstRep() { 
1770      if (getUseContext().isEmpty()) {
1771        addUseContext();
1772      }
1773      return getUseContext().get(0);
1774    }
1775
1776    /**
1777     * @return {@link #jurisdiction} (A legal or geographic region in which the message definition is intended to be used.)
1778     */
1779    public List<CodeableConcept> getJurisdiction() { 
1780      if (this.jurisdiction == null)
1781        this.jurisdiction = new ArrayList<CodeableConcept>();
1782      return this.jurisdiction;
1783    }
1784
1785    /**
1786     * @return Returns a reference to <code>this</code> for easy method chaining
1787     */
1788    public MessageDefinition setJurisdiction(List<CodeableConcept> theJurisdiction) { 
1789      this.jurisdiction = theJurisdiction;
1790      return this;
1791    }
1792
1793    public boolean hasJurisdiction() { 
1794      if (this.jurisdiction == null)
1795        return false;
1796      for (CodeableConcept item : this.jurisdiction)
1797        if (!item.isEmpty())
1798          return true;
1799      return false;
1800    }
1801
1802    public CodeableConcept addJurisdiction() { //3
1803      CodeableConcept t = new CodeableConcept();
1804      if (this.jurisdiction == null)
1805        this.jurisdiction = new ArrayList<CodeableConcept>();
1806      this.jurisdiction.add(t);
1807      return t;
1808    }
1809
1810    public MessageDefinition addJurisdiction(CodeableConcept t) { //3
1811      if (t == null)
1812        return this;
1813      if (this.jurisdiction == null)
1814        this.jurisdiction = new ArrayList<CodeableConcept>();
1815      this.jurisdiction.add(t);
1816      return this;
1817    }
1818
1819    /**
1820     * @return The first repetition of repeating field {@link #jurisdiction}, creating it if it does not already exist {3}
1821     */
1822    public CodeableConcept getJurisdictionFirstRep() { 
1823      if (getJurisdiction().isEmpty()) {
1824        addJurisdiction();
1825      }
1826      return getJurisdiction().get(0);
1827    }
1828
1829    /**
1830     * @return {@link #purpose} (Explanation of why this message definition is needed and why it has been designed as it has.). This is the underlying object with id, value and extensions. The accessor "getPurpose" gives direct access to the value
1831     */
1832    public MarkdownType getPurposeElement() { 
1833      if (this.purpose == null)
1834        if (Configuration.errorOnAutoCreate())
1835          throw new Error("Attempt to auto-create MessageDefinition.purpose");
1836        else if (Configuration.doAutoCreate())
1837          this.purpose = new MarkdownType(); // bb
1838      return this.purpose;
1839    }
1840
1841    public boolean hasPurposeElement() { 
1842      return this.purpose != null && !this.purpose.isEmpty();
1843    }
1844
1845    public boolean hasPurpose() { 
1846      return this.purpose != null && !this.purpose.isEmpty();
1847    }
1848
1849    /**
1850     * @param value {@link #purpose} (Explanation of why this message definition is needed and why it has been designed as it has.). This is the underlying object with id, value and extensions. The accessor "getPurpose" gives direct access to the value
1851     */
1852    public MessageDefinition setPurposeElement(MarkdownType value) { 
1853      this.purpose = value;
1854      return this;
1855    }
1856
1857    /**
1858     * @return Explanation of why this message definition is needed and why it has been designed as it has.
1859     */
1860    public String getPurpose() { 
1861      return this.purpose == null ? null : this.purpose.getValue();
1862    }
1863
1864    /**
1865     * @param value Explanation of why this message definition is needed and why it has been designed as it has.
1866     */
1867    public MessageDefinition setPurpose(String value) { 
1868      if (value == null)
1869        this.purpose = null;
1870      else {
1871        if (this.purpose == null)
1872          this.purpose = new MarkdownType();
1873        this.purpose.setValue(value);
1874      }
1875      return this;
1876    }
1877
1878    /**
1879     * @return {@link #copyright} (A copyright statement relating to the message definition and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the message definition.). This is the underlying object with id, value and extensions. The accessor "getCopyright" gives direct access to the value
1880     */
1881    public MarkdownType getCopyrightElement() { 
1882      if (this.copyright == null)
1883        if (Configuration.errorOnAutoCreate())
1884          throw new Error("Attempt to auto-create MessageDefinition.copyright");
1885        else if (Configuration.doAutoCreate())
1886          this.copyright = new MarkdownType(); // bb
1887      return this.copyright;
1888    }
1889
1890    public boolean hasCopyrightElement() { 
1891      return this.copyright != null && !this.copyright.isEmpty();
1892    }
1893
1894    public boolean hasCopyright() { 
1895      return this.copyright != null && !this.copyright.isEmpty();
1896    }
1897
1898    /**
1899     * @param value {@link #copyright} (A copyright statement relating to the message definition and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the message definition.). This is the underlying object with id, value and extensions. The accessor "getCopyright" gives direct access to the value
1900     */
1901    public MessageDefinition setCopyrightElement(MarkdownType value) { 
1902      this.copyright = value;
1903      return this;
1904    }
1905
1906    /**
1907     * @return A copyright statement relating to the message definition and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the message definition.
1908     */
1909    public String getCopyright() { 
1910      return this.copyright == null ? null : this.copyright.getValue();
1911    }
1912
1913    /**
1914     * @param value A copyright statement relating to the message definition and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the message definition.
1915     */
1916    public MessageDefinition setCopyright(String value) { 
1917      if (value == null)
1918        this.copyright = null;
1919      else {
1920        if (this.copyright == null)
1921          this.copyright = new MarkdownType();
1922        this.copyright.setValue(value);
1923      }
1924      return this;
1925    }
1926
1927    /**
1928     * @return {@link #base} (The MessageDefinition that is the basis for the contents of this resource.). This is the underlying object with id, value and extensions. The accessor "getBase" gives direct access to the value
1929     */
1930    public CanonicalType getBaseElement() { 
1931      if (this.base == null)
1932        if (Configuration.errorOnAutoCreate())
1933          throw new Error("Attempt to auto-create MessageDefinition.base");
1934        else if (Configuration.doAutoCreate())
1935          this.base = new CanonicalType(); // bb
1936      return this.base;
1937    }
1938
1939    public boolean hasBaseElement() { 
1940      return this.base != null && !this.base.isEmpty();
1941    }
1942
1943    public boolean hasBase() { 
1944      return this.base != null && !this.base.isEmpty();
1945    }
1946
1947    /**
1948     * @param value {@link #base} (The MessageDefinition that is the basis for the contents of this resource.). This is the underlying object with id, value and extensions. The accessor "getBase" gives direct access to the value
1949     */
1950    public MessageDefinition setBaseElement(CanonicalType value) { 
1951      this.base = value;
1952      return this;
1953    }
1954
1955    /**
1956     * @return The MessageDefinition that is the basis for the contents of this resource.
1957     */
1958    public String getBase() { 
1959      return this.base == null ? null : this.base.getValue();
1960    }
1961
1962    /**
1963     * @param value The MessageDefinition that is the basis for the contents of this resource.
1964     */
1965    public MessageDefinition setBase(String value) { 
1966      if (Utilities.noString(value))
1967        this.base = null;
1968      else {
1969        if (this.base == null)
1970          this.base = new CanonicalType();
1971        this.base.setValue(value);
1972      }
1973      return this;
1974    }
1975
1976    /**
1977     * @return {@link #parent} (Identifies a protocol or workflow that this MessageDefinition represents a step in.)
1978     */
1979    public List<CanonicalType> getParent() { 
1980      if (this.parent == null)
1981        this.parent = new ArrayList<CanonicalType>();
1982      return this.parent;
1983    }
1984
1985    /**
1986     * @return Returns a reference to <code>this</code> for easy method chaining
1987     */
1988    public MessageDefinition setParent(List<CanonicalType> theParent) { 
1989      this.parent = theParent;
1990      return this;
1991    }
1992
1993    public boolean hasParent() { 
1994      if (this.parent == null)
1995        return false;
1996      for (CanonicalType item : this.parent)
1997        if (!item.isEmpty())
1998          return true;
1999      return false;
2000    }
2001
2002    /**
2003     * @return {@link #parent} (Identifies a protocol or workflow that this MessageDefinition represents a step in.)
2004     */
2005    public CanonicalType addParentElement() {//2 
2006      CanonicalType t = new CanonicalType();
2007      if (this.parent == null)
2008        this.parent = new ArrayList<CanonicalType>();
2009      this.parent.add(t);
2010      return t;
2011    }
2012
2013    /**
2014     * @param value {@link #parent} (Identifies a protocol or workflow that this MessageDefinition represents a step in.)
2015     */
2016    public MessageDefinition addParent(String value) { //1
2017      CanonicalType t = new CanonicalType();
2018      t.setValue(value);
2019      if (this.parent == null)
2020        this.parent = new ArrayList<CanonicalType>();
2021      this.parent.add(t);
2022      return this;
2023    }
2024
2025    /**
2026     * @param value {@link #parent} (Identifies a protocol or workflow that this MessageDefinition represents a step in.)
2027     */
2028    public boolean hasParent(String value) { 
2029      if (this.parent == null)
2030        return false;
2031      for (CanonicalType v : this.parent)
2032        if (v.getValue().equals(value)) // canonical
2033          return true;
2034      return false;
2035    }
2036
2037    /**
2038     * @return {@link #event} (Event code or link to the EventDefinition.)
2039     */
2040    public DataType getEvent() { 
2041      return this.event;
2042    }
2043
2044    /**
2045     * @return {@link #event} (Event code or link to the EventDefinition.)
2046     */
2047    public Coding getEventCoding() throws FHIRException { 
2048      if (this.event == null)
2049        this.event = new Coding();
2050      if (!(this.event instanceof Coding))
2051        throw new FHIRException("Type mismatch: the type Coding was expected, but "+this.event.getClass().getName()+" was encountered");
2052      return (Coding) this.event;
2053    }
2054
2055    public boolean hasEventCoding() { 
2056      return this != null && this.event instanceof Coding;
2057    }
2058
2059    /**
2060     * @return {@link #event} (Event code or link to the EventDefinition.)
2061     */
2062    public UriType getEventUriType() throws FHIRException { 
2063      if (this.event == null)
2064        this.event = new UriType();
2065      if (!(this.event instanceof UriType))
2066        throw new FHIRException("Type mismatch: the type UriType was expected, but "+this.event.getClass().getName()+" was encountered");
2067      return (UriType) this.event;
2068    }
2069
2070    public boolean hasEventUriType() { 
2071      return this != null && this.event instanceof UriType;
2072    }
2073
2074    public boolean hasEvent() { 
2075      return this.event != null && !this.event.isEmpty();
2076    }
2077
2078    /**
2079     * @param value {@link #event} (Event code or link to the EventDefinition.)
2080     */
2081    public MessageDefinition setEvent(DataType value) { 
2082      if (value != null && !(value instanceof Coding || value instanceof UriType))
2083        throw new Error("Not the right type for MessageDefinition.event[x]: "+value.fhirType());
2084      this.event = value;
2085      return this;
2086    }
2087
2088    /**
2089     * @return {@link #category} (The impact of the content of the message.). This is the underlying object with id, value and extensions. The accessor "getCategory" gives direct access to the value
2090     */
2091    public Enumeration<MessageSignificanceCategory> getCategoryElement() { 
2092      if (this.category == null)
2093        if (Configuration.errorOnAutoCreate())
2094          throw new Error("Attempt to auto-create MessageDefinition.category");
2095        else if (Configuration.doAutoCreate())
2096          this.category = new Enumeration<MessageSignificanceCategory>(new MessageSignificanceCategoryEnumFactory()); // bb
2097      return this.category;
2098    }
2099
2100    public boolean hasCategoryElement() { 
2101      return this.category != null && !this.category.isEmpty();
2102    }
2103
2104    public boolean hasCategory() { 
2105      return this.category != null && !this.category.isEmpty();
2106    }
2107
2108    /**
2109     * @param value {@link #category} (The impact of the content of the message.). This is the underlying object with id, value and extensions. The accessor "getCategory" gives direct access to the value
2110     */
2111    public MessageDefinition setCategoryElement(Enumeration<MessageSignificanceCategory> value) { 
2112      this.category = value;
2113      return this;
2114    }
2115
2116    /**
2117     * @return The impact of the content of the message.
2118     */
2119    public MessageSignificanceCategory getCategory() { 
2120      return this.category == null ? null : this.category.getValue();
2121    }
2122
2123    /**
2124     * @param value The impact of the content of the message.
2125     */
2126    public MessageDefinition setCategory(MessageSignificanceCategory value) { 
2127      if (value == null)
2128        this.category = null;
2129      else {
2130        if (this.category == null)
2131          this.category = new Enumeration<MessageSignificanceCategory>(new MessageSignificanceCategoryEnumFactory());
2132        this.category.setValue(value);
2133      }
2134      return this;
2135    }
2136
2137    /**
2138     * @return {@link #focus} (Identifies the resource (or resources) that are being addressed by the event.  For example, the Encounter for an admit message or two Account records for a merge.)
2139     */
2140    public List<MessageDefinitionFocusComponent> getFocus() { 
2141      if (this.focus == null)
2142        this.focus = new ArrayList<MessageDefinitionFocusComponent>();
2143      return this.focus;
2144    }
2145
2146    /**
2147     * @return Returns a reference to <code>this</code> for easy method chaining
2148     */
2149    public MessageDefinition setFocus(List<MessageDefinitionFocusComponent> theFocus) { 
2150      this.focus = theFocus;
2151      return this;
2152    }
2153
2154    public boolean hasFocus() { 
2155      if (this.focus == null)
2156        return false;
2157      for (MessageDefinitionFocusComponent item : this.focus)
2158        if (!item.isEmpty())
2159          return true;
2160      return false;
2161    }
2162
2163    public MessageDefinitionFocusComponent addFocus() { //3
2164      MessageDefinitionFocusComponent t = new MessageDefinitionFocusComponent();
2165      if (this.focus == null)
2166        this.focus = new ArrayList<MessageDefinitionFocusComponent>();
2167      this.focus.add(t);
2168      return t;
2169    }
2170
2171    public MessageDefinition addFocus(MessageDefinitionFocusComponent t) { //3
2172      if (t == null)
2173        return this;
2174      if (this.focus == null)
2175        this.focus = new ArrayList<MessageDefinitionFocusComponent>();
2176      this.focus.add(t);
2177      return this;
2178    }
2179
2180    /**
2181     * @return The first repetition of repeating field {@link #focus}, creating it if it does not already exist {3}
2182     */
2183    public MessageDefinitionFocusComponent getFocusFirstRep() { 
2184      if (getFocus().isEmpty()) {
2185        addFocus();
2186      }
2187      return getFocus().get(0);
2188    }
2189
2190    /**
2191     * @return {@link #responseRequired} (Declare at a message definition level whether a response is required or only upon error or success, or never.). This is the underlying object with id, value and extensions. The accessor "getResponseRequired" gives direct access to the value
2192     */
2193    public Enumeration<MessageheaderResponseRequest> getResponseRequiredElement() { 
2194      if (this.responseRequired == null)
2195        if (Configuration.errorOnAutoCreate())
2196          throw new Error("Attempt to auto-create MessageDefinition.responseRequired");
2197        else if (Configuration.doAutoCreate())
2198          this.responseRequired = new Enumeration<MessageheaderResponseRequest>(new MessageheaderResponseRequestEnumFactory()); // bb
2199      return this.responseRequired;
2200    }
2201
2202    public boolean hasResponseRequiredElement() { 
2203      return this.responseRequired != null && !this.responseRequired.isEmpty();
2204    }
2205
2206    public boolean hasResponseRequired() { 
2207      return this.responseRequired != null && !this.responseRequired.isEmpty();
2208    }
2209
2210    /**
2211     * @param value {@link #responseRequired} (Declare at a message definition level whether a response is required or only upon error or success, or never.). This is the underlying object with id, value and extensions. The accessor "getResponseRequired" gives direct access to the value
2212     */
2213    public MessageDefinition setResponseRequiredElement(Enumeration<MessageheaderResponseRequest> value) { 
2214      this.responseRequired = value;
2215      return this;
2216    }
2217
2218    /**
2219     * @return Declare at a message definition level whether a response is required or only upon error or success, or never.
2220     */
2221    public MessageheaderResponseRequest getResponseRequired() { 
2222      return this.responseRequired == null ? null : this.responseRequired.getValue();
2223    }
2224
2225    /**
2226     * @param value Declare at a message definition level whether a response is required or only upon error or success, or never.
2227     */
2228    public MessageDefinition setResponseRequired(MessageheaderResponseRequest value) { 
2229      if (value == null)
2230        this.responseRequired = null;
2231      else {
2232        if (this.responseRequired == null)
2233          this.responseRequired = new Enumeration<MessageheaderResponseRequest>(new MessageheaderResponseRequestEnumFactory());
2234        this.responseRequired.setValue(value);
2235      }
2236      return this;
2237    }
2238
2239    /**
2240     * @return {@link #allowedResponse} (Indicates what types of messages may be sent as an application-level response to this message.)
2241     */
2242    public List<MessageDefinitionAllowedResponseComponent> getAllowedResponse() { 
2243      if (this.allowedResponse == null)
2244        this.allowedResponse = new ArrayList<MessageDefinitionAllowedResponseComponent>();
2245      return this.allowedResponse;
2246    }
2247
2248    /**
2249     * @return Returns a reference to <code>this</code> for easy method chaining
2250     */
2251    public MessageDefinition setAllowedResponse(List<MessageDefinitionAllowedResponseComponent> theAllowedResponse) { 
2252      this.allowedResponse = theAllowedResponse;
2253      return this;
2254    }
2255
2256    public boolean hasAllowedResponse() { 
2257      if (this.allowedResponse == null)
2258        return false;
2259      for (MessageDefinitionAllowedResponseComponent item : this.allowedResponse)
2260        if (!item.isEmpty())
2261          return true;
2262      return false;
2263    }
2264
2265    public MessageDefinitionAllowedResponseComponent addAllowedResponse() { //3
2266      MessageDefinitionAllowedResponseComponent t = new MessageDefinitionAllowedResponseComponent();
2267      if (this.allowedResponse == null)
2268        this.allowedResponse = new ArrayList<MessageDefinitionAllowedResponseComponent>();
2269      this.allowedResponse.add(t);
2270      return t;
2271    }
2272
2273    public MessageDefinition addAllowedResponse(MessageDefinitionAllowedResponseComponent t) { //3
2274      if (t == null)
2275        return this;
2276      if (this.allowedResponse == null)
2277        this.allowedResponse = new ArrayList<MessageDefinitionAllowedResponseComponent>();
2278      this.allowedResponse.add(t);
2279      return this;
2280    }
2281
2282    /**
2283     * @return The first repetition of repeating field {@link #allowedResponse}, creating it if it does not already exist {3}
2284     */
2285    public MessageDefinitionAllowedResponseComponent getAllowedResponseFirstRep() { 
2286      if (getAllowedResponse().isEmpty()) {
2287        addAllowedResponse();
2288      }
2289      return getAllowedResponse().get(0);
2290    }
2291
2292    /**
2293     * @return {@link #graph} (Canonical reference to a GraphDefinition. If a URL is provided, it is the canonical reference to a [GraphDefinition](graphdefinition.html) that it controls what resources are to be added to the bundle when building the document. The GraphDefinition can also specify profiles that apply to the various resources.)
2294     */
2295    public List<CanonicalType> getGraph() { 
2296      if (this.graph == null)
2297        this.graph = new ArrayList<CanonicalType>();
2298      return this.graph;
2299    }
2300
2301    /**
2302     * @return Returns a reference to <code>this</code> for easy method chaining
2303     */
2304    public MessageDefinition setGraph(List<CanonicalType> theGraph) { 
2305      this.graph = theGraph;
2306      return this;
2307    }
2308
2309    public boolean hasGraph() { 
2310      if (this.graph == null)
2311        return false;
2312      for (CanonicalType item : this.graph)
2313        if (!item.isEmpty())
2314          return true;
2315      return false;
2316    }
2317
2318    /**
2319     * @return {@link #graph} (Canonical reference to a GraphDefinition. If a URL is provided, it is the canonical reference to a [GraphDefinition](graphdefinition.html) that it controls what resources are to be added to the bundle when building the document. The GraphDefinition can also specify profiles that apply to the various resources.)
2320     */
2321    public CanonicalType addGraphElement() {//2 
2322      CanonicalType t = new CanonicalType();
2323      if (this.graph == null)
2324        this.graph = new ArrayList<CanonicalType>();
2325      this.graph.add(t);
2326      return t;
2327    }
2328
2329    /**
2330     * @param value {@link #graph} (Canonical reference to a GraphDefinition. If a URL is provided, it is the canonical reference to a [GraphDefinition](graphdefinition.html) that it controls what resources are to be added to the bundle when building the document. The GraphDefinition can also specify profiles that apply to the various resources.)
2331     */
2332    public MessageDefinition addGraph(String value) { //1
2333      CanonicalType t = new CanonicalType();
2334      t.setValue(value);
2335      if (this.graph == null)
2336        this.graph = new ArrayList<CanonicalType>();
2337      this.graph.add(t);
2338      return this;
2339    }
2340
2341    /**
2342     * @param value {@link #graph} (Canonical reference to a GraphDefinition. If a URL is provided, it is the canonical reference to a [GraphDefinition](graphdefinition.html) that it controls what resources are to be added to the bundle when building the document. The GraphDefinition can also specify profiles that apply to the various resources.)
2343     */
2344    public boolean hasGraph(String value) { 
2345      if (this.graph == null)
2346        return false;
2347      for (CanonicalType v : this.graph)
2348        if (v.getValue().equals(value)) // canonical
2349          return true;
2350      return false;
2351    }
2352
2353      protected void listChildren(List<Property> children) {
2354        super.listChildren(children);
2355        children.add(new Property("url", "uri", "The business identifier that is used to reference the MessageDefinition and *is* expected to be consistent from server to server.", 0, 1, url));
2356        children.add(new Property("identifier", "Identifier", "A formal identifier that is used to identify this message definition when it is represented in other formats, or referenced in a specification, model, design or an instance.", 0, java.lang.Integer.MAX_VALUE, identifier));
2357        children.add(new Property("version", "string", "The identifier that is used to identify this version of the message definition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the message definition author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence.", 0, 1, version));
2358        children.add(new Property("name", "string", "A natural language name identifying the message definition. This name should be usable as an identifier for the module by machine processing applications such as code generation.", 0, 1, name));
2359        children.add(new Property("title", "string", "A short, descriptive, user-friendly title for the message definition.", 0, 1, title));
2360        children.add(new Property("replaces", "canonical(MessageDefinition)", "A MessageDefinition that is superseded by this definition.", 0, java.lang.Integer.MAX_VALUE, replaces));
2361        children.add(new Property("status", "code", "The status of this message definition. Enables tracking the life-cycle of the content.", 0, 1, status));
2362        children.add(new Property("experimental", "boolean", "A Boolean value to indicate that this message definition is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.", 0, 1, experimental));
2363        children.add(new Property("date", "dateTime", "The date  (and optionally time) when the message definition was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the message definition changes.", 0, 1, date));
2364        children.add(new Property("publisher", "string", "The name of the organization or individual that published the message definition.", 0, 1, publisher));
2365        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));
2366        children.add(new Property("description", "markdown", "A free text natural language description of the message definition from a consumer's perspective.", 0, 1, description));
2367        children.add(new Property("useContext", "UsageContext", "The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate message definition instances.", 0, java.lang.Integer.MAX_VALUE, useContext));
2368        children.add(new Property("jurisdiction", "CodeableConcept", "A legal or geographic region in which the message definition is intended to be used.", 0, java.lang.Integer.MAX_VALUE, jurisdiction));
2369        children.add(new Property("purpose", "markdown", "Explanation of why this message definition is needed and why it has been designed as it has.", 0, 1, purpose));
2370        children.add(new Property("copyright", "markdown", "A copyright statement relating to the message definition and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the message definition.", 0, 1, copyright));
2371        children.add(new Property("base", "canonical(MessageDefinition)", "The MessageDefinition that is the basis for the contents of this resource.", 0, 1, base));
2372        children.add(new Property("parent", "canonical(ActivityDefinition|PlanDefinition)", "Identifies a protocol or workflow that this MessageDefinition represents a step in.", 0, java.lang.Integer.MAX_VALUE, parent));
2373        children.add(new Property("event[x]", "Coding|uri", "Event code or link to the EventDefinition.", 0, 1, event));
2374        children.add(new Property("category", "code", "The impact of the content of the message.", 0, 1, category));
2375        children.add(new Property("focus", "", "Identifies the resource (or resources) that are being addressed by the event.  For example, the Encounter for an admit message or two Account records for a merge.", 0, java.lang.Integer.MAX_VALUE, focus));
2376        children.add(new Property("responseRequired", "code", "Declare at a message definition level whether a response is required or only upon error or success, or never.", 0, 1, responseRequired));
2377        children.add(new Property("allowedResponse", "", "Indicates what types of messages may be sent as an application-level response to this message.", 0, java.lang.Integer.MAX_VALUE, allowedResponse));
2378        children.add(new Property("graph", "canonical(GraphDefinition)", "Canonical reference to a GraphDefinition. If a URL is provided, it is the canonical reference to a [GraphDefinition](graphdefinition.html) that it controls what resources are to be added to the bundle when building the document. The GraphDefinition can also specify profiles that apply to the various resources.", 0, java.lang.Integer.MAX_VALUE, graph));
2379      }
2380
2381      @Override
2382      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
2383        switch (_hash) {
2384        case 116079: /*url*/  return new Property("url", "uri", "The business identifier that is used to reference the MessageDefinition and *is* expected to be consistent from server to server.", 0, 1, url);
2385        case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "A formal identifier that is used to identify this message definition when it is represented in other formats, or referenced in a specification, model, design or an instance.", 0, java.lang.Integer.MAX_VALUE, identifier);
2386        case 351608024: /*version*/  return new Property("version", "string", "The identifier that is used to identify this version of the message definition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the message definition author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence.", 0, 1, version);
2387        case 3373707: /*name*/  return new Property("name", "string", "A natural language name identifying the message definition. This name should be usable as an identifier for the module by machine processing applications such as code generation.", 0, 1, name);
2388        case 110371416: /*title*/  return new Property("title", "string", "A short, descriptive, user-friendly title for the message definition.", 0, 1, title);
2389        case -430332865: /*replaces*/  return new Property("replaces", "canonical(MessageDefinition)", "A MessageDefinition that is superseded by this definition.", 0, java.lang.Integer.MAX_VALUE, replaces);
2390        case -892481550: /*status*/  return new Property("status", "code", "The status of this message definition. Enables tracking the life-cycle of the content.", 0, 1, status);
2391        case -404562712: /*experimental*/  return new Property("experimental", "boolean", "A Boolean value to indicate that this message definition is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.", 0, 1, experimental);
2392        case 3076014: /*date*/  return new Property("date", "dateTime", "The date  (and optionally time) when the message definition was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the message definition changes.", 0, 1, date);
2393        case 1447404028: /*publisher*/  return new Property("publisher", "string", "The name of the organization or individual that published the message definition.", 0, 1, publisher);
2394        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);
2395        case -1724546052: /*description*/  return new Property("description", "markdown", "A free text natural language description of the message definition from a consumer's perspective.", 0, 1, description);
2396        case -669707736: /*useContext*/  return new Property("useContext", "UsageContext", "The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate message definition instances.", 0, java.lang.Integer.MAX_VALUE, useContext);
2397        case -507075711: /*jurisdiction*/  return new Property("jurisdiction", "CodeableConcept", "A legal or geographic region in which the message definition is intended to be used.", 0, java.lang.Integer.MAX_VALUE, jurisdiction);
2398        case -220463842: /*purpose*/  return new Property("purpose", "markdown", "Explanation of why this message definition is needed and why it has been designed as it has.", 0, 1, purpose);
2399        case 1522889671: /*copyright*/  return new Property("copyright", "markdown", "A copyright statement relating to the message definition and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the message definition.", 0, 1, copyright);
2400        case 3016401: /*base*/  return new Property("base", "canonical(MessageDefinition)", "The MessageDefinition that is the basis for the contents of this resource.", 0, 1, base);
2401        case -995424086: /*parent*/  return new Property("parent", "canonical(ActivityDefinition|PlanDefinition)", "Identifies a protocol or workflow that this MessageDefinition represents a step in.", 0, java.lang.Integer.MAX_VALUE, parent);
2402        case 278115238: /*event[x]*/  return new Property("event[x]", "Coding|uri", "Event code or link to the EventDefinition.", 0, 1, event);
2403        case 96891546: /*event*/  return new Property("event[x]", "Coding|uri", "Event code or link to the EventDefinition.", 0, 1, event);
2404        case -355957084: /*eventCoding*/  return new Property("event[x]", "Coding", "Event code or link to the EventDefinition.", 0, 1, event);
2405        case 278109298: /*eventUri*/  return new Property("event[x]", "uri", "Event code or link to the EventDefinition.", 0, 1, event);
2406        case 50511102: /*category*/  return new Property("category", "code", "The impact of the content of the message.", 0, 1, category);
2407        case 97604824: /*focus*/  return new Property("focus", "", "Identifies the resource (or resources) that are being addressed by the event.  For example, the Encounter for an admit message or two Account records for a merge.", 0, java.lang.Integer.MAX_VALUE, focus);
2408        case 791597824: /*responseRequired*/  return new Property("responseRequired", "code", "Declare at a message definition level whether a response is required or only upon error or success, or never.", 0, 1, responseRequired);
2409        case -1130933751: /*allowedResponse*/  return new Property("allowedResponse", "", "Indicates what types of messages may be sent as an application-level response to this message.", 0, java.lang.Integer.MAX_VALUE, allowedResponse);
2410        case 98615630: /*graph*/  return new Property("graph", "canonical(GraphDefinition)", "Canonical reference to a GraphDefinition. If a URL is provided, it is the canonical reference to a [GraphDefinition](graphdefinition.html) that it controls what resources are to be added to the bundle when building the document. The GraphDefinition can also specify profiles that apply to the various resources.", 0, java.lang.Integer.MAX_VALUE, graph);
2411        default: return super.getNamedProperty(_hash, _name, _checkValid);
2412        }
2413
2414      }
2415
2416      @Override
2417      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
2418        switch (hash) {
2419        case 116079: /*url*/ return this.url == null ? new Base[0] : new Base[] {this.url}; // UriType
2420        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
2421        case 351608024: /*version*/ return this.version == null ? new Base[0] : new Base[] {this.version}; // StringType
2422        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
2423        case 110371416: /*title*/ return this.title == null ? new Base[0] : new Base[] {this.title}; // StringType
2424        case -430332865: /*replaces*/ return this.replaces == null ? new Base[0] : this.replaces.toArray(new Base[this.replaces.size()]); // CanonicalType
2425        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<PublicationStatus>
2426        case -404562712: /*experimental*/ return this.experimental == null ? new Base[0] : new Base[] {this.experimental}; // BooleanType
2427        case 3076014: /*date*/ return this.date == null ? new Base[0] : new Base[] {this.date}; // DateTimeType
2428        case 1447404028: /*publisher*/ return this.publisher == null ? new Base[0] : new Base[] {this.publisher}; // StringType
2429        case 951526432: /*contact*/ return this.contact == null ? new Base[0] : this.contact.toArray(new Base[this.contact.size()]); // ContactDetail
2430        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // MarkdownType
2431        case -669707736: /*useContext*/ return this.useContext == null ? new Base[0] : this.useContext.toArray(new Base[this.useContext.size()]); // UsageContext
2432        case -507075711: /*jurisdiction*/ return this.jurisdiction == null ? new Base[0] : this.jurisdiction.toArray(new Base[this.jurisdiction.size()]); // CodeableConcept
2433        case -220463842: /*purpose*/ return this.purpose == null ? new Base[0] : new Base[] {this.purpose}; // MarkdownType
2434        case 1522889671: /*copyright*/ return this.copyright == null ? new Base[0] : new Base[] {this.copyright}; // MarkdownType
2435        case 3016401: /*base*/ return this.base == null ? new Base[0] : new Base[] {this.base}; // CanonicalType
2436        case -995424086: /*parent*/ return this.parent == null ? new Base[0] : this.parent.toArray(new Base[this.parent.size()]); // CanonicalType
2437        case 96891546: /*event*/ return this.event == null ? new Base[0] : new Base[] {this.event}; // DataType
2438        case 50511102: /*category*/ return this.category == null ? new Base[0] : new Base[] {this.category}; // Enumeration<MessageSignificanceCategory>
2439        case 97604824: /*focus*/ return this.focus == null ? new Base[0] : this.focus.toArray(new Base[this.focus.size()]); // MessageDefinitionFocusComponent
2440        case 791597824: /*responseRequired*/ return this.responseRequired == null ? new Base[0] : new Base[] {this.responseRequired}; // Enumeration<MessageheaderResponseRequest>
2441        case -1130933751: /*allowedResponse*/ return this.allowedResponse == null ? new Base[0] : this.allowedResponse.toArray(new Base[this.allowedResponse.size()]); // MessageDefinitionAllowedResponseComponent
2442        case 98615630: /*graph*/ return this.graph == null ? new Base[0] : this.graph.toArray(new Base[this.graph.size()]); // CanonicalType
2443        default: return super.getProperty(hash, name, checkValid);
2444        }
2445
2446      }
2447
2448      @Override
2449      public Base setProperty(int hash, String name, Base value) throws FHIRException {
2450        switch (hash) {
2451        case 116079: // url
2452          this.url = TypeConvertor.castToUri(value); // UriType
2453          return value;
2454        case -1618432855: // identifier
2455          this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier
2456          return value;
2457        case 351608024: // version
2458          this.version = TypeConvertor.castToString(value); // StringType
2459          return value;
2460        case 3373707: // name
2461          this.name = TypeConvertor.castToString(value); // StringType
2462          return value;
2463        case 110371416: // title
2464          this.title = TypeConvertor.castToString(value); // StringType
2465          return value;
2466        case -430332865: // replaces
2467          this.getReplaces().add(TypeConvertor.castToCanonical(value)); // CanonicalType
2468          return value;
2469        case -892481550: // status
2470          value = new PublicationStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
2471          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
2472          return value;
2473        case -404562712: // experimental
2474          this.experimental = TypeConvertor.castToBoolean(value); // BooleanType
2475          return value;
2476        case 3076014: // date
2477          this.date = TypeConvertor.castToDateTime(value); // DateTimeType
2478          return value;
2479        case 1447404028: // publisher
2480          this.publisher = TypeConvertor.castToString(value); // StringType
2481          return value;
2482        case 951526432: // contact
2483          this.getContact().add(TypeConvertor.castToContactDetail(value)); // ContactDetail
2484          return value;
2485        case -1724546052: // description
2486          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
2487          return value;
2488        case -669707736: // useContext
2489          this.getUseContext().add(TypeConvertor.castToUsageContext(value)); // UsageContext
2490          return value;
2491        case -507075711: // jurisdiction
2492          this.getJurisdiction().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
2493          return value;
2494        case -220463842: // purpose
2495          this.purpose = TypeConvertor.castToMarkdown(value); // MarkdownType
2496          return value;
2497        case 1522889671: // copyright
2498          this.copyright = TypeConvertor.castToMarkdown(value); // MarkdownType
2499          return value;
2500        case 3016401: // base
2501          this.base = TypeConvertor.castToCanonical(value); // CanonicalType
2502          return value;
2503        case -995424086: // parent
2504          this.getParent().add(TypeConvertor.castToCanonical(value)); // CanonicalType
2505          return value;
2506        case 96891546: // event
2507          this.event = TypeConvertor.castToType(value); // DataType
2508          return value;
2509        case 50511102: // category
2510          value = new MessageSignificanceCategoryEnumFactory().fromType(TypeConvertor.castToCode(value));
2511          this.category = (Enumeration) value; // Enumeration<MessageSignificanceCategory>
2512          return value;
2513        case 97604824: // focus
2514          this.getFocus().add((MessageDefinitionFocusComponent) value); // MessageDefinitionFocusComponent
2515          return value;
2516        case 791597824: // responseRequired
2517          value = new MessageheaderResponseRequestEnumFactory().fromType(TypeConvertor.castToCode(value));
2518          this.responseRequired = (Enumeration) value; // Enumeration<MessageheaderResponseRequest>
2519          return value;
2520        case -1130933751: // allowedResponse
2521          this.getAllowedResponse().add((MessageDefinitionAllowedResponseComponent) value); // MessageDefinitionAllowedResponseComponent
2522          return value;
2523        case 98615630: // graph
2524          this.getGraph().add(TypeConvertor.castToCanonical(value)); // CanonicalType
2525          return value;
2526        default: return super.setProperty(hash, name, value);
2527        }
2528
2529      }
2530
2531      @Override
2532      public Base setProperty(String name, Base value) throws FHIRException {
2533        if (name.equals("url")) {
2534          this.url = TypeConvertor.castToUri(value); // UriType
2535        } else if (name.equals("identifier")) {
2536          this.getIdentifier().add(TypeConvertor.castToIdentifier(value));
2537        } else if (name.equals("version")) {
2538          this.version = TypeConvertor.castToString(value); // StringType
2539        } else if (name.equals("name")) {
2540          this.name = TypeConvertor.castToString(value); // StringType
2541        } else if (name.equals("title")) {
2542          this.title = TypeConvertor.castToString(value); // StringType
2543        } else if (name.equals("replaces")) {
2544          this.getReplaces().add(TypeConvertor.castToCanonical(value));
2545        } else if (name.equals("status")) {
2546          value = new PublicationStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
2547          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
2548        } else if (name.equals("experimental")) {
2549          this.experimental = TypeConvertor.castToBoolean(value); // BooleanType
2550        } else if (name.equals("date")) {
2551          this.date = TypeConvertor.castToDateTime(value); // DateTimeType
2552        } else if (name.equals("publisher")) {
2553          this.publisher = TypeConvertor.castToString(value); // StringType
2554        } else if (name.equals("contact")) {
2555          this.getContact().add(TypeConvertor.castToContactDetail(value));
2556        } else if (name.equals("description")) {
2557          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
2558        } else if (name.equals("useContext")) {
2559          this.getUseContext().add(TypeConvertor.castToUsageContext(value));
2560        } else if (name.equals("jurisdiction")) {
2561          this.getJurisdiction().add(TypeConvertor.castToCodeableConcept(value));
2562        } else if (name.equals("purpose")) {
2563          this.purpose = TypeConvertor.castToMarkdown(value); // MarkdownType
2564        } else if (name.equals("copyright")) {
2565          this.copyright = TypeConvertor.castToMarkdown(value); // MarkdownType
2566        } else if (name.equals("base")) {
2567          this.base = TypeConvertor.castToCanonical(value); // CanonicalType
2568        } else if (name.equals("parent")) {
2569          this.getParent().add(TypeConvertor.castToCanonical(value));
2570        } else if (name.equals("event[x]")) {
2571          this.event = TypeConvertor.castToType(value); // DataType
2572        } else if (name.equals("category")) {
2573          value = new MessageSignificanceCategoryEnumFactory().fromType(TypeConvertor.castToCode(value));
2574          this.category = (Enumeration) value; // Enumeration<MessageSignificanceCategory>
2575        } else if (name.equals("focus")) {
2576          this.getFocus().add((MessageDefinitionFocusComponent) value);
2577        } else if (name.equals("responseRequired")) {
2578          value = new MessageheaderResponseRequestEnumFactory().fromType(TypeConvertor.castToCode(value));
2579          this.responseRequired = (Enumeration) value; // Enumeration<MessageheaderResponseRequest>
2580        } else if (name.equals("allowedResponse")) {
2581          this.getAllowedResponse().add((MessageDefinitionAllowedResponseComponent) value);
2582        } else if (name.equals("graph")) {
2583          this.getGraph().add(TypeConvertor.castToCanonical(value));
2584        } else
2585          return super.setProperty(name, value);
2586        return value;
2587      }
2588
2589      @Override
2590      public Base makeProperty(int hash, String name) throws FHIRException {
2591        switch (hash) {
2592        case 116079:  return getUrlElement();
2593        case -1618432855:  return addIdentifier(); 
2594        case 351608024:  return getVersionElement();
2595        case 3373707:  return getNameElement();
2596        case 110371416:  return getTitleElement();
2597        case -430332865:  return addReplacesElement();
2598        case -892481550:  return getStatusElement();
2599        case -404562712:  return getExperimentalElement();
2600        case 3076014:  return getDateElement();
2601        case 1447404028:  return getPublisherElement();
2602        case 951526432:  return addContact(); 
2603        case -1724546052:  return getDescriptionElement();
2604        case -669707736:  return addUseContext(); 
2605        case -507075711:  return addJurisdiction(); 
2606        case -220463842:  return getPurposeElement();
2607        case 1522889671:  return getCopyrightElement();
2608        case 3016401:  return getBaseElement();
2609        case -995424086:  return addParentElement();
2610        case 278115238:  return getEvent();
2611        case 96891546:  return getEvent();
2612        case 50511102:  return getCategoryElement();
2613        case 97604824:  return addFocus(); 
2614        case 791597824:  return getResponseRequiredElement();
2615        case -1130933751:  return addAllowedResponse(); 
2616        case 98615630:  return addGraphElement();
2617        default: return super.makeProperty(hash, name);
2618        }
2619
2620      }
2621
2622      @Override
2623      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
2624        switch (hash) {
2625        case 116079: /*url*/ return new String[] {"uri"};
2626        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
2627        case 351608024: /*version*/ return new String[] {"string"};
2628        case 3373707: /*name*/ return new String[] {"string"};
2629        case 110371416: /*title*/ return new String[] {"string"};
2630        case -430332865: /*replaces*/ return new String[] {"canonical"};
2631        case -892481550: /*status*/ return new String[] {"code"};
2632        case -404562712: /*experimental*/ return new String[] {"boolean"};
2633        case 3076014: /*date*/ return new String[] {"dateTime"};
2634        case 1447404028: /*publisher*/ return new String[] {"string"};
2635        case 951526432: /*contact*/ return new String[] {"ContactDetail"};
2636        case -1724546052: /*description*/ return new String[] {"markdown"};
2637        case -669707736: /*useContext*/ return new String[] {"UsageContext"};
2638        case -507075711: /*jurisdiction*/ return new String[] {"CodeableConcept"};
2639        case -220463842: /*purpose*/ return new String[] {"markdown"};
2640        case 1522889671: /*copyright*/ return new String[] {"markdown"};
2641        case 3016401: /*base*/ return new String[] {"canonical"};
2642        case -995424086: /*parent*/ return new String[] {"canonical"};
2643        case 96891546: /*event*/ return new String[] {"Coding", "uri"};
2644        case 50511102: /*category*/ return new String[] {"code"};
2645        case 97604824: /*focus*/ return new String[] {};
2646        case 791597824: /*responseRequired*/ return new String[] {"code"};
2647        case -1130933751: /*allowedResponse*/ return new String[] {};
2648        case 98615630: /*graph*/ return new String[] {"canonical"};
2649        default: return super.getTypesForProperty(hash, name);
2650        }
2651
2652      }
2653
2654      @Override
2655      public Base addChild(String name) throws FHIRException {
2656        if (name.equals("url")) {
2657          throw new FHIRException("Cannot call addChild on a primitive type MessageDefinition.url");
2658        }
2659        else if (name.equals("identifier")) {
2660          return addIdentifier();
2661        }
2662        else if (name.equals("version")) {
2663          throw new FHIRException("Cannot call addChild on a primitive type MessageDefinition.version");
2664        }
2665        else if (name.equals("name")) {
2666          throw new FHIRException("Cannot call addChild on a primitive type MessageDefinition.name");
2667        }
2668        else if (name.equals("title")) {
2669          throw new FHIRException("Cannot call addChild on a primitive type MessageDefinition.title");
2670        }
2671        else if (name.equals("replaces")) {
2672          throw new FHIRException("Cannot call addChild on a primitive type MessageDefinition.replaces");
2673        }
2674        else if (name.equals("status")) {
2675          throw new FHIRException("Cannot call addChild on a primitive type MessageDefinition.status");
2676        }
2677        else if (name.equals("experimental")) {
2678          throw new FHIRException("Cannot call addChild on a primitive type MessageDefinition.experimental");
2679        }
2680        else if (name.equals("date")) {
2681          throw new FHIRException("Cannot call addChild on a primitive type MessageDefinition.date");
2682        }
2683        else if (name.equals("publisher")) {
2684          throw new FHIRException("Cannot call addChild on a primitive type MessageDefinition.publisher");
2685        }
2686        else if (name.equals("contact")) {
2687          return addContact();
2688        }
2689        else if (name.equals("description")) {
2690          throw new FHIRException("Cannot call addChild on a primitive type MessageDefinition.description");
2691        }
2692        else if (name.equals("useContext")) {
2693          return addUseContext();
2694        }
2695        else if (name.equals("jurisdiction")) {
2696          return addJurisdiction();
2697        }
2698        else if (name.equals("purpose")) {
2699          throw new FHIRException("Cannot call addChild on a primitive type MessageDefinition.purpose");
2700        }
2701        else if (name.equals("copyright")) {
2702          throw new FHIRException("Cannot call addChild on a primitive type MessageDefinition.copyright");
2703        }
2704        else if (name.equals("base")) {
2705          throw new FHIRException("Cannot call addChild on a primitive type MessageDefinition.base");
2706        }
2707        else if (name.equals("parent")) {
2708          throw new FHIRException("Cannot call addChild on a primitive type MessageDefinition.parent");
2709        }
2710        else if (name.equals("eventCoding")) {
2711          this.event = new Coding();
2712          return this.event;
2713        }
2714        else if (name.equals("eventUri")) {
2715          this.event = new UriType();
2716          return this.event;
2717        }
2718        else if (name.equals("category")) {
2719          throw new FHIRException("Cannot call addChild on a primitive type MessageDefinition.category");
2720        }
2721        else if (name.equals("focus")) {
2722          return addFocus();
2723        }
2724        else if (name.equals("responseRequired")) {
2725          throw new FHIRException("Cannot call addChild on a primitive type MessageDefinition.responseRequired");
2726        }
2727        else if (name.equals("allowedResponse")) {
2728          return addAllowedResponse();
2729        }
2730        else if (name.equals("graph")) {
2731          throw new FHIRException("Cannot call addChild on a primitive type MessageDefinition.graph");
2732        }
2733        else
2734          return super.addChild(name);
2735      }
2736
2737  public String fhirType() {
2738    return "MessageDefinition";
2739
2740  }
2741
2742      public MessageDefinition copy() {
2743        MessageDefinition dst = new MessageDefinition();
2744        copyValues(dst);
2745        return dst;
2746      }
2747
2748      public void copyValues(MessageDefinition dst) {
2749        super.copyValues(dst);
2750        dst.url = url == null ? null : url.copy();
2751        if (identifier != null) {
2752          dst.identifier = new ArrayList<Identifier>();
2753          for (Identifier i : identifier)
2754            dst.identifier.add(i.copy());
2755        };
2756        dst.version = version == null ? null : version.copy();
2757        dst.name = name == null ? null : name.copy();
2758        dst.title = title == null ? null : title.copy();
2759        if (replaces != null) {
2760          dst.replaces = new ArrayList<CanonicalType>();
2761          for (CanonicalType i : replaces)
2762            dst.replaces.add(i.copy());
2763        };
2764        dst.status = status == null ? null : status.copy();
2765        dst.experimental = experimental == null ? null : experimental.copy();
2766        dst.date = date == null ? null : date.copy();
2767        dst.publisher = publisher == null ? null : publisher.copy();
2768        if (contact != null) {
2769          dst.contact = new ArrayList<ContactDetail>();
2770          for (ContactDetail i : contact)
2771            dst.contact.add(i.copy());
2772        };
2773        dst.description = description == null ? null : description.copy();
2774        if (useContext != null) {
2775          dst.useContext = new ArrayList<UsageContext>();
2776          for (UsageContext i : useContext)
2777            dst.useContext.add(i.copy());
2778        };
2779        if (jurisdiction != null) {
2780          dst.jurisdiction = new ArrayList<CodeableConcept>();
2781          for (CodeableConcept i : jurisdiction)
2782            dst.jurisdiction.add(i.copy());
2783        };
2784        dst.purpose = purpose == null ? null : purpose.copy();
2785        dst.copyright = copyright == null ? null : copyright.copy();
2786        dst.base = base == null ? null : base.copy();
2787        if (parent != null) {
2788          dst.parent = new ArrayList<CanonicalType>();
2789          for (CanonicalType i : parent)
2790            dst.parent.add(i.copy());
2791        };
2792        dst.event = event == null ? null : event.copy();
2793        dst.category = category == null ? null : category.copy();
2794        if (focus != null) {
2795          dst.focus = new ArrayList<MessageDefinitionFocusComponent>();
2796          for (MessageDefinitionFocusComponent i : focus)
2797            dst.focus.add(i.copy());
2798        };
2799        dst.responseRequired = responseRequired == null ? null : responseRequired.copy();
2800        if (allowedResponse != null) {
2801          dst.allowedResponse = new ArrayList<MessageDefinitionAllowedResponseComponent>();
2802          for (MessageDefinitionAllowedResponseComponent i : allowedResponse)
2803            dst.allowedResponse.add(i.copy());
2804        };
2805        if (graph != null) {
2806          dst.graph = new ArrayList<CanonicalType>();
2807          for (CanonicalType i : graph)
2808            dst.graph.add(i.copy());
2809        };
2810      }
2811
2812      protected MessageDefinition typedCopy() {
2813        return copy();
2814      }
2815
2816      @Override
2817      public boolean equalsDeep(Base other_) {
2818        if (!super.equalsDeep(other_))
2819          return false;
2820        if (!(other_ instanceof MessageDefinition))
2821          return false;
2822        MessageDefinition o = (MessageDefinition) other_;
2823        return compareDeep(url, o.url, true) && compareDeep(identifier, o.identifier, true) && compareDeep(version, o.version, true)
2824           && compareDeep(name, o.name, true) && compareDeep(title, o.title, true) && compareDeep(replaces, o.replaces, true)
2825           && compareDeep(status, o.status, true) && compareDeep(experimental, o.experimental, true) && compareDeep(date, o.date, true)
2826           && compareDeep(publisher, o.publisher, true) && compareDeep(contact, o.contact, true) && compareDeep(description, o.description, true)
2827           && compareDeep(useContext, o.useContext, true) && compareDeep(jurisdiction, o.jurisdiction, true)
2828           && compareDeep(purpose, o.purpose, true) && compareDeep(copyright, o.copyright, true) && compareDeep(base, o.base, true)
2829           && compareDeep(parent, o.parent, true) && compareDeep(event, o.event, true) && compareDeep(category, o.category, true)
2830           && compareDeep(focus, o.focus, true) && compareDeep(responseRequired, o.responseRequired, true)
2831           && compareDeep(allowedResponse, o.allowedResponse, true) && compareDeep(graph, o.graph, true);
2832      }
2833
2834      @Override
2835      public boolean equalsShallow(Base other_) {
2836        if (!super.equalsShallow(other_))
2837          return false;
2838        if (!(other_ instanceof MessageDefinition))
2839          return false;
2840        MessageDefinition o = (MessageDefinition) other_;
2841        return compareValues(url, o.url, true) && compareValues(version, o.version, true) && compareValues(name, o.name, true)
2842           && compareValues(title, o.title, true) && compareValues(replaces, o.replaces, true) && compareValues(status, o.status, true)
2843           && compareValues(experimental, o.experimental, true) && compareValues(date, o.date, true) && compareValues(publisher, o.publisher, true)
2844           && compareValues(description, o.description, true) && compareValues(purpose, o.purpose, true) && compareValues(copyright, o.copyright, true)
2845           && compareValues(base, o.base, true) && compareValues(parent, o.parent, true) && compareValues(category, o.category, true)
2846           && compareValues(responseRequired, o.responseRequired, true) && compareValues(graph, o.graph, true)
2847          ;
2848      }
2849
2850      public boolean isEmpty() {
2851        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(url, identifier, version
2852          , name, title, replaces, status, experimental, date, publisher, contact, description
2853          , useContext, jurisdiction, purpose, copyright, base, parent, event, category
2854          , focus, responseRequired, allowedResponse, graph);
2855      }
2856
2857  @Override
2858  public ResourceType getResourceType() {
2859    return ResourceType.MessageDefinition;
2860   }
2861
2862 /**
2863   * Search parameter: <b>category</b>
2864   * <p>
2865   * Description: <b>The behavior associated with the message</b><br>
2866   * Type: <b>token</b><br>
2867   * Path: <b>MessageDefinition.category</b><br>
2868   * </p>
2869   */
2870  @SearchParamDefinition(name="category", path="MessageDefinition.category", description="The behavior associated with the message", type="token" )
2871  public static final String SP_CATEGORY = "category";
2872 /**
2873   * <b>Fluent Client</b> search parameter constant for <b>category</b>
2874   * <p>
2875   * Description: <b>The behavior associated with the message</b><br>
2876   * Type: <b>token</b><br>
2877   * Path: <b>MessageDefinition.category</b><br>
2878   * </p>
2879   */
2880  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CATEGORY = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CATEGORY);
2881
2882 /**
2883   * Search parameter: <b>event</b>
2884   * <p>
2885   * Description: <b>The event that triggers the message or link to the event definition.</b><br>
2886   * Type: <b>token</b><br>
2887   * Path: <b>MessageDefinition.event</b><br>
2888   * </p>
2889   */
2890  @SearchParamDefinition(name="event", path="MessageDefinition.event", description="The event that triggers the message or link to the event definition.", type="token" )
2891  public static final String SP_EVENT = "event";
2892 /**
2893   * <b>Fluent Client</b> search parameter constant for <b>event</b>
2894   * <p>
2895   * Description: <b>The event that triggers the message or link to the event definition.</b><br>
2896   * Type: <b>token</b><br>
2897   * Path: <b>MessageDefinition.event</b><br>
2898   * </p>
2899   */
2900  public static final ca.uhn.fhir.rest.gclient.TokenClientParam EVENT = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_EVENT);
2901
2902 /**
2903   * Search parameter: <b>focus</b>
2904   * <p>
2905   * Description: <b>A resource that is a permitted focus of the message</b><br>
2906   * Type: <b>token</b><br>
2907   * Path: <b>MessageDefinition.focus.code</b><br>
2908   * </p>
2909   */
2910  @SearchParamDefinition(name="focus", path="MessageDefinition.focus.code", description="A resource that is a permitted focus of the message", type="token" )
2911  public static final String SP_FOCUS = "focus";
2912 /**
2913   * <b>Fluent Client</b> search parameter constant for <b>focus</b>
2914   * <p>
2915   * Description: <b>A resource that is a permitted focus of the message</b><br>
2916   * Type: <b>token</b><br>
2917   * Path: <b>MessageDefinition.focus.code</b><br>
2918   * </p>
2919   */
2920  public static final ca.uhn.fhir.rest.gclient.TokenClientParam FOCUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_FOCUS);
2921
2922 /**
2923   * Search parameter: <b>parent</b>
2924   * <p>
2925   * Description: <b>A resource that is the parent of the definition</b><br>
2926   * Type: <b>reference</b><br>
2927   * Path: <b>MessageDefinition.parent</b><br>
2928   * </p>
2929   */
2930  @SearchParamDefinition(name="parent", path="MessageDefinition.parent", description="A resource that is the parent of the definition", type="reference", target={ActivityDefinition.class, PlanDefinition.class } )
2931  public static final String SP_PARENT = "parent";
2932 /**
2933   * <b>Fluent Client</b> search parameter constant for <b>parent</b>
2934   * <p>
2935   * Description: <b>A resource that is the parent of the definition</b><br>
2936   * Type: <b>reference</b><br>
2937   * Path: <b>MessageDefinition.parent</b><br>
2938   * </p>
2939   */
2940  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PARENT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PARENT);
2941
2942/**
2943   * Constant for fluent queries to be used to add include statements. Specifies
2944   * the path value of "<b>MessageDefinition:parent</b>".
2945   */
2946  public static final ca.uhn.fhir.model.api.Include INCLUDE_PARENT = new ca.uhn.fhir.model.api.Include("MessageDefinition:parent").toLocked();
2947
2948 /**
2949   * Search parameter: <b>context-quantity</b>
2950   * <p>
2951   * Description: <b>Multiple Resources: 
2952
2953* [CapabilityStatement](capabilitystatement.html): A quantity- or range-valued use context assigned to the capability statement
2954* [CodeSystem](codesystem.html): A quantity- or range-valued use context assigned to the code system
2955* [CompartmentDefinition](compartmentdefinition.html): A quantity- or range-valued use context assigned to the compartment definition
2956* [ConceptMap](conceptmap.html): A quantity- or range-valued use context assigned to the concept map
2957* [GraphDefinition](graphdefinition.html): A quantity- or range-valued use context assigned to the graph definition
2958* [ImplementationGuide](implementationguide.html): A quantity- or range-valued use context assigned to the implementation guide
2959* [MessageDefinition](messagedefinition.html): A quantity- or range-valued use context assigned to the message definition
2960* [NamingSystem](namingsystem.html): A quantity- or range-valued use context assigned to the naming system
2961* [OperationDefinition](operationdefinition.html): A quantity- or range-valued use context assigned to the operation definition
2962* [SearchParameter](searchparameter.html): A quantity- or range-valued use context assigned to the search parameter
2963* [StructureDefinition](structuredefinition.html): A quantity- or range-valued use context assigned to the structure definition
2964* [StructureMap](structuremap.html): A quantity- or range-valued use context assigned to the structure map
2965* [TerminologyCapabilities](terminologycapabilities.html): A quantity- or range-valued use context assigned to the terminology capabilities
2966* [ValueSet](valueset.html): A quantity- or range-valued use context assigned to the value set
2967</b><br>
2968   * Type: <b>quantity</b><br>
2969   * Path: <b>(CapabilityStatement.useContext.value as Quantity) | (CapabilityStatement.useContext.value as Range) | (CodeSystem.useContext.value as Quantity) | (CodeSystem.useContext.value as Range) | (CompartmentDefinition.useContext.value as Quantity) | (CompartmentDefinition.useContext.value as Range) | (ConceptMap.useContext.value as Quantity) | (ConceptMap.useContext.value as Range) | (GraphDefinition.useContext.value as Quantity) | (GraphDefinition.useContext.value as Range) | (ImplementationGuide.useContext.value as Quantity) | (ImplementationGuide.useContext.value as Range) | (MessageDefinition.useContext.value as Quantity) | (MessageDefinition.useContext.value as Range) | (NamingSystem.useContext.value as Quantity) | (NamingSystem.useContext.value as Range) | (OperationDefinition.useContext.value as Quantity) | (OperationDefinition.useContext.value as Range) | (SearchParameter.useContext.value as Quantity) | (SearchParameter.useContext.value as Range) | (StructureDefinition.useContext.value as Quantity) | (StructureDefinition.useContext.value as Range) | (StructureMap.useContext.value as Quantity) | (StructureMap.useContext.value as Range) | (TerminologyCapabilities.useContext.value as Quantity) | (TerminologyCapabilities.useContext.value as Range) | (ValueSet.useContext.value as Quantity) | (ValueSet.useContext.value as Range)</b><br>
2970   * </p>
2971   */
2972  @SearchParamDefinition(name="context-quantity", path="(CapabilityStatement.useContext.value as Quantity) | (CapabilityStatement.useContext.value as Range) | (CodeSystem.useContext.value as Quantity) | (CodeSystem.useContext.value as Range) | (CompartmentDefinition.useContext.value as Quantity) | (CompartmentDefinition.useContext.value as Range) | (ConceptMap.useContext.value as Quantity) | (ConceptMap.useContext.value as Range) | (GraphDefinition.useContext.value as Quantity) | (GraphDefinition.useContext.value as Range) | (ImplementationGuide.useContext.value as Quantity) | (ImplementationGuide.useContext.value as Range) | (MessageDefinition.useContext.value as Quantity) | (MessageDefinition.useContext.value as Range) | (NamingSystem.useContext.value as Quantity) | (NamingSystem.useContext.value as Range) | (OperationDefinition.useContext.value as Quantity) | (OperationDefinition.useContext.value as Range) | (SearchParameter.useContext.value as Quantity) | (SearchParameter.useContext.value as Range) | (StructureDefinition.useContext.value as Quantity) | (StructureDefinition.useContext.value as Range) | (StructureMap.useContext.value as Quantity) | (StructureMap.useContext.value as Range) | (TerminologyCapabilities.useContext.value as Quantity) | (TerminologyCapabilities.useContext.value as Range) | (ValueSet.useContext.value as Quantity) | (ValueSet.useContext.value as Range)", description="Multiple Resources: \r\n\r\n* [CapabilityStatement](capabilitystatement.html): A quantity- or range-valued use context assigned to the capability statement\r\n* [CodeSystem](codesystem.html): A quantity- or range-valued use context assigned to the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): A quantity- or range-valued use context assigned to the compartment definition\r\n* [ConceptMap](conceptmap.html): A quantity- or range-valued use context assigned to the concept map\r\n* [GraphDefinition](graphdefinition.html): A quantity- or range-valued use context assigned to the graph definition\r\n* [ImplementationGuide](implementationguide.html): A quantity- or range-valued use context assigned to the implementation guide\r\n* [MessageDefinition](messagedefinition.html): A quantity- or range-valued use context assigned to the message definition\r\n* [NamingSystem](namingsystem.html): A quantity- or range-valued use context assigned to the naming system\r\n* [OperationDefinition](operationdefinition.html): A quantity- or range-valued use context assigned to the operation definition\r\n* [SearchParameter](searchparameter.html): A quantity- or range-valued use context assigned to the search parameter\r\n* [StructureDefinition](structuredefinition.html): A quantity- or range-valued use context assigned to the structure definition\r\n* [StructureMap](structuremap.html): A quantity- or range-valued use context assigned to the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): A quantity- or range-valued use context assigned to the terminology capabilities\r\n* [ValueSet](valueset.html): A quantity- or range-valued use context assigned to the value set\r\n", type="quantity" )
2973  public static final String SP_CONTEXT_QUANTITY = "context-quantity";
2974 /**
2975   * <b>Fluent Client</b> search parameter constant for <b>context-quantity</b>
2976   * <p>
2977   * Description: <b>Multiple Resources: 
2978
2979* [CapabilityStatement](capabilitystatement.html): A quantity- or range-valued use context assigned to the capability statement
2980* [CodeSystem](codesystem.html): A quantity- or range-valued use context assigned to the code system
2981* [CompartmentDefinition](compartmentdefinition.html): A quantity- or range-valued use context assigned to the compartment definition
2982* [ConceptMap](conceptmap.html): A quantity- or range-valued use context assigned to the concept map
2983* [GraphDefinition](graphdefinition.html): A quantity- or range-valued use context assigned to the graph definition
2984* [ImplementationGuide](implementationguide.html): A quantity- or range-valued use context assigned to the implementation guide
2985* [MessageDefinition](messagedefinition.html): A quantity- or range-valued use context assigned to the message definition
2986* [NamingSystem](namingsystem.html): A quantity- or range-valued use context assigned to the naming system
2987* [OperationDefinition](operationdefinition.html): A quantity- or range-valued use context assigned to the operation definition
2988* [SearchParameter](searchparameter.html): A quantity- or range-valued use context assigned to the search parameter
2989* [StructureDefinition](structuredefinition.html): A quantity- or range-valued use context assigned to the structure definition
2990* [StructureMap](structuremap.html): A quantity- or range-valued use context assigned to the structure map
2991* [TerminologyCapabilities](terminologycapabilities.html): A quantity- or range-valued use context assigned to the terminology capabilities
2992* [ValueSet](valueset.html): A quantity- or range-valued use context assigned to the value set
2993</b><br>
2994   * Type: <b>quantity</b><br>
2995   * Path: <b>(CapabilityStatement.useContext.value as Quantity) | (CapabilityStatement.useContext.value as Range) | (CodeSystem.useContext.value as Quantity) | (CodeSystem.useContext.value as Range) | (CompartmentDefinition.useContext.value as Quantity) | (CompartmentDefinition.useContext.value as Range) | (ConceptMap.useContext.value as Quantity) | (ConceptMap.useContext.value as Range) | (GraphDefinition.useContext.value as Quantity) | (GraphDefinition.useContext.value as Range) | (ImplementationGuide.useContext.value as Quantity) | (ImplementationGuide.useContext.value as Range) | (MessageDefinition.useContext.value as Quantity) | (MessageDefinition.useContext.value as Range) | (NamingSystem.useContext.value as Quantity) | (NamingSystem.useContext.value as Range) | (OperationDefinition.useContext.value as Quantity) | (OperationDefinition.useContext.value as Range) | (SearchParameter.useContext.value as Quantity) | (SearchParameter.useContext.value as Range) | (StructureDefinition.useContext.value as Quantity) | (StructureDefinition.useContext.value as Range) | (StructureMap.useContext.value as Quantity) | (StructureMap.useContext.value as Range) | (TerminologyCapabilities.useContext.value as Quantity) | (TerminologyCapabilities.useContext.value as Range) | (ValueSet.useContext.value as Quantity) | (ValueSet.useContext.value as Range)</b><br>
2996   * </p>
2997   */
2998  public static final ca.uhn.fhir.rest.gclient.QuantityClientParam CONTEXT_QUANTITY = new ca.uhn.fhir.rest.gclient.QuantityClientParam(SP_CONTEXT_QUANTITY);
2999
3000 /**
3001   * Search parameter: <b>context-type-quantity</b>
3002   * <p>
3003   * Description: <b>Multiple Resources: 
3004
3005* [CapabilityStatement](capabilitystatement.html): A use context type and quantity- or range-based value assigned to the capability statement
3006* [CodeSystem](codesystem.html): A use context type and quantity- or range-based value assigned to the code system
3007* [CompartmentDefinition](compartmentdefinition.html): A use context type and quantity- or range-based value assigned to the compartment definition
3008* [ConceptMap](conceptmap.html): A use context type and quantity- or range-based value assigned to the concept map
3009* [GraphDefinition](graphdefinition.html): A use context type and quantity- or range-based value assigned to the graph definition
3010* [ImplementationGuide](implementationguide.html): A use context type and quantity- or range-based value assigned to the implementation guide
3011* [MessageDefinition](messagedefinition.html): A use context type and quantity- or range-based value assigned to the message definition
3012* [NamingSystem](namingsystem.html): A use context type and quantity- or range-based value assigned to the naming system
3013* [OperationDefinition](operationdefinition.html): A use context type and quantity- or range-based value assigned to the operation definition
3014* [SearchParameter](searchparameter.html): A use context type and quantity- or range-based value assigned to the search parameter
3015* [StructureDefinition](structuredefinition.html): A use context type and quantity- or range-based value assigned to the structure definition
3016* [StructureMap](structuremap.html): A use context type and quantity- or range-based value assigned to the structure map
3017* [TerminologyCapabilities](terminologycapabilities.html): A use context type and quantity- or range-based value assigned to the terminology capabilities
3018* [ValueSet](valueset.html): A use context type and quantity- or range-based value assigned to the value set
3019</b><br>
3020   * Type: <b>composite</b><br>
3021   * Path: <b>CapabilityStatement.useContext | CodeSystem.useContext | CompartmentDefinition.useContext | ConceptMap.useContext | GraphDefinition.useContext | ImplementationGuide.useContext | MessageDefinition.useContext | NamingSystem.useContext | OperationDefinition.useContext | SearchParameter.useContext | StructureDefinition.useContext | StructureMap.useContext | TerminologyCapabilities.useContext | ValueSet.useContext</b><br>
3022   * </p>
3023   */
3024  @SearchParamDefinition(name="context-type-quantity", path="CapabilityStatement.useContext | CodeSystem.useContext | CompartmentDefinition.useContext | ConceptMap.useContext | GraphDefinition.useContext | ImplementationGuide.useContext | MessageDefinition.useContext | NamingSystem.useContext | OperationDefinition.useContext | SearchParameter.useContext | StructureDefinition.useContext | StructureMap.useContext | TerminologyCapabilities.useContext | ValueSet.useContext", description="Multiple Resources: \r\n\r\n* [CapabilityStatement](capabilitystatement.html): A use context type and quantity- or range-based value assigned to the capability statement\r\n* [CodeSystem](codesystem.html): A use context type and quantity- or range-based value assigned to the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): A use context type and quantity- or range-based value assigned to the compartment definition\r\n* [ConceptMap](conceptmap.html): A use context type and quantity- or range-based value assigned to the concept map\r\n* [GraphDefinition](graphdefinition.html): A use context type and quantity- or range-based value assigned to the graph definition\r\n* [ImplementationGuide](implementationguide.html): A use context type and quantity- or range-based value assigned to the implementation guide\r\n* [MessageDefinition](messagedefinition.html): A use context type and quantity- or range-based value assigned to the message definition\r\n* [NamingSystem](namingsystem.html): A use context type and quantity- or range-based value assigned to the naming system\r\n* [OperationDefinition](operationdefinition.html): A use context type and quantity- or range-based value assigned to the operation definition\r\n* [SearchParameter](searchparameter.html): A use context type and quantity- or range-based value assigned to the search parameter\r\n* [StructureDefinition](structuredefinition.html): A use context type and quantity- or range-based value assigned to the structure definition\r\n* [StructureMap](structuremap.html): A use context type and quantity- or range-based value assigned to the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): A use context type and quantity- or range-based value assigned to the terminology capabilities\r\n* [ValueSet](valueset.html): A use context type and quantity- or range-based value assigned to the value set\r\n", type="composite", compositeOf={"context-type", "context-quantity"} )
3025  public static final String SP_CONTEXT_TYPE_QUANTITY = "context-type-quantity";
3026 /**
3027   * <b>Fluent Client</b> search parameter constant for <b>context-type-quantity</b>
3028   * <p>
3029   * Description: <b>Multiple Resources: 
3030
3031* [CapabilityStatement](capabilitystatement.html): A use context type and quantity- or range-based value assigned to the capability statement
3032* [CodeSystem](codesystem.html): A use context type and quantity- or range-based value assigned to the code system
3033* [CompartmentDefinition](compartmentdefinition.html): A use context type and quantity- or range-based value assigned to the compartment definition
3034* [ConceptMap](conceptmap.html): A use context type and quantity- or range-based value assigned to the concept map
3035* [GraphDefinition](graphdefinition.html): A use context type and quantity- or range-based value assigned to the graph definition
3036* [ImplementationGuide](implementationguide.html): A use context type and quantity- or range-based value assigned to the implementation guide
3037* [MessageDefinition](messagedefinition.html): A use context type and quantity- or range-based value assigned to the message definition
3038* [NamingSystem](namingsystem.html): A use context type and quantity- or range-based value assigned to the naming system
3039* [OperationDefinition](operationdefinition.html): A use context type and quantity- or range-based value assigned to the operation definition
3040* [SearchParameter](searchparameter.html): A use context type and quantity- or range-based value assigned to the search parameter
3041* [StructureDefinition](structuredefinition.html): A use context type and quantity- or range-based value assigned to the structure definition
3042* [StructureMap](structuremap.html): A use context type and quantity- or range-based value assigned to the structure map
3043* [TerminologyCapabilities](terminologycapabilities.html): A use context type and quantity- or range-based value assigned to the terminology capabilities
3044* [ValueSet](valueset.html): A use context type and quantity- or range-based value assigned to the value set
3045</b><br>
3046   * Type: <b>composite</b><br>
3047   * Path: <b>CapabilityStatement.useContext | CodeSystem.useContext | CompartmentDefinition.useContext | ConceptMap.useContext | GraphDefinition.useContext | ImplementationGuide.useContext | MessageDefinition.useContext | NamingSystem.useContext | OperationDefinition.useContext | SearchParameter.useContext | StructureDefinition.useContext | StructureMap.useContext | TerminologyCapabilities.useContext | ValueSet.useContext</b><br>
3048   * </p>
3049   */
3050  public static final ca.uhn.fhir.rest.gclient.CompositeClientParam<ca.uhn.fhir.rest.gclient.TokenClientParam, ca.uhn.fhir.rest.gclient.QuantityClientParam> CONTEXT_TYPE_QUANTITY = new ca.uhn.fhir.rest.gclient.CompositeClientParam<ca.uhn.fhir.rest.gclient.TokenClientParam, ca.uhn.fhir.rest.gclient.QuantityClientParam>(SP_CONTEXT_TYPE_QUANTITY);
3051
3052 /**
3053   * Search parameter: <b>context-type-value</b>
3054   * <p>
3055   * Description: <b>Multiple Resources: 
3056
3057* [CapabilityStatement](capabilitystatement.html): A use context type and value assigned to the capability statement
3058* [CodeSystem](codesystem.html): A use context type and value assigned to the code system
3059* [CompartmentDefinition](compartmentdefinition.html): A use context type and value assigned to the compartment definition
3060* [ConceptMap](conceptmap.html): A use context type and value assigned to the concept map
3061* [GraphDefinition](graphdefinition.html): A use context type and value assigned to the graph definition
3062* [ImplementationGuide](implementationguide.html): A use context type and value assigned to the implementation guide
3063* [MessageDefinition](messagedefinition.html): A use context type and value assigned to the message definition
3064* [NamingSystem](namingsystem.html): A use context type and value assigned to the naming system
3065* [OperationDefinition](operationdefinition.html): A use context type and value assigned to the operation definition
3066* [SearchParameter](searchparameter.html): A use context type and value assigned to the search parameter
3067* [StructureDefinition](structuredefinition.html): A use context type and value assigned to the structure definition
3068* [StructureMap](structuremap.html): A use context type and value assigned to the structure map
3069* [TerminologyCapabilities](terminologycapabilities.html): A use context type and value assigned to the terminology capabilities
3070* [ValueSet](valueset.html): A use context type and value assigned to the value set
3071</b><br>
3072   * Type: <b>composite</b><br>
3073   * Path: <b>CapabilityStatement.useContext | CodeSystem.useContext | CompartmentDefinition.useContext | ConceptMap.useContext | GraphDefinition.useContext | ImplementationGuide.useContext | MessageDefinition.useContext | NamingSystem.useContext | OperationDefinition.useContext | SearchParameter.useContext | StructureDefinition.useContext | StructureMap.useContext | TerminologyCapabilities.useContext | ValueSet.useContext</b><br>
3074   * </p>
3075   */
3076  @SearchParamDefinition(name="context-type-value", path="CapabilityStatement.useContext | CodeSystem.useContext | CompartmentDefinition.useContext | ConceptMap.useContext | GraphDefinition.useContext | ImplementationGuide.useContext | MessageDefinition.useContext | NamingSystem.useContext | OperationDefinition.useContext | SearchParameter.useContext | StructureDefinition.useContext | StructureMap.useContext | TerminologyCapabilities.useContext | ValueSet.useContext", description="Multiple Resources: \r\n\r\n* [CapabilityStatement](capabilitystatement.html): A use context type and value assigned to the capability statement\r\n* [CodeSystem](codesystem.html): A use context type and value assigned to the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): A use context type and value assigned to the compartment definition\r\n* [ConceptMap](conceptmap.html): A use context type and value assigned to the concept map\r\n* [GraphDefinition](graphdefinition.html): A use context type and value assigned to the graph definition\r\n* [ImplementationGuide](implementationguide.html): A use context type and value assigned to the implementation guide\r\n* [MessageDefinition](messagedefinition.html): A use context type and value assigned to the message definition\r\n* [NamingSystem](namingsystem.html): A use context type and value assigned to the naming system\r\n* [OperationDefinition](operationdefinition.html): A use context type and value assigned to the operation definition\r\n* [SearchParameter](searchparameter.html): A use context type and value assigned to the search parameter\r\n* [StructureDefinition](structuredefinition.html): A use context type and value assigned to the structure definition\r\n* [StructureMap](structuremap.html): A use context type and value assigned to the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): A use context type and value assigned to the terminology capabilities\r\n* [ValueSet](valueset.html): A use context type and value assigned to the value set\r\n", type="composite", compositeOf={"context-type", "context"} )
3077  public static final String SP_CONTEXT_TYPE_VALUE = "context-type-value";
3078 /**
3079   * <b>Fluent Client</b> search parameter constant for <b>context-type-value</b>
3080   * <p>
3081   * Description: <b>Multiple Resources: 
3082
3083* [CapabilityStatement](capabilitystatement.html): A use context type and value assigned to the capability statement
3084* [CodeSystem](codesystem.html): A use context type and value assigned to the code system
3085* [CompartmentDefinition](compartmentdefinition.html): A use context type and value assigned to the compartment definition
3086* [ConceptMap](conceptmap.html): A use context type and value assigned to the concept map
3087* [GraphDefinition](graphdefinition.html): A use context type and value assigned to the graph definition
3088* [ImplementationGuide](implementationguide.html): A use context type and value assigned to the implementation guide
3089* [MessageDefinition](messagedefinition.html): A use context type and value assigned to the message definition
3090* [NamingSystem](namingsystem.html): A use context type and value assigned to the naming system
3091* [OperationDefinition](operationdefinition.html): A use context type and value assigned to the operation definition
3092* [SearchParameter](searchparameter.html): A use context type and value assigned to the search parameter
3093* [StructureDefinition](structuredefinition.html): A use context type and value assigned to the structure definition
3094* [StructureMap](structuremap.html): A use context type and value assigned to the structure map
3095* [TerminologyCapabilities](terminologycapabilities.html): A use context type and value assigned to the terminology capabilities
3096* [ValueSet](valueset.html): A use context type and value assigned to the value set
3097</b><br>
3098   * Type: <b>composite</b><br>
3099   * Path: <b>CapabilityStatement.useContext | CodeSystem.useContext | CompartmentDefinition.useContext | ConceptMap.useContext | GraphDefinition.useContext | ImplementationGuide.useContext | MessageDefinition.useContext | NamingSystem.useContext | OperationDefinition.useContext | SearchParameter.useContext | StructureDefinition.useContext | StructureMap.useContext | TerminologyCapabilities.useContext | ValueSet.useContext</b><br>
3100   * </p>
3101   */
3102  public static final ca.uhn.fhir.rest.gclient.CompositeClientParam<ca.uhn.fhir.rest.gclient.TokenClientParam, ca.uhn.fhir.rest.gclient.TokenClientParam> CONTEXT_TYPE_VALUE = new ca.uhn.fhir.rest.gclient.CompositeClientParam<ca.uhn.fhir.rest.gclient.TokenClientParam, ca.uhn.fhir.rest.gclient.TokenClientParam>(SP_CONTEXT_TYPE_VALUE);
3103
3104 /**
3105   * Search parameter: <b>context-type</b>
3106   * <p>
3107   * Description: <b>Multiple Resources: 
3108
3109* [CapabilityStatement](capabilitystatement.html): A type of use context assigned to the capability statement
3110* [CodeSystem](codesystem.html): A type of use context assigned to the code system
3111* [CompartmentDefinition](compartmentdefinition.html): A type of use context assigned to the compartment definition
3112* [ConceptMap](conceptmap.html): A type of use context assigned to the concept map
3113* [GraphDefinition](graphdefinition.html): A type of use context assigned to the graph definition
3114* [ImplementationGuide](implementationguide.html): A type of use context assigned to the implementation guide
3115* [MessageDefinition](messagedefinition.html): A type of use context assigned to the message definition
3116* [NamingSystem](namingsystem.html): A type of use context assigned to the naming system
3117* [OperationDefinition](operationdefinition.html): A type of use context assigned to the operation definition
3118* [SearchParameter](searchparameter.html): A type of use context assigned to the search parameter
3119* [StructureDefinition](structuredefinition.html): A type of use context assigned to the structure definition
3120* [StructureMap](structuremap.html): A type of use context assigned to the structure map
3121* [TerminologyCapabilities](terminologycapabilities.html): A type of use context assigned to the terminology capabilities
3122* [ValueSet](valueset.html): A type of use context assigned to the value set
3123</b><br>
3124   * Type: <b>token</b><br>
3125   * Path: <b>CapabilityStatement.useContext.code | CodeSystem.useContext.code | CompartmentDefinition.useContext.code | ConceptMap.useContext.code | GraphDefinition.useContext.code | ImplementationGuide.useContext.code | MessageDefinition.useContext.code | NamingSystem.useContext.code | OperationDefinition.useContext.code | SearchParameter.useContext.code | StructureDefinition.useContext.code | StructureMap.useContext.code | TerminologyCapabilities.useContext.code | ValueSet.useContext.code</b><br>
3126   * </p>
3127   */
3128  @SearchParamDefinition(name="context-type", path="CapabilityStatement.useContext.code | CodeSystem.useContext.code | CompartmentDefinition.useContext.code | ConceptMap.useContext.code | GraphDefinition.useContext.code | ImplementationGuide.useContext.code | MessageDefinition.useContext.code | NamingSystem.useContext.code | OperationDefinition.useContext.code | SearchParameter.useContext.code | StructureDefinition.useContext.code | StructureMap.useContext.code | TerminologyCapabilities.useContext.code | ValueSet.useContext.code", description="Multiple Resources: \r\n\r\n* [CapabilityStatement](capabilitystatement.html): A type of use context assigned to the capability statement\r\n* [CodeSystem](codesystem.html): A type of use context assigned to the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): A type of use context assigned to the compartment definition\r\n* [ConceptMap](conceptmap.html): A type of use context assigned to the concept map\r\n* [GraphDefinition](graphdefinition.html): A type of use context assigned to the graph definition\r\n* [ImplementationGuide](implementationguide.html): A type of use context assigned to the implementation guide\r\n* [MessageDefinition](messagedefinition.html): A type of use context assigned to the message definition\r\n* [NamingSystem](namingsystem.html): A type of use context assigned to the naming system\r\n* [OperationDefinition](operationdefinition.html): A type of use context assigned to the operation definition\r\n* [SearchParameter](searchparameter.html): A type of use context assigned to the search parameter\r\n* [StructureDefinition](structuredefinition.html): A type of use context assigned to the structure definition\r\n* [StructureMap](structuremap.html): A type of use context assigned to the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): A type of use context assigned to the terminology capabilities\r\n* [ValueSet](valueset.html): A type of use context assigned to the value set\r\n", type="token" )
3129  public static final String SP_CONTEXT_TYPE = "context-type";
3130 /**
3131   * <b>Fluent Client</b> search parameter constant for <b>context-type</b>
3132   * <p>
3133   * Description: <b>Multiple Resources: 
3134
3135* [CapabilityStatement](capabilitystatement.html): A type of use context assigned to the capability statement
3136* [CodeSystem](codesystem.html): A type of use context assigned to the code system
3137* [CompartmentDefinition](compartmentdefinition.html): A type of use context assigned to the compartment definition
3138* [ConceptMap](conceptmap.html): A type of use context assigned to the concept map
3139* [GraphDefinition](graphdefinition.html): A type of use context assigned to the graph definition
3140* [ImplementationGuide](implementationguide.html): A type of use context assigned to the implementation guide
3141* [MessageDefinition](messagedefinition.html): A type of use context assigned to the message definition
3142* [NamingSystem](namingsystem.html): A type of use context assigned to the naming system
3143* [OperationDefinition](operationdefinition.html): A type of use context assigned to the operation definition
3144* [SearchParameter](searchparameter.html): A type of use context assigned to the search parameter
3145* [StructureDefinition](structuredefinition.html): A type of use context assigned to the structure definition
3146* [StructureMap](structuremap.html): A type of use context assigned to the structure map
3147* [TerminologyCapabilities](terminologycapabilities.html): A type of use context assigned to the terminology capabilities
3148* [ValueSet](valueset.html): A type of use context assigned to the value set
3149</b><br>
3150   * Type: <b>token</b><br>
3151   * Path: <b>CapabilityStatement.useContext.code | CodeSystem.useContext.code | CompartmentDefinition.useContext.code | ConceptMap.useContext.code | GraphDefinition.useContext.code | ImplementationGuide.useContext.code | MessageDefinition.useContext.code | NamingSystem.useContext.code | OperationDefinition.useContext.code | SearchParameter.useContext.code | StructureDefinition.useContext.code | StructureMap.useContext.code | TerminologyCapabilities.useContext.code | ValueSet.useContext.code</b><br>
3152   * </p>
3153   */
3154  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT_TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTEXT_TYPE);
3155
3156 /**
3157   * Search parameter: <b>context</b>
3158   * <p>
3159   * Description: <b>Multiple Resources: 
3160
3161* [CapabilityStatement](capabilitystatement.html): A use context assigned to the capability statement
3162* [CodeSystem](codesystem.html): A use context assigned to the code system
3163* [CompartmentDefinition](compartmentdefinition.html): A use context assigned to the compartment definition
3164* [ConceptMap](conceptmap.html): A use context assigned to the concept map
3165* [GraphDefinition](graphdefinition.html): A use context assigned to the graph definition
3166* [ImplementationGuide](implementationguide.html): A use context assigned to the implementation guide
3167* [MessageDefinition](messagedefinition.html): A use context assigned to the message definition
3168* [NamingSystem](namingsystem.html): A use context assigned to the naming system
3169* [OperationDefinition](operationdefinition.html): A use context assigned to the operation definition
3170* [SearchParameter](searchparameter.html): A use context assigned to the search parameter
3171* [StructureDefinition](structuredefinition.html): A use context assigned to the structure definition
3172* [StructureMap](structuremap.html): A use context assigned to the structure map
3173* [TerminologyCapabilities](terminologycapabilities.html): A use context assigned to the terminology capabilities
3174* [ValueSet](valueset.html): A use context assigned to the value set
3175</b><br>
3176   * Type: <b>token</b><br>
3177   * Path: <b>(CapabilityStatement.useContext.value as CodeableConcept) | (CodeSystem.useContext.value as CodeableConcept) | (CompartmentDefinition.useContext.value as CodeableConcept) | (ConceptMap.useContext.value as CodeableConcept) | (GraphDefinition.useContext.value as CodeableConcept) | (ImplementationGuide.useContext.value as CodeableConcept) | (MessageDefinition.useContext.value as CodeableConcept) | (NamingSystem.useContext.value as CodeableConcept) | (OperationDefinition.useContext.value as CodeableConcept) | (SearchParameter.useContext.value as CodeableConcept) | (StructureDefinition.useContext.value as CodeableConcept) | (StructureMap.useContext.value as CodeableConcept) | (TerminologyCapabilities.useContext.value as CodeableConcept) | (ValueSet.useContext.value as CodeableConcept)</b><br>
3178   * </p>
3179   */
3180  @SearchParamDefinition(name="context", path="(CapabilityStatement.useContext.value as CodeableConcept) | (CodeSystem.useContext.value as CodeableConcept) | (CompartmentDefinition.useContext.value as CodeableConcept) | (ConceptMap.useContext.value as CodeableConcept) | (GraphDefinition.useContext.value as CodeableConcept) | (ImplementationGuide.useContext.value as CodeableConcept) | (MessageDefinition.useContext.value as CodeableConcept) | (NamingSystem.useContext.value as CodeableConcept) | (OperationDefinition.useContext.value as CodeableConcept) | (SearchParameter.useContext.value as CodeableConcept) | (StructureDefinition.useContext.value as CodeableConcept) | (StructureMap.useContext.value as CodeableConcept) | (TerminologyCapabilities.useContext.value as CodeableConcept) | (ValueSet.useContext.value as CodeableConcept)", description="Multiple Resources: \r\n\r\n* [CapabilityStatement](capabilitystatement.html): A use context assigned to the capability statement\r\n* [CodeSystem](codesystem.html): A use context assigned to the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): A use context assigned to the compartment definition\r\n* [ConceptMap](conceptmap.html): A use context assigned to the concept map\r\n* [GraphDefinition](graphdefinition.html): A use context assigned to the graph definition\r\n* [ImplementationGuide](implementationguide.html): A use context assigned to the implementation guide\r\n* [MessageDefinition](messagedefinition.html): A use context assigned to the message definition\r\n* [NamingSystem](namingsystem.html): A use context assigned to the naming system\r\n* [OperationDefinition](operationdefinition.html): A use context assigned to the operation definition\r\n* [SearchParameter](searchparameter.html): A use context assigned to the search parameter\r\n* [StructureDefinition](structuredefinition.html): A use context assigned to the structure definition\r\n* [StructureMap](structuremap.html): A use context assigned to the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): A use context assigned to the terminology capabilities\r\n* [ValueSet](valueset.html): A use context assigned to the value set\r\n", type="token" )
3181  public static final String SP_CONTEXT = "context";
3182 /**
3183   * <b>Fluent Client</b> search parameter constant for <b>context</b>
3184   * <p>
3185   * Description: <b>Multiple Resources: 
3186
3187* [CapabilityStatement](capabilitystatement.html): A use context assigned to the capability statement
3188* [CodeSystem](codesystem.html): A use context assigned to the code system
3189* [CompartmentDefinition](compartmentdefinition.html): A use context assigned to the compartment definition
3190* [ConceptMap](conceptmap.html): A use context assigned to the concept map
3191* [GraphDefinition](graphdefinition.html): A use context assigned to the graph definition
3192* [ImplementationGuide](implementationguide.html): A use context assigned to the implementation guide
3193* [MessageDefinition](messagedefinition.html): A use context assigned to the message definition
3194* [NamingSystem](namingsystem.html): A use context assigned to the naming system
3195* [OperationDefinition](operationdefinition.html): A use context assigned to the operation definition
3196* [SearchParameter](searchparameter.html): A use context assigned to the search parameter
3197* [StructureDefinition](structuredefinition.html): A use context assigned to the structure definition
3198* [StructureMap](structuremap.html): A use context assigned to the structure map
3199* [TerminologyCapabilities](terminologycapabilities.html): A use context assigned to the terminology capabilities
3200* [ValueSet](valueset.html): A use context assigned to the value set
3201</b><br>
3202   * Type: <b>token</b><br>
3203   * Path: <b>(CapabilityStatement.useContext.value as CodeableConcept) | (CodeSystem.useContext.value as CodeableConcept) | (CompartmentDefinition.useContext.value as CodeableConcept) | (ConceptMap.useContext.value as CodeableConcept) | (GraphDefinition.useContext.value as CodeableConcept) | (ImplementationGuide.useContext.value as CodeableConcept) | (MessageDefinition.useContext.value as CodeableConcept) | (NamingSystem.useContext.value as CodeableConcept) | (OperationDefinition.useContext.value as CodeableConcept) | (SearchParameter.useContext.value as CodeableConcept) | (StructureDefinition.useContext.value as CodeableConcept) | (StructureMap.useContext.value as CodeableConcept) | (TerminologyCapabilities.useContext.value as CodeableConcept) | (ValueSet.useContext.value as CodeableConcept)</b><br>
3204   * </p>
3205   */
3206  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTEXT);
3207
3208 /**
3209   * Search parameter: <b>date</b>
3210   * <p>
3211   * Description: <b>Multiple Resources: 
3212
3213* [CapabilityStatement](capabilitystatement.html): The capability statement publication date
3214* [CodeSystem](codesystem.html): The code system publication date
3215* [CompartmentDefinition](compartmentdefinition.html): The compartment definition publication date
3216* [ConceptMap](conceptmap.html): The concept map publication date
3217* [GraphDefinition](graphdefinition.html): The graph definition publication date
3218* [ImplementationGuide](implementationguide.html): The implementation guide publication date
3219* [MessageDefinition](messagedefinition.html): The message definition publication date
3220* [NamingSystem](namingsystem.html): The naming system publication date
3221* [OperationDefinition](operationdefinition.html): The operation definition publication date
3222* [SearchParameter](searchparameter.html): The search parameter publication date
3223* [StructureDefinition](structuredefinition.html): The structure definition publication date
3224* [StructureMap](structuremap.html): The structure map publication date
3225* [TerminologyCapabilities](terminologycapabilities.html): The terminology capabilities publication date
3226* [ValueSet](valueset.html): The value set publication date
3227</b><br>
3228   * Type: <b>date</b><br>
3229   * Path: <b>CapabilityStatement.date | CodeSystem.date | CompartmentDefinition.date | ConceptMap.date | GraphDefinition.date | ImplementationGuide.date | MessageDefinition.date | NamingSystem.date | OperationDefinition.date | SearchParameter.date | StructureDefinition.date | StructureMap.date | TerminologyCapabilities.date | ValueSet.date</b><br>
3230   * </p>
3231   */
3232  @SearchParamDefinition(name="date", path="CapabilityStatement.date | CodeSystem.date | CompartmentDefinition.date | ConceptMap.date | GraphDefinition.date | ImplementationGuide.date | MessageDefinition.date | NamingSystem.date | OperationDefinition.date | SearchParameter.date | StructureDefinition.date | StructureMap.date | TerminologyCapabilities.date | ValueSet.date", description="Multiple Resources: \r\n\r\n* [CapabilityStatement](capabilitystatement.html): The capability statement 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* [GraphDefinition](graphdefinition.html): The graph definition publication date\r\n* [ImplementationGuide](implementationguide.html): The implementation guide 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* [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* [TerminologyCapabilities](terminologycapabilities.html): The terminology capabilities publication date\r\n* [ValueSet](valueset.html): The value set publication date\r\n", type="date" )
3233  public static final String SP_DATE = "date";
3234 /**
3235   * <b>Fluent Client</b> search parameter constant for <b>date</b>
3236   * <p>
3237   * Description: <b>Multiple Resources: 
3238
3239* [CapabilityStatement](capabilitystatement.html): The capability statement publication date
3240* [CodeSystem](codesystem.html): The code system publication date
3241* [CompartmentDefinition](compartmentdefinition.html): The compartment definition publication date
3242* [ConceptMap](conceptmap.html): The concept map publication date
3243* [GraphDefinition](graphdefinition.html): The graph definition publication date
3244* [ImplementationGuide](implementationguide.html): The implementation guide publication date
3245* [MessageDefinition](messagedefinition.html): The message definition publication date
3246* [NamingSystem](namingsystem.html): The naming system publication date
3247* [OperationDefinition](operationdefinition.html): The operation definition publication date
3248* [SearchParameter](searchparameter.html): The search parameter publication date
3249* [StructureDefinition](structuredefinition.html): The structure definition publication date
3250* [StructureMap](structuremap.html): The structure map publication date
3251* [TerminologyCapabilities](terminologycapabilities.html): The terminology capabilities publication date
3252* [ValueSet](valueset.html): The value set publication date
3253</b><br>
3254   * Type: <b>date</b><br>
3255   * Path: <b>CapabilityStatement.date | CodeSystem.date | CompartmentDefinition.date | ConceptMap.date | GraphDefinition.date | ImplementationGuide.date | MessageDefinition.date | NamingSystem.date | OperationDefinition.date | SearchParameter.date | StructureDefinition.date | StructureMap.date | TerminologyCapabilities.date | ValueSet.date</b><br>
3256   * </p>
3257   */
3258  public static final ca.uhn.fhir.rest.gclient.DateClientParam DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_DATE);
3259
3260 /**
3261   * Search parameter: <b>description</b>
3262   * <p>
3263   * Description: <b>Multiple Resources: 
3264
3265* [CapabilityStatement](capabilitystatement.html): The description of the capability statement
3266* [CodeSystem](codesystem.html): The description of the code system
3267* [CompartmentDefinition](compartmentdefinition.html): The description of the compartment definition
3268* [ConceptMap](conceptmap.html): The description of the concept map
3269* [GraphDefinition](graphdefinition.html): The description of the graph definition
3270* [ImplementationGuide](implementationguide.html): The description of the implementation guide
3271* [MessageDefinition](messagedefinition.html): The description of the message definition
3272* [NamingSystem](namingsystem.html): The description of the naming system
3273* [OperationDefinition](operationdefinition.html): The description of the operation definition
3274* [SearchParameter](searchparameter.html): The description of the search parameter
3275* [StructureDefinition](structuredefinition.html): The description of the structure definition
3276* [StructureMap](structuremap.html): The description of the structure map
3277* [TerminologyCapabilities](terminologycapabilities.html): The description of the terminology capabilities
3278* [ValueSet](valueset.html): The description of the value set
3279</b><br>
3280   * Type: <b>string</b><br>
3281   * Path: <b>CapabilityStatement.description | CodeSystem.description | CompartmentDefinition.description | ConceptMap.description | GraphDefinition.description | ImplementationGuide.description | MessageDefinition.description | NamingSystem.description | OperationDefinition.description | SearchParameter.description | StructureDefinition.description | StructureMap.description | TerminologyCapabilities.description | ValueSet.description</b><br>
3282   * </p>
3283   */
3284  @SearchParamDefinition(name="description", path="CapabilityStatement.description | CodeSystem.description | CompartmentDefinition.description | ConceptMap.description | GraphDefinition.description | ImplementationGuide.description | MessageDefinition.description | NamingSystem.description | OperationDefinition.description | SearchParameter.description | StructureDefinition.description | StructureMap.description | TerminologyCapabilities.description | ValueSet.description", description="Multiple Resources: \r\n\r\n* [CapabilityStatement](capabilitystatement.html): The description of the capability statement\r\n* [CodeSystem](codesystem.html): The description of the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): The description of the compartment definition\r\n* [ConceptMap](conceptmap.html): The description of the concept map\r\n* [GraphDefinition](graphdefinition.html): The description of the graph definition\r\n* [ImplementationGuide](implementationguide.html): The description of the implementation guide\r\n* [MessageDefinition](messagedefinition.html): The description of the message definition\r\n* [NamingSystem](namingsystem.html): The description of the naming system\r\n* [OperationDefinition](operationdefinition.html): The description of the operation definition\r\n* [SearchParameter](searchparameter.html): The description of the search parameter\r\n* [StructureDefinition](structuredefinition.html): The description of the structure definition\r\n* [StructureMap](structuremap.html): The description of the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): The description of the terminology capabilities\r\n* [ValueSet](valueset.html): The description of the value set\r\n", type="string" )
3285  public static final String SP_DESCRIPTION = "description";
3286 /**
3287   * <b>Fluent Client</b> search parameter constant for <b>description</b>
3288   * <p>
3289   * Description: <b>Multiple Resources: 
3290
3291* [CapabilityStatement](capabilitystatement.html): The description of the capability statement
3292* [CodeSystem](codesystem.html): The description of the code system
3293* [CompartmentDefinition](compartmentdefinition.html): The description of the compartment definition
3294* [ConceptMap](conceptmap.html): The description of the concept map
3295* [GraphDefinition](graphdefinition.html): The description of the graph definition
3296* [ImplementationGuide](implementationguide.html): The description of the implementation guide
3297* [MessageDefinition](messagedefinition.html): The description of the message definition
3298* [NamingSystem](namingsystem.html): The description of the naming system
3299* [OperationDefinition](operationdefinition.html): The description of the operation definition
3300* [SearchParameter](searchparameter.html): The description of the search parameter
3301* [StructureDefinition](structuredefinition.html): The description of the structure definition
3302* [StructureMap](structuremap.html): The description of the structure map
3303* [TerminologyCapabilities](terminologycapabilities.html): The description of the terminology capabilities
3304* [ValueSet](valueset.html): The description of the value set
3305</b><br>
3306   * Type: <b>string</b><br>
3307   * Path: <b>CapabilityStatement.description | CodeSystem.description | CompartmentDefinition.description | ConceptMap.description | GraphDefinition.description | ImplementationGuide.description | MessageDefinition.description | NamingSystem.description | OperationDefinition.description | SearchParameter.description | StructureDefinition.description | StructureMap.description | TerminologyCapabilities.description | ValueSet.description</b><br>
3308   * </p>
3309   */
3310  public static final ca.uhn.fhir.rest.gclient.StringClientParam DESCRIPTION = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_DESCRIPTION);
3311
3312 /**
3313   * Search parameter: <b>identifier</b>
3314   * <p>
3315   * Description: <b>Multiple Resources: 
3316
3317* [CodeSystem](codesystem.html): External identifier for the code system
3318* [ConceptMap](conceptmap.html): External identifier for the concept map
3319* [MessageDefinition](messagedefinition.html): External identifier for the message definition
3320* [StructureDefinition](structuredefinition.html): External identifier for the structure definition
3321* [StructureMap](structuremap.html): External identifier for the structure map
3322* [TerminologyCapabilities](terminologycapabilities.html): External identifier for the terminology capabilities
3323* [ValueSet](valueset.html): External identifier for the value set
3324</b><br>
3325   * Type: <b>token</b><br>
3326   * Path: <b>CodeSystem.identifier | ConceptMap.identifier | MessageDefinition.identifier | StructureDefinition.identifier | StructureMap.identifier | TerminologyCapabilities.identifier | ValueSet.identifier</b><br>
3327   * </p>
3328   */
3329  @SearchParamDefinition(name="identifier", path="CodeSystem.identifier | ConceptMap.identifier | MessageDefinition.identifier | StructureDefinition.identifier | StructureMap.identifier | TerminologyCapabilities.identifier | ValueSet.identifier", description="Multiple Resources: \r\n\r\n* [CodeSystem](codesystem.html): External identifier for the code system\r\n* [ConceptMap](conceptmap.html): External identifier for the concept map\r\n* [MessageDefinition](messagedefinition.html): External identifier for the message definition\r\n* [StructureDefinition](structuredefinition.html): External identifier for the structure definition\r\n* [StructureMap](structuremap.html): External identifier for the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): External identifier for the terminology capabilities\r\n* [ValueSet](valueset.html): External identifier for the value set\r\n", type="token" )
3330  public static final String SP_IDENTIFIER = "identifier";
3331 /**
3332   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
3333   * <p>
3334   * Description: <b>Multiple Resources: 
3335
3336* [CodeSystem](codesystem.html): External identifier for the code system
3337* [ConceptMap](conceptmap.html): External identifier for the concept map
3338* [MessageDefinition](messagedefinition.html): External identifier for the message definition
3339* [StructureDefinition](structuredefinition.html): External identifier for the structure definition
3340* [StructureMap](structuremap.html): External identifier for the structure map
3341* [TerminologyCapabilities](terminologycapabilities.html): External identifier for the terminology capabilities
3342* [ValueSet](valueset.html): External identifier for the value set
3343</b><br>
3344   * Type: <b>token</b><br>
3345   * Path: <b>CodeSystem.identifier | ConceptMap.identifier | MessageDefinition.identifier | StructureDefinition.identifier | StructureMap.identifier | TerminologyCapabilities.identifier | ValueSet.identifier</b><br>
3346   * </p>
3347   */
3348  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
3349
3350 /**
3351   * Search parameter: <b>jurisdiction</b>
3352   * <p>
3353   * Description: <b>Multiple Resources: 
3354
3355* [CapabilityStatement](capabilitystatement.html): Intended jurisdiction for the capability statement
3356* [CodeSystem](codesystem.html): Intended jurisdiction for the code system
3357* [ConceptMap](conceptmap.html): Intended jurisdiction for the concept map
3358* [GraphDefinition](graphdefinition.html): Intended jurisdiction for the graph definition
3359* [ImplementationGuide](implementationguide.html): Intended jurisdiction for the implementation guide
3360* [MessageDefinition](messagedefinition.html): Intended jurisdiction for the message definition
3361* [NamingSystem](namingsystem.html): Intended jurisdiction for the naming system
3362* [OperationDefinition](operationdefinition.html): Intended jurisdiction for the operation definition
3363* [SearchParameter](searchparameter.html): Intended jurisdiction for the search parameter
3364* [StructureDefinition](structuredefinition.html): Intended jurisdiction for the structure definition
3365* [StructureMap](structuremap.html): Intended jurisdiction for the structure map
3366* [TerminologyCapabilities](terminologycapabilities.html): Intended jurisdiction for the terminology capabilities
3367* [ValueSet](valueset.html): Intended jurisdiction for the value set
3368</b><br>
3369   * Type: <b>token</b><br>
3370   * Path: <b>CapabilityStatement.jurisdiction | CodeSystem.jurisdiction | ConceptMap.jurisdiction | GraphDefinition.jurisdiction | ImplementationGuide.jurisdiction | MessageDefinition.jurisdiction | NamingSystem.jurisdiction | OperationDefinition.jurisdiction | SearchParameter.jurisdiction | StructureDefinition.jurisdiction | StructureMap.jurisdiction | TerminologyCapabilities.jurisdiction | ValueSet.jurisdiction</b><br>
3371   * </p>
3372   */
3373  @SearchParamDefinition(name="jurisdiction", path="CapabilityStatement.jurisdiction | CodeSystem.jurisdiction | ConceptMap.jurisdiction | GraphDefinition.jurisdiction | ImplementationGuide.jurisdiction | MessageDefinition.jurisdiction | NamingSystem.jurisdiction | OperationDefinition.jurisdiction | SearchParameter.jurisdiction | StructureDefinition.jurisdiction | StructureMap.jurisdiction | TerminologyCapabilities.jurisdiction | ValueSet.jurisdiction", description="Multiple Resources: \r\n\r\n* [CapabilityStatement](capabilitystatement.html): Intended jurisdiction for the capability statement\r\n* [CodeSystem](codesystem.html): Intended jurisdiction for the code system\r\n* [ConceptMap](conceptmap.html): Intended jurisdiction for the concept map\r\n* [GraphDefinition](graphdefinition.html): Intended jurisdiction for the graph definition\r\n* [ImplementationGuide](implementationguide.html): Intended jurisdiction for the implementation guide\r\n* [MessageDefinition](messagedefinition.html): Intended jurisdiction for the message definition\r\n* [NamingSystem](namingsystem.html): Intended jurisdiction for the naming system\r\n* [OperationDefinition](operationdefinition.html): Intended jurisdiction for the operation definition\r\n* [SearchParameter](searchparameter.html): Intended jurisdiction for the search parameter\r\n* [StructureDefinition](structuredefinition.html): Intended jurisdiction for the structure definition\r\n* [StructureMap](structuremap.html): Intended jurisdiction for the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): Intended jurisdiction for the terminology capabilities\r\n* [ValueSet](valueset.html): Intended jurisdiction for the value set\r\n", type="token" )
3374  public static final String SP_JURISDICTION = "jurisdiction";
3375 /**
3376   * <b>Fluent Client</b> search parameter constant for <b>jurisdiction</b>
3377   * <p>
3378   * Description: <b>Multiple Resources: 
3379
3380* [CapabilityStatement](capabilitystatement.html): Intended jurisdiction for the capability statement
3381* [CodeSystem](codesystem.html): Intended jurisdiction for the code system
3382* [ConceptMap](conceptmap.html): Intended jurisdiction for the concept map
3383* [GraphDefinition](graphdefinition.html): Intended jurisdiction for the graph definition
3384* [ImplementationGuide](implementationguide.html): Intended jurisdiction for the implementation guide
3385* [MessageDefinition](messagedefinition.html): Intended jurisdiction for the message definition
3386* [NamingSystem](namingsystem.html): Intended jurisdiction for the naming system
3387* [OperationDefinition](operationdefinition.html): Intended jurisdiction for the operation definition
3388* [SearchParameter](searchparameter.html): Intended jurisdiction for the search parameter
3389* [StructureDefinition](structuredefinition.html): Intended jurisdiction for the structure definition
3390* [StructureMap](structuremap.html): Intended jurisdiction for the structure map
3391* [TerminologyCapabilities](terminologycapabilities.html): Intended jurisdiction for the terminology capabilities
3392* [ValueSet](valueset.html): Intended jurisdiction for the value set
3393</b><br>
3394   * Type: <b>token</b><br>
3395   * Path: <b>CapabilityStatement.jurisdiction | CodeSystem.jurisdiction | ConceptMap.jurisdiction | GraphDefinition.jurisdiction | ImplementationGuide.jurisdiction | MessageDefinition.jurisdiction | NamingSystem.jurisdiction | OperationDefinition.jurisdiction | SearchParameter.jurisdiction | StructureDefinition.jurisdiction | StructureMap.jurisdiction | TerminologyCapabilities.jurisdiction | ValueSet.jurisdiction</b><br>
3396   * </p>
3397   */
3398  public static final ca.uhn.fhir.rest.gclient.TokenClientParam JURISDICTION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_JURISDICTION);
3399
3400 /**
3401   * Search parameter: <b>name</b>
3402   * <p>
3403   * Description: <b>Multiple Resources: 
3404
3405* [CapabilityStatement](capabilitystatement.html): Computationally friendly name of the capability statement
3406* [CodeSystem](codesystem.html): Computationally friendly name of the code system
3407* [CompartmentDefinition](compartmentdefinition.html): Computationally friendly name of the compartment definition
3408* [ConceptMap](conceptmap.html): Computationally friendly name of the concept map
3409* [GraphDefinition](graphdefinition.html): Computationally friendly name of the graph definition
3410* [ImplementationGuide](implementationguide.html): Computationally friendly name of the implementation guide
3411* [MessageDefinition](messagedefinition.html): Computationally friendly name of the message definition
3412* [NamingSystem](namingsystem.html): Computationally friendly name of the naming system
3413* [OperationDefinition](operationdefinition.html): Computationally friendly name of the operation definition
3414* [SearchParameter](searchparameter.html): Computationally friendly name of the search parameter
3415* [StructureDefinition](structuredefinition.html): Computationally friendly name of the structure definition
3416* [StructureMap](structuremap.html): Computationally friendly name of the structure map
3417* [TerminologyCapabilities](terminologycapabilities.html): Computationally friendly name of the terminology capabilities
3418* [ValueSet](valueset.html): Computationally friendly name of the value set
3419</b><br>
3420   * Type: <b>string</b><br>
3421   * Path: <b>CapabilityStatement.name | CodeSystem.name | CompartmentDefinition.name | ConceptMap.name | GraphDefinition.name | ImplementationGuide.name | MessageDefinition.name | NamingSystem.name | OperationDefinition.name | SearchParameter.name | StructureDefinition.name | StructureMap.name | TerminologyCapabilities.name | ValueSet.name</b><br>
3422   * </p>
3423   */
3424  @SearchParamDefinition(name="name", path="CapabilityStatement.name | CodeSystem.name | CompartmentDefinition.name | ConceptMap.name | GraphDefinition.name | ImplementationGuide.name | MessageDefinition.name | NamingSystem.name | OperationDefinition.name | SearchParameter.name | StructureDefinition.name | StructureMap.name | TerminologyCapabilities.name | ValueSet.name", description="Multiple Resources: \r\n\r\n* [CapabilityStatement](capabilitystatement.html): Computationally friendly name of the capability statement\r\n* [CodeSystem](codesystem.html): Computationally friendly name of the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): Computationally friendly name of the compartment definition\r\n* [ConceptMap](conceptmap.html): Computationally friendly name of the concept map\r\n* [GraphDefinition](graphdefinition.html): Computationally friendly name of the graph definition\r\n* [ImplementationGuide](implementationguide.html): Computationally friendly name of the implementation guide\r\n* [MessageDefinition](messagedefinition.html): Computationally friendly name of the message definition\r\n* [NamingSystem](namingsystem.html): Computationally friendly name of the naming system\r\n* [OperationDefinition](operationdefinition.html): Computationally friendly name of the operation definition\r\n* [SearchParameter](searchparameter.html): Computationally friendly name of the search parameter\r\n* [StructureDefinition](structuredefinition.html): Computationally friendly name of the structure definition\r\n* [StructureMap](structuremap.html): Computationally friendly name of the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): Computationally friendly name of the terminology capabilities\r\n* [ValueSet](valueset.html): Computationally friendly name of the value set\r\n", type="string" )
3425  public static final String SP_NAME = "name";
3426 /**
3427   * <b>Fluent Client</b> search parameter constant for <b>name</b>
3428   * <p>
3429   * Description: <b>Multiple Resources: 
3430
3431* [CapabilityStatement](capabilitystatement.html): Computationally friendly name of the capability statement
3432* [CodeSystem](codesystem.html): Computationally friendly name of the code system
3433* [CompartmentDefinition](compartmentdefinition.html): Computationally friendly name of the compartment definition
3434* [ConceptMap](conceptmap.html): Computationally friendly name of the concept map
3435* [GraphDefinition](graphdefinition.html): Computationally friendly name of the graph definition
3436* [ImplementationGuide](implementationguide.html): Computationally friendly name of the implementation guide
3437* [MessageDefinition](messagedefinition.html): Computationally friendly name of the message definition
3438* [NamingSystem](namingsystem.html): Computationally friendly name of the naming system
3439* [OperationDefinition](operationdefinition.html): Computationally friendly name of the operation definition
3440* [SearchParameter](searchparameter.html): Computationally friendly name of the search parameter
3441* [StructureDefinition](structuredefinition.html): Computationally friendly name of the structure definition
3442* [StructureMap](structuremap.html): Computationally friendly name of the structure map
3443* [TerminologyCapabilities](terminologycapabilities.html): Computationally friendly name of the terminology capabilities
3444* [ValueSet](valueset.html): Computationally friendly name of the value set
3445</b><br>
3446   * Type: <b>string</b><br>
3447   * Path: <b>CapabilityStatement.name | CodeSystem.name | CompartmentDefinition.name | ConceptMap.name | GraphDefinition.name | ImplementationGuide.name | MessageDefinition.name | NamingSystem.name | OperationDefinition.name | SearchParameter.name | StructureDefinition.name | StructureMap.name | TerminologyCapabilities.name | ValueSet.name</b><br>
3448   * </p>
3449   */
3450  public static final ca.uhn.fhir.rest.gclient.StringClientParam NAME = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_NAME);
3451
3452 /**
3453   * Search parameter: <b>publisher</b>
3454   * <p>
3455   * Description: <b>Multiple Resources: 
3456
3457* [CapabilityStatement](capabilitystatement.html): Name of the publisher of the capability statement
3458* [CodeSystem](codesystem.html): Name of the publisher of the code system
3459* [CompartmentDefinition](compartmentdefinition.html): Name of the publisher of the compartment definition
3460* [ConceptMap](conceptmap.html): Name of the publisher of the concept map
3461* [GraphDefinition](graphdefinition.html): Name of the publisher of the graph definition
3462* [ImplementationGuide](implementationguide.html): Name of the publisher of the implementation guide
3463* [MessageDefinition](messagedefinition.html): Name of the publisher of the message definition
3464* [NamingSystem](namingsystem.html): Name of the publisher of the naming system
3465* [OperationDefinition](operationdefinition.html): Name of the publisher of the operation definition
3466* [SearchParameter](searchparameter.html): Name of the publisher of the search parameter
3467* [StructureDefinition](structuredefinition.html): Name of the publisher of the structure definition
3468* [StructureMap](structuremap.html): Name of the publisher of the structure map
3469* [TerminologyCapabilities](terminologycapabilities.html): Name of the publisher of the terminology capabilities
3470* [ValueSet](valueset.html): Name of the publisher of the value set
3471</b><br>
3472   * Type: <b>string</b><br>
3473   * Path: <b>CapabilityStatement.publisher | CodeSystem.publisher | CompartmentDefinition.publisher | ConceptMap.publisher | GraphDefinition.publisher | ImplementationGuide.publisher | MessageDefinition.publisher | NamingSystem.publisher | OperationDefinition.publisher | SearchParameter.publisher | StructureDefinition.publisher | StructureMap.publisher | TerminologyCapabilities.publisher | ValueSet.publisher</b><br>
3474   * </p>
3475   */
3476  @SearchParamDefinition(name="publisher", path="CapabilityStatement.publisher | CodeSystem.publisher | CompartmentDefinition.publisher | ConceptMap.publisher | GraphDefinition.publisher | ImplementationGuide.publisher | MessageDefinition.publisher | NamingSystem.publisher | OperationDefinition.publisher | SearchParameter.publisher | StructureDefinition.publisher | StructureMap.publisher | TerminologyCapabilities.publisher | ValueSet.publisher", description="Multiple Resources: \r\n\r\n* [CapabilityStatement](capabilitystatement.html): Name of the publisher of the capability statement\r\n* [CodeSystem](codesystem.html): Name of the publisher of the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): Name of the publisher of the compartment definition\r\n* [ConceptMap](conceptmap.html): Name of the publisher of the concept map\r\n* [GraphDefinition](graphdefinition.html): Name of the publisher of the graph definition\r\n* [ImplementationGuide](implementationguide.html): Name of the publisher of the implementation guide\r\n* [MessageDefinition](messagedefinition.html): Name of the publisher of the message definition\r\n* [NamingSystem](namingsystem.html): Name of the publisher of the naming system\r\n* [OperationDefinition](operationdefinition.html): Name of the publisher of the operation definition\r\n* [SearchParameter](searchparameter.html): Name of the publisher of the search parameter\r\n* [StructureDefinition](structuredefinition.html): Name of the publisher of the structure definition\r\n* [StructureMap](structuremap.html): Name of the publisher of the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): Name of the publisher of the terminology capabilities\r\n* [ValueSet](valueset.html): Name of the publisher of the value set\r\n", type="string" )
3477  public static final String SP_PUBLISHER = "publisher";
3478 /**
3479   * <b>Fluent Client</b> search parameter constant for <b>publisher</b>
3480   * <p>
3481   * Description: <b>Multiple Resources: 
3482
3483* [CapabilityStatement](capabilitystatement.html): Name of the publisher of the capability statement
3484* [CodeSystem](codesystem.html): Name of the publisher of the code system
3485* [CompartmentDefinition](compartmentdefinition.html): Name of the publisher of the compartment definition
3486* [ConceptMap](conceptmap.html): Name of the publisher of the concept map
3487* [GraphDefinition](graphdefinition.html): Name of the publisher of the graph definition
3488* [ImplementationGuide](implementationguide.html): Name of the publisher of the implementation guide
3489* [MessageDefinition](messagedefinition.html): Name of the publisher of the message definition
3490* [NamingSystem](namingsystem.html): Name of the publisher of the naming system
3491* [OperationDefinition](operationdefinition.html): Name of the publisher of the operation definition
3492* [SearchParameter](searchparameter.html): Name of the publisher of the search parameter
3493* [StructureDefinition](structuredefinition.html): Name of the publisher of the structure definition
3494* [StructureMap](structuremap.html): Name of the publisher of the structure map
3495* [TerminologyCapabilities](terminologycapabilities.html): Name of the publisher of the terminology capabilities
3496* [ValueSet](valueset.html): Name of the publisher of the value set
3497</b><br>
3498   * Type: <b>string</b><br>
3499   * Path: <b>CapabilityStatement.publisher | CodeSystem.publisher | CompartmentDefinition.publisher | ConceptMap.publisher | GraphDefinition.publisher | ImplementationGuide.publisher | MessageDefinition.publisher | NamingSystem.publisher | OperationDefinition.publisher | SearchParameter.publisher | StructureDefinition.publisher | StructureMap.publisher | TerminologyCapabilities.publisher | ValueSet.publisher</b><br>
3500   * </p>
3501   */
3502  public static final ca.uhn.fhir.rest.gclient.StringClientParam PUBLISHER = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_PUBLISHER);
3503
3504 /**
3505   * Search parameter: <b>status</b>
3506   * <p>
3507   * Description: <b>Multiple Resources: 
3508
3509* [CapabilityStatement](capabilitystatement.html): The current status of the capability statement
3510* [CodeSystem](codesystem.html): The current status of the code system
3511* [CompartmentDefinition](compartmentdefinition.html): The current status of the compartment definition
3512* [ConceptMap](conceptmap.html): The current status of the concept map
3513* [GraphDefinition](graphdefinition.html): The current status of the graph definition
3514* [ImplementationGuide](implementationguide.html): The current status of the implementation guide
3515* [MessageDefinition](messagedefinition.html): The current status of the message definition
3516* [NamingSystem](namingsystem.html): The current status of the naming system
3517* [OperationDefinition](operationdefinition.html): The current status of the operation definition
3518* [SearchParameter](searchparameter.html): The current status of the search parameter
3519* [StructureDefinition](structuredefinition.html): The current status of the structure definition
3520* [StructureMap](structuremap.html): The current status of the structure map
3521* [TerminologyCapabilities](terminologycapabilities.html): The current status of the terminology capabilities
3522* [ValueSet](valueset.html): The current status of the value set
3523</b><br>
3524   * Type: <b>token</b><br>
3525   * Path: <b>CapabilityStatement.status | CodeSystem.status | CompartmentDefinition.status | ConceptMap.status | GraphDefinition.status | ImplementationGuide.status | MessageDefinition.status | NamingSystem.status | OperationDefinition.status | SearchParameter.status | StructureDefinition.status | StructureMap.status | TerminologyCapabilities.status | ValueSet.status</b><br>
3526   * </p>
3527   */
3528  @SearchParamDefinition(name="status", path="CapabilityStatement.status | CodeSystem.status | CompartmentDefinition.status | ConceptMap.status | GraphDefinition.status | ImplementationGuide.status | MessageDefinition.status | NamingSystem.status | OperationDefinition.status | SearchParameter.status | StructureDefinition.status | StructureMap.status | TerminologyCapabilities.status | ValueSet.status", description="Multiple Resources: \r\n\r\n* [CapabilityStatement](capabilitystatement.html): The current status of the capability statement\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* [GraphDefinition](graphdefinition.html): The current status of the graph definition\r\n* [ImplementationGuide](implementationguide.html): The current status of the implementation guide\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* [OperationDefinition](operationdefinition.html): The current status of the operation definition\r\n* [SearchParameter](searchparameter.html): The current status of the search parameter\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* [TerminologyCapabilities](terminologycapabilities.html): The current status of the terminology capabilities\r\n* [ValueSet](valueset.html): The current status of the value set\r\n", type="token" )
3529  public static final String SP_STATUS = "status";
3530 /**
3531   * <b>Fluent Client</b> search parameter constant for <b>status</b>
3532   * <p>
3533   * Description: <b>Multiple Resources: 
3534
3535* [CapabilityStatement](capabilitystatement.html): The current status of the capability statement
3536* [CodeSystem](codesystem.html): The current status of the code system
3537* [CompartmentDefinition](compartmentdefinition.html): The current status of the compartment definition
3538* [ConceptMap](conceptmap.html): The current status of the concept map
3539* [GraphDefinition](graphdefinition.html): The current status of the graph definition
3540* [ImplementationGuide](implementationguide.html): The current status of the implementation guide
3541* [MessageDefinition](messagedefinition.html): The current status of the message definition
3542* [NamingSystem](namingsystem.html): The current status of the naming system
3543* [OperationDefinition](operationdefinition.html): The current status of the operation definition
3544* [SearchParameter](searchparameter.html): The current status of the search parameter
3545* [StructureDefinition](structuredefinition.html): The current status of the structure definition
3546* [StructureMap](structuremap.html): The current status of the structure map
3547* [TerminologyCapabilities](terminologycapabilities.html): The current status of the terminology capabilities
3548* [ValueSet](valueset.html): The current status of the value set
3549</b><br>
3550   * Type: <b>token</b><br>
3551   * Path: <b>CapabilityStatement.status | CodeSystem.status | CompartmentDefinition.status | ConceptMap.status | GraphDefinition.status | ImplementationGuide.status | MessageDefinition.status | NamingSystem.status | OperationDefinition.status | SearchParameter.status | StructureDefinition.status | StructureMap.status | TerminologyCapabilities.status | ValueSet.status</b><br>
3552   * </p>
3553   */
3554  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
3555
3556 /**
3557   * Search parameter: <b>title</b>
3558   * <p>
3559   * Description: <b>Multiple Resources: 
3560
3561* [CapabilityStatement](capabilitystatement.html): The human-friendly name of the capability statement
3562* [CodeSystem](codesystem.html): The human-friendly name of the code system
3563* [ConceptMap](conceptmap.html): The human-friendly name of the concept map
3564* [ImplementationGuide](implementationguide.html): The human-friendly name of the implementation guide
3565* [MessageDefinition](messagedefinition.html): The human-friendly name of the message definition
3566* [OperationDefinition](operationdefinition.html): The human-friendly name of the operation definition
3567* [StructureDefinition](structuredefinition.html): The human-friendly name of the structure definition
3568* [StructureMap](structuremap.html): The human-friendly name of the structure map
3569* [TerminologyCapabilities](terminologycapabilities.html): The human-friendly name of the terminology capabilities
3570* [ValueSet](valueset.html): The human-friendly name of the value set
3571</b><br>
3572   * Type: <b>string</b><br>
3573   * Path: <b>CapabilityStatement.title | CodeSystem.title | ConceptMap.title | ImplementationGuide.title | MessageDefinition.title | OperationDefinition.title | StructureDefinition.title | StructureMap.title | TerminologyCapabilities.title | ValueSet.title</b><br>
3574   * </p>
3575   */
3576  @SearchParamDefinition(name="title", path="CapabilityStatement.title | CodeSystem.title | ConceptMap.title | ImplementationGuide.title | MessageDefinition.title | OperationDefinition.title | StructureDefinition.title | StructureMap.title | TerminologyCapabilities.title | ValueSet.title", description="Multiple Resources: \r\n\r\n* [CapabilityStatement](capabilitystatement.html): The human-friendly name of the capability statement\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* [ImplementationGuide](implementationguide.html): The human-friendly name of the implementation guide\r\n* [MessageDefinition](messagedefinition.html): The human-friendly name of the message definition\r\n* [OperationDefinition](operationdefinition.html): The human-friendly name of the operation definition\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* [TerminologyCapabilities](terminologycapabilities.html): The human-friendly name of the terminology capabilities\r\n* [ValueSet](valueset.html): The human-friendly name of the value set\r\n", type="string" )
3577  public static final String SP_TITLE = "title";
3578 /**
3579   * <b>Fluent Client</b> search parameter constant for <b>title</b>
3580   * <p>
3581   * Description: <b>Multiple Resources: 
3582
3583* [CapabilityStatement](capabilitystatement.html): The human-friendly name of the capability statement
3584* [CodeSystem](codesystem.html): The human-friendly name of the code system
3585* [ConceptMap](conceptmap.html): The human-friendly name of the concept map
3586* [ImplementationGuide](implementationguide.html): The human-friendly name of the implementation guide
3587* [MessageDefinition](messagedefinition.html): The human-friendly name of the message definition
3588* [OperationDefinition](operationdefinition.html): The human-friendly name of the operation definition
3589* [StructureDefinition](structuredefinition.html): The human-friendly name of the structure definition
3590* [StructureMap](structuremap.html): The human-friendly name of the structure map
3591* [TerminologyCapabilities](terminologycapabilities.html): The human-friendly name of the terminology capabilities
3592* [ValueSet](valueset.html): The human-friendly name of the value set
3593</b><br>
3594   * Type: <b>string</b><br>
3595   * Path: <b>CapabilityStatement.title | CodeSystem.title | ConceptMap.title | ImplementationGuide.title | MessageDefinition.title | OperationDefinition.title | StructureDefinition.title | StructureMap.title | TerminologyCapabilities.title | ValueSet.title</b><br>
3596   * </p>
3597   */
3598  public static final ca.uhn.fhir.rest.gclient.StringClientParam TITLE = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_TITLE);
3599
3600 /**
3601   * Search parameter: <b>url</b>
3602   * <p>
3603   * Description: <b>Multiple Resources: 
3604
3605* [CapabilityStatement](capabilitystatement.html): The uri that identifies the capability statement
3606* [CodeSystem](codesystem.html): The uri that identifies the code system
3607* [CompartmentDefinition](compartmentdefinition.html): The uri that identifies the compartment definition
3608* [ConceptMap](conceptmap.html): The uri that identifies the concept map
3609* [GraphDefinition](graphdefinition.html): The uri that identifies the graph definition
3610* [ImplementationGuide](implementationguide.html): The uri that identifies the implementation guide
3611* [MessageDefinition](messagedefinition.html): The uri that identifies the message definition
3612* [NamingSystem](namingsystem.html): The uri that identifies the naming system
3613* [OperationDefinition](operationdefinition.html): The uri that identifies the operation definition
3614* [SearchParameter](searchparameter.html): The uri that identifies the search parameter
3615* [StructureDefinition](structuredefinition.html): The uri that identifies the structure definition
3616* [StructureMap](structuremap.html): The uri that identifies the structure map
3617* [TerminologyCapabilities](terminologycapabilities.html): The uri that identifies the terminology capabilities
3618* [ValueSet](valueset.html): The uri that identifies the value set
3619</b><br>
3620   * Type: <b>uri</b><br>
3621   * Path: <b>CapabilityStatement.url | CodeSystem.url | CompartmentDefinition.url | ConceptMap.url | GraphDefinition.url | ImplementationGuide.url | MessageDefinition.url | NamingSystem.url | OperationDefinition.url | SearchParameter.url | StructureDefinition.url | StructureMap.url | TerminologyCapabilities.url | ValueSet.url</b><br>
3622   * </p>
3623   */
3624  @SearchParamDefinition(name="url", path="CapabilityStatement.url | CodeSystem.url | CompartmentDefinition.url | ConceptMap.url | GraphDefinition.url | ImplementationGuide.url | MessageDefinition.url | NamingSystem.url | OperationDefinition.url | SearchParameter.url | StructureDefinition.url | StructureMap.url | TerminologyCapabilities.url | ValueSet.url", description="Multiple Resources: \r\n\r\n* [CapabilityStatement](capabilitystatement.html): The uri that identifies the capability statement\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* [GraphDefinition](graphdefinition.html): The uri that identifies the graph definition\r\n* [ImplementationGuide](implementationguide.html): The uri that identifies the implementation guide\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* [OperationDefinition](operationdefinition.html): The uri that identifies the operation definition\r\n* [SearchParameter](searchparameter.html): The uri that identifies the search parameter\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* [TerminologyCapabilities](terminologycapabilities.html): The uri that identifies the terminology capabilities\r\n* [ValueSet](valueset.html): The uri that identifies the value set\r\n", type="uri" )
3625  public static final String SP_URL = "url";
3626 /**
3627   * <b>Fluent Client</b> search parameter constant for <b>url</b>
3628   * <p>
3629   * Description: <b>Multiple Resources: 
3630
3631* [CapabilityStatement](capabilitystatement.html): The uri that identifies the capability statement
3632* [CodeSystem](codesystem.html): The uri that identifies the code system
3633* [CompartmentDefinition](compartmentdefinition.html): The uri that identifies the compartment definition
3634* [ConceptMap](conceptmap.html): The uri that identifies the concept map
3635* [GraphDefinition](graphdefinition.html): The uri that identifies the graph definition
3636* [ImplementationGuide](implementationguide.html): The uri that identifies the implementation guide
3637* [MessageDefinition](messagedefinition.html): The uri that identifies the message definition
3638* [NamingSystem](namingsystem.html): The uri that identifies the naming system
3639* [OperationDefinition](operationdefinition.html): The uri that identifies the operation definition
3640* [SearchParameter](searchparameter.html): The uri that identifies the search parameter
3641* [StructureDefinition](structuredefinition.html): The uri that identifies the structure definition
3642* [StructureMap](structuremap.html): The uri that identifies the structure map
3643* [TerminologyCapabilities](terminologycapabilities.html): The uri that identifies the terminology capabilities
3644* [ValueSet](valueset.html): The uri that identifies the value set
3645</b><br>
3646   * Type: <b>uri</b><br>
3647   * Path: <b>CapabilityStatement.url | CodeSystem.url | CompartmentDefinition.url | ConceptMap.url | GraphDefinition.url | ImplementationGuide.url | MessageDefinition.url | NamingSystem.url | OperationDefinition.url | SearchParameter.url | StructureDefinition.url | StructureMap.url | TerminologyCapabilities.url | ValueSet.url</b><br>
3648   * </p>
3649   */
3650  public static final ca.uhn.fhir.rest.gclient.UriClientParam URL = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_URL);
3651
3652 /**
3653   * Search parameter: <b>version</b>
3654   * <p>
3655   * Description: <b>Multiple Resources: 
3656
3657* [CapabilityStatement](capabilitystatement.html): The business version of the capability statement
3658* [CodeSystem](codesystem.html): The business version of the code system
3659* [CompartmentDefinition](compartmentdefinition.html): The business version of the compartment definition
3660* [ConceptMap](conceptmap.html): The business version of the concept map
3661* [GraphDefinition](graphdefinition.html): The business version of the graph definition
3662* [ImplementationGuide](implementationguide.html): The business version of the implementation guide
3663* [MessageDefinition](messagedefinition.html): The business version of the message definition
3664* [NamingSystem](namingsystem.html): The business version of the naming system
3665* [OperationDefinition](operationdefinition.html): The business version of the operation definition
3666* [SearchParameter](searchparameter.html): The business version of the search parameter
3667* [StructureDefinition](structuredefinition.html): The business version of the structure definition
3668* [StructureMap](structuremap.html): The business version of the structure map
3669* [TerminologyCapabilities](terminologycapabilities.html): The business version of the terminology capabilities
3670* [ValueSet](valueset.html): The business version of the value set
3671</b><br>
3672   * Type: <b>token</b><br>
3673   * Path: <b>CapabilityStatement.version | CodeSystem.version | CompartmentDefinition.version | ConceptMap.version | GraphDefinition.version | ImplementationGuide.version | MessageDefinition.version | NamingSystem.version | OperationDefinition.version | SearchParameter.version | StructureDefinition.version | StructureMap.version | TerminologyCapabilities.version | ValueSet.version</b><br>
3674   * </p>
3675   */
3676  @SearchParamDefinition(name="version", path="CapabilityStatement.version | CodeSystem.version | CompartmentDefinition.version | ConceptMap.version | GraphDefinition.version | ImplementationGuide.version | MessageDefinition.version | NamingSystem.version | OperationDefinition.version | SearchParameter.version | StructureDefinition.version | StructureMap.version | TerminologyCapabilities.version | ValueSet.version", description="Multiple Resources: \r\n\r\n* [CapabilityStatement](capabilitystatement.html): The business version of the capability statement\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* [GraphDefinition](graphdefinition.html): The business version of the graph definition\r\n* [ImplementationGuide](implementationguide.html): The business version of the implementation guide\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* [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* [TerminologyCapabilities](terminologycapabilities.html): The business version of the terminology capabilities\r\n* [ValueSet](valueset.html): The business version of the value set\r\n", type="token" )
3677  public static final String SP_VERSION = "version";
3678 /**
3679   * <b>Fluent Client</b> search parameter constant for <b>version</b>
3680   * <p>
3681   * Description: <b>Multiple Resources: 
3682
3683* [CapabilityStatement](capabilitystatement.html): The business version of the capability statement
3684* [CodeSystem](codesystem.html): The business version of the code system
3685* [CompartmentDefinition](compartmentdefinition.html): The business version of the compartment definition
3686* [ConceptMap](conceptmap.html): The business version of the concept map
3687* [GraphDefinition](graphdefinition.html): The business version of the graph definition
3688* [ImplementationGuide](implementationguide.html): The business version of the implementation guide
3689* [MessageDefinition](messagedefinition.html): The business version of the message definition
3690* [NamingSystem](namingsystem.html): The business version of the naming system
3691* [OperationDefinition](operationdefinition.html): The business version of the operation definition
3692* [SearchParameter](searchparameter.html): The business version of the search parameter
3693* [StructureDefinition](structuredefinition.html): The business version of the structure definition
3694* [StructureMap](structuremap.html): The business version of the structure map
3695* [TerminologyCapabilities](terminologycapabilities.html): The business version of the terminology capabilities
3696* [ValueSet](valueset.html): The business version of the value set
3697</b><br>
3698   * Type: <b>token</b><br>
3699   * Path: <b>CapabilityStatement.version | CodeSystem.version | CompartmentDefinition.version | ConceptMap.version | GraphDefinition.version | ImplementationGuide.version | MessageDefinition.version | NamingSystem.version | OperationDefinition.version | SearchParameter.version | StructureDefinition.version | StructureMap.version | TerminologyCapabilities.version | ValueSet.version</b><br>
3700   * </p>
3701   */
3702  public static final ca.uhn.fhir.rest.gclient.TokenClientParam VERSION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_VERSION);
3703
3704
3705}
3706