001package org.hl7.fhir.dstu2016may.model;
002
003/*
004  Copyright (c) 2011+, HL7, Inc.
005  All rights reserved.
006  
007  Redistribution and use in source and binary forms, with or without modification, 
008  are permitted provided that the following conditions are met:
009  
010   * Redistributions of source code must retain the above copyright notice, this 
011     list of conditions and the following disclaimer.
012   * Redistributions in binary form must reproduce the above copyright notice, 
013     this list of conditions and the following disclaimer in the documentation 
014     and/or other materials provided with the distribution.
015   * Neither the name of HL7 nor the names of its contributors may be used to 
016     endorse or promote products derived from this software without specific 
017     prior written permission.
018  
019  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
020  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
021  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
022  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
023  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
024  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
025  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
026  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
027  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
028  POSSIBILITY OF SUCH DAMAGE.
029  
030*/
031
032// Generated on Sun, May 8, 2016 03:05+1000 for FHIR v1.4.0
033import java.util.ArrayList;
034import java.util.List;
035
036import org.hl7.fhir.exceptions.FHIRException;
037import org.hl7.fhir.utilities.Utilities;
038
039import ca.uhn.fhir.model.api.annotation.Child;
040import ca.uhn.fhir.model.api.annotation.Description;
041import ca.uhn.fhir.model.api.annotation.ResourceDef;
042import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
043/**
044 * A photo, video, or audio recording acquired or used in healthcare. The actual content may be inline or provided by direct reference.
045 */
046@ResourceDef(name="Media", profile="http://hl7.org/fhir/Profile/Media")
047public class Media extends DomainResource {
048
049    public enum DigitalMediaType {
050        /**
051         * The media consists of one or more unmoving images, including photographs, computer-generated graphs and charts, and scanned documents
052         */
053        PHOTO, 
054        /**
055         * The media consists of a series of frames that capture a moving image
056         */
057        VIDEO, 
058        /**
059         * The media consists of a sound recording
060         */
061        AUDIO, 
062        /**
063         * added to help the parsers
064         */
065        NULL;
066        public static DigitalMediaType fromCode(String codeString) throws FHIRException {
067            if (codeString == null || "".equals(codeString))
068                return null;
069        if ("photo".equals(codeString))
070          return PHOTO;
071        if ("video".equals(codeString))
072          return VIDEO;
073        if ("audio".equals(codeString))
074          return AUDIO;
075        throw new FHIRException("Unknown DigitalMediaType code '"+codeString+"'");
076        }
077        public String toCode() {
078          switch (this) {
079            case PHOTO: return "photo";
080            case VIDEO: return "video";
081            case AUDIO: return "audio";
082            default: return "?";
083          }
084        }
085        public String getSystem() {
086          switch (this) {
087            case PHOTO: return "http://hl7.org/fhir/digital-media-type";
088            case VIDEO: return "http://hl7.org/fhir/digital-media-type";
089            case AUDIO: return "http://hl7.org/fhir/digital-media-type";
090            default: return "?";
091          }
092        }
093        public String getDefinition() {
094          switch (this) {
095            case PHOTO: return "The media consists of one or more unmoving images, including photographs, computer-generated graphs and charts, and scanned documents";
096            case VIDEO: return "The media consists of a series of frames that capture a moving image";
097            case AUDIO: return "The media consists of a sound recording";
098            default: return "?";
099          }
100        }
101        public String getDisplay() {
102          switch (this) {
103            case PHOTO: return "Photo";
104            case VIDEO: return "Video";
105            case AUDIO: return "Audio";
106            default: return "?";
107          }
108        }
109    }
110
111  public static class DigitalMediaTypeEnumFactory implements EnumFactory<DigitalMediaType> {
112    public DigitalMediaType fromCode(String codeString) throws IllegalArgumentException {
113      if (codeString == null || "".equals(codeString))
114            if (codeString == null || "".equals(codeString))
115                return null;
116        if ("photo".equals(codeString))
117          return DigitalMediaType.PHOTO;
118        if ("video".equals(codeString))
119          return DigitalMediaType.VIDEO;
120        if ("audio".equals(codeString))
121          return DigitalMediaType.AUDIO;
122        throw new IllegalArgumentException("Unknown DigitalMediaType code '"+codeString+"'");
123        }
124        public Enumeration<DigitalMediaType> fromType(Base code) throws FHIRException {
125          if (code == null || code.isEmpty())
126            return null;
127          String codeString = ((PrimitiveType) code).asStringValue();
128          if (codeString == null || "".equals(codeString))
129            return null;
130        if ("photo".equals(codeString))
131          return new Enumeration<DigitalMediaType>(this, DigitalMediaType.PHOTO);
132        if ("video".equals(codeString))
133          return new Enumeration<DigitalMediaType>(this, DigitalMediaType.VIDEO);
134        if ("audio".equals(codeString))
135          return new Enumeration<DigitalMediaType>(this, DigitalMediaType.AUDIO);
136        throw new FHIRException("Unknown DigitalMediaType code '"+codeString+"'");
137        }
138    public String toCode(DigitalMediaType code) {
139      if (code == DigitalMediaType.PHOTO)
140        return "photo";
141      if (code == DigitalMediaType.VIDEO)
142        return "video";
143      if (code == DigitalMediaType.AUDIO)
144        return "audio";
145      return "?";
146      }
147    public String toSystem(DigitalMediaType code) {
148      return code.getSystem();
149      }
150    }
151
152    /**
153     * Identifiers associated with the image - these may include identifiers for the image itself, identifiers for the context of its collection (e.g. series ids) and context ids such as accession numbers or other workflow identifiers.
154     */
155    @Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
156    @Description(shortDefinition="Identifier(s) for the image", formalDefinition="Identifiers associated with the image - these may include identifiers for the image itself, identifiers for the context of its collection (e.g. series ids) and context ids such as accession numbers or other workflow identifiers." )
157    protected List<Identifier> identifier;
158
159    /**
160     * Whether the media is a photo (still image), an audio recording, or a video recording.
161     */
162    @Child(name = "type", type = {CodeType.class}, order=1, min=1, max=1, modifier=false, summary=true)
163    @Description(shortDefinition="photo | video | audio", formalDefinition="Whether the media is a photo (still image), an audio recording, or a video recording." )
164    protected Enumeration<DigitalMediaType> type;
165
166    /**
167     * Details of the type of the media - usually, how it was acquired (what type of device). If images sourced from a DICOM system, are wrapped in a Media resource, then this is the modality.
168     */
169    @Child(name = "subtype", type = {CodeableConcept.class}, order=2, min=0, max=1, modifier=false, summary=true)
170    @Description(shortDefinition="The type of acquisition equipment/process", formalDefinition="Details of the type of the media - usually, how it was acquired (what type of device). If images sourced from a DICOM system, are wrapped in a Media resource, then this is the modality." )
171    protected CodeableConcept subtype;
172
173    /**
174     * The name of the imaging view e.g. Lateral or Antero-posterior (AP).
175     */
176    @Child(name = "view", type = {CodeableConcept.class}, order=3, min=0, max=1, modifier=false, summary=true)
177    @Description(shortDefinition="Imaging view, e.g. Lateral or Antero-posterior", formalDefinition="The name of the imaging view e.g. Lateral or Antero-posterior (AP)." )
178    protected CodeableConcept view;
179
180    /**
181     * Who/What this Media is a record of.
182     */
183    @Child(name = "subject", type = {Patient.class, Practitioner.class, Group.class, Device.class, Specimen.class}, order=4, min=0, max=1, modifier=false, summary=true)
184    @Description(shortDefinition="Who/What this Media is a record of", formalDefinition="Who/What this Media is a record of." )
185    protected Reference subject;
186
187    /**
188     * The actual object that is the target of the reference (Who/What this Media is a record of.)
189     */
190    protected Resource subjectTarget;
191
192    /**
193     * The person who administered the collection of the image.
194     */
195    @Child(name = "operator", type = {Practitioner.class}, order=5, min=0, max=1, modifier=false, summary=true)
196    @Description(shortDefinition="The person who generated the image", formalDefinition="The person who administered the collection of the image." )
197    protected Reference operator;
198
199    /**
200     * The actual object that is the target of the reference (The person who administered the collection of the image.)
201     */
202    protected Practitioner operatorTarget;
203
204    /**
205     * The name of the device / manufacturer of the device  that was used to make the recording.
206     */
207    @Child(name = "deviceName", type = {StringType.class}, order=6, min=0, max=1, modifier=false, summary=true)
208    @Description(shortDefinition="Name of the device/manufacturer", formalDefinition="The name of the device / manufacturer of the device  that was used to make the recording." )
209    protected StringType deviceName;
210
211    /**
212     * Height of the image in pixels (photo/video).
213     */
214    @Child(name = "height", type = {PositiveIntType.class}, order=7, min=0, max=1, modifier=false, summary=true)
215    @Description(shortDefinition="Height of the image in pixels (photo/video)", formalDefinition="Height of the image in pixels (photo/video)." )
216    protected PositiveIntType height;
217
218    /**
219     * Width of the image in pixels (photo/video).
220     */
221    @Child(name = "width", type = {PositiveIntType.class}, order=8, min=0, max=1, modifier=false, summary=true)
222    @Description(shortDefinition="Width of the image in pixels (photo/video)", formalDefinition="Width of the image in pixels (photo/video)." )
223    protected PositiveIntType width;
224
225    /**
226     * The number of frames in a photo. This is used with a multi-page fax, or an imaging acquisition context that takes multiple slices in a single image, or an animated gif. If there is more than one frame, this SHALL have a value in order to alert interface software that a multi-frame capable rendering widget is required.
227     */
228    @Child(name = "frames", type = {PositiveIntType.class}, order=9, min=0, max=1, modifier=false, summary=true)
229    @Description(shortDefinition="Number of frames if > 1 (photo)", formalDefinition="The number of frames in a photo. This is used with a multi-page fax, or an imaging acquisition context that takes multiple slices in a single image, or an animated gif. If there is more than one frame, this SHALL have a value in order to alert interface software that a multi-frame capable rendering widget is required." )
230    protected PositiveIntType frames;
231
232    /**
233     * The duration of the recording in seconds - for audio and video.
234     */
235    @Child(name = "duration", type = {UnsignedIntType.class}, order=10, min=0, max=1, modifier=false, summary=true)
236    @Description(shortDefinition="Length in seconds (audio / video)", formalDefinition="The duration of the recording in seconds - for audio and video." )
237    protected UnsignedIntType duration;
238
239    /**
240     * The actual content of the media - inline or by direct reference to the media source file.
241     */
242    @Child(name = "content", type = {Attachment.class}, order=11, min=1, max=1, modifier=false, summary=false)
243    @Description(shortDefinition="Actual Media - reference or data", formalDefinition="The actual content of the media - inline or by direct reference to the media source file." )
244    protected Attachment content;
245
246    private static final long serialVersionUID = -2144305643L;
247
248  /**
249   * Constructor
250   */
251    public Media() {
252      super();
253    }
254
255  /**
256   * Constructor
257   */
258    public Media(Enumeration<DigitalMediaType> type, Attachment content) {
259      super();
260      this.type = type;
261      this.content = content;
262    }
263
264    /**
265     * @return {@link #identifier} (Identifiers associated with the image - these may include identifiers for the image itself, identifiers for the context of its collection (e.g. series ids) and context ids such as accession numbers or other workflow identifiers.)
266     */
267    public List<Identifier> getIdentifier() { 
268      if (this.identifier == null)
269        this.identifier = new ArrayList<Identifier>();
270      return this.identifier;
271    }
272
273    public boolean hasIdentifier() { 
274      if (this.identifier == null)
275        return false;
276      for (Identifier item : this.identifier)
277        if (!item.isEmpty())
278          return true;
279      return false;
280    }
281
282    /**
283     * @return {@link #identifier} (Identifiers associated with the image - these may include identifiers for the image itself, identifiers for the context of its collection (e.g. series ids) and context ids such as accession numbers or other workflow identifiers.)
284     */
285    // syntactic sugar
286    public Identifier addIdentifier() { //3
287      Identifier t = new Identifier();
288      if (this.identifier == null)
289        this.identifier = new ArrayList<Identifier>();
290      this.identifier.add(t);
291      return t;
292    }
293
294    // syntactic sugar
295    public Media addIdentifier(Identifier t) { //3
296      if (t == null)
297        return this;
298      if (this.identifier == null)
299        this.identifier = new ArrayList<Identifier>();
300      this.identifier.add(t);
301      return this;
302    }
303
304    /**
305     * @return {@link #type} (Whether the media is a photo (still image), an audio recording, or a video recording.). This is the underlying object with id, value and extensions. The accessor "getType" gives direct access to the value
306     */
307    public Enumeration<DigitalMediaType> getTypeElement() { 
308      if (this.type == null)
309        if (Configuration.errorOnAutoCreate())
310          throw new Error("Attempt to auto-create Media.type");
311        else if (Configuration.doAutoCreate())
312          this.type = new Enumeration<DigitalMediaType>(new DigitalMediaTypeEnumFactory()); // bb
313      return this.type;
314    }
315
316    public boolean hasTypeElement() { 
317      return this.type != null && !this.type.isEmpty();
318    }
319
320    public boolean hasType() { 
321      return this.type != null && !this.type.isEmpty();
322    }
323
324    /**
325     * @param value {@link #type} (Whether the media is a photo (still image), an audio recording, or a video recording.). This is the underlying object with id, value and extensions. The accessor "getType" gives direct access to the value
326     */
327    public Media setTypeElement(Enumeration<DigitalMediaType> value) { 
328      this.type = value;
329      return this;
330    }
331
332    /**
333     * @return Whether the media is a photo (still image), an audio recording, or a video recording.
334     */
335    public DigitalMediaType getType() { 
336      return this.type == null ? null : this.type.getValue();
337    }
338
339    /**
340     * @param value Whether the media is a photo (still image), an audio recording, or a video recording.
341     */
342    public Media setType(DigitalMediaType value) { 
343        if (this.type == null)
344          this.type = new Enumeration<DigitalMediaType>(new DigitalMediaTypeEnumFactory());
345        this.type.setValue(value);
346      return this;
347    }
348
349    /**
350     * @return {@link #subtype} (Details of the type of the media - usually, how it was acquired (what type of device). If images sourced from a DICOM system, are wrapped in a Media resource, then this is the modality.)
351     */
352    public CodeableConcept getSubtype() { 
353      if (this.subtype == null)
354        if (Configuration.errorOnAutoCreate())
355          throw new Error("Attempt to auto-create Media.subtype");
356        else if (Configuration.doAutoCreate())
357          this.subtype = new CodeableConcept(); // cc
358      return this.subtype;
359    }
360
361    public boolean hasSubtype() { 
362      return this.subtype != null && !this.subtype.isEmpty();
363    }
364
365    /**
366     * @param value {@link #subtype} (Details of the type of the media - usually, how it was acquired (what type of device). If images sourced from a DICOM system, are wrapped in a Media resource, then this is the modality.)
367     */
368    public Media setSubtype(CodeableConcept value) { 
369      this.subtype = value;
370      return this;
371    }
372
373    /**
374     * @return {@link #view} (The name of the imaging view e.g. Lateral or Antero-posterior (AP).)
375     */
376    public CodeableConcept getView() { 
377      if (this.view == null)
378        if (Configuration.errorOnAutoCreate())
379          throw new Error("Attempt to auto-create Media.view");
380        else if (Configuration.doAutoCreate())
381          this.view = new CodeableConcept(); // cc
382      return this.view;
383    }
384
385    public boolean hasView() { 
386      return this.view != null && !this.view.isEmpty();
387    }
388
389    /**
390     * @param value {@link #view} (The name of the imaging view e.g. Lateral or Antero-posterior (AP).)
391     */
392    public Media setView(CodeableConcept value) { 
393      this.view = value;
394      return this;
395    }
396
397    /**
398     * @return {@link #subject} (Who/What this Media is a record of.)
399     */
400    public Reference getSubject() { 
401      if (this.subject == null)
402        if (Configuration.errorOnAutoCreate())
403          throw new Error("Attempt to auto-create Media.subject");
404        else if (Configuration.doAutoCreate())
405          this.subject = new Reference(); // cc
406      return this.subject;
407    }
408
409    public boolean hasSubject() { 
410      return this.subject != null && !this.subject.isEmpty();
411    }
412
413    /**
414     * @param value {@link #subject} (Who/What this Media is a record of.)
415     */
416    public Media setSubject(Reference value) { 
417      this.subject = value;
418      return this;
419    }
420
421    /**
422     * @return {@link #subject} 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. (Who/What this Media is a record of.)
423     */
424    public Resource getSubjectTarget() { 
425      return this.subjectTarget;
426    }
427
428    /**
429     * @param value {@link #subject} 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. (Who/What this Media is a record of.)
430     */
431    public Media setSubjectTarget(Resource value) { 
432      this.subjectTarget = value;
433      return this;
434    }
435
436    /**
437     * @return {@link #operator} (The person who administered the collection of the image.)
438     */
439    public Reference getOperator() { 
440      if (this.operator == null)
441        if (Configuration.errorOnAutoCreate())
442          throw new Error("Attempt to auto-create Media.operator");
443        else if (Configuration.doAutoCreate())
444          this.operator = new Reference(); // cc
445      return this.operator;
446    }
447
448    public boolean hasOperator() { 
449      return this.operator != null && !this.operator.isEmpty();
450    }
451
452    /**
453     * @param value {@link #operator} (The person who administered the collection of the image.)
454     */
455    public Media setOperator(Reference value) { 
456      this.operator = value;
457      return this;
458    }
459
460    /**
461     * @return {@link #operator} 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. (The person who administered the collection of the image.)
462     */
463    public Practitioner getOperatorTarget() { 
464      if (this.operatorTarget == null)
465        if (Configuration.errorOnAutoCreate())
466          throw new Error("Attempt to auto-create Media.operator");
467        else if (Configuration.doAutoCreate())
468          this.operatorTarget = new Practitioner(); // aa
469      return this.operatorTarget;
470    }
471
472    /**
473     * @param value {@link #operator} 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. (The person who administered the collection of the image.)
474     */
475    public Media setOperatorTarget(Practitioner value) { 
476      this.operatorTarget = value;
477      return this;
478    }
479
480    /**
481     * @return {@link #deviceName} (The name of the device / manufacturer of the device  that was used to make the recording.). This is the underlying object with id, value and extensions. The accessor "getDeviceName" gives direct access to the value
482     */
483    public StringType getDeviceNameElement() { 
484      if (this.deviceName == null)
485        if (Configuration.errorOnAutoCreate())
486          throw new Error("Attempt to auto-create Media.deviceName");
487        else if (Configuration.doAutoCreate())
488          this.deviceName = new StringType(); // bb
489      return this.deviceName;
490    }
491
492    public boolean hasDeviceNameElement() { 
493      return this.deviceName != null && !this.deviceName.isEmpty();
494    }
495
496    public boolean hasDeviceName() { 
497      return this.deviceName != null && !this.deviceName.isEmpty();
498    }
499
500    /**
501     * @param value {@link #deviceName} (The name of the device / manufacturer of the device  that was used to make the recording.). This is the underlying object with id, value and extensions. The accessor "getDeviceName" gives direct access to the value
502     */
503    public Media setDeviceNameElement(StringType value) { 
504      this.deviceName = value;
505      return this;
506    }
507
508    /**
509     * @return The name of the device / manufacturer of the device  that was used to make the recording.
510     */
511    public String getDeviceName() { 
512      return this.deviceName == null ? null : this.deviceName.getValue();
513    }
514
515    /**
516     * @param value The name of the device / manufacturer of the device  that was used to make the recording.
517     */
518    public Media setDeviceName(String value) { 
519      if (Utilities.noString(value))
520        this.deviceName = null;
521      else {
522        if (this.deviceName == null)
523          this.deviceName = new StringType();
524        this.deviceName.setValue(value);
525      }
526      return this;
527    }
528
529    /**
530     * @return {@link #height} (Height of the image in pixels (photo/video).). This is the underlying object with id, value and extensions. The accessor "getHeight" gives direct access to the value
531     */
532    public PositiveIntType getHeightElement() { 
533      if (this.height == null)
534        if (Configuration.errorOnAutoCreate())
535          throw new Error("Attempt to auto-create Media.height");
536        else if (Configuration.doAutoCreate())
537          this.height = new PositiveIntType(); // bb
538      return this.height;
539    }
540
541    public boolean hasHeightElement() { 
542      return this.height != null && !this.height.isEmpty();
543    }
544
545    public boolean hasHeight() { 
546      return this.height != null && !this.height.isEmpty();
547    }
548
549    /**
550     * @param value {@link #height} (Height of the image in pixels (photo/video).). This is the underlying object with id, value and extensions. The accessor "getHeight" gives direct access to the value
551     */
552    public Media setHeightElement(PositiveIntType value) { 
553      this.height = value;
554      return this;
555    }
556
557    /**
558     * @return Height of the image in pixels (photo/video).
559     */
560    public int getHeight() { 
561      return this.height == null || this.height.isEmpty() ? 0 : this.height.getValue();
562    }
563
564    /**
565     * @param value Height of the image in pixels (photo/video).
566     */
567    public Media setHeight(int value) { 
568        if (this.height == null)
569          this.height = new PositiveIntType();
570        this.height.setValue(value);
571      return this;
572    }
573
574    /**
575     * @return {@link #width} (Width of the image in pixels (photo/video).). This is the underlying object with id, value and extensions. The accessor "getWidth" gives direct access to the value
576     */
577    public PositiveIntType getWidthElement() { 
578      if (this.width == null)
579        if (Configuration.errorOnAutoCreate())
580          throw new Error("Attempt to auto-create Media.width");
581        else if (Configuration.doAutoCreate())
582          this.width = new PositiveIntType(); // bb
583      return this.width;
584    }
585
586    public boolean hasWidthElement() { 
587      return this.width != null && !this.width.isEmpty();
588    }
589
590    public boolean hasWidth() { 
591      return this.width != null && !this.width.isEmpty();
592    }
593
594    /**
595     * @param value {@link #width} (Width of the image in pixels (photo/video).). This is the underlying object with id, value and extensions. The accessor "getWidth" gives direct access to the value
596     */
597    public Media setWidthElement(PositiveIntType value) { 
598      this.width = value;
599      return this;
600    }
601
602    /**
603     * @return Width of the image in pixels (photo/video).
604     */
605    public int getWidth() { 
606      return this.width == null || this.width.isEmpty() ? 0 : this.width.getValue();
607    }
608
609    /**
610     * @param value Width of the image in pixels (photo/video).
611     */
612    public Media setWidth(int value) { 
613        if (this.width == null)
614          this.width = new PositiveIntType();
615        this.width.setValue(value);
616      return this;
617    }
618
619    /**
620     * @return {@link #frames} (The number of frames in a photo. This is used with a multi-page fax, or an imaging acquisition context that takes multiple slices in a single image, or an animated gif. If there is more than one frame, this SHALL have a value in order to alert interface software that a multi-frame capable rendering widget is required.). This is the underlying object with id, value and extensions. The accessor "getFrames" gives direct access to the value
621     */
622    public PositiveIntType getFramesElement() { 
623      if (this.frames == null)
624        if (Configuration.errorOnAutoCreate())
625          throw new Error("Attempt to auto-create Media.frames");
626        else if (Configuration.doAutoCreate())
627          this.frames = new PositiveIntType(); // bb
628      return this.frames;
629    }
630
631    public boolean hasFramesElement() { 
632      return this.frames != null && !this.frames.isEmpty();
633    }
634
635    public boolean hasFrames() { 
636      return this.frames != null && !this.frames.isEmpty();
637    }
638
639    /**
640     * @param value {@link #frames} (The number of frames in a photo. This is used with a multi-page fax, or an imaging acquisition context that takes multiple slices in a single image, or an animated gif. If there is more than one frame, this SHALL have a value in order to alert interface software that a multi-frame capable rendering widget is required.). This is the underlying object with id, value and extensions. The accessor "getFrames" gives direct access to the value
641     */
642    public Media setFramesElement(PositiveIntType value) { 
643      this.frames = value;
644      return this;
645    }
646
647    /**
648     * @return The number of frames in a photo. This is used with a multi-page fax, or an imaging acquisition context that takes multiple slices in a single image, or an animated gif. If there is more than one frame, this SHALL have a value in order to alert interface software that a multi-frame capable rendering widget is required.
649     */
650    public int getFrames() { 
651      return this.frames == null || this.frames.isEmpty() ? 0 : this.frames.getValue();
652    }
653
654    /**
655     * @param value The number of frames in a photo. This is used with a multi-page fax, or an imaging acquisition context that takes multiple slices in a single image, or an animated gif. If there is more than one frame, this SHALL have a value in order to alert interface software that a multi-frame capable rendering widget is required.
656     */
657    public Media setFrames(int value) { 
658        if (this.frames == null)
659          this.frames = new PositiveIntType();
660        this.frames.setValue(value);
661      return this;
662    }
663
664    /**
665     * @return {@link #duration} (The duration of the recording in seconds - for audio and video.). This is the underlying object with id, value and extensions. The accessor "getDuration" gives direct access to the value
666     */
667    public UnsignedIntType getDurationElement() { 
668      if (this.duration == null)
669        if (Configuration.errorOnAutoCreate())
670          throw new Error("Attempt to auto-create Media.duration");
671        else if (Configuration.doAutoCreate())
672          this.duration = new UnsignedIntType(); // bb
673      return this.duration;
674    }
675
676    public boolean hasDurationElement() { 
677      return this.duration != null && !this.duration.isEmpty();
678    }
679
680    public boolean hasDuration() { 
681      return this.duration != null && !this.duration.isEmpty();
682    }
683
684    /**
685     * @param value {@link #duration} (The duration of the recording in seconds - for audio and video.). This is the underlying object with id, value and extensions. The accessor "getDuration" gives direct access to the value
686     */
687    public Media setDurationElement(UnsignedIntType value) { 
688      this.duration = value;
689      return this;
690    }
691
692    /**
693     * @return The duration of the recording in seconds - for audio and video.
694     */
695    public int getDuration() { 
696      return this.duration == null || this.duration.isEmpty() ? 0 : this.duration.getValue();
697    }
698
699    /**
700     * @param value The duration of the recording in seconds - for audio and video.
701     */
702    public Media setDuration(int value) { 
703        if (this.duration == null)
704          this.duration = new UnsignedIntType();
705        this.duration.setValue(value);
706      return this;
707    }
708
709    /**
710     * @return {@link #content} (The actual content of the media - inline or by direct reference to the media source file.)
711     */
712    public Attachment getContent() { 
713      if (this.content == null)
714        if (Configuration.errorOnAutoCreate())
715          throw new Error("Attempt to auto-create Media.content");
716        else if (Configuration.doAutoCreate())
717          this.content = new Attachment(); // cc
718      return this.content;
719    }
720
721    public boolean hasContent() { 
722      return this.content != null && !this.content.isEmpty();
723    }
724
725    /**
726     * @param value {@link #content} (The actual content of the media - inline or by direct reference to the media source file.)
727     */
728    public Media setContent(Attachment value) { 
729      this.content = value;
730      return this;
731    }
732
733      protected void listChildren(List<Property> childrenList) {
734        super.listChildren(childrenList);
735        childrenList.add(new Property("identifier", "Identifier", "Identifiers associated with the image - these may include identifiers for the image itself, identifiers for the context of its collection (e.g. series ids) and context ids such as accession numbers or other workflow identifiers.", 0, java.lang.Integer.MAX_VALUE, identifier));
736        childrenList.add(new Property("type", "code", "Whether the media is a photo (still image), an audio recording, or a video recording.", 0, java.lang.Integer.MAX_VALUE, type));
737        childrenList.add(new Property("subtype", "CodeableConcept", "Details of the type of the media - usually, how it was acquired (what type of device). If images sourced from a DICOM system, are wrapped in a Media resource, then this is the modality.", 0, java.lang.Integer.MAX_VALUE, subtype));
738        childrenList.add(new Property("view", "CodeableConcept", "The name of the imaging view e.g. Lateral or Antero-posterior (AP).", 0, java.lang.Integer.MAX_VALUE, view));
739        childrenList.add(new Property("subject", "Reference(Patient|Practitioner|Group|Device|Specimen)", "Who/What this Media is a record of.", 0, java.lang.Integer.MAX_VALUE, subject));
740        childrenList.add(new Property("operator", "Reference(Practitioner)", "The person who administered the collection of the image.", 0, java.lang.Integer.MAX_VALUE, operator));
741        childrenList.add(new Property("deviceName", "string", "The name of the device / manufacturer of the device  that was used to make the recording.", 0, java.lang.Integer.MAX_VALUE, deviceName));
742        childrenList.add(new Property("height", "positiveInt", "Height of the image in pixels (photo/video).", 0, java.lang.Integer.MAX_VALUE, height));
743        childrenList.add(new Property("width", "positiveInt", "Width of the image in pixels (photo/video).", 0, java.lang.Integer.MAX_VALUE, width));
744        childrenList.add(new Property("frames", "positiveInt", "The number of frames in a photo. This is used with a multi-page fax, or an imaging acquisition context that takes multiple slices in a single image, or an animated gif. If there is more than one frame, this SHALL have a value in order to alert interface software that a multi-frame capable rendering widget is required.", 0, java.lang.Integer.MAX_VALUE, frames));
745        childrenList.add(new Property("duration", "unsignedInt", "The duration of the recording in seconds - for audio and video.", 0, java.lang.Integer.MAX_VALUE, duration));
746        childrenList.add(new Property("content", "Attachment", "The actual content of the media - inline or by direct reference to the media source file.", 0, java.lang.Integer.MAX_VALUE, content));
747      }
748
749      @Override
750      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
751        switch (hash) {
752        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
753        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // Enumeration<DigitalMediaType>
754        case -1867567750: /*subtype*/ return this.subtype == null ? new Base[0] : new Base[] {this.subtype}; // CodeableConcept
755        case 3619493: /*view*/ return this.view == null ? new Base[0] : new Base[] {this.view}; // CodeableConcept
756        case -1867885268: /*subject*/ return this.subject == null ? new Base[0] : new Base[] {this.subject}; // Reference
757        case -500553564: /*operator*/ return this.operator == null ? new Base[0] : new Base[] {this.operator}; // Reference
758        case 780988929: /*deviceName*/ return this.deviceName == null ? new Base[0] : new Base[] {this.deviceName}; // StringType
759        case -1221029593: /*height*/ return this.height == null ? new Base[0] : new Base[] {this.height}; // PositiveIntType
760        case 113126854: /*width*/ return this.width == null ? new Base[0] : new Base[] {this.width}; // PositiveIntType
761        case -1266514778: /*frames*/ return this.frames == null ? new Base[0] : new Base[] {this.frames}; // PositiveIntType
762        case -1992012396: /*duration*/ return this.duration == null ? new Base[0] : new Base[] {this.duration}; // UnsignedIntType
763        case 951530617: /*content*/ return this.content == null ? new Base[0] : new Base[] {this.content}; // Attachment
764        default: return super.getProperty(hash, name, checkValid);
765        }
766
767      }
768
769      @Override
770      public void setProperty(int hash, String name, Base value) throws FHIRException {
771        switch (hash) {
772        case -1618432855: // identifier
773          this.getIdentifier().add(castToIdentifier(value)); // Identifier
774          break;
775        case 3575610: // type
776          this.type = new DigitalMediaTypeEnumFactory().fromType(value); // Enumeration<DigitalMediaType>
777          break;
778        case -1867567750: // subtype
779          this.subtype = castToCodeableConcept(value); // CodeableConcept
780          break;
781        case 3619493: // view
782          this.view = castToCodeableConcept(value); // CodeableConcept
783          break;
784        case -1867885268: // subject
785          this.subject = castToReference(value); // Reference
786          break;
787        case -500553564: // operator
788          this.operator = castToReference(value); // Reference
789          break;
790        case 780988929: // deviceName
791          this.deviceName = castToString(value); // StringType
792          break;
793        case -1221029593: // height
794          this.height = castToPositiveInt(value); // PositiveIntType
795          break;
796        case 113126854: // width
797          this.width = castToPositiveInt(value); // PositiveIntType
798          break;
799        case -1266514778: // frames
800          this.frames = castToPositiveInt(value); // PositiveIntType
801          break;
802        case -1992012396: // duration
803          this.duration = castToUnsignedInt(value); // UnsignedIntType
804          break;
805        case 951530617: // content
806          this.content = castToAttachment(value); // Attachment
807          break;
808        default: super.setProperty(hash, name, value);
809        }
810
811      }
812
813      @Override
814      public void setProperty(String name, Base value) throws FHIRException {
815        if (name.equals("identifier"))
816          this.getIdentifier().add(castToIdentifier(value));
817        else if (name.equals("type"))
818          this.type = new DigitalMediaTypeEnumFactory().fromType(value); // Enumeration<DigitalMediaType>
819        else if (name.equals("subtype"))
820          this.subtype = castToCodeableConcept(value); // CodeableConcept
821        else if (name.equals("view"))
822          this.view = castToCodeableConcept(value); // CodeableConcept
823        else if (name.equals("subject"))
824          this.subject = castToReference(value); // Reference
825        else if (name.equals("operator"))
826          this.operator = castToReference(value); // Reference
827        else if (name.equals("deviceName"))
828          this.deviceName = castToString(value); // StringType
829        else if (name.equals("height"))
830          this.height = castToPositiveInt(value); // PositiveIntType
831        else if (name.equals("width"))
832          this.width = castToPositiveInt(value); // PositiveIntType
833        else if (name.equals("frames"))
834          this.frames = castToPositiveInt(value); // PositiveIntType
835        else if (name.equals("duration"))
836          this.duration = castToUnsignedInt(value); // UnsignedIntType
837        else if (name.equals("content"))
838          this.content = castToAttachment(value); // Attachment
839        else
840          super.setProperty(name, value);
841      }
842
843      @Override
844      public Base makeProperty(int hash, String name) throws FHIRException {
845        switch (hash) {
846        case -1618432855:  return addIdentifier(); // Identifier
847        case 3575610: throw new FHIRException("Cannot make property type as it is not a complex type"); // Enumeration<DigitalMediaType>
848        case -1867567750:  return getSubtype(); // CodeableConcept
849        case 3619493:  return getView(); // CodeableConcept
850        case -1867885268:  return getSubject(); // Reference
851        case -500553564:  return getOperator(); // Reference
852        case 780988929: throw new FHIRException("Cannot make property deviceName as it is not a complex type"); // StringType
853        case -1221029593: throw new FHIRException("Cannot make property height as it is not a complex type"); // PositiveIntType
854        case 113126854: throw new FHIRException("Cannot make property width as it is not a complex type"); // PositiveIntType
855        case -1266514778: throw new FHIRException("Cannot make property frames as it is not a complex type"); // PositiveIntType
856        case -1992012396: throw new FHIRException("Cannot make property duration as it is not a complex type"); // UnsignedIntType
857        case 951530617:  return getContent(); // Attachment
858        default: return super.makeProperty(hash, name);
859        }
860
861      }
862
863      @Override
864      public Base addChild(String name) throws FHIRException {
865        if (name.equals("identifier")) {
866          return addIdentifier();
867        }
868        else if (name.equals("type")) {
869          throw new FHIRException("Cannot call addChild on a primitive type Media.type");
870        }
871        else if (name.equals("subtype")) {
872          this.subtype = new CodeableConcept();
873          return this.subtype;
874        }
875        else if (name.equals("view")) {
876          this.view = new CodeableConcept();
877          return this.view;
878        }
879        else if (name.equals("subject")) {
880          this.subject = new Reference();
881          return this.subject;
882        }
883        else if (name.equals("operator")) {
884          this.operator = new Reference();
885          return this.operator;
886        }
887        else if (name.equals("deviceName")) {
888          throw new FHIRException("Cannot call addChild on a primitive type Media.deviceName");
889        }
890        else if (name.equals("height")) {
891          throw new FHIRException("Cannot call addChild on a primitive type Media.height");
892        }
893        else if (name.equals("width")) {
894          throw new FHIRException("Cannot call addChild on a primitive type Media.width");
895        }
896        else if (name.equals("frames")) {
897          throw new FHIRException("Cannot call addChild on a primitive type Media.frames");
898        }
899        else if (name.equals("duration")) {
900          throw new FHIRException("Cannot call addChild on a primitive type Media.duration");
901        }
902        else if (name.equals("content")) {
903          this.content = new Attachment();
904          return this.content;
905        }
906        else
907          return super.addChild(name);
908      }
909
910  public String fhirType() {
911    return "Media";
912
913  }
914
915      public Media copy() {
916        Media dst = new Media();
917        copyValues(dst);
918        if (identifier != null) {
919          dst.identifier = new ArrayList<Identifier>();
920          for (Identifier i : identifier)
921            dst.identifier.add(i.copy());
922        };
923        dst.type = type == null ? null : type.copy();
924        dst.subtype = subtype == null ? null : subtype.copy();
925        dst.view = view == null ? null : view.copy();
926        dst.subject = subject == null ? null : subject.copy();
927        dst.operator = operator == null ? null : operator.copy();
928        dst.deviceName = deviceName == null ? null : deviceName.copy();
929        dst.height = height == null ? null : height.copy();
930        dst.width = width == null ? null : width.copy();
931        dst.frames = frames == null ? null : frames.copy();
932        dst.duration = duration == null ? null : duration.copy();
933        dst.content = content == null ? null : content.copy();
934        return dst;
935      }
936
937      protected Media typedCopy() {
938        return copy();
939      }
940
941      @Override
942      public boolean equalsDeep(Base other) {
943        if (!super.equalsDeep(other))
944          return false;
945        if (!(other instanceof Media))
946          return false;
947        Media o = (Media) other;
948        return compareDeep(identifier, o.identifier, true) && compareDeep(type, o.type, true) && compareDeep(subtype, o.subtype, true)
949           && compareDeep(view, o.view, true) && compareDeep(subject, o.subject, true) && compareDeep(operator, o.operator, true)
950           && compareDeep(deviceName, o.deviceName, true) && compareDeep(height, o.height, true) && compareDeep(width, o.width, true)
951           && compareDeep(frames, o.frames, true) && compareDeep(duration, o.duration, true) && compareDeep(content, o.content, true)
952          ;
953      }
954
955      @Override
956      public boolean equalsShallow(Base other) {
957        if (!super.equalsShallow(other))
958          return false;
959        if (!(other instanceof Media))
960          return false;
961        Media o = (Media) other;
962        return compareValues(type, o.type, true) && compareValues(deviceName, o.deviceName, true) && compareValues(height, o.height, true)
963           && compareValues(width, o.width, true) && compareValues(frames, o.frames, true) && compareValues(duration, o.duration, true)
964          ;
965      }
966
967      public boolean isEmpty() {
968        return super.isEmpty() && (identifier == null || identifier.isEmpty()) && (type == null || type.isEmpty())
969           && (subtype == null || subtype.isEmpty()) && (view == null || view.isEmpty()) && (subject == null || subject.isEmpty())
970           && (operator == null || operator.isEmpty()) && (deviceName == null || deviceName.isEmpty())
971           && (height == null || height.isEmpty()) && (width == null || width.isEmpty()) && (frames == null || frames.isEmpty())
972           && (duration == null || duration.isEmpty()) && (content == null || content.isEmpty());
973      }
974
975  @Override
976  public ResourceType getResourceType() {
977    return ResourceType.Media;
978   }
979
980 /**
981   * Search parameter: <b>patient</b>
982   * <p>
983   * Description: <b>Who/What this Media is a record of</b><br>
984   * Type: <b>reference</b><br>
985   * Path: <b>Media.subject</b><br>
986   * </p>
987   */
988  @SearchParamDefinition(name="patient", path="Media.subject", description="Who/What this Media is a record of", type="reference" )
989  public static final String SP_PATIENT = "patient";
990 /**
991   * <b>Fluent Client</b> search parameter constant for <b>patient</b>
992   * <p>
993   * Description: <b>Who/What this Media is a record of</b><br>
994   * Type: <b>reference</b><br>
995   * Path: <b>Media.subject</b><br>
996   * </p>
997   */
998  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PATIENT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PATIENT);
999
1000/**
1001   * Constant for fluent queries to be used to add include statements. Specifies
1002   * the path value of "<b>Media:patient</b>".
1003   */
1004  public static final ca.uhn.fhir.model.api.Include INCLUDE_PATIENT = new ca.uhn.fhir.model.api.Include("Media:patient").toLocked();
1005
1006 /**
1007   * Search parameter: <b>created</b>
1008   * <p>
1009   * Description: <b>Date attachment was first created</b><br>
1010   * Type: <b>date</b><br>
1011   * Path: <b>Media.content.creation</b><br>
1012   * </p>
1013   */
1014  @SearchParamDefinition(name="created", path="Media.content.creation", description="Date attachment was first created", type="date" )
1015  public static final String SP_CREATED = "created";
1016 /**
1017   * <b>Fluent Client</b> search parameter constant for <b>created</b>
1018   * <p>
1019   * Description: <b>Date attachment was first created</b><br>
1020   * Type: <b>date</b><br>
1021   * Path: <b>Media.content.creation</b><br>
1022   * </p>
1023   */
1024  public static final ca.uhn.fhir.rest.gclient.DateClientParam CREATED = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_CREATED);
1025
1026 /**
1027   * Search parameter: <b>subject</b>
1028   * <p>
1029   * Description: <b>Who/What this Media is a record of</b><br>
1030   * Type: <b>reference</b><br>
1031   * Path: <b>Media.subject</b><br>
1032   * </p>
1033   */
1034  @SearchParamDefinition(name="subject", path="Media.subject", description="Who/What this Media is a record of", type="reference" )
1035  public static final String SP_SUBJECT = "subject";
1036 /**
1037   * <b>Fluent Client</b> search parameter constant for <b>subject</b>
1038   * <p>
1039   * Description: <b>Who/What this Media is a record of</b><br>
1040   * Type: <b>reference</b><br>
1041   * Path: <b>Media.subject</b><br>
1042   * </p>
1043   */
1044  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SUBJECT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SUBJECT);
1045
1046/**
1047   * Constant for fluent queries to be used to add include statements. Specifies
1048   * the path value of "<b>Media:subject</b>".
1049   */
1050  public static final ca.uhn.fhir.model.api.Include INCLUDE_SUBJECT = new ca.uhn.fhir.model.api.Include("Media:subject").toLocked();
1051
1052 /**
1053   * Search parameter: <b>subtype</b>
1054   * <p>
1055   * Description: <b>The type of acquisition equipment/process</b><br>
1056   * Type: <b>token</b><br>
1057   * Path: <b>Media.subtype</b><br>
1058   * </p>
1059   */
1060  @SearchParamDefinition(name="subtype", path="Media.subtype", description="The type of acquisition equipment/process", type="token" )
1061  public static final String SP_SUBTYPE = "subtype";
1062 /**
1063   * <b>Fluent Client</b> search parameter constant for <b>subtype</b>
1064   * <p>
1065   * Description: <b>The type of acquisition equipment/process</b><br>
1066   * Type: <b>token</b><br>
1067   * Path: <b>Media.subtype</b><br>
1068   * </p>
1069   */
1070  public static final ca.uhn.fhir.rest.gclient.TokenClientParam SUBTYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_SUBTYPE);
1071
1072 /**
1073   * Search parameter: <b>view</b>
1074   * <p>
1075   * Description: <b>Imaging view, e.g. Lateral or Antero-posterior</b><br>
1076   * Type: <b>token</b><br>
1077   * Path: <b>Media.view</b><br>
1078   * </p>
1079   */
1080  @SearchParamDefinition(name="view", path="Media.view", description="Imaging view, e.g. Lateral or Antero-posterior", type="token" )
1081  public static final String SP_VIEW = "view";
1082 /**
1083   * <b>Fluent Client</b> search parameter constant for <b>view</b>
1084   * <p>
1085   * Description: <b>Imaging view, e.g. Lateral or Antero-posterior</b><br>
1086   * Type: <b>token</b><br>
1087   * Path: <b>Media.view</b><br>
1088   * </p>
1089   */
1090  public static final ca.uhn.fhir.rest.gclient.TokenClientParam VIEW = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_VIEW);
1091
1092 /**
1093   * Search parameter: <b>type</b>
1094   * <p>
1095   * Description: <b>photo | video | audio</b><br>
1096   * Type: <b>token</b><br>
1097   * Path: <b>Media.type</b><br>
1098   * </p>
1099   */
1100  @SearchParamDefinition(name="type", path="Media.type", description="photo | video | audio", type="token" )
1101  public static final String SP_TYPE = "type";
1102 /**
1103   * <b>Fluent Client</b> search parameter constant for <b>type</b>
1104   * <p>
1105   * Description: <b>photo | video | audio</b><br>
1106   * Type: <b>token</b><br>
1107   * Path: <b>Media.type</b><br>
1108   * </p>
1109   */
1110  public static final ca.uhn.fhir.rest.gclient.TokenClientParam TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_TYPE);
1111
1112 /**
1113   * Search parameter: <b>identifier</b>
1114   * <p>
1115   * Description: <b>Identifier(s) for the image</b><br>
1116   * Type: <b>token</b><br>
1117   * Path: <b>Media.identifier</b><br>
1118   * </p>
1119   */
1120  @SearchParamDefinition(name="identifier", path="Media.identifier", description="Identifier(s) for the image", type="token" )
1121  public static final String SP_IDENTIFIER = "identifier";
1122 /**
1123   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
1124   * <p>
1125   * Description: <b>Identifier(s) for the image</b><br>
1126   * Type: <b>token</b><br>
1127   * Path: <b>Media.identifier</b><br>
1128   * </p>
1129   */
1130  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
1131
1132 /**
1133   * Search parameter: <b>operator</b>
1134   * <p>
1135   * Description: <b>The person who generated the image</b><br>
1136   * Type: <b>reference</b><br>
1137   * Path: <b>Media.operator</b><br>
1138   * </p>
1139   */
1140  @SearchParamDefinition(name="operator", path="Media.operator", description="The person who generated the image", type="reference" )
1141  public static final String SP_OPERATOR = "operator";
1142 /**
1143   * <b>Fluent Client</b> search parameter constant for <b>operator</b>
1144   * <p>
1145   * Description: <b>The person who generated the image</b><br>
1146   * Type: <b>reference</b><br>
1147   * Path: <b>Media.operator</b><br>
1148   * </p>
1149   */
1150  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam OPERATOR = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_OPERATOR);
1151
1152/**
1153   * Constant for fluent queries to be used to add include statements. Specifies
1154   * the path value of "<b>Media:operator</b>".
1155   */
1156  public static final ca.uhn.fhir.model.api.Include INCLUDE_OPERATOR = new ca.uhn.fhir.model.api.Include("Media:operator").toLocked();
1157
1158
1159}
1160