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 Sat, Nov 5, 2022 10:47+1100 for FHIR v5.0.0-ballot
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 * Indicates an actual or potential clinical issue with or between one or more active or proposed clinical actions for a patient; e.g. Drug-drug interaction, Ineffective treatment frequency, Procedure-condition conflict, etc.
052 */
053@ResourceDef(name="DetectedIssue", profile="http://hl7.org/fhir/StructureDefinition/DetectedIssue")
054public class DetectedIssue extends DomainResource {
055
056    public enum DetectedIssueSeverity {
057        /**
058         * Indicates the issue may be life-threatening or has the potential to cause permanent injury.
059         */
060        HIGH, 
061        /**
062         * Indicates the issue may result in noticeable adverse consequences but is unlikely to be life-threatening or cause permanent injury.
063         */
064        MODERATE, 
065        /**
066         * Indicates the issue may result in some adverse consequences but is unlikely to substantially affect the situation of the subject.
067         */
068        LOW, 
069        /**
070         * added to help the parsers with the generic types
071         */
072        NULL;
073        public static DetectedIssueSeverity fromCode(String codeString) throws FHIRException {
074            if (codeString == null || "".equals(codeString))
075                return null;
076        if ("high".equals(codeString))
077          return HIGH;
078        if ("moderate".equals(codeString))
079          return MODERATE;
080        if ("low".equals(codeString))
081          return LOW;
082        if (Configuration.isAcceptInvalidEnums())
083          return null;
084        else
085          throw new FHIRException("Unknown DetectedIssueSeverity code '"+codeString+"'");
086        }
087        public String toCode() {
088          switch (this) {
089            case HIGH: return "high";
090            case MODERATE: return "moderate";
091            case LOW: return "low";
092            case NULL: return null;
093            default: return "?";
094          }
095        }
096        public String getSystem() {
097          switch (this) {
098            case HIGH: return "http://hl7.org/fhir/detectedissue-severity";
099            case MODERATE: return "http://hl7.org/fhir/detectedissue-severity";
100            case LOW: return "http://hl7.org/fhir/detectedissue-severity";
101            case NULL: return null;
102            default: return "?";
103          }
104        }
105        public String getDefinition() {
106          switch (this) {
107            case HIGH: return "Indicates the issue may be life-threatening or has the potential to cause permanent injury.";
108            case MODERATE: return "Indicates the issue may result in noticeable adverse consequences but is unlikely to be life-threatening or cause permanent injury.";
109            case LOW: return "Indicates the issue may result in some adverse consequences but is unlikely to substantially affect the situation of the subject.";
110            case NULL: return null;
111            default: return "?";
112          }
113        }
114        public String getDisplay() {
115          switch (this) {
116            case HIGH: return "High";
117            case MODERATE: return "Moderate";
118            case LOW: return "Low";
119            case NULL: return null;
120            default: return "?";
121          }
122        }
123    }
124
125  public static class DetectedIssueSeverityEnumFactory implements EnumFactory<DetectedIssueSeverity> {
126    public DetectedIssueSeverity fromCode(String codeString) throws IllegalArgumentException {
127      if (codeString == null || "".equals(codeString))
128            if (codeString == null || "".equals(codeString))
129                return null;
130        if ("high".equals(codeString))
131          return DetectedIssueSeverity.HIGH;
132        if ("moderate".equals(codeString))
133          return DetectedIssueSeverity.MODERATE;
134        if ("low".equals(codeString))
135          return DetectedIssueSeverity.LOW;
136        throw new IllegalArgumentException("Unknown DetectedIssueSeverity code '"+codeString+"'");
137        }
138        public Enumeration<DetectedIssueSeverity> fromType(Base code) throws FHIRException {
139          if (code == null)
140            return null;
141          if (code.isEmpty())
142            return new Enumeration<DetectedIssueSeverity>(this);
143          String codeString = ((PrimitiveType) code).asStringValue();
144          if (codeString == null || "".equals(codeString))
145            return null;
146        if ("high".equals(codeString))
147          return new Enumeration<DetectedIssueSeverity>(this, DetectedIssueSeverity.HIGH);
148        if ("moderate".equals(codeString))
149          return new Enumeration<DetectedIssueSeverity>(this, DetectedIssueSeverity.MODERATE);
150        if ("low".equals(codeString))
151          return new Enumeration<DetectedIssueSeverity>(this, DetectedIssueSeverity.LOW);
152        throw new FHIRException("Unknown DetectedIssueSeverity code '"+codeString+"'");
153        }
154    public String toCode(DetectedIssueSeverity code) {
155      if (code == DetectedIssueSeverity.HIGH)
156        return "high";
157      if (code == DetectedIssueSeverity.MODERATE)
158        return "moderate";
159      if (code == DetectedIssueSeverity.LOW)
160        return "low";
161      return "?";
162      }
163    public String toSystem(DetectedIssueSeverity code) {
164      return code.getSystem();
165      }
166    }
167
168    public enum DetectedIssueStatus {
169        /**
170         * This is an initial or interim observation: data may be incomplete or unverified.
171         */
172        PRELIMINARY, 
173        /**
174         * The observation is complete and there are no further actions needed. Additional information such \"released\", \"signed\", etc would be represented using [Provenance](provenance.html) which provides not only the act but also the actors and dates and other related data. These act states would be associated with an observation status of `preliminary` until they are all completed and then a status of `final` would be applied.
175         */
176        FINAL, 
177        /**
178         * The observation has been withdrawn following 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\".).
179         */
180        ENTEREDINERROR, 
181        /**
182         * Indicates the detected issue has been mitigated
183         */
184        MITIGATED, 
185        /**
186         * added to help the parsers with the generic types
187         */
188        NULL;
189        public static DetectedIssueStatus fromCode(String codeString) throws FHIRException {
190            if (codeString == null || "".equals(codeString))
191                return null;
192        if ("preliminary".equals(codeString))
193          return PRELIMINARY;
194        if ("final".equals(codeString))
195          return FINAL;
196        if ("entered-in-error".equals(codeString))
197          return ENTEREDINERROR;
198        if ("mitigated".equals(codeString))
199          return MITIGATED;
200        if (Configuration.isAcceptInvalidEnums())
201          return null;
202        else
203          throw new FHIRException("Unknown DetectedIssueStatus code '"+codeString+"'");
204        }
205        public String toCode() {
206          switch (this) {
207            case PRELIMINARY: return "preliminary";
208            case FINAL: return "final";
209            case ENTEREDINERROR: return "entered-in-error";
210            case MITIGATED: return "mitigated";
211            case NULL: return null;
212            default: return "?";
213          }
214        }
215        public String getSystem() {
216          switch (this) {
217            case PRELIMINARY: return "http://hl7.org/fhir/observation-status";
218            case FINAL: return "http://hl7.org/fhir/observation-status";
219            case ENTEREDINERROR: return "http://hl7.org/fhir/observation-status";
220            case MITIGATED: return "http://hl7.org/fhir/detectedissue-status";
221            case NULL: return null;
222            default: return "?";
223          }
224        }
225        public String getDefinition() {
226          switch (this) {
227            case PRELIMINARY: return "This is an initial or interim observation: data may be incomplete or unverified.";
228            case FINAL: return "The observation is complete and there are no further actions needed. Additional information such \"released\", \"signed\", etc would be represented using [Provenance](provenance.html) which provides not only the act but also the actors and dates and other related data. These act states would be associated with an observation status of `preliminary` until they are all completed and then a status of `final` would be applied.";
229            case ENTEREDINERROR: return "The observation has been withdrawn following 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\".).";
230            case MITIGATED: return "Indicates the detected issue has been mitigated";
231            case NULL: return null;
232            default: return "?";
233          }
234        }
235        public String getDisplay() {
236          switch (this) {
237            case PRELIMINARY: return "Preliminary";
238            case FINAL: return "Final";
239            case ENTEREDINERROR: return "Entered in Error";
240            case MITIGATED: return "Mitigated";
241            case NULL: return null;
242            default: return "?";
243          }
244        }
245    }
246
247  public static class DetectedIssueStatusEnumFactory implements EnumFactory<DetectedIssueStatus> {
248    public DetectedIssueStatus fromCode(String codeString) throws IllegalArgumentException {
249      if (codeString == null || "".equals(codeString))
250            if (codeString == null || "".equals(codeString))
251                return null;
252        if ("preliminary".equals(codeString))
253          return DetectedIssueStatus.PRELIMINARY;
254        if ("final".equals(codeString))
255          return DetectedIssueStatus.FINAL;
256        if ("entered-in-error".equals(codeString))
257          return DetectedIssueStatus.ENTEREDINERROR;
258        if ("mitigated".equals(codeString))
259          return DetectedIssueStatus.MITIGATED;
260        throw new IllegalArgumentException("Unknown DetectedIssueStatus code '"+codeString+"'");
261        }
262        public Enumeration<DetectedIssueStatus> fromType(Base code) throws FHIRException {
263          if (code == null)
264            return null;
265          if (code.isEmpty())
266            return new Enumeration<DetectedIssueStatus>(this);
267          String codeString = ((PrimitiveType) code).asStringValue();
268          if (codeString == null || "".equals(codeString))
269            return null;
270        if ("preliminary".equals(codeString))
271          return new Enumeration<DetectedIssueStatus>(this, DetectedIssueStatus.PRELIMINARY);
272        if ("final".equals(codeString))
273          return new Enumeration<DetectedIssueStatus>(this, DetectedIssueStatus.FINAL);
274        if ("entered-in-error".equals(codeString))
275          return new Enumeration<DetectedIssueStatus>(this, DetectedIssueStatus.ENTEREDINERROR);
276        if ("mitigated".equals(codeString))
277          return new Enumeration<DetectedIssueStatus>(this, DetectedIssueStatus.MITIGATED);
278        throw new FHIRException("Unknown DetectedIssueStatus code '"+codeString+"'");
279        }
280    public String toCode(DetectedIssueStatus code) {
281      if (code == DetectedIssueStatus.PRELIMINARY)
282        return "preliminary";
283      if (code == DetectedIssueStatus.FINAL)
284        return "final";
285      if (code == DetectedIssueStatus.ENTEREDINERROR)
286        return "entered-in-error";
287      if (code == DetectedIssueStatus.MITIGATED)
288        return "mitigated";
289      return "?";
290      }
291    public String toSystem(DetectedIssueStatus code) {
292      return code.getSystem();
293      }
294    }
295
296    @Block()
297    public static class DetectedIssueEvidenceComponent extends BackboneElement implements IBaseBackboneElement {
298        /**
299         * A manifestation that led to the recording of this detected issue.
300         */
301        @Child(name = "code", type = {CodeableConcept.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
302        @Description(shortDefinition="Manifestation", formalDefinition="A manifestation that led to the recording of this detected issue." )
303        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/manifestation-or-symptom")
304        protected List<CodeableConcept> code;
305
306        /**
307         * Links to resources that constitute evidence for the detected issue such as a GuidanceResponse or MeasureReport.
308         */
309        @Child(name = "detail", type = {Reference.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
310        @Description(shortDefinition="Supporting information", formalDefinition="Links to resources that constitute evidence for the detected issue such as a GuidanceResponse or MeasureReport." )
311        protected List<Reference> detail;
312
313        private static final long serialVersionUID = -672691342L;
314
315    /**
316     * Constructor
317     */
318      public DetectedIssueEvidenceComponent() {
319        super();
320      }
321
322        /**
323         * @return {@link #code} (A manifestation that led to the recording of this detected issue.)
324         */
325        public List<CodeableConcept> getCode() { 
326          if (this.code == null)
327            this.code = new ArrayList<CodeableConcept>();
328          return this.code;
329        }
330
331        /**
332         * @return Returns a reference to <code>this</code> for easy method chaining
333         */
334        public DetectedIssueEvidenceComponent setCode(List<CodeableConcept> theCode) { 
335          this.code = theCode;
336          return this;
337        }
338
339        public boolean hasCode() { 
340          if (this.code == null)
341            return false;
342          for (CodeableConcept item : this.code)
343            if (!item.isEmpty())
344              return true;
345          return false;
346        }
347
348        public CodeableConcept addCode() { //3
349          CodeableConcept t = new CodeableConcept();
350          if (this.code == null)
351            this.code = new ArrayList<CodeableConcept>();
352          this.code.add(t);
353          return t;
354        }
355
356        public DetectedIssueEvidenceComponent addCode(CodeableConcept t) { //3
357          if (t == null)
358            return this;
359          if (this.code == null)
360            this.code = new ArrayList<CodeableConcept>();
361          this.code.add(t);
362          return this;
363        }
364
365        /**
366         * @return The first repetition of repeating field {@link #code}, creating it if it does not already exist {3}
367         */
368        public CodeableConcept getCodeFirstRep() { 
369          if (getCode().isEmpty()) {
370            addCode();
371          }
372          return getCode().get(0);
373        }
374
375        /**
376         * @return {@link #detail} (Links to resources that constitute evidence for the detected issue such as a GuidanceResponse or MeasureReport.)
377         */
378        public List<Reference> getDetail() { 
379          if (this.detail == null)
380            this.detail = new ArrayList<Reference>();
381          return this.detail;
382        }
383
384        /**
385         * @return Returns a reference to <code>this</code> for easy method chaining
386         */
387        public DetectedIssueEvidenceComponent setDetail(List<Reference> theDetail) { 
388          this.detail = theDetail;
389          return this;
390        }
391
392        public boolean hasDetail() { 
393          if (this.detail == null)
394            return false;
395          for (Reference item : this.detail)
396            if (!item.isEmpty())
397              return true;
398          return false;
399        }
400
401        public Reference addDetail() { //3
402          Reference t = new Reference();
403          if (this.detail == null)
404            this.detail = new ArrayList<Reference>();
405          this.detail.add(t);
406          return t;
407        }
408
409        public DetectedIssueEvidenceComponent addDetail(Reference t) { //3
410          if (t == null)
411            return this;
412          if (this.detail == null)
413            this.detail = new ArrayList<Reference>();
414          this.detail.add(t);
415          return this;
416        }
417
418        /**
419         * @return The first repetition of repeating field {@link #detail}, creating it if it does not already exist {3}
420         */
421        public Reference getDetailFirstRep() { 
422          if (getDetail().isEmpty()) {
423            addDetail();
424          }
425          return getDetail().get(0);
426        }
427
428        protected void listChildren(List<Property> children) {
429          super.listChildren(children);
430          children.add(new Property("code", "CodeableConcept", "A manifestation that led to the recording of this detected issue.", 0, java.lang.Integer.MAX_VALUE, code));
431          children.add(new Property("detail", "Reference(Any)", "Links to resources that constitute evidence for the detected issue such as a GuidanceResponse or MeasureReport.", 0, java.lang.Integer.MAX_VALUE, detail));
432        }
433
434        @Override
435        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
436          switch (_hash) {
437          case 3059181: /*code*/  return new Property("code", "CodeableConcept", "A manifestation that led to the recording of this detected issue.", 0, java.lang.Integer.MAX_VALUE, code);
438          case -1335224239: /*detail*/  return new Property("detail", "Reference(Any)", "Links to resources that constitute evidence for the detected issue such as a GuidanceResponse or MeasureReport.", 0, java.lang.Integer.MAX_VALUE, detail);
439          default: return super.getNamedProperty(_hash, _name, _checkValid);
440          }
441
442        }
443
444      @Override
445      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
446        switch (hash) {
447        case 3059181: /*code*/ return this.code == null ? new Base[0] : this.code.toArray(new Base[this.code.size()]); // CodeableConcept
448        case -1335224239: /*detail*/ return this.detail == null ? new Base[0] : this.detail.toArray(new Base[this.detail.size()]); // Reference
449        default: return super.getProperty(hash, name, checkValid);
450        }
451
452      }
453
454      @Override
455      public Base setProperty(int hash, String name, Base value) throws FHIRException {
456        switch (hash) {
457        case 3059181: // code
458          this.getCode().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
459          return value;
460        case -1335224239: // detail
461          this.getDetail().add(TypeConvertor.castToReference(value)); // Reference
462          return value;
463        default: return super.setProperty(hash, name, value);
464        }
465
466      }
467
468      @Override
469      public Base setProperty(String name, Base value) throws FHIRException {
470        if (name.equals("code")) {
471          this.getCode().add(TypeConvertor.castToCodeableConcept(value));
472        } else if (name.equals("detail")) {
473          this.getDetail().add(TypeConvertor.castToReference(value));
474        } else
475          return super.setProperty(name, value);
476        return value;
477      }
478
479      @Override
480      public Base makeProperty(int hash, String name) throws FHIRException {
481        switch (hash) {
482        case 3059181:  return addCode(); 
483        case -1335224239:  return addDetail(); 
484        default: return super.makeProperty(hash, name);
485        }
486
487      }
488
489      @Override
490      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
491        switch (hash) {
492        case 3059181: /*code*/ return new String[] {"CodeableConcept"};
493        case -1335224239: /*detail*/ return new String[] {"Reference"};
494        default: return super.getTypesForProperty(hash, name);
495        }
496
497      }
498
499      @Override
500      public Base addChild(String name) throws FHIRException {
501        if (name.equals("code")) {
502          return addCode();
503        }
504        else if (name.equals("detail")) {
505          return addDetail();
506        }
507        else
508          return super.addChild(name);
509      }
510
511      public DetectedIssueEvidenceComponent copy() {
512        DetectedIssueEvidenceComponent dst = new DetectedIssueEvidenceComponent();
513        copyValues(dst);
514        return dst;
515      }
516
517      public void copyValues(DetectedIssueEvidenceComponent dst) {
518        super.copyValues(dst);
519        if (code != null) {
520          dst.code = new ArrayList<CodeableConcept>();
521          for (CodeableConcept i : code)
522            dst.code.add(i.copy());
523        };
524        if (detail != null) {
525          dst.detail = new ArrayList<Reference>();
526          for (Reference i : detail)
527            dst.detail.add(i.copy());
528        };
529      }
530
531      @Override
532      public boolean equalsDeep(Base other_) {
533        if (!super.equalsDeep(other_))
534          return false;
535        if (!(other_ instanceof DetectedIssueEvidenceComponent))
536          return false;
537        DetectedIssueEvidenceComponent o = (DetectedIssueEvidenceComponent) other_;
538        return compareDeep(code, o.code, true) && compareDeep(detail, o.detail, true);
539      }
540
541      @Override
542      public boolean equalsShallow(Base other_) {
543        if (!super.equalsShallow(other_))
544          return false;
545        if (!(other_ instanceof DetectedIssueEvidenceComponent))
546          return false;
547        DetectedIssueEvidenceComponent o = (DetectedIssueEvidenceComponent) other_;
548        return true;
549      }
550
551      public boolean isEmpty() {
552        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(code, detail);
553      }
554
555  public String fhirType() {
556    return "DetectedIssue.evidence";
557
558  }
559
560  }
561
562    @Block()
563    public static class DetectedIssueMitigationComponent extends BackboneElement implements IBaseBackboneElement {
564        /**
565         * Describes the action that was taken or the observation that was made that reduces/eliminates the risk associated with the identified issue.
566         */
567        @Child(name = "action", type = {CodeableConcept.class}, order=1, min=1, max=1, modifier=false, summary=false)
568        @Description(shortDefinition="What mitigation?", formalDefinition="Describes the action that was taken or the observation that was made that reduces/eliminates the risk associated with the identified issue." )
569        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/detectedissue-mitigation-action")
570        protected CodeableConcept action;
571
572        /**
573         * Indicates when the mitigating action was documented.
574         */
575        @Child(name = "date", type = {DateTimeType.class}, order=2, min=0, max=1, modifier=false, summary=false)
576        @Description(shortDefinition="Date committed", formalDefinition="Indicates when the mitigating action was documented." )
577        protected DateTimeType date;
578
579        /**
580         * Identifies the practitioner who determined the mitigation and takes responsibility for the mitigation step occurring.
581         */
582        @Child(name = "author", type = {Practitioner.class, PractitionerRole.class}, order=3, min=0, max=1, modifier=false, summary=false)
583        @Description(shortDefinition="Who is committing?", formalDefinition="Identifies the practitioner who determined the mitigation and takes responsibility for the mitigation step occurring." )
584        protected Reference author;
585
586        private static final long serialVersionUID = -1797436956L;
587
588    /**
589     * Constructor
590     */
591      public DetectedIssueMitigationComponent() {
592        super();
593      }
594
595    /**
596     * Constructor
597     */
598      public DetectedIssueMitigationComponent(CodeableConcept action) {
599        super();
600        this.setAction(action);
601      }
602
603        /**
604         * @return {@link #action} (Describes the action that was taken or the observation that was made that reduces/eliminates the risk associated with the identified issue.)
605         */
606        public CodeableConcept getAction() { 
607          if (this.action == null)
608            if (Configuration.errorOnAutoCreate())
609              throw new Error("Attempt to auto-create DetectedIssueMitigationComponent.action");
610            else if (Configuration.doAutoCreate())
611              this.action = new CodeableConcept(); // cc
612          return this.action;
613        }
614
615        public boolean hasAction() { 
616          return this.action != null && !this.action.isEmpty();
617        }
618
619        /**
620         * @param value {@link #action} (Describes the action that was taken or the observation that was made that reduces/eliminates the risk associated with the identified issue.)
621         */
622        public DetectedIssueMitigationComponent setAction(CodeableConcept value) { 
623          this.action = value;
624          return this;
625        }
626
627        /**
628         * @return {@link #date} (Indicates when the mitigating action was documented.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
629         */
630        public DateTimeType getDateElement() { 
631          if (this.date == null)
632            if (Configuration.errorOnAutoCreate())
633              throw new Error("Attempt to auto-create DetectedIssueMitigationComponent.date");
634            else if (Configuration.doAutoCreate())
635              this.date = new DateTimeType(); // bb
636          return this.date;
637        }
638
639        public boolean hasDateElement() { 
640          return this.date != null && !this.date.isEmpty();
641        }
642
643        public boolean hasDate() { 
644          return this.date != null && !this.date.isEmpty();
645        }
646
647        /**
648         * @param value {@link #date} (Indicates when the mitigating action was documented.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
649         */
650        public DetectedIssueMitigationComponent setDateElement(DateTimeType value) { 
651          this.date = value;
652          return this;
653        }
654
655        /**
656         * @return Indicates when the mitigating action was documented.
657         */
658        public Date getDate() { 
659          return this.date == null ? null : this.date.getValue();
660        }
661
662        /**
663         * @param value Indicates when the mitigating action was documented.
664         */
665        public DetectedIssueMitigationComponent setDate(Date value) { 
666          if (value == null)
667            this.date = null;
668          else {
669            if (this.date == null)
670              this.date = new DateTimeType();
671            this.date.setValue(value);
672          }
673          return this;
674        }
675
676        /**
677         * @return {@link #author} (Identifies the practitioner who determined the mitigation and takes responsibility for the mitigation step occurring.)
678         */
679        public Reference getAuthor() { 
680          if (this.author == null)
681            if (Configuration.errorOnAutoCreate())
682              throw new Error("Attempt to auto-create DetectedIssueMitigationComponent.author");
683            else if (Configuration.doAutoCreate())
684              this.author = new Reference(); // cc
685          return this.author;
686        }
687
688        public boolean hasAuthor() { 
689          return this.author != null && !this.author.isEmpty();
690        }
691
692        /**
693         * @param value {@link #author} (Identifies the practitioner who determined the mitigation and takes responsibility for the mitigation step occurring.)
694         */
695        public DetectedIssueMitigationComponent setAuthor(Reference value) { 
696          this.author = value;
697          return this;
698        }
699
700        protected void listChildren(List<Property> children) {
701          super.listChildren(children);
702          children.add(new Property("action", "CodeableConcept", "Describes the action that was taken or the observation that was made that reduces/eliminates the risk associated with the identified issue.", 0, 1, action));
703          children.add(new Property("date", "dateTime", "Indicates when the mitigating action was documented.", 0, 1, date));
704          children.add(new Property("author", "Reference(Practitioner|PractitionerRole)", "Identifies the practitioner who determined the mitigation and takes responsibility for the mitigation step occurring.", 0, 1, author));
705        }
706
707        @Override
708        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
709          switch (_hash) {
710          case -1422950858: /*action*/  return new Property("action", "CodeableConcept", "Describes the action that was taken or the observation that was made that reduces/eliminates the risk associated with the identified issue.", 0, 1, action);
711          case 3076014: /*date*/  return new Property("date", "dateTime", "Indicates when the mitigating action was documented.", 0, 1, date);
712          case -1406328437: /*author*/  return new Property("author", "Reference(Practitioner|PractitionerRole)", "Identifies the practitioner who determined the mitigation and takes responsibility for the mitigation step occurring.", 0, 1, author);
713          default: return super.getNamedProperty(_hash, _name, _checkValid);
714          }
715
716        }
717
718      @Override
719      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
720        switch (hash) {
721        case -1422950858: /*action*/ return this.action == null ? new Base[0] : new Base[] {this.action}; // CodeableConcept
722        case 3076014: /*date*/ return this.date == null ? new Base[0] : new Base[] {this.date}; // DateTimeType
723        case -1406328437: /*author*/ return this.author == null ? new Base[0] : new Base[] {this.author}; // Reference
724        default: return super.getProperty(hash, name, checkValid);
725        }
726
727      }
728
729      @Override
730      public Base setProperty(int hash, String name, Base value) throws FHIRException {
731        switch (hash) {
732        case -1422950858: // action
733          this.action = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
734          return value;
735        case 3076014: // date
736          this.date = TypeConvertor.castToDateTime(value); // DateTimeType
737          return value;
738        case -1406328437: // author
739          this.author = TypeConvertor.castToReference(value); // Reference
740          return value;
741        default: return super.setProperty(hash, name, value);
742        }
743
744      }
745
746      @Override
747      public Base setProperty(String name, Base value) throws FHIRException {
748        if (name.equals("action")) {
749          this.action = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
750        } else if (name.equals("date")) {
751          this.date = TypeConvertor.castToDateTime(value); // DateTimeType
752        } else if (name.equals("author")) {
753          this.author = TypeConvertor.castToReference(value); // Reference
754        } else
755          return super.setProperty(name, value);
756        return value;
757      }
758
759      @Override
760      public Base makeProperty(int hash, String name) throws FHIRException {
761        switch (hash) {
762        case -1422950858:  return getAction();
763        case 3076014:  return getDateElement();
764        case -1406328437:  return getAuthor();
765        default: return super.makeProperty(hash, name);
766        }
767
768      }
769
770      @Override
771      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
772        switch (hash) {
773        case -1422950858: /*action*/ return new String[] {"CodeableConcept"};
774        case 3076014: /*date*/ return new String[] {"dateTime"};
775        case -1406328437: /*author*/ return new String[] {"Reference"};
776        default: return super.getTypesForProperty(hash, name);
777        }
778
779      }
780
781      @Override
782      public Base addChild(String name) throws FHIRException {
783        if (name.equals("action")) {
784          this.action = new CodeableConcept();
785          return this.action;
786        }
787        else if (name.equals("date")) {
788          throw new FHIRException("Cannot call addChild on a primitive type DetectedIssue.mitigation.date");
789        }
790        else if (name.equals("author")) {
791          this.author = new Reference();
792          return this.author;
793        }
794        else
795          return super.addChild(name);
796      }
797
798      public DetectedIssueMitigationComponent copy() {
799        DetectedIssueMitigationComponent dst = new DetectedIssueMitigationComponent();
800        copyValues(dst);
801        return dst;
802      }
803
804      public void copyValues(DetectedIssueMitigationComponent dst) {
805        super.copyValues(dst);
806        dst.action = action == null ? null : action.copy();
807        dst.date = date == null ? null : date.copy();
808        dst.author = author == null ? null : author.copy();
809      }
810
811      @Override
812      public boolean equalsDeep(Base other_) {
813        if (!super.equalsDeep(other_))
814          return false;
815        if (!(other_ instanceof DetectedIssueMitigationComponent))
816          return false;
817        DetectedIssueMitigationComponent o = (DetectedIssueMitigationComponent) other_;
818        return compareDeep(action, o.action, true) && compareDeep(date, o.date, true) && compareDeep(author, o.author, true)
819          ;
820      }
821
822      @Override
823      public boolean equalsShallow(Base other_) {
824        if (!super.equalsShallow(other_))
825          return false;
826        if (!(other_ instanceof DetectedIssueMitigationComponent))
827          return false;
828        DetectedIssueMitigationComponent o = (DetectedIssueMitigationComponent) other_;
829        return compareValues(date, o.date, true);
830      }
831
832      public boolean isEmpty() {
833        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(action, date, author);
834      }
835
836  public String fhirType() {
837    return "DetectedIssue.mitigation";
838
839  }
840
841  }
842
843    /**
844     * Business identifier associated with the detected issue record.
845     */
846    @Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
847    @Description(shortDefinition="Unique id for the detected issue", formalDefinition="Business identifier associated with the detected issue record." )
848    protected List<Identifier> identifier;
849
850    /**
851     * Indicates the status of the detected issue.
852     */
853    @Child(name = "status", type = {CodeType.class}, order=1, min=1, max=1, modifier=true, summary=true)
854    @Description(shortDefinition="preliminary | final | entered-in-error | mitigated", formalDefinition="Indicates the status of the detected issue." )
855    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/detectedissue-status")
856    protected Enumeration<DetectedIssueStatus> status;
857
858    /**
859     * A code that classifies the general type of detected issue.
860     */
861    @Child(name = "category", type = {CodeableConcept.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
862    @Description(shortDefinition="Type of detected issue, e.g. drug-drug, duplicate therapy, etc.", formalDefinition="A code that classifies the general type of detected issue." )
863    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/detectedissue-category")
864    protected List<CodeableConcept> category;
865
866    /**
867     * Identifies the specific type of issue identified.
868     */
869    @Child(name = "code", type = {CodeableConcept.class}, order=3, min=0, max=1, modifier=false, summary=true)
870    @Description(shortDefinition="Specific type of detected issue, e.g. drug-drug, duplicate therapy, etc.", formalDefinition="Identifies the specific type of issue identified." )
871    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/detectedissue-category")
872    protected CodeableConcept code;
873
874    /**
875     * Indicates the degree of importance associated with the identified issue based on the potential impact on the patient.
876     */
877    @Child(name = "severity", type = {CodeType.class}, order=4, min=0, max=1, modifier=false, summary=true)
878    @Description(shortDefinition="high | moderate | low", formalDefinition="Indicates the degree of importance associated with the identified issue based on the potential impact on the patient." )
879    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/detectedissue-severity")
880    protected Enumeration<DetectedIssueSeverity> severity;
881
882    /**
883     * Indicates the subject whose record the detected issue is associated with.
884     */
885    @Child(name = "subject", type = {Patient.class, Group.class, Device.class, Location.class, Organization.class, Procedure.class, Practitioner.class, Medication.class, Substance.class, BiologicallyDerivedProduct.class, NutritionProduct.class}, order=5, min=0, max=1, modifier=false, summary=true)
886    @Description(shortDefinition="Associated subject", formalDefinition="Indicates the subject whose record the detected issue is associated with." )
887    protected Reference subject;
888
889    /**
890     * The date or period when the detected issue was initially identified.
891     */
892    @Child(name = "identified", type = {DateTimeType.class, Period.class}, order=6, min=0, max=1, modifier=false, summary=true)
893    @Description(shortDefinition="When identified", formalDefinition="The date or period when the detected issue was initially identified." )
894    protected DataType identified;
895
896    /**
897     * Individual or device responsible for the issue being raised.  For example, a decision support application or a pharmacist conducting a medication review.
898     */
899    @Child(name = "author", type = {Patient.class, RelatedPerson.class, Practitioner.class, PractitionerRole.class, Device.class}, order=7, min=0, max=1, modifier=false, summary=true)
900    @Description(shortDefinition="The provider or device that identified the issue", formalDefinition="Individual or device responsible for the issue being raised.  For example, a decision support application or a pharmacist conducting a medication review." )
901    protected Reference author;
902
903    /**
904     * Indicates the resource representing the current activity or proposed activity that is potentially problematic.
905     */
906    @Child(name = "implicated", type = {Reference.class}, order=8, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
907    @Description(shortDefinition="Problem resource", formalDefinition="Indicates the resource representing the current activity or proposed activity that is potentially problematic." )
908    protected List<Reference> implicated;
909
910    /**
911     * Supporting evidence or manifestations that provide the basis for identifying the detected issue such as a GuidanceResponse or MeasureReport.
912     */
913    @Child(name = "evidence", type = {}, order=9, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
914    @Description(shortDefinition="Supporting evidence", formalDefinition="Supporting evidence or manifestations that provide the basis for identifying the detected issue such as a GuidanceResponse or MeasureReport." )
915    protected List<DetectedIssueEvidenceComponent> evidence;
916
917    /**
918     * A textual explanation of the detected issue.
919     */
920    @Child(name = "detail", type = {StringType.class}, order=10, min=0, max=1, modifier=false, summary=false)
921    @Description(shortDefinition="Description and context", formalDefinition="A textual explanation of the detected issue." )
922    protected StringType detail;
923
924    /**
925     * The literature, knowledge-base or similar reference that describes the propensity for the detected issue identified.
926     */
927    @Child(name = "reference", type = {UriType.class}, order=11, min=0, max=1, modifier=false, summary=false)
928    @Description(shortDefinition="Authority for issue", formalDefinition="The literature, knowledge-base or similar reference that describes the propensity for the detected issue identified." )
929    protected UriType reference;
930
931    /**
932     * Indicates an action that has been taken or is committed to reduce or eliminate the likelihood of the risk identified by the detected issue from manifesting.  Can also reflect an observation of known mitigating factors that may reduce/eliminate the need for any action.
933     */
934    @Child(name = "mitigation", type = {}, order=12, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
935    @Description(shortDefinition="Step taken to address", formalDefinition="Indicates an action that has been taken or is committed to reduce or eliminate the likelihood of the risk identified by the detected issue from manifesting.  Can also reflect an observation of known mitigating factors that may reduce/eliminate the need for any action." )
936    protected List<DetectedIssueMitigationComponent> mitigation;
937
938    private static final long serialVersionUID = -101003859L;
939
940  /**
941   * Constructor
942   */
943    public DetectedIssue() {
944      super();
945    }
946
947  /**
948   * Constructor
949   */
950    public DetectedIssue(DetectedIssueStatus status) {
951      super();
952      this.setStatus(status);
953    }
954
955    /**
956     * @return {@link #identifier} (Business identifier associated with the detected issue record.)
957     */
958    public List<Identifier> getIdentifier() { 
959      if (this.identifier == null)
960        this.identifier = new ArrayList<Identifier>();
961      return this.identifier;
962    }
963
964    /**
965     * @return Returns a reference to <code>this</code> for easy method chaining
966     */
967    public DetectedIssue setIdentifier(List<Identifier> theIdentifier) { 
968      this.identifier = theIdentifier;
969      return this;
970    }
971
972    public boolean hasIdentifier() { 
973      if (this.identifier == null)
974        return false;
975      for (Identifier item : this.identifier)
976        if (!item.isEmpty())
977          return true;
978      return false;
979    }
980
981    public Identifier addIdentifier() { //3
982      Identifier t = new Identifier();
983      if (this.identifier == null)
984        this.identifier = new ArrayList<Identifier>();
985      this.identifier.add(t);
986      return t;
987    }
988
989    public DetectedIssue addIdentifier(Identifier t) { //3
990      if (t == null)
991        return this;
992      if (this.identifier == null)
993        this.identifier = new ArrayList<Identifier>();
994      this.identifier.add(t);
995      return this;
996    }
997
998    /**
999     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {3}
1000     */
1001    public Identifier getIdentifierFirstRep() { 
1002      if (getIdentifier().isEmpty()) {
1003        addIdentifier();
1004      }
1005      return getIdentifier().get(0);
1006    }
1007
1008    /**
1009     * @return {@link #status} (Indicates the status of the detected issue.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
1010     */
1011    public Enumeration<DetectedIssueStatus> getStatusElement() { 
1012      if (this.status == null)
1013        if (Configuration.errorOnAutoCreate())
1014          throw new Error("Attempt to auto-create DetectedIssue.status");
1015        else if (Configuration.doAutoCreate())
1016          this.status = new Enumeration<DetectedIssueStatus>(new DetectedIssueStatusEnumFactory()); // bb
1017      return this.status;
1018    }
1019
1020    public boolean hasStatusElement() { 
1021      return this.status != null && !this.status.isEmpty();
1022    }
1023
1024    public boolean hasStatus() { 
1025      return this.status != null && !this.status.isEmpty();
1026    }
1027
1028    /**
1029     * @param value {@link #status} (Indicates the status of the detected issue.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
1030     */
1031    public DetectedIssue setStatusElement(Enumeration<DetectedIssueStatus> value) { 
1032      this.status = value;
1033      return this;
1034    }
1035
1036    /**
1037     * @return Indicates the status of the detected issue.
1038     */
1039    public DetectedIssueStatus getStatus() { 
1040      return this.status == null ? null : this.status.getValue();
1041    }
1042
1043    /**
1044     * @param value Indicates the status of the detected issue.
1045     */
1046    public DetectedIssue setStatus(DetectedIssueStatus value) { 
1047        if (this.status == null)
1048          this.status = new Enumeration<DetectedIssueStatus>(new DetectedIssueStatusEnumFactory());
1049        this.status.setValue(value);
1050      return this;
1051    }
1052
1053    /**
1054     * @return {@link #category} (A code that classifies the general type of detected issue.)
1055     */
1056    public List<CodeableConcept> getCategory() { 
1057      if (this.category == null)
1058        this.category = new ArrayList<CodeableConcept>();
1059      return this.category;
1060    }
1061
1062    /**
1063     * @return Returns a reference to <code>this</code> for easy method chaining
1064     */
1065    public DetectedIssue setCategory(List<CodeableConcept> theCategory) { 
1066      this.category = theCategory;
1067      return this;
1068    }
1069
1070    public boolean hasCategory() { 
1071      if (this.category == null)
1072        return false;
1073      for (CodeableConcept item : this.category)
1074        if (!item.isEmpty())
1075          return true;
1076      return false;
1077    }
1078
1079    public CodeableConcept addCategory() { //3
1080      CodeableConcept t = new CodeableConcept();
1081      if (this.category == null)
1082        this.category = new ArrayList<CodeableConcept>();
1083      this.category.add(t);
1084      return t;
1085    }
1086
1087    public DetectedIssue addCategory(CodeableConcept t) { //3
1088      if (t == null)
1089        return this;
1090      if (this.category == null)
1091        this.category = new ArrayList<CodeableConcept>();
1092      this.category.add(t);
1093      return this;
1094    }
1095
1096    /**
1097     * @return The first repetition of repeating field {@link #category}, creating it if it does not already exist {3}
1098     */
1099    public CodeableConcept getCategoryFirstRep() { 
1100      if (getCategory().isEmpty()) {
1101        addCategory();
1102      }
1103      return getCategory().get(0);
1104    }
1105
1106    /**
1107     * @return {@link #code} (Identifies the specific type of issue identified.)
1108     */
1109    public CodeableConcept getCode() { 
1110      if (this.code == null)
1111        if (Configuration.errorOnAutoCreate())
1112          throw new Error("Attempt to auto-create DetectedIssue.code");
1113        else if (Configuration.doAutoCreate())
1114          this.code = new CodeableConcept(); // cc
1115      return this.code;
1116    }
1117
1118    public boolean hasCode() { 
1119      return this.code != null && !this.code.isEmpty();
1120    }
1121
1122    /**
1123     * @param value {@link #code} (Identifies the specific type of issue identified.)
1124     */
1125    public DetectedIssue setCode(CodeableConcept value) { 
1126      this.code = value;
1127      return this;
1128    }
1129
1130    /**
1131     * @return {@link #severity} (Indicates the degree of importance associated with the identified issue based on the potential impact on the patient.). This is the underlying object with id, value and extensions. The accessor "getSeverity" gives direct access to the value
1132     */
1133    public Enumeration<DetectedIssueSeverity> getSeverityElement() { 
1134      if (this.severity == null)
1135        if (Configuration.errorOnAutoCreate())
1136          throw new Error("Attempt to auto-create DetectedIssue.severity");
1137        else if (Configuration.doAutoCreate())
1138          this.severity = new Enumeration<DetectedIssueSeverity>(new DetectedIssueSeverityEnumFactory()); // bb
1139      return this.severity;
1140    }
1141
1142    public boolean hasSeverityElement() { 
1143      return this.severity != null && !this.severity.isEmpty();
1144    }
1145
1146    public boolean hasSeverity() { 
1147      return this.severity != null && !this.severity.isEmpty();
1148    }
1149
1150    /**
1151     * @param value {@link #severity} (Indicates the degree of importance associated with the identified issue based on the potential impact on the patient.). This is the underlying object with id, value and extensions. The accessor "getSeverity" gives direct access to the value
1152     */
1153    public DetectedIssue setSeverityElement(Enumeration<DetectedIssueSeverity> value) { 
1154      this.severity = value;
1155      return this;
1156    }
1157
1158    /**
1159     * @return Indicates the degree of importance associated with the identified issue based on the potential impact on the patient.
1160     */
1161    public DetectedIssueSeverity getSeverity() { 
1162      return this.severity == null ? null : this.severity.getValue();
1163    }
1164
1165    /**
1166     * @param value Indicates the degree of importance associated with the identified issue based on the potential impact on the patient.
1167     */
1168    public DetectedIssue setSeverity(DetectedIssueSeverity value) { 
1169      if (value == null)
1170        this.severity = null;
1171      else {
1172        if (this.severity == null)
1173          this.severity = new Enumeration<DetectedIssueSeverity>(new DetectedIssueSeverityEnumFactory());
1174        this.severity.setValue(value);
1175      }
1176      return this;
1177    }
1178
1179    /**
1180     * @return {@link #subject} (Indicates the subject whose record the detected issue is associated with.)
1181     */
1182    public Reference getSubject() { 
1183      if (this.subject == null)
1184        if (Configuration.errorOnAutoCreate())
1185          throw new Error("Attempt to auto-create DetectedIssue.subject");
1186        else if (Configuration.doAutoCreate())
1187          this.subject = new Reference(); // cc
1188      return this.subject;
1189    }
1190
1191    public boolean hasSubject() { 
1192      return this.subject != null && !this.subject.isEmpty();
1193    }
1194
1195    /**
1196     * @param value {@link #subject} (Indicates the subject whose record the detected issue is associated with.)
1197     */
1198    public DetectedIssue setSubject(Reference value) { 
1199      this.subject = value;
1200      return this;
1201    }
1202
1203    /**
1204     * @return {@link #identified} (The date or period when the detected issue was initially identified.)
1205     */
1206    public DataType getIdentified() { 
1207      return this.identified;
1208    }
1209
1210    /**
1211     * @return {@link #identified} (The date or period when the detected issue was initially identified.)
1212     */
1213    public DateTimeType getIdentifiedDateTimeType() throws FHIRException { 
1214      if (this.identified == null)
1215        this.identified = new DateTimeType();
1216      if (!(this.identified instanceof DateTimeType))
1217        throw new FHIRException("Type mismatch: the type DateTimeType was expected, but "+this.identified.getClass().getName()+" was encountered");
1218      return (DateTimeType) this.identified;
1219    }
1220
1221    public boolean hasIdentifiedDateTimeType() { 
1222      return this != null && this.identified instanceof DateTimeType;
1223    }
1224
1225    /**
1226     * @return {@link #identified} (The date or period when the detected issue was initially identified.)
1227     */
1228    public Period getIdentifiedPeriod() throws FHIRException { 
1229      if (this.identified == null)
1230        this.identified = new Period();
1231      if (!(this.identified instanceof Period))
1232        throw new FHIRException("Type mismatch: the type Period was expected, but "+this.identified.getClass().getName()+" was encountered");
1233      return (Period) this.identified;
1234    }
1235
1236    public boolean hasIdentifiedPeriod() { 
1237      return this != null && this.identified instanceof Period;
1238    }
1239
1240    public boolean hasIdentified() { 
1241      return this.identified != null && !this.identified.isEmpty();
1242    }
1243
1244    /**
1245     * @param value {@link #identified} (The date or period when the detected issue was initially identified.)
1246     */
1247    public DetectedIssue setIdentified(DataType value) { 
1248      if (value != null && !(value instanceof DateTimeType || value instanceof Period))
1249        throw new Error("Not the right type for DetectedIssue.identified[x]: "+value.fhirType());
1250      this.identified = value;
1251      return this;
1252    }
1253
1254    /**
1255     * @return {@link #author} (Individual or device responsible for the issue being raised.  For example, a decision support application or a pharmacist conducting a medication review.)
1256     */
1257    public Reference getAuthor() { 
1258      if (this.author == null)
1259        if (Configuration.errorOnAutoCreate())
1260          throw new Error("Attempt to auto-create DetectedIssue.author");
1261        else if (Configuration.doAutoCreate())
1262          this.author = new Reference(); // cc
1263      return this.author;
1264    }
1265
1266    public boolean hasAuthor() { 
1267      return this.author != null && !this.author.isEmpty();
1268    }
1269
1270    /**
1271     * @param value {@link #author} (Individual or device responsible for the issue being raised.  For example, a decision support application or a pharmacist conducting a medication review.)
1272     */
1273    public DetectedIssue setAuthor(Reference value) { 
1274      this.author = value;
1275      return this;
1276    }
1277
1278    /**
1279     * @return {@link #implicated} (Indicates the resource representing the current activity or proposed activity that is potentially problematic.)
1280     */
1281    public List<Reference> getImplicated() { 
1282      if (this.implicated == null)
1283        this.implicated = new ArrayList<Reference>();
1284      return this.implicated;
1285    }
1286
1287    /**
1288     * @return Returns a reference to <code>this</code> for easy method chaining
1289     */
1290    public DetectedIssue setImplicated(List<Reference> theImplicated) { 
1291      this.implicated = theImplicated;
1292      return this;
1293    }
1294
1295    public boolean hasImplicated() { 
1296      if (this.implicated == null)
1297        return false;
1298      for (Reference item : this.implicated)
1299        if (!item.isEmpty())
1300          return true;
1301      return false;
1302    }
1303
1304    public Reference addImplicated() { //3
1305      Reference t = new Reference();
1306      if (this.implicated == null)
1307        this.implicated = new ArrayList<Reference>();
1308      this.implicated.add(t);
1309      return t;
1310    }
1311
1312    public DetectedIssue addImplicated(Reference t) { //3
1313      if (t == null)
1314        return this;
1315      if (this.implicated == null)
1316        this.implicated = new ArrayList<Reference>();
1317      this.implicated.add(t);
1318      return this;
1319    }
1320
1321    /**
1322     * @return The first repetition of repeating field {@link #implicated}, creating it if it does not already exist {3}
1323     */
1324    public Reference getImplicatedFirstRep() { 
1325      if (getImplicated().isEmpty()) {
1326        addImplicated();
1327      }
1328      return getImplicated().get(0);
1329    }
1330
1331    /**
1332     * @return {@link #evidence} (Supporting evidence or manifestations that provide the basis for identifying the detected issue such as a GuidanceResponse or MeasureReport.)
1333     */
1334    public List<DetectedIssueEvidenceComponent> getEvidence() { 
1335      if (this.evidence == null)
1336        this.evidence = new ArrayList<DetectedIssueEvidenceComponent>();
1337      return this.evidence;
1338    }
1339
1340    /**
1341     * @return Returns a reference to <code>this</code> for easy method chaining
1342     */
1343    public DetectedIssue setEvidence(List<DetectedIssueEvidenceComponent> theEvidence) { 
1344      this.evidence = theEvidence;
1345      return this;
1346    }
1347
1348    public boolean hasEvidence() { 
1349      if (this.evidence == null)
1350        return false;
1351      for (DetectedIssueEvidenceComponent item : this.evidence)
1352        if (!item.isEmpty())
1353          return true;
1354      return false;
1355    }
1356
1357    public DetectedIssueEvidenceComponent addEvidence() { //3
1358      DetectedIssueEvidenceComponent t = new DetectedIssueEvidenceComponent();
1359      if (this.evidence == null)
1360        this.evidence = new ArrayList<DetectedIssueEvidenceComponent>();
1361      this.evidence.add(t);
1362      return t;
1363    }
1364
1365    public DetectedIssue addEvidence(DetectedIssueEvidenceComponent t) { //3
1366      if (t == null)
1367        return this;
1368      if (this.evidence == null)
1369        this.evidence = new ArrayList<DetectedIssueEvidenceComponent>();
1370      this.evidence.add(t);
1371      return this;
1372    }
1373
1374    /**
1375     * @return The first repetition of repeating field {@link #evidence}, creating it if it does not already exist {3}
1376     */
1377    public DetectedIssueEvidenceComponent getEvidenceFirstRep() { 
1378      if (getEvidence().isEmpty()) {
1379        addEvidence();
1380      }
1381      return getEvidence().get(0);
1382    }
1383
1384    /**
1385     * @return {@link #detail} (A textual explanation of the detected issue.). This is the underlying object with id, value and extensions. The accessor "getDetail" gives direct access to the value
1386     */
1387    public StringType getDetailElement() { 
1388      if (this.detail == null)
1389        if (Configuration.errorOnAutoCreate())
1390          throw new Error("Attempt to auto-create DetectedIssue.detail");
1391        else if (Configuration.doAutoCreate())
1392          this.detail = new StringType(); // bb
1393      return this.detail;
1394    }
1395
1396    public boolean hasDetailElement() { 
1397      return this.detail != null && !this.detail.isEmpty();
1398    }
1399
1400    public boolean hasDetail() { 
1401      return this.detail != null && !this.detail.isEmpty();
1402    }
1403
1404    /**
1405     * @param value {@link #detail} (A textual explanation of the detected issue.). This is the underlying object with id, value and extensions. The accessor "getDetail" gives direct access to the value
1406     */
1407    public DetectedIssue setDetailElement(StringType value) { 
1408      this.detail = value;
1409      return this;
1410    }
1411
1412    /**
1413     * @return A textual explanation of the detected issue.
1414     */
1415    public String getDetail() { 
1416      return this.detail == null ? null : this.detail.getValue();
1417    }
1418
1419    /**
1420     * @param value A textual explanation of the detected issue.
1421     */
1422    public DetectedIssue setDetail(String value) { 
1423      if (Utilities.noString(value))
1424        this.detail = null;
1425      else {
1426        if (this.detail == null)
1427          this.detail = new StringType();
1428        this.detail.setValue(value);
1429      }
1430      return this;
1431    }
1432
1433    /**
1434     * @return {@link #reference} (The literature, knowledge-base or similar reference that describes the propensity for the detected issue identified.). This is the underlying object with id, value and extensions. The accessor "getReference" gives direct access to the value
1435     */
1436    public UriType getReferenceElement() { 
1437      if (this.reference == null)
1438        if (Configuration.errorOnAutoCreate())
1439          throw new Error("Attempt to auto-create DetectedIssue.reference");
1440        else if (Configuration.doAutoCreate())
1441          this.reference = new UriType(); // bb
1442      return this.reference;
1443    }
1444
1445    public boolean hasReferenceElement() { 
1446      return this.reference != null && !this.reference.isEmpty();
1447    }
1448
1449    public boolean hasReference() { 
1450      return this.reference != null && !this.reference.isEmpty();
1451    }
1452
1453    /**
1454     * @param value {@link #reference} (The literature, knowledge-base or similar reference that describes the propensity for the detected issue identified.). This is the underlying object with id, value and extensions. The accessor "getReference" gives direct access to the value
1455     */
1456    public DetectedIssue setReferenceElement(UriType value) { 
1457      this.reference = value;
1458      return this;
1459    }
1460
1461    /**
1462     * @return The literature, knowledge-base or similar reference that describes the propensity for the detected issue identified.
1463     */
1464    public String getReference() { 
1465      return this.reference == null ? null : this.reference.getValue();
1466    }
1467
1468    /**
1469     * @param value The literature, knowledge-base or similar reference that describes the propensity for the detected issue identified.
1470     */
1471    public DetectedIssue setReference(String value) { 
1472      if (Utilities.noString(value))
1473        this.reference = null;
1474      else {
1475        if (this.reference == null)
1476          this.reference = new UriType();
1477        this.reference.setValue(value);
1478      }
1479      return this;
1480    }
1481
1482    /**
1483     * @return {@link #mitigation} (Indicates an action that has been taken or is committed to reduce or eliminate the likelihood of the risk identified by the detected issue from manifesting.  Can also reflect an observation of known mitigating factors that may reduce/eliminate the need for any action.)
1484     */
1485    public List<DetectedIssueMitigationComponent> getMitigation() { 
1486      if (this.mitigation == null)
1487        this.mitigation = new ArrayList<DetectedIssueMitigationComponent>();
1488      return this.mitigation;
1489    }
1490
1491    /**
1492     * @return Returns a reference to <code>this</code> for easy method chaining
1493     */
1494    public DetectedIssue setMitigation(List<DetectedIssueMitigationComponent> theMitigation) { 
1495      this.mitigation = theMitigation;
1496      return this;
1497    }
1498
1499    public boolean hasMitigation() { 
1500      if (this.mitigation == null)
1501        return false;
1502      for (DetectedIssueMitigationComponent item : this.mitigation)
1503        if (!item.isEmpty())
1504          return true;
1505      return false;
1506    }
1507
1508    public DetectedIssueMitigationComponent addMitigation() { //3
1509      DetectedIssueMitigationComponent t = new DetectedIssueMitigationComponent();
1510      if (this.mitigation == null)
1511        this.mitigation = new ArrayList<DetectedIssueMitigationComponent>();
1512      this.mitigation.add(t);
1513      return t;
1514    }
1515
1516    public DetectedIssue addMitigation(DetectedIssueMitigationComponent t) { //3
1517      if (t == null)
1518        return this;
1519      if (this.mitigation == null)
1520        this.mitigation = new ArrayList<DetectedIssueMitigationComponent>();
1521      this.mitigation.add(t);
1522      return this;
1523    }
1524
1525    /**
1526     * @return The first repetition of repeating field {@link #mitigation}, creating it if it does not already exist {3}
1527     */
1528    public DetectedIssueMitigationComponent getMitigationFirstRep() { 
1529      if (getMitigation().isEmpty()) {
1530        addMitigation();
1531      }
1532      return getMitigation().get(0);
1533    }
1534
1535      protected void listChildren(List<Property> children) {
1536        super.listChildren(children);
1537        children.add(new Property("identifier", "Identifier", "Business identifier associated with the detected issue record.", 0, java.lang.Integer.MAX_VALUE, identifier));
1538        children.add(new Property("status", "code", "Indicates the status of the detected issue.", 0, 1, status));
1539        children.add(new Property("category", "CodeableConcept", "A code that classifies the general type of detected issue.", 0, java.lang.Integer.MAX_VALUE, category));
1540        children.add(new Property("code", "CodeableConcept", "Identifies the specific type of issue identified.", 0, 1, code));
1541        children.add(new Property("severity", "code", "Indicates the degree of importance associated with the identified issue based on the potential impact on the patient.", 0, 1, severity));
1542        children.add(new Property("subject", "Reference(Patient|Group|Device|Location|Organization|Procedure|Practitioner|Medication|Substance|BiologicallyDerivedProduct|NutritionProduct)", "Indicates the subject whose record the detected issue is associated with.", 0, 1, subject));
1543        children.add(new Property("identified[x]", "dateTime|Period", "The date or period when the detected issue was initially identified.", 0, 1, identified));
1544        children.add(new Property("author", "Reference(Patient|RelatedPerson|Practitioner|PractitionerRole|Device)", "Individual or device responsible for the issue being raised.  For example, a decision support application or a pharmacist conducting a medication review.", 0, 1, author));
1545        children.add(new Property("implicated", "Reference(Any)", "Indicates the resource representing the current activity or proposed activity that is potentially problematic.", 0, java.lang.Integer.MAX_VALUE, implicated));
1546        children.add(new Property("evidence", "", "Supporting evidence or manifestations that provide the basis for identifying the detected issue such as a GuidanceResponse or MeasureReport.", 0, java.lang.Integer.MAX_VALUE, evidence));
1547        children.add(new Property("detail", "string", "A textual explanation of the detected issue.", 0, 1, detail));
1548        children.add(new Property("reference", "uri", "The literature, knowledge-base or similar reference that describes the propensity for the detected issue identified.", 0, 1, reference));
1549        children.add(new Property("mitigation", "", "Indicates an action that has been taken or is committed to reduce or eliminate the likelihood of the risk identified by the detected issue from manifesting.  Can also reflect an observation of known mitigating factors that may reduce/eliminate the need for any action.", 0, java.lang.Integer.MAX_VALUE, mitigation));
1550      }
1551
1552      @Override
1553      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1554        switch (_hash) {
1555        case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "Business identifier associated with the detected issue record.", 0, java.lang.Integer.MAX_VALUE, identifier);
1556        case -892481550: /*status*/  return new Property("status", "code", "Indicates the status of the detected issue.", 0, 1, status);
1557        case 50511102: /*category*/  return new Property("category", "CodeableConcept", "A code that classifies the general type of detected issue.", 0, java.lang.Integer.MAX_VALUE, category);
1558        case 3059181: /*code*/  return new Property("code", "CodeableConcept", "Identifies the specific type of issue identified.", 0, 1, code);
1559        case 1478300413: /*severity*/  return new Property("severity", "code", "Indicates the degree of importance associated with the identified issue based on the potential impact on the patient.", 0, 1, severity);
1560        case -1867885268: /*subject*/  return new Property("subject", "Reference(Patient|Group|Device|Location|Organization|Procedure|Practitioner|Medication|Substance|BiologicallyDerivedProduct|NutritionProduct)", "Indicates the subject whose record the detected issue is associated with.", 0, 1, subject);
1561        case 569355781: /*identified[x]*/  return new Property("identified[x]", "dateTime|Period", "The date or period when the detected issue was initially identified.", 0, 1, identified);
1562        case -1618432869: /*identified*/  return new Property("identified[x]", "dateTime|Period", "The date or period when the detected issue was initially identified.", 0, 1, identified);
1563        case -968788650: /*identifiedDateTime*/  return new Property("identified[x]", "dateTime", "The date or period when the detected issue was initially identified.", 0, 1, identified);
1564        case 520482364: /*identifiedPeriod*/  return new Property("identified[x]", "Period", "The date or period when the detected issue was initially identified.", 0, 1, identified);
1565        case -1406328437: /*author*/  return new Property("author", "Reference(Patient|RelatedPerson|Practitioner|PractitionerRole|Device)", "Individual or device responsible for the issue being raised.  For example, a decision support application or a pharmacist conducting a medication review.", 0, 1, author);
1566        case -810216884: /*implicated*/  return new Property("implicated", "Reference(Any)", "Indicates the resource representing the current activity or proposed activity that is potentially problematic.", 0, java.lang.Integer.MAX_VALUE, implicated);
1567        case 382967383: /*evidence*/  return new Property("evidence", "", "Supporting evidence or manifestations that provide the basis for identifying the detected issue such as a GuidanceResponse or MeasureReport.", 0, java.lang.Integer.MAX_VALUE, evidence);
1568        case -1335224239: /*detail*/  return new Property("detail", "string", "A textual explanation of the detected issue.", 0, 1, detail);
1569        case -925155509: /*reference*/  return new Property("reference", "uri", "The literature, knowledge-base or similar reference that describes the propensity for the detected issue identified.", 0, 1, reference);
1570        case 1293793087: /*mitigation*/  return new Property("mitigation", "", "Indicates an action that has been taken or is committed to reduce or eliminate the likelihood of the risk identified by the detected issue from manifesting.  Can also reflect an observation of known mitigating factors that may reduce/eliminate the need for any action.", 0, java.lang.Integer.MAX_VALUE, mitigation);
1571        default: return super.getNamedProperty(_hash, _name, _checkValid);
1572        }
1573
1574      }
1575
1576      @Override
1577      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1578        switch (hash) {
1579        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
1580        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<DetectedIssueStatus>
1581        case 50511102: /*category*/ return this.category == null ? new Base[0] : this.category.toArray(new Base[this.category.size()]); // CodeableConcept
1582        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // CodeableConcept
1583        case 1478300413: /*severity*/ return this.severity == null ? new Base[0] : new Base[] {this.severity}; // Enumeration<DetectedIssueSeverity>
1584        case -1867885268: /*subject*/ return this.subject == null ? new Base[0] : new Base[] {this.subject}; // Reference
1585        case -1618432869: /*identified*/ return this.identified == null ? new Base[0] : new Base[] {this.identified}; // DataType
1586        case -1406328437: /*author*/ return this.author == null ? new Base[0] : new Base[] {this.author}; // Reference
1587        case -810216884: /*implicated*/ return this.implicated == null ? new Base[0] : this.implicated.toArray(new Base[this.implicated.size()]); // Reference
1588        case 382967383: /*evidence*/ return this.evidence == null ? new Base[0] : this.evidence.toArray(new Base[this.evidence.size()]); // DetectedIssueEvidenceComponent
1589        case -1335224239: /*detail*/ return this.detail == null ? new Base[0] : new Base[] {this.detail}; // StringType
1590        case -925155509: /*reference*/ return this.reference == null ? new Base[0] : new Base[] {this.reference}; // UriType
1591        case 1293793087: /*mitigation*/ return this.mitigation == null ? new Base[0] : this.mitigation.toArray(new Base[this.mitigation.size()]); // DetectedIssueMitigationComponent
1592        default: return super.getProperty(hash, name, checkValid);
1593        }
1594
1595      }
1596
1597      @Override
1598      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1599        switch (hash) {
1600        case -1618432855: // identifier
1601          this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier
1602          return value;
1603        case -892481550: // status
1604          value = new DetectedIssueStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
1605          this.status = (Enumeration) value; // Enumeration<DetectedIssueStatus>
1606          return value;
1607        case 50511102: // category
1608          this.getCategory().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
1609          return value;
1610        case 3059181: // code
1611          this.code = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1612          return value;
1613        case 1478300413: // severity
1614          value = new DetectedIssueSeverityEnumFactory().fromType(TypeConvertor.castToCode(value));
1615          this.severity = (Enumeration) value; // Enumeration<DetectedIssueSeverity>
1616          return value;
1617        case -1867885268: // subject
1618          this.subject = TypeConvertor.castToReference(value); // Reference
1619          return value;
1620        case -1618432869: // identified
1621          this.identified = TypeConvertor.castToType(value); // DataType
1622          return value;
1623        case -1406328437: // author
1624          this.author = TypeConvertor.castToReference(value); // Reference
1625          return value;
1626        case -810216884: // implicated
1627          this.getImplicated().add(TypeConvertor.castToReference(value)); // Reference
1628          return value;
1629        case 382967383: // evidence
1630          this.getEvidence().add((DetectedIssueEvidenceComponent) value); // DetectedIssueEvidenceComponent
1631          return value;
1632        case -1335224239: // detail
1633          this.detail = TypeConvertor.castToString(value); // StringType
1634          return value;
1635        case -925155509: // reference
1636          this.reference = TypeConvertor.castToUri(value); // UriType
1637          return value;
1638        case 1293793087: // mitigation
1639          this.getMitigation().add((DetectedIssueMitigationComponent) value); // DetectedIssueMitigationComponent
1640          return value;
1641        default: return super.setProperty(hash, name, value);
1642        }
1643
1644      }
1645
1646      @Override
1647      public Base setProperty(String name, Base value) throws FHIRException {
1648        if (name.equals("identifier")) {
1649          this.getIdentifier().add(TypeConvertor.castToIdentifier(value));
1650        } else if (name.equals("status")) {
1651          value = new DetectedIssueStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
1652          this.status = (Enumeration) value; // Enumeration<DetectedIssueStatus>
1653        } else if (name.equals("category")) {
1654          this.getCategory().add(TypeConvertor.castToCodeableConcept(value));
1655        } else if (name.equals("code")) {
1656          this.code = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1657        } else if (name.equals("severity")) {
1658          value = new DetectedIssueSeverityEnumFactory().fromType(TypeConvertor.castToCode(value));
1659          this.severity = (Enumeration) value; // Enumeration<DetectedIssueSeverity>
1660        } else if (name.equals("subject")) {
1661          this.subject = TypeConvertor.castToReference(value); // Reference
1662        } else if (name.equals("identified[x]")) {
1663          this.identified = TypeConvertor.castToType(value); // DataType
1664        } else if (name.equals("author")) {
1665          this.author = TypeConvertor.castToReference(value); // Reference
1666        } else if (name.equals("implicated")) {
1667          this.getImplicated().add(TypeConvertor.castToReference(value));
1668        } else if (name.equals("evidence")) {
1669          this.getEvidence().add((DetectedIssueEvidenceComponent) value);
1670        } else if (name.equals("detail")) {
1671          this.detail = TypeConvertor.castToString(value); // StringType
1672        } else if (name.equals("reference")) {
1673          this.reference = TypeConvertor.castToUri(value); // UriType
1674        } else if (name.equals("mitigation")) {
1675          this.getMitigation().add((DetectedIssueMitigationComponent) value);
1676        } else
1677          return super.setProperty(name, value);
1678        return value;
1679      }
1680
1681      @Override
1682      public Base makeProperty(int hash, String name) throws FHIRException {
1683        switch (hash) {
1684        case -1618432855:  return addIdentifier(); 
1685        case -892481550:  return getStatusElement();
1686        case 50511102:  return addCategory(); 
1687        case 3059181:  return getCode();
1688        case 1478300413:  return getSeverityElement();
1689        case -1867885268:  return getSubject();
1690        case 569355781:  return getIdentified();
1691        case -1618432869:  return getIdentified();
1692        case -1406328437:  return getAuthor();
1693        case -810216884:  return addImplicated(); 
1694        case 382967383:  return addEvidence(); 
1695        case -1335224239:  return getDetailElement();
1696        case -925155509:  return getReferenceElement();
1697        case 1293793087:  return addMitigation(); 
1698        default: return super.makeProperty(hash, name);
1699        }
1700
1701      }
1702
1703      @Override
1704      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1705        switch (hash) {
1706        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
1707        case -892481550: /*status*/ return new String[] {"code"};
1708        case 50511102: /*category*/ return new String[] {"CodeableConcept"};
1709        case 3059181: /*code*/ return new String[] {"CodeableConcept"};
1710        case 1478300413: /*severity*/ return new String[] {"code"};
1711        case -1867885268: /*subject*/ return new String[] {"Reference"};
1712        case -1618432869: /*identified*/ return new String[] {"dateTime", "Period"};
1713        case -1406328437: /*author*/ return new String[] {"Reference"};
1714        case -810216884: /*implicated*/ return new String[] {"Reference"};
1715        case 382967383: /*evidence*/ return new String[] {};
1716        case -1335224239: /*detail*/ return new String[] {"string"};
1717        case -925155509: /*reference*/ return new String[] {"uri"};
1718        case 1293793087: /*mitigation*/ return new String[] {};
1719        default: return super.getTypesForProperty(hash, name);
1720        }
1721
1722      }
1723
1724      @Override
1725      public Base addChild(String name) throws FHIRException {
1726        if (name.equals("identifier")) {
1727          return addIdentifier();
1728        }
1729        else if (name.equals("status")) {
1730          throw new FHIRException("Cannot call addChild on a primitive type DetectedIssue.status");
1731        }
1732        else if (name.equals("category")) {
1733          return addCategory();
1734        }
1735        else if (name.equals("code")) {
1736          this.code = new CodeableConcept();
1737          return this.code;
1738        }
1739        else if (name.equals("severity")) {
1740          throw new FHIRException("Cannot call addChild on a primitive type DetectedIssue.severity");
1741        }
1742        else if (name.equals("subject")) {
1743          this.subject = new Reference();
1744          return this.subject;
1745        }
1746        else if (name.equals("identifiedDateTime")) {
1747          this.identified = new DateTimeType();
1748          return this.identified;
1749        }
1750        else if (name.equals("identifiedPeriod")) {
1751          this.identified = new Period();
1752          return this.identified;
1753        }
1754        else if (name.equals("author")) {
1755          this.author = new Reference();
1756          return this.author;
1757        }
1758        else if (name.equals("implicated")) {
1759          return addImplicated();
1760        }
1761        else if (name.equals("evidence")) {
1762          return addEvidence();
1763        }
1764        else if (name.equals("detail")) {
1765          throw new FHIRException("Cannot call addChild on a primitive type DetectedIssue.detail");
1766        }
1767        else if (name.equals("reference")) {
1768          throw new FHIRException("Cannot call addChild on a primitive type DetectedIssue.reference");
1769        }
1770        else if (name.equals("mitigation")) {
1771          return addMitigation();
1772        }
1773        else
1774          return super.addChild(name);
1775      }
1776
1777  public String fhirType() {
1778    return "DetectedIssue";
1779
1780  }
1781
1782      public DetectedIssue copy() {
1783        DetectedIssue dst = new DetectedIssue();
1784        copyValues(dst);
1785        return dst;
1786      }
1787
1788      public void copyValues(DetectedIssue dst) {
1789        super.copyValues(dst);
1790        if (identifier != null) {
1791          dst.identifier = new ArrayList<Identifier>();
1792          for (Identifier i : identifier)
1793            dst.identifier.add(i.copy());
1794        };
1795        dst.status = status == null ? null : status.copy();
1796        if (category != null) {
1797          dst.category = new ArrayList<CodeableConcept>();
1798          for (CodeableConcept i : category)
1799            dst.category.add(i.copy());
1800        };
1801        dst.code = code == null ? null : code.copy();
1802        dst.severity = severity == null ? null : severity.copy();
1803        dst.subject = subject == null ? null : subject.copy();
1804        dst.identified = identified == null ? null : identified.copy();
1805        dst.author = author == null ? null : author.copy();
1806        if (implicated != null) {
1807          dst.implicated = new ArrayList<Reference>();
1808          for (Reference i : implicated)
1809            dst.implicated.add(i.copy());
1810        };
1811        if (evidence != null) {
1812          dst.evidence = new ArrayList<DetectedIssueEvidenceComponent>();
1813          for (DetectedIssueEvidenceComponent i : evidence)
1814            dst.evidence.add(i.copy());
1815        };
1816        dst.detail = detail == null ? null : detail.copy();
1817        dst.reference = reference == null ? null : reference.copy();
1818        if (mitigation != null) {
1819          dst.mitigation = new ArrayList<DetectedIssueMitigationComponent>();
1820          for (DetectedIssueMitigationComponent i : mitigation)
1821            dst.mitigation.add(i.copy());
1822        };
1823      }
1824
1825      protected DetectedIssue typedCopy() {
1826        return copy();
1827      }
1828
1829      @Override
1830      public boolean equalsDeep(Base other_) {
1831        if (!super.equalsDeep(other_))
1832          return false;
1833        if (!(other_ instanceof DetectedIssue))
1834          return false;
1835        DetectedIssue o = (DetectedIssue) other_;
1836        return compareDeep(identifier, o.identifier, true) && compareDeep(status, o.status, true) && compareDeep(category, o.category, true)
1837           && compareDeep(code, o.code, true) && compareDeep(severity, o.severity, true) && compareDeep(subject, o.subject, true)
1838           && compareDeep(identified, o.identified, true) && compareDeep(author, o.author, true) && compareDeep(implicated, o.implicated, true)
1839           && compareDeep(evidence, o.evidence, true) && compareDeep(detail, o.detail, true) && compareDeep(reference, o.reference, true)
1840           && compareDeep(mitigation, o.mitigation, true);
1841      }
1842
1843      @Override
1844      public boolean equalsShallow(Base other_) {
1845        if (!super.equalsShallow(other_))
1846          return false;
1847        if (!(other_ instanceof DetectedIssue))
1848          return false;
1849        DetectedIssue o = (DetectedIssue) other_;
1850        return compareValues(status, o.status, true) && compareValues(severity, o.severity, true) && compareValues(detail, o.detail, true)
1851           && compareValues(reference, o.reference, true);
1852      }
1853
1854      public boolean isEmpty() {
1855        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, status, category
1856          , code, severity, subject, identified, author, implicated, evidence, detail
1857          , reference, mitigation);
1858      }
1859
1860  @Override
1861  public ResourceType getResourceType() {
1862    return ResourceType.DetectedIssue;
1863   }
1864
1865 /**
1866   * Search parameter: <b>author</b>
1867   * <p>
1868   * Description: <b>The provider or device that identified the issue</b><br>
1869   * Type: <b>reference</b><br>
1870   * Path: <b>DetectedIssue.author</b><br>
1871   * </p>
1872   */
1873  @SearchParamDefinition(name="author", path="DetectedIssue.author", description="The provider or device that identified the issue", 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 Practitioner") }, target={Device.class, Patient.class, Practitioner.class, PractitionerRole.class, RelatedPerson.class } )
1874  public static final String SP_AUTHOR = "author";
1875 /**
1876   * <b>Fluent Client</b> search parameter constant for <b>author</b>
1877   * <p>
1878   * Description: <b>The provider or device that identified the issue</b><br>
1879   * Type: <b>reference</b><br>
1880   * Path: <b>DetectedIssue.author</b><br>
1881   * </p>
1882   */
1883  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam AUTHOR = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_AUTHOR);
1884
1885/**
1886   * Constant for fluent queries to be used to add include statements. Specifies
1887   * the path value of "<b>DetectedIssue:author</b>".
1888   */
1889  public static final ca.uhn.fhir.model.api.Include INCLUDE_AUTHOR = new ca.uhn.fhir.model.api.Include("DetectedIssue:author").toLocked();
1890
1891 /**
1892   * Search parameter: <b>category</b>
1893   * <p>
1894   * Description: <b>Issue Category, e.g. drug-drug, duplicate therapy, etc.</b><br>
1895   * Type: <b>token</b><br>
1896   * Path: <b>DetectedIssue.category</b><br>
1897   * </p>
1898   */
1899  @SearchParamDefinition(name="category", path="DetectedIssue.category", description="Issue Category, e.g. drug-drug, duplicate therapy, etc.", type="token" )
1900  public static final String SP_CATEGORY = "category";
1901 /**
1902   * <b>Fluent Client</b> search parameter constant for <b>category</b>
1903   * <p>
1904   * Description: <b>Issue Category, e.g. drug-drug, duplicate therapy, etc.</b><br>
1905   * Type: <b>token</b><br>
1906   * Path: <b>DetectedIssue.category</b><br>
1907   * </p>
1908   */
1909  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CATEGORY = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CATEGORY);
1910
1911 /**
1912   * Search parameter: <b>code</b>
1913   * <p>
1914   * Description: <b>Issue Type, e.g. drug-drug, duplicate therapy, etc.</b><br>
1915   * Type: <b>token</b><br>
1916   * Path: <b>DetectedIssue.code</b><br>
1917   * </p>
1918   */
1919  @SearchParamDefinition(name="code", path="DetectedIssue.code", description="Issue Type, e.g. drug-drug, duplicate therapy, etc.", type="token" )
1920  public static final String SP_CODE = "code";
1921 /**
1922   * <b>Fluent Client</b> search parameter constant for <b>code</b>
1923   * <p>
1924   * Description: <b>Issue Type, e.g. drug-drug, duplicate therapy, etc.</b><br>
1925   * Type: <b>token</b><br>
1926   * Path: <b>DetectedIssue.code</b><br>
1927   * </p>
1928   */
1929  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CODE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CODE);
1930
1931 /**
1932   * Search parameter: <b>identified</b>
1933   * <p>
1934   * Description: <b>When identified</b><br>
1935   * Type: <b>date</b><br>
1936   * Path: <b>DetectedIssue.identified</b><br>
1937   * </p>
1938   */
1939  @SearchParamDefinition(name="identified", path="DetectedIssue.identified", description="When identified", type="date" )
1940  public static final String SP_IDENTIFIED = "identified";
1941 /**
1942   * <b>Fluent Client</b> search parameter constant for <b>identified</b>
1943   * <p>
1944   * Description: <b>When identified</b><br>
1945   * Type: <b>date</b><br>
1946   * Path: <b>DetectedIssue.identified</b><br>
1947   * </p>
1948   */
1949  public static final ca.uhn.fhir.rest.gclient.DateClientParam IDENTIFIED = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_IDENTIFIED);
1950
1951 /**
1952   * Search parameter: <b>implicated</b>
1953   * <p>
1954   * Description: <b>Problem resource</b><br>
1955   * Type: <b>reference</b><br>
1956   * Path: <b>DetectedIssue.implicated</b><br>
1957   * </p>
1958   */
1959  @SearchParamDefinition(name="implicated", path="DetectedIssue.implicated", description="Problem resource", type="reference", target={Account.class, ActivityDefinition.class, ActorDefinition.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, CarePlan.class, CareTeam.class, ChargeItem.class, ChargeItemDefinition.class, Citation.class, Claim.class, ClaimResponse.class, ClinicalImpression.class, ClinicalUseDefinition.class, CodeSystem.class, Communication.class, CommunicationRequest.class, CompartmentDefinition.class, Composition.class, ConceptMap.class, Condition.class, 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, FormularyItem.class, GenomicStudy.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, RequestOrchestration.class, Requirements.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, Transport.class, ValueSet.class, VerificationResult.class, VisionPrescription.class } )
1960  public static final String SP_IMPLICATED = "implicated";
1961 /**
1962   * <b>Fluent Client</b> search parameter constant for <b>implicated</b>
1963   * <p>
1964   * Description: <b>Problem resource</b><br>
1965   * Type: <b>reference</b><br>
1966   * Path: <b>DetectedIssue.implicated</b><br>
1967   * </p>
1968   */
1969  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam IMPLICATED = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_IMPLICATED);
1970
1971/**
1972   * Constant for fluent queries to be used to add include statements. Specifies
1973   * the path value of "<b>DetectedIssue:implicated</b>".
1974   */
1975  public static final ca.uhn.fhir.model.api.Include INCLUDE_IMPLICATED = new ca.uhn.fhir.model.api.Include("DetectedIssue:implicated").toLocked();
1976
1977 /**
1978   * Search parameter: <b>status</b>
1979   * <p>
1980   * Description: <b>The status of the issue</b><br>
1981   * Type: <b>token</b><br>
1982   * Path: <b>DetectedIssue.status</b><br>
1983   * </p>
1984   */
1985  @SearchParamDefinition(name="status", path="DetectedIssue.status", description="The status of the issue", type="token" )
1986  public static final String SP_STATUS = "status";
1987 /**
1988   * <b>Fluent Client</b> search parameter constant for <b>status</b>
1989   * <p>
1990   * Description: <b>The status of the issue</b><br>
1991   * Type: <b>token</b><br>
1992   * Path: <b>DetectedIssue.status</b><br>
1993   * </p>
1994   */
1995  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
1996
1997 /**
1998   * Search parameter: <b>subject</b>
1999   * <p>
2000   * Description: <b>Associated subject</b><br>
2001   * Type: <b>reference</b><br>
2002   * Path: <b>DetectedIssue.subject</b><br>
2003   * </p>
2004   */
2005  @SearchParamDefinition(name="subject", path="DetectedIssue.subject", description="Associated subject", type="reference", target={BiologicallyDerivedProduct.class, Device.class, Group.class, Location.class, Medication.class, NutritionProduct.class, Organization.class, Patient.class, Practitioner.class, Procedure.class, Substance.class } )
2006  public static final String SP_SUBJECT = "subject";
2007 /**
2008   * <b>Fluent Client</b> search parameter constant for <b>subject</b>
2009   * <p>
2010   * Description: <b>Associated subject</b><br>
2011   * Type: <b>reference</b><br>
2012   * Path: <b>DetectedIssue.subject</b><br>
2013   * </p>
2014   */
2015  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SUBJECT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SUBJECT);
2016
2017/**
2018   * Constant for fluent queries to be used to add include statements. Specifies
2019   * the path value of "<b>DetectedIssue:subject</b>".
2020   */
2021  public static final ca.uhn.fhir.model.api.Include INCLUDE_SUBJECT = new ca.uhn.fhir.model.api.Include("DetectedIssue:subject").toLocked();
2022
2023 /**
2024   * Search parameter: <b>identifier</b>
2025   * <p>
2026   * Description: <b>Multiple Resources: 
2027
2028* [AllergyIntolerance](allergyintolerance.html): External ids for this item
2029* [CarePlan](careplan.html): External Ids for this plan
2030* [CareTeam](careteam.html): External Ids for this team
2031* [Composition](composition.html): Version-independent identifier for the Composition
2032* [Condition](condition.html): A unique identifier of the condition record
2033* [Consent](consent.html): Identifier for this record (external references)
2034* [DetectedIssue](detectedissue.html): Unique id for the detected issue
2035* [DeviceRequest](devicerequest.html): Business identifier for request/order
2036* [DiagnosticReport](diagnosticreport.html): An identifier for the report
2037* [DocumentManifest](documentmanifest.html): Unique Identifier for the set of documents
2038* [DocumentReference](documentreference.html): Identifier of the attachment binary
2039* [Encounter](encounter.html): Identifier(s) by which this encounter is known
2040* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare
2041* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier
2042* [Goal](goal.html): External Ids for this goal
2043* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID
2044* [Immunization](immunization.html): Business identifier
2045* [List](list.html): Business identifier
2046* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier
2047* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier
2048* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier
2049* [MedicationUsage](medicationusage.html): Return statements with this external identifier
2050* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier
2051* [Observation](observation.html): The unique id for a particular observation
2052* [Procedure](procedure.html): A unique identifier for a procedure
2053* [RiskAssessment](riskassessment.html): Unique identifier for the assessment
2054* [ServiceRequest](servicerequest.html): Identifiers assigned to this order
2055* [SupplyDelivery](supplydelivery.html): External identifier
2056* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest
2057* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier
2058</b><br>
2059   * Type: <b>token</b><br>
2060   * 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.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>
2061   * </p>
2062   */
2063  @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.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" )
2064  public static final String SP_IDENTIFIER = "identifier";
2065 /**
2066   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
2067   * <p>
2068   * Description: <b>Multiple Resources: 
2069
2070* [AllergyIntolerance](allergyintolerance.html): External ids for this item
2071* [CarePlan](careplan.html): External Ids for this plan
2072* [CareTeam](careteam.html): External Ids for this team
2073* [Composition](composition.html): Version-independent identifier for the Composition
2074* [Condition](condition.html): A unique identifier of the condition record
2075* [Consent](consent.html): Identifier for this record (external references)
2076* [DetectedIssue](detectedissue.html): Unique id for the detected issue
2077* [DeviceRequest](devicerequest.html): Business identifier for request/order
2078* [DiagnosticReport](diagnosticreport.html): An identifier for the report
2079* [DocumentManifest](documentmanifest.html): Unique Identifier for the set of documents
2080* [DocumentReference](documentreference.html): Identifier of the attachment binary
2081* [Encounter](encounter.html): Identifier(s) by which this encounter is known
2082* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare
2083* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier
2084* [Goal](goal.html): External Ids for this goal
2085* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID
2086* [Immunization](immunization.html): Business identifier
2087* [List](list.html): Business identifier
2088* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier
2089* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier
2090* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier
2091* [MedicationUsage](medicationusage.html): Return statements with this external identifier
2092* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier
2093* [Observation](observation.html): The unique id for a particular observation
2094* [Procedure](procedure.html): A unique identifier for a procedure
2095* [RiskAssessment](riskassessment.html): Unique identifier for the assessment
2096* [ServiceRequest](servicerequest.html): Identifiers assigned to this order
2097* [SupplyDelivery](supplydelivery.html): External identifier
2098* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest
2099* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier
2100</b><br>
2101   * Type: <b>token</b><br>
2102   * 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.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>
2103   * </p>
2104   */
2105  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
2106
2107 /**
2108   * Search parameter: <b>patient</b>
2109   * <p>
2110   * Description: <b>Multiple Resources: 
2111
2112* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for
2113* [CarePlan](careplan.html): Who the care plan is for
2114* [CareTeam](careteam.html): Who care team is for
2115* [ClinicalImpression](clinicalimpression.html): Patient assessed
2116* [Composition](composition.html): Who and/or what the composition is about
2117* [Condition](condition.html): Who has the condition?
2118* [Consent](consent.html): Who the consent applies to
2119* [DetectedIssue](detectedissue.html): Associated patient
2120* [DeviceRequest](devicerequest.html): Individual the service is ordered for
2121* [DeviceUsage](deviceusage.html): Search by patient who used / uses the device
2122* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient
2123* [DocumentManifest](documentmanifest.html): The subject of the set of documents
2124* [DocumentReference](documentreference.html): Who/what is the subject of the document
2125* [Encounter](encounter.html): The patient present at the encounter
2126* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care
2127* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for
2128* [Flag](flag.html): The identity of a subject to list flags for
2129* [Goal](goal.html): Who this goal is intended for
2130* [ImagingStudy](imagingstudy.html): Who the study is about
2131* [Immunization](immunization.html): The patient for the vaccination record
2132* [List](list.html): If all resources have the same subject
2133* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for
2134* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for
2135* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient
2136* [MedicationUsage](medicationusage.html): Returns statements for a specific patient.
2137* [NutritionOrder](nutritionorder.html): The identity of the individual or set of individuals who requires the diet, formula or nutritional supplement
2138* [Observation](observation.html): The subject that the observation is about (if patient)
2139* [Procedure](procedure.html): Search by subject - a patient
2140* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?
2141* [ServiceRequest](servicerequest.html): Search by subject - a patient
2142* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied
2143* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for
2144</b><br>
2145   * Type: <b>reference</b><br>
2146   * 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.subject | 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.subject.where(resolve() is 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>
2147   * </p>
2148   */
2149  @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.subject | 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.subject.where(resolve() is 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 individual or set of individuals 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", providesMembershipIn={ @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, NutritionProduct.class, Organization.class, Patient.class, Practitioner.class, Procedure.class, Substance.class } )
2150  public static final String SP_PATIENT = "patient";
2151 /**
2152   * <b>Fluent Client</b> search parameter constant for <b>patient</b>
2153   * <p>
2154   * Description: <b>Multiple Resources: 
2155
2156* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for
2157* [CarePlan](careplan.html): Who the care plan is for
2158* [CareTeam](careteam.html): Who care team is for
2159* [ClinicalImpression](clinicalimpression.html): Patient assessed
2160* [Composition](composition.html): Who and/or what the composition is about
2161* [Condition](condition.html): Who has the condition?
2162* [Consent](consent.html): Who the consent applies to
2163* [DetectedIssue](detectedissue.html): Associated patient
2164* [DeviceRequest](devicerequest.html): Individual the service is ordered for
2165* [DeviceUsage](deviceusage.html): Search by patient who used / uses the device
2166* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient
2167* [DocumentManifest](documentmanifest.html): The subject of the set of documents
2168* [DocumentReference](documentreference.html): Who/what is the subject of the document
2169* [Encounter](encounter.html): The patient present at the encounter
2170* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care
2171* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for
2172* [Flag](flag.html): The identity of a subject to list flags for
2173* [Goal](goal.html): Who this goal is intended for
2174* [ImagingStudy](imagingstudy.html): Who the study is about
2175* [Immunization](immunization.html): The patient for the vaccination record
2176* [List](list.html): If all resources have the same subject
2177* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for
2178* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for
2179* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient
2180* [MedicationUsage](medicationusage.html): Returns statements for a specific patient.
2181* [NutritionOrder](nutritionorder.html): The identity of the individual or set of individuals who requires the diet, formula or nutritional supplement
2182* [Observation](observation.html): The subject that the observation is about (if patient)
2183* [Procedure](procedure.html): Search by subject - a patient
2184* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?
2185* [ServiceRequest](servicerequest.html): Search by subject - a patient
2186* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied
2187* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for
2188</b><br>
2189   * Type: <b>reference</b><br>
2190   * 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.subject | 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.subject.where(resolve() is 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>
2191   * </p>
2192   */
2193  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PATIENT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PATIENT);
2194
2195/**
2196   * Constant for fluent queries to be used to add include statements. Specifies
2197   * the path value of "<b>DetectedIssue:patient</b>".
2198   */
2199  public static final ca.uhn.fhir.model.api.Include INCLUDE_PATIENT = new ca.uhn.fhir.model.api.Include("DetectedIssue:patient").toLocked();
2200
2201
2202}
2203