001package org.hl7.fhir.dstu2016may.model;
002
003/*
004  Copyright (c) 2011+, HL7, Inc.
005  All rights reserved.
006  
007  Redistribution and use in source and binary forms, with or without modification, 
008  are permitted provided that the following conditions are met:
009  
010   * Redistributions of source code must retain the above copyright notice, this 
011     list of conditions and the following disclaimer.
012   * Redistributions in binary form must reproduce the above copyright notice, 
013     this list of conditions and the following disclaimer in the documentation 
014     and/or other materials provided with the distribution.
015   * Neither the name of HL7 nor the names of its contributors may be used to 
016     endorse or promote products derived from this software without specific 
017     prior written permission.
018  
019  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
020  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
021  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
022  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
023  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
024  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
025  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
026  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
027  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
028  POSSIBILITY OF SUCH DAMAGE.
029  
030*/
031
032// Generated on Sun, May 8, 2016 03:05+1000 for FHIR v1.4.0
033import java.util.ArrayList;
034import java.util.Date;
035import java.util.List;
036
037import org.hl7.fhir.exceptions.FHIRException;
038import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
039import org.hl7.fhir.utilities.Utilities;
040
041import ca.uhn.fhir.model.api.annotation.Block;
042import ca.uhn.fhir.model.api.annotation.Child;
043import ca.uhn.fhir.model.api.annotation.Description;
044import ca.uhn.fhir.model.api.annotation.ResourceDef;
045import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
046/**
047 * 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.
048 */
049@ResourceDef(name="DetectedIssue", profile="http://hl7.org/fhir/Profile/DetectedIssue")
050public class DetectedIssue extends DomainResource {
051
052    public enum DetectedIssueSeverity {
053        /**
054         * Indicates the issue may be life-threatening or has the potential to cause permanent injury.
055         */
056        HIGH, 
057        /**
058         * Indicates the issue may result in noticeable adverse consequences but is unlikely to be life-threatening or cause permanent injury.
059         */
060        MODERATE, 
061        /**
062         * Indicates the issue may result in some adverse consequences but is unlikely to substantially affect the situation of the subject.
063         */
064        LOW, 
065        /**
066         * added to help the parsers
067         */
068        NULL;
069        public static DetectedIssueSeverity fromCode(String codeString) throws FHIRException {
070            if (codeString == null || "".equals(codeString))
071                return null;
072        if ("high".equals(codeString))
073          return HIGH;
074        if ("moderate".equals(codeString))
075          return MODERATE;
076        if ("low".equals(codeString))
077          return LOW;
078        throw new FHIRException("Unknown DetectedIssueSeverity code '"+codeString+"'");
079        }
080        public String toCode() {
081          switch (this) {
082            case HIGH: return "high";
083            case MODERATE: return "moderate";
084            case LOW: return "low";
085            default: return "?";
086          }
087        }
088        public String getSystem() {
089          switch (this) {
090            case HIGH: return "http://hl7.org/fhir/detectedissue-severity";
091            case MODERATE: return "http://hl7.org/fhir/detectedissue-severity";
092            case LOW: return "http://hl7.org/fhir/detectedissue-severity";
093            default: return "?";
094          }
095        }
096        public String getDefinition() {
097          switch (this) {
098            case HIGH: return "Indicates the issue may be life-threatening or has the potential to cause permanent injury.";
099            case MODERATE: return "Indicates the issue may result in noticeable adverse consequences but is unlikely to be life-threatening or cause permanent injury.";
100            case LOW: return "Indicates the issue may result in some adverse consequences but is unlikely to substantially affect the situation of the subject.";
101            default: return "?";
102          }
103        }
104        public String getDisplay() {
105          switch (this) {
106            case HIGH: return "High";
107            case MODERATE: return "Moderate";
108            case LOW: return "Low";
109            default: return "?";
110          }
111        }
112    }
113
114  public static class DetectedIssueSeverityEnumFactory implements EnumFactory<DetectedIssueSeverity> {
115    public DetectedIssueSeverity fromCode(String codeString) throws IllegalArgumentException {
116      if (codeString == null || "".equals(codeString))
117            if (codeString == null || "".equals(codeString))
118                return null;
119        if ("high".equals(codeString))
120          return DetectedIssueSeverity.HIGH;
121        if ("moderate".equals(codeString))
122          return DetectedIssueSeverity.MODERATE;
123        if ("low".equals(codeString))
124          return DetectedIssueSeverity.LOW;
125        throw new IllegalArgumentException("Unknown DetectedIssueSeverity code '"+codeString+"'");
126        }
127        public Enumeration<DetectedIssueSeverity> fromType(Base code) throws FHIRException {
128          if (code == null || code.isEmpty())
129            return null;
130          String codeString = ((PrimitiveType) code).asStringValue();
131          if (codeString == null || "".equals(codeString))
132            return null;
133        if ("high".equals(codeString))
134          return new Enumeration<DetectedIssueSeverity>(this, DetectedIssueSeverity.HIGH);
135        if ("moderate".equals(codeString))
136          return new Enumeration<DetectedIssueSeverity>(this, DetectedIssueSeverity.MODERATE);
137        if ("low".equals(codeString))
138          return new Enumeration<DetectedIssueSeverity>(this, DetectedIssueSeverity.LOW);
139        throw new FHIRException("Unknown DetectedIssueSeverity code '"+codeString+"'");
140        }
141    public String toCode(DetectedIssueSeverity code) {
142      if (code == DetectedIssueSeverity.HIGH)
143        return "high";
144      if (code == DetectedIssueSeverity.MODERATE)
145        return "moderate";
146      if (code == DetectedIssueSeverity.LOW)
147        return "low";
148      return "?";
149      }
150    public String toSystem(DetectedIssueSeverity code) {
151      return code.getSystem();
152      }
153    }
154
155    @Block()
156    public static class DetectedIssueMitigationComponent extends BackboneElement implements IBaseBackboneElement {
157        /**
158         * Describes the action that was taken or the observation that was made that reduces/eliminates the risk associated with the identified issue.
159         */
160        @Child(name = "action", type = {CodeableConcept.class}, order=1, min=1, max=1, modifier=false, summary=false)
161        @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." )
162        protected CodeableConcept action;
163
164        /**
165         * Indicates when the mitigating action was documented.
166         */
167        @Child(name = "date", type = {DateTimeType.class}, order=2, min=0, max=1, modifier=false, summary=false)
168        @Description(shortDefinition="Date committed", formalDefinition="Indicates when the mitigating action was documented." )
169        protected DateTimeType date;
170
171        /**
172         * Identifies the practitioner who determined the mitigation and takes responsibility for the mitigation step occurring.
173         */
174        @Child(name = "author", type = {Practitioner.class}, order=3, min=0, max=1, modifier=false, summary=false)
175        @Description(shortDefinition="Who is committing?", formalDefinition="Identifies the practitioner who determined the mitigation and takes responsibility for the mitigation step occurring." )
176        protected Reference author;
177
178        /**
179         * The actual object that is the target of the reference (Identifies the practitioner who determined the mitigation and takes responsibility for the mitigation step occurring.)
180         */
181        protected Practitioner authorTarget;
182
183        private static final long serialVersionUID = -1994768436L;
184
185    /**
186     * Constructor
187     */
188      public DetectedIssueMitigationComponent() {
189        super();
190      }
191
192    /**
193     * Constructor
194     */
195      public DetectedIssueMitigationComponent(CodeableConcept action) {
196        super();
197        this.action = action;
198      }
199
200        /**
201         * @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.)
202         */
203        public CodeableConcept getAction() { 
204          if (this.action == null)
205            if (Configuration.errorOnAutoCreate())
206              throw new Error("Attempt to auto-create DetectedIssueMitigationComponent.action");
207            else if (Configuration.doAutoCreate())
208              this.action = new CodeableConcept(); // cc
209          return this.action;
210        }
211
212        public boolean hasAction() { 
213          return this.action != null && !this.action.isEmpty();
214        }
215
216        /**
217         * @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.)
218         */
219        public DetectedIssueMitigationComponent setAction(CodeableConcept value) { 
220          this.action = value;
221          return this;
222        }
223
224        /**
225         * @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
226         */
227        public DateTimeType getDateElement() { 
228          if (this.date == null)
229            if (Configuration.errorOnAutoCreate())
230              throw new Error("Attempt to auto-create DetectedIssueMitigationComponent.date");
231            else if (Configuration.doAutoCreate())
232              this.date = new DateTimeType(); // bb
233          return this.date;
234        }
235
236        public boolean hasDateElement() { 
237          return this.date != null && !this.date.isEmpty();
238        }
239
240        public boolean hasDate() { 
241          return this.date != null && !this.date.isEmpty();
242        }
243
244        /**
245         * @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
246         */
247        public DetectedIssueMitigationComponent setDateElement(DateTimeType value) { 
248          this.date = value;
249          return this;
250        }
251
252        /**
253         * @return Indicates when the mitigating action was documented.
254         */
255        public Date getDate() { 
256          return this.date == null ? null : this.date.getValue();
257        }
258
259        /**
260         * @param value Indicates when the mitigating action was documented.
261         */
262        public DetectedIssueMitigationComponent setDate(Date value) { 
263          if (value == null)
264            this.date = null;
265          else {
266            if (this.date == null)
267              this.date = new DateTimeType();
268            this.date.setValue(value);
269          }
270          return this;
271        }
272
273        /**
274         * @return {@link #author} (Identifies the practitioner who determined the mitigation and takes responsibility for the mitigation step occurring.)
275         */
276        public Reference getAuthor() { 
277          if (this.author == null)
278            if (Configuration.errorOnAutoCreate())
279              throw new Error("Attempt to auto-create DetectedIssueMitigationComponent.author");
280            else if (Configuration.doAutoCreate())
281              this.author = new Reference(); // cc
282          return this.author;
283        }
284
285        public boolean hasAuthor() { 
286          return this.author != null && !this.author.isEmpty();
287        }
288
289        /**
290         * @param value {@link #author} (Identifies the practitioner who determined the mitigation and takes responsibility for the mitigation step occurring.)
291         */
292        public DetectedIssueMitigationComponent setAuthor(Reference value) { 
293          this.author = value;
294          return this;
295        }
296
297        /**
298         * @return {@link #author} The actual object that is the target of the reference. The reference library doesn't populate this, but you can use it to hold the resource if you resolve it. (Identifies the practitioner who determined the mitigation and takes responsibility for the mitigation step occurring.)
299         */
300        public Practitioner getAuthorTarget() { 
301          if (this.authorTarget == null)
302            if (Configuration.errorOnAutoCreate())
303              throw new Error("Attempt to auto-create DetectedIssueMitigationComponent.author");
304            else if (Configuration.doAutoCreate())
305              this.authorTarget = new Practitioner(); // aa
306          return this.authorTarget;
307        }
308
309        /**
310         * @param value {@link #author} The actual object that is the target of the reference. The reference library doesn't use these, but you can use it to hold the resource if you resolve it. (Identifies the practitioner who determined the mitigation and takes responsibility for the mitigation step occurring.)
311         */
312        public DetectedIssueMitigationComponent setAuthorTarget(Practitioner value) { 
313          this.authorTarget = value;
314          return this;
315        }
316
317        protected void listChildren(List<Property> childrenList) {
318          super.listChildren(childrenList);
319          childrenList.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, java.lang.Integer.MAX_VALUE, action));
320          childrenList.add(new Property("date", "dateTime", "Indicates when the mitigating action was documented.", 0, java.lang.Integer.MAX_VALUE, date));
321          childrenList.add(new Property("author", "Reference(Practitioner)", "Identifies the practitioner who determined the mitigation and takes responsibility for the mitigation step occurring.", 0, java.lang.Integer.MAX_VALUE, author));
322        }
323
324      @Override
325      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
326        switch (hash) {
327        case -1422950858: /*action*/ return this.action == null ? new Base[0] : new Base[] {this.action}; // CodeableConcept
328        case 3076014: /*date*/ return this.date == null ? new Base[0] : new Base[] {this.date}; // DateTimeType
329        case -1406328437: /*author*/ return this.author == null ? new Base[0] : new Base[] {this.author}; // Reference
330        default: return super.getProperty(hash, name, checkValid);
331        }
332
333      }
334
335      @Override
336      public void setProperty(int hash, String name, Base value) throws FHIRException {
337        switch (hash) {
338        case -1422950858: // action
339          this.action = castToCodeableConcept(value); // CodeableConcept
340          break;
341        case 3076014: // date
342          this.date = castToDateTime(value); // DateTimeType
343          break;
344        case -1406328437: // author
345          this.author = castToReference(value); // Reference
346          break;
347        default: super.setProperty(hash, name, value);
348        }
349
350      }
351
352      @Override
353      public void setProperty(String name, Base value) throws FHIRException {
354        if (name.equals("action"))
355          this.action = castToCodeableConcept(value); // CodeableConcept
356        else if (name.equals("date"))
357          this.date = castToDateTime(value); // DateTimeType
358        else if (name.equals("author"))
359          this.author = castToReference(value); // Reference
360        else
361          super.setProperty(name, value);
362      }
363
364      @Override
365      public Base makeProperty(int hash, String name) throws FHIRException {
366        switch (hash) {
367        case -1422950858:  return getAction(); // CodeableConcept
368        case 3076014: throw new FHIRException("Cannot make property date as it is not a complex type"); // DateTimeType
369        case -1406328437:  return getAuthor(); // Reference
370        default: return super.makeProperty(hash, name);
371        }
372
373      }
374
375      @Override
376      public Base addChild(String name) throws FHIRException {
377        if (name.equals("action")) {
378          this.action = new CodeableConcept();
379          return this.action;
380        }
381        else if (name.equals("date")) {
382          throw new FHIRException("Cannot call addChild on a primitive type DetectedIssue.date");
383        }
384        else if (name.equals("author")) {
385          this.author = new Reference();
386          return this.author;
387        }
388        else
389          return super.addChild(name);
390      }
391
392      public DetectedIssueMitigationComponent copy() {
393        DetectedIssueMitigationComponent dst = new DetectedIssueMitigationComponent();
394        copyValues(dst);
395        dst.action = action == null ? null : action.copy();
396        dst.date = date == null ? null : date.copy();
397        dst.author = author == null ? null : author.copy();
398        return dst;
399      }
400
401      @Override
402      public boolean equalsDeep(Base other) {
403        if (!super.equalsDeep(other))
404          return false;
405        if (!(other instanceof DetectedIssueMitigationComponent))
406          return false;
407        DetectedIssueMitigationComponent o = (DetectedIssueMitigationComponent) other;
408        return compareDeep(action, o.action, true) && compareDeep(date, o.date, true) && compareDeep(author, o.author, true)
409          ;
410      }
411
412      @Override
413      public boolean equalsShallow(Base other) {
414        if (!super.equalsShallow(other))
415          return false;
416        if (!(other instanceof DetectedIssueMitigationComponent))
417          return false;
418        DetectedIssueMitigationComponent o = (DetectedIssueMitigationComponent) other;
419        return compareValues(date, o.date, true);
420      }
421
422      public boolean isEmpty() {
423        return super.isEmpty() && (action == null || action.isEmpty()) && (date == null || date.isEmpty())
424           && (author == null || author.isEmpty());
425      }
426
427  public String fhirType() {
428    return "DetectedIssue.mitigation";
429
430  }
431
432  }
433
434    /**
435     * Indicates the patient whose record the detected issue is associated with.
436     */
437    @Child(name = "patient", type = {Patient.class}, order=0, min=0, max=1, modifier=false, summary=true)
438    @Description(shortDefinition="Associated patient", formalDefinition="Indicates the patient whose record the detected issue is associated with." )
439    protected Reference patient;
440
441    /**
442     * The actual object that is the target of the reference (Indicates the patient whose record the detected issue is associated with.)
443     */
444    protected Patient patientTarget;
445
446    /**
447     * Identifies the general type of issue identified.
448     */
449    @Child(name = "category", type = {CodeableConcept.class}, order=1, min=0, max=1, modifier=false, summary=true)
450    @Description(shortDefinition="Issue Category, e.g. drug-drug, duplicate therapy, etc.", formalDefinition="Identifies the general type of issue identified." )
451    protected CodeableConcept category;
452
453    /**
454     * Indicates the degree of importance associated with the identified issue based on the potential impact on the patient.
455     */
456    @Child(name = "severity", type = {CodeType.class}, order=2, min=0, max=1, modifier=false, summary=true)
457    @Description(shortDefinition="high | moderate | low", formalDefinition="Indicates the degree of importance associated with the identified issue based on the potential impact on the patient." )
458    protected Enumeration<DetectedIssueSeverity> severity;
459
460    /**
461     * Indicates the resource representing the current activity or proposed activity that is potentially problematic.
462     */
463    @Child(name = "implicated", type = {}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
464    @Description(shortDefinition="Problem resource", formalDefinition="Indicates the resource representing the current activity or proposed activity that is potentially problematic." )
465    protected List<Reference> implicated;
466    /**
467     * The actual objects that are the target of the reference (Indicates the resource representing the current activity or proposed activity that is potentially problematic.)
468     */
469    protected List<Resource> implicatedTarget;
470
471
472    /**
473     * A textual explanation of the detected issue.
474     */
475    @Child(name = "detail", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=false)
476    @Description(shortDefinition="Description and context", formalDefinition="A textual explanation of the detected issue." )
477    protected StringType detail;
478
479    /**
480     * The date or date-time when the detected issue was initially identified.
481     */
482    @Child(name = "date", type = {DateTimeType.class}, order=5, min=0, max=1, modifier=false, summary=true)
483    @Description(shortDefinition="When identified", formalDefinition="The date or date-time when the detected issue was initially identified." )
484    protected DateTimeType date;
485
486    /**
487     * Individual or device responsible for the issue being raised.  For example, a decision support application or a pharmacist conducting a medication review.
488     */
489    @Child(name = "author", type = {Practitioner.class, Device.class}, order=6, min=0, max=1, modifier=false, summary=true)
490    @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." )
491    protected Reference author;
492
493    /**
494     * The actual object that is the target of the reference (Individual or device responsible for the issue being raised.  For example, a decision support application or a pharmacist conducting a medication review.)
495     */
496    protected Resource authorTarget;
497
498    /**
499     * Business identifier associated with the detected issue record.
500     */
501    @Child(name = "identifier", type = {Identifier.class}, order=7, min=0, max=1, modifier=false, summary=true)
502    @Description(shortDefinition="Unique id for the detected issue", formalDefinition="Business identifier associated with the detected issue record." )
503    protected Identifier identifier;
504
505    /**
506     * The literature, knowledge-base or similar reference that describes the propensity for the detected issue identified.
507     */
508    @Child(name = "reference", type = {UriType.class}, order=8, min=0, max=1, modifier=false, summary=false)
509    @Description(shortDefinition="Authority for issue", formalDefinition="The literature, knowledge-base or similar reference that describes the propensity for the detected issue identified." )
510    protected UriType reference;
511
512    /**
513     * Indicates an action that has been taken or is committed to 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.
514     */
515    @Child(name = "mitigation", type = {}, order=9, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
516    @Description(shortDefinition="Step taken to address", formalDefinition="Indicates an action that has been taken or is committed to 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." )
517    protected List<DetectedIssueMitigationComponent> mitigation;
518
519    private static final long serialVersionUID = -403732234L;
520
521  /**
522   * Constructor
523   */
524    public DetectedIssue() {
525      super();
526    }
527
528    /**
529     * @return {@link #patient} (Indicates the patient whose record the detected issue is associated with.)
530     */
531    public Reference getPatient() { 
532      if (this.patient == null)
533        if (Configuration.errorOnAutoCreate())
534          throw new Error("Attempt to auto-create DetectedIssue.patient");
535        else if (Configuration.doAutoCreate())
536          this.patient = new Reference(); // cc
537      return this.patient;
538    }
539
540    public boolean hasPatient() { 
541      return this.patient != null && !this.patient.isEmpty();
542    }
543
544    /**
545     * @param value {@link #patient} (Indicates the patient whose record the detected issue is associated with.)
546     */
547    public DetectedIssue setPatient(Reference value) { 
548      this.patient = value;
549      return this;
550    }
551
552    /**
553     * @return {@link #patient} The actual object that is the target of the reference. The reference library doesn't populate this, but you can use it to hold the resource if you resolve it. (Indicates the patient whose record the detected issue is associated with.)
554     */
555    public Patient getPatientTarget() { 
556      if (this.patientTarget == null)
557        if (Configuration.errorOnAutoCreate())
558          throw new Error("Attempt to auto-create DetectedIssue.patient");
559        else if (Configuration.doAutoCreate())
560          this.patientTarget = new Patient(); // aa
561      return this.patientTarget;
562    }
563
564    /**
565     * @param value {@link #patient} The actual object that is the target of the reference. The reference library doesn't use these, but you can use it to hold the resource if you resolve it. (Indicates the patient whose record the detected issue is associated with.)
566     */
567    public DetectedIssue setPatientTarget(Patient value) { 
568      this.patientTarget = value;
569      return this;
570    }
571
572    /**
573     * @return {@link #category} (Identifies the general type of issue identified.)
574     */
575    public CodeableConcept getCategory() { 
576      if (this.category == null)
577        if (Configuration.errorOnAutoCreate())
578          throw new Error("Attempt to auto-create DetectedIssue.category");
579        else if (Configuration.doAutoCreate())
580          this.category = new CodeableConcept(); // cc
581      return this.category;
582    }
583
584    public boolean hasCategory() { 
585      return this.category != null && !this.category.isEmpty();
586    }
587
588    /**
589     * @param value {@link #category} (Identifies the general type of issue identified.)
590     */
591    public DetectedIssue setCategory(CodeableConcept value) { 
592      this.category = value;
593      return this;
594    }
595
596    /**
597     * @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
598     */
599    public Enumeration<DetectedIssueSeverity> getSeverityElement() { 
600      if (this.severity == null)
601        if (Configuration.errorOnAutoCreate())
602          throw new Error("Attempt to auto-create DetectedIssue.severity");
603        else if (Configuration.doAutoCreate())
604          this.severity = new Enumeration<DetectedIssueSeverity>(new DetectedIssueSeverityEnumFactory()); // bb
605      return this.severity;
606    }
607
608    public boolean hasSeverityElement() { 
609      return this.severity != null && !this.severity.isEmpty();
610    }
611
612    public boolean hasSeverity() { 
613      return this.severity != null && !this.severity.isEmpty();
614    }
615
616    /**
617     * @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
618     */
619    public DetectedIssue setSeverityElement(Enumeration<DetectedIssueSeverity> value) { 
620      this.severity = value;
621      return this;
622    }
623
624    /**
625     * @return Indicates the degree of importance associated with the identified issue based on the potential impact on the patient.
626     */
627    public DetectedIssueSeverity getSeverity() { 
628      return this.severity == null ? null : this.severity.getValue();
629    }
630
631    /**
632     * @param value Indicates the degree of importance associated with the identified issue based on the potential impact on the patient.
633     */
634    public DetectedIssue setSeverity(DetectedIssueSeverity value) { 
635      if (value == null)
636        this.severity = null;
637      else {
638        if (this.severity == null)
639          this.severity = new Enumeration<DetectedIssueSeverity>(new DetectedIssueSeverityEnumFactory());
640        this.severity.setValue(value);
641      }
642      return this;
643    }
644
645    /**
646     * @return {@link #implicated} (Indicates the resource representing the current activity or proposed activity that is potentially problematic.)
647     */
648    public List<Reference> getImplicated() { 
649      if (this.implicated == null)
650        this.implicated = new ArrayList<Reference>();
651      return this.implicated;
652    }
653
654    public boolean hasImplicated() { 
655      if (this.implicated == null)
656        return false;
657      for (Reference item : this.implicated)
658        if (!item.isEmpty())
659          return true;
660      return false;
661    }
662
663    /**
664     * @return {@link #implicated} (Indicates the resource representing the current activity or proposed activity that is potentially problematic.)
665     */
666    // syntactic sugar
667    public Reference addImplicated() { //3
668      Reference t = new Reference();
669      if (this.implicated == null)
670        this.implicated = new ArrayList<Reference>();
671      this.implicated.add(t);
672      return t;
673    }
674
675    // syntactic sugar
676    public DetectedIssue addImplicated(Reference t) { //3
677      if (t == null)
678        return this;
679      if (this.implicated == null)
680        this.implicated = new ArrayList<Reference>();
681      this.implicated.add(t);
682      return this;
683    }
684
685    /**
686     * @return {@link #implicated} (The actual objects that are the target of the reference. The reference library doesn't populate this, but you can use this to hold the resources if you resolvethemt. Indicates the resource representing the current activity or proposed activity that is potentially problematic.)
687     */
688    public List<Resource> getImplicatedTarget() { 
689      if (this.implicatedTarget == null)
690        this.implicatedTarget = new ArrayList<Resource>();
691      return this.implicatedTarget;
692    }
693
694    /**
695     * @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
696     */
697    public StringType getDetailElement() { 
698      if (this.detail == null)
699        if (Configuration.errorOnAutoCreate())
700          throw new Error("Attempt to auto-create DetectedIssue.detail");
701        else if (Configuration.doAutoCreate())
702          this.detail = new StringType(); // bb
703      return this.detail;
704    }
705
706    public boolean hasDetailElement() { 
707      return this.detail != null && !this.detail.isEmpty();
708    }
709
710    public boolean hasDetail() { 
711      return this.detail != null && !this.detail.isEmpty();
712    }
713
714    /**
715     * @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
716     */
717    public DetectedIssue setDetailElement(StringType value) { 
718      this.detail = value;
719      return this;
720    }
721
722    /**
723     * @return A textual explanation of the detected issue.
724     */
725    public String getDetail() { 
726      return this.detail == null ? null : this.detail.getValue();
727    }
728
729    /**
730     * @param value A textual explanation of the detected issue.
731     */
732    public DetectedIssue setDetail(String value) { 
733      if (Utilities.noString(value))
734        this.detail = null;
735      else {
736        if (this.detail == null)
737          this.detail = new StringType();
738        this.detail.setValue(value);
739      }
740      return this;
741    }
742
743    /**
744     * @return {@link #date} (The date or date-time when the detected issue was initially identified.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
745     */
746    public DateTimeType getDateElement() { 
747      if (this.date == null)
748        if (Configuration.errorOnAutoCreate())
749          throw new Error("Attempt to auto-create DetectedIssue.date");
750        else if (Configuration.doAutoCreate())
751          this.date = new DateTimeType(); // bb
752      return this.date;
753    }
754
755    public boolean hasDateElement() { 
756      return this.date != null && !this.date.isEmpty();
757    }
758
759    public boolean hasDate() { 
760      return this.date != null && !this.date.isEmpty();
761    }
762
763    /**
764     * @param value {@link #date} (The date or date-time when the detected issue was initially identified.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
765     */
766    public DetectedIssue setDateElement(DateTimeType value) { 
767      this.date = value;
768      return this;
769    }
770
771    /**
772     * @return The date or date-time when the detected issue was initially identified.
773     */
774    public Date getDate() { 
775      return this.date == null ? null : this.date.getValue();
776    }
777
778    /**
779     * @param value The date or date-time when the detected issue was initially identified.
780     */
781    public DetectedIssue setDate(Date value) { 
782      if (value == null)
783        this.date = null;
784      else {
785        if (this.date == null)
786          this.date = new DateTimeType();
787        this.date.setValue(value);
788      }
789      return this;
790    }
791
792    /**
793     * @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.)
794     */
795    public Reference getAuthor() { 
796      if (this.author == null)
797        if (Configuration.errorOnAutoCreate())
798          throw new Error("Attempt to auto-create DetectedIssue.author");
799        else if (Configuration.doAutoCreate())
800          this.author = new Reference(); // cc
801      return this.author;
802    }
803
804    public boolean hasAuthor() { 
805      return this.author != null && !this.author.isEmpty();
806    }
807
808    /**
809     * @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.)
810     */
811    public DetectedIssue setAuthor(Reference value) { 
812      this.author = value;
813      return this;
814    }
815
816    /**
817     * @return {@link #author} The actual object that is the target of the reference. The reference library doesn't populate this, but you can use it to hold the resource if you resolve it. (Individual or device responsible for the issue being raised.  For example, a decision support application or a pharmacist conducting a medication review.)
818     */
819    public Resource getAuthorTarget() { 
820      return this.authorTarget;
821    }
822
823    /**
824     * @param value {@link #author} The actual object that is the target of the reference. The reference library doesn't use these, but you can use it to hold the resource if you resolve it. (Individual or device responsible for the issue being raised.  For example, a decision support application or a pharmacist conducting a medication review.)
825     */
826    public DetectedIssue setAuthorTarget(Resource value) { 
827      this.authorTarget = value;
828      return this;
829    }
830
831    /**
832     * @return {@link #identifier} (Business identifier associated with the detected issue record.)
833     */
834    public Identifier getIdentifier() { 
835      if (this.identifier == null)
836        if (Configuration.errorOnAutoCreate())
837          throw new Error("Attempt to auto-create DetectedIssue.identifier");
838        else if (Configuration.doAutoCreate())
839          this.identifier = new Identifier(); // cc
840      return this.identifier;
841    }
842
843    public boolean hasIdentifier() { 
844      return this.identifier != null && !this.identifier.isEmpty();
845    }
846
847    /**
848     * @param value {@link #identifier} (Business identifier associated with the detected issue record.)
849     */
850    public DetectedIssue setIdentifier(Identifier value) { 
851      this.identifier = value;
852      return this;
853    }
854
855    /**
856     * @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
857     */
858    public UriType getReferenceElement() { 
859      if (this.reference == null)
860        if (Configuration.errorOnAutoCreate())
861          throw new Error("Attempt to auto-create DetectedIssue.reference");
862        else if (Configuration.doAutoCreate())
863          this.reference = new UriType(); // bb
864      return this.reference;
865    }
866
867    public boolean hasReferenceElement() { 
868      return this.reference != null && !this.reference.isEmpty();
869    }
870
871    public boolean hasReference() { 
872      return this.reference != null && !this.reference.isEmpty();
873    }
874
875    /**
876     * @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
877     */
878    public DetectedIssue setReferenceElement(UriType value) { 
879      this.reference = value;
880      return this;
881    }
882
883    /**
884     * @return The literature, knowledge-base or similar reference that describes the propensity for the detected issue identified.
885     */
886    public String getReference() { 
887      return this.reference == null ? null : this.reference.getValue();
888    }
889
890    /**
891     * @param value The literature, knowledge-base or similar reference that describes the propensity for the detected issue identified.
892     */
893    public DetectedIssue setReference(String value) { 
894      if (Utilities.noString(value))
895        this.reference = null;
896      else {
897        if (this.reference == null)
898          this.reference = new UriType();
899        this.reference.setValue(value);
900      }
901      return this;
902    }
903
904    /**
905     * @return {@link #mitigation} (Indicates an action that has been taken or is committed to 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.)
906     */
907    public List<DetectedIssueMitigationComponent> getMitigation() { 
908      if (this.mitigation == null)
909        this.mitigation = new ArrayList<DetectedIssueMitigationComponent>();
910      return this.mitigation;
911    }
912
913    public boolean hasMitigation() { 
914      if (this.mitigation == null)
915        return false;
916      for (DetectedIssueMitigationComponent item : this.mitigation)
917        if (!item.isEmpty())
918          return true;
919      return false;
920    }
921
922    /**
923     * @return {@link #mitigation} (Indicates an action that has been taken or is committed to 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.)
924     */
925    // syntactic sugar
926    public DetectedIssueMitigationComponent addMitigation() { //3
927      DetectedIssueMitigationComponent t = new DetectedIssueMitigationComponent();
928      if (this.mitigation == null)
929        this.mitigation = new ArrayList<DetectedIssueMitigationComponent>();
930      this.mitigation.add(t);
931      return t;
932    }
933
934    // syntactic sugar
935    public DetectedIssue addMitigation(DetectedIssueMitigationComponent t) { //3
936      if (t == null)
937        return this;
938      if (this.mitigation == null)
939        this.mitigation = new ArrayList<DetectedIssueMitigationComponent>();
940      this.mitigation.add(t);
941      return this;
942    }
943
944      protected void listChildren(List<Property> childrenList) {
945        super.listChildren(childrenList);
946        childrenList.add(new Property("patient", "Reference(Patient)", "Indicates the patient whose record the detected issue is associated with.", 0, java.lang.Integer.MAX_VALUE, patient));
947        childrenList.add(new Property("category", "CodeableConcept", "Identifies the general type of issue identified.", 0, java.lang.Integer.MAX_VALUE, category));
948        childrenList.add(new Property("severity", "code", "Indicates the degree of importance associated with the identified issue based on the potential impact on the patient.", 0, java.lang.Integer.MAX_VALUE, severity));
949        childrenList.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));
950        childrenList.add(new Property("detail", "string", "A textual explanation of the detected issue.", 0, java.lang.Integer.MAX_VALUE, detail));
951        childrenList.add(new Property("date", "dateTime", "The date or date-time when the detected issue was initially identified.", 0, java.lang.Integer.MAX_VALUE, date));
952        childrenList.add(new Property("author", "Reference(Practitioner|Device)", "Individual or device responsible for the issue being raised.  For example, a decision support application or a pharmacist conducting a medication review.", 0, java.lang.Integer.MAX_VALUE, author));
953        childrenList.add(new Property("identifier", "Identifier", "Business identifier associated with the detected issue record.", 0, java.lang.Integer.MAX_VALUE, identifier));
954        childrenList.add(new Property("reference", "uri", "The literature, knowledge-base or similar reference that describes the propensity for the detected issue identified.", 0, java.lang.Integer.MAX_VALUE, reference));
955        childrenList.add(new Property("mitigation", "", "Indicates an action that has been taken or is committed to 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));
956      }
957
958      @Override
959      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
960        switch (hash) {
961        case -791418107: /*patient*/ return this.patient == null ? new Base[0] : new Base[] {this.patient}; // Reference
962        case 50511102: /*category*/ return this.category == null ? new Base[0] : new Base[] {this.category}; // CodeableConcept
963        case 1478300413: /*severity*/ return this.severity == null ? new Base[0] : new Base[] {this.severity}; // Enumeration<DetectedIssueSeverity>
964        case -810216884: /*implicated*/ return this.implicated == null ? new Base[0] : this.implicated.toArray(new Base[this.implicated.size()]); // Reference
965        case -1335224239: /*detail*/ return this.detail == null ? new Base[0] : new Base[] {this.detail}; // StringType
966        case 3076014: /*date*/ return this.date == null ? new Base[0] : new Base[] {this.date}; // DateTimeType
967        case -1406328437: /*author*/ return this.author == null ? new Base[0] : new Base[] {this.author}; // Reference
968        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : new Base[] {this.identifier}; // Identifier
969        case -925155509: /*reference*/ return this.reference == null ? new Base[0] : new Base[] {this.reference}; // UriType
970        case 1293793087: /*mitigation*/ return this.mitigation == null ? new Base[0] : this.mitigation.toArray(new Base[this.mitigation.size()]); // DetectedIssueMitigationComponent
971        default: return super.getProperty(hash, name, checkValid);
972        }
973
974      }
975
976      @Override
977      public void setProperty(int hash, String name, Base value) throws FHIRException {
978        switch (hash) {
979        case -791418107: // patient
980          this.patient = castToReference(value); // Reference
981          break;
982        case 50511102: // category
983          this.category = castToCodeableConcept(value); // CodeableConcept
984          break;
985        case 1478300413: // severity
986          this.severity = new DetectedIssueSeverityEnumFactory().fromType(value); // Enumeration<DetectedIssueSeverity>
987          break;
988        case -810216884: // implicated
989          this.getImplicated().add(castToReference(value)); // Reference
990          break;
991        case -1335224239: // detail
992          this.detail = castToString(value); // StringType
993          break;
994        case 3076014: // date
995          this.date = castToDateTime(value); // DateTimeType
996          break;
997        case -1406328437: // author
998          this.author = castToReference(value); // Reference
999          break;
1000        case -1618432855: // identifier
1001          this.identifier = castToIdentifier(value); // Identifier
1002          break;
1003        case -925155509: // reference
1004          this.reference = castToUri(value); // UriType
1005          break;
1006        case 1293793087: // mitigation
1007          this.getMitigation().add((DetectedIssueMitigationComponent) value); // DetectedIssueMitigationComponent
1008          break;
1009        default: super.setProperty(hash, name, value);
1010        }
1011
1012      }
1013
1014      @Override
1015      public void setProperty(String name, Base value) throws FHIRException {
1016        if (name.equals("patient"))
1017          this.patient = castToReference(value); // Reference
1018        else if (name.equals("category"))
1019          this.category = castToCodeableConcept(value); // CodeableConcept
1020        else if (name.equals("severity"))
1021          this.severity = new DetectedIssueSeverityEnumFactory().fromType(value); // Enumeration<DetectedIssueSeverity>
1022        else if (name.equals("implicated"))
1023          this.getImplicated().add(castToReference(value));
1024        else if (name.equals("detail"))
1025          this.detail = castToString(value); // StringType
1026        else if (name.equals("date"))
1027          this.date = castToDateTime(value); // DateTimeType
1028        else if (name.equals("author"))
1029          this.author = castToReference(value); // Reference
1030        else if (name.equals("identifier"))
1031          this.identifier = castToIdentifier(value); // Identifier
1032        else if (name.equals("reference"))
1033          this.reference = castToUri(value); // UriType
1034        else if (name.equals("mitigation"))
1035          this.getMitigation().add((DetectedIssueMitigationComponent) value);
1036        else
1037          super.setProperty(name, value);
1038      }
1039
1040      @Override
1041      public Base makeProperty(int hash, String name) throws FHIRException {
1042        switch (hash) {
1043        case -791418107:  return getPatient(); // Reference
1044        case 50511102:  return getCategory(); // CodeableConcept
1045        case 1478300413: throw new FHIRException("Cannot make property severity as it is not a complex type"); // Enumeration<DetectedIssueSeverity>
1046        case -810216884:  return addImplicated(); // Reference
1047        case -1335224239: throw new FHIRException("Cannot make property detail as it is not a complex type"); // StringType
1048        case 3076014: throw new FHIRException("Cannot make property date as it is not a complex type"); // DateTimeType
1049        case -1406328437:  return getAuthor(); // Reference
1050        case -1618432855:  return getIdentifier(); // Identifier
1051        case -925155509: throw new FHIRException("Cannot make property reference as it is not a complex type"); // UriType
1052        case 1293793087:  return addMitigation(); // DetectedIssueMitigationComponent
1053        default: return super.makeProperty(hash, name);
1054        }
1055
1056      }
1057
1058      @Override
1059      public Base addChild(String name) throws FHIRException {
1060        if (name.equals("patient")) {
1061          this.patient = new Reference();
1062          return this.patient;
1063        }
1064        else if (name.equals("category")) {
1065          this.category = new CodeableConcept();
1066          return this.category;
1067        }
1068        else if (name.equals("severity")) {
1069          throw new FHIRException("Cannot call addChild on a primitive type DetectedIssue.severity");
1070        }
1071        else if (name.equals("implicated")) {
1072          return addImplicated();
1073        }
1074        else if (name.equals("detail")) {
1075          throw new FHIRException("Cannot call addChild on a primitive type DetectedIssue.detail");
1076        }
1077        else if (name.equals("date")) {
1078          throw new FHIRException("Cannot call addChild on a primitive type DetectedIssue.date");
1079        }
1080        else if (name.equals("author")) {
1081          this.author = new Reference();
1082          return this.author;
1083        }
1084        else if (name.equals("identifier")) {
1085          this.identifier = new Identifier();
1086          return this.identifier;
1087        }
1088        else if (name.equals("reference")) {
1089          throw new FHIRException("Cannot call addChild on a primitive type DetectedIssue.reference");
1090        }
1091        else if (name.equals("mitigation")) {
1092          return addMitigation();
1093        }
1094        else
1095          return super.addChild(name);
1096      }
1097
1098  public String fhirType() {
1099    return "DetectedIssue";
1100
1101  }
1102
1103      public DetectedIssue copy() {
1104        DetectedIssue dst = new DetectedIssue();
1105        copyValues(dst);
1106        dst.patient = patient == null ? null : patient.copy();
1107        dst.category = category == null ? null : category.copy();
1108        dst.severity = severity == null ? null : severity.copy();
1109        if (implicated != null) {
1110          dst.implicated = new ArrayList<Reference>();
1111          for (Reference i : implicated)
1112            dst.implicated.add(i.copy());
1113        };
1114        dst.detail = detail == null ? null : detail.copy();
1115        dst.date = date == null ? null : date.copy();
1116        dst.author = author == null ? null : author.copy();
1117        dst.identifier = identifier == null ? null : identifier.copy();
1118        dst.reference = reference == null ? null : reference.copy();
1119        if (mitigation != null) {
1120          dst.mitigation = new ArrayList<DetectedIssueMitigationComponent>();
1121          for (DetectedIssueMitigationComponent i : mitigation)
1122            dst.mitigation.add(i.copy());
1123        };
1124        return dst;
1125      }
1126
1127      protected DetectedIssue typedCopy() {
1128        return copy();
1129      }
1130
1131      @Override
1132      public boolean equalsDeep(Base other) {
1133        if (!super.equalsDeep(other))
1134          return false;
1135        if (!(other instanceof DetectedIssue))
1136          return false;
1137        DetectedIssue o = (DetectedIssue) other;
1138        return compareDeep(patient, o.patient, true) && compareDeep(category, o.category, true) && compareDeep(severity, o.severity, true)
1139           && compareDeep(implicated, o.implicated, true) && compareDeep(detail, o.detail, true) && compareDeep(date, o.date, true)
1140           && compareDeep(author, o.author, true) && compareDeep(identifier, o.identifier, true) && compareDeep(reference, o.reference, true)
1141           && compareDeep(mitigation, o.mitigation, true);
1142      }
1143
1144      @Override
1145      public boolean equalsShallow(Base other) {
1146        if (!super.equalsShallow(other))
1147          return false;
1148        if (!(other instanceof DetectedIssue))
1149          return false;
1150        DetectedIssue o = (DetectedIssue) other;
1151        return compareValues(severity, o.severity, true) && compareValues(detail, o.detail, true) && compareValues(date, o.date, true)
1152           && compareValues(reference, o.reference, true);
1153      }
1154
1155      public boolean isEmpty() {
1156        return super.isEmpty() && (patient == null || patient.isEmpty()) && (category == null || category.isEmpty())
1157           && (severity == null || severity.isEmpty()) && (implicated == null || implicated.isEmpty())
1158           && (detail == null || detail.isEmpty()) && (date == null || date.isEmpty()) && (author == null || author.isEmpty())
1159           && (identifier == null || identifier.isEmpty()) && (reference == null || reference.isEmpty())
1160           && (mitigation == null || mitigation.isEmpty());
1161      }
1162
1163  @Override
1164  public ResourceType getResourceType() {
1165    return ResourceType.DetectedIssue;
1166   }
1167
1168 /**
1169   * Search parameter: <b>author</b>
1170   * <p>
1171   * Description: <b>The provider or device that identified the issue</b><br>
1172   * Type: <b>reference</b><br>
1173   * Path: <b>DetectedIssue.author</b><br>
1174   * </p>
1175   */
1176  @SearchParamDefinition(name="author", path="DetectedIssue.author", description="The provider or device that identified the issue", type="reference" )
1177  public static final String SP_AUTHOR = "author";
1178 /**
1179   * <b>Fluent Client</b> search parameter constant for <b>author</b>
1180   * <p>
1181   * Description: <b>The provider or device that identified the issue</b><br>
1182   * Type: <b>reference</b><br>
1183   * Path: <b>DetectedIssue.author</b><br>
1184   * </p>
1185   */
1186  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam AUTHOR = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_AUTHOR);
1187
1188/**
1189   * Constant for fluent queries to be used to add include statements. Specifies
1190   * the path value of "<b>DetectedIssue:author</b>".
1191   */
1192  public static final ca.uhn.fhir.model.api.Include INCLUDE_AUTHOR = new ca.uhn.fhir.model.api.Include("DetectedIssue:author").toLocked();
1193
1194 /**
1195   * Search parameter: <b>category</b>
1196   * <p>
1197   * Description: <b>Issue Category, e.g. drug-drug, duplicate therapy, etc.</b><br>
1198   * Type: <b>token</b><br>
1199   * Path: <b>DetectedIssue.category</b><br>
1200   * </p>
1201   */
1202  @SearchParamDefinition(name="category", path="DetectedIssue.category", description="Issue Category, e.g. drug-drug, duplicate therapy, etc.", type="token" )
1203  public static final String SP_CATEGORY = "category";
1204 /**
1205   * <b>Fluent Client</b> search parameter constant for <b>category</b>
1206   * <p>
1207   * Description: <b>Issue Category, e.g. drug-drug, duplicate therapy, etc.</b><br>
1208   * Type: <b>token</b><br>
1209   * Path: <b>DetectedIssue.category</b><br>
1210   * </p>
1211   */
1212  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CATEGORY = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CATEGORY);
1213
1214 /**
1215   * Search parameter: <b>implicated</b>
1216   * <p>
1217   * Description: <b>Problem resource</b><br>
1218   * Type: <b>reference</b><br>
1219   * Path: <b>DetectedIssue.implicated</b><br>
1220   * </p>
1221   */
1222  @SearchParamDefinition(name="implicated", path="DetectedIssue.implicated", description="Problem resource", type="reference" )
1223  public static final String SP_IMPLICATED = "implicated";
1224 /**
1225   * <b>Fluent Client</b> search parameter constant for <b>implicated</b>
1226   * <p>
1227   * Description: <b>Problem resource</b><br>
1228   * Type: <b>reference</b><br>
1229   * Path: <b>DetectedIssue.implicated</b><br>
1230   * </p>
1231   */
1232  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam IMPLICATED = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_IMPLICATED);
1233
1234/**
1235   * Constant for fluent queries to be used to add include statements. Specifies
1236   * the path value of "<b>DetectedIssue:implicated</b>".
1237   */
1238  public static final ca.uhn.fhir.model.api.Include INCLUDE_IMPLICATED = new ca.uhn.fhir.model.api.Include("DetectedIssue:implicated").toLocked();
1239
1240 /**
1241   * Search parameter: <b>patient</b>
1242   * <p>
1243   * Description: <b>Associated patient</b><br>
1244   * Type: <b>reference</b><br>
1245   * Path: <b>DetectedIssue.patient</b><br>
1246   * </p>
1247   */
1248  @SearchParamDefinition(name="patient", path="DetectedIssue.patient", description="Associated patient", type="reference" )
1249  public static final String SP_PATIENT = "patient";
1250 /**
1251   * <b>Fluent Client</b> search parameter constant for <b>patient</b>
1252   * <p>
1253   * Description: <b>Associated patient</b><br>
1254   * Type: <b>reference</b><br>
1255   * Path: <b>DetectedIssue.patient</b><br>
1256   * </p>
1257   */
1258  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PATIENT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PATIENT);
1259
1260/**
1261   * Constant for fluent queries to be used to add include statements. Specifies
1262   * the path value of "<b>DetectedIssue:patient</b>".
1263   */
1264  public static final ca.uhn.fhir.model.api.Include INCLUDE_PATIENT = new ca.uhn.fhir.model.api.Include("DetectedIssue:patient").toLocked();
1265
1266 /**
1267   * Search parameter: <b>date</b>
1268   * <p>
1269   * Description: <b>When identified</b><br>
1270   * Type: <b>date</b><br>
1271   * Path: <b>DetectedIssue.date</b><br>
1272   * </p>
1273   */
1274  @SearchParamDefinition(name="date", path="DetectedIssue.date", description="When identified", type="date" )
1275  public static final String SP_DATE = "date";
1276 /**
1277   * <b>Fluent Client</b> search parameter constant for <b>date</b>
1278   * <p>
1279   * Description: <b>When identified</b><br>
1280   * Type: <b>date</b><br>
1281   * Path: <b>DetectedIssue.date</b><br>
1282   * </p>
1283   */
1284  public static final ca.uhn.fhir.rest.gclient.DateClientParam DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_DATE);
1285
1286 /**
1287   * Search parameter: <b>identifier</b>
1288   * <p>
1289   * Description: <b>Unique id for the detected issue</b><br>
1290   * Type: <b>token</b><br>
1291   * Path: <b>DetectedIssue.identifier</b><br>
1292   * </p>
1293   */
1294  @SearchParamDefinition(name="identifier", path="DetectedIssue.identifier", description="Unique id for the detected issue", type="token" )
1295  public static final String SP_IDENTIFIER = "identifier";
1296 /**
1297   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
1298   * <p>
1299   * Description: <b>Unique id for the detected issue</b><br>
1300   * Type: <b>token</b><br>
1301   * Path: <b>DetectedIssue.identifier</b><br>
1302   * </p>
1303   */
1304  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
1305
1306
1307}
1308