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