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