001package org.hl7.fhir.r5.model;
002
003
004/*
005  Copyright (c) 2011+, HL7, Inc.
006  All rights reserved.
007  
008  Redistribution and use in source and binary forms, with or without modification, \
009  are permitted provided that the following conditions are met:
010  
011   * Redistributions of source code must retain the above copyright notice, this \
012     list of conditions and the following disclaimer.
013   * Redistributions in binary form must reproduce the above copyright notice, \
014     this list of conditions and the following disclaimer in the documentation \
015     and/or other materials provided with the distribution.
016   * Neither the name of HL7 nor the names of its contributors may be used to 
017     endorse or promote products derived from this software without specific 
018     prior written permission.
019  
020  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND \
021  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED \
022  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. \
023  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, \
024  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT \
025  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR \
026  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, \
027  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) \
028  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE \
029  POSSIBILITY OF SUCH DAMAGE.
030  */
031
032// Generated on Fri, Jul 15, 2022 11:20+1000 for FHIR v5.0.0-snapshot2
033
034import java.util.ArrayList;
035import java.util.Date;
036import java.util.List;
037import org.hl7.fhir.utilities.Utilities;
038import org.hl7.fhir.r5.model.Enumerations.*;
039import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
040import org.hl7.fhir.exceptions.FHIRException;
041import org.hl7.fhir.instance.model.api.ICompositeType;
042import ca.uhn.fhir.model.api.annotation.ResourceDef;
043import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
044import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
045import ca.uhn.fhir.model.api.annotation.Child;
046import ca.uhn.fhir.model.api.annotation.ChildOrder;
047import ca.uhn.fhir.model.api.annotation.Description;
048import ca.uhn.fhir.model.api.annotation.Block;
049
050/**
051 * Defines the characteristics of a message that can be shared between systems, including the type of event that initiates the message, the content to be transmitted and what response(s), if any, are permitted.
052 */
053@ResourceDef(name="MessageDefinition", profile="http://hl7.org/fhir/StructureDefinition/MessageDefinition")
054public class MessageDefinition extends CanonicalResource {
055
056    public enum MessageSignificanceCategory {
057        /**
058         * The message represents/requests a change that should not be processed more than once; e.g., making a booking for an appointment.
059         */
060        CONSEQUENCE, 
061        /**
062         * The message represents a response to query for current information. Retrospective processing is wrong and/or wasteful.
063         */
064        CURRENCY, 
065        /**
066         * The content is not necessarily intended to be current, and it can be reprocessed, though there may be version issues created by processing old notifications.
067         */
068        NOTIFICATION, 
069        /**
070         * added to help the parsers with the generic types
071         */
072        NULL;
073        public static MessageSignificanceCategory fromCode(String codeString) throws FHIRException {
074            if (codeString == null || "".equals(codeString))
075                return null;
076        if ("consequence".equals(codeString))
077          return CONSEQUENCE;
078        if ("currency".equals(codeString))
079          return CURRENCY;
080        if ("notification".equals(codeString))
081          return NOTIFICATION;
082        if (Configuration.isAcceptInvalidEnums())
083          return null;
084        else
085          throw new FHIRException("Unknown MessageSignificanceCategory code '"+codeString+"'");
086        }
087        public String toCode() {
088          switch (this) {
089            case CONSEQUENCE: return "consequence";
090            case CURRENCY: return "currency";
091            case NOTIFICATION: return "notification";
092            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=1, 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 CanonicalType graph;
1115
1116    private static final long serialVersionUID = -1381412553L;
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.). This is the underlying object with id, value and extensions. The accessor "getGraph" gives direct access to the value
2302     */
2303    public CanonicalType getGraphElement() { 
2304      if (this.graph == null)
2305        if (Configuration.errorOnAutoCreate())
2306          throw new Error("Attempt to auto-create MessageDefinition.graph");
2307        else if (Configuration.doAutoCreate())
2308          this.graph = new CanonicalType(); // bb
2309      return this.graph;
2310    }
2311
2312    public boolean hasGraphElement() { 
2313      return this.graph != null && !this.graph.isEmpty();
2314    }
2315
2316    public boolean hasGraph() { 
2317      return this.graph != null && !this.graph.isEmpty();
2318    }
2319
2320    /**
2321     * @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.). This is the underlying object with id, value and extensions. The accessor "getGraph" gives direct access to the value
2322     */
2323    public MessageDefinition setGraphElement(CanonicalType value) { 
2324      this.graph = value;
2325      return this;
2326    }
2327
2328    /**
2329     * @return 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.
2330     */
2331    public String getGraph() { 
2332      return this.graph == null ? null : this.graph.getValue();
2333    }
2334
2335    /**
2336     * @param value 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.
2337     */
2338    public MessageDefinition setGraph(String value) { 
2339      if (Utilities.noString(value))
2340        this.graph = null;
2341      else {
2342        if (this.graph == null)
2343          this.graph = new CanonicalType();
2344        this.graph.setValue(value);
2345      }
2346      return this;
2347    }
2348
2349      protected void listChildren(List<Property> children) {
2350        super.listChildren(children);
2351        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));
2352        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));
2353        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));
2354        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));
2355        children.add(new Property("title", "string", "A short, descriptive, user-friendly title for the message definition.", 0, 1, title));
2356        children.add(new Property("replaces", "canonical(MessageDefinition)", "A MessageDefinition that is superseded by this definition.", 0, java.lang.Integer.MAX_VALUE, replaces));
2357        children.add(new Property("status", "code", "The status of this message definition. Enables tracking the life-cycle of the content.", 0, 1, status));
2358        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));
2359        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));
2360        children.add(new Property("publisher", "string", "The name of the organization or individual that published the message definition.", 0, 1, publisher));
2361        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));
2362        children.add(new Property("description", "markdown", "A free text natural language description of the message definition from a consumer's perspective.", 0, 1, description));
2363        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));
2364        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));
2365        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));
2366        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));
2367        children.add(new Property("base", "canonical(MessageDefinition)", "The MessageDefinition that is the basis for the contents of this resource.", 0, 1, base));
2368        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));
2369        children.add(new Property("event[x]", "Coding|uri", "Event code or link to the EventDefinition.", 0, 1, event));
2370        children.add(new Property("category", "code", "The impact of the content of the message.", 0, 1, category));
2371        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));
2372        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));
2373        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));
2374        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, 1, graph));
2375      }
2376
2377      @Override
2378      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
2379        switch (_hash) {
2380        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);
2381        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);
2382        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);
2383        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);
2384        case 110371416: /*title*/  return new Property("title", "string", "A short, descriptive, user-friendly title for the message definition.", 0, 1, title);
2385        case -430332865: /*replaces*/  return new Property("replaces", "canonical(MessageDefinition)", "A MessageDefinition that is superseded by this definition.", 0, java.lang.Integer.MAX_VALUE, replaces);
2386        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);
2387        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);
2388        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);
2389        case 1447404028: /*publisher*/  return new Property("publisher", "string", "The name of the organization or individual that published the message definition.", 0, 1, publisher);
2390        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);
2391        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);
2392        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);
2393        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);
2394        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);
2395        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);
2396        case 3016401: /*base*/  return new Property("base", "canonical(MessageDefinition)", "The MessageDefinition that is the basis for the contents of this resource.", 0, 1, base);
2397        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);
2398        case 278115238: /*event[x]*/  return new Property("event[x]", "Coding|uri", "Event code or link to the EventDefinition.", 0, 1, event);
2399        case 96891546: /*event*/  return new Property("event[x]", "Coding|uri", "Event code or link to the EventDefinition.", 0, 1, event);
2400        case -355957084: /*eventCoding*/  return new Property("event[x]", "Coding", "Event code or link to the EventDefinition.", 0, 1, event);
2401        case 278109298: /*eventUri*/  return new Property("event[x]", "uri", "Event code or link to the EventDefinition.", 0, 1, event);
2402        case 50511102: /*category*/  return new Property("category", "code", "The impact of the content of the message.", 0, 1, category);
2403        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);
2404        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);
2405        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);
2406        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, 1, graph);
2407        default: return super.getNamedProperty(_hash, _name, _checkValid);
2408        }
2409
2410      }
2411
2412      @Override
2413      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
2414        switch (hash) {
2415        case 116079: /*url*/ return this.url == null ? new Base[0] : new Base[] {this.url}; // UriType
2416        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
2417        case 351608024: /*version*/ return this.version == null ? new Base[0] : new Base[] {this.version}; // StringType
2418        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
2419        case 110371416: /*title*/ return this.title == null ? new Base[0] : new Base[] {this.title}; // StringType
2420        case -430332865: /*replaces*/ return this.replaces == null ? new Base[0] : this.replaces.toArray(new Base[this.replaces.size()]); // CanonicalType
2421        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<PublicationStatus>
2422        case -404562712: /*experimental*/ return this.experimental == null ? new Base[0] : new Base[] {this.experimental}; // BooleanType
2423        case 3076014: /*date*/ return this.date == null ? new Base[0] : new Base[] {this.date}; // DateTimeType
2424        case 1447404028: /*publisher*/ return this.publisher == null ? new Base[0] : new Base[] {this.publisher}; // StringType
2425        case 951526432: /*contact*/ return this.contact == null ? new Base[0] : this.contact.toArray(new Base[this.contact.size()]); // ContactDetail
2426        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // MarkdownType
2427        case -669707736: /*useContext*/ return this.useContext == null ? new Base[0] : this.useContext.toArray(new Base[this.useContext.size()]); // UsageContext
2428        case -507075711: /*jurisdiction*/ return this.jurisdiction == null ? new Base[0] : this.jurisdiction.toArray(new Base[this.jurisdiction.size()]); // CodeableConcept
2429        case -220463842: /*purpose*/ return this.purpose == null ? new Base[0] : new Base[] {this.purpose}; // MarkdownType
2430        case 1522889671: /*copyright*/ return this.copyright == null ? new Base[0] : new Base[] {this.copyright}; // MarkdownType
2431        case 3016401: /*base*/ return this.base == null ? new Base[0] : new Base[] {this.base}; // CanonicalType
2432        case -995424086: /*parent*/ return this.parent == null ? new Base[0] : this.parent.toArray(new Base[this.parent.size()]); // CanonicalType
2433        case 96891546: /*event*/ return this.event == null ? new Base[0] : new Base[] {this.event}; // DataType
2434        case 50511102: /*category*/ return this.category == null ? new Base[0] : new Base[] {this.category}; // Enumeration<MessageSignificanceCategory>
2435        case 97604824: /*focus*/ return this.focus == null ? new Base[0] : this.focus.toArray(new Base[this.focus.size()]); // MessageDefinitionFocusComponent
2436        case 791597824: /*responseRequired*/ return this.responseRequired == null ? new Base[0] : new Base[] {this.responseRequired}; // Enumeration<MessageheaderResponseRequest>
2437        case -1130933751: /*allowedResponse*/ return this.allowedResponse == null ? new Base[0] : this.allowedResponse.toArray(new Base[this.allowedResponse.size()]); // MessageDefinitionAllowedResponseComponent
2438        case 98615630: /*graph*/ return this.graph == null ? new Base[0] : new Base[] {this.graph}; // CanonicalType
2439        default: return super.getProperty(hash, name, checkValid);
2440        }
2441
2442      }
2443
2444      @Override
2445      public Base setProperty(int hash, String name, Base value) throws FHIRException {
2446        switch (hash) {
2447        case 116079: // url
2448          this.url = TypeConvertor.castToUri(value); // UriType
2449          return value;
2450        case -1618432855: // identifier
2451          this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier
2452          return value;
2453        case 351608024: // version
2454          this.version = TypeConvertor.castToString(value); // StringType
2455          return value;
2456        case 3373707: // name
2457          this.name = TypeConvertor.castToString(value); // StringType
2458          return value;
2459        case 110371416: // title
2460          this.title = TypeConvertor.castToString(value); // StringType
2461          return value;
2462        case -430332865: // replaces
2463          this.getReplaces().add(TypeConvertor.castToCanonical(value)); // CanonicalType
2464          return value;
2465        case -892481550: // status
2466          value = new PublicationStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
2467          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
2468          return value;
2469        case -404562712: // experimental
2470          this.experimental = TypeConvertor.castToBoolean(value); // BooleanType
2471          return value;
2472        case 3076014: // date
2473          this.date = TypeConvertor.castToDateTime(value); // DateTimeType
2474          return value;
2475        case 1447404028: // publisher
2476          this.publisher = TypeConvertor.castToString(value); // StringType
2477          return value;
2478        case 951526432: // contact
2479          this.getContact().add(TypeConvertor.castToContactDetail(value)); // ContactDetail
2480          return value;
2481        case -1724546052: // description
2482          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
2483          return value;
2484        case -669707736: // useContext
2485          this.getUseContext().add(TypeConvertor.castToUsageContext(value)); // UsageContext
2486          return value;
2487        case -507075711: // jurisdiction
2488          this.getJurisdiction().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
2489          return value;
2490        case -220463842: // purpose
2491          this.purpose = TypeConvertor.castToMarkdown(value); // MarkdownType
2492          return value;
2493        case 1522889671: // copyright
2494          this.copyright = TypeConvertor.castToMarkdown(value); // MarkdownType
2495          return value;
2496        case 3016401: // base
2497          this.base = TypeConvertor.castToCanonical(value); // CanonicalType
2498          return value;
2499        case -995424086: // parent
2500          this.getParent().add(TypeConvertor.castToCanonical(value)); // CanonicalType
2501          return value;
2502        case 96891546: // event
2503          this.event = TypeConvertor.castToType(value); // DataType
2504          return value;
2505        case 50511102: // category
2506          value = new MessageSignificanceCategoryEnumFactory().fromType(TypeConvertor.castToCode(value));
2507          this.category = (Enumeration) value; // Enumeration<MessageSignificanceCategory>
2508          return value;
2509        case 97604824: // focus
2510          this.getFocus().add((MessageDefinitionFocusComponent) value); // MessageDefinitionFocusComponent
2511          return value;
2512        case 791597824: // responseRequired
2513          value = new MessageheaderResponseRequestEnumFactory().fromType(TypeConvertor.castToCode(value));
2514          this.responseRequired = (Enumeration) value; // Enumeration<MessageheaderResponseRequest>
2515          return value;
2516        case -1130933751: // allowedResponse
2517          this.getAllowedResponse().add((MessageDefinitionAllowedResponseComponent) value); // MessageDefinitionAllowedResponseComponent
2518          return value;
2519        case 98615630: // graph
2520          this.graph = TypeConvertor.castToCanonical(value); // CanonicalType
2521          return value;
2522        default: return super.setProperty(hash, name, value);
2523        }
2524
2525      }
2526
2527      @Override
2528      public Base setProperty(String name, Base value) throws FHIRException {
2529        if (name.equals("url")) {
2530          this.url = TypeConvertor.castToUri(value); // UriType
2531        } else if (name.equals("identifier")) {
2532          this.getIdentifier().add(TypeConvertor.castToIdentifier(value));
2533        } else if (name.equals("version")) {
2534          this.version = TypeConvertor.castToString(value); // StringType
2535        } else if (name.equals("name")) {
2536          this.name = TypeConvertor.castToString(value); // StringType
2537        } else if (name.equals("title")) {
2538          this.title = TypeConvertor.castToString(value); // StringType
2539        } else if (name.equals("replaces")) {
2540          this.getReplaces().add(TypeConvertor.castToCanonical(value));
2541        } else if (name.equals("status")) {
2542          value = new PublicationStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
2543          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
2544        } else if (name.equals("experimental")) {
2545          this.experimental = TypeConvertor.castToBoolean(value); // BooleanType
2546        } else if (name.equals("date")) {
2547          this.date = TypeConvertor.castToDateTime(value); // DateTimeType
2548        } else if (name.equals("publisher")) {
2549          this.publisher = TypeConvertor.castToString(value); // StringType
2550        } else if (name.equals("contact")) {
2551          this.getContact().add(TypeConvertor.castToContactDetail(value));
2552        } else if (name.equals("description")) {
2553          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
2554        } else if (name.equals("useContext")) {
2555          this.getUseContext().add(TypeConvertor.castToUsageContext(value));
2556        } else if (name.equals("jurisdiction")) {
2557          this.getJurisdiction().add(TypeConvertor.castToCodeableConcept(value));
2558        } else if (name.equals("purpose")) {
2559          this.purpose = TypeConvertor.castToMarkdown(value); // MarkdownType
2560        } else if (name.equals("copyright")) {
2561          this.copyright = TypeConvertor.castToMarkdown(value); // MarkdownType
2562        } else if (name.equals("base")) {
2563          this.base = TypeConvertor.castToCanonical(value); // CanonicalType
2564        } else if (name.equals("parent")) {
2565          this.getParent().add(TypeConvertor.castToCanonical(value));
2566        } else if (name.equals("event[x]")) {
2567          this.event = TypeConvertor.castToType(value); // DataType
2568        } else if (name.equals("category")) {
2569          value = new MessageSignificanceCategoryEnumFactory().fromType(TypeConvertor.castToCode(value));
2570          this.category = (Enumeration) value; // Enumeration<MessageSignificanceCategory>
2571        } else if (name.equals("focus")) {
2572          this.getFocus().add((MessageDefinitionFocusComponent) value);
2573        } else if (name.equals("responseRequired")) {
2574          value = new MessageheaderResponseRequestEnumFactory().fromType(TypeConvertor.castToCode(value));
2575          this.responseRequired = (Enumeration) value; // Enumeration<MessageheaderResponseRequest>
2576        } else if (name.equals("allowedResponse")) {
2577          this.getAllowedResponse().add((MessageDefinitionAllowedResponseComponent) value);
2578        } else if (name.equals("graph")) {
2579          this.graph = TypeConvertor.castToCanonical(value); // CanonicalType
2580        } else
2581          return super.setProperty(name, value);
2582        return value;
2583      }
2584
2585      @Override
2586      public Base makeProperty(int hash, String name) throws FHIRException {
2587        switch (hash) {
2588        case 116079:  return getUrlElement();
2589        case -1618432855:  return addIdentifier(); 
2590        case 351608024:  return getVersionElement();
2591        case 3373707:  return getNameElement();
2592        case 110371416:  return getTitleElement();
2593        case -430332865:  return addReplacesElement();
2594        case -892481550:  return getStatusElement();
2595        case -404562712:  return getExperimentalElement();
2596        case 3076014:  return getDateElement();
2597        case 1447404028:  return getPublisherElement();
2598        case 951526432:  return addContact(); 
2599        case -1724546052:  return getDescriptionElement();
2600        case -669707736:  return addUseContext(); 
2601        case -507075711:  return addJurisdiction(); 
2602        case -220463842:  return getPurposeElement();
2603        case 1522889671:  return getCopyrightElement();
2604        case 3016401:  return getBaseElement();
2605        case -995424086:  return addParentElement();
2606        case 278115238:  return getEvent();
2607        case 96891546:  return getEvent();
2608        case 50511102:  return getCategoryElement();
2609        case 97604824:  return addFocus(); 
2610        case 791597824:  return getResponseRequiredElement();
2611        case -1130933751:  return addAllowedResponse(); 
2612        case 98615630:  return getGraphElement();
2613        default: return super.makeProperty(hash, name);
2614        }
2615
2616      }
2617
2618      @Override
2619      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
2620        switch (hash) {
2621        case 116079: /*url*/ return new String[] {"uri"};
2622        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
2623        case 351608024: /*version*/ return new String[] {"string"};
2624        case 3373707: /*name*/ return new String[] {"string"};
2625        case 110371416: /*title*/ return new String[] {"string"};
2626        case -430332865: /*replaces*/ return new String[] {"canonical"};
2627        case -892481550: /*status*/ return new String[] {"code"};
2628        case -404562712: /*experimental*/ return new String[] {"boolean"};
2629        case 3076014: /*date*/ return new String[] {"dateTime"};
2630        case 1447404028: /*publisher*/ return new String[] {"string"};
2631        case 951526432: /*contact*/ return new String[] {"ContactDetail"};
2632        case -1724546052: /*description*/ return new String[] {"markdown"};
2633        case -669707736: /*useContext*/ return new String[] {"UsageContext"};
2634        case -507075711: /*jurisdiction*/ return new String[] {"CodeableConcept"};
2635        case -220463842: /*purpose*/ return new String[] {"markdown"};
2636        case 1522889671: /*copyright*/ return new String[] {"markdown"};
2637        case 3016401: /*base*/ return new String[] {"canonical"};
2638        case -995424086: /*parent*/ return new String[] {"canonical"};
2639        case 96891546: /*event*/ return new String[] {"Coding", "uri"};
2640        case 50511102: /*category*/ return new String[] {"code"};
2641        case 97604824: /*focus*/ return new String[] {};
2642        case 791597824: /*responseRequired*/ return new String[] {"code"};
2643        case -1130933751: /*allowedResponse*/ return new String[] {};
2644        case 98615630: /*graph*/ return new String[] {"canonical"};
2645        default: return super.getTypesForProperty(hash, name);
2646        }
2647
2648      }
2649
2650      @Override
2651      public Base addChild(String name) throws FHIRException {
2652        if (name.equals("url")) {
2653          throw new FHIRException("Cannot call addChild on a primitive type MessageDefinition.url");
2654        }
2655        else if (name.equals("identifier")) {
2656          return addIdentifier();
2657        }
2658        else if (name.equals("version")) {
2659          throw new FHIRException("Cannot call addChild on a primitive type MessageDefinition.version");
2660        }
2661        else if (name.equals("name")) {
2662          throw new FHIRException("Cannot call addChild on a primitive type MessageDefinition.name");
2663        }
2664        else if (name.equals("title")) {
2665          throw new FHIRException("Cannot call addChild on a primitive type MessageDefinition.title");
2666        }
2667        else if (name.equals("replaces")) {
2668          throw new FHIRException("Cannot call addChild on a primitive type MessageDefinition.replaces");
2669        }
2670        else if (name.equals("status")) {
2671          throw new FHIRException("Cannot call addChild on a primitive type MessageDefinition.status");
2672        }
2673        else if (name.equals("experimental")) {
2674          throw new FHIRException("Cannot call addChild on a primitive type MessageDefinition.experimental");
2675        }
2676        else if (name.equals("date")) {
2677          throw new FHIRException("Cannot call addChild on a primitive type MessageDefinition.date");
2678        }
2679        else if (name.equals("publisher")) {
2680          throw new FHIRException("Cannot call addChild on a primitive type MessageDefinition.publisher");
2681        }
2682        else if (name.equals("contact")) {
2683          return addContact();
2684        }
2685        else if (name.equals("description")) {
2686          throw new FHIRException("Cannot call addChild on a primitive type MessageDefinition.description");
2687        }
2688        else if (name.equals("useContext")) {
2689          return addUseContext();
2690        }
2691        else if (name.equals("jurisdiction")) {
2692          return addJurisdiction();
2693        }
2694        else if (name.equals("purpose")) {
2695          throw new FHIRException("Cannot call addChild on a primitive type MessageDefinition.purpose");
2696        }
2697        else if (name.equals("copyright")) {
2698          throw new FHIRException("Cannot call addChild on a primitive type MessageDefinition.copyright");
2699        }
2700        else if (name.equals("base")) {
2701          throw new FHIRException("Cannot call addChild on a primitive type MessageDefinition.base");
2702        }
2703        else if (name.equals("parent")) {
2704          throw new FHIRException("Cannot call addChild on a primitive type MessageDefinition.parent");
2705        }
2706        else if (name.equals("eventCoding")) {
2707          this.event = new Coding();
2708          return this.event;
2709        }
2710        else if (name.equals("eventUri")) {
2711          this.event = new UriType();
2712          return this.event;
2713        }
2714        else if (name.equals("category")) {
2715          throw new FHIRException("Cannot call addChild on a primitive type MessageDefinition.category");
2716        }
2717        else if (name.equals("focus")) {
2718          return addFocus();
2719        }
2720        else if (name.equals("responseRequired")) {
2721          throw new FHIRException("Cannot call addChild on a primitive type MessageDefinition.responseRequired");
2722        }
2723        else if (name.equals("allowedResponse")) {
2724          return addAllowedResponse();
2725        }
2726        else if (name.equals("graph")) {
2727          throw new FHIRException("Cannot call addChild on a primitive type MessageDefinition.graph");
2728        }
2729        else
2730          return super.addChild(name);
2731      }
2732
2733  public String fhirType() {
2734    return "MessageDefinition";
2735
2736  }
2737
2738      public MessageDefinition copy() {
2739        MessageDefinition dst = new MessageDefinition();
2740        copyValues(dst);
2741        return dst;
2742      }
2743
2744      public void copyValues(MessageDefinition dst) {
2745        super.copyValues(dst);
2746        dst.url = url == null ? null : url.copy();
2747        if (identifier != null) {
2748          dst.identifier = new ArrayList<Identifier>();
2749          for (Identifier i : identifier)
2750            dst.identifier.add(i.copy());
2751        };
2752        dst.version = version == null ? null : version.copy();
2753        dst.name = name == null ? null : name.copy();
2754        dst.title = title == null ? null : title.copy();
2755        if (replaces != null) {
2756          dst.replaces = new ArrayList<CanonicalType>();
2757          for (CanonicalType i : replaces)
2758            dst.replaces.add(i.copy());
2759        };
2760        dst.status = status == null ? null : status.copy();
2761        dst.experimental = experimental == null ? null : experimental.copy();
2762        dst.date = date == null ? null : date.copy();
2763        dst.publisher = publisher == null ? null : publisher.copy();
2764        if (contact != null) {
2765          dst.contact = new ArrayList<ContactDetail>();
2766          for (ContactDetail i : contact)
2767            dst.contact.add(i.copy());
2768        };
2769        dst.description = description == null ? null : description.copy();
2770        if (useContext != null) {
2771          dst.useContext = new ArrayList<UsageContext>();
2772          for (UsageContext i : useContext)
2773            dst.useContext.add(i.copy());
2774        };
2775        if (jurisdiction != null) {
2776          dst.jurisdiction = new ArrayList<CodeableConcept>();
2777          for (CodeableConcept i : jurisdiction)
2778            dst.jurisdiction.add(i.copy());
2779        };
2780        dst.purpose = purpose == null ? null : purpose.copy();
2781        dst.copyright = copyright == null ? null : copyright.copy();
2782        dst.base = base == null ? null : base.copy();
2783        if (parent != null) {
2784          dst.parent = new ArrayList<CanonicalType>();
2785          for (CanonicalType i : parent)
2786            dst.parent.add(i.copy());
2787        };
2788        dst.event = event == null ? null : event.copy();
2789        dst.category = category == null ? null : category.copy();
2790        if (focus != null) {
2791          dst.focus = new ArrayList<MessageDefinitionFocusComponent>();
2792          for (MessageDefinitionFocusComponent i : focus)
2793            dst.focus.add(i.copy());
2794        };
2795        dst.responseRequired = responseRequired == null ? null : responseRequired.copy();
2796        if (allowedResponse != null) {
2797          dst.allowedResponse = new ArrayList<MessageDefinitionAllowedResponseComponent>();
2798          for (MessageDefinitionAllowedResponseComponent i : allowedResponse)
2799            dst.allowedResponse.add(i.copy());
2800        };
2801        dst.graph = graph == null ? null : graph.copy();
2802      }
2803
2804      protected MessageDefinition typedCopy() {
2805        return copy();
2806      }
2807
2808      @Override
2809      public boolean equalsDeep(Base other_) {
2810        if (!super.equalsDeep(other_))
2811          return false;
2812        if (!(other_ instanceof MessageDefinition))
2813          return false;
2814        MessageDefinition o = (MessageDefinition) other_;
2815        return compareDeep(url, o.url, true) && compareDeep(identifier, o.identifier, true) && compareDeep(version, o.version, true)
2816           && compareDeep(name, o.name, true) && compareDeep(title, o.title, true) && compareDeep(replaces, o.replaces, true)
2817           && compareDeep(status, o.status, true) && compareDeep(experimental, o.experimental, true) && compareDeep(date, o.date, true)
2818           && compareDeep(publisher, o.publisher, true) && compareDeep(contact, o.contact, true) && compareDeep(description, o.description, true)
2819           && compareDeep(useContext, o.useContext, true) && compareDeep(jurisdiction, o.jurisdiction, true)
2820           && compareDeep(purpose, o.purpose, true) && compareDeep(copyright, o.copyright, true) && compareDeep(base, o.base, true)
2821           && compareDeep(parent, o.parent, true) && compareDeep(event, o.event, true) && compareDeep(category, o.category, true)
2822           && compareDeep(focus, o.focus, true) && compareDeep(responseRequired, o.responseRequired, true)
2823           && compareDeep(allowedResponse, o.allowedResponse, true) && compareDeep(graph, o.graph, true);
2824      }
2825
2826      @Override
2827      public boolean equalsShallow(Base other_) {
2828        if (!super.equalsShallow(other_))
2829          return false;
2830        if (!(other_ instanceof MessageDefinition))
2831          return false;
2832        MessageDefinition o = (MessageDefinition) other_;
2833        return compareValues(url, o.url, true) && compareValues(version, o.version, true) && compareValues(name, o.name, true)
2834           && compareValues(title, o.title, true) && compareValues(replaces, o.replaces, true) && compareValues(status, o.status, true)
2835           && compareValues(experimental, o.experimental, true) && compareValues(date, o.date, true) && compareValues(publisher, o.publisher, true)
2836           && compareValues(description, o.description, true) && compareValues(purpose, o.purpose, true) && compareValues(copyright, o.copyright, true)
2837           && compareValues(base, o.base, true) && compareValues(parent, o.parent, true) && compareValues(category, o.category, true)
2838           && compareValues(responseRequired, o.responseRequired, true) && compareValues(graph, o.graph, true)
2839          ;
2840      }
2841
2842      public boolean isEmpty() {
2843        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(url, identifier, version
2844          , name, title, replaces, status, experimental, date, publisher, contact, description
2845          , useContext, jurisdiction, purpose, copyright, base, parent, event, category
2846          , focus, responseRequired, allowedResponse, graph);
2847      }
2848
2849  @Override
2850  public ResourceType getResourceType() {
2851    return ResourceType.MessageDefinition;
2852   }
2853
2854 /**
2855   * Search parameter: <b>category</b>
2856   * <p>
2857   * Description: <b>The behavior associated with the message</b><br>
2858   * Type: <b>token</b><br>
2859   * Path: <b>MessageDefinition.category</b><br>
2860   * </p>
2861   */
2862  @SearchParamDefinition(name="category", path="MessageDefinition.category", description="The behavior associated with the message", type="token" )
2863  public static final String SP_CATEGORY = "category";
2864 /**
2865   * <b>Fluent Client</b> search parameter constant for <b>category</b>
2866   * <p>
2867   * Description: <b>The behavior associated with the message</b><br>
2868   * Type: <b>token</b><br>
2869   * Path: <b>MessageDefinition.category</b><br>
2870   * </p>
2871   */
2872  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CATEGORY = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CATEGORY);
2873
2874 /**
2875   * Search parameter: <b>event</b>
2876   * <p>
2877   * Description: <b>The event that triggers the message or link to the event definition.</b><br>
2878   * Type: <b>token</b><br>
2879   * Path: <b>MessageDefinition.event</b><br>
2880   * </p>
2881   */
2882  @SearchParamDefinition(name="event", path="MessageDefinition.event", description="The event that triggers the message or link to the event definition.", type="token" )
2883  public static final String SP_EVENT = "event";
2884 /**
2885   * <b>Fluent Client</b> search parameter constant for <b>event</b>
2886   * <p>
2887   * Description: <b>The event that triggers the message or link to the event definition.</b><br>
2888   * Type: <b>token</b><br>
2889   * Path: <b>MessageDefinition.event</b><br>
2890   * </p>
2891   */
2892  public static final ca.uhn.fhir.rest.gclient.TokenClientParam EVENT = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_EVENT);
2893
2894 /**
2895   * Search parameter: <b>focus</b>
2896   * <p>
2897   * Description: <b>A resource that is a permitted focus of the message</b><br>
2898   * Type: <b>token</b><br>
2899   * Path: <b>MessageDefinition.focus.code</b><br>
2900   * </p>
2901   */
2902  @SearchParamDefinition(name="focus", path="MessageDefinition.focus.code", description="A resource that is a permitted focus of the message", type="token" )
2903  public static final String SP_FOCUS = "focus";
2904 /**
2905   * <b>Fluent Client</b> search parameter constant for <b>focus</b>
2906   * <p>
2907   * Description: <b>A resource that is a permitted focus of the message</b><br>
2908   * Type: <b>token</b><br>
2909   * Path: <b>MessageDefinition.focus.code</b><br>
2910   * </p>
2911   */
2912  public static final ca.uhn.fhir.rest.gclient.TokenClientParam FOCUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_FOCUS);
2913
2914 /**
2915   * Search parameter: <b>parent</b>
2916   * <p>
2917   * Description: <b>A resource that is the parent of the definition</b><br>
2918   * Type: <b>reference</b><br>
2919   * Path: <b>MessageDefinition.parent</b><br>
2920   * </p>
2921   */
2922  @SearchParamDefinition(name="parent", path="MessageDefinition.parent", description="A resource that is the parent of the definition", type="reference", target={ActivityDefinition.class, PlanDefinition.class } )
2923  public static final String SP_PARENT = "parent";
2924 /**
2925   * <b>Fluent Client</b> search parameter constant for <b>parent</b>
2926   * <p>
2927   * Description: <b>A resource that is the parent of the definition</b><br>
2928   * Type: <b>reference</b><br>
2929   * Path: <b>MessageDefinition.parent</b><br>
2930   * </p>
2931   */
2932  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PARENT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PARENT);
2933
2934/**
2935   * Constant for fluent queries to be used to add include statements. Specifies
2936   * the path value of "<b>MessageDefinition:parent</b>".
2937   */
2938  public static final ca.uhn.fhir.model.api.Include INCLUDE_PARENT = new ca.uhn.fhir.model.api.Include("MessageDefinition:parent").toLocked();
2939
2940 /**
2941   * Search parameter: <b>context-quantity</b>
2942   * <p>
2943   * Description: <b>Multiple Resources: 
2944
2945* [CapabilityStatement](capabilitystatement.html): A quantity- or range-valued use context assigned to the capability statement
2946* [CodeSystem](codesystem.html): A quantity- or range-valued use context assigned to the code system
2947* [CompartmentDefinition](compartmentdefinition.html): A quantity- or range-valued use context assigned to the compartment definition
2948* [ConceptMap](conceptmap.html): A quantity- or range-valued use context assigned to the concept map
2949* [GraphDefinition](graphdefinition.html): A quantity- or range-valued use context assigned to the graph definition
2950* [ImplementationGuide](implementationguide.html): A quantity- or range-valued use context assigned to the implementation guide
2951* [MessageDefinition](messagedefinition.html): A quantity- or range-valued use context assigned to the message definition
2952* [NamingSystem](namingsystem.html): A quantity- or range-valued use context assigned to the naming system
2953* [OperationDefinition](operationdefinition.html): A quantity- or range-valued use context assigned to the operation definition
2954* [SearchParameter](searchparameter.html): A quantity- or range-valued use context assigned to the search parameter
2955* [StructureDefinition](structuredefinition.html): A quantity- or range-valued use context assigned to the structure definition
2956* [StructureMap](structuremap.html): A quantity- or range-valued use context assigned to the structure map
2957* [TerminologyCapabilities](terminologycapabilities.html): A quantity- or range-valued use context assigned to the terminology capabilities
2958* [ValueSet](valueset.html): A quantity- or range-valued use context assigned to the value set
2959</b><br>
2960   * Type: <b>quantity</b><br>
2961   * 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>
2962   * </p>
2963   */
2964  @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" )
2965  public static final String SP_CONTEXT_QUANTITY = "context-quantity";
2966 /**
2967   * <b>Fluent Client</b> search parameter constant for <b>context-quantity</b>
2968   * <p>
2969   * Description: <b>Multiple Resources: 
2970
2971* [CapabilityStatement](capabilitystatement.html): A quantity- or range-valued use context assigned to the capability statement
2972* [CodeSystem](codesystem.html): A quantity- or range-valued use context assigned to the code system
2973* [CompartmentDefinition](compartmentdefinition.html): A quantity- or range-valued use context assigned to the compartment definition
2974* [ConceptMap](conceptmap.html): A quantity- or range-valued use context assigned to the concept map
2975* [GraphDefinition](graphdefinition.html): A quantity- or range-valued use context assigned to the graph definition
2976* [ImplementationGuide](implementationguide.html): A quantity- or range-valued use context assigned to the implementation guide
2977* [MessageDefinition](messagedefinition.html): A quantity- or range-valued use context assigned to the message definition
2978* [NamingSystem](namingsystem.html): A quantity- or range-valued use context assigned to the naming system
2979* [OperationDefinition](operationdefinition.html): A quantity- or range-valued use context assigned to the operation definition
2980* [SearchParameter](searchparameter.html): A quantity- or range-valued use context assigned to the search parameter
2981* [StructureDefinition](structuredefinition.html): A quantity- or range-valued use context assigned to the structure definition
2982* [StructureMap](structuremap.html): A quantity- or range-valued use context assigned to the structure map
2983* [TerminologyCapabilities](terminologycapabilities.html): A quantity- or range-valued use context assigned to the terminology capabilities
2984* [ValueSet](valueset.html): A quantity- or range-valued use context assigned to the value set
2985</b><br>
2986   * Type: <b>quantity</b><br>
2987   * 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>
2988   * </p>
2989   */
2990  public static final ca.uhn.fhir.rest.gclient.QuantityClientParam CONTEXT_QUANTITY = new ca.uhn.fhir.rest.gclient.QuantityClientParam(SP_CONTEXT_QUANTITY);
2991
2992 /**
2993   * Search parameter: <b>context-type-quantity</b>
2994   * <p>
2995   * Description: <b>Multiple Resources: 
2996
2997* [CapabilityStatement](capabilitystatement.html): A use context type and quantity- or range-based value assigned to the capability statement
2998* [CodeSystem](codesystem.html): A use context type and quantity- or range-based value assigned to the code system
2999* [CompartmentDefinition](compartmentdefinition.html): A use context type and quantity- or range-based value assigned to the compartment definition
3000* [ConceptMap](conceptmap.html): A use context type and quantity- or range-based value assigned to the concept map
3001* [GraphDefinition](graphdefinition.html): A use context type and quantity- or range-based value assigned to the graph definition
3002* [ImplementationGuide](implementationguide.html): A use context type and quantity- or range-based value assigned to the implementation guide
3003* [MessageDefinition](messagedefinition.html): A use context type and quantity- or range-based value assigned to the message definition
3004* [NamingSystem](namingsystem.html): A use context type and quantity- or range-based value assigned to the naming system
3005* [OperationDefinition](operationdefinition.html): A use context type and quantity- or range-based value assigned to the operation definition
3006* [SearchParameter](searchparameter.html): A use context type and quantity- or range-based value assigned to the search parameter
3007* [StructureDefinition](structuredefinition.html): A use context type and quantity- or range-based value assigned to the structure definition
3008* [StructureMap](structuremap.html): A use context type and quantity- or range-based value assigned to the structure map
3009* [TerminologyCapabilities](terminologycapabilities.html): A use context type and quantity- or range-based value assigned to the terminology capabilities
3010* [ValueSet](valueset.html): A use context type and quantity- or range-based value assigned to the value set
3011</b><br>
3012   * Type: <b>composite</b><br>
3013   * 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>
3014   * </p>
3015   */
3016  @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"} )
3017  public static final String SP_CONTEXT_TYPE_QUANTITY = "context-type-quantity";
3018 /**
3019   * <b>Fluent Client</b> search parameter constant for <b>context-type-quantity</b>
3020   * <p>
3021   * Description: <b>Multiple Resources: 
3022
3023* [CapabilityStatement](capabilitystatement.html): A use context type and quantity- or range-based value assigned to the capability statement
3024* [CodeSystem](codesystem.html): A use context type and quantity- or range-based value assigned to the code system
3025* [CompartmentDefinition](compartmentdefinition.html): A use context type and quantity- or range-based value assigned to the compartment definition
3026* [ConceptMap](conceptmap.html): A use context type and quantity- or range-based value assigned to the concept map
3027* [GraphDefinition](graphdefinition.html): A use context type and quantity- or range-based value assigned to the graph definition
3028* [ImplementationGuide](implementationguide.html): A use context type and quantity- or range-based value assigned to the implementation guide
3029* [MessageDefinition](messagedefinition.html): A use context type and quantity- or range-based value assigned to the message definition
3030* [NamingSystem](namingsystem.html): A use context type and quantity- or range-based value assigned to the naming system
3031* [OperationDefinition](operationdefinition.html): A use context type and quantity- or range-based value assigned to the operation definition
3032* [SearchParameter](searchparameter.html): A use context type and quantity- or range-based value assigned to the search parameter
3033* [StructureDefinition](structuredefinition.html): A use context type and quantity- or range-based value assigned to the structure definition
3034* [StructureMap](structuremap.html): A use context type and quantity- or range-based value assigned to the structure map
3035* [TerminologyCapabilities](terminologycapabilities.html): A use context type and quantity- or range-based value assigned to the terminology capabilities
3036* [ValueSet](valueset.html): A use context type and quantity- or range-based value assigned to the value set
3037</b><br>
3038   * Type: <b>composite</b><br>
3039   * 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>
3040   * </p>
3041   */
3042  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);
3043
3044 /**
3045   * Search parameter: <b>context-type-value</b>
3046   * <p>
3047   * Description: <b>Multiple Resources: 
3048
3049* [CapabilityStatement](capabilitystatement.html): A use context type and value assigned to the capability statement
3050* [CodeSystem](codesystem.html): A use context type and value assigned to the code system
3051* [CompartmentDefinition](compartmentdefinition.html): A use context type and value assigned to the compartment definition
3052* [ConceptMap](conceptmap.html): A use context type and value assigned to the concept map
3053* [GraphDefinition](graphdefinition.html): A use context type and value assigned to the graph definition
3054* [ImplementationGuide](implementationguide.html): A use context type and value assigned to the implementation guide
3055* [MessageDefinition](messagedefinition.html): A use context type and value assigned to the message definition
3056* [NamingSystem](namingsystem.html): A use context type and value assigned to the naming system
3057* [OperationDefinition](operationdefinition.html): A use context type and value assigned to the operation definition
3058* [SearchParameter](searchparameter.html): A use context type and value assigned to the search parameter
3059* [StructureDefinition](structuredefinition.html): A use context type and value assigned to the structure definition
3060* [StructureMap](structuremap.html): A use context type and value assigned to the structure map
3061* [TerminologyCapabilities](terminologycapabilities.html): A use context type and value assigned to the terminology capabilities
3062* [ValueSet](valueset.html): A use context type and value assigned to the value set
3063</b><br>
3064   * Type: <b>composite</b><br>
3065   * 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>
3066   * </p>
3067   */
3068  @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"} )
3069  public static final String SP_CONTEXT_TYPE_VALUE = "context-type-value";
3070 /**
3071   * <b>Fluent Client</b> search parameter constant for <b>context-type-value</b>
3072   * <p>
3073   * Description: <b>Multiple Resources: 
3074
3075* [CapabilityStatement](capabilitystatement.html): A use context type and value assigned to the capability statement
3076* [CodeSystem](codesystem.html): A use context type and value assigned to the code system
3077* [CompartmentDefinition](compartmentdefinition.html): A use context type and value assigned to the compartment definition
3078* [ConceptMap](conceptmap.html): A use context type and value assigned to the concept map
3079* [GraphDefinition](graphdefinition.html): A use context type and value assigned to the graph definition
3080* [ImplementationGuide](implementationguide.html): A use context type and value assigned to the implementation guide
3081* [MessageDefinition](messagedefinition.html): A use context type and value assigned to the message definition
3082* [NamingSystem](namingsystem.html): A use context type and value assigned to the naming system
3083* [OperationDefinition](operationdefinition.html): A use context type and value assigned to the operation definition
3084* [SearchParameter](searchparameter.html): A use context type and value assigned to the search parameter
3085* [StructureDefinition](structuredefinition.html): A use context type and value assigned to the structure definition
3086* [StructureMap](structuremap.html): A use context type and value assigned to the structure map
3087* [TerminologyCapabilities](terminologycapabilities.html): A use context type and value assigned to the terminology capabilities
3088* [ValueSet](valueset.html): A use context type and value assigned to the value set
3089</b><br>
3090   * Type: <b>composite</b><br>
3091   * 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>
3092   * </p>
3093   */
3094  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);
3095
3096 /**
3097   * Search parameter: <b>context-type</b>
3098   * <p>
3099   * Description: <b>Multiple Resources: 
3100
3101* [CapabilityStatement](capabilitystatement.html): A type of use context assigned to the capability statement
3102* [CodeSystem](codesystem.html): A type of use context assigned to the code system
3103* [CompartmentDefinition](compartmentdefinition.html): A type of use context assigned to the compartment definition
3104* [ConceptMap](conceptmap.html): A type of use context assigned to the concept map
3105* [GraphDefinition](graphdefinition.html): A type of use context assigned to the graph definition
3106* [ImplementationGuide](implementationguide.html): A type of use context assigned to the implementation guide
3107* [MessageDefinition](messagedefinition.html): A type of use context assigned to the message definition
3108* [NamingSystem](namingsystem.html): A type of use context assigned to the naming system
3109* [OperationDefinition](operationdefinition.html): A type of use context assigned to the operation definition
3110* [SearchParameter](searchparameter.html): A type of use context assigned to the search parameter
3111* [StructureDefinition](structuredefinition.html): A type of use context assigned to the structure definition
3112* [StructureMap](structuremap.html): A type of use context assigned to the structure map
3113* [TerminologyCapabilities](terminologycapabilities.html): A type of use context assigned to the terminology capabilities
3114* [ValueSet](valueset.html): A type of use context assigned to the value set
3115</b><br>
3116   * Type: <b>token</b><br>
3117   * 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>
3118   * </p>
3119   */
3120  @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" )
3121  public static final String SP_CONTEXT_TYPE = "context-type";
3122 /**
3123   * <b>Fluent Client</b> search parameter constant for <b>context-type</b>
3124   * <p>
3125   * Description: <b>Multiple Resources: 
3126
3127* [CapabilityStatement](capabilitystatement.html): A type of use context assigned to the capability statement
3128* [CodeSystem](codesystem.html): A type of use context assigned to the code system
3129* [CompartmentDefinition](compartmentdefinition.html): A type of use context assigned to the compartment definition
3130* [ConceptMap](conceptmap.html): A type of use context assigned to the concept map
3131* [GraphDefinition](graphdefinition.html): A type of use context assigned to the graph definition
3132* [ImplementationGuide](implementationguide.html): A type of use context assigned to the implementation guide
3133* [MessageDefinition](messagedefinition.html): A type of use context assigned to the message definition
3134* [NamingSystem](namingsystem.html): A type of use context assigned to the naming system
3135* [OperationDefinition](operationdefinition.html): A type of use context assigned to the operation definition
3136* [SearchParameter](searchparameter.html): A type of use context assigned to the search parameter
3137* [StructureDefinition](structuredefinition.html): A type of use context assigned to the structure definition
3138* [StructureMap](structuremap.html): A type of use context assigned to the structure map
3139* [TerminologyCapabilities](terminologycapabilities.html): A type of use context assigned to the terminology capabilities
3140* [ValueSet](valueset.html): A type of use context assigned to the value set
3141</b><br>
3142   * Type: <b>token</b><br>
3143   * 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>
3144   * </p>
3145   */
3146  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT_TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTEXT_TYPE);
3147
3148 /**
3149   * Search parameter: <b>context</b>
3150   * <p>
3151   * Description: <b>Multiple Resources: 
3152
3153* [CapabilityStatement](capabilitystatement.html): A use context assigned to the capability statement
3154* [CodeSystem](codesystem.html): A use context assigned to the code system
3155* [CompartmentDefinition](compartmentdefinition.html): A use context assigned to the compartment definition
3156* [ConceptMap](conceptmap.html): A use context assigned to the concept map
3157* [GraphDefinition](graphdefinition.html): A use context assigned to the graph definition
3158* [ImplementationGuide](implementationguide.html): A use context assigned to the implementation guide
3159* [MessageDefinition](messagedefinition.html): A use context assigned to the message definition
3160* [NamingSystem](namingsystem.html): A use context assigned to the naming system
3161* [OperationDefinition](operationdefinition.html): A use context assigned to the operation definition
3162* [SearchParameter](searchparameter.html): A use context assigned to the search parameter
3163* [StructureDefinition](structuredefinition.html): A use context assigned to the structure definition
3164* [StructureMap](structuremap.html): A use context assigned to the structure map
3165* [TerminologyCapabilities](terminologycapabilities.html): A use context assigned to the terminology capabilities
3166* [ValueSet](valueset.html): A use context assigned to the value set
3167</b><br>
3168   * Type: <b>token</b><br>
3169   * 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>
3170   * </p>
3171   */
3172  @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" )
3173  public static final String SP_CONTEXT = "context";
3174 /**
3175   * <b>Fluent Client</b> search parameter constant for <b>context</b>
3176   * <p>
3177   * Description: <b>Multiple Resources: 
3178
3179* [CapabilityStatement](capabilitystatement.html): A use context assigned to the capability statement
3180* [CodeSystem](codesystem.html): A use context assigned to the code system
3181* [CompartmentDefinition](compartmentdefinition.html): A use context assigned to the compartment definition
3182* [ConceptMap](conceptmap.html): A use context assigned to the concept map
3183* [GraphDefinition](graphdefinition.html): A use context assigned to the graph definition
3184* [ImplementationGuide](implementationguide.html): A use context assigned to the implementation guide
3185* [MessageDefinition](messagedefinition.html): A use context assigned to the message definition
3186* [NamingSystem](namingsystem.html): A use context assigned to the naming system
3187* [OperationDefinition](operationdefinition.html): A use context assigned to the operation definition
3188* [SearchParameter](searchparameter.html): A use context assigned to the search parameter
3189* [StructureDefinition](structuredefinition.html): A use context assigned to the structure definition
3190* [StructureMap](structuremap.html): A use context assigned to the structure map
3191* [TerminologyCapabilities](terminologycapabilities.html): A use context assigned to the terminology capabilities
3192* [ValueSet](valueset.html): A use context assigned to the value set
3193</b><br>
3194   * Type: <b>token</b><br>
3195   * 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>
3196   * </p>
3197   */
3198  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTEXT);
3199
3200 /**
3201   * Search parameter: <b>date</b>
3202   * <p>
3203   * Description: <b>Multiple Resources: 
3204
3205* [CapabilityStatement](capabilitystatement.html): The capability statement publication date
3206* [CodeSystem](codesystem.html): The code system publication date
3207* [CompartmentDefinition](compartmentdefinition.html): The compartment definition publication date
3208* [ConceptMap](conceptmap.html): The concept map publication date
3209* [GraphDefinition](graphdefinition.html): The graph definition publication date
3210* [ImplementationGuide](implementationguide.html): The implementation guide publication date
3211* [MessageDefinition](messagedefinition.html): The message definition publication date
3212* [NamingSystem](namingsystem.html): The naming system publication date
3213* [OperationDefinition](operationdefinition.html): The operation definition publication date
3214* [SearchParameter](searchparameter.html): The search parameter publication date
3215* [StructureDefinition](structuredefinition.html): The structure definition publication date
3216* [StructureMap](structuremap.html): The structure map publication date
3217* [TerminologyCapabilities](terminologycapabilities.html): The terminology capabilities publication date
3218* [ValueSet](valueset.html): The value set publication date
3219</b><br>
3220   * Type: <b>date</b><br>
3221   * 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>
3222   * </p>
3223   */
3224  @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" )
3225  public static final String SP_DATE = "date";
3226 /**
3227   * <b>Fluent Client</b> search parameter constant for <b>date</b>
3228   * <p>
3229   * Description: <b>Multiple Resources: 
3230
3231* [CapabilityStatement](capabilitystatement.html): The capability statement publication date
3232* [CodeSystem](codesystem.html): The code system publication date
3233* [CompartmentDefinition](compartmentdefinition.html): The compartment definition publication date
3234* [ConceptMap](conceptmap.html): The concept map publication date
3235* [GraphDefinition](graphdefinition.html): The graph definition publication date
3236* [ImplementationGuide](implementationguide.html): The implementation guide publication date
3237* [MessageDefinition](messagedefinition.html): The message definition publication date
3238* [NamingSystem](namingsystem.html): The naming system publication date
3239* [OperationDefinition](operationdefinition.html): The operation definition publication date
3240* [SearchParameter](searchparameter.html): The search parameter publication date
3241* [StructureDefinition](structuredefinition.html): The structure definition publication date
3242* [StructureMap](structuremap.html): The structure map publication date
3243* [TerminologyCapabilities](terminologycapabilities.html): The terminology capabilities publication date
3244* [ValueSet](valueset.html): The value set publication date
3245</b><br>
3246   * Type: <b>date</b><br>
3247   * 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>
3248   * </p>
3249   */
3250  public static final ca.uhn.fhir.rest.gclient.DateClientParam DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_DATE);
3251
3252 /**
3253   * Search parameter: <b>description</b>
3254   * <p>
3255   * Description: <b>Multiple Resources: 
3256
3257* [CapabilityStatement](capabilitystatement.html): The description of the capability statement
3258* [CodeSystem](codesystem.html): The description of the code system
3259* [CompartmentDefinition](compartmentdefinition.html): The description of the compartment definition
3260* [ConceptMap](conceptmap.html): The description of the concept map
3261* [GraphDefinition](graphdefinition.html): The description of the graph definition
3262* [ImplementationGuide](implementationguide.html): The description of the implementation guide
3263* [MessageDefinition](messagedefinition.html): The description of the message definition
3264* [NamingSystem](namingsystem.html): The description of the naming system
3265* [OperationDefinition](operationdefinition.html): The description of the operation definition
3266* [SearchParameter](searchparameter.html): The description of the search parameter
3267* [StructureDefinition](structuredefinition.html): The description of the structure definition
3268* [StructureMap](structuremap.html): The description of the structure map
3269* [TerminologyCapabilities](terminologycapabilities.html): The description of the terminology capabilities
3270* [ValueSet](valueset.html): The description of the value set
3271</b><br>
3272   * Type: <b>string</b><br>
3273   * 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>
3274   * </p>
3275   */
3276  @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" )
3277  public static final String SP_DESCRIPTION = "description";
3278 /**
3279   * <b>Fluent Client</b> search parameter constant for <b>description</b>
3280   * <p>
3281   * Description: <b>Multiple Resources: 
3282
3283* [CapabilityStatement](capabilitystatement.html): The description of the capability statement
3284* [CodeSystem](codesystem.html): The description of the code system
3285* [CompartmentDefinition](compartmentdefinition.html): The description of the compartment definition
3286* [ConceptMap](conceptmap.html): The description of the concept map
3287* [GraphDefinition](graphdefinition.html): The description of the graph definition
3288* [ImplementationGuide](implementationguide.html): The description of the implementation guide
3289* [MessageDefinition](messagedefinition.html): The description of the message definition
3290* [NamingSystem](namingsystem.html): The description of the naming system
3291* [OperationDefinition](operationdefinition.html): The description of the operation definition
3292* [SearchParameter](searchparameter.html): The description of the search parameter
3293* [StructureDefinition](structuredefinition.html): The description of the structure definition
3294* [StructureMap](structuremap.html): The description of the structure map
3295* [TerminologyCapabilities](terminologycapabilities.html): The description of the terminology capabilities
3296* [ValueSet](valueset.html): The description of the value set
3297</b><br>
3298   * Type: <b>string</b><br>
3299   * 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>
3300   * </p>
3301   */
3302  public static final ca.uhn.fhir.rest.gclient.StringClientParam DESCRIPTION = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_DESCRIPTION);
3303
3304 /**
3305   * Search parameter: <b>identifier</b>
3306   * <p>
3307   * Description: <b>Multiple Resources: 
3308
3309* [CodeSystem](codesystem.html): External identifier for the code system
3310* [ConceptMap](conceptmap.html): External identifier for the concept map
3311* [MessageDefinition](messagedefinition.html): External identifier for the message definition
3312* [StructureDefinition](structuredefinition.html): External identifier for the structure definition
3313* [StructureMap](structuremap.html): External identifier for the structure map
3314* [TerminologyCapabilities](terminologycapabilities.html): External identifier for the terminology capabilities
3315* [ValueSet](valueset.html): External identifier for the value set
3316</b><br>
3317   * Type: <b>token</b><br>
3318   * Path: <b>CodeSystem.identifier | ConceptMap.identifier | MessageDefinition.identifier | StructureDefinition.identifier | StructureMap.identifier | TerminologyCapabilities.identifier | ValueSet.identifier</b><br>
3319   * </p>
3320   */
3321  @SearchParamDefinition(name="identifier", path="CodeSystem.identifier | ConceptMap.identifier | MessageDefinition.identifier | StructureDefinition.identifier | StructureMap.identifier | TerminologyCapabilities.identifier | ValueSet.identifier", description="Multiple Resources: \r\n\r\n* [CodeSystem](codesystem.html): External identifier for the code system\r\n* [ConceptMap](conceptmap.html): External identifier for the concept map\r\n* [MessageDefinition](messagedefinition.html): External identifier for the message definition\r\n* [StructureDefinition](structuredefinition.html): External identifier for the structure definition\r\n* [StructureMap](structuremap.html): External identifier for the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): External identifier for the terminology capabilities\r\n* [ValueSet](valueset.html): External identifier for the value set\r\n", type="token" )
3322  public static final String SP_IDENTIFIER = "identifier";
3323 /**
3324   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
3325   * <p>
3326   * Description: <b>Multiple Resources: 
3327
3328* [CodeSystem](codesystem.html): External identifier for the code system
3329* [ConceptMap](conceptmap.html): External identifier for the concept map
3330* [MessageDefinition](messagedefinition.html): External identifier for the message definition
3331* [StructureDefinition](structuredefinition.html): External identifier for the structure definition
3332* [StructureMap](structuremap.html): External identifier for the structure map
3333* [TerminologyCapabilities](terminologycapabilities.html): External identifier for the terminology capabilities
3334* [ValueSet](valueset.html): External identifier for the value set
3335</b><br>
3336   * Type: <b>token</b><br>
3337   * Path: <b>CodeSystem.identifier | ConceptMap.identifier | MessageDefinition.identifier | StructureDefinition.identifier | StructureMap.identifier | TerminologyCapabilities.identifier | ValueSet.identifier</b><br>
3338   * </p>
3339   */
3340  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
3341
3342 /**
3343   * Search parameter: <b>jurisdiction</b>
3344   * <p>
3345   * Description: <b>Multiple Resources: 
3346
3347* [CapabilityStatement](capabilitystatement.html): Intended jurisdiction for the capability statement
3348* [CodeSystem](codesystem.html): Intended jurisdiction for the code system
3349* [ConceptMap](conceptmap.html): Intended jurisdiction for the concept map
3350* [GraphDefinition](graphdefinition.html): Intended jurisdiction for the graph definition
3351* [ImplementationGuide](implementationguide.html): Intended jurisdiction for the implementation guide
3352* [MessageDefinition](messagedefinition.html): Intended jurisdiction for the message definition
3353* [NamingSystem](namingsystem.html): Intended jurisdiction for the naming system
3354* [OperationDefinition](operationdefinition.html): Intended jurisdiction for the operation definition
3355* [SearchParameter](searchparameter.html): Intended jurisdiction for the search parameter
3356* [StructureDefinition](structuredefinition.html): Intended jurisdiction for the structure definition
3357* [StructureMap](structuremap.html): Intended jurisdiction for the structure map
3358* [TerminologyCapabilities](terminologycapabilities.html): Intended jurisdiction for the terminology capabilities
3359* [ValueSet](valueset.html): Intended jurisdiction for the value set
3360</b><br>
3361   * Type: <b>token</b><br>
3362   * 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>
3363   * </p>
3364   */
3365  @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" )
3366  public static final String SP_JURISDICTION = "jurisdiction";
3367 /**
3368   * <b>Fluent Client</b> search parameter constant for <b>jurisdiction</b>
3369   * <p>
3370   * Description: <b>Multiple Resources: 
3371
3372* [CapabilityStatement](capabilitystatement.html): Intended jurisdiction for the capability statement
3373* [CodeSystem](codesystem.html): Intended jurisdiction for the code system
3374* [ConceptMap](conceptmap.html): Intended jurisdiction for the concept map
3375* [GraphDefinition](graphdefinition.html): Intended jurisdiction for the graph definition
3376* [ImplementationGuide](implementationguide.html): Intended jurisdiction for the implementation guide
3377* [MessageDefinition](messagedefinition.html): Intended jurisdiction for the message definition
3378* [NamingSystem](namingsystem.html): Intended jurisdiction for the naming system
3379* [OperationDefinition](operationdefinition.html): Intended jurisdiction for the operation definition
3380* [SearchParameter](searchparameter.html): Intended jurisdiction for the search parameter
3381* [StructureDefinition](structuredefinition.html): Intended jurisdiction for the structure definition
3382* [StructureMap](structuremap.html): Intended jurisdiction for the structure map
3383* [TerminologyCapabilities](terminologycapabilities.html): Intended jurisdiction for the terminology capabilities
3384* [ValueSet](valueset.html): Intended jurisdiction for the value set
3385</b><br>
3386   * Type: <b>token</b><br>
3387   * 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>
3388   * </p>
3389   */
3390  public static final ca.uhn.fhir.rest.gclient.TokenClientParam JURISDICTION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_JURISDICTION);
3391
3392 /**
3393   * Search parameter: <b>name</b>
3394   * <p>
3395   * Description: <b>Multiple Resources: 
3396
3397* [CapabilityStatement](capabilitystatement.html): Computationally friendly name of the capability statement
3398* [CodeSystem](codesystem.html): Computationally friendly name of the code system
3399* [CompartmentDefinition](compartmentdefinition.html): Computationally friendly name of the compartment definition
3400* [ConceptMap](conceptmap.html): Computationally friendly name of the concept map
3401* [GraphDefinition](graphdefinition.html): Computationally friendly name of the graph definition
3402* [ImplementationGuide](implementationguide.html): Computationally friendly name of the implementation guide
3403* [MessageDefinition](messagedefinition.html): Computationally friendly name of the message definition
3404* [NamingSystem](namingsystem.html): Computationally friendly name of the naming system
3405* [OperationDefinition](operationdefinition.html): Computationally friendly name of the operation definition
3406* [SearchParameter](searchparameter.html): Computationally friendly name of the search parameter
3407* [StructureDefinition](structuredefinition.html): Computationally friendly name of the structure definition
3408* [StructureMap](structuremap.html): Computationally friendly name of the structure map
3409* [TerminologyCapabilities](terminologycapabilities.html): Computationally friendly name of the terminology capabilities
3410* [ValueSet](valueset.html): Computationally friendly name of the value set
3411</b><br>
3412   * Type: <b>string</b><br>
3413   * 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>
3414   * </p>
3415   */
3416  @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" )
3417  public static final String SP_NAME = "name";
3418 /**
3419   * <b>Fluent Client</b> search parameter constant for <b>name</b>
3420   * <p>
3421   * Description: <b>Multiple Resources: 
3422
3423* [CapabilityStatement](capabilitystatement.html): Computationally friendly name of the capability statement
3424* [CodeSystem](codesystem.html): Computationally friendly name of the code system
3425* [CompartmentDefinition](compartmentdefinition.html): Computationally friendly name of the compartment definition
3426* [ConceptMap](conceptmap.html): Computationally friendly name of the concept map
3427* [GraphDefinition](graphdefinition.html): Computationally friendly name of the graph definition
3428* [ImplementationGuide](implementationguide.html): Computationally friendly name of the implementation guide
3429* [MessageDefinition](messagedefinition.html): Computationally friendly name of the message definition
3430* [NamingSystem](namingsystem.html): Computationally friendly name of the naming system
3431* [OperationDefinition](operationdefinition.html): Computationally friendly name of the operation definition
3432* [SearchParameter](searchparameter.html): Computationally friendly name of the search parameter
3433* [StructureDefinition](structuredefinition.html): Computationally friendly name of the structure definition
3434* [StructureMap](structuremap.html): Computationally friendly name of the structure map
3435* [TerminologyCapabilities](terminologycapabilities.html): Computationally friendly name of the terminology capabilities
3436* [ValueSet](valueset.html): Computationally friendly name of the value set
3437</b><br>
3438   * Type: <b>string</b><br>
3439   * 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>
3440   * </p>
3441   */
3442  public static final ca.uhn.fhir.rest.gclient.StringClientParam NAME = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_NAME);
3443
3444 /**
3445   * Search parameter: <b>publisher</b>
3446   * <p>
3447   * Description: <b>Multiple Resources: 
3448
3449* [CapabilityStatement](capabilitystatement.html): Name of the publisher of the capability statement
3450* [CodeSystem](codesystem.html): Name of the publisher of the code system
3451* [CompartmentDefinition](compartmentdefinition.html): Name of the publisher of the compartment definition
3452* [ConceptMap](conceptmap.html): Name of the publisher of the concept map
3453* [GraphDefinition](graphdefinition.html): Name of the publisher of the graph definition
3454* [ImplementationGuide](implementationguide.html): Name of the publisher of the implementation guide
3455* [MessageDefinition](messagedefinition.html): Name of the publisher of the message definition
3456* [NamingSystem](namingsystem.html): Name of the publisher of the naming system
3457* [OperationDefinition](operationdefinition.html): Name of the publisher of the operation definition
3458* [SearchParameter](searchparameter.html): Name of the publisher of the search parameter
3459* [StructureDefinition](structuredefinition.html): Name of the publisher of the structure definition
3460* [StructureMap](structuremap.html): Name of the publisher of the structure map
3461* [TerminologyCapabilities](terminologycapabilities.html): Name of the publisher of the terminology capabilities
3462* [ValueSet](valueset.html): Name of the publisher of the value set
3463</b><br>
3464   * Type: <b>string</b><br>
3465   * 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>
3466   * </p>
3467   */
3468  @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" )
3469  public static final String SP_PUBLISHER = "publisher";
3470 /**
3471   * <b>Fluent Client</b> search parameter constant for <b>publisher</b>
3472   * <p>
3473   * Description: <b>Multiple Resources: 
3474
3475* [CapabilityStatement](capabilitystatement.html): Name of the publisher of the capability statement
3476* [CodeSystem](codesystem.html): Name of the publisher of the code system
3477* [CompartmentDefinition](compartmentdefinition.html): Name of the publisher of the compartment definition
3478* [ConceptMap](conceptmap.html): Name of the publisher of the concept map
3479* [GraphDefinition](graphdefinition.html): Name of the publisher of the graph definition
3480* [ImplementationGuide](implementationguide.html): Name of the publisher of the implementation guide
3481* [MessageDefinition](messagedefinition.html): Name of the publisher of the message definition
3482* [NamingSystem](namingsystem.html): Name of the publisher of the naming system
3483* [OperationDefinition](operationdefinition.html): Name of the publisher of the operation definition
3484* [SearchParameter](searchparameter.html): Name of the publisher of the search parameter
3485* [StructureDefinition](structuredefinition.html): Name of the publisher of the structure definition
3486* [StructureMap](structuremap.html): Name of the publisher of the structure map
3487* [TerminologyCapabilities](terminologycapabilities.html): Name of the publisher of the terminology capabilities
3488* [ValueSet](valueset.html): Name of the publisher of the value set
3489</b><br>
3490   * Type: <b>string</b><br>
3491   * 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>
3492   * </p>
3493   */
3494  public static final ca.uhn.fhir.rest.gclient.StringClientParam PUBLISHER = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_PUBLISHER);
3495
3496 /**
3497   * Search parameter: <b>status</b>
3498   * <p>
3499   * Description: <b>Multiple Resources: 
3500
3501* [CapabilityStatement](capabilitystatement.html): The current status of the capability statement
3502* [CodeSystem](codesystem.html): The current status of the code system
3503* [CompartmentDefinition](compartmentdefinition.html): The current status of the compartment definition
3504* [ConceptMap](conceptmap.html): The current status of the concept map
3505* [GraphDefinition](graphdefinition.html): The current status of the graph definition
3506* [ImplementationGuide](implementationguide.html): The current status of the implementation guide
3507* [MessageDefinition](messagedefinition.html): The current status of the message definition
3508* [NamingSystem](namingsystem.html): The current status of the naming system
3509* [OperationDefinition](operationdefinition.html): The current status of the operation definition
3510* [SearchParameter](searchparameter.html): The current status of the search parameter
3511* [StructureDefinition](structuredefinition.html): The current status of the structure definition
3512* [StructureMap](structuremap.html): The current status of the structure map
3513* [TerminologyCapabilities](terminologycapabilities.html): The current status of the terminology capabilities
3514* [ValueSet](valueset.html): The current status of the value set
3515</b><br>
3516   * Type: <b>token</b><br>
3517   * 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>
3518   * </p>
3519   */
3520  @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" )
3521  public static final String SP_STATUS = "status";
3522 /**
3523   * <b>Fluent Client</b> search parameter constant for <b>status</b>
3524   * <p>
3525   * Description: <b>Multiple Resources: 
3526
3527* [CapabilityStatement](capabilitystatement.html): The current status of the capability statement
3528* [CodeSystem](codesystem.html): The current status of the code system
3529* [CompartmentDefinition](compartmentdefinition.html): The current status of the compartment definition
3530* [ConceptMap](conceptmap.html): The current status of the concept map
3531* [GraphDefinition](graphdefinition.html): The current status of the graph definition
3532* [ImplementationGuide](implementationguide.html): The current status of the implementation guide
3533* [MessageDefinition](messagedefinition.html): The current status of the message definition
3534* [NamingSystem](namingsystem.html): The current status of the naming system
3535* [OperationDefinition](operationdefinition.html): The current status of the operation definition
3536* [SearchParameter](searchparameter.html): The current status of the search parameter
3537* [StructureDefinition](structuredefinition.html): The current status of the structure definition
3538* [StructureMap](structuremap.html): The current status of the structure map
3539* [TerminologyCapabilities](terminologycapabilities.html): The current status of the terminology capabilities
3540* [ValueSet](valueset.html): The current status of the value set
3541</b><br>
3542   * Type: <b>token</b><br>
3543   * 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>
3544   * </p>
3545   */
3546  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
3547
3548 /**
3549   * Search parameter: <b>title</b>
3550   * <p>
3551   * Description: <b>Multiple Resources: 
3552
3553* [CapabilityStatement](capabilitystatement.html): The human-friendly name of the capability statement
3554* [CodeSystem](codesystem.html): The human-friendly name of the code system
3555* [ConceptMap](conceptmap.html): The human-friendly name of the concept map
3556* [ImplementationGuide](implementationguide.html): The human-friendly name of the implementation guide
3557* [MessageDefinition](messagedefinition.html): The human-friendly name of the message definition
3558* [OperationDefinition](operationdefinition.html): The human-friendly name of the operation definition
3559* [StructureDefinition](structuredefinition.html): The human-friendly name of the structure definition
3560* [StructureMap](structuremap.html): The human-friendly name of the structure map
3561* [TerminologyCapabilities](terminologycapabilities.html): The human-friendly name of the terminology capabilities
3562* [ValueSet](valueset.html): The human-friendly name of the value set
3563</b><br>
3564   * Type: <b>string</b><br>
3565   * Path: <b>CapabilityStatement.title | CodeSystem.title | ConceptMap.title | ImplementationGuide.title | MessageDefinition.title | OperationDefinition.title | StructureDefinition.title | StructureMap.title | TerminologyCapabilities.title | ValueSet.title</b><br>
3566   * </p>
3567   */
3568  @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" )
3569  public static final String SP_TITLE = "title";
3570 /**
3571   * <b>Fluent Client</b> search parameter constant for <b>title</b>
3572   * <p>
3573   * Description: <b>Multiple Resources: 
3574
3575* [CapabilityStatement](capabilitystatement.html): The human-friendly name of the capability statement
3576* [CodeSystem](codesystem.html): The human-friendly name of the code system
3577* [ConceptMap](conceptmap.html): The human-friendly name of the concept map
3578* [ImplementationGuide](implementationguide.html): The human-friendly name of the implementation guide
3579* [MessageDefinition](messagedefinition.html): The human-friendly name of the message definition
3580* [OperationDefinition](operationdefinition.html): The human-friendly name of the operation definition
3581* [StructureDefinition](structuredefinition.html): The human-friendly name of the structure definition
3582* [StructureMap](structuremap.html): The human-friendly name of the structure map
3583* [TerminologyCapabilities](terminologycapabilities.html): The human-friendly name of the terminology capabilities
3584* [ValueSet](valueset.html): The human-friendly name of the value set
3585</b><br>
3586   * Type: <b>string</b><br>
3587   * Path: <b>CapabilityStatement.title | CodeSystem.title | ConceptMap.title | ImplementationGuide.title | MessageDefinition.title | OperationDefinition.title | StructureDefinition.title | StructureMap.title | TerminologyCapabilities.title | ValueSet.title</b><br>
3588   * </p>
3589   */
3590  public static final ca.uhn.fhir.rest.gclient.StringClientParam TITLE = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_TITLE);
3591
3592 /**
3593   * Search parameter: <b>url</b>
3594   * <p>
3595   * Description: <b>Multiple Resources: 
3596
3597* [CapabilityStatement](capabilitystatement.html): The uri that identifies the capability statement
3598* [CodeSystem](codesystem.html): The uri that identifies the code system
3599* [CompartmentDefinition](compartmentdefinition.html): The uri that identifies the compartment definition
3600* [ConceptMap](conceptmap.html): The uri that identifies the concept map
3601* [GraphDefinition](graphdefinition.html): The uri that identifies the graph definition
3602* [ImplementationGuide](implementationguide.html): The uri that identifies the implementation guide
3603* [MessageDefinition](messagedefinition.html): The uri that identifies the message definition
3604* [NamingSystem](namingsystem.html): The uri that identifies the naming system
3605* [OperationDefinition](operationdefinition.html): The uri that identifies the operation definition
3606* [SearchParameter](searchparameter.html): The uri that identifies the search parameter
3607* [StructureDefinition](structuredefinition.html): The uri that identifies the structure definition
3608* [StructureMap](structuremap.html): The uri that identifies the structure map
3609* [TerminologyCapabilities](terminologycapabilities.html): The uri that identifies the terminology capabilities
3610* [ValueSet](valueset.html): The uri that identifies the value set
3611</b><br>
3612   * Type: <b>uri</b><br>
3613   * Path: <b>CapabilityStatement.url | CodeSystem.url | CompartmentDefinition.url | ConceptMap.url | GraphDefinition.url | ImplementationGuide.url | MessageDefinition.url | NamingSystem.url | OperationDefinition.url | SearchParameter.url | StructureDefinition.url | StructureMap.url | TerminologyCapabilities.url | ValueSet.url</b><br>
3614   * </p>
3615   */
3616  @SearchParamDefinition(name="url", path="CapabilityStatement.url | CodeSystem.url | CompartmentDefinition.url | ConceptMap.url | GraphDefinition.url | ImplementationGuide.url | MessageDefinition.url | NamingSystem.url | OperationDefinition.url | SearchParameter.url | StructureDefinition.url | StructureMap.url | TerminologyCapabilities.url | ValueSet.url", description="Multiple Resources: \r\n\r\n* [CapabilityStatement](capabilitystatement.html): The uri that identifies the capability statement\r\n* [CodeSystem](codesystem.html): The uri that identifies the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): The uri that identifies the compartment definition\r\n* [ConceptMap](conceptmap.html): The uri that identifies the concept map\r\n* [GraphDefinition](graphdefinition.html): The uri that identifies the graph definition\r\n* [ImplementationGuide](implementationguide.html): The uri that identifies the implementation guide\r\n* [MessageDefinition](messagedefinition.html): The uri that identifies the message definition\r\n* [NamingSystem](namingsystem.html): The uri that identifies the naming system\r\n* [OperationDefinition](operationdefinition.html): The uri that identifies the operation definition\r\n* [SearchParameter](searchparameter.html): The uri that identifies the search parameter\r\n* [StructureDefinition](structuredefinition.html): The uri that identifies the structure definition\r\n* [StructureMap](structuremap.html): The uri that identifies the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): The uri that identifies the terminology capabilities\r\n* [ValueSet](valueset.html): The uri that identifies the value set\r\n", type="uri" )
3617  public static final String SP_URL = "url";
3618 /**
3619   * <b>Fluent Client</b> search parameter constant for <b>url</b>
3620   * <p>
3621   * Description: <b>Multiple Resources: 
3622
3623* [CapabilityStatement](capabilitystatement.html): The uri that identifies the capability statement
3624* [CodeSystem](codesystem.html): The uri that identifies the code system
3625* [CompartmentDefinition](compartmentdefinition.html): The uri that identifies the compartment definition
3626* [ConceptMap](conceptmap.html): The uri that identifies the concept map
3627* [GraphDefinition](graphdefinition.html): The uri that identifies the graph definition
3628* [ImplementationGuide](implementationguide.html): The uri that identifies the implementation guide
3629* [MessageDefinition](messagedefinition.html): The uri that identifies the message definition
3630* [NamingSystem](namingsystem.html): The uri that identifies the naming system
3631* [OperationDefinition](operationdefinition.html): The uri that identifies the operation definition
3632* [SearchParameter](searchparameter.html): The uri that identifies the search parameter
3633* [StructureDefinition](structuredefinition.html): The uri that identifies the structure definition
3634* [StructureMap](structuremap.html): The uri that identifies the structure map
3635* [TerminologyCapabilities](terminologycapabilities.html): The uri that identifies the terminology capabilities
3636* [ValueSet](valueset.html): The uri that identifies the value set
3637</b><br>
3638   * Type: <b>uri</b><br>
3639   * Path: <b>CapabilityStatement.url | CodeSystem.url | CompartmentDefinition.url | ConceptMap.url | GraphDefinition.url | ImplementationGuide.url | MessageDefinition.url | NamingSystem.url | OperationDefinition.url | SearchParameter.url | StructureDefinition.url | StructureMap.url | TerminologyCapabilities.url | ValueSet.url</b><br>
3640   * </p>
3641   */
3642  public static final ca.uhn.fhir.rest.gclient.UriClientParam URL = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_URL);
3643
3644 /**
3645   * Search parameter: <b>version</b>
3646   * <p>
3647   * Description: <b>Multiple Resources: 
3648
3649* [CapabilityStatement](capabilitystatement.html): The business version of the capability statement
3650* [CodeSystem](codesystem.html): The business version of the code system
3651* [CompartmentDefinition](compartmentdefinition.html): The business version of the compartment definition
3652* [ConceptMap](conceptmap.html): The business version of the concept map
3653* [GraphDefinition](graphdefinition.html): The business version of the graph definition
3654* [ImplementationGuide](implementationguide.html): The business version of the implementation guide
3655* [MessageDefinition](messagedefinition.html): The business version of the message definition
3656* [NamingSystem](namingsystem.html): The business version of the naming system
3657* [OperationDefinition](operationdefinition.html): The business version of the operation definition
3658* [SearchParameter](searchparameter.html): The business version of the search parameter
3659* [StructureDefinition](structuredefinition.html): The business version of the structure definition
3660* [StructureMap](structuremap.html): The business version of the structure map
3661* [TerminologyCapabilities](terminologycapabilities.html): The business version of the terminology capabilities
3662* [ValueSet](valueset.html): The business version of the value set
3663</b><br>
3664   * Type: <b>token</b><br>
3665   * Path: <b>CapabilityStatement.version | CodeSystem.version | CompartmentDefinition.version | ConceptMap.version | GraphDefinition.version | ImplementationGuide.version | MessageDefinition.version | NamingSystem.version | OperationDefinition.version | SearchParameter.version | StructureDefinition.version | StructureMap.version | TerminologyCapabilities.version | ValueSet.version</b><br>
3666   * </p>
3667   */
3668  @SearchParamDefinition(name="version", path="CapabilityStatement.version | CodeSystem.version | CompartmentDefinition.version | ConceptMap.version | GraphDefinition.version | ImplementationGuide.version | MessageDefinition.version | NamingSystem.version | OperationDefinition.version | SearchParameter.version | StructureDefinition.version | StructureMap.version | TerminologyCapabilities.version | ValueSet.version", description="Multiple Resources: \r\n\r\n* [CapabilityStatement](capabilitystatement.html): The business version of the capability statement\r\n* [CodeSystem](codesystem.html): The business version of the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): The business version of the compartment definition\r\n* [ConceptMap](conceptmap.html): The business version of the concept map\r\n* [GraphDefinition](graphdefinition.html): The business version of the graph definition\r\n* [ImplementationGuide](implementationguide.html): The business version of the implementation guide\r\n* [MessageDefinition](messagedefinition.html): The business version of the message definition\r\n* [NamingSystem](namingsystem.html): The business version of the naming system\r\n* [OperationDefinition](operationdefinition.html): The business version of the operation definition\r\n* [SearchParameter](searchparameter.html): The business version of the search parameter\r\n* [StructureDefinition](structuredefinition.html): The business version of the structure definition\r\n* [StructureMap](structuremap.html): The business version of the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): The business version of the terminology capabilities\r\n* [ValueSet](valueset.html): The business version of the value set\r\n", type="token" )
3669  public static final String SP_VERSION = "version";
3670 /**
3671   * <b>Fluent Client</b> search parameter constant for <b>version</b>
3672   * <p>
3673   * Description: <b>Multiple Resources: 
3674
3675* [CapabilityStatement](capabilitystatement.html): The business version of the capability statement
3676* [CodeSystem](codesystem.html): The business version of the code system
3677* [CompartmentDefinition](compartmentdefinition.html): The business version of the compartment definition
3678* [ConceptMap](conceptmap.html): The business version of the concept map
3679* [GraphDefinition](graphdefinition.html): The business version of the graph definition
3680* [ImplementationGuide](implementationguide.html): The business version of the implementation guide
3681* [MessageDefinition](messagedefinition.html): The business version of the message definition
3682* [NamingSystem](namingsystem.html): The business version of the naming system
3683* [OperationDefinition](operationdefinition.html): The business version of the operation definition
3684* [SearchParameter](searchparameter.html): The business version of the search parameter
3685* [StructureDefinition](structuredefinition.html): The business version of the structure definition
3686* [StructureMap](structuremap.html): The business version of the structure map
3687* [TerminologyCapabilities](terminologycapabilities.html): The business version of the terminology capabilities
3688* [ValueSet](valueset.html): The business version of the value set
3689</b><br>
3690   * Type: <b>token</b><br>
3691   * Path: <b>CapabilityStatement.version | CodeSystem.version | CompartmentDefinition.version | ConceptMap.version | GraphDefinition.version | ImplementationGuide.version | MessageDefinition.version | NamingSystem.version | OperationDefinition.version | SearchParameter.version | StructureDefinition.version | StructureMap.version | TerminologyCapabilities.version | ValueSet.version</b><br>
3692   * </p>
3693   */
3694  public static final ca.uhn.fhir.rest.gclient.TokenClientParam VERSION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_VERSION);
3695
3696
3697}
3698