001package org.hl7.fhir.r4.model;
002
003/*
004  Copyright (c) 2011+, HL7, Inc.
005  All rights reserved.
006  
007  Redistribution and use in source and binary forms, with or without modification, 
008  are permitted provided that the following conditions are met:
009  
010   * Redistributions of source code must retain the above copyright notice, this 
011     list of conditions and the following disclaimer.
012   * Redistributions in binary form must reproduce the above copyright notice, 
013     this list of conditions and the following disclaimer in the documentation 
014     and/or other materials provided with the distribution.
015   * Neither the name of HL7 nor the names of its contributors may be used to 
016     endorse or promote products derived from this software without specific 
017     prior written permission.
018  
019  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
020  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
021  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
022  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
023  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
024  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
025  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
026  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
027  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
028  POSSIBILITY OF SUCH DAMAGE.
029  
030*/
031
032// Generated on Sun, May 6, 2018 17:51-0400 for FHIR v3.4.0
033
034import java.util.*;
035
036import org.hl7.fhir.utilities.Utilities;
037import org.hl7.fhir.r4.model.Enumerations.*;
038import ca.uhn.fhir.model.api.annotation.ResourceDef;
039import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
040import ca.uhn.fhir.model.api.annotation.Child;
041import ca.uhn.fhir.model.api.annotation.ChildOrder;
042import ca.uhn.fhir.model.api.annotation.Description;
043import ca.uhn.fhir.model.api.annotation.Block;
044import org.hl7.fhir.instance.model.api.*;
045import org.hl7.fhir.exceptions.FHIRException;
046/**
047 * A compartment definition that defines how resources are accessed on a server.
048 */
049@ResourceDef(name="CompartmentDefinition", profile="http://hl7.org/fhir/Profile/CompartmentDefinition")
050@ChildOrder(names={"url", "name", "title", "status", "experimental", "date", "publisher", "contact", "description", "useContext", "jurisdiction", "purpose", "code", "search", "resource"})
051public class CompartmentDefinition extends MetadataResource {
052
053    public enum CompartmentType {
054        /**
055         * The compartment definition is for the patient compartment
056         */
057        PATIENT, 
058        /**
059         * The compartment definition is for the encounter compartment
060         */
061        ENCOUNTER, 
062        /**
063         * The compartment definition is for the related-person compartment
064         */
065        RELATEDPERSON, 
066        /**
067         * The compartment definition is for the practitioner compartment
068         */
069        PRACTITIONER, 
070        /**
071         * The compartment definition is for the device compartment
072         */
073        DEVICE, 
074        /**
075         * added to help the parsers with the generic types
076         */
077        NULL;
078        public static CompartmentType fromCode(String codeString) throws FHIRException {
079            if (codeString == null || "".equals(codeString))
080                return null;
081        if ("Patient".equals(codeString))
082          return PATIENT;
083        if ("Encounter".equals(codeString))
084          return ENCOUNTER;
085        if ("RelatedPerson".equals(codeString))
086          return RELATEDPERSON;
087        if ("Practitioner".equals(codeString))
088          return PRACTITIONER;
089        if ("Device".equals(codeString))
090          return DEVICE;
091        if (Configuration.isAcceptInvalidEnums())
092          return null;
093        else
094          throw new FHIRException("Unknown CompartmentType code '"+codeString+"'");
095        }
096        public String toCode() {
097          switch (this) {
098            case PATIENT: return "Patient";
099            case ENCOUNTER: return "Encounter";
100            case RELATEDPERSON: return "RelatedPerson";
101            case PRACTITIONER: return "Practitioner";
102            case DEVICE: return "Device";
103            default: return "?";
104          }
105        }
106        public String getSystem() {
107          switch (this) {
108            case PATIENT: return "http://hl7.org/fhir/compartment-type";
109            case ENCOUNTER: return "http://hl7.org/fhir/compartment-type";
110            case RELATEDPERSON: return "http://hl7.org/fhir/compartment-type";
111            case PRACTITIONER: return "http://hl7.org/fhir/compartment-type";
112            case DEVICE: return "http://hl7.org/fhir/compartment-type";
113            default: return "?";
114          }
115        }
116        public String getDefinition() {
117          switch (this) {
118            case PATIENT: return "The compartment definition is for the patient compartment";
119            case ENCOUNTER: return "The compartment definition is for the encounter compartment";
120            case RELATEDPERSON: return "The compartment definition is for the related-person compartment";
121            case PRACTITIONER: return "The compartment definition is for the practitioner compartment";
122            case DEVICE: return "The compartment definition is for the device compartment";
123            default: return "?";
124          }
125        }
126        public String getDisplay() {
127          switch (this) {
128            case PATIENT: return "Patient";
129            case ENCOUNTER: return "Encounter";
130            case RELATEDPERSON: return "RelatedPerson";
131            case PRACTITIONER: return "Practitioner";
132            case DEVICE: return "Device";
133            default: return "?";
134          }
135        }
136    }
137
138  public static class CompartmentTypeEnumFactory implements EnumFactory<CompartmentType> {
139    public CompartmentType fromCode(String codeString) throws IllegalArgumentException {
140      if (codeString == null || "".equals(codeString))
141            if (codeString == null || "".equals(codeString))
142                return null;
143        if ("Patient".equals(codeString))
144          return CompartmentType.PATIENT;
145        if ("Encounter".equals(codeString))
146          return CompartmentType.ENCOUNTER;
147        if ("RelatedPerson".equals(codeString))
148          return CompartmentType.RELATEDPERSON;
149        if ("Practitioner".equals(codeString))
150          return CompartmentType.PRACTITIONER;
151        if ("Device".equals(codeString))
152          return CompartmentType.DEVICE;
153        throw new IllegalArgumentException("Unknown CompartmentType code '"+codeString+"'");
154        }
155        public Enumeration<CompartmentType> fromType(Base code) throws FHIRException {
156          if (code == null)
157            return null;
158          if (code.isEmpty())
159            return new Enumeration<CompartmentType>(this);
160          String codeString = ((PrimitiveType) code).asStringValue();
161          if (codeString == null || "".equals(codeString))
162            return null;
163        if ("Patient".equals(codeString))
164          return new Enumeration<CompartmentType>(this, CompartmentType.PATIENT);
165        if ("Encounter".equals(codeString))
166          return new Enumeration<CompartmentType>(this, CompartmentType.ENCOUNTER);
167        if ("RelatedPerson".equals(codeString))
168          return new Enumeration<CompartmentType>(this, CompartmentType.RELATEDPERSON);
169        if ("Practitioner".equals(codeString))
170          return new Enumeration<CompartmentType>(this, CompartmentType.PRACTITIONER);
171        if ("Device".equals(codeString))
172          return new Enumeration<CompartmentType>(this, CompartmentType.DEVICE);
173        throw new FHIRException("Unknown CompartmentType code '"+codeString+"'");
174        }
175    public String toCode(CompartmentType code) {
176      if (code == CompartmentType.PATIENT)
177        return "Patient";
178      if (code == CompartmentType.ENCOUNTER)
179        return "Encounter";
180      if (code == CompartmentType.RELATEDPERSON)
181        return "RelatedPerson";
182      if (code == CompartmentType.PRACTITIONER)
183        return "Practitioner";
184      if (code == CompartmentType.DEVICE)
185        return "Device";
186      return "?";
187      }
188    public String toSystem(CompartmentType code) {
189      return code.getSystem();
190      }
191    }
192
193    @Block()
194    public static class CompartmentDefinitionResourceComponent extends BackboneElement implements IBaseBackboneElement {
195        /**
196         * The name of a resource supported by the server.
197         */
198        @Child(name = "code", type = {CodeType.class}, order=1, min=1, max=1, modifier=false, summary=true)
199        @Description(shortDefinition="Name of resource type", formalDefinition="The name of a resource supported by the server." )
200        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/resource-types")
201        protected CodeType code;
202
203        /**
204         * The name of a search parameter that represents the link to the compartment. More than one may be listed because a resource may be linked to a compartment in more than one way,.
205         */
206        @Child(name = "param", type = {StringType.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
207        @Description(shortDefinition="Search Parameter Name, or chained parameters", formalDefinition="The name of a search parameter that represents the link to the compartment. More than one may be listed because a resource may be linked to a compartment in more than one way,." )
208        protected List<StringType> param;
209
210        /**
211         * Additional documentation about the resource and compartment.
212         */
213        @Child(name = "documentation", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=false)
214        @Description(shortDefinition="Additional documentation about the resource and compartment", formalDefinition="Additional documentation about the resource and compartment." )
215        protected StringType documentation;
216
217        private static final long serialVersionUID = 988080897L;
218
219    /**
220     * Constructor
221     */
222      public CompartmentDefinitionResourceComponent() {
223        super();
224      }
225
226    /**
227     * Constructor
228     */
229      public CompartmentDefinitionResourceComponent(CodeType code) {
230        super();
231        this.code = code;
232      }
233
234        /**
235         * @return {@link #code} (The name of a resource supported by the server.). This is the underlying object with id, value and extensions. The accessor "getCode" gives direct access to the value
236         */
237        public CodeType getCodeElement() { 
238          if (this.code == null)
239            if (Configuration.errorOnAutoCreate())
240              throw new Error("Attempt to auto-create CompartmentDefinitionResourceComponent.code");
241            else if (Configuration.doAutoCreate())
242              this.code = new CodeType(); // bb
243          return this.code;
244        }
245
246        public boolean hasCodeElement() { 
247          return this.code != null && !this.code.isEmpty();
248        }
249
250        public boolean hasCode() { 
251          return this.code != null && !this.code.isEmpty();
252        }
253
254        /**
255         * @param value {@link #code} (The name of a resource supported by the server.). This is the underlying object with id, value and extensions. The accessor "getCode" gives direct access to the value
256         */
257        public CompartmentDefinitionResourceComponent setCodeElement(CodeType value) { 
258          this.code = value;
259          return this;
260        }
261
262        /**
263         * @return The name of a resource supported by the server.
264         */
265        public String getCode() { 
266          return this.code == null ? null : this.code.getValue();
267        }
268
269        /**
270         * @param value The name of a resource supported by the server.
271         */
272        public CompartmentDefinitionResourceComponent setCode(String value) { 
273            if (this.code == null)
274              this.code = new CodeType();
275            this.code.setValue(value);
276          return this;
277        }
278
279        /**
280         * @return {@link #param} (The name of a search parameter that represents the link to the compartment. More than one may be listed because a resource may be linked to a compartment in more than one way,.)
281         */
282        public List<StringType> getParam() { 
283          if (this.param == null)
284            this.param = new ArrayList<StringType>();
285          return this.param;
286        }
287
288        /**
289         * @return Returns a reference to <code>this</code> for easy method chaining
290         */
291        public CompartmentDefinitionResourceComponent setParam(List<StringType> theParam) { 
292          this.param = theParam;
293          return this;
294        }
295
296        public boolean hasParam() { 
297          if (this.param == null)
298            return false;
299          for (StringType item : this.param)
300            if (!item.isEmpty())
301              return true;
302          return false;
303        }
304
305        /**
306         * @return {@link #param} (The name of a search parameter that represents the link to the compartment. More than one may be listed because a resource may be linked to a compartment in more than one way,.)
307         */
308        public StringType addParamElement() {//2 
309          StringType t = new StringType();
310          if (this.param == null)
311            this.param = new ArrayList<StringType>();
312          this.param.add(t);
313          return t;
314        }
315
316        /**
317         * @param value {@link #param} (The name of a search parameter that represents the link to the compartment. More than one may be listed because a resource may be linked to a compartment in more than one way,.)
318         */
319        public CompartmentDefinitionResourceComponent addParam(String value) { //1
320          StringType t = new StringType();
321          t.setValue(value);
322          if (this.param == null)
323            this.param = new ArrayList<StringType>();
324          this.param.add(t);
325          return this;
326        }
327
328        /**
329         * @param value {@link #param} (The name of a search parameter that represents the link to the compartment. More than one may be listed because a resource may be linked to a compartment in more than one way,.)
330         */
331        public boolean hasParam(String value) { 
332          if (this.param == null)
333            return false;
334          for (StringType v : this.param)
335            if (v.getValue().equals(value)) // string
336              return true;
337          return false;
338        }
339
340        /**
341         * @return {@link #documentation} (Additional documentation about the resource and compartment.). This is the underlying object with id, value and extensions. The accessor "getDocumentation" gives direct access to the value
342         */
343        public StringType getDocumentationElement() { 
344          if (this.documentation == null)
345            if (Configuration.errorOnAutoCreate())
346              throw new Error("Attempt to auto-create CompartmentDefinitionResourceComponent.documentation");
347            else if (Configuration.doAutoCreate())
348              this.documentation = new StringType(); // bb
349          return this.documentation;
350        }
351
352        public boolean hasDocumentationElement() { 
353          return this.documentation != null && !this.documentation.isEmpty();
354        }
355
356        public boolean hasDocumentation() { 
357          return this.documentation != null && !this.documentation.isEmpty();
358        }
359
360        /**
361         * @param value {@link #documentation} (Additional documentation about the resource and compartment.). This is the underlying object with id, value and extensions. The accessor "getDocumentation" gives direct access to the value
362         */
363        public CompartmentDefinitionResourceComponent setDocumentationElement(StringType value) { 
364          this.documentation = value;
365          return this;
366        }
367
368        /**
369         * @return Additional documentation about the resource and compartment.
370         */
371        public String getDocumentation() { 
372          return this.documentation == null ? null : this.documentation.getValue();
373        }
374
375        /**
376         * @param value Additional documentation about the resource and compartment.
377         */
378        public CompartmentDefinitionResourceComponent setDocumentation(String value) { 
379          if (Utilities.noString(value))
380            this.documentation = null;
381          else {
382            if (this.documentation == null)
383              this.documentation = new StringType();
384            this.documentation.setValue(value);
385          }
386          return this;
387        }
388
389        protected void listChildren(List<Property> children) {
390          super.listChildren(children);
391          children.add(new Property("code", "code", "The name of a resource supported by the server.", 0, 1, code));
392          children.add(new Property("param", "string", "The name of a search parameter that represents the link to the compartment. More than one may be listed because a resource may be linked to a compartment in more than one way,.", 0, java.lang.Integer.MAX_VALUE, param));
393          children.add(new Property("documentation", "string", "Additional documentation about the resource and compartment.", 0, 1, documentation));
394        }
395
396        @Override
397        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
398          switch (_hash) {
399          case 3059181: /*code*/  return new Property("code", "code", "The name of a resource supported by the server.", 0, 1, code);
400          case 106436749: /*param*/  return new Property("param", "string", "The name of a search parameter that represents the link to the compartment. More than one may be listed because a resource may be linked to a compartment in more than one way,.", 0, java.lang.Integer.MAX_VALUE, param);
401          case 1587405498: /*documentation*/  return new Property("documentation", "string", "Additional documentation about the resource and compartment.", 0, 1, documentation);
402          default: return super.getNamedProperty(_hash, _name, _checkValid);
403          }
404
405        }
406
407      @Override
408      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
409        switch (hash) {
410        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // CodeType
411        case 106436749: /*param*/ return this.param == null ? new Base[0] : this.param.toArray(new Base[this.param.size()]); // StringType
412        case 1587405498: /*documentation*/ return this.documentation == null ? new Base[0] : new Base[] {this.documentation}; // StringType
413        default: return super.getProperty(hash, name, checkValid);
414        }
415
416      }
417
418      @Override
419      public Base setProperty(int hash, String name, Base value) throws FHIRException {
420        switch (hash) {
421        case 3059181: // code
422          this.code = castToCode(value); // CodeType
423          return value;
424        case 106436749: // param
425          this.getParam().add(castToString(value)); // StringType
426          return value;
427        case 1587405498: // documentation
428          this.documentation = castToString(value); // StringType
429          return value;
430        default: return super.setProperty(hash, name, value);
431        }
432
433      }
434
435      @Override
436      public Base setProperty(String name, Base value) throws FHIRException {
437        if (name.equals("code")) {
438          this.code = castToCode(value); // CodeType
439        } else if (name.equals("param")) {
440          this.getParam().add(castToString(value));
441        } else if (name.equals("documentation")) {
442          this.documentation = castToString(value); // StringType
443        } else
444          return super.setProperty(name, value);
445        return value;
446      }
447
448      @Override
449      public Base makeProperty(int hash, String name) throws FHIRException {
450        switch (hash) {
451        case 3059181:  return getCodeElement();
452        case 106436749:  return addParamElement();
453        case 1587405498:  return getDocumentationElement();
454        default: return super.makeProperty(hash, name);
455        }
456
457      }
458
459      @Override
460      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
461        switch (hash) {
462        case 3059181: /*code*/ return new String[] {"code"};
463        case 106436749: /*param*/ return new String[] {"string"};
464        case 1587405498: /*documentation*/ return new String[] {"string"};
465        default: return super.getTypesForProperty(hash, name);
466        }
467
468      }
469
470      @Override
471      public Base addChild(String name) throws FHIRException {
472        if (name.equals("code")) {
473          throw new FHIRException("Cannot call addChild on a primitive type CompartmentDefinition.code");
474        }
475        else if (name.equals("param")) {
476          throw new FHIRException("Cannot call addChild on a primitive type CompartmentDefinition.param");
477        }
478        else if (name.equals("documentation")) {
479          throw new FHIRException("Cannot call addChild on a primitive type CompartmentDefinition.documentation");
480        }
481        else
482          return super.addChild(name);
483      }
484
485      public CompartmentDefinitionResourceComponent copy() {
486        CompartmentDefinitionResourceComponent dst = new CompartmentDefinitionResourceComponent();
487        copyValues(dst);
488        dst.code = code == null ? null : code.copy();
489        if (param != null) {
490          dst.param = new ArrayList<StringType>();
491          for (StringType i : param)
492            dst.param.add(i.copy());
493        };
494        dst.documentation = documentation == null ? null : documentation.copy();
495        return dst;
496      }
497
498      @Override
499      public boolean equalsDeep(Base other_) {
500        if (!super.equalsDeep(other_))
501          return false;
502        if (!(other_ instanceof CompartmentDefinitionResourceComponent))
503          return false;
504        CompartmentDefinitionResourceComponent o = (CompartmentDefinitionResourceComponent) other_;
505        return compareDeep(code, o.code, true) && compareDeep(param, o.param, true) && compareDeep(documentation, o.documentation, true)
506          ;
507      }
508
509      @Override
510      public boolean equalsShallow(Base other_) {
511        if (!super.equalsShallow(other_))
512          return false;
513        if (!(other_ instanceof CompartmentDefinitionResourceComponent))
514          return false;
515        CompartmentDefinitionResourceComponent o = (CompartmentDefinitionResourceComponent) other_;
516        return compareValues(code, o.code, true) && compareValues(param, o.param, true) && compareValues(documentation, o.documentation, true)
517          ;
518      }
519
520      public boolean isEmpty() {
521        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(code, param, documentation
522          );
523      }
524
525  public String fhirType() {
526    return "CompartmentDefinition.resource";
527
528  }
529
530  }
531
532    /**
533     * Explanation of why this compartment definition is needed and why it has been designed as it has.
534     */
535    @Child(name = "purpose", type = {MarkdownType.class}, order=0, min=0, max=1, modifier=false, summary=false)
536    @Description(shortDefinition="Why this compartment definition is defined", formalDefinition="Explanation of why this compartment definition is needed and why it has been designed as it has." )
537    protected MarkdownType purpose;
538
539    /**
540     * Which compartment this definition describes.
541     */
542    @Child(name = "code", type = {CodeType.class}, order=1, min=1, max=1, modifier=false, summary=true)
543    @Description(shortDefinition="Patient | Encounter | RelatedPerson | Practitioner | Device", formalDefinition="Which compartment this definition describes." )
544    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/compartment-type")
545    protected Enumeration<CompartmentType> code;
546
547    /**
548     * Whether the search syntax is supported,.
549     */
550    @Child(name = "search", type = {BooleanType.class}, order=2, min=1, max=1, modifier=false, summary=true)
551    @Description(shortDefinition="Whether the search syntax is supported", formalDefinition="Whether the search syntax is supported,." )
552    protected BooleanType search;
553
554    /**
555     * Information about how a resource is related to the compartment.
556     */
557    @Child(name = "resource", type = {}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
558    @Description(shortDefinition="How a resource is related to the compartment", formalDefinition="Information about how a resource is related to the compartment." )
559    protected List<CompartmentDefinitionResourceComponent> resource;
560
561    private static final long serialVersionUID = -1159172945L;
562
563  /**
564   * Constructor
565   */
566    public CompartmentDefinition() {
567      super();
568    }
569
570  /**
571   * Constructor
572   */
573    public CompartmentDefinition(UriType url, StringType name, Enumeration<PublicationStatus> status, Enumeration<CompartmentType> code, BooleanType search) {
574      super();
575      this.url = url;
576      this.name = name;
577      this.status = status;
578      this.code = code;
579      this.search = search;
580    }
581
582    /**
583     * @return {@link #url} (An absolute URI that is used to identify this compartment definition when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which this compartment definition is (or will be) published.). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
584     */
585    public UriType getUrlElement() { 
586      if (this.url == null)
587        if (Configuration.errorOnAutoCreate())
588          throw new Error("Attempt to auto-create CompartmentDefinition.url");
589        else if (Configuration.doAutoCreate())
590          this.url = new UriType(); // bb
591      return this.url;
592    }
593
594    public boolean hasUrlElement() { 
595      return this.url != null && !this.url.isEmpty();
596    }
597
598    public boolean hasUrl() { 
599      return this.url != null && !this.url.isEmpty();
600    }
601
602    /**
603     * @param value {@link #url} (An absolute URI that is used to identify this compartment definition when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which this compartment definition is (or will be) published.). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
604     */
605    public CompartmentDefinition setUrlElement(UriType value) { 
606      this.url = value;
607      return this;
608    }
609
610    /**
611     * @return An absolute URI that is used to identify this compartment definition when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which this compartment definition is (or will be) published.
612     */
613    public String getUrl() { 
614      return this.url == null ? null : this.url.getValue();
615    }
616
617    /**
618     * @param value An absolute URI that is used to identify this compartment definition when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which this compartment definition is (or will be) published.
619     */
620    public CompartmentDefinition setUrl(String value) { 
621        if (this.url == null)
622          this.url = new UriType();
623        this.url.setValue(value);
624      return this;
625    }
626
627    /**
628     * @return {@link #name} (A natural language name identifying the compartment 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
629     */
630    public StringType getNameElement() { 
631      if (this.name == null)
632        if (Configuration.errorOnAutoCreate())
633          throw new Error("Attempt to auto-create CompartmentDefinition.name");
634        else if (Configuration.doAutoCreate())
635          this.name = new StringType(); // bb
636      return this.name;
637    }
638
639    public boolean hasNameElement() { 
640      return this.name != null && !this.name.isEmpty();
641    }
642
643    public boolean hasName() { 
644      return this.name != null && !this.name.isEmpty();
645    }
646
647    /**
648     * @param value {@link #name} (A natural language name identifying the compartment 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
649     */
650    public CompartmentDefinition setNameElement(StringType value) { 
651      this.name = value;
652      return this;
653    }
654
655    /**
656     * @return A natural language name identifying the compartment definition. This name should be usable as an identifier for the module by machine processing applications such as code generation.
657     */
658    public String getName() { 
659      return this.name == null ? null : this.name.getValue();
660    }
661
662    /**
663     * @param value A natural language name identifying the compartment definition. This name should be usable as an identifier for the module by machine processing applications such as code generation.
664     */
665    public CompartmentDefinition setName(String value) { 
666        if (this.name == null)
667          this.name = new StringType();
668        this.name.setValue(value);
669      return this;
670    }
671
672    /**
673     * @return {@link #title} (A short, descriptive, user-friendly title for the compartment definition.). This is the underlying object with id, value and extensions. The accessor "getTitle" gives direct access to the value
674     */
675    public StringType getTitleElement() { 
676      if (this.title == null)
677        if (Configuration.errorOnAutoCreate())
678          throw new Error("Attempt to auto-create CompartmentDefinition.title");
679        else if (Configuration.doAutoCreate())
680          this.title = new StringType(); // bb
681      return this.title;
682    }
683
684    public boolean hasTitleElement() { 
685      return this.title != null && !this.title.isEmpty();
686    }
687
688    public boolean hasTitle() { 
689      return this.title != null && !this.title.isEmpty();
690    }
691
692    /**
693     * @param value {@link #title} (A short, descriptive, user-friendly title for the compartment definition.). This is the underlying object with id, value and extensions. The accessor "getTitle" gives direct access to the value
694     */
695    public CompartmentDefinition setTitleElement(StringType value) { 
696      this.title = value;
697      return this;
698    }
699
700    /**
701     * @return A short, descriptive, user-friendly title for the compartment definition.
702     */
703    public String getTitle() { 
704      return this.title == null ? null : this.title.getValue();
705    }
706
707    /**
708     * @param value A short, descriptive, user-friendly title for the compartment definition.
709     */
710    public CompartmentDefinition setTitle(String value) { 
711      if (Utilities.noString(value))
712        this.title = null;
713      else {
714        if (this.title == null)
715          this.title = new StringType();
716        this.title.setValue(value);
717      }
718      return this;
719    }
720
721    /**
722     * @return {@link #status} (The status of this compartment 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
723     */
724    public Enumeration<PublicationStatus> getStatusElement() { 
725      if (this.status == null)
726        if (Configuration.errorOnAutoCreate())
727          throw new Error("Attempt to auto-create CompartmentDefinition.status");
728        else if (Configuration.doAutoCreate())
729          this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory()); // bb
730      return this.status;
731    }
732
733    public boolean hasStatusElement() { 
734      return this.status != null && !this.status.isEmpty();
735    }
736
737    public boolean hasStatus() { 
738      return this.status != null && !this.status.isEmpty();
739    }
740
741    /**
742     * @param value {@link #status} (The status of this compartment 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
743     */
744    public CompartmentDefinition setStatusElement(Enumeration<PublicationStatus> value) { 
745      this.status = value;
746      return this;
747    }
748
749    /**
750     * @return The status of this compartment definition. Enables tracking the life-cycle of the content.
751     */
752    public PublicationStatus getStatus() { 
753      return this.status == null ? null : this.status.getValue();
754    }
755
756    /**
757     * @param value The status of this compartment definition. Enables tracking the life-cycle of the content.
758     */
759    public CompartmentDefinition setStatus(PublicationStatus value) { 
760        if (this.status == null)
761          this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory());
762        this.status.setValue(value);
763      return this;
764    }
765
766    /**
767     * @return {@link #experimental} (A Boolean value to indicate that this compartment 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
768     */
769    public BooleanType getExperimentalElement() { 
770      if (this.experimental == null)
771        if (Configuration.errorOnAutoCreate())
772          throw new Error("Attempt to auto-create CompartmentDefinition.experimental");
773        else if (Configuration.doAutoCreate())
774          this.experimental = new BooleanType(); // bb
775      return this.experimental;
776    }
777
778    public boolean hasExperimentalElement() { 
779      return this.experimental != null && !this.experimental.isEmpty();
780    }
781
782    public boolean hasExperimental() { 
783      return this.experimental != null && !this.experimental.isEmpty();
784    }
785
786    /**
787     * @param value {@link #experimental} (A Boolean value to indicate that this compartment 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
788     */
789    public CompartmentDefinition setExperimentalElement(BooleanType value) { 
790      this.experimental = value;
791      return this;
792    }
793
794    /**
795     * @return A Boolean value to indicate that this compartment definition is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.
796     */
797    public boolean getExperimental() { 
798      return this.experimental == null || this.experimental.isEmpty() ? false : this.experimental.getValue();
799    }
800
801    /**
802     * @param value A Boolean value to indicate that this compartment definition is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.
803     */
804    public CompartmentDefinition setExperimental(boolean value) { 
805        if (this.experimental == null)
806          this.experimental = new BooleanType();
807        this.experimental.setValue(value);
808      return this;
809    }
810
811    /**
812     * @return {@link #date} (The date  (and optionally time) when the compartment 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 compartment definition changes.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
813     */
814    public DateTimeType getDateElement() { 
815      if (this.date == null)
816        if (Configuration.errorOnAutoCreate())
817          throw new Error("Attempt to auto-create CompartmentDefinition.date");
818        else if (Configuration.doAutoCreate())
819          this.date = new DateTimeType(); // bb
820      return this.date;
821    }
822
823    public boolean hasDateElement() { 
824      return this.date != null && !this.date.isEmpty();
825    }
826
827    public boolean hasDate() { 
828      return this.date != null && !this.date.isEmpty();
829    }
830
831    /**
832     * @param value {@link #date} (The date  (and optionally time) when the compartment 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 compartment definition changes.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
833     */
834    public CompartmentDefinition setDateElement(DateTimeType value) { 
835      this.date = value;
836      return this;
837    }
838
839    /**
840     * @return The date  (and optionally time) when the compartment 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 compartment definition changes.
841     */
842    public Date getDate() { 
843      return this.date == null ? null : this.date.getValue();
844    }
845
846    /**
847     * @param value The date  (and optionally time) when the compartment 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 compartment definition changes.
848     */
849    public CompartmentDefinition setDate(Date value) { 
850      if (value == null)
851        this.date = null;
852      else {
853        if (this.date == null)
854          this.date = new DateTimeType();
855        this.date.setValue(value);
856      }
857      return this;
858    }
859
860    /**
861     * @return {@link #publisher} (The name of the organization or individual that published the compartment definition.). This is the underlying object with id, value and extensions. The accessor "getPublisher" gives direct access to the value
862     */
863    public StringType getPublisherElement() { 
864      if (this.publisher == null)
865        if (Configuration.errorOnAutoCreate())
866          throw new Error("Attempt to auto-create CompartmentDefinition.publisher");
867        else if (Configuration.doAutoCreate())
868          this.publisher = new StringType(); // bb
869      return this.publisher;
870    }
871
872    public boolean hasPublisherElement() { 
873      return this.publisher != null && !this.publisher.isEmpty();
874    }
875
876    public boolean hasPublisher() { 
877      return this.publisher != null && !this.publisher.isEmpty();
878    }
879
880    /**
881     * @param value {@link #publisher} (The name of the organization or individual that published the compartment definition.). This is the underlying object with id, value and extensions. The accessor "getPublisher" gives direct access to the value
882     */
883    public CompartmentDefinition setPublisherElement(StringType value) { 
884      this.publisher = value;
885      return this;
886    }
887
888    /**
889     * @return The name of the organization or individual that published the compartment definition.
890     */
891    public String getPublisher() { 
892      return this.publisher == null ? null : this.publisher.getValue();
893    }
894
895    /**
896     * @param value The name of the organization or individual that published the compartment definition.
897     */
898    public CompartmentDefinition setPublisher(String value) { 
899      if (Utilities.noString(value))
900        this.publisher = null;
901      else {
902        if (this.publisher == null)
903          this.publisher = new StringType();
904        this.publisher.setValue(value);
905      }
906      return this;
907    }
908
909    /**
910     * @return {@link #contact} (Contact details to assist a user in finding and communicating with the publisher.)
911     */
912    public List<ContactDetail> getContact() { 
913      if (this.contact == null)
914        this.contact = new ArrayList<ContactDetail>();
915      return this.contact;
916    }
917
918    /**
919     * @return Returns a reference to <code>this</code> for easy method chaining
920     */
921    public CompartmentDefinition setContact(List<ContactDetail> theContact) { 
922      this.contact = theContact;
923      return this;
924    }
925
926    public boolean hasContact() { 
927      if (this.contact == null)
928        return false;
929      for (ContactDetail item : this.contact)
930        if (!item.isEmpty())
931          return true;
932      return false;
933    }
934
935    public ContactDetail addContact() { //3
936      ContactDetail t = new ContactDetail();
937      if (this.contact == null)
938        this.contact = new ArrayList<ContactDetail>();
939      this.contact.add(t);
940      return t;
941    }
942
943    public CompartmentDefinition addContact(ContactDetail t) { //3
944      if (t == null)
945        return this;
946      if (this.contact == null)
947        this.contact = new ArrayList<ContactDetail>();
948      this.contact.add(t);
949      return this;
950    }
951
952    /**
953     * @return The first repetition of repeating field {@link #contact}, creating it if it does not already exist
954     */
955    public ContactDetail getContactFirstRep() { 
956      if (getContact().isEmpty()) {
957        addContact();
958      }
959      return getContact().get(0);
960    }
961
962    /**
963     * @return {@link #description} (A free text natural language description of the compartment 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
964     */
965    public MarkdownType getDescriptionElement() { 
966      if (this.description == null)
967        if (Configuration.errorOnAutoCreate())
968          throw new Error("Attempt to auto-create CompartmentDefinition.description");
969        else if (Configuration.doAutoCreate())
970          this.description = new MarkdownType(); // bb
971      return this.description;
972    }
973
974    public boolean hasDescriptionElement() { 
975      return this.description != null && !this.description.isEmpty();
976    }
977
978    public boolean hasDescription() { 
979      return this.description != null && !this.description.isEmpty();
980    }
981
982    /**
983     * @param value {@link #description} (A free text natural language description of the compartment 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
984     */
985    public CompartmentDefinition setDescriptionElement(MarkdownType value) { 
986      this.description = value;
987      return this;
988    }
989
990    /**
991     * @return A free text natural language description of the compartment definition from a consumer's perspective.
992     */
993    public String getDescription() { 
994      return this.description == null ? null : this.description.getValue();
995    }
996
997    /**
998     * @param value A free text natural language description of the compartment definition from a consumer's perspective.
999     */
1000    public CompartmentDefinition setDescription(String value) { 
1001      if (value == null)
1002        this.description = null;
1003      else {
1004        if (this.description == null)
1005          this.description = new MarkdownType();
1006        this.description.setValue(value);
1007      }
1008      return this;
1009    }
1010
1011    /**
1012     * @return {@link #useContext} (The content was developed with a focus and intent of supporting the contexts that are listed. These terms may be used to assist with indexing and searching for appropriate compartment definition instances.)
1013     */
1014    public List<UsageContext> getUseContext() { 
1015      if (this.useContext == null)
1016        this.useContext = new ArrayList<UsageContext>();
1017      return this.useContext;
1018    }
1019
1020    /**
1021     * @return Returns a reference to <code>this</code> for easy method chaining
1022     */
1023    public CompartmentDefinition setUseContext(List<UsageContext> theUseContext) { 
1024      this.useContext = theUseContext;
1025      return this;
1026    }
1027
1028    public boolean hasUseContext() { 
1029      if (this.useContext == null)
1030        return false;
1031      for (UsageContext item : this.useContext)
1032        if (!item.isEmpty())
1033          return true;
1034      return false;
1035    }
1036
1037    public UsageContext addUseContext() { //3
1038      UsageContext t = new UsageContext();
1039      if (this.useContext == null)
1040        this.useContext = new ArrayList<UsageContext>();
1041      this.useContext.add(t);
1042      return t;
1043    }
1044
1045    public CompartmentDefinition addUseContext(UsageContext t) { //3
1046      if (t == null)
1047        return this;
1048      if (this.useContext == null)
1049        this.useContext = new ArrayList<UsageContext>();
1050      this.useContext.add(t);
1051      return this;
1052    }
1053
1054    /**
1055     * @return The first repetition of repeating field {@link #useContext}, creating it if it does not already exist
1056     */
1057    public UsageContext getUseContextFirstRep() { 
1058      if (getUseContext().isEmpty()) {
1059        addUseContext();
1060      }
1061      return getUseContext().get(0);
1062    }
1063
1064    /**
1065     * @return {@link #jurisdiction} (A legal or geographic region in which the compartment definition is intended to be used.)
1066     */
1067    public List<CodeableConcept> getJurisdiction() { 
1068      if (this.jurisdiction == null)
1069        this.jurisdiction = new ArrayList<CodeableConcept>();
1070      return this.jurisdiction;
1071    }
1072
1073    /**
1074     * @return Returns a reference to <code>this</code> for easy method chaining
1075     */
1076    public CompartmentDefinition setJurisdiction(List<CodeableConcept> theJurisdiction) { 
1077      this.jurisdiction = theJurisdiction;
1078      return this;
1079    }
1080
1081    public boolean hasJurisdiction() { 
1082      if (this.jurisdiction == null)
1083        return false;
1084      for (CodeableConcept item : this.jurisdiction)
1085        if (!item.isEmpty())
1086          return true;
1087      return false;
1088    }
1089
1090    public CodeableConcept addJurisdiction() { //3
1091      CodeableConcept t = new CodeableConcept();
1092      if (this.jurisdiction == null)
1093        this.jurisdiction = new ArrayList<CodeableConcept>();
1094      this.jurisdiction.add(t);
1095      return t;
1096    }
1097
1098    public CompartmentDefinition addJurisdiction(CodeableConcept t) { //3
1099      if (t == null)
1100        return this;
1101      if (this.jurisdiction == null)
1102        this.jurisdiction = new ArrayList<CodeableConcept>();
1103      this.jurisdiction.add(t);
1104      return this;
1105    }
1106
1107    /**
1108     * @return The first repetition of repeating field {@link #jurisdiction}, creating it if it does not already exist
1109     */
1110    public CodeableConcept getJurisdictionFirstRep() { 
1111      if (getJurisdiction().isEmpty()) {
1112        addJurisdiction();
1113      }
1114      return getJurisdiction().get(0);
1115    }
1116
1117    /**
1118     * @return {@link #purpose} (Explanation of why this compartment 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
1119     */
1120    public MarkdownType getPurposeElement() { 
1121      if (this.purpose == null)
1122        if (Configuration.errorOnAutoCreate())
1123          throw new Error("Attempt to auto-create CompartmentDefinition.purpose");
1124        else if (Configuration.doAutoCreate())
1125          this.purpose = new MarkdownType(); // bb
1126      return this.purpose;
1127    }
1128
1129    public boolean hasPurposeElement() { 
1130      return this.purpose != null && !this.purpose.isEmpty();
1131    }
1132
1133    public boolean hasPurpose() { 
1134      return this.purpose != null && !this.purpose.isEmpty();
1135    }
1136
1137    /**
1138     * @param value {@link #purpose} (Explanation of why this compartment 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
1139     */
1140    public CompartmentDefinition setPurposeElement(MarkdownType value) { 
1141      this.purpose = value;
1142      return this;
1143    }
1144
1145    /**
1146     * @return Explanation of why this compartment definition is needed and why it has been designed as it has.
1147     */
1148    public String getPurpose() { 
1149      return this.purpose == null ? null : this.purpose.getValue();
1150    }
1151
1152    /**
1153     * @param value Explanation of why this compartment definition is needed and why it has been designed as it has.
1154     */
1155    public CompartmentDefinition setPurpose(String value) { 
1156      if (value == null)
1157        this.purpose = null;
1158      else {
1159        if (this.purpose == null)
1160          this.purpose = new MarkdownType();
1161        this.purpose.setValue(value);
1162      }
1163      return this;
1164    }
1165
1166    /**
1167     * @return {@link #code} (Which compartment this definition describes.). This is the underlying object with id, value and extensions. The accessor "getCode" gives direct access to the value
1168     */
1169    public Enumeration<CompartmentType> getCodeElement() { 
1170      if (this.code == null)
1171        if (Configuration.errorOnAutoCreate())
1172          throw new Error("Attempt to auto-create CompartmentDefinition.code");
1173        else if (Configuration.doAutoCreate())
1174          this.code = new Enumeration<CompartmentType>(new CompartmentTypeEnumFactory()); // bb
1175      return this.code;
1176    }
1177
1178    public boolean hasCodeElement() { 
1179      return this.code != null && !this.code.isEmpty();
1180    }
1181
1182    public boolean hasCode() { 
1183      return this.code != null && !this.code.isEmpty();
1184    }
1185
1186    /**
1187     * @param value {@link #code} (Which compartment this definition describes.). This is the underlying object with id, value and extensions. The accessor "getCode" gives direct access to the value
1188     */
1189    public CompartmentDefinition setCodeElement(Enumeration<CompartmentType> value) { 
1190      this.code = value;
1191      return this;
1192    }
1193
1194    /**
1195     * @return Which compartment this definition describes.
1196     */
1197    public CompartmentType getCode() { 
1198      return this.code == null ? null : this.code.getValue();
1199    }
1200
1201    /**
1202     * @param value Which compartment this definition describes.
1203     */
1204    public CompartmentDefinition setCode(CompartmentType value) { 
1205        if (this.code == null)
1206          this.code = new Enumeration<CompartmentType>(new CompartmentTypeEnumFactory());
1207        this.code.setValue(value);
1208      return this;
1209    }
1210
1211    /**
1212     * @return {@link #search} (Whether the search syntax is supported,.). This is the underlying object with id, value and extensions. The accessor "getSearch" gives direct access to the value
1213     */
1214    public BooleanType getSearchElement() { 
1215      if (this.search == null)
1216        if (Configuration.errorOnAutoCreate())
1217          throw new Error("Attempt to auto-create CompartmentDefinition.search");
1218        else if (Configuration.doAutoCreate())
1219          this.search = new BooleanType(); // bb
1220      return this.search;
1221    }
1222
1223    public boolean hasSearchElement() { 
1224      return this.search != null && !this.search.isEmpty();
1225    }
1226
1227    public boolean hasSearch() { 
1228      return this.search != null && !this.search.isEmpty();
1229    }
1230
1231    /**
1232     * @param value {@link #search} (Whether the search syntax is supported,.). This is the underlying object with id, value and extensions. The accessor "getSearch" gives direct access to the value
1233     */
1234    public CompartmentDefinition setSearchElement(BooleanType value) { 
1235      this.search = value;
1236      return this;
1237    }
1238
1239    /**
1240     * @return Whether the search syntax is supported,.
1241     */
1242    public boolean getSearch() { 
1243      return this.search == null || this.search.isEmpty() ? false : this.search.getValue();
1244    }
1245
1246    /**
1247     * @param value Whether the search syntax is supported,.
1248     */
1249    public CompartmentDefinition setSearch(boolean value) { 
1250        if (this.search == null)
1251          this.search = new BooleanType();
1252        this.search.setValue(value);
1253      return this;
1254    }
1255
1256    /**
1257     * @return {@link #resource} (Information about how a resource is related to the compartment.)
1258     */
1259    public List<CompartmentDefinitionResourceComponent> getResource() { 
1260      if (this.resource == null)
1261        this.resource = new ArrayList<CompartmentDefinitionResourceComponent>();
1262      return this.resource;
1263    }
1264
1265    /**
1266     * @return Returns a reference to <code>this</code> for easy method chaining
1267     */
1268    public CompartmentDefinition setResource(List<CompartmentDefinitionResourceComponent> theResource) { 
1269      this.resource = theResource;
1270      return this;
1271    }
1272
1273    public boolean hasResource() { 
1274      if (this.resource == null)
1275        return false;
1276      for (CompartmentDefinitionResourceComponent item : this.resource)
1277        if (!item.isEmpty())
1278          return true;
1279      return false;
1280    }
1281
1282    public CompartmentDefinitionResourceComponent addResource() { //3
1283      CompartmentDefinitionResourceComponent t = new CompartmentDefinitionResourceComponent();
1284      if (this.resource == null)
1285        this.resource = new ArrayList<CompartmentDefinitionResourceComponent>();
1286      this.resource.add(t);
1287      return t;
1288    }
1289
1290    public CompartmentDefinition addResource(CompartmentDefinitionResourceComponent t) { //3
1291      if (t == null)
1292        return this;
1293      if (this.resource == null)
1294        this.resource = new ArrayList<CompartmentDefinitionResourceComponent>();
1295      this.resource.add(t);
1296      return this;
1297    }
1298
1299    /**
1300     * @return The first repetition of repeating field {@link #resource}, creating it if it does not already exist
1301     */
1302    public CompartmentDefinitionResourceComponent getResourceFirstRep() { 
1303      if (getResource().isEmpty()) {
1304        addResource();
1305      }
1306      return getResource().get(0);
1307    }
1308
1309      protected void listChildren(List<Property> children) {
1310        super.listChildren(children);
1311        children.add(new Property("url", "uri", "An absolute URI that is used to identify this compartment definition when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which this compartment definition is (or will be) published.", 0, 1, url));
1312        children.add(new Property("name", "string", "A natural language name identifying the compartment definition. This name should be usable as an identifier for the module by machine processing applications such as code generation.", 0, 1, name));
1313        children.add(new Property("title", "string", "A short, descriptive, user-friendly title for the compartment definition.", 0, 1, title));
1314        children.add(new Property("status", "code", "The status of this compartment definition. Enables tracking the life-cycle of the content.", 0, 1, status));
1315        children.add(new Property("experimental", "boolean", "A Boolean value to indicate that this compartment definition is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.", 0, 1, experimental));
1316        children.add(new Property("date", "dateTime", "The date  (and optionally time) when the compartment 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 compartment definition changes.", 0, 1, date));
1317        children.add(new Property("publisher", "string", "The name of the organization or individual that published the compartment definition.", 0, 1, publisher));
1318        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));
1319        children.add(new Property("description", "markdown", "A free text natural language description of the compartment definition from a consumer's perspective.", 0, 1, description));
1320        children.add(new Property("useContext", "UsageContext", "The content was developed with a focus and intent of supporting the contexts that are listed. These terms may be used to assist with indexing and searching for appropriate compartment definition instances.", 0, java.lang.Integer.MAX_VALUE, useContext));
1321        children.add(new Property("jurisdiction", "CodeableConcept", "A legal or geographic region in which the compartment definition is intended to be used.", 0, java.lang.Integer.MAX_VALUE, jurisdiction));
1322        children.add(new Property("purpose", "markdown", "Explanation of why this compartment definition is needed and why it has been designed as it has.", 0, 1, purpose));
1323        children.add(new Property("code", "code", "Which compartment this definition describes.", 0, 1, code));
1324        children.add(new Property("search", "boolean", "Whether the search syntax is supported,.", 0, 1, search));
1325        children.add(new Property("resource", "", "Information about how a resource is related to the compartment.", 0, java.lang.Integer.MAX_VALUE, resource));
1326      }
1327
1328      @Override
1329      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1330        switch (_hash) {
1331        case 116079: /*url*/  return new Property("url", "uri", "An absolute URI that is used to identify this compartment definition when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which this compartment definition is (or will be) published.", 0, 1, url);
1332        case 3373707: /*name*/  return new Property("name", "string", "A natural language name identifying the compartment definition. This name should be usable as an identifier for the module by machine processing applications such as code generation.", 0, 1, name);
1333        case 110371416: /*title*/  return new Property("title", "string", "A short, descriptive, user-friendly title for the compartment definition.", 0, 1, title);
1334        case -892481550: /*status*/  return new Property("status", "code", "The status of this compartment definition. Enables tracking the life-cycle of the content.", 0, 1, status);
1335        case -404562712: /*experimental*/  return new Property("experimental", "boolean", "A Boolean value to indicate that this compartment definition is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.", 0, 1, experimental);
1336        case 3076014: /*date*/  return new Property("date", "dateTime", "The date  (and optionally time) when the compartment 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 compartment definition changes.", 0, 1, date);
1337        case 1447404028: /*publisher*/  return new Property("publisher", "string", "The name of the organization or individual that published the compartment definition.", 0, 1, publisher);
1338        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);
1339        case -1724546052: /*description*/  return new Property("description", "markdown", "A free text natural language description of the compartment definition from a consumer's perspective.", 0, 1, description);
1340        case -669707736: /*useContext*/  return new Property("useContext", "UsageContext", "The content was developed with a focus and intent of supporting the contexts that are listed. These terms may be used to assist with indexing and searching for appropriate compartment definition instances.", 0, java.lang.Integer.MAX_VALUE, useContext);
1341        case -507075711: /*jurisdiction*/  return new Property("jurisdiction", "CodeableConcept", "A legal or geographic region in which the compartment definition is intended to be used.", 0, java.lang.Integer.MAX_VALUE, jurisdiction);
1342        case -220463842: /*purpose*/  return new Property("purpose", "markdown", "Explanation of why this compartment definition is needed and why it has been designed as it has.", 0, 1, purpose);
1343        case 3059181: /*code*/  return new Property("code", "code", "Which compartment this definition describes.", 0, 1, code);
1344        case -906336856: /*search*/  return new Property("search", "boolean", "Whether the search syntax is supported,.", 0, 1, search);
1345        case -341064690: /*resource*/  return new Property("resource", "", "Information about how a resource is related to the compartment.", 0, java.lang.Integer.MAX_VALUE, resource);
1346        default: return super.getNamedProperty(_hash, _name, _checkValid);
1347        }
1348
1349      }
1350
1351      @Override
1352      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1353        switch (hash) {
1354        case 116079: /*url*/ return this.url == null ? new Base[0] : new Base[] {this.url}; // UriType
1355        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
1356        case 110371416: /*title*/ return this.title == null ? new Base[0] : new Base[] {this.title}; // StringType
1357        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<PublicationStatus>
1358        case -404562712: /*experimental*/ return this.experimental == null ? new Base[0] : new Base[] {this.experimental}; // BooleanType
1359        case 3076014: /*date*/ return this.date == null ? new Base[0] : new Base[] {this.date}; // DateTimeType
1360        case 1447404028: /*publisher*/ return this.publisher == null ? new Base[0] : new Base[] {this.publisher}; // StringType
1361        case 951526432: /*contact*/ return this.contact == null ? new Base[0] : this.contact.toArray(new Base[this.contact.size()]); // ContactDetail
1362        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // MarkdownType
1363        case -669707736: /*useContext*/ return this.useContext == null ? new Base[0] : this.useContext.toArray(new Base[this.useContext.size()]); // UsageContext
1364        case -507075711: /*jurisdiction*/ return this.jurisdiction == null ? new Base[0] : this.jurisdiction.toArray(new Base[this.jurisdiction.size()]); // CodeableConcept
1365        case -220463842: /*purpose*/ return this.purpose == null ? new Base[0] : new Base[] {this.purpose}; // MarkdownType
1366        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // Enumeration<CompartmentType>
1367        case -906336856: /*search*/ return this.search == null ? new Base[0] : new Base[] {this.search}; // BooleanType
1368        case -341064690: /*resource*/ return this.resource == null ? new Base[0] : this.resource.toArray(new Base[this.resource.size()]); // CompartmentDefinitionResourceComponent
1369        default: return super.getProperty(hash, name, checkValid);
1370        }
1371
1372      }
1373
1374      @Override
1375      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1376        switch (hash) {
1377        case 116079: // url
1378          this.url = castToUri(value); // UriType
1379          return value;
1380        case 3373707: // name
1381          this.name = castToString(value); // StringType
1382          return value;
1383        case 110371416: // title
1384          this.title = castToString(value); // StringType
1385          return value;
1386        case -892481550: // status
1387          value = new PublicationStatusEnumFactory().fromType(castToCode(value));
1388          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
1389          return value;
1390        case -404562712: // experimental
1391          this.experimental = castToBoolean(value); // BooleanType
1392          return value;
1393        case 3076014: // date
1394          this.date = castToDateTime(value); // DateTimeType
1395          return value;
1396        case 1447404028: // publisher
1397          this.publisher = castToString(value); // StringType
1398          return value;
1399        case 951526432: // contact
1400          this.getContact().add(castToContactDetail(value)); // ContactDetail
1401          return value;
1402        case -1724546052: // description
1403          this.description = castToMarkdown(value); // MarkdownType
1404          return value;
1405        case -669707736: // useContext
1406          this.getUseContext().add(castToUsageContext(value)); // UsageContext
1407          return value;
1408        case -507075711: // jurisdiction
1409          this.getJurisdiction().add(castToCodeableConcept(value)); // CodeableConcept
1410          return value;
1411        case -220463842: // purpose
1412          this.purpose = castToMarkdown(value); // MarkdownType
1413          return value;
1414        case 3059181: // code
1415          value = new CompartmentTypeEnumFactory().fromType(castToCode(value));
1416          this.code = (Enumeration) value; // Enumeration<CompartmentType>
1417          return value;
1418        case -906336856: // search
1419          this.search = castToBoolean(value); // BooleanType
1420          return value;
1421        case -341064690: // resource
1422          this.getResource().add((CompartmentDefinitionResourceComponent) value); // CompartmentDefinitionResourceComponent
1423          return value;
1424        default: return super.setProperty(hash, name, value);
1425        }
1426
1427      }
1428
1429      @Override
1430      public Base setProperty(String name, Base value) throws FHIRException {
1431        if (name.equals("url")) {
1432          this.url = castToUri(value); // UriType
1433        } else if (name.equals("name")) {
1434          this.name = castToString(value); // StringType
1435        } else if (name.equals("title")) {
1436          this.title = castToString(value); // StringType
1437        } else if (name.equals("status")) {
1438          value = new PublicationStatusEnumFactory().fromType(castToCode(value));
1439          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
1440        } else if (name.equals("experimental")) {
1441          this.experimental = castToBoolean(value); // BooleanType
1442        } else if (name.equals("date")) {
1443          this.date = castToDateTime(value); // DateTimeType
1444        } else if (name.equals("publisher")) {
1445          this.publisher = castToString(value); // StringType
1446        } else if (name.equals("contact")) {
1447          this.getContact().add(castToContactDetail(value));
1448        } else if (name.equals("description")) {
1449          this.description = castToMarkdown(value); // MarkdownType
1450        } else if (name.equals("useContext")) {
1451          this.getUseContext().add(castToUsageContext(value));
1452        } else if (name.equals("jurisdiction")) {
1453          this.getJurisdiction().add(castToCodeableConcept(value));
1454        } else if (name.equals("purpose")) {
1455          this.purpose = castToMarkdown(value); // MarkdownType
1456        } else if (name.equals("code")) {
1457          value = new CompartmentTypeEnumFactory().fromType(castToCode(value));
1458          this.code = (Enumeration) value; // Enumeration<CompartmentType>
1459        } else if (name.equals("search")) {
1460          this.search = castToBoolean(value); // BooleanType
1461        } else if (name.equals("resource")) {
1462          this.getResource().add((CompartmentDefinitionResourceComponent) value);
1463        } else
1464          return super.setProperty(name, value);
1465        return value;
1466      }
1467
1468      @Override
1469      public Base makeProperty(int hash, String name) throws FHIRException {
1470        switch (hash) {
1471        case 116079:  return getUrlElement();
1472        case 3373707:  return getNameElement();
1473        case 110371416:  return getTitleElement();
1474        case -892481550:  return getStatusElement();
1475        case -404562712:  return getExperimentalElement();
1476        case 3076014:  return getDateElement();
1477        case 1447404028:  return getPublisherElement();
1478        case 951526432:  return addContact(); 
1479        case -1724546052:  return getDescriptionElement();
1480        case -669707736:  return addUseContext(); 
1481        case -507075711:  return addJurisdiction(); 
1482        case -220463842:  return getPurposeElement();
1483        case 3059181:  return getCodeElement();
1484        case -906336856:  return getSearchElement();
1485        case -341064690:  return addResource(); 
1486        default: return super.makeProperty(hash, name);
1487        }
1488
1489      }
1490
1491      @Override
1492      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1493        switch (hash) {
1494        case 116079: /*url*/ return new String[] {"uri"};
1495        case 3373707: /*name*/ return new String[] {"string"};
1496        case 110371416: /*title*/ return new String[] {"string"};
1497        case -892481550: /*status*/ return new String[] {"code"};
1498        case -404562712: /*experimental*/ return new String[] {"boolean"};
1499        case 3076014: /*date*/ return new String[] {"dateTime"};
1500        case 1447404028: /*publisher*/ return new String[] {"string"};
1501        case 951526432: /*contact*/ return new String[] {"ContactDetail"};
1502        case -1724546052: /*description*/ return new String[] {"markdown"};
1503        case -669707736: /*useContext*/ return new String[] {"UsageContext"};
1504        case -507075711: /*jurisdiction*/ return new String[] {"CodeableConcept"};
1505        case -220463842: /*purpose*/ return new String[] {"markdown"};
1506        case 3059181: /*code*/ return new String[] {"code"};
1507        case -906336856: /*search*/ return new String[] {"boolean"};
1508        case -341064690: /*resource*/ return new String[] {};
1509        default: return super.getTypesForProperty(hash, name);
1510        }
1511
1512      }
1513
1514      @Override
1515      public Base addChild(String name) throws FHIRException {
1516        if (name.equals("url")) {
1517          throw new FHIRException("Cannot call addChild on a primitive type CompartmentDefinition.url");
1518        }
1519        else if (name.equals("name")) {
1520          throw new FHIRException("Cannot call addChild on a primitive type CompartmentDefinition.name");
1521        }
1522        else if (name.equals("title")) {
1523          throw new FHIRException("Cannot call addChild on a primitive type CompartmentDefinition.title");
1524        }
1525        else if (name.equals("status")) {
1526          throw new FHIRException("Cannot call addChild on a primitive type CompartmentDefinition.status");
1527        }
1528        else if (name.equals("experimental")) {
1529          throw new FHIRException("Cannot call addChild on a primitive type CompartmentDefinition.experimental");
1530        }
1531        else if (name.equals("date")) {
1532          throw new FHIRException("Cannot call addChild on a primitive type CompartmentDefinition.date");
1533        }
1534        else if (name.equals("publisher")) {
1535          throw new FHIRException("Cannot call addChild on a primitive type CompartmentDefinition.publisher");
1536        }
1537        else if (name.equals("contact")) {
1538          return addContact();
1539        }
1540        else if (name.equals("description")) {
1541          throw new FHIRException("Cannot call addChild on a primitive type CompartmentDefinition.description");
1542        }
1543        else if (name.equals("useContext")) {
1544          return addUseContext();
1545        }
1546        else if (name.equals("jurisdiction")) {
1547          return addJurisdiction();
1548        }
1549        else if (name.equals("purpose")) {
1550          throw new FHIRException("Cannot call addChild on a primitive type CompartmentDefinition.purpose");
1551        }
1552        else if (name.equals("code")) {
1553          throw new FHIRException("Cannot call addChild on a primitive type CompartmentDefinition.code");
1554        }
1555        else if (name.equals("search")) {
1556          throw new FHIRException("Cannot call addChild on a primitive type CompartmentDefinition.search");
1557        }
1558        else if (name.equals("resource")) {
1559          return addResource();
1560        }
1561        else
1562          return super.addChild(name);
1563      }
1564
1565  public String fhirType() {
1566    return "CompartmentDefinition";
1567
1568  }
1569
1570      public CompartmentDefinition copy() {
1571        CompartmentDefinition dst = new CompartmentDefinition();
1572        copyValues(dst);
1573        dst.url = url == null ? null : url.copy();
1574        dst.name = name == null ? null : name.copy();
1575        dst.title = title == null ? null : title.copy();
1576        dst.status = status == null ? null : status.copy();
1577        dst.experimental = experimental == null ? null : experimental.copy();
1578        dst.date = date == null ? null : date.copy();
1579        dst.publisher = publisher == null ? null : publisher.copy();
1580        if (contact != null) {
1581          dst.contact = new ArrayList<ContactDetail>();
1582          for (ContactDetail i : contact)
1583            dst.contact.add(i.copy());
1584        };
1585        dst.description = description == null ? null : description.copy();
1586        if (useContext != null) {
1587          dst.useContext = new ArrayList<UsageContext>();
1588          for (UsageContext i : useContext)
1589            dst.useContext.add(i.copy());
1590        };
1591        if (jurisdiction != null) {
1592          dst.jurisdiction = new ArrayList<CodeableConcept>();
1593          for (CodeableConcept i : jurisdiction)
1594            dst.jurisdiction.add(i.copy());
1595        };
1596        dst.purpose = purpose == null ? null : purpose.copy();
1597        dst.code = code == null ? null : code.copy();
1598        dst.search = search == null ? null : search.copy();
1599        if (resource != null) {
1600          dst.resource = new ArrayList<CompartmentDefinitionResourceComponent>();
1601          for (CompartmentDefinitionResourceComponent i : resource)
1602            dst.resource.add(i.copy());
1603        };
1604        return dst;
1605      }
1606
1607      protected CompartmentDefinition typedCopy() {
1608        return copy();
1609      }
1610
1611      @Override
1612      public boolean equalsDeep(Base other_) {
1613        if (!super.equalsDeep(other_))
1614          return false;
1615        if (!(other_ instanceof CompartmentDefinition))
1616          return false;
1617        CompartmentDefinition o = (CompartmentDefinition) other_;
1618        return compareDeep(purpose, o.purpose, true) && compareDeep(code, o.code, true) && compareDeep(search, o.search, true)
1619           && compareDeep(resource, o.resource, true);
1620      }
1621
1622      @Override
1623      public boolean equalsShallow(Base other_) {
1624        if (!super.equalsShallow(other_))
1625          return false;
1626        if (!(other_ instanceof CompartmentDefinition))
1627          return false;
1628        CompartmentDefinition o = (CompartmentDefinition) other_;
1629        return compareValues(purpose, o.purpose, true) && compareValues(code, o.code, true) && compareValues(search, o.search, true)
1630          ;
1631      }
1632
1633      public boolean isEmpty() {
1634        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(purpose, code, search, resource
1635          );
1636      }
1637
1638  @Override
1639  public ResourceType getResourceType() {
1640    return ResourceType.CompartmentDefinition;
1641   }
1642
1643 /**
1644   * Search parameter: <b>date</b>
1645   * <p>
1646   * Description: <b>The compartment definition publication date</b><br>
1647   * Type: <b>date</b><br>
1648   * Path: <b>CompartmentDefinition.date</b><br>
1649   * </p>
1650   */
1651  @SearchParamDefinition(name="date", path="CompartmentDefinition.date", description="The compartment definition publication date", type="date" )
1652  public static final String SP_DATE = "date";
1653 /**
1654   * <b>Fluent Client</b> search parameter constant for <b>date</b>
1655   * <p>
1656   * Description: <b>The compartment definition publication date</b><br>
1657   * Type: <b>date</b><br>
1658   * Path: <b>CompartmentDefinition.date</b><br>
1659   * </p>
1660   */
1661  public static final ca.uhn.fhir.rest.gclient.DateClientParam DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_DATE);
1662
1663 /**
1664   * Search parameter: <b>code</b>
1665   * <p>
1666   * Description: <b>Patient | Encounter | RelatedPerson | Practitioner | Device</b><br>
1667   * Type: <b>token</b><br>
1668   * Path: <b>CompartmentDefinition.code</b><br>
1669   * </p>
1670   */
1671  @SearchParamDefinition(name="code", path="CompartmentDefinition.code", description="Patient | Encounter | RelatedPerson | Practitioner | Device", type="token" )
1672  public static final String SP_CODE = "code";
1673 /**
1674   * <b>Fluent Client</b> search parameter constant for <b>code</b>
1675   * <p>
1676   * Description: <b>Patient | Encounter | RelatedPerson | Practitioner | Device</b><br>
1677   * Type: <b>token</b><br>
1678   * Path: <b>CompartmentDefinition.code</b><br>
1679   * </p>
1680   */
1681  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CODE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CODE);
1682
1683 /**
1684   * Search parameter: <b>resource</b>
1685   * <p>
1686   * Description: <b>Name of resource type</b><br>
1687   * Type: <b>token</b><br>
1688   * Path: <b>CompartmentDefinition.resource.code</b><br>
1689   * </p>
1690   */
1691  @SearchParamDefinition(name="resource", path="CompartmentDefinition.resource.code", description="Name of resource type", type="token" )
1692  public static final String SP_RESOURCE = "resource";
1693 /**
1694   * <b>Fluent Client</b> search parameter constant for <b>resource</b>
1695   * <p>
1696   * Description: <b>Name of resource type</b><br>
1697   * Type: <b>token</b><br>
1698   * Path: <b>CompartmentDefinition.resource.code</b><br>
1699   * </p>
1700   */
1701  public static final ca.uhn.fhir.rest.gclient.TokenClientParam RESOURCE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_RESOURCE);
1702
1703 /**
1704   * Search parameter: <b>jurisdiction</b>
1705   * <p>
1706   * Description: <b>Intended jurisdiction for the compartment definition</b><br>
1707   * Type: <b>token</b><br>
1708   * Path: <b>CompartmentDefinition.jurisdiction</b><br>
1709   * </p>
1710   */
1711  @SearchParamDefinition(name="jurisdiction", path="CompartmentDefinition.jurisdiction", description="Intended jurisdiction for the compartment definition", type="token" )
1712  public static final String SP_JURISDICTION = "jurisdiction";
1713 /**
1714   * <b>Fluent Client</b> search parameter constant for <b>jurisdiction</b>
1715   * <p>
1716   * Description: <b>Intended jurisdiction for the compartment definition</b><br>
1717   * Type: <b>token</b><br>
1718   * Path: <b>CompartmentDefinition.jurisdiction</b><br>
1719   * </p>
1720   */
1721  public static final ca.uhn.fhir.rest.gclient.TokenClientParam JURISDICTION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_JURISDICTION);
1722
1723 /**
1724   * Search parameter: <b>name</b>
1725   * <p>
1726   * Description: <b>Computationally friendly name of the compartment definition</b><br>
1727   * Type: <b>string</b><br>
1728   * Path: <b>CompartmentDefinition.name</b><br>
1729   * </p>
1730   */
1731  @SearchParamDefinition(name="name", path="CompartmentDefinition.name", description="Computationally friendly name of the compartment definition", type="string" )
1732  public static final String SP_NAME = "name";
1733 /**
1734   * <b>Fluent Client</b> search parameter constant for <b>name</b>
1735   * <p>
1736   * Description: <b>Computationally friendly name of the compartment definition</b><br>
1737   * Type: <b>string</b><br>
1738   * Path: <b>CompartmentDefinition.name</b><br>
1739   * </p>
1740   */
1741  public static final ca.uhn.fhir.rest.gclient.StringClientParam NAME = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_NAME);
1742
1743 /**
1744   * Search parameter: <b>description</b>
1745   * <p>
1746   * Description: <b>The description of the compartment definition</b><br>
1747   * Type: <b>string</b><br>
1748   * Path: <b>CompartmentDefinition.description</b><br>
1749   * </p>
1750   */
1751  @SearchParamDefinition(name="description", path="CompartmentDefinition.description", description="The description of the compartment definition", type="string" )
1752  public static final String SP_DESCRIPTION = "description";
1753 /**
1754   * <b>Fluent Client</b> search parameter constant for <b>description</b>
1755   * <p>
1756   * Description: <b>The description of the compartment definition</b><br>
1757   * Type: <b>string</b><br>
1758   * Path: <b>CompartmentDefinition.description</b><br>
1759   * </p>
1760   */
1761  public static final ca.uhn.fhir.rest.gclient.StringClientParam DESCRIPTION = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_DESCRIPTION);
1762
1763 /**
1764   * Search parameter: <b>publisher</b>
1765   * <p>
1766   * Description: <b>Name of the publisher of the compartment definition</b><br>
1767   * Type: <b>string</b><br>
1768   * Path: <b>CompartmentDefinition.publisher</b><br>
1769   * </p>
1770   */
1771  @SearchParamDefinition(name="publisher", path="CompartmentDefinition.publisher", description="Name of the publisher of the compartment definition", type="string" )
1772  public static final String SP_PUBLISHER = "publisher";
1773 /**
1774   * <b>Fluent Client</b> search parameter constant for <b>publisher</b>
1775   * <p>
1776   * Description: <b>Name of the publisher of the compartment definition</b><br>
1777   * Type: <b>string</b><br>
1778   * Path: <b>CompartmentDefinition.publisher</b><br>
1779   * </p>
1780   */
1781  public static final ca.uhn.fhir.rest.gclient.StringClientParam PUBLISHER = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_PUBLISHER);
1782
1783 /**
1784   * Search parameter: <b>context-type</b>
1785   * <p>
1786   * Description: <b>A type of use context assigned to the compartment definition</b><br>
1787   * Type: <b>token</b><br>
1788   * Path: <b>CompartmentDefinition.useContext.code</b><br>
1789   * </p>
1790   */
1791  @SearchParamDefinition(name="context-type", path="CompartmentDefinition.useContext.code", description="A type of use context assigned to the compartment definition", type="token" )
1792  public static final String SP_CONTEXT_TYPE = "context-type";
1793 /**
1794   * <b>Fluent Client</b> search parameter constant for <b>context-type</b>
1795   * <p>
1796   * Description: <b>A type of use context assigned to the compartment definition</b><br>
1797   * Type: <b>token</b><br>
1798   * Path: <b>CompartmentDefinition.useContext.code</b><br>
1799   * </p>
1800   */
1801  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT_TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTEXT_TYPE);
1802
1803 /**
1804   * Search parameter: <b>title</b>
1805   * <p>
1806   * Description: <b>The human-friendly name of the compartment definition</b><br>
1807   * Type: <b>string</b><br>
1808   * Path: <b>CompartmentDefinition.title</b><br>
1809   * </p>
1810   */
1811  @SearchParamDefinition(name="title", path="CompartmentDefinition.title", description="The human-friendly name of the compartment definition", type="string" )
1812  public static final String SP_TITLE = "title";
1813 /**
1814   * <b>Fluent Client</b> search parameter constant for <b>title</b>
1815   * <p>
1816   * Description: <b>The human-friendly name of the compartment definition</b><br>
1817   * Type: <b>string</b><br>
1818   * Path: <b>CompartmentDefinition.title</b><br>
1819   * </p>
1820   */
1821  public static final ca.uhn.fhir.rest.gclient.StringClientParam TITLE = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_TITLE);
1822
1823 /**
1824   * Search parameter: <b>url</b>
1825   * <p>
1826   * Description: <b>The uri that identifies the compartment definition</b><br>
1827   * Type: <b>uri</b><br>
1828   * Path: <b>CompartmentDefinition.url</b><br>
1829   * </p>
1830   */
1831  @SearchParamDefinition(name="url", path="CompartmentDefinition.url", description="The uri that identifies the compartment definition", type="uri" )
1832  public static final String SP_URL = "url";
1833 /**
1834   * <b>Fluent Client</b> search parameter constant for <b>url</b>
1835   * <p>
1836   * Description: <b>The uri that identifies the compartment definition</b><br>
1837   * Type: <b>uri</b><br>
1838   * Path: <b>CompartmentDefinition.url</b><br>
1839   * </p>
1840   */
1841  public static final ca.uhn.fhir.rest.gclient.UriClientParam URL = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_URL);
1842
1843 /**
1844   * Search parameter: <b>status</b>
1845   * <p>
1846   * Description: <b>The current status of the compartment definition</b><br>
1847   * Type: <b>token</b><br>
1848   * Path: <b>CompartmentDefinition.status</b><br>
1849   * </p>
1850   */
1851  @SearchParamDefinition(name="status", path="CompartmentDefinition.status", description="The current status of the compartment definition", type="token" )
1852  public static final String SP_STATUS = "status";
1853 /**
1854   * <b>Fluent Client</b> search parameter constant for <b>status</b>
1855   * <p>
1856   * Description: <b>The current status of the compartment definition</b><br>
1857   * Type: <b>token</b><br>
1858   * Path: <b>CompartmentDefinition.status</b><br>
1859   * </p>
1860   */
1861  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
1862
1863
1864}
1865