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