001package org.hl7.fhir.dstu3.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 Fri, Mar 16, 2018 15:21+1100 for FHIR v3.0.x
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 text description of the DICOM SOP instances selected in the ImagingManifest; or the reason for, or significance of, the selection.
051 */
052@ResourceDef(name="ImagingManifest", profile="http://hl7.org/fhir/Profile/ImagingManifest")
053public class ImagingManifest 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         * Reference to the Imaging Study in FHIR form.
066         */
067        @Child(name = "imagingStudy", type = {ImagingStudy.class}, order=2, min=0, max=1, modifier=false, summary=true)
068        @Description(shortDefinition="Reference to ImagingStudy", formalDefinition="Reference to the Imaging Study in FHIR form." )
069        protected Reference imagingStudy;
070
071        /**
072         * The actual object that is the target of the reference (Reference to the Imaging Study in FHIR form.)
073         */
074        protected ImagingStudy imagingStudyTarget;
075
076        /**
077         * The network service providing access (e.g., query, view, or retrieval) for the study. See implementation notes for information about using DICOM endpoints. A study-level endpoint applies to each series in the study, unless overridden by a series-level endpoint with the same Endpoint.type.
078         */
079        @Child(name = "endpoint", type = {Endpoint.class}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
080        @Description(shortDefinition="Study access service endpoint", formalDefinition="The network service providing access (e.g., query, view, or retrieval) for the study. See implementation notes for information about using DICOM endpoints. A study-level endpoint applies to each series in the study, unless overridden by a series-level endpoint with the same Endpoint.type." )
081        protected List<Reference> endpoint;
082        /**
083         * The actual objects that are the target of the reference (The network service providing access (e.g., query, view, or retrieval) for the study. See implementation notes for information about using DICOM endpoints. A study-level endpoint applies to each series in the study, unless overridden by a series-level endpoint with the same Endpoint.type.)
084         */
085        protected List<Endpoint> endpointTarget;
086
087
088        /**
089         * Series identity and locating information of the DICOM SOP instances in the selection.
090         */
091        @Child(name = "series", type = {}, order=4, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
092        @Description(shortDefinition="Series identity of the selected instances", formalDefinition="Series identity and locating information of the DICOM SOP instances in the selection." )
093        protected List<SeriesComponent> series;
094
095        private static final long serialVersionUID = -538170921L;
096
097    /**
098     * Constructor
099     */
100      public StudyComponent() {
101        super();
102      }
103
104    /**
105     * Constructor
106     */
107      public StudyComponent(OidType uid) {
108        super();
109        this.uid = uid;
110      }
111
112        /**
113         * @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
114         */
115        public OidType getUidElement() { 
116          if (this.uid == null)
117            if (Configuration.errorOnAutoCreate())
118              throw new Error("Attempt to auto-create StudyComponent.uid");
119            else if (Configuration.doAutoCreate())
120              this.uid = new OidType(); // bb
121          return this.uid;
122        }
123
124        public boolean hasUidElement() { 
125          return this.uid != null && !this.uid.isEmpty();
126        }
127
128        public boolean hasUid() { 
129          return this.uid != null && !this.uid.isEmpty();
130        }
131
132        /**
133         * @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
134         */
135        public StudyComponent setUidElement(OidType value) { 
136          this.uid = value;
137          return this;
138        }
139
140        /**
141         * @return Study instance UID of the SOP instances in the selection.
142         */
143        public String getUid() { 
144          return this.uid == null ? null : this.uid.getValue();
145        }
146
147        /**
148         * @param value Study instance UID of the SOP instances in the selection.
149         */
150        public StudyComponent setUid(String value) { 
151            if (this.uid == null)
152              this.uid = new OidType();
153            this.uid.setValue(value);
154          return this;
155        }
156
157        /**
158         * @return {@link #imagingStudy} (Reference to the Imaging Study in FHIR form.)
159         */
160        public Reference getImagingStudy() { 
161          if (this.imagingStudy == null)
162            if (Configuration.errorOnAutoCreate())
163              throw new Error("Attempt to auto-create StudyComponent.imagingStudy");
164            else if (Configuration.doAutoCreate())
165              this.imagingStudy = new Reference(); // cc
166          return this.imagingStudy;
167        }
168
169        public boolean hasImagingStudy() { 
170          return this.imagingStudy != null && !this.imagingStudy.isEmpty();
171        }
172
173        /**
174         * @param value {@link #imagingStudy} (Reference to the Imaging Study in FHIR form.)
175         */
176        public StudyComponent setImagingStudy(Reference value)  { 
177          this.imagingStudy = value;
178          return this;
179        }
180
181        /**
182         * @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.)
183         */
184        public ImagingStudy getImagingStudyTarget() { 
185          if (this.imagingStudyTarget == null)
186            if (Configuration.errorOnAutoCreate())
187              throw new Error("Attempt to auto-create StudyComponent.imagingStudy");
188            else if (Configuration.doAutoCreate())
189              this.imagingStudyTarget = new ImagingStudy(); // aa
190          return this.imagingStudyTarget;
191        }
192
193        /**
194         * @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.)
195         */
196        public StudyComponent setImagingStudyTarget(ImagingStudy value) { 
197          this.imagingStudyTarget = value;
198          return this;
199        }
200
201        /**
202         * @return {@link #endpoint} (The network service providing access (e.g., query, view, or retrieval) for the study. See implementation notes for information about using DICOM endpoints. A study-level endpoint applies to each series in the study, unless overridden by a series-level endpoint with the same Endpoint.type.)
203         */
204        public List<Reference> getEndpoint() { 
205          if (this.endpoint == null)
206            this.endpoint = new ArrayList<Reference>();
207          return this.endpoint;
208        }
209
210        /**
211         * @return Returns a reference to <code>this</code> for easy method chaining
212         */
213        public StudyComponent setEndpoint(List<Reference> theEndpoint) { 
214          this.endpoint = theEndpoint;
215          return this;
216        }
217
218        public boolean hasEndpoint() { 
219          if (this.endpoint == null)
220            return false;
221          for (Reference item : this.endpoint)
222            if (!item.isEmpty())
223              return true;
224          return false;
225        }
226
227        public Reference addEndpoint() { //3
228          Reference t = new Reference();
229          if (this.endpoint == null)
230            this.endpoint = new ArrayList<Reference>();
231          this.endpoint.add(t);
232          return t;
233        }
234
235        public StudyComponent addEndpoint(Reference t) { //3
236          if (t == null)
237            return this;
238          if (this.endpoint == null)
239            this.endpoint = new ArrayList<Reference>();
240          this.endpoint.add(t);
241          return this;
242        }
243
244        /**
245         * @return The first repetition of repeating field {@link #endpoint}, creating it if it does not already exist
246         */
247        public Reference getEndpointFirstRep() { 
248          if (getEndpoint().isEmpty()) {
249            addEndpoint();
250          }
251          return getEndpoint().get(0);
252        }
253
254        /**
255         * @return {@link #series} (Series identity and locating information of the DICOM SOP instances in the selection.)
256         */
257        public List<SeriesComponent> getSeries() { 
258          if (this.series == null)
259            this.series = new ArrayList<SeriesComponent>();
260          return this.series;
261        }
262
263        /**
264         * @return Returns a reference to <code>this</code> for easy method chaining
265         */
266        public StudyComponent setSeries(List<SeriesComponent> theSeries) { 
267          this.series = theSeries;
268          return this;
269        }
270
271        public boolean hasSeries() { 
272          if (this.series == null)
273            return false;
274          for (SeriesComponent item : this.series)
275            if (!item.isEmpty())
276              return true;
277          return false;
278        }
279
280        public SeriesComponent addSeries() { //3
281          SeriesComponent t = new SeriesComponent();
282          if (this.series == null)
283            this.series = new ArrayList<SeriesComponent>();
284          this.series.add(t);
285          return t;
286        }
287
288        public StudyComponent addSeries(SeriesComponent t) { //3
289          if (t == null)
290            return this;
291          if (this.series == null)
292            this.series = new ArrayList<SeriesComponent>();
293          this.series.add(t);
294          return this;
295        }
296
297        /**
298         * @return The first repetition of repeating field {@link #series}, creating it if it does not already exist
299         */
300        public SeriesComponent getSeriesFirstRep() { 
301          if (getSeries().isEmpty()) {
302            addSeries();
303          }
304          return getSeries().get(0);
305        }
306
307        protected void listChildren(List<Property> children) {
308          super.listChildren(children);
309          children.add(new Property("uid", "oid", "Study instance UID of the SOP instances in the selection.", 0, 1, uid));
310          children.add(new Property("imagingStudy", "Reference(ImagingStudy)", "Reference to the Imaging Study in FHIR form.", 0, 1, imagingStudy));
311          children.add(new Property("endpoint", "Reference(Endpoint)", "The network service providing access (e.g., query, view, or retrieval) for the study. See implementation notes for information about using DICOM endpoints. A study-level endpoint applies to each series in the study, unless overridden by a series-level endpoint with the same Endpoint.type.", 0, java.lang.Integer.MAX_VALUE, endpoint));
312          children.add(new Property("series", "", "Series identity and locating information of the DICOM SOP instances in the selection.", 0, java.lang.Integer.MAX_VALUE, series));
313        }
314
315        @Override
316        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
317          switch (_hash) {
318          case 115792: /*uid*/  return new Property("uid", "oid", "Study instance UID of the SOP instances in the selection.", 0, 1, uid);
319          case -814900911: /*imagingStudy*/  return new Property("imagingStudy", "Reference(ImagingStudy)", "Reference to the Imaging Study in FHIR form.", 0, 1, imagingStudy);
320          case 1741102485: /*endpoint*/  return new Property("endpoint", "Reference(Endpoint)", "The network service providing access (e.g., query, view, or retrieval) for the study. See implementation notes for information about using DICOM endpoints. A study-level endpoint applies to each series in the study, unless overridden by a series-level endpoint with the same Endpoint.type.", 0, java.lang.Integer.MAX_VALUE, endpoint);
321          case -905838985: /*series*/  return new Property("series", "", "Series identity and locating information of the DICOM SOP instances in the selection.", 0, java.lang.Integer.MAX_VALUE, series);
322          default: return super.getNamedProperty(_hash, _name, _checkValid);
323          }
324
325        }
326
327      @Override
328      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
329        switch (hash) {
330        case 115792: /*uid*/ return this.uid == null ? new Base[0] : new Base[] {this.uid}; // OidType
331        case -814900911: /*imagingStudy*/ return this.imagingStudy == null ? new Base[0] : new Base[] {this.imagingStudy}; // Reference
332        case 1741102485: /*endpoint*/ return this.endpoint == null ? new Base[0] : this.endpoint.toArray(new Base[this.endpoint.size()]); // Reference
333        case -905838985: /*series*/ return this.series == null ? new Base[0] : this.series.toArray(new Base[this.series.size()]); // SeriesComponent
334        default: return super.getProperty(hash, name, checkValid);
335        }
336
337      }
338
339      @Override
340      public Base setProperty(int hash, String name, Base value) throws FHIRException {
341        switch (hash) {
342        case 115792: // uid
343          this.uid = castToOid(value); // OidType
344          return value;
345        case -814900911: // imagingStudy
346          this.imagingStudy = castToReference(value); // Reference
347          return value;
348        case 1741102485: // endpoint
349          this.getEndpoint().add(castToReference(value)); // Reference
350          return value;
351        case -905838985: // series
352          this.getSeries().add((SeriesComponent) value); // SeriesComponent
353          return value;
354        default: return super.setProperty(hash, name, value);
355        }
356
357      }
358
359      @Override
360      public Base setProperty(String name, Base value) throws FHIRException {
361        if (name.equals("uid")) {
362          this.uid = castToOid(value); // OidType
363        } else if (name.equals("imagingStudy")) {
364          this.imagingStudy = castToReference(value); // Reference
365        } else if (name.equals("endpoint")) {
366          this.getEndpoint().add(castToReference(value));
367        } else if (name.equals("series")) {
368          this.getSeries().add((SeriesComponent) value);
369        } else
370          return super.setProperty(name, value);
371        return value;
372      }
373
374      @Override
375      public Base makeProperty(int hash, String name) throws FHIRException {
376        switch (hash) {
377        case 115792:  return getUidElement();
378        case -814900911:  return getImagingStudy(); 
379        case 1741102485:  return addEndpoint(); 
380        case -905838985:  return addSeries(); 
381        default: return super.makeProperty(hash, name);
382        }
383
384      }
385
386      @Override
387      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
388        switch (hash) {
389        case 115792: /*uid*/ return new String[] {"oid"};
390        case -814900911: /*imagingStudy*/ return new String[] {"Reference"};
391        case 1741102485: /*endpoint*/ return new String[] {"Reference"};
392        case -905838985: /*series*/ return new String[] {};
393        default: return super.getTypesForProperty(hash, name);
394        }
395
396      }
397
398      @Override
399      public Base addChild(String name) throws FHIRException {
400        if (name.equals("uid")) {
401          throw new FHIRException("Cannot call addChild on a singleton property ImagingManifest.uid");
402        }
403        else if (name.equals("imagingStudy")) {
404          this.imagingStudy = new Reference();
405          return this.imagingStudy;
406        }
407        else if (name.equals("endpoint")) {
408          return addEndpoint();
409        }
410        else if (name.equals("series")) {
411          return addSeries();
412        }
413        else
414          return super.addChild(name);
415      }
416
417      public StudyComponent copy() {
418        StudyComponent dst = new StudyComponent();
419        copyValues(dst);
420        dst.uid = uid == null ? null : uid.copy();
421        dst.imagingStudy = imagingStudy == null ? null : imagingStudy.copy();
422        if (endpoint != null) {
423          dst.endpoint = new ArrayList<Reference>();
424          for (Reference i : endpoint)
425            dst.endpoint.add(i.copy());
426        };
427        if (series != null) {
428          dst.series = new ArrayList<SeriesComponent>();
429          for (SeriesComponent i : series)
430            dst.series.add(i.copy());
431        };
432        return dst;
433      }
434
435      @Override
436      public boolean equalsDeep(Base other_) {
437        if (!super.equalsDeep(other_))
438          return false;
439        if (!(other_ instanceof StudyComponent))
440          return false;
441        StudyComponent o = (StudyComponent) other_;
442        return compareDeep(uid, o.uid, true) && compareDeep(imagingStudy, o.imagingStudy, true) && compareDeep(endpoint, o.endpoint, true)
443           && compareDeep(series, o.series, true);
444      }
445
446      @Override
447      public boolean equalsShallow(Base other_) {
448        if (!super.equalsShallow(other_))
449          return false;
450        if (!(other_ instanceof StudyComponent))
451          return false;
452        StudyComponent o = (StudyComponent) other_;
453        return compareValues(uid, o.uid, true);
454      }
455
456      public boolean isEmpty() {
457        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(uid, imagingStudy, endpoint
458          , series);
459      }
460
461  public String fhirType() {
462    return "ImagingManifest.study";
463
464  }
465
466  }
467
468    @Block()
469    public static class SeriesComponent extends BackboneElement implements IBaseBackboneElement {
470        /**
471         * Series instance UID of the SOP instances in the selection.
472         */
473        @Child(name = "uid", type = {OidType.class}, order=1, min=1, max=1, modifier=false, summary=true)
474        @Description(shortDefinition="Series instance UID", formalDefinition="Series instance UID of the SOP instances in the selection." )
475        protected OidType uid;
476
477        /**
478         * The network service providing access (e.g., query, view, or retrieval) for this series. See implementation notes for information about using DICOM endpoints. A series-level endpoint, if present, has precedence over a study-level endpoint with the same Endpoint.type.
479         */
480        @Child(name = "endpoint", type = {Endpoint.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
481        @Description(shortDefinition="Series access endpoint", formalDefinition="The network service providing access (e.g., query, view, or retrieval) for this series. See implementation notes for information about using DICOM endpoints. A series-level endpoint, if present, has precedence over a study-level endpoint with the same Endpoint.type." )
482        protected List<Reference> endpoint;
483        /**
484         * The actual objects that are the target of the reference (The network service providing access (e.g., query, view, or retrieval) for this series. See implementation notes for information about using DICOM endpoints. A series-level endpoint, if present, has precedence over a study-level endpoint with the same Endpoint.type.)
485         */
486        protected List<Endpoint> endpointTarget;
487
488
489        /**
490         * Identity and locating information of the selected DICOM SOP instances.
491         */
492        @Child(name = "instance", type = {}, order=3, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
493        @Description(shortDefinition="The selected instance", formalDefinition="Identity and locating information of the selected DICOM SOP instances." )
494        protected List<InstanceComponent> instance;
495
496        private static final long serialVersionUID = -1682136598L;
497
498    /**
499     * Constructor
500     */
501      public SeriesComponent() {
502        super();
503      }
504
505    /**
506     * Constructor
507     */
508      public SeriesComponent(OidType uid) {
509        super();
510        this.uid = uid;
511      }
512
513        /**
514         * @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
515         */
516        public OidType getUidElement() { 
517          if (this.uid == null)
518            if (Configuration.errorOnAutoCreate())
519              throw new Error("Attempt to auto-create SeriesComponent.uid");
520            else if (Configuration.doAutoCreate())
521              this.uid = new OidType(); // bb
522          return this.uid;
523        }
524
525        public boolean hasUidElement() { 
526          return this.uid != null && !this.uid.isEmpty();
527        }
528
529        public boolean hasUid() { 
530          return this.uid != null && !this.uid.isEmpty();
531        }
532
533        /**
534         * @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
535         */
536        public SeriesComponent setUidElement(OidType value) { 
537          this.uid = value;
538          return this;
539        }
540
541        /**
542         * @return Series instance UID of the SOP instances in the selection.
543         */
544        public String getUid() { 
545          return this.uid == null ? null : this.uid.getValue();
546        }
547
548        /**
549         * @param value Series instance UID of the SOP instances in the selection.
550         */
551        public SeriesComponent setUid(String value) { 
552            if (this.uid == null)
553              this.uid = new OidType();
554            this.uid.setValue(value);
555          return this;
556        }
557
558        /**
559         * @return {@link #endpoint} (The network service providing access (e.g., query, view, or retrieval) for this series. See implementation notes for information about using DICOM endpoints. A series-level endpoint, if present, has precedence over a study-level endpoint with the same Endpoint.type.)
560         */
561        public List<Reference> getEndpoint() { 
562          if (this.endpoint == null)
563            this.endpoint = new ArrayList<Reference>();
564          return this.endpoint;
565        }
566
567        /**
568         * @return Returns a reference to <code>this</code> for easy method chaining
569         */
570        public SeriesComponent setEndpoint(List<Reference> theEndpoint) { 
571          this.endpoint = theEndpoint;
572          return this;
573        }
574
575        public boolean hasEndpoint() { 
576          if (this.endpoint == null)
577            return false;
578          for (Reference item : this.endpoint)
579            if (!item.isEmpty())
580              return true;
581          return false;
582        }
583
584        public Reference addEndpoint() { //3
585          Reference t = new Reference();
586          if (this.endpoint == null)
587            this.endpoint = new ArrayList<Reference>();
588          this.endpoint.add(t);
589          return t;
590        }
591
592        public SeriesComponent addEndpoint(Reference t) { //3
593          if (t == null)
594            return this;
595          if (this.endpoint == null)
596            this.endpoint = new ArrayList<Reference>();
597          this.endpoint.add(t);
598          return this;
599        }
600
601        /**
602         * @return The first repetition of repeating field {@link #endpoint}, creating it if it does not already exist
603         */
604        public Reference getEndpointFirstRep() { 
605          if (getEndpoint().isEmpty()) {
606            addEndpoint();
607          }
608          return getEndpoint().get(0);
609        }
610
611        /**
612         * @return {@link #instance} (Identity and locating information of the selected DICOM SOP instances.)
613         */
614        public List<InstanceComponent> getInstance() { 
615          if (this.instance == null)
616            this.instance = new ArrayList<InstanceComponent>();
617          return this.instance;
618        }
619
620        /**
621         * @return Returns a reference to <code>this</code> for easy method chaining
622         */
623        public SeriesComponent setInstance(List<InstanceComponent> theInstance) { 
624          this.instance = theInstance;
625          return this;
626        }
627
628        public boolean hasInstance() { 
629          if (this.instance == null)
630            return false;
631          for (InstanceComponent item : this.instance)
632            if (!item.isEmpty())
633              return true;
634          return false;
635        }
636
637        public InstanceComponent addInstance() { //3
638          InstanceComponent t = new InstanceComponent();
639          if (this.instance == null)
640            this.instance = new ArrayList<InstanceComponent>();
641          this.instance.add(t);
642          return t;
643        }
644
645        public SeriesComponent addInstance(InstanceComponent t) { //3
646          if (t == null)
647            return this;
648          if (this.instance == null)
649            this.instance = new ArrayList<InstanceComponent>();
650          this.instance.add(t);
651          return this;
652        }
653
654        /**
655         * @return The first repetition of repeating field {@link #instance}, creating it if it does not already exist
656         */
657        public InstanceComponent getInstanceFirstRep() { 
658          if (getInstance().isEmpty()) {
659            addInstance();
660          }
661          return getInstance().get(0);
662        }
663
664        protected void listChildren(List<Property> children) {
665          super.listChildren(children);
666          children.add(new Property("uid", "oid", "Series instance UID of the SOP instances in the selection.", 0, 1, uid));
667          children.add(new Property("endpoint", "Reference(Endpoint)", "The network service providing access (e.g., query, view, or retrieval) for this series. See implementation notes for information about using DICOM endpoints. A series-level endpoint, if present, has precedence over a study-level endpoint with the same Endpoint.type.", 0, java.lang.Integer.MAX_VALUE, endpoint));
668          children.add(new Property("instance", "", "Identity and locating information of the selected DICOM SOP instances.", 0, java.lang.Integer.MAX_VALUE, instance));
669        }
670
671        @Override
672        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
673          switch (_hash) {
674          case 115792: /*uid*/  return new Property("uid", "oid", "Series instance UID of the SOP instances in the selection.", 0, 1, uid);
675          case 1741102485: /*endpoint*/  return new Property("endpoint", "Reference(Endpoint)", "The network service providing access (e.g., query, view, or retrieval) for this series. See implementation notes for information about using DICOM endpoints. A series-level endpoint, if present, has precedence over a study-level endpoint with the same Endpoint.type.", 0, java.lang.Integer.MAX_VALUE, endpoint);
676          case 555127957: /*instance*/  return new Property("instance", "", "Identity and locating information of the selected DICOM SOP instances.", 0, java.lang.Integer.MAX_VALUE, instance);
677          default: return super.getNamedProperty(_hash, _name, _checkValid);
678          }
679
680        }
681
682      @Override
683      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
684        switch (hash) {
685        case 115792: /*uid*/ return this.uid == null ? new Base[0] : new Base[] {this.uid}; // OidType
686        case 1741102485: /*endpoint*/ return this.endpoint == null ? new Base[0] : this.endpoint.toArray(new Base[this.endpoint.size()]); // Reference
687        case 555127957: /*instance*/ return this.instance == null ? new Base[0] : this.instance.toArray(new Base[this.instance.size()]); // InstanceComponent
688        default: return super.getProperty(hash, name, checkValid);
689        }
690
691      }
692
693      @Override
694      public Base setProperty(int hash, String name, Base value) throws FHIRException {
695        switch (hash) {
696        case 115792: // uid
697          this.uid = castToOid(value); // OidType
698          return value;
699        case 1741102485: // endpoint
700          this.getEndpoint().add(castToReference(value)); // Reference
701          return value;
702        case 555127957: // instance
703          this.getInstance().add((InstanceComponent) value); // InstanceComponent
704          return value;
705        default: return super.setProperty(hash, name, value);
706        }
707
708      }
709
710      @Override
711      public Base setProperty(String name, Base value) throws FHIRException {
712        if (name.equals("uid")) {
713          this.uid = castToOid(value); // OidType
714        } else if (name.equals("endpoint")) {
715          this.getEndpoint().add(castToReference(value));
716        } else if (name.equals("instance")) {
717          this.getInstance().add((InstanceComponent) value);
718        } else
719          return super.setProperty(name, value);
720        return value;
721      }
722
723      @Override
724      public Base makeProperty(int hash, String name) throws FHIRException {
725        switch (hash) {
726        case 115792:  return getUidElement();
727        case 1741102485:  return addEndpoint(); 
728        case 555127957:  return addInstance(); 
729        default: return super.makeProperty(hash, name);
730        }
731
732      }
733
734      @Override
735      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
736        switch (hash) {
737        case 115792: /*uid*/ return new String[] {"oid"};
738        case 1741102485: /*endpoint*/ return new String[] {"Reference"};
739        case 555127957: /*instance*/ return new String[] {};
740        default: return super.getTypesForProperty(hash, name);
741        }
742
743      }
744
745      @Override
746      public Base addChild(String name) throws FHIRException {
747        if (name.equals("uid")) {
748          throw new FHIRException("Cannot call addChild on a singleton property ImagingManifest.uid");
749        }
750        else if (name.equals("endpoint")) {
751          return addEndpoint();
752        }
753        else if (name.equals("instance")) {
754          return addInstance();
755        }
756        else
757          return super.addChild(name);
758      }
759
760      public SeriesComponent copy() {
761        SeriesComponent dst = new SeriesComponent();
762        copyValues(dst);
763        dst.uid = uid == null ? null : uid.copy();
764        if (endpoint != null) {
765          dst.endpoint = new ArrayList<Reference>();
766          for (Reference i : endpoint)
767            dst.endpoint.add(i.copy());
768        };
769        if (instance != null) {
770          dst.instance = new ArrayList<InstanceComponent>();
771          for (InstanceComponent i : instance)
772            dst.instance.add(i.copy());
773        };
774        return dst;
775      }
776
777      @Override
778      public boolean equalsDeep(Base other_) {
779        if (!super.equalsDeep(other_))
780          return false;
781        if (!(other_ instanceof SeriesComponent))
782          return false;
783        SeriesComponent o = (SeriesComponent) other_;
784        return compareDeep(uid, o.uid, true) && compareDeep(endpoint, o.endpoint, true) && compareDeep(instance, o.instance, true)
785          ;
786      }
787
788      @Override
789      public boolean equalsShallow(Base other_) {
790        if (!super.equalsShallow(other_))
791          return false;
792        if (!(other_ instanceof SeriesComponent))
793          return false;
794        SeriesComponent o = (SeriesComponent) other_;
795        return compareValues(uid, o.uid, true);
796      }
797
798      public boolean isEmpty() {
799        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(uid, endpoint, instance
800          );
801      }
802
803  public String fhirType() {
804    return "ImagingManifest.study.series";
805
806  }
807
808  }
809
810    @Block()
811    public static class InstanceComponent extends BackboneElement implements IBaseBackboneElement {
812        /**
813         * SOP class UID of the selected instance.
814         */
815        @Child(name = "sopClass", type = {OidType.class}, order=1, min=1, max=1, modifier=false, summary=true)
816        @Description(shortDefinition="SOP class UID of instance", formalDefinition="SOP class UID of the selected instance." )
817        protected OidType sopClass;
818
819        /**
820         * SOP Instance UID of the selected instance.
821         */
822        @Child(name = "uid", type = {OidType.class}, order=2, min=1, max=1, modifier=false, summary=true)
823        @Description(shortDefinition="Selected instance UID", formalDefinition="SOP Instance UID of the selected instance." )
824        protected OidType uid;
825
826        private static final long serialVersionUID = -885780004L;
827
828    /**
829     * Constructor
830     */
831      public InstanceComponent() {
832        super();
833      }
834
835    /**
836     * Constructor
837     */
838      public InstanceComponent(OidType sopClass, OidType uid) {
839        super();
840        this.sopClass = sopClass;
841        this.uid = uid;
842      }
843
844        /**
845         * @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
846         */
847        public OidType getSopClassElement() { 
848          if (this.sopClass == null)
849            if (Configuration.errorOnAutoCreate())
850              throw new Error("Attempt to auto-create InstanceComponent.sopClass");
851            else if (Configuration.doAutoCreate())
852              this.sopClass = new OidType(); // bb
853          return this.sopClass;
854        }
855
856        public boolean hasSopClassElement() { 
857          return this.sopClass != null && !this.sopClass.isEmpty();
858        }
859
860        public boolean hasSopClass() { 
861          return this.sopClass != null && !this.sopClass.isEmpty();
862        }
863
864        /**
865         * @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
866         */
867        public InstanceComponent setSopClassElement(OidType value) { 
868          this.sopClass = value;
869          return this;
870        }
871
872        /**
873         * @return SOP class UID of the selected instance.
874         */
875        public String getSopClass() { 
876          return this.sopClass == null ? null : this.sopClass.getValue();
877        }
878
879        /**
880         * @param value SOP class UID of the selected instance.
881         */
882        public InstanceComponent setSopClass(String value) { 
883            if (this.sopClass == null)
884              this.sopClass = new OidType();
885            this.sopClass.setValue(value);
886          return this;
887        }
888
889        /**
890         * @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
891         */
892        public OidType getUidElement() { 
893          if (this.uid == null)
894            if (Configuration.errorOnAutoCreate())
895              throw new Error("Attempt to auto-create InstanceComponent.uid");
896            else if (Configuration.doAutoCreate())
897              this.uid = new OidType(); // bb
898          return this.uid;
899        }
900
901        public boolean hasUidElement() { 
902          return this.uid != null && !this.uid.isEmpty();
903        }
904
905        public boolean hasUid() { 
906          return this.uid != null && !this.uid.isEmpty();
907        }
908
909        /**
910         * @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
911         */
912        public InstanceComponent setUidElement(OidType value) { 
913          this.uid = value;
914          return this;
915        }
916
917        /**
918         * @return SOP Instance UID of the selected instance.
919         */
920        public String getUid() { 
921          return this.uid == null ? null : this.uid.getValue();
922        }
923
924        /**
925         * @param value SOP Instance UID of the selected instance.
926         */
927        public InstanceComponent setUid(String value) { 
928            if (this.uid == null)
929              this.uid = new OidType();
930            this.uid.setValue(value);
931          return this;
932        }
933
934        protected void listChildren(List<Property> children) {
935          super.listChildren(children);
936          children.add(new Property("sopClass", "oid", "SOP class UID of the selected instance.", 0, 1, sopClass));
937          children.add(new Property("uid", "oid", "SOP Instance UID of the selected instance.", 0, 1, uid));
938        }
939
940        @Override
941        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
942          switch (_hash) {
943          case 1560041540: /*sopClass*/  return new Property("sopClass", "oid", "SOP class UID of the selected instance.", 0, 1, sopClass);
944          case 115792: /*uid*/  return new Property("uid", "oid", "SOP Instance UID of the selected instance.", 0, 1, uid);
945          default: return super.getNamedProperty(_hash, _name, _checkValid);
946          }
947
948        }
949
950      @Override
951      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
952        switch (hash) {
953        case 1560041540: /*sopClass*/ return this.sopClass == null ? new Base[0] : new Base[] {this.sopClass}; // OidType
954        case 115792: /*uid*/ return this.uid == null ? new Base[0] : new Base[] {this.uid}; // OidType
955        default: return super.getProperty(hash, name, checkValid);
956        }
957
958      }
959
960      @Override
961      public Base setProperty(int hash, String name, Base value) throws FHIRException {
962        switch (hash) {
963        case 1560041540: // sopClass
964          this.sopClass = castToOid(value); // OidType
965          return value;
966        case 115792: // uid
967          this.uid = castToOid(value); // OidType
968          return value;
969        default: return super.setProperty(hash, name, value);
970        }
971
972      }
973
974      @Override
975      public Base 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
981          return super.setProperty(name, value);
982        return value;
983      }
984
985      @Override
986      public Base makeProperty(int hash, String name) throws FHIRException {
987        switch (hash) {
988        case 1560041540:  return getSopClassElement();
989        case 115792:  return getUidElement();
990        default: return super.makeProperty(hash, name);
991        }
992
993      }
994
995      @Override
996      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
997        switch (hash) {
998        case 1560041540: /*sopClass*/ return new String[] {"oid"};
999        case 115792: /*uid*/ return new String[] {"oid"};
1000        default: return super.getTypesForProperty(hash, name);
1001        }
1002
1003      }
1004
1005      @Override
1006      public Base addChild(String name) throws FHIRException {
1007        if (name.equals("sopClass")) {
1008          throw new FHIRException("Cannot call addChild on a singleton property ImagingManifest.sopClass");
1009        }
1010        else if (name.equals("uid")) {
1011          throw new FHIRException("Cannot call addChild on a singleton property ImagingManifest.uid");
1012        }
1013        else
1014          return super.addChild(name);
1015      }
1016
1017      public InstanceComponent copy() {
1018        InstanceComponent dst = new InstanceComponent();
1019        copyValues(dst);
1020        dst.sopClass = sopClass == null ? null : sopClass.copy();
1021        dst.uid = uid == null ? null : uid.copy();
1022        return dst;
1023      }
1024
1025      @Override
1026      public boolean equalsDeep(Base other_) {
1027        if (!super.equalsDeep(other_))
1028          return false;
1029        if (!(other_ instanceof InstanceComponent))
1030          return false;
1031        InstanceComponent o = (InstanceComponent) other_;
1032        return compareDeep(sopClass, o.sopClass, true) && compareDeep(uid, o.uid, true);
1033      }
1034
1035      @Override
1036      public boolean equalsShallow(Base other_) {
1037        if (!super.equalsShallow(other_))
1038          return false;
1039        if (!(other_ instanceof InstanceComponent))
1040          return false;
1041        InstanceComponent o = (InstanceComponent) other_;
1042        return compareValues(sopClass, o.sopClass, true) && compareValues(uid, o.uid, true);
1043      }
1044
1045      public boolean isEmpty() {
1046        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(sopClass, uid);
1047      }
1048
1049  public String fhirType() {
1050    return "ImagingManifest.study.series.instance";
1051
1052  }
1053
1054  }
1055
1056    /**
1057     * Unique identifier of the DICOM Key Object Selection (KOS) that this resource represents.
1058     */
1059    @Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=1, modifier=false, summary=true)
1060    @Description(shortDefinition="SOP Instance UID", formalDefinition="Unique identifier of the DICOM Key Object Selection (KOS) that this resource represents." )
1061    protected Identifier identifier;
1062
1063    /**
1064     * A patient resource reference which is the patient subject of all DICOM SOP Instances in this ImagingManifest.
1065     */
1066    @Child(name = "patient", type = {Patient.class}, order=1, min=1, max=1, modifier=false, summary=true)
1067    @Description(shortDefinition="Patient of the selected objects", formalDefinition="A patient resource reference which is the patient subject of all DICOM SOP Instances in this ImagingManifest." )
1068    protected Reference patient;
1069
1070    /**
1071     * 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 ImagingManifest.)
1072     */
1073    protected Patient patientTarget;
1074
1075    /**
1076     * 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).
1077     */
1078    @Child(name = "authoringTime", type = {DateTimeType.class}, order=2, min=0, max=1, modifier=false, summary=true)
1079    @Description(shortDefinition="Time when the selection of instances was made", 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)." )
1080    protected DateTimeType authoringTime;
1081
1082    /**
1083     * Author of ImagingManifest. 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.
1084     */
1085    @Child(name = "author", type = {Practitioner.class, Device.class, Organization.class, Patient.class, RelatedPerson.class}, order=3, min=0, max=1, modifier=false, summary=true)
1086    @Description(shortDefinition="Author (human or machine)", formalDefinition="Author of ImagingManifest. 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." )
1087    protected Reference author;
1088
1089    /**
1090     * The actual object that is the target of the reference (Author of ImagingManifest. 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.)
1091     */
1092    protected Resource authorTarget;
1093
1094    /**
1095     * Free text narrative description of the ImagingManifest.  
1096The value may be derived from the DICOM Standard Part 16, CID-7010 descriptions (e.g. Best in Set, Complete Study Content). Note that those values cover the wide range of uses of the DICOM Key Object Selection object, several of which are not supported by ImagingManifest. Specifically, there is no expected behavior associated with descriptions that suggest referenced images be removed or not used.
1097     */
1098    @Child(name = "description", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=true)
1099    @Description(shortDefinition="Description text", formalDefinition="Free text narrative description of the ImagingManifest.  \nThe value may be derived from the DICOM Standard Part 16, CID-7010 descriptions (e.g. Best in Set, Complete Study Content). Note that those values cover the wide range of uses of the DICOM Key Object Selection object, several of which are not supported by ImagingManifest. Specifically, there is no expected behavior associated with descriptions that suggest referenced images be removed or not used." )
1100    protected StringType description;
1101
1102    /**
1103     * Study identity and locating information of the DICOM SOP instances in the selection.
1104     */
1105    @Child(name = "study", type = {}, order=5, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1106    @Description(shortDefinition="Study identity of the selected instances", formalDefinition="Study identity and locating information of the DICOM SOP instances in the selection." )
1107    protected List<StudyComponent> study;
1108
1109    private static final long serialVersionUID = 245941978L;
1110
1111  /**
1112   * Constructor
1113   */
1114    public ImagingManifest() {
1115      super();
1116    }
1117
1118  /**
1119   * Constructor
1120   */
1121    public ImagingManifest(Reference patient) {
1122      super();
1123      this.patient = patient;
1124    }
1125
1126    /**
1127     * @return {@link #identifier} (Unique identifier of the DICOM Key Object Selection (KOS) that this resource represents.)
1128     */
1129    public Identifier getIdentifier() { 
1130      if (this.identifier == null)
1131        if (Configuration.errorOnAutoCreate())
1132          throw new Error("Attempt to auto-create ImagingManifest.identifier");
1133        else if (Configuration.doAutoCreate())
1134          this.identifier = new Identifier(); // cc
1135      return this.identifier;
1136    }
1137
1138    public boolean hasIdentifier() { 
1139      return this.identifier != null && !this.identifier.isEmpty();
1140    }
1141
1142    /**
1143     * @param value {@link #identifier} (Unique identifier of the DICOM Key Object Selection (KOS) that this resource represents.)
1144     */
1145    public ImagingManifest setIdentifier(Identifier value)  { 
1146      this.identifier = value;
1147      return this;
1148    }
1149
1150    /**
1151     * @return {@link #patient} (A patient resource reference which is the patient subject of all DICOM SOP Instances in this ImagingManifest.)
1152     */
1153    public Reference getPatient() { 
1154      if (this.patient == null)
1155        if (Configuration.errorOnAutoCreate())
1156          throw new Error("Attempt to auto-create ImagingManifest.patient");
1157        else if (Configuration.doAutoCreate())
1158          this.patient = new Reference(); // cc
1159      return this.patient;
1160    }
1161
1162    public boolean hasPatient() { 
1163      return this.patient != null && !this.patient.isEmpty();
1164    }
1165
1166    /**
1167     * @param value {@link #patient} (A patient resource reference which is the patient subject of all DICOM SOP Instances in this ImagingManifest.)
1168     */
1169    public ImagingManifest setPatient(Reference value)  { 
1170      this.patient = value;
1171      return this;
1172    }
1173
1174    /**
1175     * @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 ImagingManifest.)
1176     */
1177    public Patient getPatientTarget() { 
1178      if (this.patientTarget == null)
1179        if (Configuration.errorOnAutoCreate())
1180          throw new Error("Attempt to auto-create ImagingManifest.patient");
1181        else if (Configuration.doAutoCreate())
1182          this.patientTarget = new Patient(); // aa
1183      return this.patientTarget;
1184    }
1185
1186    /**
1187     * @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 ImagingManifest.)
1188     */
1189    public ImagingManifest setPatientTarget(Patient value) { 
1190      this.patientTarget = value;
1191      return this;
1192    }
1193
1194    /**
1195     * @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
1196     */
1197    public DateTimeType getAuthoringTimeElement() { 
1198      if (this.authoringTime == null)
1199        if (Configuration.errorOnAutoCreate())
1200          throw new Error("Attempt to auto-create ImagingManifest.authoringTime");
1201        else if (Configuration.doAutoCreate())
1202          this.authoringTime = new DateTimeType(); // bb
1203      return this.authoringTime;
1204    }
1205
1206    public boolean hasAuthoringTimeElement() { 
1207      return this.authoringTime != null && !this.authoringTime.isEmpty();
1208    }
1209
1210    public boolean hasAuthoringTime() { 
1211      return this.authoringTime != null && !this.authoringTime.isEmpty();
1212    }
1213
1214    /**
1215     * @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
1216     */
1217    public ImagingManifest setAuthoringTimeElement(DateTimeType value) { 
1218      this.authoringTime = value;
1219      return this;
1220    }
1221
1222    /**
1223     * @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).
1224     */
1225    public Date getAuthoringTime() { 
1226      return this.authoringTime == null ? null : this.authoringTime.getValue();
1227    }
1228
1229    /**
1230     * @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).
1231     */
1232    public ImagingManifest setAuthoringTime(Date value) { 
1233      if (value == null)
1234        this.authoringTime = null;
1235      else {
1236        if (this.authoringTime == null)
1237          this.authoringTime = new DateTimeType();
1238        this.authoringTime.setValue(value);
1239      }
1240      return this;
1241    }
1242
1243    /**
1244     * @return {@link #author} (Author of ImagingManifest. 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.)
1245     */
1246    public Reference getAuthor() { 
1247      if (this.author == null)
1248        if (Configuration.errorOnAutoCreate())
1249          throw new Error("Attempt to auto-create ImagingManifest.author");
1250        else if (Configuration.doAutoCreate())
1251          this.author = new Reference(); // cc
1252      return this.author;
1253    }
1254
1255    public boolean hasAuthor() { 
1256      return this.author != null && !this.author.isEmpty();
1257    }
1258
1259    /**
1260     * @param value {@link #author} (Author of ImagingManifest. 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.)
1261     */
1262    public ImagingManifest setAuthor(Reference value)  { 
1263      this.author = value;
1264      return this;
1265    }
1266
1267    /**
1268     * @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 ImagingManifest. 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.)
1269     */
1270    public Resource getAuthorTarget() { 
1271      return this.authorTarget;
1272    }
1273
1274    /**
1275     * @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 ImagingManifest. 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.)
1276     */
1277    public ImagingManifest setAuthorTarget(Resource value) { 
1278      this.authorTarget = value;
1279      return this;
1280    }
1281
1282    /**
1283     * @return {@link #description} (Free text narrative description of the ImagingManifest.  
1284The value may be derived from the DICOM Standard Part 16, CID-7010 descriptions (e.g. Best in Set, Complete Study Content). Note that those values cover the wide range of uses of the DICOM Key Object Selection object, several of which are not supported by ImagingManifest. Specifically, there is no expected behavior associated with descriptions that suggest referenced images be removed or not used.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
1285     */
1286    public StringType getDescriptionElement() { 
1287      if (this.description == null)
1288        if (Configuration.errorOnAutoCreate())
1289          throw new Error("Attempt to auto-create ImagingManifest.description");
1290        else if (Configuration.doAutoCreate())
1291          this.description = new StringType(); // bb
1292      return this.description;
1293    }
1294
1295    public boolean hasDescriptionElement() { 
1296      return this.description != null && !this.description.isEmpty();
1297    }
1298
1299    public boolean hasDescription() { 
1300      return this.description != null && !this.description.isEmpty();
1301    }
1302
1303    /**
1304     * @param value {@link #description} (Free text narrative description of the ImagingManifest.  
1305The value may be derived from the DICOM Standard Part 16, CID-7010 descriptions (e.g. Best in Set, Complete Study Content). Note that those values cover the wide range of uses of the DICOM Key Object Selection object, several of which are not supported by ImagingManifest. Specifically, there is no expected behavior associated with descriptions that suggest referenced images be removed or not used.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
1306     */
1307    public ImagingManifest setDescriptionElement(StringType value) { 
1308      this.description = value;
1309      return this;
1310    }
1311
1312    /**
1313     * @return Free text narrative description of the ImagingManifest.  
1314The value may be derived from the DICOM Standard Part 16, CID-7010 descriptions (e.g. Best in Set, Complete Study Content). Note that those values cover the wide range of uses of the DICOM Key Object Selection object, several of which are not supported by ImagingManifest. Specifically, there is no expected behavior associated with descriptions that suggest referenced images be removed or not used.
1315     */
1316    public String getDescription() { 
1317      return this.description == null ? null : this.description.getValue();
1318    }
1319
1320    /**
1321     * @param value Free text narrative description of the ImagingManifest.  
1322The value may be derived from the DICOM Standard Part 16, CID-7010 descriptions (e.g. Best in Set, Complete Study Content). Note that those values cover the wide range of uses of the DICOM Key Object Selection object, several of which are not supported by ImagingManifest. Specifically, there is no expected behavior associated with descriptions that suggest referenced images be removed or not used.
1323     */
1324    public ImagingManifest setDescription(String value) { 
1325      if (Utilities.noString(value))
1326        this.description = null;
1327      else {
1328        if (this.description == null)
1329          this.description = new StringType();
1330        this.description.setValue(value);
1331      }
1332      return this;
1333    }
1334
1335    /**
1336     * @return {@link #study} (Study identity and locating information of the DICOM SOP instances in the selection.)
1337     */
1338    public List<StudyComponent> getStudy() { 
1339      if (this.study == null)
1340        this.study = new ArrayList<StudyComponent>();
1341      return this.study;
1342    }
1343
1344    /**
1345     * @return Returns a reference to <code>this</code> for easy method chaining
1346     */
1347    public ImagingManifest setStudy(List<StudyComponent> theStudy) { 
1348      this.study = theStudy;
1349      return this;
1350    }
1351
1352    public boolean hasStudy() { 
1353      if (this.study == null)
1354        return false;
1355      for (StudyComponent item : this.study)
1356        if (!item.isEmpty())
1357          return true;
1358      return false;
1359    }
1360
1361    public StudyComponent addStudy() { //3
1362      StudyComponent t = new StudyComponent();
1363      if (this.study == null)
1364        this.study = new ArrayList<StudyComponent>();
1365      this.study.add(t);
1366      return t;
1367    }
1368
1369    public ImagingManifest addStudy(StudyComponent t) { //3
1370      if (t == null)
1371        return this;
1372      if (this.study == null)
1373        this.study = new ArrayList<StudyComponent>();
1374      this.study.add(t);
1375      return this;
1376    }
1377
1378    /**
1379     * @return The first repetition of repeating field {@link #study}, creating it if it does not already exist
1380     */
1381    public StudyComponent getStudyFirstRep() { 
1382      if (getStudy().isEmpty()) {
1383        addStudy();
1384      }
1385      return getStudy().get(0);
1386    }
1387
1388      protected void listChildren(List<Property> children) {
1389        super.listChildren(children);
1390        children.add(new Property("identifier", "Identifier", "Unique identifier of the DICOM Key Object Selection (KOS) that this resource represents.", 0, 1, identifier));
1391        children.add(new Property("patient", "Reference(Patient)", "A patient resource reference which is the patient subject of all DICOM SOP Instances in this ImagingManifest.", 0, 1, patient));
1392        children.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, 1, authoringTime));
1393        children.add(new Property("author", "Reference(Practitioner|Device|Organization|Patient|RelatedPerson)", "Author of ImagingManifest. 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, 1, author));
1394        children.add(new Property("description", "string", "Free text narrative description of the ImagingManifest.  \nThe value may be derived from the DICOM Standard Part 16, CID-7010 descriptions (e.g. Best in Set, Complete Study Content). Note that those values cover the wide range of uses of the DICOM Key Object Selection object, several of which are not supported by ImagingManifest. Specifically, there is no expected behavior associated with descriptions that suggest referenced images be removed or not used.", 0, 1, description));
1395        children.add(new Property("study", "", "Study identity and locating information of the DICOM SOP instances in the selection.", 0, java.lang.Integer.MAX_VALUE, study));
1396      }
1397
1398      @Override
1399      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1400        switch (_hash) {
1401        case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "Unique identifier of the DICOM Key Object Selection (KOS) that this resource represents.", 0, 1, identifier);
1402        case -791418107: /*patient*/  return new Property("patient", "Reference(Patient)", "A patient resource reference which is the patient subject of all DICOM SOP Instances in this ImagingManifest.", 0, 1, patient);
1403        case -1724532252: /*authoringTime*/  return 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, 1, authoringTime);
1404        case -1406328437: /*author*/  return new Property("author", "Reference(Practitioner|Device|Organization|Patient|RelatedPerson)", "Author of ImagingManifest. 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, 1, author);
1405        case -1724546052: /*description*/  return new Property("description", "string", "Free text narrative description of the ImagingManifest.  \nThe value may be derived from the DICOM Standard Part 16, CID-7010 descriptions (e.g. Best in Set, Complete Study Content). Note that those values cover the wide range of uses of the DICOM Key Object Selection object, several of which are not supported by ImagingManifest. Specifically, there is no expected behavior associated with descriptions that suggest referenced images be removed or not used.", 0, 1, description);
1406        case 109776329: /*study*/  return new Property("study", "", "Study identity and locating information of the DICOM SOP instances in the selection.", 0, java.lang.Integer.MAX_VALUE, study);
1407        default: return super.getNamedProperty(_hash, _name, _checkValid);
1408        }
1409
1410      }
1411
1412      @Override
1413      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1414        switch (hash) {
1415        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : new Base[] {this.identifier}; // Identifier
1416        case -791418107: /*patient*/ return this.patient == null ? new Base[0] : new Base[] {this.patient}; // Reference
1417        case -1724532252: /*authoringTime*/ return this.authoringTime == null ? new Base[0] : new Base[] {this.authoringTime}; // DateTimeType
1418        case -1406328437: /*author*/ return this.author == null ? new Base[0] : new Base[] {this.author}; // Reference
1419        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // StringType
1420        case 109776329: /*study*/ return this.study == null ? new Base[0] : this.study.toArray(new Base[this.study.size()]); // StudyComponent
1421        default: return super.getProperty(hash, name, checkValid);
1422        }
1423
1424      }
1425
1426      @Override
1427      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1428        switch (hash) {
1429        case -1618432855: // identifier
1430          this.identifier = castToIdentifier(value); // Identifier
1431          return value;
1432        case -791418107: // patient
1433          this.patient = castToReference(value); // Reference
1434          return value;
1435        case -1724532252: // authoringTime
1436          this.authoringTime = castToDateTime(value); // DateTimeType
1437          return value;
1438        case -1406328437: // author
1439          this.author = castToReference(value); // Reference
1440          return value;
1441        case -1724546052: // description
1442          this.description = castToString(value); // StringType
1443          return value;
1444        case 109776329: // study
1445          this.getStudy().add((StudyComponent) value); // StudyComponent
1446          return value;
1447        default: return super.setProperty(hash, name, value);
1448        }
1449
1450      }
1451
1452      @Override
1453      public Base setProperty(String name, Base value) throws FHIRException {
1454        if (name.equals("identifier")) {
1455          this.identifier = castToIdentifier(value); // Identifier
1456        } else if (name.equals("patient")) {
1457          this.patient = castToReference(value); // Reference
1458        } else if (name.equals("authoringTime")) {
1459          this.authoringTime = castToDateTime(value); // DateTimeType
1460        } else if (name.equals("author")) {
1461          this.author = castToReference(value); // Reference
1462        } else if (name.equals("description")) {
1463          this.description = castToString(value); // StringType
1464        } else if (name.equals("study")) {
1465          this.getStudy().add((StudyComponent) value);
1466        } else
1467          return super.setProperty(name, value);
1468        return value;
1469      }
1470
1471      @Override
1472      public Base makeProperty(int hash, String name) throws FHIRException {
1473        switch (hash) {
1474        case -1618432855:  return getIdentifier(); 
1475        case -791418107:  return getPatient(); 
1476        case -1724532252:  return getAuthoringTimeElement();
1477        case -1406328437:  return getAuthor(); 
1478        case -1724546052:  return getDescriptionElement();
1479        case 109776329:  return addStudy(); 
1480        default: return super.makeProperty(hash, name);
1481        }
1482
1483      }
1484
1485      @Override
1486      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1487        switch (hash) {
1488        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
1489        case -791418107: /*patient*/ return new String[] {"Reference"};
1490        case -1724532252: /*authoringTime*/ return new String[] {"dateTime"};
1491        case -1406328437: /*author*/ return new String[] {"Reference"};
1492        case -1724546052: /*description*/ return new String[] {"string"};
1493        case 109776329: /*study*/ return new String[] {};
1494        default: return super.getTypesForProperty(hash, name);
1495        }
1496
1497      }
1498
1499      @Override
1500      public Base addChild(String name) throws FHIRException {
1501        if (name.equals("identifier")) {
1502          this.identifier = new Identifier();
1503          return this.identifier;
1504        }
1505        else if (name.equals("patient")) {
1506          this.patient = new Reference();
1507          return this.patient;
1508        }
1509        else if (name.equals("authoringTime")) {
1510          throw new FHIRException("Cannot call addChild on a singleton property ImagingManifest.authoringTime");
1511        }
1512        else if (name.equals("author")) {
1513          this.author = new Reference();
1514          return this.author;
1515        }
1516        else if (name.equals("description")) {
1517          throw new FHIRException("Cannot call addChild on a singleton property ImagingManifest.description");
1518        }
1519        else if (name.equals("study")) {
1520          return addStudy();
1521        }
1522        else
1523          return super.addChild(name);
1524      }
1525
1526  public String fhirType() {
1527    return "ImagingManifest";
1528
1529  }
1530
1531      public ImagingManifest copy() {
1532        ImagingManifest dst = new ImagingManifest();
1533        copyValues(dst);
1534        dst.identifier = identifier == null ? null : identifier.copy();
1535        dst.patient = patient == null ? null : patient.copy();
1536        dst.authoringTime = authoringTime == null ? null : authoringTime.copy();
1537        dst.author = author == null ? null : author.copy();
1538        dst.description = description == null ? null : description.copy();
1539        if (study != null) {
1540          dst.study = new ArrayList<StudyComponent>();
1541          for (StudyComponent i : study)
1542            dst.study.add(i.copy());
1543        };
1544        return dst;
1545      }
1546
1547      protected ImagingManifest typedCopy() {
1548        return copy();
1549      }
1550
1551      @Override
1552      public boolean equalsDeep(Base other_) {
1553        if (!super.equalsDeep(other_))
1554          return false;
1555        if (!(other_ instanceof ImagingManifest))
1556          return false;
1557        ImagingManifest o = (ImagingManifest) other_;
1558        return compareDeep(identifier, o.identifier, true) && compareDeep(patient, o.patient, true) && compareDeep(authoringTime, o.authoringTime, true)
1559           && compareDeep(author, o.author, true) && compareDeep(description, o.description, true) && compareDeep(study, o.study, true)
1560          ;
1561      }
1562
1563      @Override
1564      public boolean equalsShallow(Base other_) {
1565        if (!super.equalsShallow(other_))
1566          return false;
1567        if (!(other_ instanceof ImagingManifest))
1568          return false;
1569        ImagingManifest o = (ImagingManifest) other_;
1570        return compareValues(authoringTime, o.authoringTime, true) && compareValues(description, o.description, true)
1571          ;
1572      }
1573
1574      public boolean isEmpty() {
1575        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, patient, authoringTime
1576          , author, description, study);
1577      }
1578
1579  @Override
1580  public ResourceType getResourceType() {
1581    return ResourceType.ImagingManifest;
1582   }
1583
1584 /**
1585   * Search parameter: <b>identifier</b>
1586   * <p>
1587   * Description: <b>UID of the ImagingManifest (or a DICOM Key Object Selection which it represents)</b><br>
1588   * Type: <b>token</b><br>
1589   * Path: <b>ImagingManifest.identifier</b><br>
1590   * </p>
1591   */
1592  @SearchParamDefinition(name="identifier", path="ImagingManifest.identifier", description="UID of the ImagingManifest (or a DICOM Key Object Selection which it represents)", type="token" )
1593  public static final String SP_IDENTIFIER = "identifier";
1594 /**
1595   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
1596   * <p>
1597   * Description: <b>UID of the ImagingManifest (or a DICOM Key Object Selection which it represents)</b><br>
1598   * Type: <b>token</b><br>
1599   * Path: <b>ImagingManifest.identifier</b><br>
1600   * </p>
1601   */
1602  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
1603
1604 /**
1605   * Search parameter: <b>endpoint</b>
1606   * <p>
1607   * Description: <b>The endpoint for the study or series</b><br>
1608   * Type: <b>reference</b><br>
1609   * Path: <b>ImagingManifest.study.endpoint, ImagingManifest.study.series.endpoint</b><br>
1610   * </p>
1611   */
1612  @SearchParamDefinition(name="endpoint", path="ImagingManifest.study.endpoint | ImagingManifest.study.series.endpoint", description="The endpoint for the study or series", type="reference", target={Endpoint.class } )
1613  public static final String SP_ENDPOINT = "endpoint";
1614 /**
1615   * <b>Fluent Client</b> search parameter constant for <b>endpoint</b>
1616   * <p>
1617   * Description: <b>The endpoint for the study or series</b><br>
1618   * Type: <b>reference</b><br>
1619   * Path: <b>ImagingManifest.study.endpoint, ImagingManifest.study.series.endpoint</b><br>
1620   * </p>
1621   */
1622  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam ENDPOINT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_ENDPOINT);
1623
1624/**
1625   * Constant for fluent queries to be used to add include statements. Specifies
1626   * the path value of "<b>ImagingManifest:endpoint</b>".
1627   */
1628  public static final ca.uhn.fhir.model.api.Include INCLUDE_ENDPOINT = new ca.uhn.fhir.model.api.Include("ImagingManifest:endpoint").toLocked();
1629
1630 /**
1631   * Search parameter: <b>authoring-time</b>
1632   * <p>
1633   * Description: <b>Time of the ImagingManifest (or a DICOM Key Object Selection which it represents) authoring</b><br>
1634   * Type: <b>date</b><br>
1635   * Path: <b>ImagingManifest.authoringTime</b><br>
1636   * </p>
1637   */
1638  @SearchParamDefinition(name="authoring-time", path="ImagingManifest.authoringTime", description="Time of the ImagingManifest (or a DICOM Key Object Selection which it represents) authoring", type="date" )
1639  public static final String SP_AUTHORING_TIME = "authoring-time";
1640 /**
1641   * <b>Fluent Client</b> search parameter constant for <b>authoring-time</b>
1642   * <p>
1643   * Description: <b>Time of the ImagingManifest (or a DICOM Key Object Selection which it represents) authoring</b><br>
1644   * Type: <b>date</b><br>
1645   * Path: <b>ImagingManifest.authoringTime</b><br>
1646   * </p>
1647   */
1648  public static final ca.uhn.fhir.rest.gclient.DateClientParam AUTHORING_TIME = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_AUTHORING_TIME);
1649
1650 /**
1651   * Search parameter: <b>selected-study</b>
1652   * <p>
1653   * Description: <b>Study selected in the ImagingManifest (or a DICOM Key Object Selection which it represents)</b><br>
1654   * Type: <b>uri</b><br>
1655   * Path: <b>ImagingManifest.study.uid</b><br>
1656   * </p>
1657   */
1658  @SearchParamDefinition(name="selected-study", path="ImagingManifest.study.uid", description="Study selected in the ImagingManifest (or a DICOM Key Object Selection which it represents)", type="uri" )
1659  public static final String SP_SELECTED_STUDY = "selected-study";
1660 /**
1661   * <b>Fluent Client</b> search parameter constant for <b>selected-study</b>
1662   * <p>
1663   * Description: <b>Study selected in the ImagingManifest (or a DICOM Key Object Selection which it represents)</b><br>
1664   * Type: <b>uri</b><br>
1665   * Path: <b>ImagingManifest.study.uid</b><br>
1666   * </p>
1667   */
1668  public static final ca.uhn.fhir.rest.gclient.UriClientParam SELECTED_STUDY = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_SELECTED_STUDY);
1669
1670 /**
1671   * Search parameter: <b>author</b>
1672   * <p>
1673   * Description: <b>Author of the ImagingManifest (or a DICOM Key Object Selection which it represents)</b><br>
1674   * Type: <b>reference</b><br>
1675   * Path: <b>ImagingManifest.author</b><br>
1676   * </p>
1677   */
1678  @SearchParamDefinition(name="author", path="ImagingManifest.author", description="Author of the ImagingManifest (or a DICOM Key Object Selection which it represents)", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Device"), @ca.uhn.fhir.model.api.annotation.Compartment(name="Patient"), @ca.uhn.fhir.model.api.annotation.Compartment(name="Practitioner"), @ca.uhn.fhir.model.api.annotation.Compartment(name="RelatedPerson") }, target={Device.class, Organization.class, Patient.class, Practitioner.class, RelatedPerson.class } )
1679  public static final String SP_AUTHOR = "author";
1680 /**
1681   * <b>Fluent Client</b> search parameter constant for <b>author</b>
1682   * <p>
1683   * Description: <b>Author of the ImagingManifest (or a DICOM Key Object Selection which it represents)</b><br>
1684   * Type: <b>reference</b><br>
1685   * Path: <b>ImagingManifest.author</b><br>
1686   * </p>
1687   */
1688  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam AUTHOR = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_AUTHOR);
1689
1690/**
1691   * Constant for fluent queries to be used to add include statements. Specifies
1692   * the path value of "<b>ImagingManifest:author</b>".
1693   */
1694  public static final ca.uhn.fhir.model.api.Include INCLUDE_AUTHOR = new ca.uhn.fhir.model.api.Include("ImagingManifest:author").toLocked();
1695
1696 /**
1697   * Search parameter: <b>patient</b>
1698   * <p>
1699   * Description: <b>Subject of the ImagingManifest (or a DICOM Key Object Selection which it represents)</b><br>
1700   * Type: <b>reference</b><br>
1701   * Path: <b>ImagingManifest.patient</b><br>
1702   * </p>
1703   */
1704  @SearchParamDefinition(name="patient", path="ImagingManifest.patient", description="Subject of the ImagingManifest (or a DICOM Key Object Selection which it represents)", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Patient") }, target={Patient.class } )
1705  public static final String SP_PATIENT = "patient";
1706 /**
1707   * <b>Fluent Client</b> search parameter constant for <b>patient</b>
1708   * <p>
1709   * Description: <b>Subject of the ImagingManifest (or a DICOM Key Object Selection which it represents)</b><br>
1710   * Type: <b>reference</b><br>
1711   * Path: <b>ImagingManifest.patient</b><br>
1712   * </p>
1713   */
1714  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PATIENT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PATIENT);
1715
1716/**
1717   * Constant for fluent queries to be used to add include statements. Specifies
1718   * the path value of "<b>ImagingManifest:patient</b>".
1719   */
1720  public static final ca.uhn.fhir.model.api.Include INCLUDE_PATIENT = new ca.uhn.fhir.model.api.Include("ImagingManifest:patient").toLocked();
1721
1722 /**
1723   * Search parameter: <b>imaging-study</b>
1724   * <p>
1725   * Description: <b>ImagingStudy resource selected in the ImagingManifest (or a DICOM Key Object Selection which it represents)</b><br>
1726   * Type: <b>reference</b><br>
1727   * Path: <b>ImagingManifest.study.imagingStudy</b><br>
1728   * </p>
1729   */
1730  @SearchParamDefinition(name="imaging-study", path="ImagingManifest.study.imagingStudy", description="ImagingStudy resource selected in the ImagingManifest (or a DICOM Key Object Selection which it represents)", type="reference", target={ImagingStudy.class } )
1731  public static final String SP_IMAGING_STUDY = "imaging-study";
1732 /**
1733   * <b>Fluent Client</b> search parameter constant for <b>imaging-study</b>
1734   * <p>
1735   * Description: <b>ImagingStudy resource selected in the ImagingManifest (or a DICOM Key Object Selection which it represents)</b><br>
1736   * Type: <b>reference</b><br>
1737   * Path: <b>ImagingManifest.study.imagingStudy</b><br>
1738   * </p>
1739   */
1740  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam IMAGING_STUDY = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_IMAGING_STUDY);
1741
1742/**
1743   * Constant for fluent queries to be used to add include statements. Specifies
1744   * the path value of "<b>ImagingManifest:imaging-study</b>".
1745   */
1746  public static final ca.uhn.fhir.model.api.Include INCLUDE_IMAGING_STUDY = new ca.uhn.fhir.model.api.Include("ImagingManifest:imaging-study").toLocked();
1747
1748
1749}