001package org.hl7.fhir.r4b.model;
002
003
004/*
005  Copyright (c) 2011+, HL7, Inc.
006  All rights reserved.
007  
008  Redistribution and use in source and binary forms, with or without modification, \
009  are permitted provided that the following conditions are met:
010  
011   * Redistributions of source code must retain the above copyright notice, this \
012     list of conditions and the following disclaimer.
013   * Redistributions in binary form must reproduce the above copyright notice, \
014     this list of conditions and the following disclaimer in the documentation \
015     and/or other materials provided with the distribution.
016   * Neither the name of HL7 nor the names of its contributors may be used to 
017     endorse or promote products derived from this software without specific 
018     prior written permission.
019  
020  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND \
021  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED \
022  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. \
023  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, \
024  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT \
025  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR \
026  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, \
027  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) \
028  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE \
029  POSSIBILITY OF SUCH DAMAGE.
030  */
031
032// Generated on Fri, Dec 31, 2021 05:58+1100 for FHIR v4.3.0-snapshot1
033
034import java.util.ArrayList;
035import java.util.Date;
036import java.util.List;
037import org.hl7.fhir.utilities.Utilities;
038import org.hl7.fhir.r4b.model.Enumerations.*;
039import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
040import org.hl7.fhir.exceptions.FHIRException;
041import org.hl7.fhir.instance.model.api.ICompositeType;
042import ca.uhn.fhir.model.api.annotation.ResourceDef;
043import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
044import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
045import ca.uhn.fhir.model.api.annotation.Child;
046import ca.uhn.fhir.model.api.annotation.ChildOrder;
047import ca.uhn.fhir.model.api.annotation.Description;
048import ca.uhn.fhir.model.api.annotation.Block;
049
050/**
051 * Representation of the content produced in a DICOM imaging study. A study comprises a set of series, each of which includes a set of Service-Object Pair Instances (SOP Instances - images or other data) acquired or produced in a common context.  A series is of only one modality (e.g. X-ray, CT, MR, ultrasound), but a study may have multiple series of different modalities.
052 */
053@ResourceDef(name="ImagingStudy", profile="http://hl7.org/fhir/StructureDefinition/ImagingStudy")
054public class ImagingStudy extends DomainResource {
055
056    public enum ImagingStudyStatus {
057        /**
058         * The existence of the imaging study is registered, but there is nothing yet available.
059         */
060        REGISTERED, 
061        /**
062         * At least one instance has been associated with this imaging study.
063         */
064        AVAILABLE, 
065        /**
066         * The imaging study is unavailable because the imaging study was not started or not completed (also sometimes called \"aborted\").
067         */
068        CANCELLED, 
069        /**
070         * The imaging study has been withdrawn following a previous final release.  This electronic record should never have existed, though it is possible that real-world decisions were based on it. (If real-world activity has occurred, the status should be \"cancelled\" rather than \"entered-in-error\".).
071         */
072        ENTEREDINERROR, 
073        /**
074         * The system does not know which of the status values currently applies for this request. Note: This concept is not to be used for \"other\" - one of the listed statuses is presumed to apply, it's just not known which one.
075         */
076        UNKNOWN, 
077        /**
078         * added to help the parsers with the generic types
079         */
080        NULL;
081        public static ImagingStudyStatus fromCode(String codeString) throws FHIRException {
082            if (codeString == null || "".equals(codeString))
083                return null;
084        if ("registered".equals(codeString))
085          return REGISTERED;
086        if ("available".equals(codeString))
087          return AVAILABLE;
088        if ("cancelled".equals(codeString))
089          return CANCELLED;
090        if ("entered-in-error".equals(codeString))
091          return ENTEREDINERROR;
092        if ("unknown".equals(codeString))
093          return UNKNOWN;
094        if (Configuration.isAcceptInvalidEnums())
095          return null;
096        else
097          throw new FHIRException("Unknown ImagingStudyStatus code '"+codeString+"'");
098        }
099        public String toCode() {
100          switch (this) {
101            case REGISTERED: return "registered";
102            case AVAILABLE: return "available";
103            case CANCELLED: return "cancelled";
104            case ENTEREDINERROR: return "entered-in-error";
105            case UNKNOWN: return "unknown";
106            case NULL: return null;
107            default: return "?";
108          }
109        }
110        public String getSystem() {
111          switch (this) {
112            case REGISTERED: return "http://hl7.org/fhir/imagingstudy-status";
113            case AVAILABLE: return "http://hl7.org/fhir/imagingstudy-status";
114            case CANCELLED: return "http://hl7.org/fhir/imagingstudy-status";
115            case ENTEREDINERROR: return "http://hl7.org/fhir/imagingstudy-status";
116            case UNKNOWN: return "http://hl7.org/fhir/imagingstudy-status";
117            case NULL: return null;
118            default: return "?";
119          }
120        }
121        public String getDefinition() {
122          switch (this) {
123            case REGISTERED: return "The existence of the imaging study is registered, but there is nothing yet available.";
124            case AVAILABLE: return "At least one instance has been associated with this imaging study.";
125            case CANCELLED: return "The imaging study is unavailable because the imaging study was not started or not completed (also sometimes called \"aborted\").";
126            case ENTEREDINERROR: return "The imaging study has been withdrawn following a previous final release.  This electronic record should never have existed, though it is possible that real-world decisions were based on it. (If real-world activity has occurred, the status should be \"cancelled\" rather than \"entered-in-error\".).";
127            case UNKNOWN: return "The system does not know which of the status values currently applies for this request. Note: This concept is not to be used for \"other\" - one of the listed statuses is presumed to apply, it's just not known which one.";
128            case NULL: return null;
129            default: return "?";
130          }
131        }
132        public String getDisplay() {
133          switch (this) {
134            case REGISTERED: return "Registered";
135            case AVAILABLE: return "Available";
136            case CANCELLED: return "Cancelled";
137            case ENTEREDINERROR: return "Entered in Error";
138            case UNKNOWN: return "Unknown";
139            case NULL: return null;
140            default: return "?";
141          }
142        }
143    }
144
145  public static class ImagingStudyStatusEnumFactory implements EnumFactory<ImagingStudyStatus> {
146    public ImagingStudyStatus fromCode(String codeString) throws IllegalArgumentException {
147      if (codeString == null || "".equals(codeString))
148            if (codeString == null || "".equals(codeString))
149                return null;
150        if ("registered".equals(codeString))
151          return ImagingStudyStatus.REGISTERED;
152        if ("available".equals(codeString))
153          return ImagingStudyStatus.AVAILABLE;
154        if ("cancelled".equals(codeString))
155          return ImagingStudyStatus.CANCELLED;
156        if ("entered-in-error".equals(codeString))
157          return ImagingStudyStatus.ENTEREDINERROR;
158        if ("unknown".equals(codeString))
159          return ImagingStudyStatus.UNKNOWN;
160        throw new IllegalArgumentException("Unknown ImagingStudyStatus code '"+codeString+"'");
161        }
162        public Enumeration<ImagingStudyStatus> fromType(Base code) throws FHIRException {
163          if (code == null)
164            return null;
165          if (code.isEmpty())
166            return new Enumeration<ImagingStudyStatus>(this);
167          String codeString = ((PrimitiveType) code).asStringValue();
168          if (codeString == null || "".equals(codeString))
169            return null;
170        if ("registered".equals(codeString))
171          return new Enumeration<ImagingStudyStatus>(this, ImagingStudyStatus.REGISTERED);
172        if ("available".equals(codeString))
173          return new Enumeration<ImagingStudyStatus>(this, ImagingStudyStatus.AVAILABLE);
174        if ("cancelled".equals(codeString))
175          return new Enumeration<ImagingStudyStatus>(this, ImagingStudyStatus.CANCELLED);
176        if ("entered-in-error".equals(codeString))
177          return new Enumeration<ImagingStudyStatus>(this, ImagingStudyStatus.ENTEREDINERROR);
178        if ("unknown".equals(codeString))
179          return new Enumeration<ImagingStudyStatus>(this, ImagingStudyStatus.UNKNOWN);
180        throw new FHIRException("Unknown ImagingStudyStatus code '"+codeString+"'");
181        }
182    public String toCode(ImagingStudyStatus code) {
183      if (code == ImagingStudyStatus.REGISTERED)
184        return "registered";
185      if (code == ImagingStudyStatus.AVAILABLE)
186        return "available";
187      if (code == ImagingStudyStatus.CANCELLED)
188        return "cancelled";
189      if (code == ImagingStudyStatus.ENTEREDINERROR)
190        return "entered-in-error";
191      if (code == ImagingStudyStatus.UNKNOWN)
192        return "unknown";
193      return "?";
194      }
195    public String toSystem(ImagingStudyStatus code) {
196      return code.getSystem();
197      }
198    }
199
200    @Block()
201    public static class ImagingStudySeriesComponent extends BackboneElement implements IBaseBackboneElement {
202        /**
203         * The DICOM Series Instance UID for the series.
204         */
205        @Child(name = "uid", type = {IdType.class}, order=1, min=1, max=1, modifier=false, summary=true)
206        @Description(shortDefinition="DICOM Series Instance UID for the series", formalDefinition="The DICOM Series Instance UID for the series." )
207        protected IdType uid;
208
209        /**
210         * The numeric identifier of this series in the study.
211         */
212        @Child(name = "number", type = {UnsignedIntType.class}, order=2, min=0, max=1, modifier=false, summary=true)
213        @Description(shortDefinition="Numeric identifier of this series", formalDefinition="The numeric identifier of this series in the study." )
214        protected UnsignedIntType number;
215
216        /**
217         * The modality of this series sequence.
218         */
219        @Child(name = "modality", type = {Coding.class}, order=3, min=1, max=1, modifier=false, summary=true)
220        @Description(shortDefinition="The modality of the instances in the series", formalDefinition="The modality of this series sequence." )
221        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://dicom.nema.org/medical/dicom/current/output/chtml/part16/sect_CID_29.html")
222        protected Coding modality;
223
224        /**
225         * A description of the series.
226         */
227        @Child(name = "description", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=true)
228        @Description(shortDefinition="A short human readable summary of the series", formalDefinition="A description of the series." )
229        protected StringType description;
230
231        /**
232         * Number of SOP Instances in the Study. The value given may be larger than the number of instance elements this resource contains due to resource availability, security, or other factors. This element should be present if any instance elements are present.
233         */
234        @Child(name = "numberOfInstances", type = {UnsignedIntType.class}, order=5, min=0, max=1, modifier=false, summary=true)
235        @Description(shortDefinition="Number of Series Related Instances", formalDefinition="Number of SOP Instances in the Study. The value given may be larger than the number of instance elements this resource contains due to resource availability, security, or other factors. This element should be present if any instance elements are present." )
236        protected UnsignedIntType numberOfInstances;
237
238        /**
239         * The network service providing access (e.g., query, view, or retrieval) for this series. See implementation notes for information about using DICOM endpoints. A series-level endpoint, if present, has precedence over a study-level endpoint with the same Endpoint.connectionType.
240         */
241        @Child(name = "endpoint", type = {Endpoint.class}, order=6, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
242        @Description(shortDefinition="Series access endpoint", formalDefinition="The network service providing access (e.g., query, view, or retrieval) for this series. See implementation notes for information about using DICOM endpoints. A series-level endpoint, if present, has precedence over a study-level endpoint with the same Endpoint.connectionType." )
243        protected List<Reference> endpoint;
244
245        /**
246         * The anatomic structures examined. See DICOM Part 16 Annex L (http://dicom.nema.org/medical/dicom/current/output/chtml/part16/chapter_L.html) for DICOM to SNOMED-CT mappings. The bodySite may indicate the laterality of body part imaged; if so, it shall be consistent with any content of ImagingStudy.series.laterality.
247         */
248        @Child(name = "bodySite", type = {Coding.class}, order=7, min=0, max=1, modifier=false, summary=true)
249        @Description(shortDefinition="Body part examined", formalDefinition="The anatomic structures examined. See DICOM Part 16 Annex L (http://dicom.nema.org/medical/dicom/current/output/chtml/part16/chapter_L.html) for DICOM to SNOMED-CT mappings. The bodySite may indicate the laterality of body part imaged; if so, it shall be consistent with any content of ImagingStudy.series.laterality." )
250        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/body-site")
251        protected Coding bodySite;
252
253        /**
254         * The laterality of the (possibly paired) anatomic structures examined. E.g., the left knee, both lungs, or unpaired abdomen. If present, shall be consistent with any laterality information indicated in ImagingStudy.series.bodySite.
255         */
256        @Child(name = "laterality", type = {Coding.class}, order=8, min=0, max=1, modifier=false, summary=true)
257        @Description(shortDefinition="Body part laterality", formalDefinition="The laterality of the (possibly paired) anatomic structures examined. E.g., the left knee, both lungs, or unpaired abdomen. If present, shall be consistent with any laterality information indicated in ImagingStudy.series.bodySite." )
258        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/bodysite-laterality")
259        protected Coding laterality;
260
261        /**
262         * The specimen imaged, e.g., for whole slide imaging of a biopsy.
263         */
264        @Child(name = "specimen", type = {Specimen.class}, order=9, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
265        @Description(shortDefinition="Specimen imaged", formalDefinition="The specimen imaged, e.g., for whole slide imaging of a biopsy." )
266        protected List<Reference> specimen;
267
268        /**
269         * The date and time the series was started.
270         */
271        @Child(name = "started", type = {DateTimeType.class}, order=10, min=0, max=1, modifier=false, summary=true)
272        @Description(shortDefinition="When the series started", formalDefinition="The date and time the series was started." )
273        protected DateTimeType started;
274
275        /**
276         * Indicates who or what performed the series and how they were involved.
277         */
278        @Child(name = "performer", type = {}, order=11, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
279        @Description(shortDefinition="Who performed the series", formalDefinition="Indicates who or what performed the series and how they were involved." )
280        protected List<ImagingStudySeriesPerformerComponent> performer;
281
282        /**
283         * A single SOP instance within the series, e.g. an image, or presentation state.
284         */
285        @Child(name = "instance", type = {}, order=12, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
286        @Description(shortDefinition="A single SOP instance from the series", formalDefinition="A single SOP instance within the series, e.g. an image, or presentation state." )
287        protected List<ImagingStudySeriesInstanceComponent> instance;
288
289        private static final long serialVersionUID = 198247349L;
290
291    /**
292     * Constructor
293     */
294      public ImagingStudySeriesComponent() {
295        super();
296      }
297
298    /**
299     * Constructor
300     */
301      public ImagingStudySeriesComponent(String uid, Coding modality) {
302        super();
303        this.setUid(uid);
304        this.setModality(modality);
305      }
306
307        /**
308         * @return {@link #uid} (The DICOM Series Instance UID for the series.). This is the underlying object with id, value and extensions. The accessor "getUid" gives direct access to the value
309         */
310        public IdType getUidElement() { 
311          if (this.uid == null)
312            if (Configuration.errorOnAutoCreate())
313              throw new Error("Attempt to auto-create ImagingStudySeriesComponent.uid");
314            else if (Configuration.doAutoCreate())
315              this.uid = new IdType(); // bb
316          return this.uid;
317        }
318
319        public boolean hasUidElement() { 
320          return this.uid != null && !this.uid.isEmpty();
321        }
322
323        public boolean hasUid() { 
324          return this.uid != null && !this.uid.isEmpty();
325        }
326
327        /**
328         * @param value {@link #uid} (The DICOM Series Instance UID for the series.). This is the underlying object with id, value and extensions. The accessor "getUid" gives direct access to the value
329         */
330        public ImagingStudySeriesComponent setUidElement(IdType value) { 
331          this.uid = value;
332          return this;
333        }
334
335        /**
336         * @return The DICOM Series Instance UID for the series.
337         */
338        public String getUid() { 
339          return this.uid == null ? null : this.uid.getValue();
340        }
341
342        /**
343         * @param value The DICOM Series Instance UID for the series.
344         */
345        public ImagingStudySeriesComponent setUid(String value) { 
346            if (this.uid == null)
347              this.uid = new IdType();
348            this.uid.setValue(value);
349          return this;
350        }
351
352        /**
353         * @return {@link #number} (The numeric identifier of this series in the study.). This is the underlying object with id, value and extensions. The accessor "getNumber" gives direct access to the value
354         */
355        public UnsignedIntType getNumberElement() { 
356          if (this.number == null)
357            if (Configuration.errorOnAutoCreate())
358              throw new Error("Attempt to auto-create ImagingStudySeriesComponent.number");
359            else if (Configuration.doAutoCreate())
360              this.number = new UnsignedIntType(); // bb
361          return this.number;
362        }
363
364        public boolean hasNumberElement() { 
365          return this.number != null && !this.number.isEmpty();
366        }
367
368        public boolean hasNumber() { 
369          return this.number != null && !this.number.isEmpty();
370        }
371
372        /**
373         * @param value {@link #number} (The numeric identifier of this series in the study.). This is the underlying object with id, value and extensions. The accessor "getNumber" gives direct access to the value
374         */
375        public ImagingStudySeriesComponent setNumberElement(UnsignedIntType value) { 
376          this.number = value;
377          return this;
378        }
379
380        /**
381         * @return The numeric identifier of this series in the study.
382         */
383        public int getNumber() { 
384          return this.number == null || this.number.isEmpty() ? 0 : this.number.getValue();
385        }
386
387        /**
388         * @param value The numeric identifier of this series in the study.
389         */
390        public ImagingStudySeriesComponent setNumber(int value) { 
391            if (this.number == null)
392              this.number = new UnsignedIntType();
393            this.number.setValue(value);
394          return this;
395        }
396
397        /**
398         * @return {@link #modality} (The modality of this series sequence.)
399         */
400        public Coding getModality() { 
401          if (this.modality == null)
402            if (Configuration.errorOnAutoCreate())
403              throw new Error("Attempt to auto-create ImagingStudySeriesComponent.modality");
404            else if (Configuration.doAutoCreate())
405              this.modality = new Coding(); // cc
406          return this.modality;
407        }
408
409        public boolean hasModality() { 
410          return this.modality != null && !this.modality.isEmpty();
411        }
412
413        /**
414         * @param value {@link #modality} (The modality of this series sequence.)
415         */
416        public ImagingStudySeriesComponent setModality(Coding value) { 
417          this.modality = value;
418          return this;
419        }
420
421        /**
422         * @return {@link #description} (A description of the series.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
423         */
424        public StringType getDescriptionElement() { 
425          if (this.description == null)
426            if (Configuration.errorOnAutoCreate())
427              throw new Error("Attempt to auto-create ImagingStudySeriesComponent.description");
428            else if (Configuration.doAutoCreate())
429              this.description = new StringType(); // bb
430          return this.description;
431        }
432
433        public boolean hasDescriptionElement() { 
434          return this.description != null && !this.description.isEmpty();
435        }
436
437        public boolean hasDescription() { 
438          return this.description != null && !this.description.isEmpty();
439        }
440
441        /**
442         * @param value {@link #description} (A description of the series.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
443         */
444        public ImagingStudySeriesComponent setDescriptionElement(StringType value) { 
445          this.description = value;
446          return this;
447        }
448
449        /**
450         * @return A description of the series.
451         */
452        public String getDescription() { 
453          return this.description == null ? null : this.description.getValue();
454        }
455
456        /**
457         * @param value A description of the series.
458         */
459        public ImagingStudySeriesComponent setDescription(String value) { 
460          if (Utilities.noString(value))
461            this.description = null;
462          else {
463            if (this.description == null)
464              this.description = new StringType();
465            this.description.setValue(value);
466          }
467          return this;
468        }
469
470        /**
471         * @return {@link #numberOfInstances} (Number of SOP Instances in the Study. The value given may be larger than the number of instance elements this resource contains due to resource availability, security, or other factors. This element should be present if any instance elements are present.). This is the underlying object with id, value and extensions. The accessor "getNumberOfInstances" gives direct access to the value
472         */
473        public UnsignedIntType getNumberOfInstancesElement() { 
474          if (this.numberOfInstances == null)
475            if (Configuration.errorOnAutoCreate())
476              throw new Error("Attempt to auto-create ImagingStudySeriesComponent.numberOfInstances");
477            else if (Configuration.doAutoCreate())
478              this.numberOfInstances = new UnsignedIntType(); // bb
479          return this.numberOfInstances;
480        }
481
482        public boolean hasNumberOfInstancesElement() { 
483          return this.numberOfInstances != null && !this.numberOfInstances.isEmpty();
484        }
485
486        public boolean hasNumberOfInstances() { 
487          return this.numberOfInstances != null && !this.numberOfInstances.isEmpty();
488        }
489
490        /**
491         * @param value {@link #numberOfInstances} (Number of SOP Instances in the Study. The value given may be larger than the number of instance elements this resource contains due to resource availability, security, or other factors. This element should be present if any instance elements are present.). This is the underlying object with id, value and extensions. The accessor "getNumberOfInstances" gives direct access to the value
492         */
493        public ImagingStudySeriesComponent setNumberOfInstancesElement(UnsignedIntType value) { 
494          this.numberOfInstances = value;
495          return this;
496        }
497
498        /**
499         * @return Number of SOP Instances in the Study. The value given may be larger than the number of instance elements this resource contains due to resource availability, security, or other factors. This element should be present if any instance elements are present.
500         */
501        public int getNumberOfInstances() { 
502          return this.numberOfInstances == null || this.numberOfInstances.isEmpty() ? 0 : this.numberOfInstances.getValue();
503        }
504
505        /**
506         * @param value Number of SOP Instances in the Study. The value given may be larger than the number of instance elements this resource contains due to resource availability, security, or other factors. This element should be present if any instance elements are present.
507         */
508        public ImagingStudySeriesComponent setNumberOfInstances(int value) { 
509            if (this.numberOfInstances == null)
510              this.numberOfInstances = new UnsignedIntType();
511            this.numberOfInstances.setValue(value);
512          return this;
513        }
514
515        /**
516         * @return {@link #endpoint} (The network service providing access (e.g., query, view, or retrieval) for this series. See implementation notes for information about using DICOM endpoints. A series-level endpoint, if present, has precedence over a study-level endpoint with the same Endpoint.connectionType.)
517         */
518        public List<Reference> getEndpoint() { 
519          if (this.endpoint == null)
520            this.endpoint = new ArrayList<Reference>();
521          return this.endpoint;
522        }
523
524        /**
525         * @return Returns a reference to <code>this</code> for easy method chaining
526         */
527        public ImagingStudySeriesComponent setEndpoint(List<Reference> theEndpoint) { 
528          this.endpoint = theEndpoint;
529          return this;
530        }
531
532        public boolean hasEndpoint() { 
533          if (this.endpoint == null)
534            return false;
535          for (Reference item : this.endpoint)
536            if (!item.isEmpty())
537              return true;
538          return false;
539        }
540
541        public Reference addEndpoint() { //3
542          Reference t = new Reference();
543          if (this.endpoint == null)
544            this.endpoint = new ArrayList<Reference>();
545          this.endpoint.add(t);
546          return t;
547        }
548
549        public ImagingStudySeriesComponent addEndpoint(Reference t) { //3
550          if (t == null)
551            return this;
552          if (this.endpoint == null)
553            this.endpoint = new ArrayList<Reference>();
554          this.endpoint.add(t);
555          return this;
556        }
557
558        /**
559         * @return The first repetition of repeating field {@link #endpoint}, creating it if it does not already exist {3}
560         */
561        public Reference getEndpointFirstRep() { 
562          if (getEndpoint().isEmpty()) {
563            addEndpoint();
564          }
565          return getEndpoint().get(0);
566        }
567
568        /**
569         * @return {@link #bodySite} (The anatomic structures examined. See DICOM Part 16 Annex L (http://dicom.nema.org/medical/dicom/current/output/chtml/part16/chapter_L.html) for DICOM to SNOMED-CT mappings. The bodySite may indicate the laterality of body part imaged; if so, it shall be consistent with any content of ImagingStudy.series.laterality.)
570         */
571        public Coding getBodySite() { 
572          if (this.bodySite == null)
573            if (Configuration.errorOnAutoCreate())
574              throw new Error("Attempt to auto-create ImagingStudySeriesComponent.bodySite");
575            else if (Configuration.doAutoCreate())
576              this.bodySite = new Coding(); // cc
577          return this.bodySite;
578        }
579
580        public boolean hasBodySite() { 
581          return this.bodySite != null && !this.bodySite.isEmpty();
582        }
583
584        /**
585         * @param value {@link #bodySite} (The anatomic structures examined. See DICOM Part 16 Annex L (http://dicom.nema.org/medical/dicom/current/output/chtml/part16/chapter_L.html) for DICOM to SNOMED-CT mappings. The bodySite may indicate the laterality of body part imaged; if so, it shall be consistent with any content of ImagingStudy.series.laterality.)
586         */
587        public ImagingStudySeriesComponent setBodySite(Coding value) { 
588          this.bodySite = value;
589          return this;
590        }
591
592        /**
593         * @return {@link #laterality} (The laterality of the (possibly paired) anatomic structures examined. E.g., the left knee, both lungs, or unpaired abdomen. If present, shall be consistent with any laterality information indicated in ImagingStudy.series.bodySite.)
594         */
595        public Coding getLaterality() { 
596          if (this.laterality == null)
597            if (Configuration.errorOnAutoCreate())
598              throw new Error("Attempt to auto-create ImagingStudySeriesComponent.laterality");
599            else if (Configuration.doAutoCreate())
600              this.laterality = new Coding(); // cc
601          return this.laterality;
602        }
603
604        public boolean hasLaterality() { 
605          return this.laterality != null && !this.laterality.isEmpty();
606        }
607
608        /**
609         * @param value {@link #laterality} (The laterality of the (possibly paired) anatomic structures examined. E.g., the left knee, both lungs, or unpaired abdomen. If present, shall be consistent with any laterality information indicated in ImagingStudy.series.bodySite.)
610         */
611        public ImagingStudySeriesComponent setLaterality(Coding value) { 
612          this.laterality = value;
613          return this;
614        }
615
616        /**
617         * @return {@link #specimen} (The specimen imaged, e.g., for whole slide imaging of a biopsy.)
618         */
619        public List<Reference> getSpecimen() { 
620          if (this.specimen == null)
621            this.specimen = new ArrayList<Reference>();
622          return this.specimen;
623        }
624
625        /**
626         * @return Returns a reference to <code>this</code> for easy method chaining
627         */
628        public ImagingStudySeriesComponent setSpecimen(List<Reference> theSpecimen) { 
629          this.specimen = theSpecimen;
630          return this;
631        }
632
633        public boolean hasSpecimen() { 
634          if (this.specimen == null)
635            return false;
636          for (Reference item : this.specimen)
637            if (!item.isEmpty())
638              return true;
639          return false;
640        }
641
642        public Reference addSpecimen() { //3
643          Reference t = new Reference();
644          if (this.specimen == null)
645            this.specimen = new ArrayList<Reference>();
646          this.specimen.add(t);
647          return t;
648        }
649
650        public ImagingStudySeriesComponent addSpecimen(Reference t) { //3
651          if (t == null)
652            return this;
653          if (this.specimen == null)
654            this.specimen = new ArrayList<Reference>();
655          this.specimen.add(t);
656          return this;
657        }
658
659        /**
660         * @return The first repetition of repeating field {@link #specimen}, creating it if it does not already exist {3}
661         */
662        public Reference getSpecimenFirstRep() { 
663          if (getSpecimen().isEmpty()) {
664            addSpecimen();
665          }
666          return getSpecimen().get(0);
667        }
668
669        /**
670         * @return {@link #started} (The date and time the series was started.). This is the underlying object with id, value and extensions. The accessor "getStarted" gives direct access to the value
671         */
672        public DateTimeType getStartedElement() { 
673          if (this.started == null)
674            if (Configuration.errorOnAutoCreate())
675              throw new Error("Attempt to auto-create ImagingStudySeriesComponent.started");
676            else if (Configuration.doAutoCreate())
677              this.started = new DateTimeType(); // bb
678          return this.started;
679        }
680
681        public boolean hasStartedElement() { 
682          return this.started != null && !this.started.isEmpty();
683        }
684
685        public boolean hasStarted() { 
686          return this.started != null && !this.started.isEmpty();
687        }
688
689        /**
690         * @param value {@link #started} (The date and time the series was started.). This is the underlying object with id, value and extensions. The accessor "getStarted" gives direct access to the value
691         */
692        public ImagingStudySeriesComponent setStartedElement(DateTimeType value) { 
693          this.started = value;
694          return this;
695        }
696
697        /**
698         * @return The date and time the series was started.
699         */
700        public Date getStarted() { 
701          return this.started == null ? null : this.started.getValue();
702        }
703
704        /**
705         * @param value The date and time the series was started.
706         */
707        public ImagingStudySeriesComponent setStarted(Date value) { 
708          if (value == null)
709            this.started = null;
710          else {
711            if (this.started == null)
712              this.started = new DateTimeType();
713            this.started.setValue(value);
714          }
715          return this;
716        }
717
718        /**
719         * @return {@link #performer} (Indicates who or what performed the series and how they were involved.)
720         */
721        public List<ImagingStudySeriesPerformerComponent> getPerformer() { 
722          if (this.performer == null)
723            this.performer = new ArrayList<ImagingStudySeriesPerformerComponent>();
724          return this.performer;
725        }
726
727        /**
728         * @return Returns a reference to <code>this</code> for easy method chaining
729         */
730        public ImagingStudySeriesComponent setPerformer(List<ImagingStudySeriesPerformerComponent> thePerformer) { 
731          this.performer = thePerformer;
732          return this;
733        }
734
735        public boolean hasPerformer() { 
736          if (this.performer == null)
737            return false;
738          for (ImagingStudySeriesPerformerComponent item : this.performer)
739            if (!item.isEmpty())
740              return true;
741          return false;
742        }
743
744        public ImagingStudySeriesPerformerComponent addPerformer() { //3
745          ImagingStudySeriesPerformerComponent t = new ImagingStudySeriesPerformerComponent();
746          if (this.performer == null)
747            this.performer = new ArrayList<ImagingStudySeriesPerformerComponent>();
748          this.performer.add(t);
749          return t;
750        }
751
752        public ImagingStudySeriesComponent addPerformer(ImagingStudySeriesPerformerComponent t) { //3
753          if (t == null)
754            return this;
755          if (this.performer == null)
756            this.performer = new ArrayList<ImagingStudySeriesPerformerComponent>();
757          this.performer.add(t);
758          return this;
759        }
760
761        /**
762         * @return The first repetition of repeating field {@link #performer}, creating it if it does not already exist {3}
763         */
764        public ImagingStudySeriesPerformerComponent getPerformerFirstRep() { 
765          if (getPerformer().isEmpty()) {
766            addPerformer();
767          }
768          return getPerformer().get(0);
769        }
770
771        /**
772         * @return {@link #instance} (A single SOP instance within the series, e.g. an image, or presentation state.)
773         */
774        public List<ImagingStudySeriesInstanceComponent> getInstance() { 
775          if (this.instance == null)
776            this.instance = new ArrayList<ImagingStudySeriesInstanceComponent>();
777          return this.instance;
778        }
779
780        /**
781         * @return Returns a reference to <code>this</code> for easy method chaining
782         */
783        public ImagingStudySeriesComponent setInstance(List<ImagingStudySeriesInstanceComponent> theInstance) { 
784          this.instance = theInstance;
785          return this;
786        }
787
788        public boolean hasInstance() { 
789          if (this.instance == null)
790            return false;
791          for (ImagingStudySeriesInstanceComponent item : this.instance)
792            if (!item.isEmpty())
793              return true;
794          return false;
795        }
796
797        public ImagingStudySeriesInstanceComponent addInstance() { //3
798          ImagingStudySeriesInstanceComponent t = new ImagingStudySeriesInstanceComponent();
799          if (this.instance == null)
800            this.instance = new ArrayList<ImagingStudySeriesInstanceComponent>();
801          this.instance.add(t);
802          return t;
803        }
804
805        public ImagingStudySeriesComponent addInstance(ImagingStudySeriesInstanceComponent t) { //3
806          if (t == null)
807            return this;
808          if (this.instance == null)
809            this.instance = new ArrayList<ImagingStudySeriesInstanceComponent>();
810          this.instance.add(t);
811          return this;
812        }
813
814        /**
815         * @return The first repetition of repeating field {@link #instance}, creating it if it does not already exist {3}
816         */
817        public ImagingStudySeriesInstanceComponent getInstanceFirstRep() { 
818          if (getInstance().isEmpty()) {
819            addInstance();
820          }
821          return getInstance().get(0);
822        }
823
824        protected void listChildren(List<Property> children) {
825          super.listChildren(children);
826          children.add(new Property("uid", "id", "The DICOM Series Instance UID for the series.", 0, 1, uid));
827          children.add(new Property("number", "unsignedInt", "The numeric identifier of this series in the study.", 0, 1, number));
828          children.add(new Property("modality", "Coding", "The modality of this series sequence.", 0, 1, modality));
829          children.add(new Property("description", "string", "A description of the series.", 0, 1, description));
830          children.add(new Property("numberOfInstances", "unsignedInt", "Number of SOP Instances in the Study. The value given may be larger than the number of instance elements this resource contains due to resource availability, security, or other factors. This element should be present if any instance elements are present.", 0, 1, numberOfInstances));
831          children.add(new Property("endpoint", "Reference(Endpoint)", "The network service providing access (e.g., query, view, or retrieval) for this series. See implementation notes for information about using DICOM endpoints. A series-level endpoint, if present, has precedence over a study-level endpoint with the same Endpoint.connectionType.", 0, java.lang.Integer.MAX_VALUE, endpoint));
832          children.add(new Property("bodySite", "Coding", "The anatomic structures examined. See DICOM Part 16 Annex L (http://dicom.nema.org/medical/dicom/current/output/chtml/part16/chapter_L.html) for DICOM to SNOMED-CT mappings. The bodySite may indicate the laterality of body part imaged; if so, it shall be consistent with any content of ImagingStudy.series.laterality.", 0, 1, bodySite));
833          children.add(new Property("laterality", "Coding", "The laterality of the (possibly paired) anatomic structures examined. E.g., the left knee, both lungs, or unpaired abdomen. If present, shall be consistent with any laterality information indicated in ImagingStudy.series.bodySite.", 0, 1, laterality));
834          children.add(new Property("specimen", "Reference(Specimen)", "The specimen imaged, e.g., for whole slide imaging of a biopsy.", 0, java.lang.Integer.MAX_VALUE, specimen));
835          children.add(new Property("started", "dateTime", "The date and time the series was started.", 0, 1, started));
836          children.add(new Property("performer", "", "Indicates who or what performed the series and how they were involved.", 0, java.lang.Integer.MAX_VALUE, performer));
837          children.add(new Property("instance", "", "A single SOP instance within the series, e.g. an image, or presentation state.", 0, java.lang.Integer.MAX_VALUE, instance));
838        }
839
840        @Override
841        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
842          switch (_hash) {
843          case 115792: /*uid*/  return new Property("uid", "id", "The DICOM Series Instance UID for the series.", 0, 1, uid);
844          case -1034364087: /*number*/  return new Property("number", "unsignedInt", "The numeric identifier of this series in the study.", 0, 1, number);
845          case -622722335: /*modality*/  return new Property("modality", "Coding", "The modality of this series sequence.", 0, 1, modality);
846          case -1724546052: /*description*/  return new Property("description", "string", "A description of the series.", 0, 1, description);
847          case -1043544226: /*numberOfInstances*/  return new Property("numberOfInstances", "unsignedInt", "Number of SOP Instances in the Study. The value given may be larger than the number of instance elements this resource contains due to resource availability, security, or other factors. This element should be present if any instance elements are present.", 0, 1, numberOfInstances);
848          case 1741102485: /*endpoint*/  return new Property("endpoint", "Reference(Endpoint)", "The network service providing access (e.g., query, view, or retrieval) for this series. See implementation notes for information about using DICOM endpoints. A series-level endpoint, if present, has precedence over a study-level endpoint with the same Endpoint.connectionType.", 0, java.lang.Integer.MAX_VALUE, endpoint);
849          case 1702620169: /*bodySite*/  return new Property("bodySite", "Coding", "The anatomic structures examined. See DICOM Part 16 Annex L (http://dicom.nema.org/medical/dicom/current/output/chtml/part16/chapter_L.html) for DICOM to SNOMED-CT mappings. The bodySite may indicate the laterality of body part imaged; if so, it shall be consistent with any content of ImagingStudy.series.laterality.", 0, 1, bodySite);
850          case -170291817: /*laterality*/  return new Property("laterality", "Coding", "The laterality of the (possibly paired) anatomic structures examined. E.g., the left knee, both lungs, or unpaired abdomen. If present, shall be consistent with any laterality information indicated in ImagingStudy.series.bodySite.", 0, 1, laterality);
851          case -2132868344: /*specimen*/  return new Property("specimen", "Reference(Specimen)", "The specimen imaged, e.g., for whole slide imaging of a biopsy.", 0, java.lang.Integer.MAX_VALUE, specimen);
852          case -1897185151: /*started*/  return new Property("started", "dateTime", "The date and time the series was started.", 0, 1, started);
853          case 481140686: /*performer*/  return new Property("performer", "", "Indicates who or what performed the series and how they were involved.", 0, java.lang.Integer.MAX_VALUE, performer);
854          case 555127957: /*instance*/  return new Property("instance", "", "A single SOP instance within the series, e.g. an image, or presentation state.", 0, java.lang.Integer.MAX_VALUE, instance);
855          default: return super.getNamedProperty(_hash, _name, _checkValid);
856          }
857
858        }
859
860      @Override
861      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
862        switch (hash) {
863        case 115792: /*uid*/ return this.uid == null ? new Base[0] : new Base[] {this.uid}; // IdType
864        case -1034364087: /*number*/ return this.number == null ? new Base[0] : new Base[] {this.number}; // UnsignedIntType
865        case -622722335: /*modality*/ return this.modality == null ? new Base[0] : new Base[] {this.modality}; // Coding
866        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // StringType
867        case -1043544226: /*numberOfInstances*/ return this.numberOfInstances == null ? new Base[0] : new Base[] {this.numberOfInstances}; // UnsignedIntType
868        case 1741102485: /*endpoint*/ return this.endpoint == null ? new Base[0] : this.endpoint.toArray(new Base[this.endpoint.size()]); // Reference
869        case 1702620169: /*bodySite*/ return this.bodySite == null ? new Base[0] : new Base[] {this.bodySite}; // Coding
870        case -170291817: /*laterality*/ return this.laterality == null ? new Base[0] : new Base[] {this.laterality}; // Coding
871        case -2132868344: /*specimen*/ return this.specimen == null ? new Base[0] : this.specimen.toArray(new Base[this.specimen.size()]); // Reference
872        case -1897185151: /*started*/ return this.started == null ? new Base[0] : new Base[] {this.started}; // DateTimeType
873        case 481140686: /*performer*/ return this.performer == null ? new Base[0] : this.performer.toArray(new Base[this.performer.size()]); // ImagingStudySeriesPerformerComponent
874        case 555127957: /*instance*/ return this.instance == null ? new Base[0] : this.instance.toArray(new Base[this.instance.size()]); // ImagingStudySeriesInstanceComponent
875        default: return super.getProperty(hash, name, checkValid);
876        }
877
878      }
879
880      @Override
881      public Base setProperty(int hash, String name, Base value) throws FHIRException {
882        switch (hash) {
883        case 115792: // uid
884          this.uid = TypeConvertor.castToId(value); // IdType
885          return value;
886        case -1034364087: // number
887          this.number = TypeConvertor.castToUnsignedInt(value); // UnsignedIntType
888          return value;
889        case -622722335: // modality
890          this.modality = TypeConvertor.castToCoding(value); // Coding
891          return value;
892        case -1724546052: // description
893          this.description = TypeConvertor.castToString(value); // StringType
894          return value;
895        case -1043544226: // numberOfInstances
896          this.numberOfInstances = TypeConvertor.castToUnsignedInt(value); // UnsignedIntType
897          return value;
898        case 1741102485: // endpoint
899          this.getEndpoint().add(TypeConvertor.castToReference(value)); // Reference
900          return value;
901        case 1702620169: // bodySite
902          this.bodySite = TypeConvertor.castToCoding(value); // Coding
903          return value;
904        case -170291817: // laterality
905          this.laterality = TypeConvertor.castToCoding(value); // Coding
906          return value;
907        case -2132868344: // specimen
908          this.getSpecimen().add(TypeConvertor.castToReference(value)); // Reference
909          return value;
910        case -1897185151: // started
911          this.started = TypeConvertor.castToDateTime(value); // DateTimeType
912          return value;
913        case 481140686: // performer
914          this.getPerformer().add((ImagingStudySeriesPerformerComponent) value); // ImagingStudySeriesPerformerComponent
915          return value;
916        case 555127957: // instance
917          this.getInstance().add((ImagingStudySeriesInstanceComponent) value); // ImagingStudySeriesInstanceComponent
918          return value;
919        default: return super.setProperty(hash, name, value);
920        }
921
922      }
923
924      @Override
925      public Base setProperty(String name, Base value) throws FHIRException {
926        if (name.equals("uid")) {
927          this.uid = TypeConvertor.castToId(value); // IdType
928        } else if (name.equals("number")) {
929          this.number = TypeConvertor.castToUnsignedInt(value); // UnsignedIntType
930        } else if (name.equals("modality")) {
931          this.modality = TypeConvertor.castToCoding(value); // Coding
932        } else if (name.equals("description")) {
933          this.description = TypeConvertor.castToString(value); // StringType
934        } else if (name.equals("numberOfInstances")) {
935          this.numberOfInstances = TypeConvertor.castToUnsignedInt(value); // UnsignedIntType
936        } else if (name.equals("endpoint")) {
937          this.getEndpoint().add(TypeConvertor.castToReference(value));
938        } else if (name.equals("bodySite")) {
939          this.bodySite = TypeConvertor.castToCoding(value); // Coding
940        } else if (name.equals("laterality")) {
941          this.laterality = TypeConvertor.castToCoding(value); // Coding
942        } else if (name.equals("specimen")) {
943          this.getSpecimen().add(TypeConvertor.castToReference(value));
944        } else if (name.equals("started")) {
945          this.started = TypeConvertor.castToDateTime(value); // DateTimeType
946        } else if (name.equals("performer")) {
947          this.getPerformer().add((ImagingStudySeriesPerformerComponent) value);
948        } else if (name.equals("instance")) {
949          this.getInstance().add((ImagingStudySeriesInstanceComponent) value);
950        } else
951          return super.setProperty(name, value);
952        return value;
953      }
954
955      @Override
956      public Base makeProperty(int hash, String name) throws FHIRException {
957        switch (hash) {
958        case 115792:  return getUidElement();
959        case -1034364087:  return getNumberElement();
960        case -622722335:  return getModality();
961        case -1724546052:  return getDescriptionElement();
962        case -1043544226:  return getNumberOfInstancesElement();
963        case 1741102485:  return addEndpoint(); 
964        case 1702620169:  return getBodySite();
965        case -170291817:  return getLaterality();
966        case -2132868344:  return addSpecimen(); 
967        case -1897185151:  return getStartedElement();
968        case 481140686:  return addPerformer(); 
969        case 555127957:  return addInstance(); 
970        default: return super.makeProperty(hash, name);
971        }
972
973      }
974
975      @Override
976      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
977        switch (hash) {
978        case 115792: /*uid*/ return new String[] {"id"};
979        case -1034364087: /*number*/ return new String[] {"unsignedInt"};
980        case -622722335: /*modality*/ return new String[] {"Coding"};
981        case -1724546052: /*description*/ return new String[] {"string"};
982        case -1043544226: /*numberOfInstances*/ return new String[] {"unsignedInt"};
983        case 1741102485: /*endpoint*/ return new String[] {"Reference"};
984        case 1702620169: /*bodySite*/ return new String[] {"Coding"};
985        case -170291817: /*laterality*/ return new String[] {"Coding"};
986        case -2132868344: /*specimen*/ return new String[] {"Reference"};
987        case -1897185151: /*started*/ return new String[] {"dateTime"};
988        case 481140686: /*performer*/ return new String[] {};
989        case 555127957: /*instance*/ return new String[] {};
990        default: return super.getTypesForProperty(hash, name);
991        }
992
993      }
994
995      @Override
996      public Base addChild(String name) throws FHIRException {
997        if (name.equals("uid")) {
998          throw new FHIRException("Cannot call addChild on a primitive type ImagingStudy.series.uid");
999        }
1000        else if (name.equals("number")) {
1001          throw new FHIRException("Cannot call addChild on a primitive type ImagingStudy.series.number");
1002        }
1003        else if (name.equals("modality")) {
1004          this.modality = new Coding();
1005          return this.modality;
1006        }
1007        else if (name.equals("description")) {
1008          throw new FHIRException("Cannot call addChild on a primitive type ImagingStudy.series.description");
1009        }
1010        else if (name.equals("numberOfInstances")) {
1011          throw new FHIRException("Cannot call addChild on a primitive type ImagingStudy.series.numberOfInstances");
1012        }
1013        else if (name.equals("endpoint")) {
1014          return addEndpoint();
1015        }
1016        else if (name.equals("bodySite")) {
1017          this.bodySite = new Coding();
1018          return this.bodySite;
1019        }
1020        else if (name.equals("laterality")) {
1021          this.laterality = new Coding();
1022          return this.laterality;
1023        }
1024        else if (name.equals("specimen")) {
1025          return addSpecimen();
1026        }
1027        else if (name.equals("started")) {
1028          throw new FHIRException("Cannot call addChild on a primitive type ImagingStudy.series.started");
1029        }
1030        else if (name.equals("performer")) {
1031          return addPerformer();
1032        }
1033        else if (name.equals("instance")) {
1034          return addInstance();
1035        }
1036        else
1037          return super.addChild(name);
1038      }
1039
1040      public ImagingStudySeriesComponent copy() {
1041        ImagingStudySeriesComponent dst = new ImagingStudySeriesComponent();
1042        copyValues(dst);
1043        return dst;
1044      }
1045
1046      public void copyValues(ImagingStudySeriesComponent dst) {
1047        super.copyValues(dst);
1048        dst.uid = uid == null ? null : uid.copy();
1049        dst.number = number == null ? null : number.copy();
1050        dst.modality = modality == null ? null : modality.copy();
1051        dst.description = description == null ? null : description.copy();
1052        dst.numberOfInstances = numberOfInstances == null ? null : numberOfInstances.copy();
1053        if (endpoint != null) {
1054          dst.endpoint = new ArrayList<Reference>();
1055          for (Reference i : endpoint)
1056            dst.endpoint.add(i.copy());
1057        };
1058        dst.bodySite = bodySite == null ? null : bodySite.copy();
1059        dst.laterality = laterality == null ? null : laterality.copy();
1060        if (specimen != null) {
1061          dst.specimen = new ArrayList<Reference>();
1062          for (Reference i : specimen)
1063            dst.specimen.add(i.copy());
1064        };
1065        dst.started = started == null ? null : started.copy();
1066        if (performer != null) {
1067          dst.performer = new ArrayList<ImagingStudySeriesPerformerComponent>();
1068          for (ImagingStudySeriesPerformerComponent i : performer)
1069            dst.performer.add(i.copy());
1070        };
1071        if (instance != null) {
1072          dst.instance = new ArrayList<ImagingStudySeriesInstanceComponent>();
1073          for (ImagingStudySeriesInstanceComponent i : instance)
1074            dst.instance.add(i.copy());
1075        };
1076      }
1077
1078      @Override
1079      public boolean equalsDeep(Base other_) {
1080        if (!super.equalsDeep(other_))
1081          return false;
1082        if (!(other_ instanceof ImagingStudySeriesComponent))
1083          return false;
1084        ImagingStudySeriesComponent o = (ImagingStudySeriesComponent) other_;
1085        return compareDeep(uid, o.uid, true) && compareDeep(number, o.number, true) && compareDeep(modality, o.modality, true)
1086           && compareDeep(description, o.description, true) && compareDeep(numberOfInstances, o.numberOfInstances, true)
1087           && compareDeep(endpoint, o.endpoint, true) && compareDeep(bodySite, o.bodySite, true) && compareDeep(laterality, o.laterality, true)
1088           && compareDeep(specimen, o.specimen, true) && compareDeep(started, o.started, true) && compareDeep(performer, o.performer, true)
1089           && compareDeep(instance, o.instance, true);
1090      }
1091
1092      @Override
1093      public boolean equalsShallow(Base other_) {
1094        if (!super.equalsShallow(other_))
1095          return false;
1096        if (!(other_ instanceof ImagingStudySeriesComponent))
1097          return false;
1098        ImagingStudySeriesComponent o = (ImagingStudySeriesComponent) other_;
1099        return compareValues(uid, o.uid, true) && compareValues(number, o.number, true) && compareValues(description, o.description, true)
1100           && compareValues(numberOfInstances, o.numberOfInstances, true) && compareValues(started, o.started, true)
1101          ;
1102      }
1103
1104      public boolean isEmpty() {
1105        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(uid, number, modality, description
1106          , numberOfInstances, endpoint, bodySite, laterality, specimen, started, performer
1107          , instance);
1108      }
1109
1110  public String fhirType() {
1111    return "ImagingStudy.series";
1112
1113  }
1114
1115  }
1116
1117    @Block()
1118    public static class ImagingStudySeriesPerformerComponent extends BackboneElement implements IBaseBackboneElement {
1119        /**
1120         * Distinguishes the type of involvement of the performer in the series.
1121         */
1122        @Child(name = "function", type = {CodeableConcept.class}, order=1, min=0, max=1, modifier=false, summary=true)
1123        @Description(shortDefinition="Type of performance", formalDefinition="Distinguishes the type of involvement of the performer in the series." )
1124        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/series-performer-function")
1125        protected CodeableConcept function;
1126
1127        /**
1128         * Indicates who or what performed the series.
1129         */
1130        @Child(name = "actor", type = {Practitioner.class, PractitionerRole.class, Organization.class, CareTeam.class, Patient.class, Device.class, RelatedPerson.class}, order=2, min=1, max=1, modifier=false, summary=true)
1131        @Description(shortDefinition="Who performed the series", formalDefinition="Indicates who or what performed the series." )
1132        protected Reference actor;
1133
1134        private static final long serialVersionUID = -576943815L;
1135
1136    /**
1137     * Constructor
1138     */
1139      public ImagingStudySeriesPerformerComponent() {
1140        super();
1141      }
1142
1143    /**
1144     * Constructor
1145     */
1146      public ImagingStudySeriesPerformerComponent(Reference actor) {
1147        super();
1148        this.setActor(actor);
1149      }
1150
1151        /**
1152         * @return {@link #function} (Distinguishes the type of involvement of the performer in the series.)
1153         */
1154        public CodeableConcept getFunction() { 
1155          if (this.function == null)
1156            if (Configuration.errorOnAutoCreate())
1157              throw new Error("Attempt to auto-create ImagingStudySeriesPerformerComponent.function");
1158            else if (Configuration.doAutoCreate())
1159              this.function = new CodeableConcept(); // cc
1160          return this.function;
1161        }
1162
1163        public boolean hasFunction() { 
1164          return this.function != null && !this.function.isEmpty();
1165        }
1166
1167        /**
1168         * @param value {@link #function} (Distinguishes the type of involvement of the performer in the series.)
1169         */
1170        public ImagingStudySeriesPerformerComponent setFunction(CodeableConcept value) { 
1171          this.function = value;
1172          return this;
1173        }
1174
1175        /**
1176         * @return {@link #actor} (Indicates who or what performed the series.)
1177         */
1178        public Reference getActor() { 
1179          if (this.actor == null)
1180            if (Configuration.errorOnAutoCreate())
1181              throw new Error("Attempt to auto-create ImagingStudySeriesPerformerComponent.actor");
1182            else if (Configuration.doAutoCreate())
1183              this.actor = new Reference(); // cc
1184          return this.actor;
1185        }
1186
1187        public boolean hasActor() { 
1188          return this.actor != null && !this.actor.isEmpty();
1189        }
1190
1191        /**
1192         * @param value {@link #actor} (Indicates who or what performed the series.)
1193         */
1194        public ImagingStudySeriesPerformerComponent setActor(Reference value) { 
1195          this.actor = value;
1196          return this;
1197        }
1198
1199        protected void listChildren(List<Property> children) {
1200          super.listChildren(children);
1201          children.add(new Property("function", "CodeableConcept", "Distinguishes the type of involvement of the performer in the series.", 0, 1, function));
1202          children.add(new Property("actor", "Reference(Practitioner|PractitionerRole|Organization|CareTeam|Patient|Device|RelatedPerson)", "Indicates who or what performed the series.", 0, 1, actor));
1203        }
1204
1205        @Override
1206        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1207          switch (_hash) {
1208          case 1380938712: /*function*/  return new Property("function", "CodeableConcept", "Distinguishes the type of involvement of the performer in the series.", 0, 1, function);
1209          case 92645877: /*actor*/  return new Property("actor", "Reference(Practitioner|PractitionerRole|Organization|CareTeam|Patient|Device|RelatedPerson)", "Indicates who or what performed the series.", 0, 1, actor);
1210          default: return super.getNamedProperty(_hash, _name, _checkValid);
1211          }
1212
1213        }
1214
1215      @Override
1216      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1217        switch (hash) {
1218        case 1380938712: /*function*/ return this.function == null ? new Base[0] : new Base[] {this.function}; // CodeableConcept
1219        case 92645877: /*actor*/ return this.actor == null ? new Base[0] : new Base[] {this.actor}; // Reference
1220        default: return super.getProperty(hash, name, checkValid);
1221        }
1222
1223      }
1224
1225      @Override
1226      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1227        switch (hash) {
1228        case 1380938712: // function
1229          this.function = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1230          return value;
1231        case 92645877: // actor
1232          this.actor = TypeConvertor.castToReference(value); // Reference
1233          return value;
1234        default: return super.setProperty(hash, name, value);
1235        }
1236
1237      }
1238
1239      @Override
1240      public Base setProperty(String name, Base value) throws FHIRException {
1241        if (name.equals("function")) {
1242          this.function = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1243        } else if (name.equals("actor")) {
1244          this.actor = TypeConvertor.castToReference(value); // Reference
1245        } else
1246          return super.setProperty(name, value);
1247        return value;
1248      }
1249
1250      @Override
1251      public Base makeProperty(int hash, String name) throws FHIRException {
1252        switch (hash) {
1253        case 1380938712:  return getFunction();
1254        case 92645877:  return getActor();
1255        default: return super.makeProperty(hash, name);
1256        }
1257
1258      }
1259
1260      @Override
1261      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1262        switch (hash) {
1263        case 1380938712: /*function*/ return new String[] {"CodeableConcept"};
1264        case 92645877: /*actor*/ return new String[] {"Reference"};
1265        default: return super.getTypesForProperty(hash, name);
1266        }
1267
1268      }
1269
1270      @Override
1271      public Base addChild(String name) throws FHIRException {
1272        if (name.equals("function")) {
1273          this.function = new CodeableConcept();
1274          return this.function;
1275        }
1276        else if (name.equals("actor")) {
1277          this.actor = new Reference();
1278          return this.actor;
1279        }
1280        else
1281          return super.addChild(name);
1282      }
1283
1284      public ImagingStudySeriesPerformerComponent copy() {
1285        ImagingStudySeriesPerformerComponent dst = new ImagingStudySeriesPerformerComponent();
1286        copyValues(dst);
1287        return dst;
1288      }
1289
1290      public void copyValues(ImagingStudySeriesPerformerComponent dst) {
1291        super.copyValues(dst);
1292        dst.function = function == null ? null : function.copy();
1293        dst.actor = actor == null ? null : actor.copy();
1294      }
1295
1296      @Override
1297      public boolean equalsDeep(Base other_) {
1298        if (!super.equalsDeep(other_))
1299          return false;
1300        if (!(other_ instanceof ImagingStudySeriesPerformerComponent))
1301          return false;
1302        ImagingStudySeriesPerformerComponent o = (ImagingStudySeriesPerformerComponent) other_;
1303        return compareDeep(function, o.function, true) && compareDeep(actor, o.actor, true);
1304      }
1305
1306      @Override
1307      public boolean equalsShallow(Base other_) {
1308        if (!super.equalsShallow(other_))
1309          return false;
1310        if (!(other_ instanceof ImagingStudySeriesPerformerComponent))
1311          return false;
1312        ImagingStudySeriesPerformerComponent o = (ImagingStudySeriesPerformerComponent) other_;
1313        return true;
1314      }
1315
1316      public boolean isEmpty() {
1317        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(function, actor);
1318      }
1319
1320  public String fhirType() {
1321    return "ImagingStudy.series.performer";
1322
1323  }
1324
1325  }
1326
1327    @Block()
1328    public static class ImagingStudySeriesInstanceComponent extends BackboneElement implements IBaseBackboneElement {
1329        /**
1330         * The DICOM SOP Instance UID for this image or other DICOM content.
1331         */
1332        @Child(name = "uid", type = {IdType.class}, order=1, min=1, max=1, modifier=false, summary=false)
1333        @Description(shortDefinition="DICOM SOP Instance UID", formalDefinition="The DICOM SOP Instance UID for this image or other DICOM content." )
1334        protected IdType uid;
1335
1336        /**
1337         * DICOM instance  type.
1338         */
1339        @Child(name = "sopClass", type = {Coding.class}, order=2, min=1, max=1, modifier=false, summary=false)
1340        @Description(shortDefinition="DICOM class type", formalDefinition="DICOM instance  type." )
1341        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://dicom.nema.org/medical/dicom/current/output/chtml/part04/sect_B.5.html#table_B.5-1")
1342        protected Coding sopClass;
1343
1344        /**
1345         * The number of instance in the series.
1346         */
1347        @Child(name = "number", type = {UnsignedIntType.class}, order=3, min=0, max=1, modifier=false, summary=false)
1348        @Description(shortDefinition="The number of this instance in the series", formalDefinition="The number of instance in the series." )
1349        protected UnsignedIntType number;
1350
1351        /**
1352         * The description of the instance.
1353         */
1354        @Child(name = "title", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=false)
1355        @Description(shortDefinition="Description of instance", formalDefinition="The description of the instance." )
1356        protected StringType title;
1357
1358        private static final long serialVersionUID = -888152445L;
1359
1360    /**
1361     * Constructor
1362     */
1363      public ImagingStudySeriesInstanceComponent() {
1364        super();
1365      }
1366
1367    /**
1368     * Constructor
1369     */
1370      public ImagingStudySeriesInstanceComponent(String uid, Coding sopClass) {
1371        super();
1372        this.setUid(uid);
1373        this.setSopClass(sopClass);
1374      }
1375
1376        /**
1377         * @return {@link #uid} (The DICOM SOP Instance UID for this image or other DICOM content.). This is the underlying object with id, value and extensions. The accessor "getUid" gives direct access to the value
1378         */
1379        public IdType getUidElement() { 
1380          if (this.uid == null)
1381            if (Configuration.errorOnAutoCreate())
1382              throw new Error("Attempt to auto-create ImagingStudySeriesInstanceComponent.uid");
1383            else if (Configuration.doAutoCreate())
1384              this.uid = new IdType(); // bb
1385          return this.uid;
1386        }
1387
1388        public boolean hasUidElement() { 
1389          return this.uid != null && !this.uid.isEmpty();
1390        }
1391
1392        public boolean hasUid() { 
1393          return this.uid != null && !this.uid.isEmpty();
1394        }
1395
1396        /**
1397         * @param value {@link #uid} (The DICOM SOP Instance UID for this image or other DICOM content.). This is the underlying object with id, value and extensions. The accessor "getUid" gives direct access to the value
1398         */
1399        public ImagingStudySeriesInstanceComponent setUidElement(IdType value) { 
1400          this.uid = value;
1401          return this;
1402        }
1403
1404        /**
1405         * @return The DICOM SOP Instance UID for this image or other DICOM content.
1406         */
1407        public String getUid() { 
1408          return this.uid == null ? null : this.uid.getValue();
1409        }
1410
1411        /**
1412         * @param value The DICOM SOP Instance UID for this image or other DICOM content.
1413         */
1414        public ImagingStudySeriesInstanceComponent setUid(String value) { 
1415            if (this.uid == null)
1416              this.uid = new IdType();
1417            this.uid.setValue(value);
1418          return this;
1419        }
1420
1421        /**
1422         * @return {@link #sopClass} (DICOM instance  type.)
1423         */
1424        public Coding getSopClass() { 
1425          if (this.sopClass == null)
1426            if (Configuration.errorOnAutoCreate())
1427              throw new Error("Attempt to auto-create ImagingStudySeriesInstanceComponent.sopClass");
1428            else if (Configuration.doAutoCreate())
1429              this.sopClass = new Coding(); // cc
1430          return this.sopClass;
1431        }
1432
1433        public boolean hasSopClass() { 
1434          return this.sopClass != null && !this.sopClass.isEmpty();
1435        }
1436
1437        /**
1438         * @param value {@link #sopClass} (DICOM instance  type.)
1439         */
1440        public ImagingStudySeriesInstanceComponent setSopClass(Coding value) { 
1441          this.sopClass = value;
1442          return this;
1443        }
1444
1445        /**
1446         * @return {@link #number} (The number of instance in the series.). This is the underlying object with id, value and extensions. The accessor "getNumber" gives direct access to the value
1447         */
1448        public UnsignedIntType getNumberElement() { 
1449          if (this.number == null)
1450            if (Configuration.errorOnAutoCreate())
1451              throw new Error("Attempt to auto-create ImagingStudySeriesInstanceComponent.number");
1452            else if (Configuration.doAutoCreate())
1453              this.number = new UnsignedIntType(); // bb
1454          return this.number;
1455        }
1456
1457        public boolean hasNumberElement() { 
1458          return this.number != null && !this.number.isEmpty();
1459        }
1460
1461        public boolean hasNumber() { 
1462          return this.number != null && !this.number.isEmpty();
1463        }
1464
1465        /**
1466         * @param value {@link #number} (The number of instance in the series.). This is the underlying object with id, value and extensions. The accessor "getNumber" gives direct access to the value
1467         */
1468        public ImagingStudySeriesInstanceComponent setNumberElement(UnsignedIntType value) { 
1469          this.number = value;
1470          return this;
1471        }
1472
1473        /**
1474         * @return The number of instance in the series.
1475         */
1476        public int getNumber() { 
1477          return this.number == null || this.number.isEmpty() ? 0 : this.number.getValue();
1478        }
1479
1480        /**
1481         * @param value The number of instance in the series.
1482         */
1483        public ImagingStudySeriesInstanceComponent setNumber(int value) { 
1484            if (this.number == null)
1485              this.number = new UnsignedIntType();
1486            this.number.setValue(value);
1487          return this;
1488        }
1489
1490        /**
1491         * @return {@link #title} (The description of the instance.). This is the underlying object with id, value and extensions. The accessor "getTitle" gives direct access to the value
1492         */
1493        public StringType getTitleElement() { 
1494          if (this.title == null)
1495            if (Configuration.errorOnAutoCreate())
1496              throw new Error("Attempt to auto-create ImagingStudySeriesInstanceComponent.title");
1497            else if (Configuration.doAutoCreate())
1498              this.title = new StringType(); // bb
1499          return this.title;
1500        }
1501
1502        public boolean hasTitleElement() { 
1503          return this.title != null && !this.title.isEmpty();
1504        }
1505
1506        public boolean hasTitle() { 
1507          return this.title != null && !this.title.isEmpty();
1508        }
1509
1510        /**
1511         * @param value {@link #title} (The description of the instance.). This is the underlying object with id, value and extensions. The accessor "getTitle" gives direct access to the value
1512         */
1513        public ImagingStudySeriesInstanceComponent setTitleElement(StringType value) { 
1514          this.title = value;
1515          return this;
1516        }
1517
1518        /**
1519         * @return The description of the instance.
1520         */
1521        public String getTitle() { 
1522          return this.title == null ? null : this.title.getValue();
1523        }
1524
1525        /**
1526         * @param value The description of the instance.
1527         */
1528        public ImagingStudySeriesInstanceComponent setTitle(String value) { 
1529          if (Utilities.noString(value))
1530            this.title = null;
1531          else {
1532            if (this.title == null)
1533              this.title = new StringType();
1534            this.title.setValue(value);
1535          }
1536          return this;
1537        }
1538
1539        protected void listChildren(List<Property> children) {
1540          super.listChildren(children);
1541          children.add(new Property("uid", "id", "The DICOM SOP Instance UID for this image or other DICOM content.", 0, 1, uid));
1542          children.add(new Property("sopClass", "Coding", "DICOM instance  type.", 0, 1, sopClass));
1543          children.add(new Property("number", "unsignedInt", "The number of instance in the series.", 0, 1, number));
1544          children.add(new Property("title", "string", "The description of the instance.", 0, 1, title));
1545        }
1546
1547        @Override
1548        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1549          switch (_hash) {
1550          case 115792: /*uid*/  return new Property("uid", "id", "The DICOM SOP Instance UID for this image or other DICOM content.", 0, 1, uid);
1551          case 1560041540: /*sopClass*/  return new Property("sopClass", "Coding", "DICOM instance  type.", 0, 1, sopClass);
1552          case -1034364087: /*number*/  return new Property("number", "unsignedInt", "The number of instance in the series.", 0, 1, number);
1553          case 110371416: /*title*/  return new Property("title", "string", "The description of the instance.", 0, 1, title);
1554          default: return super.getNamedProperty(_hash, _name, _checkValid);
1555          }
1556
1557        }
1558
1559      @Override
1560      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1561        switch (hash) {
1562        case 115792: /*uid*/ return this.uid == null ? new Base[0] : new Base[] {this.uid}; // IdType
1563        case 1560041540: /*sopClass*/ return this.sopClass == null ? new Base[0] : new Base[] {this.sopClass}; // Coding
1564        case -1034364087: /*number*/ return this.number == null ? new Base[0] : new Base[] {this.number}; // UnsignedIntType
1565        case 110371416: /*title*/ return this.title == null ? new Base[0] : new Base[] {this.title}; // StringType
1566        default: return super.getProperty(hash, name, checkValid);
1567        }
1568
1569      }
1570
1571      @Override
1572      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1573        switch (hash) {
1574        case 115792: // uid
1575          this.uid = TypeConvertor.castToId(value); // IdType
1576          return value;
1577        case 1560041540: // sopClass
1578          this.sopClass = TypeConvertor.castToCoding(value); // Coding
1579          return value;
1580        case -1034364087: // number
1581          this.number = TypeConvertor.castToUnsignedInt(value); // UnsignedIntType
1582          return value;
1583        case 110371416: // title
1584          this.title = TypeConvertor.castToString(value); // StringType
1585          return value;
1586        default: return super.setProperty(hash, name, value);
1587        }
1588
1589      }
1590
1591      @Override
1592      public Base setProperty(String name, Base value) throws FHIRException {
1593        if (name.equals("uid")) {
1594          this.uid = TypeConvertor.castToId(value); // IdType
1595        } else if (name.equals("sopClass")) {
1596          this.sopClass = TypeConvertor.castToCoding(value); // Coding
1597        } else if (name.equals("number")) {
1598          this.number = TypeConvertor.castToUnsignedInt(value); // UnsignedIntType
1599        } else if (name.equals("title")) {
1600          this.title = TypeConvertor.castToString(value); // StringType
1601        } else
1602          return super.setProperty(name, value);
1603        return value;
1604      }
1605
1606      @Override
1607      public Base makeProperty(int hash, String name) throws FHIRException {
1608        switch (hash) {
1609        case 115792:  return getUidElement();
1610        case 1560041540:  return getSopClass();
1611        case -1034364087:  return getNumberElement();
1612        case 110371416:  return getTitleElement();
1613        default: return super.makeProperty(hash, name);
1614        }
1615
1616      }
1617
1618      @Override
1619      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1620        switch (hash) {
1621        case 115792: /*uid*/ return new String[] {"id"};
1622        case 1560041540: /*sopClass*/ return new String[] {"Coding"};
1623        case -1034364087: /*number*/ return new String[] {"unsignedInt"};
1624        case 110371416: /*title*/ return new String[] {"string"};
1625        default: return super.getTypesForProperty(hash, name);
1626        }
1627
1628      }
1629
1630      @Override
1631      public Base addChild(String name) throws FHIRException {
1632        if (name.equals("uid")) {
1633          throw new FHIRException("Cannot call addChild on a primitive type ImagingStudy.series.instance.uid");
1634        }
1635        else if (name.equals("sopClass")) {
1636          this.sopClass = new Coding();
1637          return this.sopClass;
1638        }
1639        else if (name.equals("number")) {
1640          throw new FHIRException("Cannot call addChild on a primitive type ImagingStudy.series.instance.number");
1641        }
1642        else if (name.equals("title")) {
1643          throw new FHIRException("Cannot call addChild on a primitive type ImagingStudy.series.instance.title");
1644        }
1645        else
1646          return super.addChild(name);
1647      }
1648
1649      public ImagingStudySeriesInstanceComponent copy() {
1650        ImagingStudySeriesInstanceComponent dst = new ImagingStudySeriesInstanceComponent();
1651        copyValues(dst);
1652        return dst;
1653      }
1654
1655      public void copyValues(ImagingStudySeriesInstanceComponent dst) {
1656        super.copyValues(dst);
1657        dst.uid = uid == null ? null : uid.copy();
1658        dst.sopClass = sopClass == null ? null : sopClass.copy();
1659        dst.number = number == null ? null : number.copy();
1660        dst.title = title == null ? null : title.copy();
1661      }
1662
1663      @Override
1664      public boolean equalsDeep(Base other_) {
1665        if (!super.equalsDeep(other_))
1666          return false;
1667        if (!(other_ instanceof ImagingStudySeriesInstanceComponent))
1668          return false;
1669        ImagingStudySeriesInstanceComponent o = (ImagingStudySeriesInstanceComponent) other_;
1670        return compareDeep(uid, o.uid, true) && compareDeep(sopClass, o.sopClass, true) && compareDeep(number, o.number, true)
1671           && compareDeep(title, o.title, true);
1672      }
1673
1674      @Override
1675      public boolean equalsShallow(Base other_) {
1676        if (!super.equalsShallow(other_))
1677          return false;
1678        if (!(other_ instanceof ImagingStudySeriesInstanceComponent))
1679          return false;
1680        ImagingStudySeriesInstanceComponent o = (ImagingStudySeriesInstanceComponent) other_;
1681        return compareValues(uid, o.uid, true) && compareValues(number, o.number, true) && compareValues(title, o.title, true)
1682          ;
1683      }
1684
1685      public boolean isEmpty() {
1686        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(uid, sopClass, number, title
1687          );
1688      }
1689
1690  public String fhirType() {
1691    return "ImagingStudy.series.instance";
1692
1693  }
1694
1695  }
1696
1697    /**
1698     * Identifiers for the ImagingStudy such as DICOM Study Instance UID, and Accession Number.
1699     */
1700    @Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1701    @Description(shortDefinition="Identifiers for the whole study", formalDefinition="Identifiers for the ImagingStudy such as DICOM Study Instance UID, and Accession Number." )
1702    protected List<Identifier> identifier;
1703
1704    /**
1705     * The current state of the ImagingStudy.
1706     */
1707    @Child(name = "status", type = {CodeType.class}, order=1, min=1, max=1, modifier=true, summary=true)
1708    @Description(shortDefinition="registered | available | cancelled | entered-in-error | unknown", formalDefinition="The current state of the ImagingStudy." )
1709    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/imagingstudy-status")
1710    protected Enumeration<ImagingStudyStatus> status;
1711
1712    /**
1713     * A list of all the series.modality values that are actual acquisition modalities, i.e. those in the DICOM Context Group 29 (value set OID 1.2.840.10008.6.1.19).
1714     */
1715    @Child(name = "modality", type = {Coding.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1716    @Description(shortDefinition="All series modality if actual acquisition modalities", formalDefinition="A list of all the series.modality values that are actual acquisition modalities, i.e. those in the DICOM Context Group 29 (value set OID 1.2.840.10008.6.1.19)." )
1717    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://dicom.nema.org/medical/dicom/current/output/chtml/part16/sect_CID_29.html")
1718    protected List<Coding> modality;
1719
1720    /**
1721     * The subject, typically a patient, of the imaging study.
1722     */
1723    @Child(name = "subject", type = {Patient.class, Device.class, Group.class}, order=3, min=1, max=1, modifier=false, summary=true)
1724    @Description(shortDefinition="Who or what is the subject of the study", formalDefinition="The subject, typically a patient, of the imaging study." )
1725    protected Reference subject;
1726
1727    /**
1728     * The healthcare event (e.g. a patient and healthcare provider interaction) during which this ImagingStudy is made.
1729     */
1730    @Child(name = "encounter", type = {Encounter.class}, order=4, min=0, max=1, modifier=false, summary=true)
1731    @Description(shortDefinition="Encounter with which this imaging study is associated", formalDefinition="The healthcare event (e.g. a patient and healthcare provider interaction) during which this ImagingStudy is made." )
1732    protected Reference encounter;
1733
1734    /**
1735     * Date and time the study started.
1736     */
1737    @Child(name = "started", type = {DateTimeType.class}, order=5, min=0, max=1, modifier=false, summary=true)
1738    @Description(shortDefinition="When the study was started", formalDefinition="Date and time the study started." )
1739    protected DateTimeType started;
1740
1741    /**
1742     * A list of the diagnostic requests that resulted in this imaging study being performed.
1743     */
1744    @Child(name = "basedOn", type = {CarePlan.class, ServiceRequest.class, Appointment.class, AppointmentResponse.class, Task.class}, order=6, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1745    @Description(shortDefinition="Request fulfilled", formalDefinition="A list of the diagnostic requests that resulted in this imaging study being performed." )
1746    protected List<Reference> basedOn;
1747
1748    /**
1749     * The requesting/referring physician.
1750     */
1751    @Child(name = "referrer", type = {Practitioner.class, PractitionerRole.class}, order=7, min=0, max=1, modifier=false, summary=true)
1752    @Description(shortDefinition="Referring physician", formalDefinition="The requesting/referring physician." )
1753    protected Reference referrer;
1754
1755    /**
1756     * Who read the study and interpreted the images or other content.
1757     */
1758    @Child(name = "interpreter", type = {Practitioner.class, PractitionerRole.class}, order=8, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1759    @Description(shortDefinition="Who interpreted images", formalDefinition="Who read the study and interpreted the images or other content." )
1760    protected List<Reference> interpreter;
1761
1762    /**
1763     * The network service providing access (e.g., query, view, or retrieval) for the study. See implementation notes for information about using DICOM endpoints. A study-level endpoint applies to each series in the study, unless overridden by a series-level endpoint with the same Endpoint.connectionType.
1764     */
1765    @Child(name = "endpoint", type = {Endpoint.class}, order=9, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1766    @Description(shortDefinition="Study access endpoint", formalDefinition="The network service providing access (e.g., query, view, or retrieval) for the study. See implementation notes for information about using DICOM endpoints. A study-level endpoint applies to each series in the study, unless overridden by a series-level endpoint with the same Endpoint.connectionType." )
1767    protected List<Reference> endpoint;
1768
1769    /**
1770     * Number of Series in the Study. This value given may be larger than the number of series elements this Resource contains due to resource availability, security, or other factors. This element should be present if any series elements are present.
1771     */
1772    @Child(name = "numberOfSeries", type = {UnsignedIntType.class}, order=10, min=0, max=1, modifier=false, summary=true)
1773    @Description(shortDefinition="Number of Study Related Series", formalDefinition="Number of Series in the Study. This value given may be larger than the number of series elements this Resource contains due to resource availability, security, or other factors. This element should be present if any series elements are present." )
1774    protected UnsignedIntType numberOfSeries;
1775
1776    /**
1777     * Number of SOP Instances in Study. This value given may be larger than the number of instance elements this resource contains due to resource availability, security, or other factors. This element should be present if any instance elements are present.
1778     */
1779    @Child(name = "numberOfInstances", type = {UnsignedIntType.class}, order=11, min=0, max=1, modifier=false, summary=true)
1780    @Description(shortDefinition="Number of Study Related Instances", formalDefinition="Number of SOP Instances in Study. This value given may be larger than the number of instance elements this resource contains due to resource availability, security, or other factors. This element should be present if any instance elements are present." )
1781    protected UnsignedIntType numberOfInstances;
1782
1783    /**
1784     * The procedure which this ImagingStudy was part of.
1785     */
1786    @Child(name = "procedureReference", type = {Procedure.class}, order=12, min=0, max=1, modifier=false, summary=true)
1787    @Description(shortDefinition="The performed Procedure reference", formalDefinition="The procedure which this ImagingStudy was part of." )
1788    protected Reference procedureReference;
1789
1790    /**
1791     * The code for the performed procedure type.
1792     */
1793    @Child(name = "procedureCode", type = {CodeableConcept.class}, order=13, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1794    @Description(shortDefinition="The performed procedure code", formalDefinition="The code for the performed procedure type." )
1795    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://www.rsna.org/RadLex_Playbook.aspx")
1796    protected List<CodeableConcept> procedureCode;
1797
1798    /**
1799     * The principal physical location where the ImagingStudy was performed.
1800     */
1801    @Child(name = "location", type = {Location.class}, order=14, min=0, max=1, modifier=false, summary=true)
1802    @Description(shortDefinition="Where ImagingStudy occurred", formalDefinition="The principal physical location where the ImagingStudy was performed." )
1803    protected Reference location;
1804
1805    /**
1806     * Description of clinical condition indicating why the ImagingStudy was requested.
1807     */
1808    @Child(name = "reasonCode", type = {CodeableConcept.class}, order=15, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1809    @Description(shortDefinition="Why the study was requested", formalDefinition="Description of clinical condition indicating why the ImagingStudy was requested." )
1810    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/procedure-reason")
1811    protected List<CodeableConcept> reasonCode;
1812
1813    /**
1814     * Indicates another resource whose existence justifies this Study.
1815     */
1816    @Child(name = "reasonReference", type = {Condition.class, Observation.class, Media.class, DiagnosticReport.class, DocumentReference.class}, order=16, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1817    @Description(shortDefinition="Why was study performed", formalDefinition="Indicates another resource whose existence justifies this Study." )
1818    protected List<Reference> reasonReference;
1819
1820    /**
1821     * Per the recommended DICOM mapping, this element is derived from the Study Description attribute (0008,1030). Observations or findings about the imaging study should be recorded in another resource, e.g. Observation, and not in this element.
1822     */
1823    @Child(name = "note", type = {Annotation.class}, order=17, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1824    @Description(shortDefinition="User-defined comments", formalDefinition="Per the recommended DICOM mapping, this element is derived from the Study Description attribute (0008,1030). Observations or findings about the imaging study should be recorded in another resource, e.g. Observation, and not in this element." )
1825    protected List<Annotation> note;
1826
1827    /**
1828     * The Imaging Manager description of the study. Institution-generated description or classification of the Study (component) performed.
1829     */
1830    @Child(name = "description", type = {StringType.class}, order=18, min=0, max=1, modifier=false, summary=true)
1831    @Description(shortDefinition="Institution-generated description", formalDefinition="The Imaging Manager description of the study. Institution-generated description or classification of the Study (component) performed." )
1832    protected StringType description;
1833
1834    /**
1835     * Each study has one or more series of images or other content.
1836     */
1837    @Child(name = "series", type = {}, order=19, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1838    @Description(shortDefinition="Each study has one or more series of instances", formalDefinition="Each study has one or more series of images or other content." )
1839    protected List<ImagingStudySeriesComponent> series;
1840
1841    private static final long serialVersionUID = -431531621L;
1842
1843  /**
1844   * Constructor
1845   */
1846    public ImagingStudy() {
1847      super();
1848    }
1849
1850  /**
1851   * Constructor
1852   */
1853    public ImagingStudy(ImagingStudyStatus status, Reference subject) {
1854      super();
1855      this.setStatus(status);
1856      this.setSubject(subject);
1857    }
1858
1859    /**
1860     * @return {@link #identifier} (Identifiers for the ImagingStudy such as DICOM Study Instance UID, and Accession Number.)
1861     */
1862    public List<Identifier> getIdentifier() { 
1863      if (this.identifier == null)
1864        this.identifier = new ArrayList<Identifier>();
1865      return this.identifier;
1866    }
1867
1868    /**
1869     * @return Returns a reference to <code>this</code> for easy method chaining
1870     */
1871    public ImagingStudy setIdentifier(List<Identifier> theIdentifier) { 
1872      this.identifier = theIdentifier;
1873      return this;
1874    }
1875
1876    public boolean hasIdentifier() { 
1877      if (this.identifier == null)
1878        return false;
1879      for (Identifier item : this.identifier)
1880        if (!item.isEmpty())
1881          return true;
1882      return false;
1883    }
1884
1885    public Identifier addIdentifier() { //3
1886      Identifier t = new Identifier();
1887      if (this.identifier == null)
1888        this.identifier = new ArrayList<Identifier>();
1889      this.identifier.add(t);
1890      return t;
1891    }
1892
1893    public ImagingStudy addIdentifier(Identifier t) { //3
1894      if (t == null)
1895        return this;
1896      if (this.identifier == null)
1897        this.identifier = new ArrayList<Identifier>();
1898      this.identifier.add(t);
1899      return this;
1900    }
1901
1902    /**
1903     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {3}
1904     */
1905    public Identifier getIdentifierFirstRep() { 
1906      if (getIdentifier().isEmpty()) {
1907        addIdentifier();
1908      }
1909      return getIdentifier().get(0);
1910    }
1911
1912    /**
1913     * @return {@link #status} (The current state of the ImagingStudy.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
1914     */
1915    public Enumeration<ImagingStudyStatus> getStatusElement() { 
1916      if (this.status == null)
1917        if (Configuration.errorOnAutoCreate())
1918          throw new Error("Attempt to auto-create ImagingStudy.status");
1919        else if (Configuration.doAutoCreate())
1920          this.status = new Enumeration<ImagingStudyStatus>(new ImagingStudyStatusEnumFactory()); // bb
1921      return this.status;
1922    }
1923
1924    public boolean hasStatusElement() { 
1925      return this.status != null && !this.status.isEmpty();
1926    }
1927
1928    public boolean hasStatus() { 
1929      return this.status != null && !this.status.isEmpty();
1930    }
1931
1932    /**
1933     * @param value {@link #status} (The current state of the ImagingStudy.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
1934     */
1935    public ImagingStudy setStatusElement(Enumeration<ImagingStudyStatus> value) { 
1936      this.status = value;
1937      return this;
1938    }
1939
1940    /**
1941     * @return The current state of the ImagingStudy.
1942     */
1943    public ImagingStudyStatus getStatus() { 
1944      return this.status == null ? null : this.status.getValue();
1945    }
1946
1947    /**
1948     * @param value The current state of the ImagingStudy.
1949     */
1950    public ImagingStudy setStatus(ImagingStudyStatus value) { 
1951        if (this.status == null)
1952          this.status = new Enumeration<ImagingStudyStatus>(new ImagingStudyStatusEnumFactory());
1953        this.status.setValue(value);
1954      return this;
1955    }
1956
1957    /**
1958     * @return {@link #modality} (A list of all the series.modality values that are actual acquisition modalities, i.e. those in the DICOM Context Group 29 (value set OID 1.2.840.10008.6.1.19).)
1959     */
1960    public List<Coding> getModality() { 
1961      if (this.modality == null)
1962        this.modality = new ArrayList<Coding>();
1963      return this.modality;
1964    }
1965
1966    /**
1967     * @return Returns a reference to <code>this</code> for easy method chaining
1968     */
1969    public ImagingStudy setModality(List<Coding> theModality) { 
1970      this.modality = theModality;
1971      return this;
1972    }
1973
1974    public boolean hasModality() { 
1975      if (this.modality == null)
1976        return false;
1977      for (Coding item : this.modality)
1978        if (!item.isEmpty())
1979          return true;
1980      return false;
1981    }
1982
1983    public Coding addModality() { //3
1984      Coding t = new Coding();
1985      if (this.modality == null)
1986        this.modality = new ArrayList<Coding>();
1987      this.modality.add(t);
1988      return t;
1989    }
1990
1991    public ImagingStudy addModality(Coding t) { //3
1992      if (t == null)
1993        return this;
1994      if (this.modality == null)
1995        this.modality = new ArrayList<Coding>();
1996      this.modality.add(t);
1997      return this;
1998    }
1999
2000    /**
2001     * @return The first repetition of repeating field {@link #modality}, creating it if it does not already exist {3}
2002     */
2003    public Coding getModalityFirstRep() { 
2004      if (getModality().isEmpty()) {
2005        addModality();
2006      }
2007      return getModality().get(0);
2008    }
2009
2010    /**
2011     * @return {@link #subject} (The subject, typically a patient, of the imaging study.)
2012     */
2013    public Reference getSubject() { 
2014      if (this.subject == null)
2015        if (Configuration.errorOnAutoCreate())
2016          throw new Error("Attempt to auto-create ImagingStudy.subject");
2017        else if (Configuration.doAutoCreate())
2018          this.subject = new Reference(); // cc
2019      return this.subject;
2020    }
2021
2022    public boolean hasSubject() { 
2023      return this.subject != null && !this.subject.isEmpty();
2024    }
2025
2026    /**
2027     * @param value {@link #subject} (The subject, typically a patient, of the imaging study.)
2028     */
2029    public ImagingStudy setSubject(Reference value) { 
2030      this.subject = value;
2031      return this;
2032    }
2033
2034    /**
2035     * @return {@link #encounter} (The healthcare event (e.g. a patient and healthcare provider interaction) during which this ImagingStudy is made.)
2036     */
2037    public Reference getEncounter() { 
2038      if (this.encounter == null)
2039        if (Configuration.errorOnAutoCreate())
2040          throw new Error("Attempt to auto-create ImagingStudy.encounter");
2041        else if (Configuration.doAutoCreate())
2042          this.encounter = new Reference(); // cc
2043      return this.encounter;
2044    }
2045
2046    public boolean hasEncounter() { 
2047      return this.encounter != null && !this.encounter.isEmpty();
2048    }
2049
2050    /**
2051     * @param value {@link #encounter} (The healthcare event (e.g. a patient and healthcare provider interaction) during which this ImagingStudy is made.)
2052     */
2053    public ImagingStudy setEncounter(Reference value) { 
2054      this.encounter = value;
2055      return this;
2056    }
2057
2058    /**
2059     * @return {@link #started} (Date and time the study started.). This is the underlying object with id, value and extensions. The accessor "getStarted" gives direct access to the value
2060     */
2061    public DateTimeType getStartedElement() { 
2062      if (this.started == null)
2063        if (Configuration.errorOnAutoCreate())
2064          throw new Error("Attempt to auto-create ImagingStudy.started");
2065        else if (Configuration.doAutoCreate())
2066          this.started = new DateTimeType(); // bb
2067      return this.started;
2068    }
2069
2070    public boolean hasStartedElement() { 
2071      return this.started != null && !this.started.isEmpty();
2072    }
2073
2074    public boolean hasStarted() { 
2075      return this.started != null && !this.started.isEmpty();
2076    }
2077
2078    /**
2079     * @param value {@link #started} (Date and time the study started.). This is the underlying object with id, value and extensions. The accessor "getStarted" gives direct access to the value
2080     */
2081    public ImagingStudy setStartedElement(DateTimeType value) { 
2082      this.started = value;
2083      return this;
2084    }
2085
2086    /**
2087     * @return Date and time the study started.
2088     */
2089    public Date getStarted() { 
2090      return this.started == null ? null : this.started.getValue();
2091    }
2092
2093    /**
2094     * @param value Date and time the study started.
2095     */
2096    public ImagingStudy setStarted(Date value) { 
2097      if (value == null)
2098        this.started = null;
2099      else {
2100        if (this.started == null)
2101          this.started = new DateTimeType();
2102        this.started.setValue(value);
2103      }
2104      return this;
2105    }
2106
2107    /**
2108     * @return {@link #basedOn} (A list of the diagnostic requests that resulted in this imaging study being performed.)
2109     */
2110    public List<Reference> getBasedOn() { 
2111      if (this.basedOn == null)
2112        this.basedOn = new ArrayList<Reference>();
2113      return this.basedOn;
2114    }
2115
2116    /**
2117     * @return Returns a reference to <code>this</code> for easy method chaining
2118     */
2119    public ImagingStudy setBasedOn(List<Reference> theBasedOn) { 
2120      this.basedOn = theBasedOn;
2121      return this;
2122    }
2123
2124    public boolean hasBasedOn() { 
2125      if (this.basedOn == null)
2126        return false;
2127      for (Reference item : this.basedOn)
2128        if (!item.isEmpty())
2129          return true;
2130      return false;
2131    }
2132
2133    public Reference addBasedOn() { //3
2134      Reference t = new Reference();
2135      if (this.basedOn == null)
2136        this.basedOn = new ArrayList<Reference>();
2137      this.basedOn.add(t);
2138      return t;
2139    }
2140
2141    public ImagingStudy addBasedOn(Reference t) { //3
2142      if (t == null)
2143        return this;
2144      if (this.basedOn == null)
2145        this.basedOn = new ArrayList<Reference>();
2146      this.basedOn.add(t);
2147      return this;
2148    }
2149
2150    /**
2151     * @return The first repetition of repeating field {@link #basedOn}, creating it if it does not already exist {3}
2152     */
2153    public Reference getBasedOnFirstRep() { 
2154      if (getBasedOn().isEmpty()) {
2155        addBasedOn();
2156      }
2157      return getBasedOn().get(0);
2158    }
2159
2160    /**
2161     * @return {@link #referrer} (The requesting/referring physician.)
2162     */
2163    public Reference getReferrer() { 
2164      if (this.referrer == null)
2165        if (Configuration.errorOnAutoCreate())
2166          throw new Error("Attempt to auto-create ImagingStudy.referrer");
2167        else if (Configuration.doAutoCreate())
2168          this.referrer = new Reference(); // cc
2169      return this.referrer;
2170    }
2171
2172    public boolean hasReferrer() { 
2173      return this.referrer != null && !this.referrer.isEmpty();
2174    }
2175
2176    /**
2177     * @param value {@link #referrer} (The requesting/referring physician.)
2178     */
2179    public ImagingStudy setReferrer(Reference value) { 
2180      this.referrer = value;
2181      return this;
2182    }
2183
2184    /**
2185     * @return {@link #interpreter} (Who read the study and interpreted the images or other content.)
2186     */
2187    public List<Reference> getInterpreter() { 
2188      if (this.interpreter == null)
2189        this.interpreter = new ArrayList<Reference>();
2190      return this.interpreter;
2191    }
2192
2193    /**
2194     * @return Returns a reference to <code>this</code> for easy method chaining
2195     */
2196    public ImagingStudy setInterpreter(List<Reference> theInterpreter) { 
2197      this.interpreter = theInterpreter;
2198      return this;
2199    }
2200
2201    public boolean hasInterpreter() { 
2202      if (this.interpreter == null)
2203        return false;
2204      for (Reference item : this.interpreter)
2205        if (!item.isEmpty())
2206          return true;
2207      return false;
2208    }
2209
2210    public Reference addInterpreter() { //3
2211      Reference t = new Reference();
2212      if (this.interpreter == null)
2213        this.interpreter = new ArrayList<Reference>();
2214      this.interpreter.add(t);
2215      return t;
2216    }
2217
2218    public ImagingStudy addInterpreter(Reference t) { //3
2219      if (t == null)
2220        return this;
2221      if (this.interpreter == null)
2222        this.interpreter = new ArrayList<Reference>();
2223      this.interpreter.add(t);
2224      return this;
2225    }
2226
2227    /**
2228     * @return The first repetition of repeating field {@link #interpreter}, creating it if it does not already exist {3}
2229     */
2230    public Reference getInterpreterFirstRep() { 
2231      if (getInterpreter().isEmpty()) {
2232        addInterpreter();
2233      }
2234      return getInterpreter().get(0);
2235    }
2236
2237    /**
2238     * @return {@link #endpoint} (The network service providing access (e.g., query, view, or retrieval) for the study. See implementation notes for information about using DICOM endpoints. A study-level endpoint applies to each series in the study, unless overridden by a series-level endpoint with the same Endpoint.connectionType.)
2239     */
2240    public List<Reference> getEndpoint() { 
2241      if (this.endpoint == null)
2242        this.endpoint = new ArrayList<Reference>();
2243      return this.endpoint;
2244    }
2245
2246    /**
2247     * @return Returns a reference to <code>this</code> for easy method chaining
2248     */
2249    public ImagingStudy setEndpoint(List<Reference> theEndpoint) { 
2250      this.endpoint = theEndpoint;
2251      return this;
2252    }
2253
2254    public boolean hasEndpoint() { 
2255      if (this.endpoint == null)
2256        return false;
2257      for (Reference item : this.endpoint)
2258        if (!item.isEmpty())
2259          return true;
2260      return false;
2261    }
2262
2263    public Reference addEndpoint() { //3
2264      Reference t = new Reference();
2265      if (this.endpoint == null)
2266        this.endpoint = new ArrayList<Reference>();
2267      this.endpoint.add(t);
2268      return t;
2269    }
2270
2271    public ImagingStudy addEndpoint(Reference t) { //3
2272      if (t == null)
2273        return this;
2274      if (this.endpoint == null)
2275        this.endpoint = new ArrayList<Reference>();
2276      this.endpoint.add(t);
2277      return this;
2278    }
2279
2280    /**
2281     * @return The first repetition of repeating field {@link #endpoint}, creating it if it does not already exist {3}
2282     */
2283    public Reference getEndpointFirstRep() { 
2284      if (getEndpoint().isEmpty()) {
2285        addEndpoint();
2286      }
2287      return getEndpoint().get(0);
2288    }
2289
2290    /**
2291     * @return {@link #numberOfSeries} (Number of Series in the Study. This value given may be larger than the number of series elements this Resource contains due to resource availability, security, or other factors. This element should be present if any series elements are present.). This is the underlying object with id, value and extensions. The accessor "getNumberOfSeries" gives direct access to the value
2292     */
2293    public UnsignedIntType getNumberOfSeriesElement() { 
2294      if (this.numberOfSeries == null)
2295        if (Configuration.errorOnAutoCreate())
2296          throw new Error("Attempt to auto-create ImagingStudy.numberOfSeries");
2297        else if (Configuration.doAutoCreate())
2298          this.numberOfSeries = new UnsignedIntType(); // bb
2299      return this.numberOfSeries;
2300    }
2301
2302    public boolean hasNumberOfSeriesElement() { 
2303      return this.numberOfSeries != null && !this.numberOfSeries.isEmpty();
2304    }
2305
2306    public boolean hasNumberOfSeries() { 
2307      return this.numberOfSeries != null && !this.numberOfSeries.isEmpty();
2308    }
2309
2310    /**
2311     * @param value {@link #numberOfSeries} (Number of Series in the Study. This value given may be larger than the number of series elements this Resource contains due to resource availability, security, or other factors. This element should be present if any series elements are present.). This is the underlying object with id, value and extensions. The accessor "getNumberOfSeries" gives direct access to the value
2312     */
2313    public ImagingStudy setNumberOfSeriesElement(UnsignedIntType value) { 
2314      this.numberOfSeries = value;
2315      return this;
2316    }
2317
2318    /**
2319     * @return Number of Series in the Study. This value given may be larger than the number of series elements this Resource contains due to resource availability, security, or other factors. This element should be present if any series elements are present.
2320     */
2321    public int getNumberOfSeries() { 
2322      return this.numberOfSeries == null || this.numberOfSeries.isEmpty() ? 0 : this.numberOfSeries.getValue();
2323    }
2324
2325    /**
2326     * @param value Number of Series in the Study. This value given may be larger than the number of series elements this Resource contains due to resource availability, security, or other factors. This element should be present if any series elements are present.
2327     */
2328    public ImagingStudy setNumberOfSeries(int value) { 
2329        if (this.numberOfSeries == null)
2330          this.numberOfSeries = new UnsignedIntType();
2331        this.numberOfSeries.setValue(value);
2332      return this;
2333    }
2334
2335    /**
2336     * @return {@link #numberOfInstances} (Number of SOP Instances in Study. This value given may be larger than the number of instance elements this resource contains due to resource availability, security, or other factors. This element should be present if any instance elements are present.). This is the underlying object with id, value and extensions. The accessor "getNumberOfInstances" gives direct access to the value
2337     */
2338    public UnsignedIntType getNumberOfInstancesElement() { 
2339      if (this.numberOfInstances == null)
2340        if (Configuration.errorOnAutoCreate())
2341          throw new Error("Attempt to auto-create ImagingStudy.numberOfInstances");
2342        else if (Configuration.doAutoCreate())
2343          this.numberOfInstances = new UnsignedIntType(); // bb
2344      return this.numberOfInstances;
2345    }
2346
2347    public boolean hasNumberOfInstancesElement() { 
2348      return this.numberOfInstances != null && !this.numberOfInstances.isEmpty();
2349    }
2350
2351    public boolean hasNumberOfInstances() { 
2352      return this.numberOfInstances != null && !this.numberOfInstances.isEmpty();
2353    }
2354
2355    /**
2356     * @param value {@link #numberOfInstances} (Number of SOP Instances in Study. This value given may be larger than the number of instance elements this resource contains due to resource availability, security, or other factors. This element should be present if any instance elements are present.). This is the underlying object with id, value and extensions. The accessor "getNumberOfInstances" gives direct access to the value
2357     */
2358    public ImagingStudy setNumberOfInstancesElement(UnsignedIntType value) { 
2359      this.numberOfInstances = value;
2360      return this;
2361    }
2362
2363    /**
2364     * @return Number of SOP Instances in Study. This value given may be larger than the number of instance elements this resource contains due to resource availability, security, or other factors. This element should be present if any instance elements are present.
2365     */
2366    public int getNumberOfInstances() { 
2367      return this.numberOfInstances == null || this.numberOfInstances.isEmpty() ? 0 : this.numberOfInstances.getValue();
2368    }
2369
2370    /**
2371     * @param value Number of SOP Instances in Study. This value given may be larger than the number of instance elements this resource contains due to resource availability, security, or other factors. This element should be present if any instance elements are present.
2372     */
2373    public ImagingStudy setNumberOfInstances(int value) { 
2374        if (this.numberOfInstances == null)
2375          this.numberOfInstances = new UnsignedIntType();
2376        this.numberOfInstances.setValue(value);
2377      return this;
2378    }
2379
2380    /**
2381     * @return {@link #procedureReference} (The procedure which this ImagingStudy was part of.)
2382     */
2383    public Reference getProcedureReference() { 
2384      if (this.procedureReference == null)
2385        if (Configuration.errorOnAutoCreate())
2386          throw new Error("Attempt to auto-create ImagingStudy.procedureReference");
2387        else if (Configuration.doAutoCreate())
2388          this.procedureReference = new Reference(); // cc
2389      return this.procedureReference;
2390    }
2391
2392    public boolean hasProcedureReference() { 
2393      return this.procedureReference != null && !this.procedureReference.isEmpty();
2394    }
2395
2396    /**
2397     * @param value {@link #procedureReference} (The procedure which this ImagingStudy was part of.)
2398     */
2399    public ImagingStudy setProcedureReference(Reference value) { 
2400      this.procedureReference = value;
2401      return this;
2402    }
2403
2404    /**
2405     * @return {@link #procedureCode} (The code for the performed procedure type.)
2406     */
2407    public List<CodeableConcept> getProcedureCode() { 
2408      if (this.procedureCode == null)
2409        this.procedureCode = new ArrayList<CodeableConcept>();
2410      return this.procedureCode;
2411    }
2412
2413    /**
2414     * @return Returns a reference to <code>this</code> for easy method chaining
2415     */
2416    public ImagingStudy setProcedureCode(List<CodeableConcept> theProcedureCode) { 
2417      this.procedureCode = theProcedureCode;
2418      return this;
2419    }
2420
2421    public boolean hasProcedureCode() { 
2422      if (this.procedureCode == null)
2423        return false;
2424      for (CodeableConcept item : this.procedureCode)
2425        if (!item.isEmpty())
2426          return true;
2427      return false;
2428    }
2429
2430    public CodeableConcept addProcedureCode() { //3
2431      CodeableConcept t = new CodeableConcept();
2432      if (this.procedureCode == null)
2433        this.procedureCode = new ArrayList<CodeableConcept>();
2434      this.procedureCode.add(t);
2435      return t;
2436    }
2437
2438    public ImagingStudy addProcedureCode(CodeableConcept t) { //3
2439      if (t == null)
2440        return this;
2441      if (this.procedureCode == null)
2442        this.procedureCode = new ArrayList<CodeableConcept>();
2443      this.procedureCode.add(t);
2444      return this;
2445    }
2446
2447    /**
2448     * @return The first repetition of repeating field {@link #procedureCode}, creating it if it does not already exist {3}
2449     */
2450    public CodeableConcept getProcedureCodeFirstRep() { 
2451      if (getProcedureCode().isEmpty()) {
2452        addProcedureCode();
2453      }
2454      return getProcedureCode().get(0);
2455    }
2456
2457    /**
2458     * @return {@link #location} (The principal physical location where the ImagingStudy was performed.)
2459     */
2460    public Reference getLocation() { 
2461      if (this.location == null)
2462        if (Configuration.errorOnAutoCreate())
2463          throw new Error("Attempt to auto-create ImagingStudy.location");
2464        else if (Configuration.doAutoCreate())
2465          this.location = new Reference(); // cc
2466      return this.location;
2467    }
2468
2469    public boolean hasLocation() { 
2470      return this.location != null && !this.location.isEmpty();
2471    }
2472
2473    /**
2474     * @param value {@link #location} (The principal physical location where the ImagingStudy was performed.)
2475     */
2476    public ImagingStudy setLocation(Reference value) { 
2477      this.location = value;
2478      return this;
2479    }
2480
2481    /**
2482     * @return {@link #reasonCode} (Description of clinical condition indicating why the ImagingStudy was requested.)
2483     */
2484    public List<CodeableConcept> getReasonCode() { 
2485      if (this.reasonCode == null)
2486        this.reasonCode = new ArrayList<CodeableConcept>();
2487      return this.reasonCode;
2488    }
2489
2490    /**
2491     * @return Returns a reference to <code>this</code> for easy method chaining
2492     */
2493    public ImagingStudy setReasonCode(List<CodeableConcept> theReasonCode) { 
2494      this.reasonCode = theReasonCode;
2495      return this;
2496    }
2497
2498    public boolean hasReasonCode() { 
2499      if (this.reasonCode == null)
2500        return false;
2501      for (CodeableConcept item : this.reasonCode)
2502        if (!item.isEmpty())
2503          return true;
2504      return false;
2505    }
2506
2507    public CodeableConcept addReasonCode() { //3
2508      CodeableConcept t = new CodeableConcept();
2509      if (this.reasonCode == null)
2510        this.reasonCode = new ArrayList<CodeableConcept>();
2511      this.reasonCode.add(t);
2512      return t;
2513    }
2514
2515    public ImagingStudy addReasonCode(CodeableConcept t) { //3
2516      if (t == null)
2517        return this;
2518      if (this.reasonCode == null)
2519        this.reasonCode = new ArrayList<CodeableConcept>();
2520      this.reasonCode.add(t);
2521      return this;
2522    }
2523
2524    /**
2525     * @return The first repetition of repeating field {@link #reasonCode}, creating it if it does not already exist {3}
2526     */
2527    public CodeableConcept getReasonCodeFirstRep() { 
2528      if (getReasonCode().isEmpty()) {
2529        addReasonCode();
2530      }
2531      return getReasonCode().get(0);
2532    }
2533
2534    /**
2535     * @return {@link #reasonReference} (Indicates another resource whose existence justifies this Study.)
2536     */
2537    public List<Reference> getReasonReference() { 
2538      if (this.reasonReference == null)
2539        this.reasonReference = new ArrayList<Reference>();
2540      return this.reasonReference;
2541    }
2542
2543    /**
2544     * @return Returns a reference to <code>this</code> for easy method chaining
2545     */
2546    public ImagingStudy setReasonReference(List<Reference> theReasonReference) { 
2547      this.reasonReference = theReasonReference;
2548      return this;
2549    }
2550
2551    public boolean hasReasonReference() { 
2552      if (this.reasonReference == null)
2553        return false;
2554      for (Reference item : this.reasonReference)
2555        if (!item.isEmpty())
2556          return true;
2557      return false;
2558    }
2559
2560    public Reference addReasonReference() { //3
2561      Reference t = new Reference();
2562      if (this.reasonReference == null)
2563        this.reasonReference = new ArrayList<Reference>();
2564      this.reasonReference.add(t);
2565      return t;
2566    }
2567
2568    public ImagingStudy addReasonReference(Reference t) { //3
2569      if (t == null)
2570        return this;
2571      if (this.reasonReference == null)
2572        this.reasonReference = new ArrayList<Reference>();
2573      this.reasonReference.add(t);
2574      return this;
2575    }
2576
2577    /**
2578     * @return The first repetition of repeating field {@link #reasonReference}, creating it if it does not already exist {3}
2579     */
2580    public Reference getReasonReferenceFirstRep() { 
2581      if (getReasonReference().isEmpty()) {
2582        addReasonReference();
2583      }
2584      return getReasonReference().get(0);
2585    }
2586
2587    /**
2588     * @return {@link #note} (Per the recommended DICOM mapping, this element is derived from the Study Description attribute (0008,1030). Observations or findings about the imaging study should be recorded in another resource, e.g. Observation, and not in this element.)
2589     */
2590    public List<Annotation> getNote() { 
2591      if (this.note == null)
2592        this.note = new ArrayList<Annotation>();
2593      return this.note;
2594    }
2595
2596    /**
2597     * @return Returns a reference to <code>this</code> for easy method chaining
2598     */
2599    public ImagingStudy setNote(List<Annotation> theNote) { 
2600      this.note = theNote;
2601      return this;
2602    }
2603
2604    public boolean hasNote() { 
2605      if (this.note == null)
2606        return false;
2607      for (Annotation item : this.note)
2608        if (!item.isEmpty())
2609          return true;
2610      return false;
2611    }
2612
2613    public Annotation addNote() { //3
2614      Annotation t = new Annotation();
2615      if (this.note == null)
2616        this.note = new ArrayList<Annotation>();
2617      this.note.add(t);
2618      return t;
2619    }
2620
2621    public ImagingStudy addNote(Annotation t) { //3
2622      if (t == null)
2623        return this;
2624      if (this.note == null)
2625        this.note = new ArrayList<Annotation>();
2626      this.note.add(t);
2627      return this;
2628    }
2629
2630    /**
2631     * @return The first repetition of repeating field {@link #note}, creating it if it does not already exist {3}
2632     */
2633    public Annotation getNoteFirstRep() { 
2634      if (getNote().isEmpty()) {
2635        addNote();
2636      }
2637      return getNote().get(0);
2638    }
2639
2640    /**
2641     * @return {@link #description} (The Imaging Manager description of the study. Institution-generated description or classification of the Study (component) performed.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
2642     */
2643    public StringType getDescriptionElement() { 
2644      if (this.description == null)
2645        if (Configuration.errorOnAutoCreate())
2646          throw new Error("Attempt to auto-create ImagingStudy.description");
2647        else if (Configuration.doAutoCreate())
2648          this.description = new StringType(); // bb
2649      return this.description;
2650    }
2651
2652    public boolean hasDescriptionElement() { 
2653      return this.description != null && !this.description.isEmpty();
2654    }
2655
2656    public boolean hasDescription() { 
2657      return this.description != null && !this.description.isEmpty();
2658    }
2659
2660    /**
2661     * @param value {@link #description} (The Imaging Manager description of the study. Institution-generated description or classification of the Study (component) performed.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
2662     */
2663    public ImagingStudy setDescriptionElement(StringType value) { 
2664      this.description = value;
2665      return this;
2666    }
2667
2668    /**
2669     * @return The Imaging Manager description of the study. Institution-generated description or classification of the Study (component) performed.
2670     */
2671    public String getDescription() { 
2672      return this.description == null ? null : this.description.getValue();
2673    }
2674
2675    /**
2676     * @param value The Imaging Manager description of the study. Institution-generated description or classification of the Study (component) performed.
2677     */
2678    public ImagingStudy setDescription(String value) { 
2679      if (Utilities.noString(value))
2680        this.description = null;
2681      else {
2682        if (this.description == null)
2683          this.description = new StringType();
2684        this.description.setValue(value);
2685      }
2686      return this;
2687    }
2688
2689    /**
2690     * @return {@link #series} (Each study has one or more series of images or other content.)
2691     */
2692    public List<ImagingStudySeriesComponent> getSeries() { 
2693      if (this.series == null)
2694        this.series = new ArrayList<ImagingStudySeriesComponent>();
2695      return this.series;
2696    }
2697
2698    /**
2699     * @return Returns a reference to <code>this</code> for easy method chaining
2700     */
2701    public ImagingStudy setSeries(List<ImagingStudySeriesComponent> theSeries) { 
2702      this.series = theSeries;
2703      return this;
2704    }
2705
2706    public boolean hasSeries() { 
2707      if (this.series == null)
2708        return false;
2709      for (ImagingStudySeriesComponent item : this.series)
2710        if (!item.isEmpty())
2711          return true;
2712      return false;
2713    }
2714
2715    public ImagingStudySeriesComponent addSeries() { //3
2716      ImagingStudySeriesComponent t = new ImagingStudySeriesComponent();
2717      if (this.series == null)
2718        this.series = new ArrayList<ImagingStudySeriesComponent>();
2719      this.series.add(t);
2720      return t;
2721    }
2722
2723    public ImagingStudy addSeries(ImagingStudySeriesComponent t) { //3
2724      if (t == null)
2725        return this;
2726      if (this.series == null)
2727        this.series = new ArrayList<ImagingStudySeriesComponent>();
2728      this.series.add(t);
2729      return this;
2730    }
2731
2732    /**
2733     * @return The first repetition of repeating field {@link #series}, creating it if it does not already exist {3}
2734     */
2735    public ImagingStudySeriesComponent getSeriesFirstRep() { 
2736      if (getSeries().isEmpty()) {
2737        addSeries();
2738      }
2739      return getSeries().get(0);
2740    }
2741
2742      protected void listChildren(List<Property> children) {
2743        super.listChildren(children);
2744        children.add(new Property("identifier", "Identifier", "Identifiers for the ImagingStudy such as DICOM Study Instance UID, and Accession Number.", 0, java.lang.Integer.MAX_VALUE, identifier));
2745        children.add(new Property("status", "code", "The current state of the ImagingStudy.", 0, 1, status));
2746        children.add(new Property("modality", "Coding", "A list of all the series.modality values that are actual acquisition modalities, i.e. those in the DICOM Context Group 29 (value set OID 1.2.840.10008.6.1.19).", 0, java.lang.Integer.MAX_VALUE, modality));
2747        children.add(new Property("subject", "Reference(Patient|Device|Group)", "The subject, typically a patient, of the imaging study.", 0, 1, subject));
2748        children.add(new Property("encounter", "Reference(Encounter)", "The healthcare event (e.g. a patient and healthcare provider interaction) during which this ImagingStudy is made.", 0, 1, encounter));
2749        children.add(new Property("started", "dateTime", "Date and time the study started.", 0, 1, started));
2750        children.add(new Property("basedOn", "Reference(CarePlan|ServiceRequest|Appointment|AppointmentResponse|Task)", "A list of the diagnostic requests that resulted in this imaging study being performed.", 0, java.lang.Integer.MAX_VALUE, basedOn));
2751        children.add(new Property("referrer", "Reference(Practitioner|PractitionerRole)", "The requesting/referring physician.", 0, 1, referrer));
2752        children.add(new Property("interpreter", "Reference(Practitioner|PractitionerRole)", "Who read the study and interpreted the images or other content.", 0, java.lang.Integer.MAX_VALUE, interpreter));
2753        children.add(new Property("endpoint", "Reference(Endpoint)", "The network service providing access (e.g., query, view, or retrieval) for the study. See implementation notes for information about using DICOM endpoints. A study-level endpoint applies to each series in the study, unless overridden by a series-level endpoint with the same Endpoint.connectionType.", 0, java.lang.Integer.MAX_VALUE, endpoint));
2754        children.add(new Property("numberOfSeries", "unsignedInt", "Number of Series in the Study. This value given may be larger than the number of series elements this Resource contains due to resource availability, security, or other factors. This element should be present if any series elements are present.", 0, 1, numberOfSeries));
2755        children.add(new Property("numberOfInstances", "unsignedInt", "Number of SOP Instances in Study. This value given may be larger than the number of instance elements this resource contains due to resource availability, security, or other factors. This element should be present if any instance elements are present.", 0, 1, numberOfInstances));
2756        children.add(new Property("procedureReference", "Reference(Procedure)", "The procedure which this ImagingStudy was part of.", 0, 1, procedureReference));
2757        children.add(new Property("procedureCode", "CodeableConcept", "The code for the performed procedure type.", 0, java.lang.Integer.MAX_VALUE, procedureCode));
2758        children.add(new Property("location", "Reference(Location)", "The principal physical location where the ImagingStudy was performed.", 0, 1, location));
2759        children.add(new Property("reasonCode", "CodeableConcept", "Description of clinical condition indicating why the ImagingStudy was requested.", 0, java.lang.Integer.MAX_VALUE, reasonCode));
2760        children.add(new Property("reasonReference", "Reference(Condition|Observation|Media|DiagnosticReport|DocumentReference)", "Indicates another resource whose existence justifies this Study.", 0, java.lang.Integer.MAX_VALUE, reasonReference));
2761        children.add(new Property("note", "Annotation", "Per the recommended DICOM mapping, this element is derived from the Study Description attribute (0008,1030). Observations or findings about the imaging study should be recorded in another resource, e.g. Observation, and not in this element.", 0, java.lang.Integer.MAX_VALUE, note));
2762        children.add(new Property("description", "string", "The Imaging Manager description of the study. Institution-generated description or classification of the Study (component) performed.", 0, 1, description));
2763        children.add(new Property("series", "", "Each study has one or more series of images or other content.", 0, java.lang.Integer.MAX_VALUE, series));
2764      }
2765
2766      @Override
2767      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
2768        switch (_hash) {
2769        case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "Identifiers for the ImagingStudy such as DICOM Study Instance UID, and Accession Number.", 0, java.lang.Integer.MAX_VALUE, identifier);
2770        case -892481550: /*status*/  return new Property("status", "code", "The current state of the ImagingStudy.", 0, 1, status);
2771        case -622722335: /*modality*/  return new Property("modality", "Coding", "A list of all the series.modality values that are actual acquisition modalities, i.e. those in the DICOM Context Group 29 (value set OID 1.2.840.10008.6.1.19).", 0, java.lang.Integer.MAX_VALUE, modality);
2772        case -1867885268: /*subject*/  return new Property("subject", "Reference(Patient|Device|Group)", "The subject, typically a patient, of the imaging study.", 0, 1, subject);
2773        case 1524132147: /*encounter*/  return new Property("encounter", "Reference(Encounter)", "The healthcare event (e.g. a patient and healthcare provider interaction) during which this ImagingStudy is made.", 0, 1, encounter);
2774        case -1897185151: /*started*/  return new Property("started", "dateTime", "Date and time the study started.", 0, 1, started);
2775        case -332612366: /*basedOn*/  return new Property("basedOn", "Reference(CarePlan|ServiceRequest|Appointment|AppointmentResponse|Task)", "A list of the diagnostic requests that resulted in this imaging study being performed.", 0, java.lang.Integer.MAX_VALUE, basedOn);
2776        case -722568161: /*referrer*/  return new Property("referrer", "Reference(Practitioner|PractitionerRole)", "The requesting/referring physician.", 0, 1, referrer);
2777        case -2008009094: /*interpreter*/  return new Property("interpreter", "Reference(Practitioner|PractitionerRole)", "Who read the study and interpreted the images or other content.", 0, java.lang.Integer.MAX_VALUE, interpreter);
2778        case 1741102485: /*endpoint*/  return new Property("endpoint", "Reference(Endpoint)", "The network service providing access (e.g., query, view, or retrieval) for the study. See implementation notes for information about using DICOM endpoints. A study-level endpoint applies to each series in the study, unless overridden by a series-level endpoint with the same Endpoint.connectionType.", 0, java.lang.Integer.MAX_VALUE, endpoint);
2779        case 1920000407: /*numberOfSeries*/  return new Property("numberOfSeries", "unsignedInt", "Number of Series in the Study. This value given may be larger than the number of series elements this Resource contains due to resource availability, security, or other factors. This element should be present if any series elements are present.", 0, 1, numberOfSeries);
2780        case -1043544226: /*numberOfInstances*/  return new Property("numberOfInstances", "unsignedInt", "Number of SOP Instances in Study. This value given may be larger than the number of instance elements this resource contains due to resource availability, security, or other factors. This element should be present if any instance elements are present.", 0, 1, numberOfInstances);
2781        case 881809848: /*procedureReference*/  return new Property("procedureReference", "Reference(Procedure)", "The procedure which this ImagingStudy was part of.", 0, 1, procedureReference);
2782        case -698023072: /*procedureCode*/  return new Property("procedureCode", "CodeableConcept", "The code for the performed procedure type.", 0, java.lang.Integer.MAX_VALUE, procedureCode);
2783        case 1901043637: /*location*/  return new Property("location", "Reference(Location)", "The principal physical location where the ImagingStudy was performed.", 0, 1, location);
2784        case 722137681: /*reasonCode*/  return new Property("reasonCode", "CodeableConcept", "Description of clinical condition indicating why the ImagingStudy was requested.", 0, java.lang.Integer.MAX_VALUE, reasonCode);
2785        case -1146218137: /*reasonReference*/  return new Property("reasonReference", "Reference(Condition|Observation|Media|DiagnosticReport|DocumentReference)", "Indicates another resource whose existence justifies this Study.", 0, java.lang.Integer.MAX_VALUE, reasonReference);
2786        case 3387378: /*note*/  return new Property("note", "Annotation", "Per the recommended DICOM mapping, this element is derived from the Study Description attribute (0008,1030). Observations or findings about the imaging study should be recorded in another resource, e.g. Observation, and not in this element.", 0, java.lang.Integer.MAX_VALUE, note);
2787        case -1724546052: /*description*/  return new Property("description", "string", "The Imaging Manager description of the study. Institution-generated description or classification of the Study (component) performed.", 0, 1, description);
2788        case -905838985: /*series*/  return new Property("series", "", "Each study has one or more series of images or other content.", 0, java.lang.Integer.MAX_VALUE, series);
2789        default: return super.getNamedProperty(_hash, _name, _checkValid);
2790        }
2791
2792      }
2793
2794      @Override
2795      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
2796        switch (hash) {
2797        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
2798        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<ImagingStudyStatus>
2799        case -622722335: /*modality*/ return this.modality == null ? new Base[0] : this.modality.toArray(new Base[this.modality.size()]); // Coding
2800        case -1867885268: /*subject*/ return this.subject == null ? new Base[0] : new Base[] {this.subject}; // Reference
2801        case 1524132147: /*encounter*/ return this.encounter == null ? new Base[0] : new Base[] {this.encounter}; // Reference
2802        case -1897185151: /*started*/ return this.started == null ? new Base[0] : new Base[] {this.started}; // DateTimeType
2803        case -332612366: /*basedOn*/ return this.basedOn == null ? new Base[0] : this.basedOn.toArray(new Base[this.basedOn.size()]); // Reference
2804        case -722568161: /*referrer*/ return this.referrer == null ? new Base[0] : new Base[] {this.referrer}; // Reference
2805        case -2008009094: /*interpreter*/ return this.interpreter == null ? new Base[0] : this.interpreter.toArray(new Base[this.interpreter.size()]); // Reference
2806        case 1741102485: /*endpoint*/ return this.endpoint == null ? new Base[0] : this.endpoint.toArray(new Base[this.endpoint.size()]); // Reference
2807        case 1920000407: /*numberOfSeries*/ return this.numberOfSeries == null ? new Base[0] : new Base[] {this.numberOfSeries}; // UnsignedIntType
2808        case -1043544226: /*numberOfInstances*/ return this.numberOfInstances == null ? new Base[0] : new Base[] {this.numberOfInstances}; // UnsignedIntType
2809        case 881809848: /*procedureReference*/ return this.procedureReference == null ? new Base[0] : new Base[] {this.procedureReference}; // Reference
2810        case -698023072: /*procedureCode*/ return this.procedureCode == null ? new Base[0] : this.procedureCode.toArray(new Base[this.procedureCode.size()]); // CodeableConcept
2811        case 1901043637: /*location*/ return this.location == null ? new Base[0] : new Base[] {this.location}; // Reference
2812        case 722137681: /*reasonCode*/ return this.reasonCode == null ? new Base[0] : this.reasonCode.toArray(new Base[this.reasonCode.size()]); // CodeableConcept
2813        case -1146218137: /*reasonReference*/ return this.reasonReference == null ? new Base[0] : this.reasonReference.toArray(new Base[this.reasonReference.size()]); // Reference
2814        case 3387378: /*note*/ return this.note == null ? new Base[0] : this.note.toArray(new Base[this.note.size()]); // Annotation
2815        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // StringType
2816        case -905838985: /*series*/ return this.series == null ? new Base[0] : this.series.toArray(new Base[this.series.size()]); // ImagingStudySeriesComponent
2817        default: return super.getProperty(hash, name, checkValid);
2818        }
2819
2820      }
2821
2822      @Override
2823      public Base setProperty(int hash, String name, Base value) throws FHIRException {
2824        switch (hash) {
2825        case -1618432855: // identifier
2826          this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier
2827          return value;
2828        case -892481550: // status
2829          value = new ImagingStudyStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
2830          this.status = (Enumeration) value; // Enumeration<ImagingStudyStatus>
2831          return value;
2832        case -622722335: // modality
2833          this.getModality().add(TypeConvertor.castToCoding(value)); // Coding
2834          return value;
2835        case -1867885268: // subject
2836          this.subject = TypeConvertor.castToReference(value); // Reference
2837          return value;
2838        case 1524132147: // encounter
2839          this.encounter = TypeConvertor.castToReference(value); // Reference
2840          return value;
2841        case -1897185151: // started
2842          this.started = TypeConvertor.castToDateTime(value); // DateTimeType
2843          return value;
2844        case -332612366: // basedOn
2845          this.getBasedOn().add(TypeConvertor.castToReference(value)); // Reference
2846          return value;
2847        case -722568161: // referrer
2848          this.referrer = TypeConvertor.castToReference(value); // Reference
2849          return value;
2850        case -2008009094: // interpreter
2851          this.getInterpreter().add(TypeConvertor.castToReference(value)); // Reference
2852          return value;
2853        case 1741102485: // endpoint
2854          this.getEndpoint().add(TypeConvertor.castToReference(value)); // Reference
2855          return value;
2856        case 1920000407: // numberOfSeries
2857          this.numberOfSeries = TypeConvertor.castToUnsignedInt(value); // UnsignedIntType
2858          return value;
2859        case -1043544226: // numberOfInstances
2860          this.numberOfInstances = TypeConvertor.castToUnsignedInt(value); // UnsignedIntType
2861          return value;
2862        case 881809848: // procedureReference
2863          this.procedureReference = TypeConvertor.castToReference(value); // Reference
2864          return value;
2865        case -698023072: // procedureCode
2866          this.getProcedureCode().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
2867          return value;
2868        case 1901043637: // location
2869          this.location = TypeConvertor.castToReference(value); // Reference
2870          return value;
2871        case 722137681: // reasonCode
2872          this.getReasonCode().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
2873          return value;
2874        case -1146218137: // reasonReference
2875          this.getReasonReference().add(TypeConvertor.castToReference(value)); // Reference
2876          return value;
2877        case 3387378: // note
2878          this.getNote().add(TypeConvertor.castToAnnotation(value)); // Annotation
2879          return value;
2880        case -1724546052: // description
2881          this.description = TypeConvertor.castToString(value); // StringType
2882          return value;
2883        case -905838985: // series
2884          this.getSeries().add((ImagingStudySeriesComponent) value); // ImagingStudySeriesComponent
2885          return value;
2886        default: return super.setProperty(hash, name, value);
2887        }
2888
2889      }
2890
2891      @Override
2892      public Base setProperty(String name, Base value) throws FHIRException {
2893        if (name.equals("identifier")) {
2894          this.getIdentifier().add(TypeConvertor.castToIdentifier(value));
2895        } else if (name.equals("status")) {
2896          value = new ImagingStudyStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
2897          this.status = (Enumeration) value; // Enumeration<ImagingStudyStatus>
2898        } else if (name.equals("modality")) {
2899          this.getModality().add(TypeConvertor.castToCoding(value));
2900        } else if (name.equals("subject")) {
2901          this.subject = TypeConvertor.castToReference(value); // Reference
2902        } else if (name.equals("encounter")) {
2903          this.encounter = TypeConvertor.castToReference(value); // Reference
2904        } else if (name.equals("started")) {
2905          this.started = TypeConvertor.castToDateTime(value); // DateTimeType
2906        } else if (name.equals("basedOn")) {
2907          this.getBasedOn().add(TypeConvertor.castToReference(value));
2908        } else if (name.equals("referrer")) {
2909          this.referrer = TypeConvertor.castToReference(value); // Reference
2910        } else if (name.equals("interpreter")) {
2911          this.getInterpreter().add(TypeConvertor.castToReference(value));
2912        } else if (name.equals("endpoint")) {
2913          this.getEndpoint().add(TypeConvertor.castToReference(value));
2914        } else if (name.equals("numberOfSeries")) {
2915          this.numberOfSeries = TypeConvertor.castToUnsignedInt(value); // UnsignedIntType
2916        } else if (name.equals("numberOfInstances")) {
2917          this.numberOfInstances = TypeConvertor.castToUnsignedInt(value); // UnsignedIntType
2918        } else if (name.equals("procedureReference")) {
2919          this.procedureReference = TypeConvertor.castToReference(value); // Reference
2920        } else if (name.equals("procedureCode")) {
2921          this.getProcedureCode().add(TypeConvertor.castToCodeableConcept(value));
2922        } else if (name.equals("location")) {
2923          this.location = TypeConvertor.castToReference(value); // Reference
2924        } else if (name.equals("reasonCode")) {
2925          this.getReasonCode().add(TypeConvertor.castToCodeableConcept(value));
2926        } else if (name.equals("reasonReference")) {
2927          this.getReasonReference().add(TypeConvertor.castToReference(value));
2928        } else if (name.equals("note")) {
2929          this.getNote().add(TypeConvertor.castToAnnotation(value));
2930        } else if (name.equals("description")) {
2931          this.description = TypeConvertor.castToString(value); // StringType
2932        } else if (name.equals("series")) {
2933          this.getSeries().add((ImagingStudySeriesComponent) value);
2934        } else
2935          return super.setProperty(name, value);
2936        return value;
2937      }
2938
2939      @Override
2940      public Base makeProperty(int hash, String name) throws FHIRException {
2941        switch (hash) {
2942        case -1618432855:  return addIdentifier(); 
2943        case -892481550:  return getStatusElement();
2944        case -622722335:  return addModality(); 
2945        case -1867885268:  return getSubject();
2946        case 1524132147:  return getEncounter();
2947        case -1897185151:  return getStartedElement();
2948        case -332612366:  return addBasedOn(); 
2949        case -722568161:  return getReferrer();
2950        case -2008009094:  return addInterpreter(); 
2951        case 1741102485:  return addEndpoint(); 
2952        case 1920000407:  return getNumberOfSeriesElement();
2953        case -1043544226:  return getNumberOfInstancesElement();
2954        case 881809848:  return getProcedureReference();
2955        case -698023072:  return addProcedureCode(); 
2956        case 1901043637:  return getLocation();
2957        case 722137681:  return addReasonCode(); 
2958        case -1146218137:  return addReasonReference(); 
2959        case 3387378:  return addNote(); 
2960        case -1724546052:  return getDescriptionElement();
2961        case -905838985:  return addSeries(); 
2962        default: return super.makeProperty(hash, name);
2963        }
2964
2965      }
2966
2967      @Override
2968      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
2969        switch (hash) {
2970        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
2971        case -892481550: /*status*/ return new String[] {"code"};
2972        case -622722335: /*modality*/ return new String[] {"Coding"};
2973        case -1867885268: /*subject*/ return new String[] {"Reference"};
2974        case 1524132147: /*encounter*/ return new String[] {"Reference"};
2975        case -1897185151: /*started*/ return new String[] {"dateTime"};
2976        case -332612366: /*basedOn*/ return new String[] {"Reference"};
2977        case -722568161: /*referrer*/ return new String[] {"Reference"};
2978        case -2008009094: /*interpreter*/ return new String[] {"Reference"};
2979        case 1741102485: /*endpoint*/ return new String[] {"Reference"};
2980        case 1920000407: /*numberOfSeries*/ return new String[] {"unsignedInt"};
2981        case -1043544226: /*numberOfInstances*/ return new String[] {"unsignedInt"};
2982        case 881809848: /*procedureReference*/ return new String[] {"Reference"};
2983        case -698023072: /*procedureCode*/ return new String[] {"CodeableConcept"};
2984        case 1901043637: /*location*/ return new String[] {"Reference"};
2985        case 722137681: /*reasonCode*/ return new String[] {"CodeableConcept"};
2986        case -1146218137: /*reasonReference*/ return new String[] {"Reference"};
2987        case 3387378: /*note*/ return new String[] {"Annotation"};
2988        case -1724546052: /*description*/ return new String[] {"string"};
2989        case -905838985: /*series*/ return new String[] {};
2990        default: return super.getTypesForProperty(hash, name);
2991        }
2992
2993      }
2994
2995      @Override
2996      public Base addChild(String name) throws FHIRException {
2997        if (name.equals("identifier")) {
2998          return addIdentifier();
2999        }
3000        else if (name.equals("status")) {
3001          throw new FHIRException("Cannot call addChild on a primitive type ImagingStudy.status");
3002        }
3003        else if (name.equals("modality")) {
3004          return addModality();
3005        }
3006        else if (name.equals("subject")) {
3007          this.subject = new Reference();
3008          return this.subject;
3009        }
3010        else if (name.equals("encounter")) {
3011          this.encounter = new Reference();
3012          return this.encounter;
3013        }
3014        else if (name.equals("started")) {
3015          throw new FHIRException("Cannot call addChild on a primitive type ImagingStudy.started");
3016        }
3017        else if (name.equals("basedOn")) {
3018          return addBasedOn();
3019        }
3020        else if (name.equals("referrer")) {
3021          this.referrer = new Reference();
3022          return this.referrer;
3023        }
3024        else if (name.equals("interpreter")) {
3025          return addInterpreter();
3026        }
3027        else if (name.equals("endpoint")) {
3028          return addEndpoint();
3029        }
3030        else if (name.equals("numberOfSeries")) {
3031          throw new FHIRException("Cannot call addChild on a primitive type ImagingStudy.numberOfSeries");
3032        }
3033        else if (name.equals("numberOfInstances")) {
3034          throw new FHIRException("Cannot call addChild on a primitive type ImagingStudy.numberOfInstances");
3035        }
3036        else if (name.equals("procedureReference")) {
3037          this.procedureReference = new Reference();
3038          return this.procedureReference;
3039        }
3040        else if (name.equals("procedureCode")) {
3041          return addProcedureCode();
3042        }
3043        else if (name.equals("location")) {
3044          this.location = new Reference();
3045          return this.location;
3046        }
3047        else if (name.equals("reasonCode")) {
3048          return addReasonCode();
3049        }
3050        else if (name.equals("reasonReference")) {
3051          return addReasonReference();
3052        }
3053        else if (name.equals("note")) {
3054          return addNote();
3055        }
3056        else if (name.equals("description")) {
3057          throw new FHIRException("Cannot call addChild on a primitive type ImagingStudy.description");
3058        }
3059        else if (name.equals("series")) {
3060          return addSeries();
3061        }
3062        else
3063          return super.addChild(name);
3064      }
3065
3066  public String fhirType() {
3067    return "ImagingStudy";
3068
3069  }
3070
3071      public ImagingStudy copy() {
3072        ImagingStudy dst = new ImagingStudy();
3073        copyValues(dst);
3074        return dst;
3075      }
3076
3077      public void copyValues(ImagingStudy dst) {
3078        super.copyValues(dst);
3079        if (identifier != null) {
3080          dst.identifier = new ArrayList<Identifier>();
3081          for (Identifier i : identifier)
3082            dst.identifier.add(i.copy());
3083        };
3084        dst.status = status == null ? null : status.copy();
3085        if (modality != null) {
3086          dst.modality = new ArrayList<Coding>();
3087          for (Coding i : modality)
3088            dst.modality.add(i.copy());
3089        };
3090        dst.subject = subject == null ? null : subject.copy();
3091        dst.encounter = encounter == null ? null : encounter.copy();
3092        dst.started = started == null ? null : started.copy();
3093        if (basedOn != null) {
3094          dst.basedOn = new ArrayList<Reference>();
3095          for (Reference i : basedOn)
3096            dst.basedOn.add(i.copy());
3097        };
3098        dst.referrer = referrer == null ? null : referrer.copy();
3099        if (interpreter != null) {
3100          dst.interpreter = new ArrayList<Reference>();
3101          for (Reference i : interpreter)
3102            dst.interpreter.add(i.copy());
3103        };
3104        if (endpoint != null) {
3105          dst.endpoint = new ArrayList<Reference>();
3106          for (Reference i : endpoint)
3107            dst.endpoint.add(i.copy());
3108        };
3109        dst.numberOfSeries = numberOfSeries == null ? null : numberOfSeries.copy();
3110        dst.numberOfInstances = numberOfInstances == null ? null : numberOfInstances.copy();
3111        dst.procedureReference = procedureReference == null ? null : procedureReference.copy();
3112        if (procedureCode != null) {
3113          dst.procedureCode = new ArrayList<CodeableConcept>();
3114          for (CodeableConcept i : procedureCode)
3115            dst.procedureCode.add(i.copy());
3116        };
3117        dst.location = location == null ? null : location.copy();
3118        if (reasonCode != null) {
3119          dst.reasonCode = new ArrayList<CodeableConcept>();
3120          for (CodeableConcept i : reasonCode)
3121            dst.reasonCode.add(i.copy());
3122        };
3123        if (reasonReference != null) {
3124          dst.reasonReference = new ArrayList<Reference>();
3125          for (Reference i : reasonReference)
3126            dst.reasonReference.add(i.copy());
3127        };
3128        if (note != null) {
3129          dst.note = new ArrayList<Annotation>();
3130          for (Annotation i : note)
3131            dst.note.add(i.copy());
3132        };
3133        dst.description = description == null ? null : description.copy();
3134        if (series != null) {
3135          dst.series = new ArrayList<ImagingStudySeriesComponent>();
3136          for (ImagingStudySeriesComponent i : series)
3137            dst.series.add(i.copy());
3138        };
3139      }
3140
3141      protected ImagingStudy typedCopy() {
3142        return copy();
3143      }
3144
3145      @Override
3146      public boolean equalsDeep(Base other_) {
3147        if (!super.equalsDeep(other_))
3148          return false;
3149        if (!(other_ instanceof ImagingStudy))
3150          return false;
3151        ImagingStudy o = (ImagingStudy) other_;
3152        return compareDeep(identifier, o.identifier, true) && compareDeep(status, o.status, true) && compareDeep(modality, o.modality, true)
3153           && compareDeep(subject, o.subject, true) && compareDeep(encounter, o.encounter, true) && compareDeep(started, o.started, true)
3154           && compareDeep(basedOn, o.basedOn, true) && compareDeep(referrer, o.referrer, true) && compareDeep(interpreter, o.interpreter, true)
3155           && compareDeep(endpoint, o.endpoint, true) && compareDeep(numberOfSeries, o.numberOfSeries, true)
3156           && compareDeep(numberOfInstances, o.numberOfInstances, true) && compareDeep(procedureReference, o.procedureReference, true)
3157           && compareDeep(procedureCode, o.procedureCode, true) && compareDeep(location, o.location, true)
3158           && compareDeep(reasonCode, o.reasonCode, true) && compareDeep(reasonReference, o.reasonReference, true)
3159           && compareDeep(note, o.note, true) && compareDeep(description, o.description, true) && compareDeep(series, o.series, true)
3160          ;
3161      }
3162
3163      @Override
3164      public boolean equalsShallow(Base other_) {
3165        if (!super.equalsShallow(other_))
3166          return false;
3167        if (!(other_ instanceof ImagingStudy))
3168          return false;
3169        ImagingStudy o = (ImagingStudy) other_;
3170        return compareValues(status, o.status, true) && compareValues(started, o.started, true) && compareValues(numberOfSeries, o.numberOfSeries, true)
3171           && compareValues(numberOfInstances, o.numberOfInstances, true) && compareValues(description, o.description, true)
3172          ;
3173      }
3174
3175      public boolean isEmpty() {
3176        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, status, modality
3177          , subject, encounter, started, basedOn, referrer, interpreter, endpoint, numberOfSeries
3178          , numberOfInstances, procedureReference, procedureCode, location, reasonCode, reasonReference
3179          , note, description, series);
3180      }
3181
3182  @Override
3183  public ResourceType getResourceType() {
3184    return ResourceType.ImagingStudy;
3185   }
3186
3187 /**
3188   * Search parameter: <b>basedon</b>
3189   * <p>
3190   * Description: <b>The order for the image</b><br>
3191   * Type: <b>reference</b><br>
3192   * Path: <b>ImagingStudy.basedOn</b><br>
3193   * </p>
3194   */
3195  @SearchParamDefinition(name="basedon", path="ImagingStudy.basedOn", description="The order for the image", type="reference", target={Appointment.class, AppointmentResponse.class, CarePlan.class, ServiceRequest.class, Task.class } )
3196  public static final String SP_BASEDON = "basedon";
3197 /**
3198   * <b>Fluent Client</b> search parameter constant for <b>basedon</b>
3199   * <p>
3200   * Description: <b>The order for the image</b><br>
3201   * Type: <b>reference</b><br>
3202   * Path: <b>ImagingStudy.basedOn</b><br>
3203   * </p>
3204   */
3205  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam BASEDON = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_BASEDON);
3206
3207/**
3208   * Constant for fluent queries to be used to add include statements. Specifies
3209   * the path value of "<b>ImagingStudy:basedon</b>".
3210   */
3211  public static final ca.uhn.fhir.model.api.Include INCLUDE_BASEDON = new ca.uhn.fhir.model.api.Include("ImagingStudy:basedon").toLocked();
3212
3213 /**
3214   * Search parameter: <b>bodysite</b>
3215   * <p>
3216   * Description: <b>The body site studied</b><br>
3217   * Type: <b>token</b><br>
3218   * Path: <b>ImagingStudy.series.bodySite</b><br>
3219   * </p>
3220   */
3221  @SearchParamDefinition(name="bodysite", path="ImagingStudy.series.bodySite", description="The body site studied", type="token" )
3222  public static final String SP_BODYSITE = "bodysite";
3223 /**
3224   * <b>Fluent Client</b> search parameter constant for <b>bodysite</b>
3225   * <p>
3226   * Description: <b>The body site studied</b><br>
3227   * Type: <b>token</b><br>
3228   * Path: <b>ImagingStudy.series.bodySite</b><br>
3229   * </p>
3230   */
3231  public static final ca.uhn.fhir.rest.gclient.TokenClientParam BODYSITE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_BODYSITE);
3232
3233 /**
3234   * Search parameter: <b>dicom-class</b>
3235   * <p>
3236   * Description: <b>The type of the instance</b><br>
3237   * Type: <b>token</b><br>
3238   * Path: <b>ImagingStudy.series.instance.sopClass</b><br>
3239   * </p>
3240   */
3241  @SearchParamDefinition(name="dicom-class", path="ImagingStudy.series.instance.sopClass", description="The type of the instance", type="token" )
3242  public static final String SP_DICOM_CLASS = "dicom-class";
3243 /**
3244   * <b>Fluent Client</b> search parameter constant for <b>dicom-class</b>
3245   * <p>
3246   * Description: <b>The type of the instance</b><br>
3247   * Type: <b>token</b><br>
3248   * Path: <b>ImagingStudy.series.instance.sopClass</b><br>
3249   * </p>
3250   */
3251  public static final ca.uhn.fhir.rest.gclient.TokenClientParam DICOM_CLASS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_DICOM_CLASS);
3252
3253 /**
3254   * Search parameter: <b>encounter</b>
3255   * <p>
3256   * Description: <b>The context of the study</b><br>
3257   * Type: <b>reference</b><br>
3258   * Path: <b>ImagingStudy.encounter</b><br>
3259   * </p>
3260   */
3261  @SearchParamDefinition(name="encounter", path="ImagingStudy.encounter", description="The context of the study", type="reference", target={Encounter.class } )
3262  public static final String SP_ENCOUNTER = "encounter";
3263 /**
3264   * <b>Fluent Client</b> search parameter constant for <b>encounter</b>
3265   * <p>
3266   * Description: <b>The context of the study</b><br>
3267   * Type: <b>reference</b><br>
3268   * Path: <b>ImagingStudy.encounter</b><br>
3269   * </p>
3270   */
3271  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam ENCOUNTER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_ENCOUNTER);
3272
3273/**
3274   * Constant for fluent queries to be used to add include statements. Specifies
3275   * the path value of "<b>ImagingStudy:encounter</b>".
3276   */
3277  public static final ca.uhn.fhir.model.api.Include INCLUDE_ENCOUNTER = new ca.uhn.fhir.model.api.Include("ImagingStudy:encounter").toLocked();
3278
3279 /**
3280   * Search parameter: <b>endpoint</b>
3281   * <p>
3282   * Description: <b>The endpoint for the study or series</b><br>
3283   * Type: <b>reference</b><br>
3284   * Path: <b>ImagingStudy.endpoint | ImagingStudy.series.endpoint</b><br>
3285   * </p>
3286   */
3287  @SearchParamDefinition(name="endpoint", path="ImagingStudy.endpoint | ImagingStudy.series.endpoint", description="The endpoint for the study or series", type="reference", target={Endpoint.class } )
3288  public static final String SP_ENDPOINT = "endpoint";
3289 /**
3290   * <b>Fluent Client</b> search parameter constant for <b>endpoint</b>
3291   * <p>
3292   * Description: <b>The endpoint for the study or series</b><br>
3293   * Type: <b>reference</b><br>
3294   * Path: <b>ImagingStudy.endpoint | ImagingStudy.series.endpoint</b><br>
3295   * </p>
3296   */
3297  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam ENDPOINT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_ENDPOINT);
3298
3299/**
3300   * Constant for fluent queries to be used to add include statements. Specifies
3301   * the path value of "<b>ImagingStudy:endpoint</b>".
3302   */
3303  public static final ca.uhn.fhir.model.api.Include INCLUDE_ENDPOINT = new ca.uhn.fhir.model.api.Include("ImagingStudy:endpoint").toLocked();
3304
3305 /**
3306   * Search parameter: <b>instance</b>
3307   * <p>
3308   * Description: <b>SOP Instance UID for an instance</b><br>
3309   * Type: <b>token</b><br>
3310   * Path: <b>ImagingStudy.series.instance.uid</b><br>
3311   * </p>
3312   */
3313  @SearchParamDefinition(name="instance", path="ImagingStudy.series.instance.uid", description="SOP Instance UID for an instance", type="token" )
3314  public static final String SP_INSTANCE = "instance";
3315 /**
3316   * <b>Fluent Client</b> search parameter constant for <b>instance</b>
3317   * <p>
3318   * Description: <b>SOP Instance UID for an instance</b><br>
3319   * Type: <b>token</b><br>
3320   * Path: <b>ImagingStudy.series.instance.uid</b><br>
3321   * </p>
3322   */
3323  public static final ca.uhn.fhir.rest.gclient.TokenClientParam INSTANCE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_INSTANCE);
3324
3325 /**
3326   * Search parameter: <b>interpreter</b>
3327   * <p>
3328   * Description: <b>Who interpreted the images</b><br>
3329   * Type: <b>reference</b><br>
3330   * Path: <b>ImagingStudy.interpreter</b><br>
3331   * </p>
3332   */
3333  @SearchParamDefinition(name="interpreter", path="ImagingStudy.interpreter", description="Who interpreted the images", type="reference", target={Practitioner.class, PractitionerRole.class } )
3334  public static final String SP_INTERPRETER = "interpreter";
3335 /**
3336   * <b>Fluent Client</b> search parameter constant for <b>interpreter</b>
3337   * <p>
3338   * Description: <b>Who interpreted the images</b><br>
3339   * Type: <b>reference</b><br>
3340   * Path: <b>ImagingStudy.interpreter</b><br>
3341   * </p>
3342   */
3343  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam INTERPRETER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_INTERPRETER);
3344
3345/**
3346   * Constant for fluent queries to be used to add include statements. Specifies
3347   * the path value of "<b>ImagingStudy:interpreter</b>".
3348   */
3349  public static final ca.uhn.fhir.model.api.Include INCLUDE_INTERPRETER = new ca.uhn.fhir.model.api.Include("ImagingStudy:interpreter").toLocked();
3350
3351 /**
3352   * Search parameter: <b>modality</b>
3353   * <p>
3354   * Description: <b>The modality of the series</b><br>
3355   * Type: <b>token</b><br>
3356   * Path: <b>ImagingStudy.series.modality</b><br>
3357   * </p>
3358   */
3359  @SearchParamDefinition(name="modality", path="ImagingStudy.series.modality", description="The modality of the series", type="token" )
3360  public static final String SP_MODALITY = "modality";
3361 /**
3362   * <b>Fluent Client</b> search parameter constant for <b>modality</b>
3363   * <p>
3364   * Description: <b>The modality of the series</b><br>
3365   * Type: <b>token</b><br>
3366   * Path: <b>ImagingStudy.series.modality</b><br>
3367   * </p>
3368   */
3369  public static final ca.uhn.fhir.rest.gclient.TokenClientParam MODALITY = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_MODALITY);
3370
3371 /**
3372   * Search parameter: <b>performer</b>
3373   * <p>
3374   * Description: <b>The person who performed the study</b><br>
3375   * Type: <b>reference</b><br>
3376   * Path: <b>ImagingStudy.series.performer.actor</b><br>
3377   * </p>
3378   */
3379  @SearchParamDefinition(name="performer", path="ImagingStudy.series.performer.actor", description="The person who performed the study", type="reference", target={CareTeam.class, Device.class, Organization.class, Patient.class, Practitioner.class, PractitionerRole.class, RelatedPerson.class } )
3380  public static final String SP_PERFORMER = "performer";
3381 /**
3382   * <b>Fluent Client</b> search parameter constant for <b>performer</b>
3383   * <p>
3384   * Description: <b>The person who performed the study</b><br>
3385   * Type: <b>reference</b><br>
3386   * Path: <b>ImagingStudy.series.performer.actor</b><br>
3387   * </p>
3388   */
3389  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PERFORMER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PERFORMER);
3390
3391/**
3392   * Constant for fluent queries to be used to add include statements. Specifies
3393   * the path value of "<b>ImagingStudy:performer</b>".
3394   */
3395  public static final ca.uhn.fhir.model.api.Include INCLUDE_PERFORMER = new ca.uhn.fhir.model.api.Include("ImagingStudy:performer").toLocked();
3396
3397 /**
3398   * Search parameter: <b>reason</b>
3399   * <p>
3400   * Description: <b>The reason for the study</b><br>
3401   * Type: <b>token</b><br>
3402   * Path: <b>ImagingStudy.reasonCode</b><br>
3403   * </p>
3404   */
3405  @SearchParamDefinition(name="reason", path="ImagingStudy.reasonCode", description="The reason for the study", type="token" )
3406  public static final String SP_REASON = "reason";
3407 /**
3408   * <b>Fluent Client</b> search parameter constant for <b>reason</b>
3409   * <p>
3410   * Description: <b>The reason for the study</b><br>
3411   * Type: <b>token</b><br>
3412   * Path: <b>ImagingStudy.reasonCode</b><br>
3413   * </p>
3414   */
3415  public static final ca.uhn.fhir.rest.gclient.TokenClientParam REASON = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_REASON);
3416
3417 /**
3418   * Search parameter: <b>referrer</b>
3419   * <p>
3420   * Description: <b>The referring physician</b><br>
3421   * Type: <b>reference</b><br>
3422   * Path: <b>ImagingStudy.referrer</b><br>
3423   * </p>
3424   */
3425  @SearchParamDefinition(name="referrer", path="ImagingStudy.referrer", description="The referring physician", type="reference", target={Practitioner.class, PractitionerRole.class } )
3426  public static final String SP_REFERRER = "referrer";
3427 /**
3428   * <b>Fluent Client</b> search parameter constant for <b>referrer</b>
3429   * <p>
3430   * Description: <b>The referring physician</b><br>
3431   * Type: <b>reference</b><br>
3432   * Path: <b>ImagingStudy.referrer</b><br>
3433   * </p>
3434   */
3435  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam REFERRER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_REFERRER);
3436
3437/**
3438   * Constant for fluent queries to be used to add include statements. Specifies
3439   * the path value of "<b>ImagingStudy:referrer</b>".
3440   */
3441  public static final ca.uhn.fhir.model.api.Include INCLUDE_REFERRER = new ca.uhn.fhir.model.api.Include("ImagingStudy:referrer").toLocked();
3442
3443 /**
3444   * Search parameter: <b>series</b>
3445   * <p>
3446   * Description: <b>DICOM Series Instance UID for a series</b><br>
3447   * Type: <b>token</b><br>
3448   * Path: <b>ImagingStudy.series.uid</b><br>
3449   * </p>
3450   */
3451  @SearchParamDefinition(name="series", path="ImagingStudy.series.uid", description="DICOM Series Instance UID for a series", type="token" )
3452  public static final String SP_SERIES = "series";
3453 /**
3454   * <b>Fluent Client</b> search parameter constant for <b>series</b>
3455   * <p>
3456   * Description: <b>DICOM Series Instance UID for a series</b><br>
3457   * Type: <b>token</b><br>
3458   * Path: <b>ImagingStudy.series.uid</b><br>
3459   * </p>
3460   */
3461  public static final ca.uhn.fhir.rest.gclient.TokenClientParam SERIES = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_SERIES);
3462
3463 /**
3464   * Search parameter: <b>started</b>
3465   * <p>
3466   * Description: <b>When the study was started</b><br>
3467   * Type: <b>date</b><br>
3468   * Path: <b>ImagingStudy.started</b><br>
3469   * </p>
3470   */
3471  @SearchParamDefinition(name="started", path="ImagingStudy.started", description="When the study was started", type="date" )
3472  public static final String SP_STARTED = "started";
3473 /**
3474   * <b>Fluent Client</b> search parameter constant for <b>started</b>
3475   * <p>
3476   * Description: <b>When the study was started</b><br>
3477   * Type: <b>date</b><br>
3478   * Path: <b>ImagingStudy.started</b><br>
3479   * </p>
3480   */
3481  public static final ca.uhn.fhir.rest.gclient.DateClientParam STARTED = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_STARTED);
3482
3483 /**
3484   * Search parameter: <b>status</b>
3485   * <p>
3486   * Description: <b>The status of the study</b><br>
3487   * Type: <b>token</b><br>
3488   * Path: <b>ImagingStudy.status</b><br>
3489   * </p>
3490   */
3491  @SearchParamDefinition(name="status", path="ImagingStudy.status", description="The status of the study", type="token" )
3492  public static final String SP_STATUS = "status";
3493 /**
3494   * <b>Fluent Client</b> search parameter constant for <b>status</b>
3495   * <p>
3496   * Description: <b>The status of the study</b><br>
3497   * Type: <b>token</b><br>
3498   * Path: <b>ImagingStudy.status</b><br>
3499   * </p>
3500   */
3501  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
3502
3503 /**
3504   * Search parameter: <b>subject</b>
3505   * <p>
3506   * Description: <b>Who the study is about</b><br>
3507   * Type: <b>reference</b><br>
3508   * Path: <b>ImagingStudy.subject</b><br>
3509   * </p>
3510   */
3511  @SearchParamDefinition(name="subject", path="ImagingStudy.subject", description="Who the study is about", type="reference", target={Device.class, Group.class, Patient.class } )
3512  public static final String SP_SUBJECT = "subject";
3513 /**
3514   * <b>Fluent Client</b> search parameter constant for <b>subject</b>
3515   * <p>
3516   * Description: <b>Who the study is about</b><br>
3517   * Type: <b>reference</b><br>
3518   * Path: <b>ImagingStudy.subject</b><br>
3519   * </p>
3520   */
3521  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SUBJECT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SUBJECT);
3522
3523/**
3524   * Constant for fluent queries to be used to add include statements. Specifies
3525   * the path value of "<b>ImagingStudy:subject</b>".
3526   */
3527  public static final ca.uhn.fhir.model.api.Include INCLUDE_SUBJECT = new ca.uhn.fhir.model.api.Include("ImagingStudy:subject").toLocked();
3528
3529 /**
3530   * Search parameter: <b>identifier</b>
3531   * <p>
3532   * Description: <b>Multiple Resources: 
3533
3534* [AllergyIntolerance](allergyintolerance.html): External ids for this item
3535* [CarePlan](careplan.html): External Ids for this plan
3536* [CareTeam](careteam.html): External Ids for this team
3537* [Composition](composition.html): Version-independent identifier for the Composition
3538* [Condition](condition.html): A unique identifier of the condition record
3539* [Consent](consent.html): Identifier for this record (external references)
3540* [DetectedIssue](detectedissue.html): Unique id for the detected issue
3541* [DeviceRequest](devicerequest.html): Business identifier for request/order
3542* [DiagnosticReport](diagnosticreport.html): An identifier for the report
3543* [DocumentManifest](documentmanifest.html): Unique Identifier for the set of documents
3544* [DocumentReference](documentreference.html): Master Version Specific Identifier
3545* [Encounter](encounter.html): Identifier(s) by which this encounter is known
3546* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare
3547* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier
3548* [Goal](goal.html): External Ids for this goal
3549* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID and Accession number
3550* [Immunization](immunization.html): Business identifier
3551* [List](list.html): Business identifier
3552* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier
3553* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier
3554* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier
3555* [MedicationStatement](medicationstatement.html): Return statements with this external identifier
3556* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier
3557* [Observation](observation.html): The unique id for a particular observation
3558* [Procedure](procedure.html): A unique identifier for a procedure
3559* [RiskAssessment](riskassessment.html): Unique identifier for the assessment
3560* [ServiceRequest](servicerequest.html): Identifiers assigned to this order
3561* [SupplyDelivery](supplydelivery.html): External identifier
3562* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest
3563* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier
3564</b><br>
3565   * Type: <b>token</b><br>
3566   * Path: <b>AllergyIntolerance.identifier | CarePlan.identifier | CareTeam.identifier | Composition.identifier | Condition.identifier | Consent.identifier | DetectedIssue.identifier | DeviceRequest.identifier | DiagnosticReport.identifier | DocumentManifest.masterIdentifier | DocumentManifest.identifier | DocumentReference.masterIdentifier | DocumentReference.identifier | Encounter.identifier | EpisodeOfCare.identifier | FamilyMemberHistory.identifier | Goal.identifier | ImagingStudy.identifier | Immunization.identifier | List.identifier | MedicationAdministration.identifier | MedicationDispense.identifier | MedicationRequest.identifier | MedicationStatement.identifier | NutritionOrder.identifier | Observation.identifier | Procedure.identifier | RiskAssessment.identifier | ServiceRequest.identifier | SupplyDelivery.identifier | SupplyRequest.identifier | VisionPrescription.identifier</b><br>
3567   * </p>
3568   */
3569  @SearchParamDefinition(name="identifier", path="AllergyIntolerance.identifier | CarePlan.identifier | CareTeam.identifier | Composition.identifier | Condition.identifier | Consent.identifier | DetectedIssue.identifier | DeviceRequest.identifier | DiagnosticReport.identifier | DocumentManifest.masterIdentifier | DocumentManifest.identifier | DocumentReference.masterIdentifier | DocumentReference.identifier | Encounter.identifier | EpisodeOfCare.identifier | FamilyMemberHistory.identifier | Goal.identifier | ImagingStudy.identifier | Immunization.identifier | List.identifier | MedicationAdministration.identifier | MedicationDispense.identifier | MedicationRequest.identifier | MedicationStatement.identifier | NutritionOrder.identifier | Observation.identifier | Procedure.identifier | RiskAssessment.identifier | ServiceRequest.identifier | SupplyDelivery.identifier | SupplyRequest.identifier | VisionPrescription.identifier", description="Multiple Resources: \r\n\r\n* [AllergyIntolerance](allergyintolerance.html): External ids for this item\r\n* [CarePlan](careplan.html): External Ids for this plan\r\n* [CareTeam](careteam.html): External Ids for this team\r\n* [Composition](composition.html): Version-independent identifier for the Composition\r\n* [Condition](condition.html): A unique identifier of the condition record\r\n* [Consent](consent.html): Identifier for this record (external references)\r\n* [DetectedIssue](detectedissue.html): Unique id for the detected issue\r\n* [DeviceRequest](devicerequest.html): Business identifier for request/order\r\n* [DiagnosticReport](diagnosticreport.html): An identifier for the report\r\n* [DocumentManifest](documentmanifest.html): Unique Identifier for the set of documents\r\n* [DocumentReference](documentreference.html): Master Version Specific Identifier\r\n* [Encounter](encounter.html): Identifier(s) by which this encounter is known\r\n* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare\r\n* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier\r\n* [Goal](goal.html): External Ids for this goal\r\n* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID and Accession number\r\n* [Immunization](immunization.html): Business identifier\r\n* [List](list.html): Business identifier\r\n* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier\r\n* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier\r\n* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier\r\n* [MedicationStatement](medicationstatement.html): Return statements with this external identifier\r\n* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier\r\n* [Observation](observation.html): The unique id for a particular observation\r\n* [Procedure](procedure.html): A unique identifier for a procedure\r\n* [RiskAssessment](riskassessment.html): Unique identifier for the assessment\r\n* [ServiceRequest](servicerequest.html): Identifiers assigned to this order\r\n* [SupplyDelivery](supplydelivery.html): External identifier\r\n* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest\r\n* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier\r\n", type="token" )
3570  public static final String SP_IDENTIFIER = "identifier";
3571 /**
3572   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
3573   * <p>
3574   * Description: <b>Multiple Resources: 
3575
3576* [AllergyIntolerance](allergyintolerance.html): External ids for this item
3577* [CarePlan](careplan.html): External Ids for this plan
3578* [CareTeam](careteam.html): External Ids for this team
3579* [Composition](composition.html): Version-independent identifier for the Composition
3580* [Condition](condition.html): A unique identifier of the condition record
3581* [Consent](consent.html): Identifier for this record (external references)
3582* [DetectedIssue](detectedissue.html): Unique id for the detected issue
3583* [DeviceRequest](devicerequest.html): Business identifier for request/order
3584* [DiagnosticReport](diagnosticreport.html): An identifier for the report
3585* [DocumentManifest](documentmanifest.html): Unique Identifier for the set of documents
3586* [DocumentReference](documentreference.html): Master Version Specific Identifier
3587* [Encounter](encounter.html): Identifier(s) by which this encounter is known
3588* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare
3589* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier
3590* [Goal](goal.html): External Ids for this goal
3591* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID and Accession number
3592* [Immunization](immunization.html): Business identifier
3593* [List](list.html): Business identifier
3594* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier
3595* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier
3596* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier
3597* [MedicationStatement](medicationstatement.html): Return statements with this external identifier
3598* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier
3599* [Observation](observation.html): The unique id for a particular observation
3600* [Procedure](procedure.html): A unique identifier for a procedure
3601* [RiskAssessment](riskassessment.html): Unique identifier for the assessment
3602* [ServiceRequest](servicerequest.html): Identifiers assigned to this order
3603* [SupplyDelivery](supplydelivery.html): External identifier
3604* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest
3605* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier
3606</b><br>
3607   * Type: <b>token</b><br>
3608   * Path: <b>AllergyIntolerance.identifier | CarePlan.identifier | CareTeam.identifier | Composition.identifier | Condition.identifier | Consent.identifier | DetectedIssue.identifier | DeviceRequest.identifier | DiagnosticReport.identifier | DocumentManifest.masterIdentifier | DocumentManifest.identifier | DocumentReference.masterIdentifier | DocumentReference.identifier | Encounter.identifier | EpisodeOfCare.identifier | FamilyMemberHistory.identifier | Goal.identifier | ImagingStudy.identifier | Immunization.identifier | List.identifier | MedicationAdministration.identifier | MedicationDispense.identifier | MedicationRequest.identifier | MedicationStatement.identifier | NutritionOrder.identifier | Observation.identifier | Procedure.identifier | RiskAssessment.identifier | ServiceRequest.identifier | SupplyDelivery.identifier | SupplyRequest.identifier | VisionPrescription.identifier</b><br>
3609   * </p>
3610   */
3611  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
3612
3613 /**
3614   * Search parameter: <b>patient</b>
3615   * <p>
3616   * Description: <b>Multiple Resources: 
3617
3618* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for
3619* [CarePlan](careplan.html): Who the care plan is for
3620* [CareTeam](careteam.html): Who care team is for
3621* [ClinicalImpression](clinicalimpression.html): Patient or group assessed
3622* [Composition](composition.html): Who and/or what the composition is about
3623* [Condition](condition.html): Who has the condition?
3624* [Consent](consent.html): Who the consent applies to
3625* [DetectedIssue](detectedissue.html): Associated patient
3626* [DeviceRequest](devicerequest.html): Individual the service is ordered for
3627* [DeviceUseStatement](deviceusestatement.html): Search by subject - a patient
3628* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient
3629* [DocumentManifest](documentmanifest.html): The subject of the set of documents
3630* [DocumentReference](documentreference.html): Who/what is the subject of the document
3631* [Encounter](encounter.html): The patient or group present at the encounter
3632* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care
3633* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for
3634* [Flag](flag.html): The identity of a subject to list flags for
3635* [Goal](goal.html): Who this goal is intended for
3636* [ImagingStudy](imagingstudy.html): Who the study is about
3637* [Immunization](immunization.html): The patient for the vaccination record
3638* [List](list.html): If all resources have the same subject
3639* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for
3640* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for
3641* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient
3642* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.
3643* [NutritionOrder](nutritionorder.html): The identity of the person who requires the diet, formula or nutritional supplement
3644* [Observation](observation.html): The subject that the observation is about (if patient)
3645* [Procedure](procedure.html): Search by subject - a patient
3646* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?
3647* [ServiceRequest](servicerequest.html): Search by subject - a patient
3648* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied
3649* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for
3650</b><br>
3651   * Type: <b>reference</b><br>
3652   * Path: <b>AllergyIntolerance.patient | CarePlan.subject.where(resolve() is Patient) | CareTeam.subject.where(resolve() is Patient) | ClinicalImpression.subject.where(resolve() is Patient) | Composition.subject.where(resolve() is Patient) | Condition.subject.where(resolve() is Patient) | Consent.patient | DetectedIssue.patient | DeviceRequest.subject.where(resolve() is Patient) | DeviceUseStatement.subject.where(resolve() is Patient) | DiagnosticReport.subject.where(resolve() is Patient) | DocumentManifest.subject.where(resolve() is Patient) | DocumentReference.subject.where(resolve() is Patient) | Encounter.subject.where(resolve() is Patient) | EpisodeOfCare.patient | FamilyMemberHistory.patient | Flag.subject.where(resolve() is Patient) | Goal.subject.where(resolve() is Patient) | ImagingStudy.subject.where(resolve() is Patient) | Immunization.patient | List.subject.where(resolve() is Patient) | MedicationAdministration.subject.where(resolve() is Patient) | MedicationDispense.subject.where(resolve() is Patient) | MedicationRequest.subject.where(resolve() is Patient) | MedicationStatement.subject.where(resolve() is Patient) | NutritionOrder.patient | Observation.subject.where(resolve() is Patient) | Procedure.subject.where(resolve() is Patient) | RiskAssessment.subject.where(resolve() is Patient) | ServiceRequest.subject.where(resolve() is Patient) | SupplyDelivery.patient | VisionPrescription.patient</b><br>
3653   * </p>
3654   */
3655  @SearchParamDefinition(name="patient", path="AllergyIntolerance.patient | CarePlan.subject.where(resolve() is Patient) | CareTeam.subject.where(resolve() is Patient) | ClinicalImpression.subject.where(resolve() is Patient) | Composition.subject.where(resolve() is Patient) | Condition.subject.where(resolve() is Patient) | Consent.patient | DetectedIssue.patient | DeviceRequest.subject.where(resolve() is Patient) | DeviceUseStatement.subject.where(resolve() is Patient) | DiagnosticReport.subject.where(resolve() is Patient) | DocumentManifest.subject.where(resolve() is Patient) | DocumentReference.subject.where(resolve() is Patient) | Encounter.subject.where(resolve() is Patient) | EpisodeOfCare.patient | FamilyMemberHistory.patient | Flag.subject.where(resolve() is Patient) | Goal.subject.where(resolve() is Patient) | ImagingStudy.subject.where(resolve() is Patient) | Immunization.patient | List.subject.where(resolve() is Patient) | MedicationAdministration.subject.where(resolve() is Patient) | MedicationDispense.subject.where(resolve() is Patient) | MedicationRequest.subject.where(resolve() is Patient) | MedicationStatement.subject.where(resolve() is Patient) | NutritionOrder.patient | Observation.subject.where(resolve() is Patient) | Procedure.subject.where(resolve() is Patient) | RiskAssessment.subject.where(resolve() is Patient) | ServiceRequest.subject.where(resolve() is Patient) | SupplyDelivery.patient | VisionPrescription.patient", description="Multiple Resources: \r\n\r\n* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for\r\n* [CarePlan](careplan.html): Who the care plan is for\r\n* [CareTeam](careteam.html): Who care team is for\r\n* [ClinicalImpression](clinicalimpression.html): Patient or group assessed\r\n* [Composition](composition.html): Who and/or what the composition is about\r\n* [Condition](condition.html): Who has the condition?\r\n* [Consent](consent.html): Who the consent applies to\r\n* [DetectedIssue](detectedissue.html): Associated patient\r\n* [DeviceRequest](devicerequest.html): Individual the service is ordered for\r\n* [DeviceUseStatement](deviceusestatement.html): Search by subject - a patient\r\n* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient\r\n* [DocumentManifest](documentmanifest.html): The subject of the set of documents\r\n* [DocumentReference](documentreference.html): Who/what is the subject of the document\r\n* [Encounter](encounter.html): The patient or group present at the encounter\r\n* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care\r\n* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for\r\n* [Flag](flag.html): The identity of a subject to list flags for\r\n* [Goal](goal.html): Who this goal is intended for\r\n* [ImagingStudy](imagingstudy.html): Who the study is about\r\n* [Immunization](immunization.html): The patient for the vaccination record\r\n* [List](list.html): If all resources have the same subject\r\n* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for\r\n* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for\r\n* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient\r\n* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.\r\n* [NutritionOrder](nutritionorder.html): The identity of the person who requires the diet, formula or nutritional supplement\r\n* [Observation](observation.html): The subject that the observation is about (if patient)\r\n* [Procedure](procedure.html): Search by subject - a patient\r\n* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?\r\n* [ServiceRequest](servicerequest.html): Search by subject - a patient\r\n* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied\r\n* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for\r\n", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Patient") }, target={Account.class, ActivityDefinition.class, AdministrableProductDefinition.class, AdverseEvent.class, AllergyIntolerance.class, Appointment.class, AppointmentResponse.class, AuditEvent.class, Basic.class, Binary.class, BiologicallyDerivedProduct.class, BodyStructure.class, Bundle.class, CapabilityStatement.class, CarePlan.class, CareTeam.class, CatalogEntry.class, ChargeItem.class, ChargeItemDefinition.class, Citation.class, Claim.class, ClaimResponse.class, ClinicalImpression.class, ClinicalUseDefinition.class, CodeSystem.class, Communication.class, CommunicationRequest.class, CompartmentDefinition.class, Composition.class, ConceptMap.class, Condition.class, Consent.class, Contract.class, Coverage.class, CoverageEligibilityRequest.class, CoverageEligibilityResponse.class, DetectedIssue.class, Device.class, DeviceDefinition.class, DeviceMetric.class, DeviceRequest.class, DeviceUseStatement.class, DiagnosticReport.class, DocumentManifest.class, DocumentReference.class, Encounter.class, Endpoint.class, EnrollmentRequest.class, EnrollmentResponse.class, EpisodeOfCare.class, EventDefinition.class, Evidence.class, EvidenceReport.class, EvidenceVariable.class, ExampleScenario.class, ExplanationOfBenefit.class, FamilyMemberHistory.class, Flag.class, Goal.class, GraphDefinition.class, Group.class, GuidanceResponse.class, HealthcareService.class, ImagingStudy.class, Immunization.class, ImmunizationEvaluation.class, ImmunizationRecommendation.class, ImplementationGuide.class, Ingredient.class, InsurancePlan.class, Invoice.class, Library.class, Linkage.class, ListResource.class, Location.class, ManufacturedItemDefinition.class, Measure.class, MeasureReport.class, Media.class, Medication.class, MedicationAdministration.class, MedicationDispense.class, MedicationKnowledge.class, MedicationRequest.class, MedicationStatement.class, MedicinalProductDefinition.class, MessageDefinition.class, MessageHeader.class, MolecularSequence.class, NamingSystem.class, NutritionOrder.class, NutritionProduct.class, Observation.class, ObservationDefinition.class, OperationDefinition.class, OperationOutcome.class, Organization.class, OrganizationAffiliation.class, PackagedProductDefinition.class, Patient.class, PaymentNotice.class, PaymentReconciliation.class, Person.class, PlanDefinition.class, Practitioner.class, PractitionerRole.class, Procedure.class, Provenance.class, Questionnaire.class, QuestionnaireResponse.class, RegulatedAuthorization.class, RelatedPerson.class, RequestGroup.class, ResearchDefinition.class, ResearchElementDefinition.class, ResearchStudy.class, ResearchSubject.class, RiskAssessment.class, Schedule.class, SearchParameter.class, ServiceRequest.class, Slot.class, Specimen.class, SpecimenDefinition.class, StructureDefinition.class, StructureMap.class, Subscription.class, SubscriptionStatus.class, SubscriptionTopic.class, Substance.class, SubstanceDefinition.class, SupplyDelivery.class, SupplyRequest.class, Task.class, TerminologyCapabilities.class, TestReport.class, TestScript.class, ValueSet.class, VerificationResult.class, VisionPrescription.class } )
3656  public static final String SP_PATIENT = "patient";
3657 /**
3658   * <b>Fluent Client</b> search parameter constant for <b>patient</b>
3659   * <p>
3660   * Description: <b>Multiple Resources: 
3661
3662* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for
3663* [CarePlan](careplan.html): Who the care plan is for
3664* [CareTeam](careteam.html): Who care team is for
3665* [ClinicalImpression](clinicalimpression.html): Patient or group assessed
3666* [Composition](composition.html): Who and/or what the composition is about
3667* [Condition](condition.html): Who has the condition?
3668* [Consent](consent.html): Who the consent applies to
3669* [DetectedIssue](detectedissue.html): Associated patient
3670* [DeviceRequest](devicerequest.html): Individual the service is ordered for
3671* [DeviceUseStatement](deviceusestatement.html): Search by subject - a patient
3672* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient
3673* [DocumentManifest](documentmanifest.html): The subject of the set of documents
3674* [DocumentReference](documentreference.html): Who/what is the subject of the document
3675* [Encounter](encounter.html): The patient or group present at the encounter
3676* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care
3677* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for
3678* [Flag](flag.html): The identity of a subject to list flags for
3679* [Goal](goal.html): Who this goal is intended for
3680* [ImagingStudy](imagingstudy.html): Who the study is about
3681* [Immunization](immunization.html): The patient for the vaccination record
3682* [List](list.html): If all resources have the same subject
3683* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for
3684* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for
3685* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient
3686* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.
3687* [NutritionOrder](nutritionorder.html): The identity of the person who requires the diet, formula or nutritional supplement
3688* [Observation](observation.html): The subject that the observation is about (if patient)
3689* [Procedure](procedure.html): Search by subject - a patient
3690* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?
3691* [ServiceRequest](servicerequest.html): Search by subject - a patient
3692* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied
3693* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for
3694</b><br>
3695   * Type: <b>reference</b><br>
3696   * Path: <b>AllergyIntolerance.patient | CarePlan.subject.where(resolve() is Patient) | CareTeam.subject.where(resolve() is Patient) | ClinicalImpression.subject.where(resolve() is Patient) | Composition.subject.where(resolve() is Patient) | Condition.subject.where(resolve() is Patient) | Consent.patient | DetectedIssue.patient | DeviceRequest.subject.where(resolve() is Patient) | DeviceUseStatement.subject.where(resolve() is Patient) | DiagnosticReport.subject.where(resolve() is Patient) | DocumentManifest.subject.where(resolve() is Patient) | DocumentReference.subject.where(resolve() is Patient) | Encounter.subject.where(resolve() is Patient) | EpisodeOfCare.patient | FamilyMemberHistory.patient | Flag.subject.where(resolve() is Patient) | Goal.subject.where(resolve() is Patient) | ImagingStudy.subject.where(resolve() is Patient) | Immunization.patient | List.subject.where(resolve() is Patient) | MedicationAdministration.subject.where(resolve() is Patient) | MedicationDispense.subject.where(resolve() is Patient) | MedicationRequest.subject.where(resolve() is Patient) | MedicationStatement.subject.where(resolve() is Patient) | NutritionOrder.patient | Observation.subject.where(resolve() is Patient) | Procedure.subject.where(resolve() is Patient) | RiskAssessment.subject.where(resolve() is Patient) | ServiceRequest.subject.where(resolve() is Patient) | SupplyDelivery.patient | VisionPrescription.patient</b><br>
3697   * </p>
3698   */
3699  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PATIENT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PATIENT);
3700
3701/**
3702   * Constant for fluent queries to be used to add include statements. Specifies
3703   * the path value of "<b>ImagingStudy:patient</b>".
3704   */
3705  public static final ca.uhn.fhir.model.api.Include INCLUDE_PATIENT = new ca.uhn.fhir.model.api.Include("ImagingStudy:patient").toLocked();
3706
3707
3708}
3709