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