001package org.hl7.fhir.dstu2016may.model;
002
003/*
004  Copyright (c) 2011+, HL7, Inc.
005  All rights reserved.
006  
007  Redistribution and use in source and binary forms, with or without modification, 
008  are permitted provided that the following conditions are met:
009  
010   * Redistributions of source code must retain the above copyright notice, this 
011     list of conditions and the following disclaimer.
012   * Redistributions in binary form must reproduce the above copyright notice, 
013     this list of conditions and the following disclaimer in the documentation 
014     and/or other materials provided with the distribution.
015   * Neither the name of HL7 nor the names of its contributors may be used to 
016     endorse or promote products derived from this software without specific 
017     prior written permission.
018  
019  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
020  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
021  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
022  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
023  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
024  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
025  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
026  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
027  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
028  POSSIBILITY OF SUCH DAMAGE.
029  
030*/
031
032// Generated on Sun, May 8, 2016 03:05+1000 for FHIR v1.4.0
033import java.util.ArrayList;
034import java.util.Date;
035import java.util.List;
036
037import org.hl7.fhir.exceptions.FHIRException;
038import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
039import org.hl7.fhir.utilities.Utilities;
040
041import ca.uhn.fhir.model.api.annotation.Block;
042import ca.uhn.fhir.model.api.annotation.Child;
043import ca.uhn.fhir.model.api.annotation.Description;
044import ca.uhn.fhir.model.api.annotation.ResourceDef;
045import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
046/**
047 * A manifest of a set of DICOM Service-Object Pair Instances (SOP Instances).  The referenced SOP Instances (images or other content) are for a single patient, and may be from one or more studies. The referenced SOP Instances have been selected for a purpose, such as quality assurance, conference, or consult. Reflecting that range of purposes, typical ImagingObjectSelection resources may include all SOP Instances in a study (perhaps for sharing through a Health Information Exchange); key images from multiple studies (for reference by a referring or treating physician); a multi-frame ultrasound instance ("cine" video clip) and a set of measurements taken from that instance (for inclusion in a teaching file); and so on.
048 */
049@ResourceDef(name="ImagingObjectSelection", profile="http://hl7.org/fhir/Profile/ImagingObjectSelection")
050public class ImagingObjectSelection extends DomainResource {
051
052    @Block()
053    public static class StudyComponent extends BackboneElement implements IBaseBackboneElement {
054        /**
055         * Study instance UID of the SOP instances in the selection.
056         */
057        @Child(name = "uid", type = {OidType.class}, order=1, min=1, max=1, modifier=false, summary=true)
058        @Description(shortDefinition="Study instance UID", formalDefinition="Study instance UID of the SOP instances in the selection." )
059        protected OidType uid;
060
061        /**
062         * WADO-RS URL to retrieve the study. Note that this URL retrieves all SOP instances of the study, not only those in the selection.
063         */
064        @Child(name = "url", type = {UriType.class}, order=2, min=0, max=1, modifier=false, summary=true)
065        @Description(shortDefinition="Retrieve study URL", formalDefinition="WADO-RS URL to retrieve the study. Note that this URL retrieves all SOP instances of the study, not only those in the selection." )
066        protected UriType url;
067
068        /**
069         * Reference to the Imaging Study in FHIR form.
070         */
071        @Child(name = "imagingStudy", type = {ImagingStudy.class}, order=3, min=0, max=1, modifier=false, summary=true)
072        @Description(shortDefinition="Reference to ImagingStudy", formalDefinition="Reference to the Imaging Study in FHIR form." )
073        protected Reference imagingStudy;
074
075        /**
076         * The actual object that is the target of the reference (Reference to the Imaging Study in FHIR form.)
077         */
078        protected ImagingStudy imagingStudyTarget;
079
080        /**
081         * Series identity and locating information of the DICOM SOP instances in the selection.
082         */
083        @Child(name = "series", type = {}, order=4, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
084        @Description(shortDefinition="Series identity of the selected instances", formalDefinition="Series identity and locating information of the DICOM SOP instances in the selection." )
085        protected List<SeriesComponent> series;
086
087        private static final long serialVersionUID = 341246743L;
088
089    /**
090     * Constructor
091     */
092      public StudyComponent() {
093        super();
094      }
095
096    /**
097     * Constructor
098     */
099      public StudyComponent(OidType uid) {
100        super();
101        this.uid = uid;
102      }
103
104        /**
105         * @return {@link #uid} (Study instance UID of the SOP instances in the selection.). This is the underlying object with id, value and extensions. The accessor "getUid" gives direct access to the value
106         */
107        public OidType getUidElement() { 
108          if (this.uid == null)
109            if (Configuration.errorOnAutoCreate())
110              throw new Error("Attempt to auto-create StudyComponent.uid");
111            else if (Configuration.doAutoCreate())
112              this.uid = new OidType(); // bb
113          return this.uid;
114        }
115
116        public boolean hasUidElement() { 
117          return this.uid != null && !this.uid.isEmpty();
118        }
119
120        public boolean hasUid() { 
121          return this.uid != null && !this.uid.isEmpty();
122        }
123
124        /**
125         * @param value {@link #uid} (Study instance UID of the SOP instances in the selection.). This is the underlying object with id, value and extensions. The accessor "getUid" gives direct access to the value
126         */
127        public StudyComponent setUidElement(OidType value) { 
128          this.uid = value;
129          return this;
130        }
131
132        /**
133         * @return Study instance UID of the SOP instances in the selection.
134         */
135        public String getUid() { 
136          return this.uid == null ? null : this.uid.getValue();
137        }
138
139        /**
140         * @param value Study instance UID of the SOP instances in the selection.
141         */
142        public StudyComponent setUid(String value) { 
143            if (this.uid == null)
144              this.uid = new OidType();
145            this.uid.setValue(value);
146          return this;
147        }
148
149        /**
150         * @return {@link #url} (WADO-RS URL to retrieve the study. Note that this URL retrieves all SOP instances of the study, not only those in the selection.). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
151         */
152        public UriType getUrlElement() { 
153          if (this.url == null)
154            if (Configuration.errorOnAutoCreate())
155              throw new Error("Attempt to auto-create StudyComponent.url");
156            else if (Configuration.doAutoCreate())
157              this.url = new UriType(); // bb
158          return this.url;
159        }
160
161        public boolean hasUrlElement() { 
162          return this.url != null && !this.url.isEmpty();
163        }
164
165        public boolean hasUrl() { 
166          return this.url != null && !this.url.isEmpty();
167        }
168
169        /**
170         * @param value {@link #url} (WADO-RS URL to retrieve the study. Note that this URL retrieves all SOP instances of the study, not only those in the selection.). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
171         */
172        public StudyComponent setUrlElement(UriType value) { 
173          this.url = value;
174          return this;
175        }
176
177        /**
178         * @return WADO-RS URL to retrieve the study. Note that this URL retrieves all SOP instances of the study, not only those in the selection.
179         */
180        public String getUrl() { 
181          return this.url == null ? null : this.url.getValue();
182        }
183
184        /**
185         * @param value WADO-RS URL to retrieve the study. Note that this URL retrieves all SOP instances of the study, not only those in the selection.
186         */
187        public StudyComponent setUrl(String value) { 
188          if (Utilities.noString(value))
189            this.url = null;
190          else {
191            if (this.url == null)
192              this.url = new UriType();
193            this.url.setValue(value);
194          }
195          return this;
196        }
197
198        /**
199         * @return {@link #imagingStudy} (Reference to the Imaging Study in FHIR form.)
200         */
201        public Reference getImagingStudy() { 
202          if (this.imagingStudy == null)
203            if (Configuration.errorOnAutoCreate())
204              throw new Error("Attempt to auto-create StudyComponent.imagingStudy");
205            else if (Configuration.doAutoCreate())
206              this.imagingStudy = new Reference(); // cc
207          return this.imagingStudy;
208        }
209
210        public boolean hasImagingStudy() { 
211          return this.imagingStudy != null && !this.imagingStudy.isEmpty();
212        }
213
214        /**
215         * @param value {@link #imagingStudy} (Reference to the Imaging Study in FHIR form.)
216         */
217        public StudyComponent setImagingStudy(Reference value) { 
218          this.imagingStudy = value;
219          return this;
220        }
221
222        /**
223         * @return {@link #imagingStudy} The actual object that is the target of the reference. The reference library doesn't populate this, but you can use it to hold the resource if you resolve it. (Reference to the Imaging Study in FHIR form.)
224         */
225        public ImagingStudy getImagingStudyTarget() { 
226          if (this.imagingStudyTarget == null)
227            if (Configuration.errorOnAutoCreate())
228              throw new Error("Attempt to auto-create StudyComponent.imagingStudy");
229            else if (Configuration.doAutoCreate())
230              this.imagingStudyTarget = new ImagingStudy(); // aa
231          return this.imagingStudyTarget;
232        }
233
234        /**
235         * @param value {@link #imagingStudy} The actual object that is the target of the reference. The reference library doesn't use these, but you can use it to hold the resource if you resolve it. (Reference to the Imaging Study in FHIR form.)
236         */
237        public StudyComponent setImagingStudyTarget(ImagingStudy value) { 
238          this.imagingStudyTarget = value;
239          return this;
240        }
241
242        /**
243         * @return {@link #series} (Series identity and locating information of the DICOM SOP instances in the selection.)
244         */
245        public List<SeriesComponent> getSeries() { 
246          if (this.series == null)
247            this.series = new ArrayList<SeriesComponent>();
248          return this.series;
249        }
250
251        public boolean hasSeries() { 
252          if (this.series == null)
253            return false;
254          for (SeriesComponent item : this.series)
255            if (!item.isEmpty())
256              return true;
257          return false;
258        }
259
260        /**
261         * @return {@link #series} (Series identity and locating information of the DICOM SOP instances in the selection.)
262         */
263    // syntactic sugar
264        public SeriesComponent addSeries() { //3
265          SeriesComponent t = new SeriesComponent();
266          if (this.series == null)
267            this.series = new ArrayList<SeriesComponent>();
268          this.series.add(t);
269          return t;
270        }
271
272    // syntactic sugar
273        public StudyComponent addSeries(SeriesComponent t) { //3
274          if (t == null)
275            return this;
276          if (this.series == null)
277            this.series = new ArrayList<SeriesComponent>();
278          this.series.add(t);
279          return this;
280        }
281
282        protected void listChildren(List<Property> childrenList) {
283          super.listChildren(childrenList);
284          childrenList.add(new Property("uid", "oid", "Study instance UID of the SOP instances in the selection.", 0, java.lang.Integer.MAX_VALUE, uid));
285          childrenList.add(new Property("url", "uri", "WADO-RS URL to retrieve the study. Note that this URL retrieves all SOP instances of the study, not only those in the selection.", 0, java.lang.Integer.MAX_VALUE, url));
286          childrenList.add(new Property("imagingStudy", "Reference(ImagingStudy)", "Reference to the Imaging Study in FHIR form.", 0, java.lang.Integer.MAX_VALUE, imagingStudy));
287          childrenList.add(new Property("series", "", "Series identity and locating information of the DICOM SOP instances in the selection.", 0, java.lang.Integer.MAX_VALUE, series));
288        }
289
290      @Override
291      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
292        switch (hash) {
293        case 115792: /*uid*/ return this.uid == null ? new Base[0] : new Base[] {this.uid}; // OidType
294        case 116079: /*url*/ return this.url == null ? new Base[0] : new Base[] {this.url}; // UriType
295        case -814900911: /*imagingStudy*/ return this.imagingStudy == null ? new Base[0] : new Base[] {this.imagingStudy}; // Reference
296        case -905838985: /*series*/ return this.series == null ? new Base[0] : this.series.toArray(new Base[this.series.size()]); // SeriesComponent
297        default: return super.getProperty(hash, name, checkValid);
298        }
299
300      }
301
302      @Override
303      public void setProperty(int hash, String name, Base value) throws FHIRException {
304        switch (hash) {
305        case 115792: // uid
306          this.uid = castToOid(value); // OidType
307          break;
308        case 116079: // url
309          this.url = castToUri(value); // UriType
310          break;
311        case -814900911: // imagingStudy
312          this.imagingStudy = castToReference(value); // Reference
313          break;
314        case -905838985: // series
315          this.getSeries().add((SeriesComponent) value); // SeriesComponent
316          break;
317        default: super.setProperty(hash, name, value);
318        }
319
320      }
321
322      @Override
323      public void setProperty(String name, Base value) throws FHIRException {
324        if (name.equals("uid"))
325          this.uid = castToOid(value); // OidType
326        else if (name.equals("url"))
327          this.url = castToUri(value); // UriType
328        else if (name.equals("imagingStudy"))
329          this.imagingStudy = castToReference(value); // Reference
330        else if (name.equals("series"))
331          this.getSeries().add((SeriesComponent) value);
332        else
333          super.setProperty(name, value);
334      }
335
336      @Override
337      public Base makeProperty(int hash, String name) throws FHIRException {
338        switch (hash) {
339        case 115792: throw new FHIRException("Cannot make property uid as it is not a complex type"); // OidType
340        case 116079: throw new FHIRException("Cannot make property url as it is not a complex type"); // UriType
341        case -814900911:  return getImagingStudy(); // Reference
342        case -905838985:  return addSeries(); // SeriesComponent
343        default: return super.makeProperty(hash, name);
344        }
345
346      }
347
348      @Override
349      public Base addChild(String name) throws FHIRException {
350        if (name.equals("uid")) {
351          throw new FHIRException("Cannot call addChild on a primitive type ImagingObjectSelection.uid");
352        }
353        else if (name.equals("url")) {
354          throw new FHIRException("Cannot call addChild on a primitive type ImagingObjectSelection.url");
355        }
356        else if (name.equals("imagingStudy")) {
357          this.imagingStudy = new Reference();
358          return this.imagingStudy;
359        }
360        else if (name.equals("series")) {
361          return addSeries();
362        }
363        else
364          return super.addChild(name);
365      }
366
367      public StudyComponent copy() {
368        StudyComponent dst = new StudyComponent();
369        copyValues(dst);
370        dst.uid = uid == null ? null : uid.copy();
371        dst.url = url == null ? null : url.copy();
372        dst.imagingStudy = imagingStudy == null ? null : imagingStudy.copy();
373        if (series != null) {
374          dst.series = new ArrayList<SeriesComponent>();
375          for (SeriesComponent i : series)
376            dst.series.add(i.copy());
377        };
378        return dst;
379      }
380
381      @Override
382      public boolean equalsDeep(Base other) {
383        if (!super.equalsDeep(other))
384          return false;
385        if (!(other instanceof StudyComponent))
386          return false;
387        StudyComponent o = (StudyComponent) other;
388        return compareDeep(uid, o.uid, true) && compareDeep(url, o.url, true) && compareDeep(imagingStudy, o.imagingStudy, true)
389           && compareDeep(series, o.series, true);
390      }
391
392      @Override
393      public boolean equalsShallow(Base other) {
394        if (!super.equalsShallow(other))
395          return false;
396        if (!(other instanceof StudyComponent))
397          return false;
398        StudyComponent o = (StudyComponent) other;
399        return compareValues(uid, o.uid, true) && compareValues(url, o.url, true);
400      }
401
402      public boolean isEmpty() {
403        return super.isEmpty() && (uid == null || uid.isEmpty()) && (url == null || url.isEmpty()) && (imagingStudy == null || imagingStudy.isEmpty())
404           && (series == null || series.isEmpty());
405      }
406
407  public String fhirType() {
408    return "ImagingObjectSelection.study";
409
410  }
411
412  }
413
414    @Block()
415    public static class SeriesComponent extends BackboneElement implements IBaseBackboneElement {
416        /**
417         * Series instance UID of the SOP instances in the selection.
418         */
419        @Child(name = "uid", type = {OidType.class}, order=1, min=1, max=1, modifier=false, summary=true)
420        @Description(shortDefinition="Series instance UID", formalDefinition="Series instance UID of the SOP instances in the selection." )
421        protected OidType uid;
422
423        /**
424         * WADO-RS URL to retrieve the series. Note that this URL retrieves all SOP instances of the series not only those in the selection.
425         */
426        @Child(name = "url", type = {UriType.class}, order=2, min=0, max=1, modifier=false, summary=true)
427        @Description(shortDefinition="Retrieve series URL", formalDefinition="WADO-RS URL to retrieve the series. Note that this URL retrieves all SOP instances of the series not only those in the selection." )
428        protected UriType url;
429
430        /**
431         * Identity and locating information of the selected DICOM SOP instances.
432         */
433        @Child(name = "instance", type = {}, order=3, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
434        @Description(shortDefinition="The selected instance", formalDefinition="Identity and locating information of the selected DICOM SOP instances." )
435        protected List<InstanceComponent> instance;
436
437        private static final long serialVersionUID = 229247770L;
438
439    /**
440     * Constructor
441     */
442      public SeriesComponent() {
443        super();
444      }
445
446    /**
447     * Constructor
448     */
449      public SeriesComponent(OidType uid) {
450        super();
451        this.uid = uid;
452      }
453
454        /**
455         * @return {@link #uid} (Series instance UID of the SOP instances in the selection.). This is the underlying object with id, value and extensions. The accessor "getUid" gives direct access to the value
456         */
457        public OidType getUidElement() { 
458          if (this.uid == null)
459            if (Configuration.errorOnAutoCreate())
460              throw new Error("Attempt to auto-create SeriesComponent.uid");
461            else if (Configuration.doAutoCreate())
462              this.uid = new OidType(); // bb
463          return this.uid;
464        }
465
466        public boolean hasUidElement() { 
467          return this.uid != null && !this.uid.isEmpty();
468        }
469
470        public boolean hasUid() { 
471          return this.uid != null && !this.uid.isEmpty();
472        }
473
474        /**
475         * @param value {@link #uid} (Series instance UID of the SOP instances in the selection.). This is the underlying object with id, value and extensions. The accessor "getUid" gives direct access to the value
476         */
477        public SeriesComponent setUidElement(OidType value) { 
478          this.uid = value;
479          return this;
480        }
481
482        /**
483         * @return Series instance UID of the SOP instances in the selection.
484         */
485        public String getUid() { 
486          return this.uid == null ? null : this.uid.getValue();
487        }
488
489        /**
490         * @param value Series instance UID of the SOP instances in the selection.
491         */
492        public SeriesComponent setUid(String value) { 
493            if (this.uid == null)
494              this.uid = new OidType();
495            this.uid.setValue(value);
496          return this;
497        }
498
499        /**
500         * @return {@link #url} (WADO-RS URL to retrieve the series. Note that this URL retrieves all SOP instances of the series not only those in the selection.). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
501         */
502        public UriType getUrlElement() { 
503          if (this.url == null)
504            if (Configuration.errorOnAutoCreate())
505              throw new Error("Attempt to auto-create SeriesComponent.url");
506            else if (Configuration.doAutoCreate())
507              this.url = new UriType(); // bb
508          return this.url;
509        }
510
511        public boolean hasUrlElement() { 
512          return this.url != null && !this.url.isEmpty();
513        }
514
515        public boolean hasUrl() { 
516          return this.url != null && !this.url.isEmpty();
517        }
518
519        /**
520         * @param value {@link #url} (WADO-RS URL to retrieve the series. Note that this URL retrieves all SOP instances of the series not only those in the selection.). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
521         */
522        public SeriesComponent setUrlElement(UriType value) { 
523          this.url = value;
524          return this;
525        }
526
527        /**
528         * @return WADO-RS URL to retrieve the series. Note that this URL retrieves all SOP instances of the series not only those in the selection.
529         */
530        public String getUrl() { 
531          return this.url == null ? null : this.url.getValue();
532        }
533
534        /**
535         * @param value WADO-RS URL to retrieve the series. Note that this URL retrieves all SOP instances of the series not only those in the selection.
536         */
537        public SeriesComponent setUrl(String value) { 
538          if (Utilities.noString(value))
539            this.url = null;
540          else {
541            if (this.url == null)
542              this.url = new UriType();
543            this.url.setValue(value);
544          }
545          return this;
546        }
547
548        /**
549         * @return {@link #instance} (Identity and locating information of the selected DICOM SOP instances.)
550         */
551        public List<InstanceComponent> getInstance() { 
552          if (this.instance == null)
553            this.instance = new ArrayList<InstanceComponent>();
554          return this.instance;
555        }
556
557        public boolean hasInstance() { 
558          if (this.instance == null)
559            return false;
560          for (InstanceComponent item : this.instance)
561            if (!item.isEmpty())
562              return true;
563          return false;
564        }
565
566        /**
567         * @return {@link #instance} (Identity and locating information of the selected DICOM SOP instances.)
568         */
569    // syntactic sugar
570        public InstanceComponent addInstance() { //3
571          InstanceComponent t = new InstanceComponent();
572          if (this.instance == null)
573            this.instance = new ArrayList<InstanceComponent>();
574          this.instance.add(t);
575          return t;
576        }
577
578    // syntactic sugar
579        public SeriesComponent addInstance(InstanceComponent t) { //3
580          if (t == null)
581            return this;
582          if (this.instance == null)
583            this.instance = new ArrayList<InstanceComponent>();
584          this.instance.add(t);
585          return this;
586        }
587
588        protected void listChildren(List<Property> childrenList) {
589          super.listChildren(childrenList);
590          childrenList.add(new Property("uid", "oid", "Series instance UID of the SOP instances in the selection.", 0, java.lang.Integer.MAX_VALUE, uid));
591          childrenList.add(new Property("url", "uri", "WADO-RS URL to retrieve the series. Note that this URL retrieves all SOP instances of the series not only those in the selection.", 0, java.lang.Integer.MAX_VALUE, url));
592          childrenList.add(new Property("instance", "", "Identity and locating information of the selected DICOM SOP instances.", 0, java.lang.Integer.MAX_VALUE, instance));
593        }
594
595      @Override
596      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
597        switch (hash) {
598        case 115792: /*uid*/ return this.uid == null ? new Base[0] : new Base[] {this.uid}; // OidType
599        case 116079: /*url*/ return this.url == null ? new Base[0] : new Base[] {this.url}; // UriType
600        case 555127957: /*instance*/ return this.instance == null ? new Base[0] : this.instance.toArray(new Base[this.instance.size()]); // InstanceComponent
601        default: return super.getProperty(hash, name, checkValid);
602        }
603
604      }
605
606      @Override
607      public void setProperty(int hash, String name, Base value) throws FHIRException {
608        switch (hash) {
609        case 115792: // uid
610          this.uid = castToOid(value); // OidType
611          break;
612        case 116079: // url
613          this.url = castToUri(value); // UriType
614          break;
615        case 555127957: // instance
616          this.getInstance().add((InstanceComponent) value); // InstanceComponent
617          break;
618        default: super.setProperty(hash, name, value);
619        }
620
621      }
622
623      @Override
624      public void setProperty(String name, Base value) throws FHIRException {
625        if (name.equals("uid"))
626          this.uid = castToOid(value); // OidType
627        else if (name.equals("url"))
628          this.url = castToUri(value); // UriType
629        else if (name.equals("instance"))
630          this.getInstance().add((InstanceComponent) value);
631        else
632          super.setProperty(name, value);
633      }
634
635      @Override
636      public Base makeProperty(int hash, String name) throws FHIRException {
637        switch (hash) {
638        case 115792: throw new FHIRException("Cannot make property uid as it is not a complex type"); // OidType
639        case 116079: throw new FHIRException("Cannot make property url as it is not a complex type"); // UriType
640        case 555127957:  return addInstance(); // InstanceComponent
641        default: return super.makeProperty(hash, name);
642        }
643
644      }
645
646      @Override
647      public Base addChild(String name) throws FHIRException {
648        if (name.equals("uid")) {
649          throw new FHIRException("Cannot call addChild on a primitive type ImagingObjectSelection.uid");
650        }
651        else if (name.equals("url")) {
652          throw new FHIRException("Cannot call addChild on a primitive type ImagingObjectSelection.url");
653        }
654        else if (name.equals("instance")) {
655          return addInstance();
656        }
657        else
658          return super.addChild(name);
659      }
660
661      public SeriesComponent copy() {
662        SeriesComponent dst = new SeriesComponent();
663        copyValues(dst);
664        dst.uid = uid == null ? null : uid.copy();
665        dst.url = url == null ? null : url.copy();
666        if (instance != null) {
667          dst.instance = new ArrayList<InstanceComponent>();
668          for (InstanceComponent i : instance)
669            dst.instance.add(i.copy());
670        };
671        return dst;
672      }
673
674      @Override
675      public boolean equalsDeep(Base other) {
676        if (!super.equalsDeep(other))
677          return false;
678        if (!(other instanceof SeriesComponent))
679          return false;
680        SeriesComponent o = (SeriesComponent) other;
681        return compareDeep(uid, o.uid, true) && compareDeep(url, o.url, true) && compareDeep(instance, o.instance, true)
682          ;
683      }
684
685      @Override
686      public boolean equalsShallow(Base other) {
687        if (!super.equalsShallow(other))
688          return false;
689        if (!(other instanceof SeriesComponent))
690          return false;
691        SeriesComponent o = (SeriesComponent) other;
692        return compareValues(uid, o.uid, true) && compareValues(url, o.url, true);
693      }
694
695      public boolean isEmpty() {
696        return super.isEmpty() && (uid == null || uid.isEmpty()) && (url == null || url.isEmpty()) && (instance == null || instance.isEmpty())
697          ;
698      }
699
700  public String fhirType() {
701    return "ImagingObjectSelection.study.series";
702
703  }
704
705  }
706
707    @Block()
708    public static class InstanceComponent extends BackboneElement implements IBaseBackboneElement {
709        /**
710         * SOP class UID of the selected instance.
711         */
712        @Child(name = "sopClass", type = {OidType.class}, order=1, min=1, max=1, modifier=false, summary=true)
713        @Description(shortDefinition="SOP class UID of instance", formalDefinition="SOP class UID of the selected instance." )
714        protected OidType sopClass;
715
716        /**
717         * SOP Instance UID of the selected instance.
718         */
719        @Child(name = "uid", type = {OidType.class}, order=2, min=1, max=1, modifier=false, summary=true)
720        @Description(shortDefinition="Selected instance UID", formalDefinition="SOP Instance UID of the selected instance." )
721        protected OidType uid;
722
723        /**
724         * WADO-RS URL to retrieve the DICOM SOP Instance.
725         */
726        @Child(name = "url", type = {UriType.class}, order=3, min=1, max=1, modifier=false, summary=true)
727        @Description(shortDefinition="Retrieve instance URL", formalDefinition="WADO-RS URL to retrieve the DICOM SOP Instance." )
728        protected UriType url;
729
730        /**
731         * Identity and location information of the frames in the selected instance.
732         */
733        @Child(name = "frame", type = {}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
734        @Description(shortDefinition="The frame set", formalDefinition="Identity and location information of the frames in the selected instance." )
735        protected List<FramesComponent> frame;
736
737        private static final long serialVersionUID = -1609681911L;
738
739    /**
740     * Constructor
741     */
742      public InstanceComponent() {
743        super();
744      }
745
746    /**
747     * Constructor
748     */
749      public InstanceComponent(OidType sopClass, OidType uid, UriType url) {
750        super();
751        this.sopClass = sopClass;
752        this.uid = uid;
753        this.url = url;
754      }
755
756        /**
757         * @return {@link #sopClass} (SOP class UID of the selected instance.). This is the underlying object with id, value and extensions. The accessor "getSopClass" gives direct access to the value
758         */
759        public OidType getSopClassElement() { 
760          if (this.sopClass == null)
761            if (Configuration.errorOnAutoCreate())
762              throw new Error("Attempt to auto-create InstanceComponent.sopClass");
763            else if (Configuration.doAutoCreate())
764              this.sopClass = new OidType(); // bb
765          return this.sopClass;
766        }
767
768        public boolean hasSopClassElement() { 
769          return this.sopClass != null && !this.sopClass.isEmpty();
770        }
771
772        public boolean hasSopClass() { 
773          return this.sopClass != null && !this.sopClass.isEmpty();
774        }
775
776        /**
777         * @param value {@link #sopClass} (SOP class UID of the selected instance.). This is the underlying object with id, value and extensions. The accessor "getSopClass" gives direct access to the value
778         */
779        public InstanceComponent setSopClassElement(OidType value) { 
780          this.sopClass = value;
781          return this;
782        }
783
784        /**
785         * @return SOP class UID of the selected instance.
786         */
787        public String getSopClass() { 
788          return this.sopClass == null ? null : this.sopClass.getValue();
789        }
790
791        /**
792         * @param value SOP class UID of the selected instance.
793         */
794        public InstanceComponent setSopClass(String value) { 
795            if (this.sopClass == null)
796              this.sopClass = new OidType();
797            this.sopClass.setValue(value);
798          return this;
799        }
800
801        /**
802         * @return {@link #uid} (SOP Instance UID of the selected instance.). This is the underlying object with id, value and extensions. The accessor "getUid" gives direct access to the value
803         */
804        public OidType getUidElement() { 
805          if (this.uid == null)
806            if (Configuration.errorOnAutoCreate())
807              throw new Error("Attempt to auto-create InstanceComponent.uid");
808            else if (Configuration.doAutoCreate())
809              this.uid = new OidType(); // bb
810          return this.uid;
811        }
812
813        public boolean hasUidElement() { 
814          return this.uid != null && !this.uid.isEmpty();
815        }
816
817        public boolean hasUid() { 
818          return this.uid != null && !this.uid.isEmpty();
819        }
820
821        /**
822         * @param value {@link #uid} (SOP Instance UID of the selected instance.). This is the underlying object with id, value and extensions. The accessor "getUid" gives direct access to the value
823         */
824        public InstanceComponent setUidElement(OidType value) { 
825          this.uid = value;
826          return this;
827        }
828
829        /**
830         * @return SOP Instance UID of the selected instance.
831         */
832        public String getUid() { 
833          return this.uid == null ? null : this.uid.getValue();
834        }
835
836        /**
837         * @param value SOP Instance UID of the selected instance.
838         */
839        public InstanceComponent setUid(String value) { 
840            if (this.uid == null)
841              this.uid = new OidType();
842            this.uid.setValue(value);
843          return this;
844        }
845
846        /**
847         * @return {@link #url} (WADO-RS URL to retrieve the DICOM SOP Instance.). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
848         */
849        public UriType getUrlElement() { 
850          if (this.url == null)
851            if (Configuration.errorOnAutoCreate())
852              throw new Error("Attempt to auto-create InstanceComponent.url");
853            else if (Configuration.doAutoCreate())
854              this.url = new UriType(); // bb
855          return this.url;
856        }
857
858        public boolean hasUrlElement() { 
859          return this.url != null && !this.url.isEmpty();
860        }
861
862        public boolean hasUrl() { 
863          return this.url != null && !this.url.isEmpty();
864        }
865
866        /**
867         * @param value {@link #url} (WADO-RS URL to retrieve the DICOM SOP Instance.). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
868         */
869        public InstanceComponent setUrlElement(UriType value) { 
870          this.url = value;
871          return this;
872        }
873
874        /**
875         * @return WADO-RS URL to retrieve the DICOM SOP Instance.
876         */
877        public String getUrl() { 
878          return this.url == null ? null : this.url.getValue();
879        }
880
881        /**
882         * @param value WADO-RS URL to retrieve the DICOM SOP Instance.
883         */
884        public InstanceComponent setUrl(String value) { 
885            if (this.url == null)
886              this.url = new UriType();
887            this.url.setValue(value);
888          return this;
889        }
890
891        /**
892         * @return {@link #frame} (Identity and location information of the frames in the selected instance.)
893         */
894        public List<FramesComponent> getFrame() { 
895          if (this.frame == null)
896            this.frame = new ArrayList<FramesComponent>();
897          return this.frame;
898        }
899
900        public boolean hasFrame() { 
901          if (this.frame == null)
902            return false;
903          for (FramesComponent item : this.frame)
904            if (!item.isEmpty())
905              return true;
906          return false;
907        }
908
909        /**
910         * @return {@link #frame} (Identity and location information of the frames in the selected instance.)
911         */
912    // syntactic sugar
913        public FramesComponent addFrame() { //3
914          FramesComponent t = new FramesComponent();
915          if (this.frame == null)
916            this.frame = new ArrayList<FramesComponent>();
917          this.frame.add(t);
918          return t;
919        }
920
921    // syntactic sugar
922        public InstanceComponent addFrame(FramesComponent t) { //3
923          if (t == null)
924            return this;
925          if (this.frame == null)
926            this.frame = new ArrayList<FramesComponent>();
927          this.frame.add(t);
928          return this;
929        }
930
931        protected void listChildren(List<Property> childrenList) {
932          super.listChildren(childrenList);
933          childrenList.add(new Property("sopClass", "oid", "SOP class UID of the selected instance.", 0, java.lang.Integer.MAX_VALUE, sopClass));
934          childrenList.add(new Property("uid", "oid", "SOP Instance UID of the selected instance.", 0, java.lang.Integer.MAX_VALUE, uid));
935          childrenList.add(new Property("url", "uri", "WADO-RS URL to retrieve the DICOM SOP Instance.", 0, java.lang.Integer.MAX_VALUE, url));
936          childrenList.add(new Property("frame", "", "Identity and location information of the frames in the selected instance.", 0, java.lang.Integer.MAX_VALUE, frame));
937        }
938
939      @Override
940      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
941        switch (hash) {
942        case 1560041540: /*sopClass*/ return this.sopClass == null ? new Base[0] : new Base[] {this.sopClass}; // OidType
943        case 115792: /*uid*/ return this.uid == null ? new Base[0] : new Base[] {this.uid}; // OidType
944        case 116079: /*url*/ return this.url == null ? new Base[0] : new Base[] {this.url}; // UriType
945        case 97692013: /*frame*/ return this.frame == null ? new Base[0] : this.frame.toArray(new Base[this.frame.size()]); // FramesComponent
946        default: return super.getProperty(hash, name, checkValid);
947        }
948
949      }
950
951      @Override
952      public void setProperty(int hash, String name, Base value) throws FHIRException {
953        switch (hash) {
954        case 1560041540: // sopClass
955          this.sopClass = castToOid(value); // OidType
956          break;
957        case 115792: // uid
958          this.uid = castToOid(value); // OidType
959          break;
960        case 116079: // url
961          this.url = castToUri(value); // UriType
962          break;
963        case 97692013: // frame
964          this.getFrame().add((FramesComponent) value); // FramesComponent
965          break;
966        default: super.setProperty(hash, name, value);
967        }
968
969      }
970
971      @Override
972      public void setProperty(String name, Base value) throws FHIRException {
973        if (name.equals("sopClass"))
974          this.sopClass = castToOid(value); // OidType
975        else if (name.equals("uid"))
976          this.uid = castToOid(value); // OidType
977        else if (name.equals("url"))
978          this.url = castToUri(value); // UriType
979        else if (name.equals("frame"))
980          this.getFrame().add((FramesComponent) value);
981        else
982          super.setProperty(name, value);
983      }
984
985      @Override
986      public Base makeProperty(int hash, String name) throws FHIRException {
987        switch (hash) {
988        case 1560041540: throw new FHIRException("Cannot make property sopClass as it is not a complex type"); // OidType
989        case 115792: throw new FHIRException("Cannot make property uid as it is not a complex type"); // OidType
990        case 116079: throw new FHIRException("Cannot make property url as it is not a complex type"); // UriType
991        case 97692013:  return addFrame(); // FramesComponent
992        default: return super.makeProperty(hash, name);
993        }
994
995      }
996
997      @Override
998      public Base addChild(String name) throws FHIRException {
999        if (name.equals("sopClass")) {
1000          throw new FHIRException("Cannot call addChild on a primitive type ImagingObjectSelection.sopClass");
1001        }
1002        else if (name.equals("uid")) {
1003          throw new FHIRException("Cannot call addChild on a primitive type ImagingObjectSelection.uid");
1004        }
1005        else if (name.equals("url")) {
1006          throw new FHIRException("Cannot call addChild on a primitive type ImagingObjectSelection.url");
1007        }
1008        else if (name.equals("frame")) {
1009          return addFrame();
1010        }
1011        else
1012          return super.addChild(name);
1013      }
1014
1015      public InstanceComponent copy() {
1016        InstanceComponent dst = new InstanceComponent();
1017        copyValues(dst);
1018        dst.sopClass = sopClass == null ? null : sopClass.copy();
1019        dst.uid = uid == null ? null : uid.copy();
1020        dst.url = url == null ? null : url.copy();
1021        if (frame != null) {
1022          dst.frame = new ArrayList<FramesComponent>();
1023          for (FramesComponent i : frame)
1024            dst.frame.add(i.copy());
1025        };
1026        return dst;
1027      }
1028
1029      @Override
1030      public boolean equalsDeep(Base other) {
1031        if (!super.equalsDeep(other))
1032          return false;
1033        if (!(other instanceof InstanceComponent))
1034          return false;
1035        InstanceComponent o = (InstanceComponent) other;
1036        return compareDeep(sopClass, o.sopClass, true) && compareDeep(uid, o.uid, true) && compareDeep(url, o.url, true)
1037           && compareDeep(frame, o.frame, true);
1038      }
1039
1040      @Override
1041      public boolean equalsShallow(Base other) {
1042        if (!super.equalsShallow(other))
1043          return false;
1044        if (!(other instanceof InstanceComponent))
1045          return false;
1046        InstanceComponent o = (InstanceComponent) other;
1047        return compareValues(sopClass, o.sopClass, true) && compareValues(uid, o.uid, true) && compareValues(url, o.url, true)
1048          ;
1049      }
1050
1051      public boolean isEmpty() {
1052        return super.isEmpty() && (sopClass == null || sopClass.isEmpty()) && (uid == null || uid.isEmpty())
1053           && (url == null || url.isEmpty()) && (frame == null || frame.isEmpty());
1054      }
1055
1056  public String fhirType() {
1057    return "ImagingObjectSelection.study.series.instance";
1058
1059  }
1060
1061  }
1062
1063    @Block()
1064    public static class FramesComponent extends BackboneElement implements IBaseBackboneElement {
1065        /**
1066         * The specific frame reference within a multi-frame object.
1067         */
1068        @Child(name = "number", type = {UnsignedIntType.class}, order=1, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1069        @Description(shortDefinition="Frame reference number", formalDefinition="The specific frame reference within a multi-frame object." )
1070        protected List<UnsignedIntType> number;
1071
1072        /**
1073         * WADO-RS URL to retrieve the DICOM frames.
1074         */
1075        @Child(name = "url", type = {UriType.class}, order=2, min=1, max=1, modifier=false, summary=true)
1076        @Description(shortDefinition="Retrieve frame URL", formalDefinition="WADO-RS URL to retrieve the DICOM frames." )
1077        protected UriType url;
1078
1079        private static final long serialVersionUID = 236505178L;
1080
1081    /**
1082     * Constructor
1083     */
1084      public FramesComponent() {
1085        super();
1086      }
1087
1088    /**
1089     * Constructor
1090     */
1091      public FramesComponent(UriType url) {
1092        super();
1093        this.url = url;
1094      }
1095
1096        /**
1097         * @return {@link #number} (The specific frame reference within a multi-frame object.)
1098         */
1099        public List<UnsignedIntType> getNumber() { 
1100          if (this.number == null)
1101            this.number = new ArrayList<UnsignedIntType>();
1102          return this.number;
1103        }
1104
1105        public boolean hasNumber() { 
1106          if (this.number == null)
1107            return false;
1108          for (UnsignedIntType item : this.number)
1109            if (!item.isEmpty())
1110              return true;
1111          return false;
1112        }
1113
1114        /**
1115         * @return {@link #number} (The specific frame reference within a multi-frame object.)
1116         */
1117    // syntactic sugar
1118        public UnsignedIntType addNumberElement() {//2 
1119          UnsignedIntType t = new UnsignedIntType();
1120          if (this.number == null)
1121            this.number = new ArrayList<UnsignedIntType>();
1122          this.number.add(t);
1123          return t;
1124        }
1125
1126        /**
1127         * @param value {@link #number} (The specific frame reference within a multi-frame object.)
1128         */
1129        public FramesComponent addNumber(int value) { //1
1130          UnsignedIntType t = new UnsignedIntType();
1131          t.setValue(value);
1132          if (this.number == null)
1133            this.number = new ArrayList<UnsignedIntType>();
1134          this.number.add(t);
1135          return this;
1136        }
1137
1138        /**
1139         * @param value {@link #number} (The specific frame reference within a multi-frame object.)
1140         */
1141        public boolean hasNumber(int value) { 
1142          if (this.number == null)
1143            return false;
1144          for (UnsignedIntType v : this.number)
1145            if (v.equals(value)) // unsignedInt
1146              return true;
1147          return false;
1148        }
1149
1150        /**
1151         * @return {@link #url} (WADO-RS URL to retrieve the DICOM frames.). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
1152         */
1153        public UriType getUrlElement() { 
1154          if (this.url == null)
1155            if (Configuration.errorOnAutoCreate())
1156              throw new Error("Attempt to auto-create FramesComponent.url");
1157            else if (Configuration.doAutoCreate())
1158              this.url = new UriType(); // bb
1159          return this.url;
1160        }
1161
1162        public boolean hasUrlElement() { 
1163          return this.url != null && !this.url.isEmpty();
1164        }
1165
1166        public boolean hasUrl() { 
1167          return this.url != null && !this.url.isEmpty();
1168        }
1169
1170        /**
1171         * @param value {@link #url} (WADO-RS URL to retrieve the DICOM frames.). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
1172         */
1173        public FramesComponent setUrlElement(UriType value) { 
1174          this.url = value;
1175          return this;
1176        }
1177
1178        /**
1179         * @return WADO-RS URL to retrieve the DICOM frames.
1180         */
1181        public String getUrl() { 
1182          return this.url == null ? null : this.url.getValue();
1183        }
1184
1185        /**
1186         * @param value WADO-RS URL to retrieve the DICOM frames.
1187         */
1188        public FramesComponent setUrl(String value) { 
1189            if (this.url == null)
1190              this.url = new UriType();
1191            this.url.setValue(value);
1192          return this;
1193        }
1194
1195        protected void listChildren(List<Property> childrenList) {
1196          super.listChildren(childrenList);
1197          childrenList.add(new Property("number", "unsignedInt", "The specific frame reference within a multi-frame object.", 0, java.lang.Integer.MAX_VALUE, number));
1198          childrenList.add(new Property("url", "uri", "WADO-RS URL to retrieve the DICOM frames.", 0, java.lang.Integer.MAX_VALUE, url));
1199        }
1200
1201      @Override
1202      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1203        switch (hash) {
1204        case -1034364087: /*number*/ return this.number == null ? new Base[0] : this.number.toArray(new Base[this.number.size()]); // UnsignedIntType
1205        case 116079: /*url*/ return this.url == null ? new Base[0] : new Base[] {this.url}; // UriType
1206        default: return super.getProperty(hash, name, checkValid);
1207        }
1208
1209      }
1210
1211      @Override
1212      public void setProperty(int hash, String name, Base value) throws FHIRException {
1213        switch (hash) {
1214        case -1034364087: // number
1215          this.getNumber().add(castToUnsignedInt(value)); // UnsignedIntType
1216          break;
1217        case 116079: // url
1218          this.url = castToUri(value); // UriType
1219          break;
1220        default: super.setProperty(hash, name, value);
1221        }
1222
1223      }
1224
1225      @Override
1226      public void setProperty(String name, Base value) throws FHIRException {
1227        if (name.equals("number"))
1228          this.getNumber().add(castToUnsignedInt(value));
1229        else if (name.equals("url"))
1230          this.url = castToUri(value); // UriType
1231        else
1232          super.setProperty(name, value);
1233      }
1234
1235      @Override
1236      public Base makeProperty(int hash, String name) throws FHIRException {
1237        switch (hash) {
1238        case -1034364087: throw new FHIRException("Cannot make property number as it is not a complex type"); // UnsignedIntType
1239        case 116079: throw new FHIRException("Cannot make property url as it is not a complex type"); // UriType
1240        default: return super.makeProperty(hash, name);
1241        }
1242
1243      }
1244
1245      @Override
1246      public Base addChild(String name) throws FHIRException {
1247        if (name.equals("number")) {
1248          throw new FHIRException("Cannot call addChild on a primitive type ImagingObjectSelection.number");
1249        }
1250        else if (name.equals("url")) {
1251          throw new FHIRException("Cannot call addChild on a primitive type ImagingObjectSelection.url");
1252        }
1253        else
1254          return super.addChild(name);
1255      }
1256
1257      public FramesComponent copy() {
1258        FramesComponent dst = new FramesComponent();
1259        copyValues(dst);
1260        if (number != null) {
1261          dst.number = new ArrayList<UnsignedIntType>();
1262          for (UnsignedIntType i : number)
1263            dst.number.add(i.copy());
1264        };
1265        dst.url = url == null ? null : url.copy();
1266        return dst;
1267      }
1268
1269      @Override
1270      public boolean equalsDeep(Base other) {
1271        if (!super.equalsDeep(other))
1272          return false;
1273        if (!(other instanceof FramesComponent))
1274          return false;
1275        FramesComponent o = (FramesComponent) other;
1276        return compareDeep(number, o.number, true) && compareDeep(url, o.url, true);
1277      }
1278
1279      @Override
1280      public boolean equalsShallow(Base other) {
1281        if (!super.equalsShallow(other))
1282          return false;
1283        if (!(other instanceof FramesComponent))
1284          return false;
1285        FramesComponent o = (FramesComponent) other;
1286        return compareValues(number, o.number, true) && compareValues(url, o.url, true);
1287      }
1288
1289      public boolean isEmpty() {
1290        return super.isEmpty() && (number == null || number.isEmpty()) && (url == null || url.isEmpty())
1291          ;
1292      }
1293
1294  public String fhirType() {
1295    return "ImagingObjectSelection.study.series.instance.frame";
1296
1297  }
1298
1299  }
1300
1301    /**
1302     * Instance UID of the DICOM KOS SOP Instances represented in this resource.
1303     */
1304    @Child(name = "uid", type = {OidType.class}, order=0, min=1, max=1, modifier=false, summary=true)
1305    @Description(shortDefinition="Instance UID", formalDefinition="Instance UID of the DICOM KOS SOP Instances represented in this resource." )
1306    protected OidType uid;
1307
1308    /**
1309     * A patient resource reference which is the patient subject of all DICOM SOP Instances in this ImagingObjectSelection.
1310     */
1311    @Child(name = "patient", type = {Patient.class}, order=1, min=1, max=1, modifier=false, summary=true)
1312    @Description(shortDefinition="Patient of the selected objects", formalDefinition="A patient resource reference which is the patient subject of all DICOM SOP Instances in this ImagingObjectSelection." )
1313    protected Reference patient;
1314
1315    /**
1316     * The actual object that is the target of the reference (A patient resource reference which is the patient subject of all DICOM SOP Instances in this ImagingObjectSelection.)
1317     */
1318    protected Patient patientTarget;
1319
1320    /**
1321     * Date and time when the selection of the referenced instances were made. It is (typically) different from the creation date of the selection resource, and from dates associated with the referenced instances (e.g. capture time of the referenced image).
1322     */
1323    @Child(name = "authoringTime", type = {DateTimeType.class}, order=2, min=0, max=1, modifier=false, summary=true)
1324    @Description(shortDefinition="Time when the imaging object selection was created", formalDefinition="Date and time when the selection of the referenced instances were made. It is (typically) different from the creation date of the selection resource, and from dates associated with the referenced instances (e.g. capture time of the referenced image)." )
1325    protected DateTimeType authoringTime;
1326
1327    /**
1328     * Author of ImagingObjectSelection. It can be a human author or a device which made the decision of the SOP instances selected. For example, a radiologist selected a set of imaging SOP instances to attach in a diagnostic report, and a CAD application may author a selection to describe SOP instances it used to generate a detection conclusion.
1329     */
1330    @Child(name = "author", type = {Practitioner.class, Device.class, Organization.class, Patient.class, RelatedPerson.class}, order=3, min=0, max=1, modifier=false, summary=true)
1331    @Description(shortDefinition="Author (human or machine)", formalDefinition="Author of ImagingObjectSelection. It can be a human author or a device which made the decision of the SOP instances selected. For example, a radiologist selected a set of imaging SOP instances to attach in a diagnostic report, and a CAD application may author a selection to describe SOP instances it used to generate a detection conclusion." )
1332    protected Reference author;
1333
1334    /**
1335     * The actual object that is the target of the reference (Author of ImagingObjectSelection. It can be a human author or a device which made the decision of the SOP instances selected. For example, a radiologist selected a set of imaging SOP instances to attach in a diagnostic report, and a CAD application may author a selection to describe SOP instances it used to generate a detection conclusion.)
1336     */
1337    protected Resource authorTarget;
1338
1339    /**
1340     * The reason for, or significance of, the selection of objects referenced in the resource.
1341     */
1342    @Child(name = "title", type = {CodeableConcept.class}, order=4, min=1, max=1, modifier=false, summary=true)
1343    @Description(shortDefinition="Reason for selection", formalDefinition="The reason for, or significance of, the selection of objects referenced in the resource." )
1344    protected CodeableConcept title;
1345
1346    /**
1347     * Text description of the DICOM SOP instances selected in the ImagingObjectSelection. This should be aligned with the content of the title element, and can provide further explanation of the SOP instances in the selection.
1348     */
1349    @Child(name = "description", type = {StringType.class}, order=5, min=0, max=1, modifier=false, summary=true)
1350    @Description(shortDefinition="Description text", formalDefinition="Text description of the DICOM SOP instances selected in the ImagingObjectSelection. This should be aligned with the content of the title element, and can provide further explanation of the SOP instances in the selection." )
1351    protected StringType description;
1352
1353    /**
1354     * Study identity and locating information of the DICOM SOP instances in the selection.
1355     */
1356    @Child(name = "study", type = {}, order=6, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1357    @Description(shortDefinition="Study identity of the selected instances", formalDefinition="Study identity and locating information of the DICOM SOP instances in the selection." )
1358    protected List<StudyComponent> study;
1359
1360    private static final long serialVersionUID = 1428713335L;
1361
1362  /**
1363   * Constructor
1364   */
1365    public ImagingObjectSelection() {
1366      super();
1367    }
1368
1369  /**
1370   * Constructor
1371   */
1372    public ImagingObjectSelection(OidType uid, Reference patient, CodeableConcept title) {
1373      super();
1374      this.uid = uid;
1375      this.patient = patient;
1376      this.title = title;
1377    }
1378
1379    /**
1380     * @return {@link #uid} (Instance UID of the DICOM KOS SOP Instances represented in this resource.). This is the underlying object with id, value and extensions. The accessor "getUid" gives direct access to the value
1381     */
1382    public OidType getUidElement() { 
1383      if (this.uid == null)
1384        if (Configuration.errorOnAutoCreate())
1385          throw new Error("Attempt to auto-create ImagingObjectSelection.uid");
1386        else if (Configuration.doAutoCreate())
1387          this.uid = new OidType(); // bb
1388      return this.uid;
1389    }
1390
1391    public boolean hasUidElement() { 
1392      return this.uid != null && !this.uid.isEmpty();
1393    }
1394
1395    public boolean hasUid() { 
1396      return this.uid != null && !this.uid.isEmpty();
1397    }
1398
1399    /**
1400     * @param value {@link #uid} (Instance UID of the DICOM KOS SOP Instances represented in this resource.). This is the underlying object with id, value and extensions. The accessor "getUid" gives direct access to the value
1401     */
1402    public ImagingObjectSelection setUidElement(OidType value) { 
1403      this.uid = value;
1404      return this;
1405    }
1406
1407    /**
1408     * @return Instance UID of the DICOM KOS SOP Instances represented in this resource.
1409     */
1410    public String getUid() { 
1411      return this.uid == null ? null : this.uid.getValue();
1412    }
1413
1414    /**
1415     * @param value Instance UID of the DICOM KOS SOP Instances represented in this resource.
1416     */
1417    public ImagingObjectSelection setUid(String value) { 
1418        if (this.uid == null)
1419          this.uid = new OidType();
1420        this.uid.setValue(value);
1421      return this;
1422    }
1423
1424    /**
1425     * @return {@link #patient} (A patient resource reference which is the patient subject of all DICOM SOP Instances in this ImagingObjectSelection.)
1426     */
1427    public Reference getPatient() { 
1428      if (this.patient == null)
1429        if (Configuration.errorOnAutoCreate())
1430          throw new Error("Attempt to auto-create ImagingObjectSelection.patient");
1431        else if (Configuration.doAutoCreate())
1432          this.patient = new Reference(); // cc
1433      return this.patient;
1434    }
1435
1436    public boolean hasPatient() { 
1437      return this.patient != null && !this.patient.isEmpty();
1438    }
1439
1440    /**
1441     * @param value {@link #patient} (A patient resource reference which is the patient subject of all DICOM SOP Instances in this ImagingObjectSelection.)
1442     */
1443    public ImagingObjectSelection setPatient(Reference value) { 
1444      this.patient = value;
1445      return this;
1446    }
1447
1448    /**
1449     * @return {@link #patient} The actual object that is the target of the reference. The reference library doesn't populate this, but you can use it to hold the resource if you resolve it. (A patient resource reference which is the patient subject of all DICOM SOP Instances in this ImagingObjectSelection.)
1450     */
1451    public Patient getPatientTarget() { 
1452      if (this.patientTarget == null)
1453        if (Configuration.errorOnAutoCreate())
1454          throw new Error("Attempt to auto-create ImagingObjectSelection.patient");
1455        else if (Configuration.doAutoCreate())
1456          this.patientTarget = new Patient(); // aa
1457      return this.patientTarget;
1458    }
1459
1460    /**
1461     * @param value {@link #patient} The actual object that is the target of the reference. The reference library doesn't use these, but you can use it to hold the resource if you resolve it. (A patient resource reference which is the patient subject of all DICOM SOP Instances in this ImagingObjectSelection.)
1462     */
1463    public ImagingObjectSelection setPatientTarget(Patient value) { 
1464      this.patientTarget = value;
1465      return this;
1466    }
1467
1468    /**
1469     * @return {@link #authoringTime} (Date and time when the selection of the referenced instances were made. It is (typically) different from the creation date of the selection resource, and from dates associated with the referenced instances (e.g. capture time of the referenced image).). This is the underlying object with id, value and extensions. The accessor "getAuthoringTime" gives direct access to the value
1470     */
1471    public DateTimeType getAuthoringTimeElement() { 
1472      if (this.authoringTime == null)
1473        if (Configuration.errorOnAutoCreate())
1474          throw new Error("Attempt to auto-create ImagingObjectSelection.authoringTime");
1475        else if (Configuration.doAutoCreate())
1476          this.authoringTime = new DateTimeType(); // bb
1477      return this.authoringTime;
1478    }
1479
1480    public boolean hasAuthoringTimeElement() { 
1481      return this.authoringTime != null && !this.authoringTime.isEmpty();
1482    }
1483
1484    public boolean hasAuthoringTime() { 
1485      return this.authoringTime != null && !this.authoringTime.isEmpty();
1486    }
1487
1488    /**
1489     * @param value {@link #authoringTime} (Date and time when the selection of the referenced instances were made. It is (typically) different from the creation date of the selection resource, and from dates associated with the referenced instances (e.g. capture time of the referenced image).). This is the underlying object with id, value and extensions. The accessor "getAuthoringTime" gives direct access to the value
1490     */
1491    public ImagingObjectSelection setAuthoringTimeElement(DateTimeType value) { 
1492      this.authoringTime = value;
1493      return this;
1494    }
1495
1496    /**
1497     * @return Date and time when the selection of the referenced instances were made. It is (typically) different from the creation date of the selection resource, and from dates associated with the referenced instances (e.g. capture time of the referenced image).
1498     */
1499    public Date getAuthoringTime() { 
1500      return this.authoringTime == null ? null : this.authoringTime.getValue();
1501    }
1502
1503    /**
1504     * @param value Date and time when the selection of the referenced instances were made. It is (typically) different from the creation date of the selection resource, and from dates associated with the referenced instances (e.g. capture time of the referenced image).
1505     */
1506    public ImagingObjectSelection setAuthoringTime(Date value) { 
1507      if (value == null)
1508        this.authoringTime = null;
1509      else {
1510        if (this.authoringTime == null)
1511          this.authoringTime = new DateTimeType();
1512        this.authoringTime.setValue(value);
1513      }
1514      return this;
1515    }
1516
1517    /**
1518     * @return {@link #author} (Author of ImagingObjectSelection. It can be a human author or a device which made the decision of the SOP instances selected. For example, a radiologist selected a set of imaging SOP instances to attach in a diagnostic report, and a CAD application may author a selection to describe SOP instances it used to generate a detection conclusion.)
1519     */
1520    public Reference getAuthor() { 
1521      if (this.author == null)
1522        if (Configuration.errorOnAutoCreate())
1523          throw new Error("Attempt to auto-create ImagingObjectSelection.author");
1524        else if (Configuration.doAutoCreate())
1525          this.author = new Reference(); // cc
1526      return this.author;
1527    }
1528
1529    public boolean hasAuthor() { 
1530      return this.author != null && !this.author.isEmpty();
1531    }
1532
1533    /**
1534     * @param value {@link #author} (Author of ImagingObjectSelection. It can be a human author or a device which made the decision of the SOP instances selected. For example, a radiologist selected a set of imaging SOP instances to attach in a diagnostic report, and a CAD application may author a selection to describe SOP instances it used to generate a detection conclusion.)
1535     */
1536    public ImagingObjectSelection setAuthor(Reference value) { 
1537      this.author = value;
1538      return this;
1539    }
1540
1541    /**
1542     * @return {@link #author} The actual object that is the target of the reference. The reference library doesn't populate this, but you can use it to hold the resource if you resolve it. (Author of ImagingObjectSelection. It can be a human author or a device which made the decision of the SOP instances selected. For example, a radiologist selected a set of imaging SOP instances to attach in a diagnostic report, and a CAD application may author a selection to describe SOP instances it used to generate a detection conclusion.)
1543     */
1544    public Resource getAuthorTarget() { 
1545      return this.authorTarget;
1546    }
1547
1548    /**
1549     * @param value {@link #author} The actual object that is the target of the reference. The reference library doesn't use these, but you can use it to hold the resource if you resolve it. (Author of ImagingObjectSelection. It can be a human author or a device which made the decision of the SOP instances selected. For example, a radiologist selected a set of imaging SOP instances to attach in a diagnostic report, and a CAD application may author a selection to describe SOP instances it used to generate a detection conclusion.)
1550     */
1551    public ImagingObjectSelection setAuthorTarget(Resource value) { 
1552      this.authorTarget = value;
1553      return this;
1554    }
1555
1556    /**
1557     * @return {@link #title} (The reason for, or significance of, the selection of objects referenced in the resource.)
1558     */
1559    public CodeableConcept getTitle() { 
1560      if (this.title == null)
1561        if (Configuration.errorOnAutoCreate())
1562          throw new Error("Attempt to auto-create ImagingObjectSelection.title");
1563        else if (Configuration.doAutoCreate())
1564          this.title = new CodeableConcept(); // cc
1565      return this.title;
1566    }
1567
1568    public boolean hasTitle() { 
1569      return this.title != null && !this.title.isEmpty();
1570    }
1571
1572    /**
1573     * @param value {@link #title} (The reason for, or significance of, the selection of objects referenced in the resource.)
1574     */
1575    public ImagingObjectSelection setTitle(CodeableConcept value) { 
1576      this.title = value;
1577      return this;
1578    }
1579
1580    /**
1581     * @return {@link #description} (Text description of the DICOM SOP instances selected in the ImagingObjectSelection. This should be aligned with the content of the title element, and can provide further explanation of the SOP instances in the selection.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
1582     */
1583    public StringType getDescriptionElement() { 
1584      if (this.description == null)
1585        if (Configuration.errorOnAutoCreate())
1586          throw new Error("Attempt to auto-create ImagingObjectSelection.description");
1587        else if (Configuration.doAutoCreate())
1588          this.description = new StringType(); // bb
1589      return this.description;
1590    }
1591
1592    public boolean hasDescriptionElement() { 
1593      return this.description != null && !this.description.isEmpty();
1594    }
1595
1596    public boolean hasDescription() { 
1597      return this.description != null && !this.description.isEmpty();
1598    }
1599
1600    /**
1601     * @param value {@link #description} (Text description of the DICOM SOP instances selected in the ImagingObjectSelection. This should be aligned with the content of the title element, and can provide further explanation of the SOP instances in the selection.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
1602     */
1603    public ImagingObjectSelection setDescriptionElement(StringType value) { 
1604      this.description = value;
1605      return this;
1606    }
1607
1608    /**
1609     * @return Text description of the DICOM SOP instances selected in the ImagingObjectSelection. This should be aligned with the content of the title element, and can provide further explanation of the SOP instances in the selection.
1610     */
1611    public String getDescription() { 
1612      return this.description == null ? null : this.description.getValue();
1613    }
1614
1615    /**
1616     * @param value Text description of the DICOM SOP instances selected in the ImagingObjectSelection. This should be aligned with the content of the title element, and can provide further explanation of the SOP instances in the selection.
1617     */
1618    public ImagingObjectSelection setDescription(String value) { 
1619      if (Utilities.noString(value))
1620        this.description = null;
1621      else {
1622        if (this.description == null)
1623          this.description = new StringType();
1624        this.description.setValue(value);
1625      }
1626      return this;
1627    }
1628
1629    /**
1630     * @return {@link #study} (Study identity and locating information of the DICOM SOP instances in the selection.)
1631     */
1632    public List<StudyComponent> getStudy() { 
1633      if (this.study == null)
1634        this.study = new ArrayList<StudyComponent>();
1635      return this.study;
1636    }
1637
1638    public boolean hasStudy() { 
1639      if (this.study == null)
1640        return false;
1641      for (StudyComponent item : this.study)
1642        if (!item.isEmpty())
1643          return true;
1644      return false;
1645    }
1646
1647    /**
1648     * @return {@link #study} (Study identity and locating information of the DICOM SOP instances in the selection.)
1649     */
1650    // syntactic sugar
1651    public StudyComponent addStudy() { //3
1652      StudyComponent t = new StudyComponent();
1653      if (this.study == null)
1654        this.study = new ArrayList<StudyComponent>();
1655      this.study.add(t);
1656      return t;
1657    }
1658
1659    // syntactic sugar
1660    public ImagingObjectSelection addStudy(StudyComponent t) { //3
1661      if (t == null)
1662        return this;
1663      if (this.study == null)
1664        this.study = new ArrayList<StudyComponent>();
1665      this.study.add(t);
1666      return this;
1667    }
1668
1669      protected void listChildren(List<Property> childrenList) {
1670        super.listChildren(childrenList);
1671        childrenList.add(new Property("uid", "oid", "Instance UID of the DICOM KOS SOP Instances represented in this resource.", 0, java.lang.Integer.MAX_VALUE, uid));
1672        childrenList.add(new Property("patient", "Reference(Patient)", "A patient resource reference which is the patient subject of all DICOM SOP Instances in this ImagingObjectSelection.", 0, java.lang.Integer.MAX_VALUE, patient));
1673        childrenList.add(new Property("authoringTime", "dateTime", "Date and time when the selection of the referenced instances were made. It is (typically) different from the creation date of the selection resource, and from dates associated with the referenced instances (e.g. capture time of the referenced image).", 0, java.lang.Integer.MAX_VALUE, authoringTime));
1674        childrenList.add(new Property("author", "Reference(Practitioner|Device|Organization|Patient|RelatedPerson)", "Author of ImagingObjectSelection. It can be a human author or a device which made the decision of the SOP instances selected. For example, a radiologist selected a set of imaging SOP instances to attach in a diagnostic report, and a CAD application may author a selection to describe SOP instances it used to generate a detection conclusion.", 0, java.lang.Integer.MAX_VALUE, author));
1675        childrenList.add(new Property("title", "CodeableConcept", "The reason for, or significance of, the selection of objects referenced in the resource.", 0, java.lang.Integer.MAX_VALUE, title));
1676        childrenList.add(new Property("description", "string", "Text description of the DICOM SOP instances selected in the ImagingObjectSelection. This should be aligned with the content of the title element, and can provide further explanation of the SOP instances in the selection.", 0, java.lang.Integer.MAX_VALUE, description));
1677        childrenList.add(new Property("study", "", "Study identity and locating information of the DICOM SOP instances in the selection.", 0, java.lang.Integer.MAX_VALUE, study));
1678      }
1679
1680      @Override
1681      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1682        switch (hash) {
1683        case 115792: /*uid*/ return this.uid == null ? new Base[0] : new Base[] {this.uid}; // OidType
1684        case -791418107: /*patient*/ return this.patient == null ? new Base[0] : new Base[] {this.patient}; // Reference
1685        case -1724532252: /*authoringTime*/ return this.authoringTime == null ? new Base[0] : new Base[] {this.authoringTime}; // DateTimeType
1686        case -1406328437: /*author*/ return this.author == null ? new Base[0] : new Base[] {this.author}; // Reference
1687        case 110371416: /*title*/ return this.title == null ? new Base[0] : new Base[] {this.title}; // CodeableConcept
1688        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // StringType
1689        case 109776329: /*study*/ return this.study == null ? new Base[0] : this.study.toArray(new Base[this.study.size()]); // StudyComponent
1690        default: return super.getProperty(hash, name, checkValid);
1691        }
1692
1693      }
1694
1695      @Override
1696      public void setProperty(int hash, String name, Base value) throws FHIRException {
1697        switch (hash) {
1698        case 115792: // uid
1699          this.uid = castToOid(value); // OidType
1700          break;
1701        case -791418107: // patient
1702          this.patient = castToReference(value); // Reference
1703          break;
1704        case -1724532252: // authoringTime
1705          this.authoringTime = castToDateTime(value); // DateTimeType
1706          break;
1707        case -1406328437: // author
1708          this.author = castToReference(value); // Reference
1709          break;
1710        case 110371416: // title
1711          this.title = castToCodeableConcept(value); // CodeableConcept
1712          break;
1713        case -1724546052: // description
1714          this.description = castToString(value); // StringType
1715          break;
1716        case 109776329: // study
1717          this.getStudy().add((StudyComponent) value); // StudyComponent
1718          break;
1719        default: super.setProperty(hash, name, value);
1720        }
1721
1722      }
1723
1724      @Override
1725      public void setProperty(String name, Base value) throws FHIRException {
1726        if (name.equals("uid"))
1727          this.uid = castToOid(value); // OidType
1728        else if (name.equals("patient"))
1729          this.patient = castToReference(value); // Reference
1730        else if (name.equals("authoringTime"))
1731          this.authoringTime = castToDateTime(value); // DateTimeType
1732        else if (name.equals("author"))
1733          this.author = castToReference(value); // Reference
1734        else if (name.equals("title"))
1735          this.title = castToCodeableConcept(value); // CodeableConcept
1736        else if (name.equals("description"))
1737          this.description = castToString(value); // StringType
1738        else if (name.equals("study"))
1739          this.getStudy().add((StudyComponent) value);
1740        else
1741          super.setProperty(name, value);
1742      }
1743
1744      @Override
1745      public Base makeProperty(int hash, String name) throws FHIRException {
1746        switch (hash) {
1747        case 115792: throw new FHIRException("Cannot make property uid as it is not a complex type"); // OidType
1748        case -791418107:  return getPatient(); // Reference
1749        case -1724532252: throw new FHIRException("Cannot make property authoringTime as it is not a complex type"); // DateTimeType
1750        case -1406328437:  return getAuthor(); // Reference
1751        case 110371416:  return getTitle(); // CodeableConcept
1752        case -1724546052: throw new FHIRException("Cannot make property description as it is not a complex type"); // StringType
1753        case 109776329:  return addStudy(); // StudyComponent
1754        default: return super.makeProperty(hash, name);
1755        }
1756
1757      }
1758
1759      @Override
1760      public Base addChild(String name) throws FHIRException {
1761        if (name.equals("uid")) {
1762          throw new FHIRException("Cannot call addChild on a primitive type ImagingObjectSelection.uid");
1763        }
1764        else if (name.equals("patient")) {
1765          this.patient = new Reference();
1766          return this.patient;
1767        }
1768        else if (name.equals("authoringTime")) {
1769          throw new FHIRException("Cannot call addChild on a primitive type ImagingObjectSelection.authoringTime");
1770        }
1771        else if (name.equals("author")) {
1772          this.author = new Reference();
1773          return this.author;
1774        }
1775        else if (name.equals("title")) {
1776          this.title = new CodeableConcept();
1777          return this.title;
1778        }
1779        else if (name.equals("description")) {
1780          throw new FHIRException("Cannot call addChild on a primitive type ImagingObjectSelection.description");
1781        }
1782        else if (name.equals("study")) {
1783          return addStudy();
1784        }
1785        else
1786          return super.addChild(name);
1787      }
1788
1789  public String fhirType() {
1790    return "ImagingObjectSelection";
1791
1792  }
1793
1794      public ImagingObjectSelection copy() {
1795        ImagingObjectSelection dst = new ImagingObjectSelection();
1796        copyValues(dst);
1797        dst.uid = uid == null ? null : uid.copy();
1798        dst.patient = patient == null ? null : patient.copy();
1799        dst.authoringTime = authoringTime == null ? null : authoringTime.copy();
1800        dst.author = author == null ? null : author.copy();
1801        dst.title = title == null ? null : title.copy();
1802        dst.description = description == null ? null : description.copy();
1803        if (study != null) {
1804          dst.study = new ArrayList<StudyComponent>();
1805          for (StudyComponent i : study)
1806            dst.study.add(i.copy());
1807        };
1808        return dst;
1809      }
1810
1811      protected ImagingObjectSelection typedCopy() {
1812        return copy();
1813      }
1814
1815      @Override
1816      public boolean equalsDeep(Base other) {
1817        if (!super.equalsDeep(other))
1818          return false;
1819        if (!(other instanceof ImagingObjectSelection))
1820          return false;
1821        ImagingObjectSelection o = (ImagingObjectSelection) other;
1822        return compareDeep(uid, o.uid, true) && compareDeep(patient, o.patient, true) && compareDeep(authoringTime, o.authoringTime, true)
1823           && compareDeep(author, o.author, true) && compareDeep(title, o.title, true) && compareDeep(description, o.description, true)
1824           && compareDeep(study, o.study, true);
1825      }
1826
1827      @Override
1828      public boolean equalsShallow(Base other) {
1829        if (!super.equalsShallow(other))
1830          return false;
1831        if (!(other instanceof ImagingObjectSelection))
1832          return false;
1833        ImagingObjectSelection o = (ImagingObjectSelection) other;
1834        return compareValues(uid, o.uid, true) && compareValues(authoringTime, o.authoringTime, true) && compareValues(description, o.description, true)
1835          ;
1836      }
1837
1838      public boolean isEmpty() {
1839        return super.isEmpty() && (uid == null || uid.isEmpty()) && (patient == null || patient.isEmpty())
1840           && (authoringTime == null || authoringTime.isEmpty()) && (author == null || author.isEmpty())
1841           && (title == null || title.isEmpty()) && (description == null || description.isEmpty()) && (study == null || study.isEmpty())
1842          ;
1843      }
1844
1845  @Override
1846  public ResourceType getResourceType() {
1847    return ResourceType.ImagingObjectSelection;
1848   }
1849
1850 /**
1851   * Search parameter: <b>selected-study</b>
1852   * <p>
1853   * Description: <b>Study selected in key DICOM object selection</b><br>
1854   * Type: <b>uri</b><br>
1855   * Path: <b>ImagingObjectSelection.study.uid</b><br>
1856   * </p>
1857   */
1858  @SearchParamDefinition(name="selected-study", path="ImagingObjectSelection.study.uid", description="Study selected in key DICOM object selection", type="uri" )
1859  public static final String SP_SELECTED_STUDY = "selected-study";
1860 /**
1861   * <b>Fluent Client</b> search parameter constant for <b>selected-study</b>
1862   * <p>
1863   * Description: <b>Study selected in key DICOM object selection</b><br>
1864   * Type: <b>uri</b><br>
1865   * Path: <b>ImagingObjectSelection.study.uid</b><br>
1866   * </p>
1867   */
1868  public static final ca.uhn.fhir.rest.gclient.UriClientParam SELECTED_STUDY = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_SELECTED_STUDY);
1869
1870 /**
1871   * Search parameter: <b>author</b>
1872   * <p>
1873   * Description: <b>Author of key DICOM object selection</b><br>
1874   * Type: <b>reference</b><br>
1875   * Path: <b>ImagingObjectSelection.author</b><br>
1876   * </p>
1877   */
1878  @SearchParamDefinition(name="author", path="ImagingObjectSelection.author", description="Author of key DICOM object selection", type="reference" )
1879  public static final String SP_AUTHOR = "author";
1880 /**
1881   * <b>Fluent Client</b> search parameter constant for <b>author</b>
1882   * <p>
1883   * Description: <b>Author of key DICOM object selection</b><br>
1884   * Type: <b>reference</b><br>
1885   * Path: <b>ImagingObjectSelection.author</b><br>
1886   * </p>
1887   */
1888  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam AUTHOR = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_AUTHOR);
1889
1890/**
1891   * Constant for fluent queries to be used to add include statements. Specifies
1892   * the path value of "<b>ImagingObjectSelection:author</b>".
1893   */
1894  public static final ca.uhn.fhir.model.api.Include INCLUDE_AUTHOR = new ca.uhn.fhir.model.api.Include("ImagingObjectSelection:author").toLocked();
1895
1896 /**
1897   * Search parameter: <b>title</b>
1898   * <p>
1899   * Description: <b>Title of key DICOM object selection</b><br>
1900   * Type: <b>token</b><br>
1901   * Path: <b>ImagingObjectSelection.title</b><br>
1902   * </p>
1903   */
1904  @SearchParamDefinition(name="title", path="ImagingObjectSelection.title", description="Title of key DICOM object selection", type="token" )
1905  public static final String SP_TITLE = "title";
1906 /**
1907   * <b>Fluent Client</b> search parameter constant for <b>title</b>
1908   * <p>
1909   * Description: <b>Title of key DICOM object selection</b><br>
1910   * Type: <b>token</b><br>
1911   * Path: <b>ImagingObjectSelection.title</b><br>
1912   * </p>
1913   */
1914  public static final ca.uhn.fhir.rest.gclient.TokenClientParam TITLE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_TITLE);
1915
1916 /**
1917   * Search parameter: <b>patient</b>
1918   * <p>
1919   * Description: <b>Subject of key DICOM object selection</b><br>
1920   * Type: <b>reference</b><br>
1921   * Path: <b>ImagingObjectSelection.patient</b><br>
1922   * </p>
1923   */
1924  @SearchParamDefinition(name="patient", path="ImagingObjectSelection.patient", description="Subject of key DICOM object selection", type="reference" )
1925  public static final String SP_PATIENT = "patient";
1926 /**
1927   * <b>Fluent Client</b> search parameter constant for <b>patient</b>
1928   * <p>
1929   * Description: <b>Subject of key DICOM object selection</b><br>
1930   * Type: <b>reference</b><br>
1931   * Path: <b>ImagingObjectSelection.patient</b><br>
1932   * </p>
1933   */
1934  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PATIENT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PATIENT);
1935
1936/**
1937   * Constant for fluent queries to be used to add include statements. Specifies
1938   * the path value of "<b>ImagingObjectSelection:patient</b>".
1939   */
1940  public static final ca.uhn.fhir.model.api.Include INCLUDE_PATIENT = new ca.uhn.fhir.model.api.Include("ImagingObjectSelection:patient").toLocked();
1941
1942 /**
1943   * Search parameter: <b>authoring-time</b>
1944   * <p>
1945   * Description: <b>Time of key DICOM object selection authoring</b><br>
1946   * Type: <b>date</b><br>
1947   * Path: <b>ImagingObjectSelection.authoringTime</b><br>
1948   * </p>
1949   */
1950  @SearchParamDefinition(name="authoring-time", path="ImagingObjectSelection.authoringTime", description="Time of key DICOM object selection authoring", type="date" )
1951  public static final String SP_AUTHORING_TIME = "authoring-time";
1952 /**
1953   * <b>Fluent Client</b> search parameter constant for <b>authoring-time</b>
1954   * <p>
1955   * Description: <b>Time of key DICOM object selection authoring</b><br>
1956   * Type: <b>date</b><br>
1957   * Path: <b>ImagingObjectSelection.authoringTime</b><br>
1958   * </p>
1959   */
1960  public static final ca.uhn.fhir.rest.gclient.DateClientParam AUTHORING_TIME = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_AUTHORING_TIME);
1961
1962 /**
1963   * Search parameter: <b>identifier</b>
1964   * <p>
1965   * Description: <b>UID of key DICOM object selection</b><br>
1966   * Type: <b>uri</b><br>
1967   * Path: <b>ImagingObjectSelection.uid</b><br>
1968   * </p>
1969   */
1970  @SearchParamDefinition(name="identifier", path="ImagingObjectSelection.uid", description="UID of key DICOM object selection", type="uri" )
1971  public static final String SP_IDENTIFIER = "identifier";
1972 /**
1973   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
1974   * <p>
1975   * Description: <b>UID of key DICOM object selection</b><br>
1976   * Type: <b>uri</b><br>
1977   * Path: <b>ImagingObjectSelection.uid</b><br>
1978   * </p>
1979   */
1980  public static final ca.uhn.fhir.rest.gclient.UriClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_IDENTIFIER);
1981
1982
1983}
1984