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