001package org.hl7.fhir.r4b.model;
002
003
004/*
005  Copyright (c) 2011+, HL7, Inc.
006  All rights reserved.
007  
008  Redistribution and use in source and binary forms, with or without modification, \
009  are permitted provided that the following conditions are met:
010  
011   * Redistributions of source code must retain the above copyright notice, this \
012     list of conditions and the following disclaimer.
013   * Redistributions in binary form must reproduce the above copyright notice, \
014     this list of conditions and the following disclaimer in the documentation \
015     and/or other materials provided with the distribution.
016   * Neither the name of HL7 nor the names of its contributors may be used to 
017     endorse or promote products derived from this software without specific 
018     prior written permission.
019  
020  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND \
021  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED \
022  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. \
023  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, \
024  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT \
025  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR \
026  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, \
027  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) \
028  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE \
029  POSSIBILITY OF SUCH DAMAGE.
030  */
031
032// Generated on Fri, Dec 31, 2021 05:58+1100 for FHIR v4.3.0-snapshot1
033
034import java.util.ArrayList;
035import java.util.Date;
036import java.util.List;
037import org.hl7.fhir.utilities.Utilities;
038import org.hl7.fhir.r4b.model.Enumerations.*;
039import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
040import org.hl7.fhir.exceptions.FHIRException;
041import org.hl7.fhir.instance.model.api.ICompositeType;
042import ca.uhn.fhir.model.api.annotation.ResourceDef;
043import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
044import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
045import ca.uhn.fhir.model.api.annotation.Child;
046import ca.uhn.fhir.model.api.annotation.ChildOrder;
047import ca.uhn.fhir.model.api.annotation.Description;
048import ca.uhn.fhir.model.api.annotation.Block;
049
050/**
051 * The findings and interpretation of diagnostic  tests performed on patients, groups of patients, devices, and locations, and/or specimens derived from these. The report includes clinical context such as requesting and provider information, and some mix of atomic results, images, textual and coded interpretations, and formatted representation of diagnostic reports.
052 */
053@ResourceDef(name="DiagnosticReport", profile="http://hl7.org/fhir/StructureDefinition/DiagnosticReport")
054public class DiagnosticReport extends DomainResource {
055
056    public enum DiagnosticReportStatus {
057        /**
058         * The existence of the report is registered, but there is nothing yet available.
059         */
060        REGISTERED, 
061        /**
062         * This is a partial (e.g. initial, interim or preliminary) report: data in the report may be incomplete or unverified.
063         */
064        PARTIAL, 
065        /**
066         * Verified early results are available, but not all  results are final.
067         */
068        PRELIMINARY, 
069        /**
070         * The report is complete and verified by an authorized person.
071         */
072        FINAL, 
073        /**
074         * Subsequent to being final, the report has been modified.  This includes any change in the results, diagnosis, narrative text, or other content of a report that has been issued.
075         */
076        AMENDED, 
077        /**
078         * Subsequent to being final, the report has been modified  to correct an error in the report or referenced results.
079         */
080        CORRECTED, 
081        /**
082         * Subsequent to being final, the report has been modified by adding new content. The existing content is unchanged.
083         */
084        APPENDED, 
085        /**
086         * The report is unavailable because the measurement was not started or not completed (also sometimes called \"aborted\").
087         */
088        CANCELLED, 
089        /**
090         * The report has been withdrawn following a previous final release.  This electronic record should never have existed, though it is possible that real-world decisions were based on it. (If real-world activity has occurred, the status should be \"cancelled\" rather than \"entered-in-error\".).
091         */
092        ENTEREDINERROR, 
093        /**
094         * The authoring/source system does not know which of the status values currently applies for this observation. Note: This concept is not to be used for \"other\" - one of the listed statuses is presumed to apply, but the authoring/source system does not know which.
095         */
096        UNKNOWN, 
097        /**
098         * added to help the parsers with the generic types
099         */
100        NULL;
101        public static DiagnosticReportStatus fromCode(String codeString) throws FHIRException {
102            if (codeString == null || "".equals(codeString))
103                return null;
104        if ("registered".equals(codeString))
105          return REGISTERED;
106        if ("partial".equals(codeString))
107          return PARTIAL;
108        if ("preliminary".equals(codeString))
109          return PRELIMINARY;
110        if ("final".equals(codeString))
111          return FINAL;
112        if ("amended".equals(codeString))
113          return AMENDED;
114        if ("corrected".equals(codeString))
115          return CORRECTED;
116        if ("appended".equals(codeString))
117          return APPENDED;
118        if ("cancelled".equals(codeString))
119          return CANCELLED;
120        if ("entered-in-error".equals(codeString))
121          return ENTEREDINERROR;
122        if ("unknown".equals(codeString))
123          return UNKNOWN;
124        if (Configuration.isAcceptInvalidEnums())
125          return null;
126        else
127          throw new FHIRException("Unknown DiagnosticReportStatus code '"+codeString+"'");
128        }
129        public String toCode() {
130          switch (this) {
131            case REGISTERED: return "registered";
132            case PARTIAL: return "partial";
133            case PRELIMINARY: return "preliminary";
134            case FINAL: return "final";
135            case AMENDED: return "amended";
136            case CORRECTED: return "corrected";
137            case APPENDED: return "appended";
138            case CANCELLED: return "cancelled";
139            case ENTEREDINERROR: return "entered-in-error";
140            case UNKNOWN: return "unknown";
141            case NULL: return null;
142            default: return "?";
143          }
144        }
145        public String getSystem() {
146          switch (this) {
147            case REGISTERED: return "http://hl7.org/fhir/diagnostic-report-status";
148            case PARTIAL: return "http://hl7.org/fhir/diagnostic-report-status";
149            case PRELIMINARY: return "http://hl7.org/fhir/diagnostic-report-status";
150            case FINAL: return "http://hl7.org/fhir/diagnostic-report-status";
151            case AMENDED: return "http://hl7.org/fhir/diagnostic-report-status";
152            case CORRECTED: return "http://hl7.org/fhir/diagnostic-report-status";
153            case APPENDED: return "http://hl7.org/fhir/diagnostic-report-status";
154            case CANCELLED: return "http://hl7.org/fhir/diagnostic-report-status";
155            case ENTEREDINERROR: return "http://hl7.org/fhir/diagnostic-report-status";
156            case UNKNOWN: return "http://hl7.org/fhir/diagnostic-report-status";
157            case NULL: return null;
158            default: return "?";
159          }
160        }
161        public String getDefinition() {
162          switch (this) {
163            case REGISTERED: return "The existence of the report is registered, but there is nothing yet available.";
164            case PARTIAL: return "This is a partial (e.g. initial, interim or preliminary) report: data in the report may be incomplete or unverified.";
165            case PRELIMINARY: return "Verified early results are available, but not all  results are final.";
166            case FINAL: return "The report is complete and verified by an authorized person.";
167            case AMENDED: return "Subsequent to being final, the report has been modified.  This includes any change in the results, diagnosis, narrative text, or other content of a report that has been issued.";
168            case CORRECTED: return "Subsequent to being final, the report has been modified  to correct an error in the report or referenced results.";
169            case APPENDED: return "Subsequent to being final, the report has been modified by adding new content. The existing content is unchanged.";
170            case CANCELLED: return "The report is unavailable because the measurement was not started or not completed (also sometimes called \"aborted\").";
171            case ENTEREDINERROR: return "The report has been withdrawn following a previous final release.  This electronic record should never have existed, though it is possible that real-world decisions were based on it. (If real-world activity has occurred, the status should be \"cancelled\" rather than \"entered-in-error\".).";
172            case UNKNOWN: return "The authoring/source system does not know which of the status values currently applies for this observation. Note: This concept is not to be used for \"other\" - one of the listed statuses is presumed to apply, but the authoring/source system does not know which.";
173            case NULL: return null;
174            default: return "?";
175          }
176        }
177        public String getDisplay() {
178          switch (this) {
179            case REGISTERED: return "Registered";
180            case PARTIAL: return "Partial";
181            case PRELIMINARY: return "Preliminary";
182            case FINAL: return "Final";
183            case AMENDED: return "Amended";
184            case CORRECTED: return "Corrected";
185            case APPENDED: return "Appended";
186            case CANCELLED: return "Cancelled";
187            case ENTEREDINERROR: return "Entered in Error";
188            case UNKNOWN: return "Unknown";
189            case NULL: return null;
190            default: return "?";
191          }
192        }
193    }
194
195  public static class DiagnosticReportStatusEnumFactory implements EnumFactory<DiagnosticReportStatus> {
196    public DiagnosticReportStatus fromCode(String codeString) throws IllegalArgumentException {
197      if (codeString == null || "".equals(codeString))
198            if (codeString == null || "".equals(codeString))
199                return null;
200        if ("registered".equals(codeString))
201          return DiagnosticReportStatus.REGISTERED;
202        if ("partial".equals(codeString))
203          return DiagnosticReportStatus.PARTIAL;
204        if ("preliminary".equals(codeString))
205          return DiagnosticReportStatus.PRELIMINARY;
206        if ("final".equals(codeString))
207          return DiagnosticReportStatus.FINAL;
208        if ("amended".equals(codeString))
209          return DiagnosticReportStatus.AMENDED;
210        if ("corrected".equals(codeString))
211          return DiagnosticReportStatus.CORRECTED;
212        if ("appended".equals(codeString))
213          return DiagnosticReportStatus.APPENDED;
214        if ("cancelled".equals(codeString))
215          return DiagnosticReportStatus.CANCELLED;
216        if ("entered-in-error".equals(codeString))
217          return DiagnosticReportStatus.ENTEREDINERROR;
218        if ("unknown".equals(codeString))
219          return DiagnosticReportStatus.UNKNOWN;
220        throw new IllegalArgumentException("Unknown DiagnosticReportStatus code '"+codeString+"'");
221        }
222        public Enumeration<DiagnosticReportStatus> fromType(Base code) throws FHIRException {
223          if (code == null)
224            return null;
225          if (code.isEmpty())
226            return new Enumeration<DiagnosticReportStatus>(this);
227          String codeString = ((PrimitiveType) code).asStringValue();
228          if (codeString == null || "".equals(codeString))
229            return null;
230        if ("registered".equals(codeString))
231          return new Enumeration<DiagnosticReportStatus>(this, DiagnosticReportStatus.REGISTERED);
232        if ("partial".equals(codeString))
233          return new Enumeration<DiagnosticReportStatus>(this, DiagnosticReportStatus.PARTIAL);
234        if ("preliminary".equals(codeString))
235          return new Enumeration<DiagnosticReportStatus>(this, DiagnosticReportStatus.PRELIMINARY);
236        if ("final".equals(codeString))
237          return new Enumeration<DiagnosticReportStatus>(this, DiagnosticReportStatus.FINAL);
238        if ("amended".equals(codeString))
239          return new Enumeration<DiagnosticReportStatus>(this, DiagnosticReportStatus.AMENDED);
240        if ("corrected".equals(codeString))
241          return new Enumeration<DiagnosticReportStatus>(this, DiagnosticReportStatus.CORRECTED);
242        if ("appended".equals(codeString))
243          return new Enumeration<DiagnosticReportStatus>(this, DiagnosticReportStatus.APPENDED);
244        if ("cancelled".equals(codeString))
245          return new Enumeration<DiagnosticReportStatus>(this, DiagnosticReportStatus.CANCELLED);
246        if ("entered-in-error".equals(codeString))
247          return new Enumeration<DiagnosticReportStatus>(this, DiagnosticReportStatus.ENTEREDINERROR);
248        if ("unknown".equals(codeString))
249          return new Enumeration<DiagnosticReportStatus>(this, DiagnosticReportStatus.UNKNOWN);
250        throw new FHIRException("Unknown DiagnosticReportStatus code '"+codeString+"'");
251        }
252    public String toCode(DiagnosticReportStatus code) {
253      if (code == DiagnosticReportStatus.REGISTERED)
254        return "registered";
255      if (code == DiagnosticReportStatus.PARTIAL)
256        return "partial";
257      if (code == DiagnosticReportStatus.PRELIMINARY)
258        return "preliminary";
259      if (code == DiagnosticReportStatus.FINAL)
260        return "final";
261      if (code == DiagnosticReportStatus.AMENDED)
262        return "amended";
263      if (code == DiagnosticReportStatus.CORRECTED)
264        return "corrected";
265      if (code == DiagnosticReportStatus.APPENDED)
266        return "appended";
267      if (code == DiagnosticReportStatus.CANCELLED)
268        return "cancelled";
269      if (code == DiagnosticReportStatus.ENTEREDINERROR)
270        return "entered-in-error";
271      if (code == DiagnosticReportStatus.UNKNOWN)
272        return "unknown";
273      return "?";
274      }
275    public String toSystem(DiagnosticReportStatus code) {
276      return code.getSystem();
277      }
278    }
279
280    @Block()
281    public static class DiagnosticReportMediaComponent extends BackboneElement implements IBaseBackboneElement {
282        /**
283         * A comment about the image. Typically, this is used to provide an explanation for why the image is included, or to draw the viewer's attention to important features.
284         */
285        @Child(name = "comment", type = {StringType.class}, order=1, min=0, max=1, modifier=false, summary=false)
286        @Description(shortDefinition="Comment about the image (e.g. explanation)", formalDefinition="A comment about the image. Typically, this is used to provide an explanation for why the image is included, or to draw the viewer's attention to important features." )
287        protected StringType comment;
288
289        /**
290         * Reference to the image source.
291         */
292        @Child(name = "link", type = {Media.class}, order=2, min=1, max=1, modifier=false, summary=true)
293        @Description(shortDefinition="Reference to the image source", formalDefinition="Reference to the image source." )
294        protected Reference link;
295
296        private static final long serialVersionUID = 1827561947L;
297
298    /**
299     * Constructor
300     */
301      public DiagnosticReportMediaComponent() {
302        super();
303      }
304
305    /**
306     * Constructor
307     */
308      public DiagnosticReportMediaComponent(Reference link) {
309        super();
310        this.setLink(link);
311      }
312
313        /**
314         * @return {@link #comment} (A comment about the image. Typically, this is used to provide an explanation for why the image is included, or to draw the viewer's attention to important features.). This is the underlying object with id, value and extensions. The accessor "getComment" gives direct access to the value
315         */
316        public StringType getCommentElement() { 
317          if (this.comment == null)
318            if (Configuration.errorOnAutoCreate())
319              throw new Error("Attempt to auto-create DiagnosticReportMediaComponent.comment");
320            else if (Configuration.doAutoCreate())
321              this.comment = new StringType(); // bb
322          return this.comment;
323        }
324
325        public boolean hasCommentElement() { 
326          return this.comment != null && !this.comment.isEmpty();
327        }
328
329        public boolean hasComment() { 
330          return this.comment != null && !this.comment.isEmpty();
331        }
332
333        /**
334         * @param value {@link #comment} (A comment about the image. Typically, this is used to provide an explanation for why the image is included, or to draw the viewer's attention to important features.). This is the underlying object with id, value and extensions. The accessor "getComment" gives direct access to the value
335         */
336        public DiagnosticReportMediaComponent setCommentElement(StringType value) { 
337          this.comment = value;
338          return this;
339        }
340
341        /**
342         * @return A comment about the image. Typically, this is used to provide an explanation for why the image is included, or to draw the viewer's attention to important features.
343         */
344        public String getComment() { 
345          return this.comment == null ? null : this.comment.getValue();
346        }
347
348        /**
349         * @param value A comment about the image. Typically, this is used to provide an explanation for why the image is included, or to draw the viewer's attention to important features.
350         */
351        public DiagnosticReportMediaComponent setComment(String value) { 
352          if (Utilities.noString(value))
353            this.comment = null;
354          else {
355            if (this.comment == null)
356              this.comment = new StringType();
357            this.comment.setValue(value);
358          }
359          return this;
360        }
361
362        /**
363         * @return {@link #link} (Reference to the image source.)
364         */
365        public Reference getLink() { 
366          if (this.link == null)
367            if (Configuration.errorOnAutoCreate())
368              throw new Error("Attempt to auto-create DiagnosticReportMediaComponent.link");
369            else if (Configuration.doAutoCreate())
370              this.link = new Reference(); // cc
371          return this.link;
372        }
373
374        public boolean hasLink() { 
375          return this.link != null && !this.link.isEmpty();
376        }
377
378        /**
379         * @param value {@link #link} (Reference to the image source.)
380         */
381        public DiagnosticReportMediaComponent setLink(Reference value) { 
382          this.link = value;
383          return this;
384        }
385
386        protected void listChildren(List<Property> children) {
387          super.listChildren(children);
388          children.add(new Property("comment", "string", "A comment about the image. Typically, this is used to provide an explanation for why the image is included, or to draw the viewer's attention to important features.", 0, 1, comment));
389          children.add(new Property("link", "Reference(Media)", "Reference to the image source.", 0, 1, link));
390        }
391
392        @Override
393        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
394          switch (_hash) {
395          case 950398559: /*comment*/  return new Property("comment", "string", "A comment about the image. Typically, this is used to provide an explanation for why the image is included, or to draw the viewer's attention to important features.", 0, 1, comment);
396          case 3321850: /*link*/  return new Property("link", "Reference(Media)", "Reference to the image source.", 0, 1, link);
397          default: return super.getNamedProperty(_hash, _name, _checkValid);
398          }
399
400        }
401
402      @Override
403      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
404        switch (hash) {
405        case 950398559: /*comment*/ return this.comment == null ? new Base[0] : new Base[] {this.comment}; // StringType
406        case 3321850: /*link*/ return this.link == null ? new Base[0] : new Base[] {this.link}; // Reference
407        default: return super.getProperty(hash, name, checkValid);
408        }
409
410      }
411
412      @Override
413      public Base setProperty(int hash, String name, Base value) throws FHIRException {
414        switch (hash) {
415        case 950398559: // comment
416          this.comment = TypeConvertor.castToString(value); // StringType
417          return value;
418        case 3321850: // link
419          this.link = TypeConvertor.castToReference(value); // Reference
420          return value;
421        default: return super.setProperty(hash, name, value);
422        }
423
424      }
425
426      @Override
427      public Base setProperty(String name, Base value) throws FHIRException {
428        if (name.equals("comment")) {
429          this.comment = TypeConvertor.castToString(value); // StringType
430        } else if (name.equals("link")) {
431          this.link = TypeConvertor.castToReference(value); // Reference
432        } else
433          return super.setProperty(name, value);
434        return value;
435      }
436
437      @Override
438      public Base makeProperty(int hash, String name) throws FHIRException {
439        switch (hash) {
440        case 950398559:  return getCommentElement();
441        case 3321850:  return getLink();
442        default: return super.makeProperty(hash, name);
443        }
444
445      }
446
447      @Override
448      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
449        switch (hash) {
450        case 950398559: /*comment*/ return new String[] {"string"};
451        case 3321850: /*link*/ return new String[] {"Reference"};
452        default: return super.getTypesForProperty(hash, name);
453        }
454
455      }
456
457      @Override
458      public Base addChild(String name) throws FHIRException {
459        if (name.equals("comment")) {
460          throw new FHIRException("Cannot call addChild on a primitive type DiagnosticReport.media.comment");
461        }
462        else if (name.equals("link")) {
463          this.link = new Reference();
464          return this.link;
465        }
466        else
467          return super.addChild(name);
468      }
469
470      public DiagnosticReportMediaComponent copy() {
471        DiagnosticReportMediaComponent dst = new DiagnosticReportMediaComponent();
472        copyValues(dst);
473        return dst;
474      }
475
476      public void copyValues(DiagnosticReportMediaComponent dst) {
477        super.copyValues(dst);
478        dst.comment = comment == null ? null : comment.copy();
479        dst.link = link == null ? null : link.copy();
480      }
481
482      @Override
483      public boolean equalsDeep(Base other_) {
484        if (!super.equalsDeep(other_))
485          return false;
486        if (!(other_ instanceof DiagnosticReportMediaComponent))
487          return false;
488        DiagnosticReportMediaComponent o = (DiagnosticReportMediaComponent) other_;
489        return compareDeep(comment, o.comment, true) && compareDeep(link, o.link, true);
490      }
491
492      @Override
493      public boolean equalsShallow(Base other_) {
494        if (!super.equalsShallow(other_))
495          return false;
496        if (!(other_ instanceof DiagnosticReportMediaComponent))
497          return false;
498        DiagnosticReportMediaComponent o = (DiagnosticReportMediaComponent) other_;
499        return compareValues(comment, o.comment, true);
500      }
501
502      public boolean isEmpty() {
503        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(comment, link);
504      }
505
506  public String fhirType() {
507    return "DiagnosticReport.media";
508
509  }
510
511  }
512
513    /**
514     * Identifiers assigned to this report by the performer or other systems.
515     */
516    @Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
517    @Description(shortDefinition="Business identifier for report", formalDefinition="Identifiers assigned to this report by the performer or other systems." )
518    protected List<Identifier> identifier;
519
520    /**
521     * Details concerning a service requested.
522     */
523    @Child(name = "basedOn", type = {CarePlan.class, ImmunizationRecommendation.class, MedicationRequest.class, NutritionOrder.class, ServiceRequest.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
524    @Description(shortDefinition="What was requested", formalDefinition="Details concerning a service requested." )
525    protected List<Reference> basedOn;
526
527    /**
528     * The status of the diagnostic report.
529     */
530    @Child(name = "status", type = {CodeType.class}, order=2, min=1, max=1, modifier=true, summary=true)
531    @Description(shortDefinition="registered | partial | preliminary | final +", formalDefinition="The status of the diagnostic report." )
532    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/diagnostic-report-status")
533    protected Enumeration<DiagnosticReportStatus> status;
534
535    /**
536     * A code that classifies the clinical discipline, department or diagnostic service that created the report (e.g. cardiology, biochemistry, hematology, MRI). This is used for searching, sorting and display purposes.
537     */
538    @Child(name = "category", type = {CodeableConcept.class}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
539    @Description(shortDefinition="Service category", formalDefinition="A code that classifies the clinical discipline, department or diagnostic service that created the report (e.g. cardiology, biochemistry, hematology, MRI). This is used for searching, sorting and display purposes." )
540    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/diagnostic-service-sections")
541    protected List<CodeableConcept> category;
542
543    /**
544     * A code or name that describes this diagnostic report.
545     */
546    @Child(name = "code", type = {CodeableConcept.class}, order=4, min=1, max=1, modifier=false, summary=true)
547    @Description(shortDefinition="Name/Code for this diagnostic report", formalDefinition="A code or name that describes this diagnostic report." )
548    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/report-codes")
549    protected CodeableConcept code;
550
551    /**
552     * The subject of the report. Usually, but not always, this is a patient. However, diagnostic services also perform analyses on specimens collected from a variety of other sources.
553     */
554    @Child(name = "subject", type = {Patient.class, Group.class, Device.class, Location.class, Organization.class, Procedure.class, Practitioner.class, Medication.class, Substance.class}, order=5, min=0, max=1, modifier=false, summary=true)
555    @Description(shortDefinition="The subject of the report - usually, but not always, the patient", formalDefinition="The subject of the report. Usually, but not always, this is a patient. However, diagnostic services also perform analyses on specimens collected from a variety of other sources." )
556    protected Reference subject;
557
558    /**
559     * The healthcare event  (e.g. a patient and healthcare provider interaction) which this DiagnosticReport is about.
560     */
561    @Child(name = "encounter", type = {Encounter.class}, order=6, min=0, max=1, modifier=false, summary=true)
562    @Description(shortDefinition="Health care event when test ordered", formalDefinition="The healthcare event  (e.g. a patient and healthcare provider interaction) which this DiagnosticReport is about." )
563    protected Reference encounter;
564
565    /**
566     * The time or time-period the observed values are related to. When the subject of the report is a patient, this is usually either the time of the procedure or of specimen collection(s), but very often the source of the date/time is not known, only the date/time itself.
567     */
568    @Child(name = "effective", type = {DateTimeType.class, Period.class}, order=7, min=0, max=1, modifier=false, summary=true)
569    @Description(shortDefinition="Clinically relevant time/time-period for report", formalDefinition="The time or time-period the observed values are related to. When the subject of the report is a patient, this is usually either the time of the procedure or of specimen collection(s), but very often the source of the date/time is not known, only the date/time itself." )
570    protected DataType effective;
571
572    /**
573     * The date and time that this version of the report was made available to providers, typically after the report was reviewed and verified.
574     */
575    @Child(name = "issued", type = {InstantType.class}, order=8, min=0, max=1, modifier=false, summary=true)
576    @Description(shortDefinition="DateTime this version was made", formalDefinition="The date and time that this version of the report was made available to providers, typically after the report was reviewed and verified." )
577    protected InstantType issued;
578
579    /**
580     * The diagnostic service that is responsible for issuing the report.
581     */
582    @Child(name = "performer", type = {Practitioner.class, PractitionerRole.class, Organization.class, CareTeam.class}, order=9, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
583    @Description(shortDefinition="Responsible Diagnostic Service", formalDefinition="The diagnostic service that is responsible for issuing the report." )
584    protected List<Reference> performer;
585
586    /**
587     * The practitioner or organization that is responsible for the report's conclusions and interpretations.
588     */
589    @Child(name = "resultsInterpreter", type = {Practitioner.class, PractitionerRole.class, Organization.class, CareTeam.class}, order=10, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
590    @Description(shortDefinition="Primary result interpreter", formalDefinition="The practitioner or organization that is responsible for the report's conclusions and interpretations." )
591    protected List<Reference> resultsInterpreter;
592
593    /**
594     * Details about the specimens on which this diagnostic report is based.
595     */
596    @Child(name = "specimen", type = {Specimen.class}, order=11, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
597    @Description(shortDefinition="Specimens this report is based on", formalDefinition="Details about the specimens on which this diagnostic report is based." )
598    protected List<Reference> specimen;
599
600    /**
601     * [Observations](observation.html)  that are part of this diagnostic report.
602     */
603    @Child(name = "result", type = {Observation.class}, order=12, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
604    @Description(shortDefinition="Observations", formalDefinition="[Observations](observation.html)  that are part of this diagnostic report." )
605    protected List<Reference> result;
606
607    /**
608     * One or more links to full details of any imaging performed during the diagnostic investigation. Typically, this is imaging performed by DICOM enabled modalities, but this is not required. A fully enabled PACS viewer can use this information to provide views of the source images.
609     */
610    @Child(name = "imagingStudy", type = {ImagingStudy.class}, order=13, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
611    @Description(shortDefinition="Reference to full details of imaging associated with the diagnostic report", formalDefinition="One or more links to full details of any imaging performed during the diagnostic investigation. Typically, this is imaging performed by DICOM enabled modalities, but this is not required. A fully enabled PACS viewer can use this information to provide views of the source images." )
612    protected List<Reference> imagingStudy;
613
614    /**
615     * A list of key images associated with this report. The images are generally created during the diagnostic process, and may be directly of the patient, or of treated specimens (i.e. slides of interest).
616     */
617    @Child(name = "media", type = {}, order=14, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
618    @Description(shortDefinition="Key images associated with this report", formalDefinition="A list of key images associated with this report. The images are generally created during the diagnostic process, and may be directly of the patient, or of treated specimens (i.e. slides of interest)." )
619    protected List<DiagnosticReportMediaComponent> media;
620
621    /**
622     * Concise and clinically contextualized summary conclusion (interpretation/impression) of the diagnostic report.
623     */
624    @Child(name = "conclusion", type = {StringType.class}, order=15, min=0, max=1, modifier=false, summary=false)
625    @Description(shortDefinition="Clinical conclusion (interpretation) of test results", formalDefinition="Concise and clinically contextualized summary conclusion (interpretation/impression) of the diagnostic report." )
626    protected StringType conclusion;
627
628    /**
629     * One or more codes that represent the summary conclusion (interpretation/impression) of the diagnostic report.
630     */
631    @Child(name = "conclusionCode", type = {CodeableConcept.class}, order=16, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
632    @Description(shortDefinition="Codes for the clinical conclusion of test results", formalDefinition="One or more codes that represent the summary conclusion (interpretation/impression) of the diagnostic report." )
633    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/clinical-findings")
634    protected List<CodeableConcept> conclusionCode;
635
636    /**
637     * Rich text representation of the entire result as issued by the diagnostic service. Multiple formats are allowed but they SHALL be semantically equivalent.
638     */
639    @Child(name = "presentedForm", type = {Attachment.class}, order=17, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
640    @Description(shortDefinition="Entire report as issued", formalDefinition="Rich text representation of the entire result as issued by the diagnostic service. Multiple formats are allowed but they SHALL be semantically equivalent." )
641    protected List<Attachment> presentedForm;
642
643    private static final long serialVersionUID = 1870271821L;
644
645  /**
646   * Constructor
647   */
648    public DiagnosticReport() {
649      super();
650    }
651
652  /**
653   * Constructor
654   */
655    public DiagnosticReport(DiagnosticReportStatus status, CodeableConcept code) {
656      super();
657      this.setStatus(status);
658      this.setCode(code);
659    }
660
661    /**
662     * @return {@link #identifier} (Identifiers assigned to this report by the performer or other systems.)
663     */
664    public List<Identifier> getIdentifier() { 
665      if (this.identifier == null)
666        this.identifier = new ArrayList<Identifier>();
667      return this.identifier;
668    }
669
670    /**
671     * @return Returns a reference to <code>this</code> for easy method chaining
672     */
673    public DiagnosticReport setIdentifier(List<Identifier> theIdentifier) { 
674      this.identifier = theIdentifier;
675      return this;
676    }
677
678    public boolean hasIdentifier() { 
679      if (this.identifier == null)
680        return false;
681      for (Identifier item : this.identifier)
682        if (!item.isEmpty())
683          return true;
684      return false;
685    }
686
687    public Identifier addIdentifier() { //3
688      Identifier t = new Identifier();
689      if (this.identifier == null)
690        this.identifier = new ArrayList<Identifier>();
691      this.identifier.add(t);
692      return t;
693    }
694
695    public DiagnosticReport addIdentifier(Identifier t) { //3
696      if (t == null)
697        return this;
698      if (this.identifier == null)
699        this.identifier = new ArrayList<Identifier>();
700      this.identifier.add(t);
701      return this;
702    }
703
704    /**
705     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {3}
706     */
707    public Identifier getIdentifierFirstRep() { 
708      if (getIdentifier().isEmpty()) {
709        addIdentifier();
710      }
711      return getIdentifier().get(0);
712    }
713
714    /**
715     * @return {@link #basedOn} (Details concerning a service requested.)
716     */
717    public List<Reference> getBasedOn() { 
718      if (this.basedOn == null)
719        this.basedOn = new ArrayList<Reference>();
720      return this.basedOn;
721    }
722
723    /**
724     * @return Returns a reference to <code>this</code> for easy method chaining
725     */
726    public DiagnosticReport setBasedOn(List<Reference> theBasedOn) { 
727      this.basedOn = theBasedOn;
728      return this;
729    }
730
731    public boolean hasBasedOn() { 
732      if (this.basedOn == null)
733        return false;
734      for (Reference item : this.basedOn)
735        if (!item.isEmpty())
736          return true;
737      return false;
738    }
739
740    public Reference addBasedOn() { //3
741      Reference t = new Reference();
742      if (this.basedOn == null)
743        this.basedOn = new ArrayList<Reference>();
744      this.basedOn.add(t);
745      return t;
746    }
747
748    public DiagnosticReport addBasedOn(Reference t) { //3
749      if (t == null)
750        return this;
751      if (this.basedOn == null)
752        this.basedOn = new ArrayList<Reference>();
753      this.basedOn.add(t);
754      return this;
755    }
756
757    /**
758     * @return The first repetition of repeating field {@link #basedOn}, creating it if it does not already exist {3}
759     */
760    public Reference getBasedOnFirstRep() { 
761      if (getBasedOn().isEmpty()) {
762        addBasedOn();
763      }
764      return getBasedOn().get(0);
765    }
766
767    /**
768     * @return {@link #status} (The status of the diagnostic report.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
769     */
770    public Enumeration<DiagnosticReportStatus> getStatusElement() { 
771      if (this.status == null)
772        if (Configuration.errorOnAutoCreate())
773          throw new Error("Attempt to auto-create DiagnosticReport.status");
774        else if (Configuration.doAutoCreate())
775          this.status = new Enumeration<DiagnosticReportStatus>(new DiagnosticReportStatusEnumFactory()); // bb
776      return this.status;
777    }
778
779    public boolean hasStatusElement() { 
780      return this.status != null && !this.status.isEmpty();
781    }
782
783    public boolean hasStatus() { 
784      return this.status != null && !this.status.isEmpty();
785    }
786
787    /**
788     * @param value {@link #status} (The status of the diagnostic report.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
789     */
790    public DiagnosticReport setStatusElement(Enumeration<DiagnosticReportStatus> value) { 
791      this.status = value;
792      return this;
793    }
794
795    /**
796     * @return The status of the diagnostic report.
797     */
798    public DiagnosticReportStatus getStatus() { 
799      return this.status == null ? null : this.status.getValue();
800    }
801
802    /**
803     * @param value The status of the diagnostic report.
804     */
805    public DiagnosticReport setStatus(DiagnosticReportStatus value) { 
806        if (this.status == null)
807          this.status = new Enumeration<DiagnosticReportStatus>(new DiagnosticReportStatusEnumFactory());
808        this.status.setValue(value);
809      return this;
810    }
811
812    /**
813     * @return {@link #category} (A code that classifies the clinical discipline, department or diagnostic service that created the report (e.g. cardiology, biochemistry, hematology, MRI). This is used for searching, sorting and display purposes.)
814     */
815    public List<CodeableConcept> getCategory() { 
816      if (this.category == null)
817        this.category = new ArrayList<CodeableConcept>();
818      return this.category;
819    }
820
821    /**
822     * @return Returns a reference to <code>this</code> for easy method chaining
823     */
824    public DiagnosticReport setCategory(List<CodeableConcept> theCategory) { 
825      this.category = theCategory;
826      return this;
827    }
828
829    public boolean hasCategory() { 
830      if (this.category == null)
831        return false;
832      for (CodeableConcept item : this.category)
833        if (!item.isEmpty())
834          return true;
835      return false;
836    }
837
838    public CodeableConcept addCategory() { //3
839      CodeableConcept t = new CodeableConcept();
840      if (this.category == null)
841        this.category = new ArrayList<CodeableConcept>();
842      this.category.add(t);
843      return t;
844    }
845
846    public DiagnosticReport addCategory(CodeableConcept t) { //3
847      if (t == null)
848        return this;
849      if (this.category == null)
850        this.category = new ArrayList<CodeableConcept>();
851      this.category.add(t);
852      return this;
853    }
854
855    /**
856     * @return The first repetition of repeating field {@link #category}, creating it if it does not already exist {3}
857     */
858    public CodeableConcept getCategoryFirstRep() { 
859      if (getCategory().isEmpty()) {
860        addCategory();
861      }
862      return getCategory().get(0);
863    }
864
865    /**
866     * @return {@link #code} (A code or name that describes this diagnostic report.)
867     */
868    public CodeableConcept getCode() { 
869      if (this.code == null)
870        if (Configuration.errorOnAutoCreate())
871          throw new Error("Attempt to auto-create DiagnosticReport.code");
872        else if (Configuration.doAutoCreate())
873          this.code = new CodeableConcept(); // cc
874      return this.code;
875    }
876
877    public boolean hasCode() { 
878      return this.code != null && !this.code.isEmpty();
879    }
880
881    /**
882     * @param value {@link #code} (A code or name that describes this diagnostic report.)
883     */
884    public DiagnosticReport setCode(CodeableConcept value) { 
885      this.code = value;
886      return this;
887    }
888
889    /**
890     * @return {@link #subject} (The subject of the report. Usually, but not always, this is a patient. However, diagnostic services also perform analyses on specimens collected from a variety of other sources.)
891     */
892    public Reference getSubject() { 
893      if (this.subject == null)
894        if (Configuration.errorOnAutoCreate())
895          throw new Error("Attempt to auto-create DiagnosticReport.subject");
896        else if (Configuration.doAutoCreate())
897          this.subject = new Reference(); // cc
898      return this.subject;
899    }
900
901    public boolean hasSubject() { 
902      return this.subject != null && !this.subject.isEmpty();
903    }
904
905    /**
906     * @param value {@link #subject} (The subject of the report. Usually, but not always, this is a patient. However, diagnostic services also perform analyses on specimens collected from a variety of other sources.)
907     */
908    public DiagnosticReport setSubject(Reference value) { 
909      this.subject = value;
910      return this;
911    }
912
913    /**
914     * @return {@link #encounter} (The healthcare event  (e.g. a patient and healthcare provider interaction) which this DiagnosticReport is about.)
915     */
916    public Reference getEncounter() { 
917      if (this.encounter == null)
918        if (Configuration.errorOnAutoCreate())
919          throw new Error("Attempt to auto-create DiagnosticReport.encounter");
920        else if (Configuration.doAutoCreate())
921          this.encounter = new Reference(); // cc
922      return this.encounter;
923    }
924
925    public boolean hasEncounter() { 
926      return this.encounter != null && !this.encounter.isEmpty();
927    }
928
929    /**
930     * @param value {@link #encounter} (The healthcare event  (e.g. a patient and healthcare provider interaction) which this DiagnosticReport is about.)
931     */
932    public DiagnosticReport setEncounter(Reference value) { 
933      this.encounter = value;
934      return this;
935    }
936
937    /**
938     * @return {@link #effective} (The time or time-period the observed values are related to. When the subject of the report is a patient, this is usually either the time of the procedure or of specimen collection(s), but very often the source of the date/time is not known, only the date/time itself.)
939     */
940    public DataType getEffective() { 
941      return this.effective;
942    }
943
944    /**
945     * @return {@link #effective} (The time or time-period the observed values are related to. When the subject of the report is a patient, this is usually either the time of the procedure or of specimen collection(s), but very often the source of the date/time is not known, only the date/time itself.)
946     */
947    public DateTimeType getEffectiveDateTimeType() throws FHIRException { 
948      if (this.effective == null)
949        this.effective = new DateTimeType();
950      if (!(this.effective instanceof DateTimeType))
951        throw new FHIRException("Type mismatch: the type DateTimeType was expected, but "+this.effective.getClass().getName()+" was encountered");
952      return (DateTimeType) this.effective;
953    }
954
955    public boolean hasEffectiveDateTimeType() { 
956      return this != null && this.effective instanceof DateTimeType;
957    }
958
959    /**
960     * @return {@link #effective} (The time or time-period the observed values are related to. When the subject of the report is a patient, this is usually either the time of the procedure or of specimen collection(s), but very often the source of the date/time is not known, only the date/time itself.)
961     */
962    public Period getEffectivePeriod() throws FHIRException { 
963      if (this.effective == null)
964        this.effective = new Period();
965      if (!(this.effective instanceof Period))
966        throw new FHIRException("Type mismatch: the type Period was expected, but "+this.effective.getClass().getName()+" was encountered");
967      return (Period) this.effective;
968    }
969
970    public boolean hasEffectivePeriod() { 
971      return this != null && this.effective instanceof Period;
972    }
973
974    public boolean hasEffective() { 
975      return this.effective != null && !this.effective.isEmpty();
976    }
977
978    /**
979     * @param value {@link #effective} (The time or time-period the observed values are related to. When the subject of the report is a patient, this is usually either the time of the procedure or of specimen collection(s), but very often the source of the date/time is not known, only the date/time itself.)
980     */
981    public DiagnosticReport setEffective(DataType value) { 
982      if (value != null && !(value instanceof DateTimeType || value instanceof Period))
983        throw new Error("Not the right type for DiagnosticReport.effective[x]: "+value.fhirType());
984      this.effective = value;
985      return this;
986    }
987
988    /**
989     * @return {@link #issued} (The date and time that this version of the report was made available to providers, typically after the report was reviewed and verified.). This is the underlying object with id, value and extensions. The accessor "getIssued" gives direct access to the value
990     */
991    public InstantType getIssuedElement() { 
992      if (this.issued == null)
993        if (Configuration.errorOnAutoCreate())
994          throw new Error("Attempt to auto-create DiagnosticReport.issued");
995        else if (Configuration.doAutoCreate())
996          this.issued = new InstantType(); // bb
997      return this.issued;
998    }
999
1000    public boolean hasIssuedElement() { 
1001      return this.issued != null && !this.issued.isEmpty();
1002    }
1003
1004    public boolean hasIssued() { 
1005      return this.issued != null && !this.issued.isEmpty();
1006    }
1007
1008    /**
1009     * @param value {@link #issued} (The date and time that this version of the report was made available to providers, typically after the report was reviewed and verified.). This is the underlying object with id, value and extensions. The accessor "getIssued" gives direct access to the value
1010     */
1011    public DiagnosticReport setIssuedElement(InstantType value) { 
1012      this.issued = value;
1013      return this;
1014    }
1015
1016    /**
1017     * @return The date and time that this version of the report was made available to providers, typically after the report was reviewed and verified.
1018     */
1019    public Date getIssued() { 
1020      return this.issued == null ? null : this.issued.getValue();
1021    }
1022
1023    /**
1024     * @param value The date and time that this version of the report was made available to providers, typically after the report was reviewed and verified.
1025     */
1026    public DiagnosticReport setIssued(Date value) { 
1027      if (value == null)
1028        this.issued = null;
1029      else {
1030        if (this.issued == null)
1031          this.issued = new InstantType();
1032        this.issued.setValue(value);
1033      }
1034      return this;
1035    }
1036
1037    /**
1038     * @return {@link #performer} (The diagnostic service that is responsible for issuing the report.)
1039     */
1040    public List<Reference> getPerformer() { 
1041      if (this.performer == null)
1042        this.performer = new ArrayList<Reference>();
1043      return this.performer;
1044    }
1045
1046    /**
1047     * @return Returns a reference to <code>this</code> for easy method chaining
1048     */
1049    public DiagnosticReport setPerformer(List<Reference> thePerformer) { 
1050      this.performer = thePerformer;
1051      return this;
1052    }
1053
1054    public boolean hasPerformer() { 
1055      if (this.performer == null)
1056        return false;
1057      for (Reference item : this.performer)
1058        if (!item.isEmpty())
1059          return true;
1060      return false;
1061    }
1062
1063    public Reference addPerformer() { //3
1064      Reference t = new Reference();
1065      if (this.performer == null)
1066        this.performer = new ArrayList<Reference>();
1067      this.performer.add(t);
1068      return t;
1069    }
1070
1071    public DiagnosticReport addPerformer(Reference t) { //3
1072      if (t == null)
1073        return this;
1074      if (this.performer == null)
1075        this.performer = new ArrayList<Reference>();
1076      this.performer.add(t);
1077      return this;
1078    }
1079
1080    /**
1081     * @return The first repetition of repeating field {@link #performer}, creating it if it does not already exist {3}
1082     */
1083    public Reference getPerformerFirstRep() { 
1084      if (getPerformer().isEmpty()) {
1085        addPerformer();
1086      }
1087      return getPerformer().get(0);
1088    }
1089
1090    /**
1091     * @return {@link #resultsInterpreter} (The practitioner or organization that is responsible for the report's conclusions and interpretations.)
1092     */
1093    public List<Reference> getResultsInterpreter() { 
1094      if (this.resultsInterpreter == null)
1095        this.resultsInterpreter = new ArrayList<Reference>();
1096      return this.resultsInterpreter;
1097    }
1098
1099    /**
1100     * @return Returns a reference to <code>this</code> for easy method chaining
1101     */
1102    public DiagnosticReport setResultsInterpreter(List<Reference> theResultsInterpreter) { 
1103      this.resultsInterpreter = theResultsInterpreter;
1104      return this;
1105    }
1106
1107    public boolean hasResultsInterpreter() { 
1108      if (this.resultsInterpreter == null)
1109        return false;
1110      for (Reference item : this.resultsInterpreter)
1111        if (!item.isEmpty())
1112          return true;
1113      return false;
1114    }
1115
1116    public Reference addResultsInterpreter() { //3
1117      Reference t = new Reference();
1118      if (this.resultsInterpreter == null)
1119        this.resultsInterpreter = new ArrayList<Reference>();
1120      this.resultsInterpreter.add(t);
1121      return t;
1122    }
1123
1124    public DiagnosticReport addResultsInterpreter(Reference t) { //3
1125      if (t == null)
1126        return this;
1127      if (this.resultsInterpreter == null)
1128        this.resultsInterpreter = new ArrayList<Reference>();
1129      this.resultsInterpreter.add(t);
1130      return this;
1131    }
1132
1133    /**
1134     * @return The first repetition of repeating field {@link #resultsInterpreter}, creating it if it does not already exist {3}
1135     */
1136    public Reference getResultsInterpreterFirstRep() { 
1137      if (getResultsInterpreter().isEmpty()) {
1138        addResultsInterpreter();
1139      }
1140      return getResultsInterpreter().get(0);
1141    }
1142
1143    /**
1144     * @return {@link #specimen} (Details about the specimens on which this diagnostic report is based.)
1145     */
1146    public List<Reference> getSpecimen() { 
1147      if (this.specimen == null)
1148        this.specimen = new ArrayList<Reference>();
1149      return this.specimen;
1150    }
1151
1152    /**
1153     * @return Returns a reference to <code>this</code> for easy method chaining
1154     */
1155    public DiagnosticReport setSpecimen(List<Reference> theSpecimen) { 
1156      this.specimen = theSpecimen;
1157      return this;
1158    }
1159
1160    public boolean hasSpecimen() { 
1161      if (this.specimen == null)
1162        return false;
1163      for (Reference item : this.specimen)
1164        if (!item.isEmpty())
1165          return true;
1166      return false;
1167    }
1168
1169    public Reference addSpecimen() { //3
1170      Reference t = new Reference();
1171      if (this.specimen == null)
1172        this.specimen = new ArrayList<Reference>();
1173      this.specimen.add(t);
1174      return t;
1175    }
1176
1177    public DiagnosticReport addSpecimen(Reference t) { //3
1178      if (t == null)
1179        return this;
1180      if (this.specimen == null)
1181        this.specimen = new ArrayList<Reference>();
1182      this.specimen.add(t);
1183      return this;
1184    }
1185
1186    /**
1187     * @return The first repetition of repeating field {@link #specimen}, creating it if it does not already exist {3}
1188     */
1189    public Reference getSpecimenFirstRep() { 
1190      if (getSpecimen().isEmpty()) {
1191        addSpecimen();
1192      }
1193      return getSpecimen().get(0);
1194    }
1195
1196    /**
1197     * @return {@link #result} ([Observations](observation.html)  that are part of this diagnostic report.)
1198     */
1199    public List<Reference> getResult() { 
1200      if (this.result == null)
1201        this.result = new ArrayList<Reference>();
1202      return this.result;
1203    }
1204
1205    /**
1206     * @return Returns a reference to <code>this</code> for easy method chaining
1207     */
1208    public DiagnosticReport setResult(List<Reference> theResult) { 
1209      this.result = theResult;
1210      return this;
1211    }
1212
1213    public boolean hasResult() { 
1214      if (this.result == null)
1215        return false;
1216      for (Reference item : this.result)
1217        if (!item.isEmpty())
1218          return true;
1219      return false;
1220    }
1221
1222    public Reference addResult() { //3
1223      Reference t = new Reference();
1224      if (this.result == null)
1225        this.result = new ArrayList<Reference>();
1226      this.result.add(t);
1227      return t;
1228    }
1229
1230    public DiagnosticReport addResult(Reference t) { //3
1231      if (t == null)
1232        return this;
1233      if (this.result == null)
1234        this.result = new ArrayList<Reference>();
1235      this.result.add(t);
1236      return this;
1237    }
1238
1239    /**
1240     * @return The first repetition of repeating field {@link #result}, creating it if it does not already exist {3}
1241     */
1242    public Reference getResultFirstRep() { 
1243      if (getResult().isEmpty()) {
1244        addResult();
1245      }
1246      return getResult().get(0);
1247    }
1248
1249    /**
1250     * @return {@link #imagingStudy} (One or more links to full details of any imaging performed during the diagnostic investigation. Typically, this is imaging performed by DICOM enabled modalities, but this is not required. A fully enabled PACS viewer can use this information to provide views of the source images.)
1251     */
1252    public List<Reference> getImagingStudy() { 
1253      if (this.imagingStudy == null)
1254        this.imagingStudy = new ArrayList<Reference>();
1255      return this.imagingStudy;
1256    }
1257
1258    /**
1259     * @return Returns a reference to <code>this</code> for easy method chaining
1260     */
1261    public DiagnosticReport setImagingStudy(List<Reference> theImagingStudy) { 
1262      this.imagingStudy = theImagingStudy;
1263      return this;
1264    }
1265
1266    public boolean hasImagingStudy() { 
1267      if (this.imagingStudy == null)
1268        return false;
1269      for (Reference item : this.imagingStudy)
1270        if (!item.isEmpty())
1271          return true;
1272      return false;
1273    }
1274
1275    public Reference addImagingStudy() { //3
1276      Reference t = new Reference();
1277      if (this.imagingStudy == null)
1278        this.imagingStudy = new ArrayList<Reference>();
1279      this.imagingStudy.add(t);
1280      return t;
1281    }
1282
1283    public DiagnosticReport addImagingStudy(Reference t) { //3
1284      if (t == null)
1285        return this;
1286      if (this.imagingStudy == null)
1287        this.imagingStudy = new ArrayList<Reference>();
1288      this.imagingStudy.add(t);
1289      return this;
1290    }
1291
1292    /**
1293     * @return The first repetition of repeating field {@link #imagingStudy}, creating it if it does not already exist {3}
1294     */
1295    public Reference getImagingStudyFirstRep() { 
1296      if (getImagingStudy().isEmpty()) {
1297        addImagingStudy();
1298      }
1299      return getImagingStudy().get(0);
1300    }
1301
1302    /**
1303     * @return {@link #media} (A list of key images associated with this report. The images are generally created during the diagnostic process, and may be directly of the patient, or of treated specimens (i.e. slides of interest).)
1304     */
1305    public List<DiagnosticReportMediaComponent> getMedia() { 
1306      if (this.media == null)
1307        this.media = new ArrayList<DiagnosticReportMediaComponent>();
1308      return this.media;
1309    }
1310
1311    /**
1312     * @return Returns a reference to <code>this</code> for easy method chaining
1313     */
1314    public DiagnosticReport setMedia(List<DiagnosticReportMediaComponent> theMedia) { 
1315      this.media = theMedia;
1316      return this;
1317    }
1318
1319    public boolean hasMedia() { 
1320      if (this.media == null)
1321        return false;
1322      for (DiagnosticReportMediaComponent item : this.media)
1323        if (!item.isEmpty())
1324          return true;
1325      return false;
1326    }
1327
1328    public DiagnosticReportMediaComponent addMedia() { //3
1329      DiagnosticReportMediaComponent t = new DiagnosticReportMediaComponent();
1330      if (this.media == null)
1331        this.media = new ArrayList<DiagnosticReportMediaComponent>();
1332      this.media.add(t);
1333      return t;
1334    }
1335
1336    public DiagnosticReport addMedia(DiagnosticReportMediaComponent t) { //3
1337      if (t == null)
1338        return this;
1339      if (this.media == null)
1340        this.media = new ArrayList<DiagnosticReportMediaComponent>();
1341      this.media.add(t);
1342      return this;
1343    }
1344
1345    /**
1346     * @return The first repetition of repeating field {@link #media}, creating it if it does not already exist {3}
1347     */
1348    public DiagnosticReportMediaComponent getMediaFirstRep() { 
1349      if (getMedia().isEmpty()) {
1350        addMedia();
1351      }
1352      return getMedia().get(0);
1353    }
1354
1355    /**
1356     * @return {@link #conclusion} (Concise and clinically contextualized summary conclusion (interpretation/impression) of the diagnostic report.). This is the underlying object with id, value and extensions. The accessor "getConclusion" gives direct access to the value
1357     */
1358    public StringType getConclusionElement() { 
1359      if (this.conclusion == null)
1360        if (Configuration.errorOnAutoCreate())
1361          throw new Error("Attempt to auto-create DiagnosticReport.conclusion");
1362        else if (Configuration.doAutoCreate())
1363          this.conclusion = new StringType(); // bb
1364      return this.conclusion;
1365    }
1366
1367    public boolean hasConclusionElement() { 
1368      return this.conclusion != null && !this.conclusion.isEmpty();
1369    }
1370
1371    public boolean hasConclusion() { 
1372      return this.conclusion != null && !this.conclusion.isEmpty();
1373    }
1374
1375    /**
1376     * @param value {@link #conclusion} (Concise and clinically contextualized summary conclusion (interpretation/impression) of the diagnostic report.). This is the underlying object with id, value and extensions. The accessor "getConclusion" gives direct access to the value
1377     */
1378    public DiagnosticReport setConclusionElement(StringType value) { 
1379      this.conclusion = value;
1380      return this;
1381    }
1382
1383    /**
1384     * @return Concise and clinically contextualized summary conclusion (interpretation/impression) of the diagnostic report.
1385     */
1386    public String getConclusion() { 
1387      return this.conclusion == null ? null : this.conclusion.getValue();
1388    }
1389
1390    /**
1391     * @param value Concise and clinically contextualized summary conclusion (interpretation/impression) of the diagnostic report.
1392     */
1393    public DiagnosticReport setConclusion(String value) { 
1394      if (Utilities.noString(value))
1395        this.conclusion = null;
1396      else {
1397        if (this.conclusion == null)
1398          this.conclusion = new StringType();
1399        this.conclusion.setValue(value);
1400      }
1401      return this;
1402    }
1403
1404    /**
1405     * @return {@link #conclusionCode} (One or more codes that represent the summary conclusion (interpretation/impression) of the diagnostic report.)
1406     */
1407    public List<CodeableConcept> getConclusionCode() { 
1408      if (this.conclusionCode == null)
1409        this.conclusionCode = new ArrayList<CodeableConcept>();
1410      return this.conclusionCode;
1411    }
1412
1413    /**
1414     * @return Returns a reference to <code>this</code> for easy method chaining
1415     */
1416    public DiagnosticReport setConclusionCode(List<CodeableConcept> theConclusionCode) { 
1417      this.conclusionCode = theConclusionCode;
1418      return this;
1419    }
1420
1421    public boolean hasConclusionCode() { 
1422      if (this.conclusionCode == null)
1423        return false;
1424      for (CodeableConcept item : this.conclusionCode)
1425        if (!item.isEmpty())
1426          return true;
1427      return false;
1428    }
1429
1430    public CodeableConcept addConclusionCode() { //3
1431      CodeableConcept t = new CodeableConcept();
1432      if (this.conclusionCode == null)
1433        this.conclusionCode = new ArrayList<CodeableConcept>();
1434      this.conclusionCode.add(t);
1435      return t;
1436    }
1437
1438    public DiagnosticReport addConclusionCode(CodeableConcept t) { //3
1439      if (t == null)
1440        return this;
1441      if (this.conclusionCode == null)
1442        this.conclusionCode = new ArrayList<CodeableConcept>();
1443      this.conclusionCode.add(t);
1444      return this;
1445    }
1446
1447    /**
1448     * @return The first repetition of repeating field {@link #conclusionCode}, creating it if it does not already exist {3}
1449     */
1450    public CodeableConcept getConclusionCodeFirstRep() { 
1451      if (getConclusionCode().isEmpty()) {
1452        addConclusionCode();
1453      }
1454      return getConclusionCode().get(0);
1455    }
1456
1457    /**
1458     * @return {@link #presentedForm} (Rich text representation of the entire result as issued by the diagnostic service. Multiple formats are allowed but they SHALL be semantically equivalent.)
1459     */
1460    public List<Attachment> getPresentedForm() { 
1461      if (this.presentedForm == null)
1462        this.presentedForm = new ArrayList<Attachment>();
1463      return this.presentedForm;
1464    }
1465
1466    /**
1467     * @return Returns a reference to <code>this</code> for easy method chaining
1468     */
1469    public DiagnosticReport setPresentedForm(List<Attachment> thePresentedForm) { 
1470      this.presentedForm = thePresentedForm;
1471      return this;
1472    }
1473
1474    public boolean hasPresentedForm() { 
1475      if (this.presentedForm == null)
1476        return false;
1477      for (Attachment item : this.presentedForm)
1478        if (!item.isEmpty())
1479          return true;
1480      return false;
1481    }
1482
1483    public Attachment addPresentedForm() { //3
1484      Attachment t = new Attachment();
1485      if (this.presentedForm == null)
1486        this.presentedForm = new ArrayList<Attachment>();
1487      this.presentedForm.add(t);
1488      return t;
1489    }
1490
1491    public DiagnosticReport addPresentedForm(Attachment t) { //3
1492      if (t == null)
1493        return this;
1494      if (this.presentedForm == null)
1495        this.presentedForm = new ArrayList<Attachment>();
1496      this.presentedForm.add(t);
1497      return this;
1498    }
1499
1500    /**
1501     * @return The first repetition of repeating field {@link #presentedForm}, creating it if it does not already exist {3}
1502     */
1503    public Attachment getPresentedFormFirstRep() { 
1504      if (getPresentedForm().isEmpty()) {
1505        addPresentedForm();
1506      }
1507      return getPresentedForm().get(0);
1508    }
1509
1510      protected void listChildren(List<Property> children) {
1511        super.listChildren(children);
1512        children.add(new Property("identifier", "Identifier", "Identifiers assigned to this report by the performer or other systems.", 0, java.lang.Integer.MAX_VALUE, identifier));
1513        children.add(new Property("basedOn", "Reference(CarePlan|ImmunizationRecommendation|MedicationRequest|NutritionOrder|ServiceRequest)", "Details concerning a service requested.", 0, java.lang.Integer.MAX_VALUE, basedOn));
1514        children.add(new Property("status", "code", "The status of the diagnostic report.", 0, 1, status));
1515        children.add(new Property("category", "CodeableConcept", "A code that classifies the clinical discipline, department or diagnostic service that created the report (e.g. cardiology, biochemistry, hematology, MRI). This is used for searching, sorting and display purposes.", 0, java.lang.Integer.MAX_VALUE, category));
1516        children.add(new Property("code", "CodeableConcept", "A code or name that describes this diagnostic report.", 0, 1, code));
1517        children.add(new Property("subject", "Reference(Patient|Group|Device|Location|Organization|Procedure|Practitioner|Medication|Substance)", "The subject of the report. Usually, but not always, this is a patient. However, diagnostic services also perform analyses on specimens collected from a variety of other sources.", 0, 1, subject));
1518        children.add(new Property("encounter", "Reference(Encounter)", "The healthcare event  (e.g. a patient and healthcare provider interaction) which this DiagnosticReport is about.", 0, 1, encounter));
1519        children.add(new Property("effective[x]", "dateTime|Period", "The time or time-period the observed values are related to. When the subject of the report is a patient, this is usually either the time of the procedure or of specimen collection(s), but very often the source of the date/time is not known, only the date/time itself.", 0, 1, effective));
1520        children.add(new Property("issued", "instant", "The date and time that this version of the report was made available to providers, typically after the report was reviewed and verified.", 0, 1, issued));
1521        children.add(new Property("performer", "Reference(Practitioner|PractitionerRole|Organization|CareTeam)", "The diagnostic service that is responsible for issuing the report.", 0, java.lang.Integer.MAX_VALUE, performer));
1522        children.add(new Property("resultsInterpreter", "Reference(Practitioner|PractitionerRole|Organization|CareTeam)", "The practitioner or organization that is responsible for the report's conclusions and interpretations.", 0, java.lang.Integer.MAX_VALUE, resultsInterpreter));
1523        children.add(new Property("specimen", "Reference(Specimen)", "Details about the specimens on which this diagnostic report is based.", 0, java.lang.Integer.MAX_VALUE, specimen));
1524        children.add(new Property("result", "Reference(Observation)", "[Observations](observation.html)  that are part of this diagnostic report.", 0, java.lang.Integer.MAX_VALUE, result));
1525        children.add(new Property("imagingStudy", "Reference(ImagingStudy)", "One or more links to full details of any imaging performed during the diagnostic investigation. Typically, this is imaging performed by DICOM enabled modalities, but this is not required. A fully enabled PACS viewer can use this information to provide views of the source images.", 0, java.lang.Integer.MAX_VALUE, imagingStudy));
1526        children.add(new Property("media", "", "A list of key images associated with this report. The images are generally created during the diagnostic process, and may be directly of the patient, or of treated specimens (i.e. slides of interest).", 0, java.lang.Integer.MAX_VALUE, media));
1527        children.add(new Property("conclusion", "string", "Concise and clinically contextualized summary conclusion (interpretation/impression) of the diagnostic report.", 0, 1, conclusion));
1528        children.add(new Property("conclusionCode", "CodeableConcept", "One or more codes that represent the summary conclusion (interpretation/impression) of the diagnostic report.", 0, java.lang.Integer.MAX_VALUE, conclusionCode));
1529        children.add(new Property("presentedForm", "Attachment", "Rich text representation of the entire result as issued by the diagnostic service. Multiple formats are allowed but they SHALL be semantically equivalent.", 0, java.lang.Integer.MAX_VALUE, presentedForm));
1530      }
1531
1532      @Override
1533      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1534        switch (_hash) {
1535        case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "Identifiers assigned to this report by the performer or other systems.", 0, java.lang.Integer.MAX_VALUE, identifier);
1536        case -332612366: /*basedOn*/  return new Property("basedOn", "Reference(CarePlan|ImmunizationRecommendation|MedicationRequest|NutritionOrder|ServiceRequest)", "Details concerning a service requested.", 0, java.lang.Integer.MAX_VALUE, basedOn);
1537        case -892481550: /*status*/  return new Property("status", "code", "The status of the diagnostic report.", 0, 1, status);
1538        case 50511102: /*category*/  return new Property("category", "CodeableConcept", "A code that classifies the clinical discipline, department or diagnostic service that created the report (e.g. cardiology, biochemistry, hematology, MRI). This is used for searching, sorting and display purposes.", 0, java.lang.Integer.MAX_VALUE, category);
1539        case 3059181: /*code*/  return new Property("code", "CodeableConcept", "A code or name that describes this diagnostic report.", 0, 1, code);
1540        case -1867885268: /*subject*/  return new Property("subject", "Reference(Patient|Group|Device|Location|Organization|Procedure|Practitioner|Medication|Substance)", "The subject of the report. Usually, but not always, this is a patient. However, diagnostic services also perform analyses on specimens collected from a variety of other sources.", 0, 1, subject);
1541        case 1524132147: /*encounter*/  return new Property("encounter", "Reference(Encounter)", "The healthcare event  (e.g. a patient and healthcare provider interaction) which this DiagnosticReport is about.", 0, 1, encounter);
1542        case 247104889: /*effective[x]*/  return new Property("effective[x]", "dateTime|Period", "The time or time-period the observed values are related to. When the subject of the report is a patient, this is usually either the time of the procedure or of specimen collection(s), but very often the source of the date/time is not known, only the date/time itself.", 0, 1, effective);
1543        case -1468651097: /*effective*/  return new Property("effective[x]", "dateTime|Period", "The time or time-period the observed values are related to. When the subject of the report is a patient, this is usually either the time of the procedure or of specimen collection(s), but very often the source of the date/time is not known, only the date/time itself.", 0, 1, effective);
1544        case -275306910: /*effectiveDateTime*/  return new Property("effective[x]", "dateTime", "The time or time-period the observed values are related to. When the subject of the report is a patient, this is usually either the time of the procedure or of specimen collection(s), but very often the source of the date/time is not known, only the date/time itself.", 0, 1, effective);
1545        case -403934648: /*effectivePeriod*/  return new Property("effective[x]", "Period", "The time or time-period the observed values are related to. When the subject of the report is a patient, this is usually either the time of the procedure or of specimen collection(s), but very often the source of the date/time is not known, only the date/time itself.", 0, 1, effective);
1546        case -1179159893: /*issued*/  return new Property("issued", "instant", "The date and time that this version of the report was made available to providers, typically after the report was reviewed and verified.", 0, 1, issued);
1547        case 481140686: /*performer*/  return new Property("performer", "Reference(Practitioner|PractitionerRole|Organization|CareTeam)", "The diagnostic service that is responsible for issuing the report.", 0, java.lang.Integer.MAX_VALUE, performer);
1548        case 2134944932: /*resultsInterpreter*/  return new Property("resultsInterpreter", "Reference(Practitioner|PractitionerRole|Organization|CareTeam)", "The practitioner or organization that is responsible for the report's conclusions and interpretations.", 0, java.lang.Integer.MAX_VALUE, resultsInterpreter);
1549        case -2132868344: /*specimen*/  return new Property("specimen", "Reference(Specimen)", "Details about the specimens on which this diagnostic report is based.", 0, java.lang.Integer.MAX_VALUE, specimen);
1550        case -934426595: /*result*/  return new Property("result", "Reference(Observation)", "[Observations](observation.html)  that are part of this diagnostic report.", 0, java.lang.Integer.MAX_VALUE, result);
1551        case -814900911: /*imagingStudy*/  return new Property("imagingStudy", "Reference(ImagingStudy)", "One or more links to full details of any imaging performed during the diagnostic investigation. Typically, this is imaging performed by DICOM enabled modalities, but this is not required. A fully enabled PACS viewer can use this information to provide views of the source images.", 0, java.lang.Integer.MAX_VALUE, imagingStudy);
1552        case 103772132: /*media*/  return new Property("media", "", "A list of key images associated with this report. The images are generally created during the diagnostic process, and may be directly of the patient, or of treated specimens (i.e. slides of interest).", 0, java.lang.Integer.MAX_VALUE, media);
1553        case -1731259873: /*conclusion*/  return new Property("conclusion", "string", "Concise and clinically contextualized summary conclusion (interpretation/impression) of the diagnostic report.", 0, 1, conclusion);
1554        case -1731523412: /*conclusionCode*/  return new Property("conclusionCode", "CodeableConcept", "One or more codes that represent the summary conclusion (interpretation/impression) of the diagnostic report.", 0, java.lang.Integer.MAX_VALUE, conclusionCode);
1555        case 230090366: /*presentedForm*/  return new Property("presentedForm", "Attachment", "Rich text representation of the entire result as issued by the diagnostic service. Multiple formats are allowed but they SHALL be semantically equivalent.", 0, java.lang.Integer.MAX_VALUE, presentedForm);
1556        default: return super.getNamedProperty(_hash, _name, _checkValid);
1557        }
1558
1559      }
1560
1561      @Override
1562      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1563        switch (hash) {
1564        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
1565        case -332612366: /*basedOn*/ return this.basedOn == null ? new Base[0] : this.basedOn.toArray(new Base[this.basedOn.size()]); // Reference
1566        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<DiagnosticReportStatus>
1567        case 50511102: /*category*/ return this.category == null ? new Base[0] : this.category.toArray(new Base[this.category.size()]); // CodeableConcept
1568        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // CodeableConcept
1569        case -1867885268: /*subject*/ return this.subject == null ? new Base[0] : new Base[] {this.subject}; // Reference
1570        case 1524132147: /*encounter*/ return this.encounter == null ? new Base[0] : new Base[] {this.encounter}; // Reference
1571        case -1468651097: /*effective*/ return this.effective == null ? new Base[0] : new Base[] {this.effective}; // DataType
1572        case -1179159893: /*issued*/ return this.issued == null ? new Base[0] : new Base[] {this.issued}; // InstantType
1573        case 481140686: /*performer*/ return this.performer == null ? new Base[0] : this.performer.toArray(new Base[this.performer.size()]); // Reference
1574        case 2134944932: /*resultsInterpreter*/ return this.resultsInterpreter == null ? new Base[0] : this.resultsInterpreter.toArray(new Base[this.resultsInterpreter.size()]); // Reference
1575        case -2132868344: /*specimen*/ return this.specimen == null ? new Base[0] : this.specimen.toArray(new Base[this.specimen.size()]); // Reference
1576        case -934426595: /*result*/ return this.result == null ? new Base[0] : this.result.toArray(new Base[this.result.size()]); // Reference
1577        case -814900911: /*imagingStudy*/ return this.imagingStudy == null ? new Base[0] : this.imagingStudy.toArray(new Base[this.imagingStudy.size()]); // Reference
1578        case 103772132: /*media*/ return this.media == null ? new Base[0] : this.media.toArray(new Base[this.media.size()]); // DiagnosticReportMediaComponent
1579        case -1731259873: /*conclusion*/ return this.conclusion == null ? new Base[0] : new Base[] {this.conclusion}; // StringType
1580        case -1731523412: /*conclusionCode*/ return this.conclusionCode == null ? new Base[0] : this.conclusionCode.toArray(new Base[this.conclusionCode.size()]); // CodeableConcept
1581        case 230090366: /*presentedForm*/ return this.presentedForm == null ? new Base[0] : this.presentedForm.toArray(new Base[this.presentedForm.size()]); // Attachment
1582        default: return super.getProperty(hash, name, checkValid);
1583        }
1584
1585      }
1586
1587      @Override
1588      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1589        switch (hash) {
1590        case -1618432855: // identifier
1591          this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier
1592          return value;
1593        case -332612366: // basedOn
1594          this.getBasedOn().add(TypeConvertor.castToReference(value)); // Reference
1595          return value;
1596        case -892481550: // status
1597          value = new DiagnosticReportStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
1598          this.status = (Enumeration) value; // Enumeration<DiagnosticReportStatus>
1599          return value;
1600        case 50511102: // category
1601          this.getCategory().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
1602          return value;
1603        case 3059181: // code
1604          this.code = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1605          return value;
1606        case -1867885268: // subject
1607          this.subject = TypeConvertor.castToReference(value); // Reference
1608          return value;
1609        case 1524132147: // encounter
1610          this.encounter = TypeConvertor.castToReference(value); // Reference
1611          return value;
1612        case -1468651097: // effective
1613          this.effective = TypeConvertor.castToType(value); // DataType
1614          return value;
1615        case -1179159893: // issued
1616          this.issued = TypeConvertor.castToInstant(value); // InstantType
1617          return value;
1618        case 481140686: // performer
1619          this.getPerformer().add(TypeConvertor.castToReference(value)); // Reference
1620          return value;
1621        case 2134944932: // resultsInterpreter
1622          this.getResultsInterpreter().add(TypeConvertor.castToReference(value)); // Reference
1623          return value;
1624        case -2132868344: // specimen
1625          this.getSpecimen().add(TypeConvertor.castToReference(value)); // Reference
1626          return value;
1627        case -934426595: // result
1628          this.getResult().add(TypeConvertor.castToReference(value)); // Reference
1629          return value;
1630        case -814900911: // imagingStudy
1631          this.getImagingStudy().add(TypeConvertor.castToReference(value)); // Reference
1632          return value;
1633        case 103772132: // media
1634          this.getMedia().add((DiagnosticReportMediaComponent) value); // DiagnosticReportMediaComponent
1635          return value;
1636        case -1731259873: // conclusion
1637          this.conclusion = TypeConvertor.castToString(value); // StringType
1638          return value;
1639        case -1731523412: // conclusionCode
1640          this.getConclusionCode().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
1641          return value;
1642        case 230090366: // presentedForm
1643          this.getPresentedForm().add(TypeConvertor.castToAttachment(value)); // Attachment
1644          return value;
1645        default: return super.setProperty(hash, name, value);
1646        }
1647
1648      }
1649
1650      @Override
1651      public Base setProperty(String name, Base value) throws FHIRException {
1652        if (name.equals("identifier")) {
1653          this.getIdentifier().add(TypeConvertor.castToIdentifier(value));
1654        } else if (name.equals("basedOn")) {
1655          this.getBasedOn().add(TypeConvertor.castToReference(value));
1656        } else if (name.equals("status")) {
1657          value = new DiagnosticReportStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
1658          this.status = (Enumeration) value; // Enumeration<DiagnosticReportStatus>
1659        } else if (name.equals("category")) {
1660          this.getCategory().add(TypeConvertor.castToCodeableConcept(value));
1661        } else if (name.equals("code")) {
1662          this.code = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1663        } else if (name.equals("subject")) {
1664          this.subject = TypeConvertor.castToReference(value); // Reference
1665        } else if (name.equals("encounter")) {
1666          this.encounter = TypeConvertor.castToReference(value); // Reference
1667        } else if (name.equals("effective[x]")) {
1668          this.effective = TypeConvertor.castToType(value); // DataType
1669        } else if (name.equals("issued")) {
1670          this.issued = TypeConvertor.castToInstant(value); // InstantType
1671        } else if (name.equals("performer")) {
1672          this.getPerformer().add(TypeConvertor.castToReference(value));
1673        } else if (name.equals("resultsInterpreter")) {
1674          this.getResultsInterpreter().add(TypeConvertor.castToReference(value));
1675        } else if (name.equals("specimen")) {
1676          this.getSpecimen().add(TypeConvertor.castToReference(value));
1677        } else if (name.equals("result")) {
1678          this.getResult().add(TypeConvertor.castToReference(value));
1679        } else if (name.equals("imagingStudy")) {
1680          this.getImagingStudy().add(TypeConvertor.castToReference(value));
1681        } else if (name.equals("media")) {
1682          this.getMedia().add((DiagnosticReportMediaComponent) value);
1683        } else if (name.equals("conclusion")) {
1684          this.conclusion = TypeConvertor.castToString(value); // StringType
1685        } else if (name.equals("conclusionCode")) {
1686          this.getConclusionCode().add(TypeConvertor.castToCodeableConcept(value));
1687        } else if (name.equals("presentedForm")) {
1688          this.getPresentedForm().add(TypeConvertor.castToAttachment(value));
1689        } else
1690          return super.setProperty(name, value);
1691        return value;
1692      }
1693
1694      @Override
1695      public Base makeProperty(int hash, String name) throws FHIRException {
1696        switch (hash) {
1697        case -1618432855:  return addIdentifier(); 
1698        case -332612366:  return addBasedOn(); 
1699        case -892481550:  return getStatusElement();
1700        case 50511102:  return addCategory(); 
1701        case 3059181:  return getCode();
1702        case -1867885268:  return getSubject();
1703        case 1524132147:  return getEncounter();
1704        case 247104889:  return getEffective();
1705        case -1468651097:  return getEffective();
1706        case -1179159893:  return getIssuedElement();
1707        case 481140686:  return addPerformer(); 
1708        case 2134944932:  return addResultsInterpreter(); 
1709        case -2132868344:  return addSpecimen(); 
1710        case -934426595:  return addResult(); 
1711        case -814900911:  return addImagingStudy(); 
1712        case 103772132:  return addMedia(); 
1713        case -1731259873:  return getConclusionElement();
1714        case -1731523412:  return addConclusionCode(); 
1715        case 230090366:  return addPresentedForm(); 
1716        default: return super.makeProperty(hash, name);
1717        }
1718
1719      }
1720
1721      @Override
1722      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1723        switch (hash) {
1724        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
1725        case -332612366: /*basedOn*/ return new String[] {"Reference"};
1726        case -892481550: /*status*/ return new String[] {"code"};
1727        case 50511102: /*category*/ return new String[] {"CodeableConcept"};
1728        case 3059181: /*code*/ return new String[] {"CodeableConcept"};
1729        case -1867885268: /*subject*/ return new String[] {"Reference"};
1730        case 1524132147: /*encounter*/ return new String[] {"Reference"};
1731        case -1468651097: /*effective*/ return new String[] {"dateTime", "Period"};
1732        case -1179159893: /*issued*/ return new String[] {"instant"};
1733        case 481140686: /*performer*/ return new String[] {"Reference"};
1734        case 2134944932: /*resultsInterpreter*/ return new String[] {"Reference"};
1735        case -2132868344: /*specimen*/ return new String[] {"Reference"};
1736        case -934426595: /*result*/ return new String[] {"Reference"};
1737        case -814900911: /*imagingStudy*/ return new String[] {"Reference"};
1738        case 103772132: /*media*/ return new String[] {};
1739        case -1731259873: /*conclusion*/ return new String[] {"string"};
1740        case -1731523412: /*conclusionCode*/ return new String[] {"CodeableConcept"};
1741        case 230090366: /*presentedForm*/ return new String[] {"Attachment"};
1742        default: return super.getTypesForProperty(hash, name);
1743        }
1744
1745      }
1746
1747      @Override
1748      public Base addChild(String name) throws FHIRException {
1749        if (name.equals("identifier")) {
1750          return addIdentifier();
1751        }
1752        else if (name.equals("basedOn")) {
1753          return addBasedOn();
1754        }
1755        else if (name.equals("status")) {
1756          throw new FHIRException("Cannot call addChild on a primitive type DiagnosticReport.status");
1757        }
1758        else if (name.equals("category")) {
1759          return addCategory();
1760        }
1761        else if (name.equals("code")) {
1762          this.code = new CodeableConcept();
1763          return this.code;
1764        }
1765        else if (name.equals("subject")) {
1766          this.subject = new Reference();
1767          return this.subject;
1768        }
1769        else if (name.equals("encounter")) {
1770          this.encounter = new Reference();
1771          return this.encounter;
1772        }
1773        else if (name.equals("effectiveDateTime")) {
1774          this.effective = new DateTimeType();
1775          return this.effective;
1776        }
1777        else if (name.equals("effectivePeriod")) {
1778          this.effective = new Period();
1779          return this.effective;
1780        }
1781        else if (name.equals("issued")) {
1782          throw new FHIRException("Cannot call addChild on a primitive type DiagnosticReport.issued");
1783        }
1784        else if (name.equals("performer")) {
1785          return addPerformer();
1786        }
1787        else if (name.equals("resultsInterpreter")) {
1788          return addResultsInterpreter();
1789        }
1790        else if (name.equals("specimen")) {
1791          return addSpecimen();
1792        }
1793        else if (name.equals("result")) {
1794          return addResult();
1795        }
1796        else if (name.equals("imagingStudy")) {
1797          return addImagingStudy();
1798        }
1799        else if (name.equals("media")) {
1800          return addMedia();
1801        }
1802        else if (name.equals("conclusion")) {
1803          throw new FHIRException("Cannot call addChild on a primitive type DiagnosticReport.conclusion");
1804        }
1805        else if (name.equals("conclusionCode")) {
1806          return addConclusionCode();
1807        }
1808        else if (name.equals("presentedForm")) {
1809          return addPresentedForm();
1810        }
1811        else
1812          return super.addChild(name);
1813      }
1814
1815  public String fhirType() {
1816    return "DiagnosticReport";
1817
1818  }
1819
1820      public DiagnosticReport copy() {
1821        DiagnosticReport dst = new DiagnosticReport();
1822        copyValues(dst);
1823        return dst;
1824      }
1825
1826      public void copyValues(DiagnosticReport dst) {
1827        super.copyValues(dst);
1828        if (identifier != null) {
1829          dst.identifier = new ArrayList<Identifier>();
1830          for (Identifier i : identifier)
1831            dst.identifier.add(i.copy());
1832        };
1833        if (basedOn != null) {
1834          dst.basedOn = new ArrayList<Reference>();
1835          for (Reference i : basedOn)
1836            dst.basedOn.add(i.copy());
1837        };
1838        dst.status = status == null ? null : status.copy();
1839        if (category != null) {
1840          dst.category = new ArrayList<CodeableConcept>();
1841          for (CodeableConcept i : category)
1842            dst.category.add(i.copy());
1843        };
1844        dst.code = code == null ? null : code.copy();
1845        dst.subject = subject == null ? null : subject.copy();
1846        dst.encounter = encounter == null ? null : encounter.copy();
1847        dst.effective = effective == null ? null : effective.copy();
1848        dst.issued = issued == null ? null : issued.copy();
1849        if (performer != null) {
1850          dst.performer = new ArrayList<Reference>();
1851          for (Reference i : performer)
1852            dst.performer.add(i.copy());
1853        };
1854        if (resultsInterpreter != null) {
1855          dst.resultsInterpreter = new ArrayList<Reference>();
1856          for (Reference i : resultsInterpreter)
1857            dst.resultsInterpreter.add(i.copy());
1858        };
1859        if (specimen != null) {
1860          dst.specimen = new ArrayList<Reference>();
1861          for (Reference i : specimen)
1862            dst.specimen.add(i.copy());
1863        };
1864        if (result != null) {
1865          dst.result = new ArrayList<Reference>();
1866          for (Reference i : result)
1867            dst.result.add(i.copy());
1868        };
1869        if (imagingStudy != null) {
1870          dst.imagingStudy = new ArrayList<Reference>();
1871          for (Reference i : imagingStudy)
1872            dst.imagingStudy.add(i.copy());
1873        };
1874        if (media != null) {
1875          dst.media = new ArrayList<DiagnosticReportMediaComponent>();
1876          for (DiagnosticReportMediaComponent i : media)
1877            dst.media.add(i.copy());
1878        };
1879        dst.conclusion = conclusion == null ? null : conclusion.copy();
1880        if (conclusionCode != null) {
1881          dst.conclusionCode = new ArrayList<CodeableConcept>();
1882          for (CodeableConcept i : conclusionCode)
1883            dst.conclusionCode.add(i.copy());
1884        };
1885        if (presentedForm != null) {
1886          dst.presentedForm = new ArrayList<Attachment>();
1887          for (Attachment i : presentedForm)
1888            dst.presentedForm.add(i.copy());
1889        };
1890      }
1891
1892      protected DiagnosticReport typedCopy() {
1893        return copy();
1894      }
1895
1896      @Override
1897      public boolean equalsDeep(Base other_) {
1898        if (!super.equalsDeep(other_))
1899          return false;
1900        if (!(other_ instanceof DiagnosticReport))
1901          return false;
1902        DiagnosticReport o = (DiagnosticReport) other_;
1903        return compareDeep(identifier, o.identifier, true) && compareDeep(basedOn, o.basedOn, true) && compareDeep(status, o.status, true)
1904           && compareDeep(category, o.category, true) && compareDeep(code, o.code, true) && compareDeep(subject, o.subject, true)
1905           && compareDeep(encounter, o.encounter, true) && compareDeep(effective, o.effective, true) && compareDeep(issued, o.issued, true)
1906           && compareDeep(performer, o.performer, true) && compareDeep(resultsInterpreter, o.resultsInterpreter, true)
1907           && compareDeep(specimen, o.specimen, true) && compareDeep(result, o.result, true) && compareDeep(imagingStudy, o.imagingStudy, true)
1908           && compareDeep(media, o.media, true) && compareDeep(conclusion, o.conclusion, true) && compareDeep(conclusionCode, o.conclusionCode, true)
1909           && compareDeep(presentedForm, o.presentedForm, true);
1910      }
1911
1912      @Override
1913      public boolean equalsShallow(Base other_) {
1914        if (!super.equalsShallow(other_))
1915          return false;
1916        if (!(other_ instanceof DiagnosticReport))
1917          return false;
1918        DiagnosticReport o = (DiagnosticReport) other_;
1919        return compareValues(status, o.status, true) && compareValues(issued, o.issued, true) && compareValues(conclusion, o.conclusion, true)
1920          ;
1921      }
1922
1923      public boolean isEmpty() {
1924        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, basedOn, status
1925          , category, code, subject, encounter, effective, issued, performer, resultsInterpreter
1926          , specimen, result, imagingStudy, media, conclusion, conclusionCode, presentedForm
1927          );
1928      }
1929
1930  @Override
1931  public ResourceType getResourceType() {
1932    return ResourceType.DiagnosticReport;
1933   }
1934
1935 /**
1936   * Search parameter: <b>based-on</b>
1937   * <p>
1938   * Description: <b>Reference to the service request.</b><br>
1939   * Type: <b>reference</b><br>
1940   * Path: <b>DiagnosticReport.basedOn</b><br>
1941   * </p>
1942   */
1943  @SearchParamDefinition(name="based-on", path="DiagnosticReport.basedOn", description="Reference to the service request.", type="reference", target={CarePlan.class, ImmunizationRecommendation.class, MedicationRequest.class, NutritionOrder.class, ServiceRequest.class } )
1944  public static final String SP_BASED_ON = "based-on";
1945 /**
1946   * <b>Fluent Client</b> search parameter constant for <b>based-on</b>
1947   * <p>
1948   * Description: <b>Reference to the service request.</b><br>
1949   * Type: <b>reference</b><br>
1950   * Path: <b>DiagnosticReport.basedOn</b><br>
1951   * </p>
1952   */
1953  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam BASED_ON = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_BASED_ON);
1954
1955/**
1956   * Constant for fluent queries to be used to add include statements. Specifies
1957   * the path value of "<b>DiagnosticReport:based-on</b>".
1958   */
1959  public static final ca.uhn.fhir.model.api.Include INCLUDE_BASED_ON = new ca.uhn.fhir.model.api.Include("DiagnosticReport:based-on").toLocked();
1960
1961 /**
1962   * Search parameter: <b>category</b>
1963   * <p>
1964   * Description: <b>Which diagnostic discipline/department created the report</b><br>
1965   * Type: <b>token</b><br>
1966   * Path: <b>DiagnosticReport.category</b><br>
1967   * </p>
1968   */
1969  @SearchParamDefinition(name="category", path="DiagnosticReport.category", description="Which diagnostic discipline/department created the report", type="token" )
1970  public static final String SP_CATEGORY = "category";
1971 /**
1972   * <b>Fluent Client</b> search parameter constant for <b>category</b>
1973   * <p>
1974   * Description: <b>Which diagnostic discipline/department created the report</b><br>
1975   * Type: <b>token</b><br>
1976   * Path: <b>DiagnosticReport.category</b><br>
1977   * </p>
1978   */
1979  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CATEGORY = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CATEGORY);
1980
1981 /**
1982   * Search parameter: <b>conclusion</b>
1983   * <p>
1984   * Description: <b>A coded conclusion (interpretation/impression) on the report</b><br>
1985   * Type: <b>token</b><br>
1986   * Path: <b>DiagnosticReport.conclusionCode</b><br>
1987   * </p>
1988   */
1989  @SearchParamDefinition(name="conclusion", path="DiagnosticReport.conclusionCode", description="A coded conclusion (interpretation/impression) on the report", type="token" )
1990  public static final String SP_CONCLUSION = "conclusion";
1991 /**
1992   * <b>Fluent Client</b> search parameter constant for <b>conclusion</b>
1993   * <p>
1994   * Description: <b>A coded conclusion (interpretation/impression) on the report</b><br>
1995   * Type: <b>token</b><br>
1996   * Path: <b>DiagnosticReport.conclusionCode</b><br>
1997   * </p>
1998   */
1999  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONCLUSION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONCLUSION);
2000
2001 /**
2002   * Search parameter: <b>issued</b>
2003   * <p>
2004   * Description: <b>When the report was issued</b><br>
2005   * Type: <b>date</b><br>
2006   * Path: <b>DiagnosticReport.issued</b><br>
2007   * </p>
2008   */
2009  @SearchParamDefinition(name="issued", path="DiagnosticReport.issued", description="When the report was issued", type="date" )
2010  public static final String SP_ISSUED = "issued";
2011 /**
2012   * <b>Fluent Client</b> search parameter constant for <b>issued</b>
2013   * <p>
2014   * Description: <b>When the report was issued</b><br>
2015   * Type: <b>date</b><br>
2016   * Path: <b>DiagnosticReport.issued</b><br>
2017   * </p>
2018   */
2019  public static final ca.uhn.fhir.rest.gclient.DateClientParam ISSUED = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_ISSUED);
2020
2021 /**
2022   * Search parameter: <b>media</b>
2023   * <p>
2024   * Description: <b>A reference to the image source.</b><br>
2025   * Type: <b>reference</b><br>
2026   * Path: <b>DiagnosticReport.media.link</b><br>
2027   * </p>
2028   */
2029  @SearchParamDefinition(name="media", path="DiagnosticReport.media.link", description="A reference to the image source.", type="reference", target={Media.class } )
2030  public static final String SP_MEDIA = "media";
2031 /**
2032   * <b>Fluent Client</b> search parameter constant for <b>media</b>
2033   * <p>
2034   * Description: <b>A reference to the image source.</b><br>
2035   * Type: <b>reference</b><br>
2036   * Path: <b>DiagnosticReport.media.link</b><br>
2037   * </p>
2038   */
2039  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam MEDIA = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_MEDIA);
2040
2041/**
2042   * Constant for fluent queries to be used to add include statements. Specifies
2043   * the path value of "<b>DiagnosticReport:media</b>".
2044   */
2045  public static final ca.uhn.fhir.model.api.Include INCLUDE_MEDIA = new ca.uhn.fhir.model.api.Include("DiagnosticReport:media").toLocked();
2046
2047 /**
2048   * Search parameter: <b>performer</b>
2049   * <p>
2050   * Description: <b>Who is responsible for the report</b><br>
2051   * Type: <b>reference</b><br>
2052   * Path: <b>DiagnosticReport.performer</b><br>
2053   * </p>
2054   */
2055  @SearchParamDefinition(name="performer", path="DiagnosticReport.performer", description="Who is responsible for the report", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Practitioner") }, target={CareTeam.class, Organization.class, Practitioner.class, PractitionerRole.class } )
2056  public static final String SP_PERFORMER = "performer";
2057 /**
2058   * <b>Fluent Client</b> search parameter constant for <b>performer</b>
2059   * <p>
2060   * Description: <b>Who is responsible for the report</b><br>
2061   * Type: <b>reference</b><br>
2062   * Path: <b>DiagnosticReport.performer</b><br>
2063   * </p>
2064   */
2065  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PERFORMER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PERFORMER);
2066
2067/**
2068   * Constant for fluent queries to be used to add include statements. Specifies
2069   * the path value of "<b>DiagnosticReport:performer</b>".
2070   */
2071  public static final ca.uhn.fhir.model.api.Include INCLUDE_PERFORMER = new ca.uhn.fhir.model.api.Include("DiagnosticReport:performer").toLocked();
2072
2073 /**
2074   * Search parameter: <b>result</b>
2075   * <p>
2076   * Description: <b>Link to an atomic result (observation resource)</b><br>
2077   * Type: <b>reference</b><br>
2078   * Path: <b>DiagnosticReport.result</b><br>
2079   * </p>
2080   */
2081  @SearchParamDefinition(name="result", path="DiagnosticReport.result", description="Link to an atomic result (observation resource)", type="reference", target={Observation.class } )
2082  public static final String SP_RESULT = "result";
2083 /**
2084   * <b>Fluent Client</b> search parameter constant for <b>result</b>
2085   * <p>
2086   * Description: <b>Link to an atomic result (observation resource)</b><br>
2087   * Type: <b>reference</b><br>
2088   * Path: <b>DiagnosticReport.result</b><br>
2089   * </p>
2090   */
2091  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam RESULT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_RESULT);
2092
2093/**
2094   * Constant for fluent queries to be used to add include statements. Specifies
2095   * the path value of "<b>DiagnosticReport:result</b>".
2096   */
2097  public static final ca.uhn.fhir.model.api.Include INCLUDE_RESULT = new ca.uhn.fhir.model.api.Include("DiagnosticReport:result").toLocked();
2098
2099 /**
2100   * Search parameter: <b>results-interpreter</b>
2101   * <p>
2102   * Description: <b>Who was the source of the report</b><br>
2103   * Type: <b>reference</b><br>
2104   * Path: <b>DiagnosticReport.resultsInterpreter</b><br>
2105   * </p>
2106   */
2107  @SearchParamDefinition(name="results-interpreter", path="DiagnosticReport.resultsInterpreter", description="Who was the source of the report", type="reference", target={CareTeam.class, Organization.class, Practitioner.class, PractitionerRole.class } )
2108  public static final String SP_RESULTS_INTERPRETER = "results-interpreter";
2109 /**
2110   * <b>Fluent Client</b> search parameter constant for <b>results-interpreter</b>
2111   * <p>
2112   * Description: <b>Who was the source of the report</b><br>
2113   * Type: <b>reference</b><br>
2114   * Path: <b>DiagnosticReport.resultsInterpreter</b><br>
2115   * </p>
2116   */
2117  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam RESULTS_INTERPRETER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_RESULTS_INTERPRETER);
2118
2119/**
2120   * Constant for fluent queries to be used to add include statements. Specifies
2121   * the path value of "<b>DiagnosticReport:results-interpreter</b>".
2122   */
2123  public static final ca.uhn.fhir.model.api.Include INCLUDE_RESULTS_INTERPRETER = new ca.uhn.fhir.model.api.Include("DiagnosticReport:results-interpreter").toLocked();
2124
2125 /**
2126   * Search parameter: <b>specimen</b>
2127   * <p>
2128   * Description: <b>The specimen details</b><br>
2129   * Type: <b>reference</b><br>
2130   * Path: <b>DiagnosticReport.specimen</b><br>
2131   * </p>
2132   */
2133  @SearchParamDefinition(name="specimen", path="DiagnosticReport.specimen", description="The specimen details", type="reference", target={Specimen.class } )
2134  public static final String SP_SPECIMEN = "specimen";
2135 /**
2136   * <b>Fluent Client</b> search parameter constant for <b>specimen</b>
2137   * <p>
2138   * Description: <b>The specimen details</b><br>
2139   * Type: <b>reference</b><br>
2140   * Path: <b>DiagnosticReport.specimen</b><br>
2141   * </p>
2142   */
2143  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SPECIMEN = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SPECIMEN);
2144
2145/**
2146   * Constant for fluent queries to be used to add include statements. Specifies
2147   * the path value of "<b>DiagnosticReport:specimen</b>".
2148   */
2149  public static final ca.uhn.fhir.model.api.Include INCLUDE_SPECIMEN = new ca.uhn.fhir.model.api.Include("DiagnosticReport:specimen").toLocked();
2150
2151 /**
2152   * Search parameter: <b>status</b>
2153   * <p>
2154   * Description: <b>The status of the report</b><br>
2155   * Type: <b>token</b><br>
2156   * Path: <b>DiagnosticReport.status</b><br>
2157   * </p>
2158   */
2159  @SearchParamDefinition(name="status", path="DiagnosticReport.status", description="The status of the report", type="token" )
2160  public static final String SP_STATUS = "status";
2161 /**
2162   * <b>Fluent Client</b> search parameter constant for <b>status</b>
2163   * <p>
2164   * Description: <b>The status of the report</b><br>
2165   * Type: <b>token</b><br>
2166   * Path: <b>DiagnosticReport.status</b><br>
2167   * </p>
2168   */
2169  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
2170
2171 /**
2172   * Search parameter: <b>subject</b>
2173   * <p>
2174   * Description: <b>The subject of the report</b><br>
2175   * Type: <b>reference</b><br>
2176   * Path: <b>DiagnosticReport.subject</b><br>
2177   * </p>
2178   */
2179  @SearchParamDefinition(name="subject", path="DiagnosticReport.subject", description="The subject of the report", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Device"), @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Patient") }, target={Device.class, Group.class, Location.class, Medication.class, Organization.class, Patient.class, Practitioner.class, Procedure.class, Substance.class } )
2180  public static final String SP_SUBJECT = "subject";
2181 /**
2182   * <b>Fluent Client</b> search parameter constant for <b>subject</b>
2183   * <p>
2184   * Description: <b>The subject of the report</b><br>
2185   * Type: <b>reference</b><br>
2186   * Path: <b>DiagnosticReport.subject</b><br>
2187   * </p>
2188   */
2189  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SUBJECT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SUBJECT);
2190
2191/**
2192   * Constant for fluent queries to be used to add include statements. Specifies
2193   * the path value of "<b>DiagnosticReport:subject</b>".
2194   */
2195  public static final ca.uhn.fhir.model.api.Include INCLUDE_SUBJECT = new ca.uhn.fhir.model.api.Include("DiagnosticReport:subject").toLocked();
2196
2197 /**
2198   * Search parameter: <b>code</b>
2199   * <p>
2200   * Description: <b>Multiple Resources: 
2201
2202* [AllergyIntolerance](allergyintolerance.html): Code that identifies the allergy or intolerance
2203* [Condition](condition.html): Code for the condition
2204* [DeviceRequest](devicerequest.html): Code for what is being requested/ordered
2205* [DiagnosticReport](diagnosticreport.html): The code for the report, as opposed to codes for the atomic results, which are the names on the observation resource referred to from the result
2206* [FamilyMemberHistory](familymemberhistory.html): A search by a condition code
2207* [List](list.html): What the purpose of this list is
2208* [Medication](medication.html): Returns medications for a specific code
2209* [MedicationAdministration](medicationadministration.html): Return administrations of this medication code
2210* [MedicationDispense](medicationdispense.html): Returns dispenses of this medicine code
2211* [MedicationRequest](medicationrequest.html): Return prescriptions of this medication code
2212* [MedicationStatement](medicationstatement.html): Return statements of this medication code
2213* [Observation](observation.html): The code of the observation type
2214* [Procedure](procedure.html): A code to identify a  procedure
2215* [ServiceRequest](servicerequest.html): What is being requested/ordered
2216</b><br>
2217   * Type: <b>token</b><br>
2218   * Path: <b>AllergyIntolerance.code | AllergyIntolerance.reaction.substance | Condition.code | (DeviceRequest.code as CodeableConcept) | DiagnosticReport.code | FamilyMemberHistory.condition.code | List.code | Medication.code | (MedicationAdministration.medication as CodeableConcept) | (MedicationDispense.medication as CodeableConcept) | (MedicationRequest.medication as CodeableConcept) | (MedicationStatement.medication as CodeableConcept) | Observation.code | Procedure.code | ServiceRequest.code</b><br>
2219   * </p>
2220   */
2221  @SearchParamDefinition(name="code", path="AllergyIntolerance.code | AllergyIntolerance.reaction.substance | Condition.code | (DeviceRequest.code as CodeableConcept) | DiagnosticReport.code | FamilyMemberHistory.condition.code | List.code | Medication.code | (MedicationAdministration.medication as CodeableConcept) | (MedicationDispense.medication as CodeableConcept) | (MedicationRequest.medication as CodeableConcept) | (MedicationStatement.medication as CodeableConcept) | Observation.code | Procedure.code | ServiceRequest.code", description="Multiple Resources: \r\n\r\n* [AllergyIntolerance](allergyintolerance.html): Code that identifies the allergy or intolerance\r\n* [Condition](condition.html): Code for the condition\r\n* [DeviceRequest](devicerequest.html): Code for what is being requested/ordered\r\n* [DiagnosticReport](diagnosticreport.html): The code for the report, as opposed to codes for the atomic results, which are the names on the observation resource referred to from the result\r\n* [FamilyMemberHistory](familymemberhistory.html): A search by a condition code\r\n* [List](list.html): What the purpose of this list is\r\n* [Medication](medication.html): Returns medications for a specific code\r\n* [MedicationAdministration](medicationadministration.html): Return administrations of this medication code\r\n* [MedicationDispense](medicationdispense.html): Returns dispenses of this medicine code\r\n* [MedicationRequest](medicationrequest.html): Return prescriptions of this medication code\r\n* [MedicationStatement](medicationstatement.html): Return statements of this medication code\r\n* [Observation](observation.html): The code of the observation type\r\n* [Procedure](procedure.html): A code to identify a  procedure\r\n* [ServiceRequest](servicerequest.html): What is being requested/ordered\r\n", type="token" )
2222  public static final String SP_CODE = "code";
2223 /**
2224   * <b>Fluent Client</b> search parameter constant for <b>code</b>
2225   * <p>
2226   * Description: <b>Multiple Resources: 
2227
2228* [AllergyIntolerance](allergyintolerance.html): Code that identifies the allergy or intolerance
2229* [Condition](condition.html): Code for the condition
2230* [DeviceRequest](devicerequest.html): Code for what is being requested/ordered
2231* [DiagnosticReport](diagnosticreport.html): The code for the report, as opposed to codes for the atomic results, which are the names on the observation resource referred to from the result
2232* [FamilyMemberHistory](familymemberhistory.html): A search by a condition code
2233* [List](list.html): What the purpose of this list is
2234* [Medication](medication.html): Returns medications for a specific code
2235* [MedicationAdministration](medicationadministration.html): Return administrations of this medication code
2236* [MedicationDispense](medicationdispense.html): Returns dispenses of this medicine code
2237* [MedicationRequest](medicationrequest.html): Return prescriptions of this medication code
2238* [MedicationStatement](medicationstatement.html): Return statements of this medication code
2239* [Observation](observation.html): The code of the observation type
2240* [Procedure](procedure.html): A code to identify a  procedure
2241* [ServiceRequest](servicerequest.html): What is being requested/ordered
2242</b><br>
2243   * Type: <b>token</b><br>
2244   * Path: <b>AllergyIntolerance.code | AllergyIntolerance.reaction.substance | Condition.code | (DeviceRequest.code as CodeableConcept) | DiagnosticReport.code | FamilyMemberHistory.condition.code | List.code | Medication.code | (MedicationAdministration.medication as CodeableConcept) | (MedicationDispense.medication as CodeableConcept) | (MedicationRequest.medication as CodeableConcept) | (MedicationStatement.medication as CodeableConcept) | Observation.code | Procedure.code | ServiceRequest.code</b><br>
2245   * </p>
2246   */
2247  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CODE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CODE);
2248
2249 /**
2250   * Search parameter: <b>date</b>
2251   * <p>
2252   * Description: <b>Multiple Resources: 
2253
2254* [AllergyIntolerance](allergyintolerance.html): Date first version of the resource instance was recorded
2255* [CarePlan](careplan.html): Time period plan covers
2256* [CareTeam](careteam.html): Time period team covers
2257* [ClinicalImpression](clinicalimpression.html): When the assessment was documented
2258* [Composition](composition.html): Composition editing time
2259* [Consent](consent.html): When this Consent was created or indexed
2260* [DiagnosticReport](diagnosticreport.html): The clinically relevant time of the report
2261* [Encounter](encounter.html): A date within the period the Encounter lasted
2262* [EpisodeOfCare](episodeofcare.html): The provided date search value falls within the episode of care's period
2263* [FamilyMemberHistory](familymemberhistory.html): When history was recorded or last updated
2264* [Flag](flag.html): Time period when flag is active
2265* [Immunization](immunization.html): Vaccination  (non)-Administration Date
2266* [List](list.html): When the list was prepared
2267* [Observation](observation.html): Obtained date/time. If the obtained element is a period, a date that falls in the period
2268* [Procedure](procedure.html): When the procedure was performed
2269* [RiskAssessment](riskassessment.html): When was assessment made?
2270* [SupplyRequest](supplyrequest.html): When the request was made
2271</b><br>
2272   * Type: <b>date</b><br>
2273   * Path: <b>AllergyIntolerance.recordedDate | CarePlan.period | CareTeam.period | ClinicalImpression.date | Composition.date | Consent.dateTime | DiagnosticReport.effective | Encounter.period | EpisodeOfCare.period | FamilyMemberHistory.date | Flag.period | Immunization.occurrence | List.date | Observation.effective | Procedure.performed | (RiskAssessment.occurrence as dateTime) | SupplyRequest.authoredOn</b><br>
2274   * </p>
2275   */
2276  @SearchParamDefinition(name="date", path="AllergyIntolerance.recordedDate | CarePlan.period | CareTeam.period | ClinicalImpression.date | Composition.date | Consent.dateTime | DiagnosticReport.effective | Encounter.period | EpisodeOfCare.period | FamilyMemberHistory.date | Flag.period | Immunization.occurrence | List.date | Observation.effective | Procedure.performed | (RiskAssessment.occurrence as dateTime) | SupplyRequest.authoredOn", description="Multiple Resources: \r\n\r\n* [AllergyIntolerance](allergyintolerance.html): Date first version of the resource instance was recorded\r\n* [CarePlan](careplan.html): Time period plan covers\r\n* [CareTeam](careteam.html): Time period team covers\r\n* [ClinicalImpression](clinicalimpression.html): When the assessment was documented\r\n* [Composition](composition.html): Composition editing time\r\n* [Consent](consent.html): When this Consent was created or indexed\r\n* [DiagnosticReport](diagnosticreport.html): The clinically relevant time of the report\r\n* [Encounter](encounter.html): A date within the period the Encounter lasted\r\n* [EpisodeOfCare](episodeofcare.html): The provided date search value falls within the episode of care's period\r\n* [FamilyMemberHistory](familymemberhistory.html): When history was recorded or last updated\r\n* [Flag](flag.html): Time period when flag is active\r\n* [Immunization](immunization.html): Vaccination  (non)-Administration Date\r\n* [List](list.html): When the list was prepared\r\n* [Observation](observation.html): Obtained date/time. If the obtained element is a period, a date that falls in the period\r\n* [Procedure](procedure.html): When the procedure was performed\r\n* [RiskAssessment](riskassessment.html): When was assessment made?\r\n* [SupplyRequest](supplyrequest.html): When the request was made\r\n", type="date" )
2277  public static final String SP_DATE = "date";
2278 /**
2279   * <b>Fluent Client</b> search parameter constant for <b>date</b>
2280   * <p>
2281   * Description: <b>Multiple Resources: 
2282
2283* [AllergyIntolerance](allergyintolerance.html): Date first version of the resource instance was recorded
2284* [CarePlan](careplan.html): Time period plan covers
2285* [CareTeam](careteam.html): Time period team covers
2286* [ClinicalImpression](clinicalimpression.html): When the assessment was documented
2287* [Composition](composition.html): Composition editing time
2288* [Consent](consent.html): When this Consent was created or indexed
2289* [DiagnosticReport](diagnosticreport.html): The clinically relevant time of the report
2290* [Encounter](encounter.html): A date within the period the Encounter lasted
2291* [EpisodeOfCare](episodeofcare.html): The provided date search value falls within the episode of care's period
2292* [FamilyMemberHistory](familymemberhistory.html): When history was recorded or last updated
2293* [Flag](flag.html): Time period when flag is active
2294* [Immunization](immunization.html): Vaccination  (non)-Administration Date
2295* [List](list.html): When the list was prepared
2296* [Observation](observation.html): Obtained date/time. If the obtained element is a period, a date that falls in the period
2297* [Procedure](procedure.html): When the procedure was performed
2298* [RiskAssessment](riskassessment.html): When was assessment made?
2299* [SupplyRequest](supplyrequest.html): When the request was made
2300</b><br>
2301   * Type: <b>date</b><br>
2302   * Path: <b>AllergyIntolerance.recordedDate | CarePlan.period | CareTeam.period | ClinicalImpression.date | Composition.date | Consent.dateTime | DiagnosticReport.effective | Encounter.period | EpisodeOfCare.period | FamilyMemberHistory.date | Flag.period | Immunization.occurrence | List.date | Observation.effective | Procedure.performed | (RiskAssessment.occurrence as dateTime) | SupplyRequest.authoredOn</b><br>
2303   * </p>
2304   */
2305  public static final ca.uhn.fhir.rest.gclient.DateClientParam DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_DATE);
2306
2307 /**
2308   * Search parameter: <b>encounter</b>
2309   * <p>
2310   * Description: <b>Multiple Resources: 
2311
2312* [Composition](composition.html): Context of the Composition
2313* [DeviceRequest](devicerequest.html): Encounter during which request was created
2314* [DiagnosticReport](diagnosticreport.html): The Encounter when the order was made
2315* [DocumentReference](documentreference.html): Context of the document  content
2316* [Flag](flag.html): Alert relevant during encounter
2317* [List](list.html): Context in which list created
2318* [NutritionOrder](nutritionorder.html): Return nutrition orders with this encounter identifier
2319* [Observation](observation.html): Encounter related to the observation
2320* [Procedure](procedure.html): Encounter created as part of
2321* [RiskAssessment](riskassessment.html): Where was assessment performed?
2322* [ServiceRequest](servicerequest.html): An encounter in which this request is made
2323* [VisionPrescription](visionprescription.html): Return prescriptions with this encounter identifier
2324</b><br>
2325   * Type: <b>reference</b><br>
2326   * Path: <b>Composition.encounter | DeviceRequest.encounter | DiagnosticReport.encounter | DocumentReference.context.encounter | Flag.encounter | List.encounter | NutritionOrder.encounter | Observation.encounter | Procedure.encounter | RiskAssessment.encounter | ServiceRequest.encounter | VisionPrescription.encounter</b><br>
2327   * </p>
2328   */
2329  @SearchParamDefinition(name="encounter", path="Composition.encounter | DeviceRequest.encounter | DiagnosticReport.encounter | DocumentReference.context.encounter | Flag.encounter | List.encounter | NutritionOrder.encounter | Observation.encounter | Procedure.encounter | RiskAssessment.encounter | ServiceRequest.encounter | VisionPrescription.encounter", description="Multiple Resources: \r\n\r\n* [Composition](composition.html): Context of the Composition\r\n* [DeviceRequest](devicerequest.html): Encounter during which request was created\r\n* [DiagnosticReport](diagnosticreport.html): The Encounter when the order was made\r\n* [DocumentReference](documentreference.html): Context of the document  content\r\n* [Flag](flag.html): Alert relevant during encounter\r\n* [List](list.html): Context in which list created\r\n* [NutritionOrder](nutritionorder.html): Return nutrition orders with this encounter identifier\r\n* [Observation](observation.html): Encounter related to the observation\r\n* [Procedure](procedure.html): Encounter created as part of\r\n* [RiskAssessment](riskassessment.html): Where was assessment performed?\r\n* [ServiceRequest](servicerequest.html): An encounter in which this request is made\r\n* [VisionPrescription](visionprescription.html): Return prescriptions with this encounter identifier\r\n", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Encounter") }, target={Encounter.class, EpisodeOfCare.class } )
2330  public static final String SP_ENCOUNTER = "encounter";
2331 /**
2332   * <b>Fluent Client</b> search parameter constant for <b>encounter</b>
2333   * <p>
2334   * Description: <b>Multiple Resources: 
2335
2336* [Composition](composition.html): Context of the Composition
2337* [DeviceRequest](devicerequest.html): Encounter during which request was created
2338* [DiagnosticReport](diagnosticreport.html): The Encounter when the order was made
2339* [DocumentReference](documentreference.html): Context of the document  content
2340* [Flag](flag.html): Alert relevant during encounter
2341* [List](list.html): Context in which list created
2342* [NutritionOrder](nutritionorder.html): Return nutrition orders with this encounter identifier
2343* [Observation](observation.html): Encounter related to the observation
2344* [Procedure](procedure.html): Encounter created as part of
2345* [RiskAssessment](riskassessment.html): Where was assessment performed?
2346* [ServiceRequest](servicerequest.html): An encounter in which this request is made
2347* [VisionPrescription](visionprescription.html): Return prescriptions with this encounter identifier
2348</b><br>
2349   * Type: <b>reference</b><br>
2350   * Path: <b>Composition.encounter | DeviceRequest.encounter | DiagnosticReport.encounter | DocumentReference.context.encounter | Flag.encounter | List.encounter | NutritionOrder.encounter | Observation.encounter | Procedure.encounter | RiskAssessment.encounter | ServiceRequest.encounter | VisionPrescription.encounter</b><br>
2351   * </p>
2352   */
2353  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam ENCOUNTER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_ENCOUNTER);
2354
2355/**
2356   * Constant for fluent queries to be used to add include statements. Specifies
2357   * the path value of "<b>DiagnosticReport:encounter</b>".
2358   */
2359  public static final ca.uhn.fhir.model.api.Include INCLUDE_ENCOUNTER = new ca.uhn.fhir.model.api.Include("DiagnosticReport:encounter").toLocked();
2360
2361 /**
2362   * Search parameter: <b>identifier</b>
2363   * <p>
2364   * Description: <b>Multiple Resources: 
2365
2366* [AllergyIntolerance](allergyintolerance.html): External ids for this item
2367* [CarePlan](careplan.html): External Ids for this plan
2368* [CareTeam](careteam.html): External Ids for this team
2369* [Composition](composition.html): Version-independent identifier for the Composition
2370* [Condition](condition.html): A unique identifier of the condition record
2371* [Consent](consent.html): Identifier for this record (external references)
2372* [DetectedIssue](detectedissue.html): Unique id for the detected issue
2373* [DeviceRequest](devicerequest.html): Business identifier for request/order
2374* [DiagnosticReport](diagnosticreport.html): An identifier for the report
2375* [DocumentManifest](documentmanifest.html): Unique Identifier for the set of documents
2376* [DocumentReference](documentreference.html): Master Version Specific Identifier
2377* [Encounter](encounter.html): Identifier(s) by which this encounter is known
2378* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare
2379* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier
2380* [Goal](goal.html): External Ids for this goal
2381* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID and Accession number
2382* [Immunization](immunization.html): Business identifier
2383* [List](list.html): Business identifier
2384* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier
2385* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier
2386* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier
2387* [MedicationStatement](medicationstatement.html): Return statements with this external identifier
2388* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier
2389* [Observation](observation.html): The unique id for a particular observation
2390* [Procedure](procedure.html): A unique identifier for a procedure
2391* [RiskAssessment](riskassessment.html): Unique identifier for the assessment
2392* [ServiceRequest](servicerequest.html): Identifiers assigned to this order
2393* [SupplyDelivery](supplydelivery.html): External identifier
2394* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest
2395* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier
2396</b><br>
2397   * Type: <b>token</b><br>
2398   * Path: <b>AllergyIntolerance.identifier | CarePlan.identifier | CareTeam.identifier | Composition.identifier | Condition.identifier | Consent.identifier | DetectedIssue.identifier | DeviceRequest.identifier | DiagnosticReport.identifier | DocumentManifest.masterIdentifier | DocumentManifest.identifier | DocumentReference.masterIdentifier | DocumentReference.identifier | Encounter.identifier | EpisodeOfCare.identifier | FamilyMemberHistory.identifier | Goal.identifier | ImagingStudy.identifier | Immunization.identifier | List.identifier | MedicationAdministration.identifier | MedicationDispense.identifier | MedicationRequest.identifier | MedicationStatement.identifier | NutritionOrder.identifier | Observation.identifier | Procedure.identifier | RiskAssessment.identifier | ServiceRequest.identifier | SupplyDelivery.identifier | SupplyRequest.identifier | VisionPrescription.identifier</b><br>
2399   * </p>
2400   */
2401  @SearchParamDefinition(name="identifier", path="AllergyIntolerance.identifier | CarePlan.identifier | CareTeam.identifier | Composition.identifier | Condition.identifier | Consent.identifier | DetectedIssue.identifier | DeviceRequest.identifier | DiagnosticReport.identifier | DocumentManifest.masterIdentifier | DocumentManifest.identifier | DocumentReference.masterIdentifier | DocumentReference.identifier | Encounter.identifier | EpisodeOfCare.identifier | FamilyMemberHistory.identifier | Goal.identifier | ImagingStudy.identifier | Immunization.identifier | List.identifier | MedicationAdministration.identifier | MedicationDispense.identifier | MedicationRequest.identifier | MedicationStatement.identifier | NutritionOrder.identifier | Observation.identifier | Procedure.identifier | RiskAssessment.identifier | ServiceRequest.identifier | SupplyDelivery.identifier | SupplyRequest.identifier | VisionPrescription.identifier", description="Multiple Resources: \r\n\r\n* [AllergyIntolerance](allergyintolerance.html): External ids for this item\r\n* [CarePlan](careplan.html): External Ids for this plan\r\n* [CareTeam](careteam.html): External Ids for this team\r\n* [Composition](composition.html): Version-independent identifier for the Composition\r\n* [Condition](condition.html): A unique identifier of the condition record\r\n* [Consent](consent.html): Identifier for this record (external references)\r\n* [DetectedIssue](detectedissue.html): Unique id for the detected issue\r\n* [DeviceRequest](devicerequest.html): Business identifier for request/order\r\n* [DiagnosticReport](diagnosticreport.html): An identifier for the report\r\n* [DocumentManifest](documentmanifest.html): Unique Identifier for the set of documents\r\n* [DocumentReference](documentreference.html): Master Version Specific Identifier\r\n* [Encounter](encounter.html): Identifier(s) by which this encounter is known\r\n* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare\r\n* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier\r\n* [Goal](goal.html): External Ids for this goal\r\n* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID and Accession number\r\n* [Immunization](immunization.html): Business identifier\r\n* [List](list.html): Business identifier\r\n* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier\r\n* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier\r\n* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier\r\n* [MedicationStatement](medicationstatement.html): Return statements with this external identifier\r\n* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier\r\n* [Observation](observation.html): The unique id for a particular observation\r\n* [Procedure](procedure.html): A unique identifier for a procedure\r\n* [RiskAssessment](riskassessment.html): Unique identifier for the assessment\r\n* [ServiceRequest](servicerequest.html): Identifiers assigned to this order\r\n* [SupplyDelivery](supplydelivery.html): External identifier\r\n* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest\r\n* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier\r\n", type="token" )
2402  public static final String SP_IDENTIFIER = "identifier";
2403 /**
2404   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
2405   * <p>
2406   * Description: <b>Multiple Resources: 
2407
2408* [AllergyIntolerance](allergyintolerance.html): External ids for this item
2409* [CarePlan](careplan.html): External Ids for this plan
2410* [CareTeam](careteam.html): External Ids for this team
2411* [Composition](composition.html): Version-independent identifier for the Composition
2412* [Condition](condition.html): A unique identifier of the condition record
2413* [Consent](consent.html): Identifier for this record (external references)
2414* [DetectedIssue](detectedissue.html): Unique id for the detected issue
2415* [DeviceRequest](devicerequest.html): Business identifier for request/order
2416* [DiagnosticReport](diagnosticreport.html): An identifier for the report
2417* [DocumentManifest](documentmanifest.html): Unique Identifier for the set of documents
2418* [DocumentReference](documentreference.html): Master Version Specific Identifier
2419* [Encounter](encounter.html): Identifier(s) by which this encounter is known
2420* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare
2421* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier
2422* [Goal](goal.html): External Ids for this goal
2423* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID and Accession number
2424* [Immunization](immunization.html): Business identifier
2425* [List](list.html): Business identifier
2426* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier
2427* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier
2428* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier
2429* [MedicationStatement](medicationstatement.html): Return statements with this external identifier
2430* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier
2431* [Observation](observation.html): The unique id for a particular observation
2432* [Procedure](procedure.html): A unique identifier for a procedure
2433* [RiskAssessment](riskassessment.html): Unique identifier for the assessment
2434* [ServiceRequest](servicerequest.html): Identifiers assigned to this order
2435* [SupplyDelivery](supplydelivery.html): External identifier
2436* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest
2437* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier
2438</b><br>
2439   * Type: <b>token</b><br>
2440   * Path: <b>AllergyIntolerance.identifier | CarePlan.identifier | CareTeam.identifier | Composition.identifier | Condition.identifier | Consent.identifier | DetectedIssue.identifier | DeviceRequest.identifier | DiagnosticReport.identifier | DocumentManifest.masterIdentifier | DocumentManifest.identifier | DocumentReference.masterIdentifier | DocumentReference.identifier | Encounter.identifier | EpisodeOfCare.identifier | FamilyMemberHistory.identifier | Goal.identifier | ImagingStudy.identifier | Immunization.identifier | List.identifier | MedicationAdministration.identifier | MedicationDispense.identifier | MedicationRequest.identifier | MedicationStatement.identifier | NutritionOrder.identifier | Observation.identifier | Procedure.identifier | RiskAssessment.identifier | ServiceRequest.identifier | SupplyDelivery.identifier | SupplyRequest.identifier | VisionPrescription.identifier</b><br>
2441   * </p>
2442   */
2443  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
2444
2445 /**
2446   * Search parameter: <b>patient</b>
2447   * <p>
2448   * Description: <b>Multiple Resources: 
2449
2450* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for
2451* [CarePlan](careplan.html): Who the care plan is for
2452* [CareTeam](careteam.html): Who care team is for
2453* [ClinicalImpression](clinicalimpression.html): Patient or group assessed
2454* [Composition](composition.html): Who and/or what the composition is about
2455* [Condition](condition.html): Who has the condition?
2456* [Consent](consent.html): Who the consent applies to
2457* [DetectedIssue](detectedissue.html): Associated patient
2458* [DeviceRequest](devicerequest.html): Individual the service is ordered for
2459* [DeviceUseStatement](deviceusestatement.html): Search by subject - a patient
2460* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient
2461* [DocumentManifest](documentmanifest.html): The subject of the set of documents
2462* [DocumentReference](documentreference.html): Who/what is the subject of the document
2463* [Encounter](encounter.html): The patient or group present at the encounter
2464* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care
2465* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for
2466* [Flag](flag.html): The identity of a subject to list flags for
2467* [Goal](goal.html): Who this goal is intended for
2468* [ImagingStudy](imagingstudy.html): Who the study is about
2469* [Immunization](immunization.html): The patient for the vaccination record
2470* [List](list.html): If all resources have the same subject
2471* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for
2472* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for
2473* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient
2474* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.
2475* [NutritionOrder](nutritionorder.html): The identity of the person who requires the diet, formula or nutritional supplement
2476* [Observation](observation.html): The subject that the observation is about (if patient)
2477* [Procedure](procedure.html): Search by subject - a patient
2478* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?
2479* [ServiceRequest](servicerequest.html): Search by subject - a patient
2480* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied
2481* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for
2482</b><br>
2483   * Type: <b>reference</b><br>
2484   * Path: <b>AllergyIntolerance.patient | CarePlan.subject.where(resolve() is Patient) | CareTeam.subject.where(resolve() is Patient) | ClinicalImpression.subject.where(resolve() is Patient) | Composition.subject.where(resolve() is Patient) | Condition.subject.where(resolve() is Patient) | Consent.patient | DetectedIssue.patient | DeviceRequest.subject.where(resolve() is Patient) | DeviceUseStatement.subject.where(resolve() is Patient) | DiagnosticReport.subject.where(resolve() is Patient) | DocumentManifest.subject.where(resolve() is Patient) | DocumentReference.subject.where(resolve() is Patient) | Encounter.subject.where(resolve() is Patient) | EpisodeOfCare.patient | FamilyMemberHistory.patient | Flag.subject.where(resolve() is Patient) | Goal.subject.where(resolve() is Patient) | ImagingStudy.subject.where(resolve() is Patient) | Immunization.patient | List.subject.where(resolve() is Patient) | MedicationAdministration.subject.where(resolve() is Patient) | MedicationDispense.subject.where(resolve() is Patient) | MedicationRequest.subject.where(resolve() is Patient) | MedicationStatement.subject.where(resolve() is Patient) | NutritionOrder.patient | Observation.subject.where(resolve() is Patient) | Procedure.subject.where(resolve() is Patient) | RiskAssessment.subject.where(resolve() is Patient) | ServiceRequest.subject.where(resolve() is Patient) | SupplyDelivery.patient | VisionPrescription.patient</b><br>
2485   * </p>
2486   */
2487  @SearchParamDefinition(name="patient", path="AllergyIntolerance.patient | CarePlan.subject.where(resolve() is Patient) | CareTeam.subject.where(resolve() is Patient) | ClinicalImpression.subject.where(resolve() is Patient) | Composition.subject.where(resolve() is Patient) | Condition.subject.where(resolve() is Patient) | Consent.patient | DetectedIssue.patient | DeviceRequest.subject.where(resolve() is Patient) | DeviceUseStatement.subject.where(resolve() is Patient) | DiagnosticReport.subject.where(resolve() is Patient) | DocumentManifest.subject.where(resolve() is Patient) | DocumentReference.subject.where(resolve() is Patient) | Encounter.subject.where(resolve() is Patient) | EpisodeOfCare.patient | FamilyMemberHistory.patient | Flag.subject.where(resolve() is Patient) | Goal.subject.where(resolve() is Patient) | ImagingStudy.subject.where(resolve() is Patient) | Immunization.patient | List.subject.where(resolve() is Patient) | MedicationAdministration.subject.where(resolve() is Patient) | MedicationDispense.subject.where(resolve() is Patient) | MedicationRequest.subject.where(resolve() is Patient) | MedicationStatement.subject.where(resolve() is Patient) | NutritionOrder.patient | Observation.subject.where(resolve() is Patient) | Procedure.subject.where(resolve() is Patient) | RiskAssessment.subject.where(resolve() is Patient) | ServiceRequest.subject.where(resolve() is Patient) | SupplyDelivery.patient | VisionPrescription.patient", description="Multiple Resources: \r\n\r\n* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for\r\n* [CarePlan](careplan.html): Who the care plan is for\r\n* [CareTeam](careteam.html): Who care team is for\r\n* [ClinicalImpression](clinicalimpression.html): Patient or group assessed\r\n* [Composition](composition.html): Who and/or what the composition is about\r\n* [Condition](condition.html): Who has the condition?\r\n* [Consent](consent.html): Who the consent applies to\r\n* [DetectedIssue](detectedissue.html): Associated patient\r\n* [DeviceRequest](devicerequest.html): Individual the service is ordered for\r\n* [DeviceUseStatement](deviceusestatement.html): Search by subject - a patient\r\n* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient\r\n* [DocumentManifest](documentmanifest.html): The subject of the set of documents\r\n* [DocumentReference](documentreference.html): Who/what is the subject of the document\r\n* [Encounter](encounter.html): The patient or group present at the encounter\r\n* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care\r\n* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for\r\n* [Flag](flag.html): The identity of a subject to list flags for\r\n* [Goal](goal.html): Who this goal is intended for\r\n* [ImagingStudy](imagingstudy.html): Who the study is about\r\n* [Immunization](immunization.html): The patient for the vaccination record\r\n* [List](list.html): If all resources have the same subject\r\n* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for\r\n* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for\r\n* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient\r\n* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.\r\n* [NutritionOrder](nutritionorder.html): The identity of the person who requires the diet, formula or nutritional supplement\r\n* [Observation](observation.html): The subject that the observation is about (if patient)\r\n* [Procedure](procedure.html): Search by subject - a patient\r\n* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?\r\n* [ServiceRequest](servicerequest.html): Search by subject - a patient\r\n* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied\r\n* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for\r\n", type="reference", target={Account.class, ActivityDefinition.class, AdministrableProductDefinition.class, AdverseEvent.class, AllergyIntolerance.class, Appointment.class, AppointmentResponse.class, AuditEvent.class, Basic.class, Binary.class, BiologicallyDerivedProduct.class, BodyStructure.class, Bundle.class, CapabilityStatement.class, CarePlan.class, CareTeam.class, CatalogEntry.class, ChargeItem.class, ChargeItemDefinition.class, Citation.class, Claim.class, ClaimResponse.class, ClinicalImpression.class, ClinicalUseDefinition.class, CodeSystem.class, Communication.class, CommunicationRequest.class, CompartmentDefinition.class, Composition.class, ConceptMap.class, Condition.class, Consent.class, Contract.class, Coverage.class, CoverageEligibilityRequest.class, CoverageEligibilityResponse.class, DetectedIssue.class, Device.class, DeviceDefinition.class, DeviceMetric.class, DeviceRequest.class, DeviceUseStatement.class, DiagnosticReport.class, DocumentManifest.class, DocumentReference.class, Encounter.class, Endpoint.class, EnrollmentRequest.class, EnrollmentResponse.class, EpisodeOfCare.class, EventDefinition.class, Evidence.class, EvidenceReport.class, EvidenceVariable.class, ExampleScenario.class, ExplanationOfBenefit.class, FamilyMemberHistory.class, Flag.class, Goal.class, GraphDefinition.class, Group.class, GuidanceResponse.class, HealthcareService.class, ImagingStudy.class, Immunization.class, ImmunizationEvaluation.class, ImmunizationRecommendation.class, ImplementationGuide.class, Ingredient.class, InsurancePlan.class, Invoice.class, Library.class, Linkage.class, ListResource.class, Location.class, ManufacturedItemDefinition.class, Measure.class, MeasureReport.class, Media.class, Medication.class, MedicationAdministration.class, MedicationDispense.class, MedicationKnowledge.class, MedicationRequest.class, MedicationStatement.class, MedicinalProductDefinition.class, MessageDefinition.class, MessageHeader.class, MolecularSequence.class, NamingSystem.class, NutritionOrder.class, NutritionProduct.class, Observation.class, ObservationDefinition.class, OperationDefinition.class, OperationOutcome.class, Organization.class, OrganizationAffiliation.class, PackagedProductDefinition.class, Patient.class, PaymentNotice.class, PaymentReconciliation.class, Person.class, PlanDefinition.class, Practitioner.class, PractitionerRole.class, Procedure.class, Provenance.class, Questionnaire.class, QuestionnaireResponse.class, RegulatedAuthorization.class, RelatedPerson.class, RequestGroup.class, ResearchDefinition.class, ResearchElementDefinition.class, ResearchStudy.class, ResearchSubject.class, RiskAssessment.class, Schedule.class, SearchParameter.class, ServiceRequest.class, Slot.class, Specimen.class, SpecimenDefinition.class, StructureDefinition.class, StructureMap.class, Subscription.class, SubscriptionStatus.class, SubscriptionTopic.class, Substance.class, SubstanceDefinition.class, SupplyDelivery.class, SupplyRequest.class, Task.class, TerminologyCapabilities.class, TestReport.class, TestScript.class, ValueSet.class, VerificationResult.class, VisionPrescription.class } )
2488  public static final String SP_PATIENT = "patient";
2489 /**
2490   * <b>Fluent Client</b> search parameter constant for <b>patient</b>
2491   * <p>
2492   * Description: <b>Multiple Resources: 
2493
2494* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for
2495* [CarePlan](careplan.html): Who the care plan is for
2496* [CareTeam](careteam.html): Who care team is for
2497* [ClinicalImpression](clinicalimpression.html): Patient or group assessed
2498* [Composition](composition.html): Who and/or what the composition is about
2499* [Condition](condition.html): Who has the condition?
2500* [Consent](consent.html): Who the consent applies to
2501* [DetectedIssue](detectedissue.html): Associated patient
2502* [DeviceRequest](devicerequest.html): Individual the service is ordered for
2503* [DeviceUseStatement](deviceusestatement.html): Search by subject - a patient
2504* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient
2505* [DocumentManifest](documentmanifest.html): The subject of the set of documents
2506* [DocumentReference](documentreference.html): Who/what is the subject of the document
2507* [Encounter](encounter.html): The patient or group present at the encounter
2508* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care
2509* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for
2510* [Flag](flag.html): The identity of a subject to list flags for
2511* [Goal](goal.html): Who this goal is intended for
2512* [ImagingStudy](imagingstudy.html): Who the study is about
2513* [Immunization](immunization.html): The patient for the vaccination record
2514* [List](list.html): If all resources have the same subject
2515* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for
2516* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for
2517* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient
2518* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.
2519* [NutritionOrder](nutritionorder.html): The identity of the person who requires the diet, formula or nutritional supplement
2520* [Observation](observation.html): The subject that the observation is about (if patient)
2521* [Procedure](procedure.html): Search by subject - a patient
2522* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?
2523* [ServiceRequest](servicerequest.html): Search by subject - a patient
2524* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied
2525* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for
2526</b><br>
2527   * Type: <b>reference</b><br>
2528   * Path: <b>AllergyIntolerance.patient | CarePlan.subject.where(resolve() is Patient) | CareTeam.subject.where(resolve() is Patient) | ClinicalImpression.subject.where(resolve() is Patient) | Composition.subject.where(resolve() is Patient) | Condition.subject.where(resolve() is Patient) | Consent.patient | DetectedIssue.patient | DeviceRequest.subject.where(resolve() is Patient) | DeviceUseStatement.subject.where(resolve() is Patient) | DiagnosticReport.subject.where(resolve() is Patient) | DocumentManifest.subject.where(resolve() is Patient) | DocumentReference.subject.where(resolve() is Patient) | Encounter.subject.where(resolve() is Patient) | EpisodeOfCare.patient | FamilyMemberHistory.patient | Flag.subject.where(resolve() is Patient) | Goal.subject.where(resolve() is Patient) | ImagingStudy.subject.where(resolve() is Patient) | Immunization.patient | List.subject.where(resolve() is Patient) | MedicationAdministration.subject.where(resolve() is Patient) | MedicationDispense.subject.where(resolve() is Patient) | MedicationRequest.subject.where(resolve() is Patient) | MedicationStatement.subject.where(resolve() is Patient) | NutritionOrder.patient | Observation.subject.where(resolve() is Patient) | Procedure.subject.where(resolve() is Patient) | RiskAssessment.subject.where(resolve() is Patient) | ServiceRequest.subject.where(resolve() is Patient) | SupplyDelivery.patient | VisionPrescription.patient</b><br>
2529   * </p>
2530   */
2531  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PATIENT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PATIENT);
2532
2533/**
2534   * Constant for fluent queries to be used to add include statements. Specifies
2535   * the path value of "<b>DiagnosticReport:patient</b>".
2536   */
2537  public static final ca.uhn.fhir.model.api.Include INCLUDE_PATIENT = new ca.uhn.fhir.model.api.Include("DiagnosticReport:patient").toLocked();
2538
2539 /**
2540   * Search parameter: <b>assessed-condition</b>
2541   * <p>
2542   * Description: <b>Condition assessed by genetic test</b><br>
2543   * Type: <b>reference</b><br>
2544   * Path: <b>DiagnosticReport.extension('http://hl7.org/fhir/StructureDefinition/DiagnosticReport-geneticsAssessedCondition')</b><br>
2545   * </p>
2546   */
2547  @SearchParamDefinition(name="assessed-condition", path="DiagnosticReport.extension('http://hl7.org/fhir/StructureDefinition/DiagnosticReport-geneticsAssessedCondition')", description="Condition assessed by genetic test", type="reference" )
2548  public static final String SP_ASSESSED_CONDITION = "assessed-condition";
2549 /**
2550   * <b>Fluent Client</b> search parameter constant for <b>assessed-condition</b>
2551   * <p>
2552   * Description: <b>Condition assessed by genetic test</b><br>
2553   * Type: <b>reference</b><br>
2554   * Path: <b>DiagnosticReport.extension('http://hl7.org/fhir/StructureDefinition/DiagnosticReport-geneticsAssessedCondition')</b><br>
2555   * </p>
2556   */
2557  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam ASSESSED_CONDITION = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_ASSESSED_CONDITION);
2558
2559/**
2560   * Constant for fluent queries to be used to add include statements. Specifies
2561   * the path value of "<b>DiagnosticReport:assessed-condition</b>".
2562   */
2563  public static final ca.uhn.fhir.model.api.Include INCLUDE_ASSESSED_CONDITION = new ca.uhn.fhir.model.api.Include("DiagnosticReport:assessed-condition").toLocked();
2564
2565
2566}
2567