001package org.hl7.fhir.r4.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 6, 2018 17:51-0400 for FHIR v3.4.0
033
034import java.util.*;
035
036import org.hl7.fhir.utilities.Utilities;
037import ca.uhn.fhir.model.api.annotation.ResourceDef;
038import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
039import ca.uhn.fhir.model.api.annotation.Child;
040import ca.uhn.fhir.model.api.annotation.ChildOrder;
041import ca.uhn.fhir.model.api.annotation.Description;
042import ca.uhn.fhir.model.api.annotation.Block;
043import org.hl7.fhir.instance.model.api.*;
044import org.hl7.fhir.exceptions.FHIRException;
045/**
046 * A guidance response is the formal response to a guidance request, including any output parameters returned by the evaluation, as well as the description of any proposed actions to be taken.
047 */
048@ResourceDef(name="GuidanceResponse", profile="http://hl7.org/fhir/Profile/GuidanceResponse")
049public class GuidanceResponse extends DomainResource {
050
051    public enum GuidanceResponseStatus {
052        /**
053         * The request was processed successfully
054         */
055        SUCCESS, 
056        /**
057         * The request was processed successfully, but more data may result in a more complete evaluation
058         */
059        DATAREQUESTED, 
060        /**
061         * The request was processed, but more data is required to complete the evaluation
062         */
063        DATAREQUIRED, 
064        /**
065         * The request is currently being processed
066         */
067        INPROGRESS, 
068        /**
069         * The request was not processed successfully
070         */
071        FAILURE, 
072        /**
073         * The response was entered in error
074         */
075        ENTEREDINERROR, 
076        /**
077         * added to help the parsers with the generic types
078         */
079        NULL;
080        public static GuidanceResponseStatus fromCode(String codeString) throws FHIRException {
081            if (codeString == null || "".equals(codeString))
082                return null;
083        if ("success".equals(codeString))
084          return SUCCESS;
085        if ("data-requested".equals(codeString))
086          return DATAREQUESTED;
087        if ("data-required".equals(codeString))
088          return DATAREQUIRED;
089        if ("in-progress".equals(codeString))
090          return INPROGRESS;
091        if ("failure".equals(codeString))
092          return FAILURE;
093        if ("entered-in-error".equals(codeString))
094          return ENTEREDINERROR;
095        if (Configuration.isAcceptInvalidEnums())
096          return null;
097        else
098          throw new FHIRException("Unknown GuidanceResponseStatus code '"+codeString+"'");
099        }
100        public String toCode() {
101          switch (this) {
102            case SUCCESS: return "success";
103            case DATAREQUESTED: return "data-requested";
104            case DATAREQUIRED: return "data-required";
105            case INPROGRESS: return "in-progress";
106            case FAILURE: return "failure";
107            case ENTEREDINERROR: return "entered-in-error";
108            default: return "?";
109          }
110        }
111        public String getSystem() {
112          switch (this) {
113            case SUCCESS: return "http://hl7.org/fhir/guidance-response-status";
114            case DATAREQUESTED: return "http://hl7.org/fhir/guidance-response-status";
115            case DATAREQUIRED: return "http://hl7.org/fhir/guidance-response-status";
116            case INPROGRESS: return "http://hl7.org/fhir/guidance-response-status";
117            case FAILURE: return "http://hl7.org/fhir/guidance-response-status";
118            case ENTEREDINERROR: return "http://hl7.org/fhir/guidance-response-status";
119            default: return "?";
120          }
121        }
122        public String getDefinition() {
123          switch (this) {
124            case SUCCESS: return "The request was processed successfully";
125            case DATAREQUESTED: return "The request was processed successfully, but more data may result in a more complete evaluation";
126            case DATAREQUIRED: return "The request was processed, but more data is required to complete the evaluation";
127            case INPROGRESS: return "The request is currently being processed";
128            case FAILURE: return "The request was not processed successfully";
129            case ENTEREDINERROR: return "The response was entered in error";
130            default: return "?";
131          }
132        }
133        public String getDisplay() {
134          switch (this) {
135            case SUCCESS: return "Success";
136            case DATAREQUESTED: return "Data Requested";
137            case DATAREQUIRED: return "Data Required";
138            case INPROGRESS: return "In Progress";
139            case FAILURE: return "Failure";
140            case ENTEREDINERROR: return "Entered In Error";
141            default: return "?";
142          }
143        }
144    }
145
146  public static class GuidanceResponseStatusEnumFactory implements EnumFactory<GuidanceResponseStatus> {
147    public GuidanceResponseStatus fromCode(String codeString) throws IllegalArgumentException {
148      if (codeString == null || "".equals(codeString))
149            if (codeString == null || "".equals(codeString))
150                return null;
151        if ("success".equals(codeString))
152          return GuidanceResponseStatus.SUCCESS;
153        if ("data-requested".equals(codeString))
154          return GuidanceResponseStatus.DATAREQUESTED;
155        if ("data-required".equals(codeString))
156          return GuidanceResponseStatus.DATAREQUIRED;
157        if ("in-progress".equals(codeString))
158          return GuidanceResponseStatus.INPROGRESS;
159        if ("failure".equals(codeString))
160          return GuidanceResponseStatus.FAILURE;
161        if ("entered-in-error".equals(codeString))
162          return GuidanceResponseStatus.ENTEREDINERROR;
163        throw new IllegalArgumentException("Unknown GuidanceResponseStatus code '"+codeString+"'");
164        }
165        public Enumeration<GuidanceResponseStatus> fromType(Base code) throws FHIRException {
166          if (code == null)
167            return null;
168          if (code.isEmpty())
169            return new Enumeration<GuidanceResponseStatus>(this);
170          String codeString = ((PrimitiveType) code).asStringValue();
171          if (codeString == null || "".equals(codeString))
172            return null;
173        if ("success".equals(codeString))
174          return new Enumeration<GuidanceResponseStatus>(this, GuidanceResponseStatus.SUCCESS);
175        if ("data-requested".equals(codeString))
176          return new Enumeration<GuidanceResponseStatus>(this, GuidanceResponseStatus.DATAREQUESTED);
177        if ("data-required".equals(codeString))
178          return new Enumeration<GuidanceResponseStatus>(this, GuidanceResponseStatus.DATAREQUIRED);
179        if ("in-progress".equals(codeString))
180          return new Enumeration<GuidanceResponseStatus>(this, GuidanceResponseStatus.INPROGRESS);
181        if ("failure".equals(codeString))
182          return new Enumeration<GuidanceResponseStatus>(this, GuidanceResponseStatus.FAILURE);
183        if ("entered-in-error".equals(codeString))
184          return new Enumeration<GuidanceResponseStatus>(this, GuidanceResponseStatus.ENTEREDINERROR);
185        throw new FHIRException("Unknown GuidanceResponseStatus code '"+codeString+"'");
186        }
187    public String toCode(GuidanceResponseStatus code) {
188      if (code == GuidanceResponseStatus.SUCCESS)
189        return "success";
190      if (code == GuidanceResponseStatus.DATAREQUESTED)
191        return "data-requested";
192      if (code == GuidanceResponseStatus.DATAREQUIRED)
193        return "data-required";
194      if (code == GuidanceResponseStatus.INPROGRESS)
195        return "in-progress";
196      if (code == GuidanceResponseStatus.FAILURE)
197        return "failure";
198      if (code == GuidanceResponseStatus.ENTEREDINERROR)
199        return "entered-in-error";
200      return "?";
201      }
202    public String toSystem(GuidanceResponseStatus code) {
203      return code.getSystem();
204      }
205    }
206
207    /**
208     * The id of the request associated with this response. If an id was given as part of the request, it will be reproduced here to enable the requester to more easily identify the response in a multi-request scenario.
209     */
210    @Child(name = "requestId", type = {IdType.class}, order=0, min=0, max=1, modifier=false, summary=true)
211    @Description(shortDefinition="The id of the request associated with this response, if any", formalDefinition="The id of the request associated with this response. If an id was given as part of the request, it will be reproduced here to enable the requester to more easily identify the response in a multi-request scenario." )
212    protected IdType requestId;
213
214    /**
215     * Allows a service to provide  unique, business identifiers for the response.
216     */
217    @Child(name = "identifier", type = {Identifier.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
218    @Description(shortDefinition="Business identifier", formalDefinition="Allows a service to provide  unique, business identifiers for the response." )
219    protected List<Identifier> identifier;
220
221    /**
222     * An identifier, CodeableConcept or canonical reference to the guidance that was requested.
223     */
224    @Child(name = "module", type = {UriType.class, CanonicalType.class, CodeableConcept.class}, order=2, min=1, max=1, modifier=false, summary=true)
225    @Description(shortDefinition="What guidance was requested", formalDefinition="An identifier, CodeableConcept or canonical reference to the guidance that was requested." )
226    protected Type module;
227
228    /**
229     * The status of the response. If the evaluation is completed successfully, the status will indicate success. However, in order to complete the evaluation, the engine may require more information. In this case, the status will be data-required, and the response will contain a description of the additional required information. If the evaluation completed successfully, but the engine determines that a potentially more accurate response could be provided if more data was available, the status will be data-requested, and the response will contain a description of the additional requested information.
230     */
231    @Child(name = "status", type = {CodeType.class}, order=3, min=1, max=1, modifier=true, summary=true)
232    @Description(shortDefinition="success | data-requested | data-required | in-progress | failure | entered-in-error", formalDefinition="The status of the response. If the evaluation is completed successfully, the status will indicate success. However, in order to complete the evaluation, the engine may require more information. In this case, the status will be data-required, and the response will contain a description of the additional required information. If the evaluation completed successfully, but the engine determines that a potentially more accurate response could be provided if more data was available, the status will be data-requested, and the response will contain a description of the additional requested information." )
233    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/guidance-response-status")
234    protected Enumeration<GuidanceResponseStatus> status;
235
236    /**
237     * The patient for which the request was processed.
238     */
239    @Child(name = "subject", type = {Patient.class, Group.class}, order=4, min=0, max=1, modifier=false, summary=false)
240    @Description(shortDefinition="Patient the request was performed for", formalDefinition="The patient for which the request was processed." )
241    protected Reference subject;
242
243    /**
244     * The actual object that is the target of the reference (The patient for which the request was processed.)
245     */
246    protected Resource subjectTarget;
247
248    /**
249     * Allows the context of the guidance response to be provided if available. In a service context, this would likely be unavailable.
250     */
251    @Child(name = "context", type = {Encounter.class, EpisodeOfCare.class}, order=5, min=0, max=1, modifier=false, summary=false)
252    @Description(shortDefinition="Encounter or Episode during which the response was returned", formalDefinition="Allows the context of the guidance response to be provided if available. In a service context, this would likely be unavailable." )
253    protected Reference context;
254
255    /**
256     * The actual object that is the target of the reference (Allows the context of the guidance response to be provided if available. In a service context, this would likely be unavailable.)
257     */
258    protected Resource contextTarget;
259
260    /**
261     * Indicates when the guidance response was processed.
262     */
263    @Child(name = "occurrenceDateTime", type = {DateTimeType.class}, order=6, min=0, max=1, modifier=false, summary=false)
264    @Description(shortDefinition="When the guidance response was processed", formalDefinition="Indicates when the guidance response was processed." )
265    protected DateTimeType occurrenceDateTime;
266
267    /**
268     * Provides a reference to the device that performed the guidance.
269     */
270    @Child(name = "performer", type = {Device.class}, order=7, min=0, max=1, modifier=false, summary=false)
271    @Description(shortDefinition="Device returning the guidance", formalDefinition="Provides a reference to the device that performed the guidance." )
272    protected Reference performer;
273
274    /**
275     * The actual object that is the target of the reference (Provides a reference to the device that performed the guidance.)
276     */
277    protected Device performerTarget;
278
279    /**
280     * Describes the reason for the guidance response in coded or textual form.
281     */
282    @Child(name = "reasonCode", type = {CodeableConcept.class}, order=8, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
283    @Description(shortDefinition="Why guidance is needed", formalDefinition="Describes the reason for the guidance response in coded or textual form." )
284    protected List<CodeableConcept> reasonCode;
285
286    /**
287     * Indicates the reason the request was initiated. This is typically provided as a parameter to the evaluation and echoed by the service, although for some use cases, such as subscription- or event-based scenarios, it may provide an indication of the cause for the response.
288     */
289    @Child(name = "reasonReference", type = {Condition.class, Observation.class, DiagnosticReport.class, DocumentReference.class}, order=9, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
290    @Description(shortDefinition="Why guidance is needed", formalDefinition="Indicates the reason the request was initiated. This is typically provided as a parameter to the evaluation and echoed by the service, although for some use cases, such as subscription- or event-based scenarios, it may provide an indication of the cause for the response." )
291    protected List<Reference> reasonReference;
292    /**
293     * The actual objects that are the target of the reference (Indicates the reason the request was initiated. This is typically provided as a parameter to the evaluation and echoed by the service, although for some use cases, such as subscription- or event-based scenarios, it may provide an indication of the cause for the response.)
294     */
295    protected List<Resource> reasonReferenceTarget;
296
297
298    /**
299     * Provides a mechanism to communicate additional information about the response.
300     */
301    @Child(name = "note", type = {Annotation.class}, order=10, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
302    @Description(shortDefinition="Additional notes about the response", formalDefinition="Provides a mechanism to communicate additional information about the response." )
303    protected List<Annotation> note;
304
305    /**
306     * Messages resulting from the evaluation of the artifact or artifacts. As part of evaluating the request, the engine may produce informational or warning messages. These messages will be provided by this element.
307     */
308    @Child(name = "evaluationMessage", type = {OperationOutcome.class}, order=11, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
309    @Description(shortDefinition="Messages resulting from the evaluation of the artifact or artifacts", formalDefinition="Messages resulting from the evaluation of the artifact or artifacts. As part of evaluating the request, the engine may produce informational or warning messages. These messages will be provided by this element." )
310    protected List<Reference> evaluationMessage;
311    /**
312     * The actual objects that are the target of the reference (Messages resulting from the evaluation of the artifact or artifacts. As part of evaluating the request, the engine may produce informational or warning messages. These messages will be provided by this element.)
313     */
314    protected List<OperationOutcome> evaluationMessageTarget;
315
316
317    /**
318     * The output parameters of the evaluation, if any. Many modules will result in the return of specific resources such as procedure or communication requests that are returned as part of the operation result. However, modules may define specific outputs that would be returned as the result of the evaluation, and these would be returned in this element.
319     */
320    @Child(name = "outputParameters", type = {Parameters.class}, order=12, min=0, max=1, modifier=false, summary=false)
321    @Description(shortDefinition="The output parameters of the evaluation, if any", formalDefinition="The output parameters of the evaluation, if any. Many modules will result in the return of specific resources such as procedure or communication requests that are returned as part of the operation result. However, modules may define specific outputs that would be returned as the result of the evaluation, and these would be returned in this element." )
322    protected Reference outputParameters;
323
324    /**
325     * The actual object that is the target of the reference (The output parameters of the evaluation, if any. Many modules will result in the return of specific resources such as procedure or communication requests that are returned as part of the operation result. However, modules may define specific outputs that would be returned as the result of the evaluation, and these would be returned in this element.)
326     */
327    protected Parameters outputParametersTarget;
328
329    /**
330     * The actions, if any, produced by the evaluation of the artifact.
331     */
332    @Child(name = "result", type = {CarePlan.class, RequestGroup.class}, order=13, min=0, max=1, modifier=false, summary=false)
333    @Description(shortDefinition="Proposed actions, if any", formalDefinition="The actions, if any, produced by the evaluation of the artifact." )
334    protected Reference result;
335
336    /**
337     * The actual object that is the target of the reference (The actions, if any, produced by the evaluation of the artifact.)
338     */
339    protected Resource resultTarget;
340
341    /**
342     * If the evaluation could not be completed due to lack of information, or additional information would potentially result in a more accurate response, this element will a description of the data required in order to proceed with the evaluation. A subsequent request to the service should include this data.
343     */
344    @Child(name = "dataRequirement", type = {DataRequirement.class}, order=14, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
345    @Description(shortDefinition="Additional required data", formalDefinition="If the evaluation could not be completed due to lack of information, or additional information would potentially result in a more accurate response, this element will a description of the data required in order to proceed with the evaluation. A subsequent request to the service should include this data." )
346    protected List<DataRequirement> dataRequirement;
347
348    private static final long serialVersionUID = -1809604960L;
349
350  /**
351   * Constructor
352   */
353    public GuidanceResponse() {
354      super();
355    }
356
357  /**
358   * Constructor
359   */
360    public GuidanceResponse(Type module, Enumeration<GuidanceResponseStatus> status) {
361      super();
362      this.module = module;
363      this.status = status;
364    }
365
366    /**
367     * @return {@link #requestId} (The id of the request associated with this response. If an id was given as part of the request, it will be reproduced here to enable the requester to more easily identify the response in a multi-request scenario.). This is the underlying object with id, value and extensions. The accessor "getRequestId" gives direct access to the value
368     */
369    public IdType getRequestIdElement() { 
370      if (this.requestId == null)
371        if (Configuration.errorOnAutoCreate())
372          throw new Error("Attempt to auto-create GuidanceResponse.requestId");
373        else if (Configuration.doAutoCreate())
374          this.requestId = new IdType(); // bb
375      return this.requestId;
376    }
377
378    public boolean hasRequestIdElement() { 
379      return this.requestId != null && !this.requestId.isEmpty();
380    }
381
382    public boolean hasRequestId() { 
383      return this.requestId != null && !this.requestId.isEmpty();
384    }
385
386    /**
387     * @param value {@link #requestId} (The id of the request associated with this response. If an id was given as part of the request, it will be reproduced here to enable the requester to more easily identify the response in a multi-request scenario.). This is the underlying object with id, value and extensions. The accessor "getRequestId" gives direct access to the value
388     */
389    public GuidanceResponse setRequestIdElement(IdType value) { 
390      this.requestId = value;
391      return this;
392    }
393
394    /**
395     * @return The id of the request associated with this response. If an id was given as part of the request, it will be reproduced here to enable the requester to more easily identify the response in a multi-request scenario.
396     */
397    public String getRequestId() { 
398      return this.requestId == null ? null : this.requestId.getValue();
399    }
400
401    /**
402     * @param value The id of the request associated with this response. If an id was given as part of the request, it will be reproduced here to enable the requester to more easily identify the response in a multi-request scenario.
403     */
404    public GuidanceResponse setRequestId(String value) { 
405      if (Utilities.noString(value))
406        this.requestId = null;
407      else {
408        if (this.requestId == null)
409          this.requestId = new IdType();
410        this.requestId.setValue(value);
411      }
412      return this;
413    }
414
415    /**
416     * @return {@link #identifier} (Allows a service to provide  unique, business identifiers for the response.)
417     */
418    public List<Identifier> getIdentifier() { 
419      if (this.identifier == null)
420        this.identifier = new ArrayList<Identifier>();
421      return this.identifier;
422    }
423
424    /**
425     * @return Returns a reference to <code>this</code> for easy method chaining
426     */
427    public GuidanceResponse setIdentifier(List<Identifier> theIdentifier) { 
428      this.identifier = theIdentifier;
429      return this;
430    }
431
432    public boolean hasIdentifier() { 
433      if (this.identifier == null)
434        return false;
435      for (Identifier item : this.identifier)
436        if (!item.isEmpty())
437          return true;
438      return false;
439    }
440
441    public Identifier addIdentifier() { //3
442      Identifier t = new Identifier();
443      if (this.identifier == null)
444        this.identifier = new ArrayList<Identifier>();
445      this.identifier.add(t);
446      return t;
447    }
448
449    public GuidanceResponse addIdentifier(Identifier t) { //3
450      if (t == null)
451        return this;
452      if (this.identifier == null)
453        this.identifier = new ArrayList<Identifier>();
454      this.identifier.add(t);
455      return this;
456    }
457
458    /**
459     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist
460     */
461    public Identifier getIdentifierFirstRep() { 
462      if (getIdentifier().isEmpty()) {
463        addIdentifier();
464      }
465      return getIdentifier().get(0);
466    }
467
468    /**
469     * @return {@link #module} (An identifier, CodeableConcept or canonical reference to the guidance that was requested.)
470     */
471    public Type getModule() { 
472      return this.module;
473    }
474
475    /**
476     * @return {@link #module} (An identifier, CodeableConcept or canonical reference to the guidance that was requested.)
477     */
478    public UriType getModuleUriType() throws FHIRException { 
479      if (this.module == null)
480        return null;
481      if (!(this.module instanceof UriType))
482        throw new FHIRException("Type mismatch: the type UriType was expected, but "+this.module.getClass().getName()+" was encountered");
483      return (UriType) this.module;
484    }
485
486    public boolean hasModuleUriType() { 
487      return this != null && this.module instanceof UriType;
488    }
489
490    /**
491     * @return {@link #module} (An identifier, CodeableConcept or canonical reference to the guidance that was requested.)
492     */
493    public CanonicalType getModuleCanonicalType() throws FHIRException { 
494      if (this.module == null)
495        return null;
496      if (!(this.module instanceof CanonicalType))
497        throw new FHIRException("Type mismatch: the type CanonicalType was expected, but "+this.module.getClass().getName()+" was encountered");
498      return (CanonicalType) this.module;
499    }
500
501    public boolean hasModuleCanonicalType() { 
502      return this != null && this.module instanceof CanonicalType;
503    }
504
505    /**
506     * @return {@link #module} (An identifier, CodeableConcept or canonical reference to the guidance that was requested.)
507     */
508    public CodeableConcept getModuleCodeableConcept() throws FHIRException { 
509      if (this.module == null)
510        return null;
511      if (!(this.module instanceof CodeableConcept))
512        throw new FHIRException("Type mismatch: the type CodeableConcept was expected, but "+this.module.getClass().getName()+" was encountered");
513      return (CodeableConcept) this.module;
514    }
515
516    public boolean hasModuleCodeableConcept() { 
517      return this != null && this.module instanceof CodeableConcept;
518    }
519
520    public boolean hasModule() { 
521      return this.module != null && !this.module.isEmpty();
522    }
523
524    /**
525     * @param value {@link #module} (An identifier, CodeableConcept or canonical reference to the guidance that was requested.)
526     */
527    public GuidanceResponse setModule(Type value) { 
528      if (value != null && !(value instanceof UriType || value instanceof CanonicalType || value instanceof CodeableConcept))
529        throw new Error("Not the right type for GuidanceResponse.module[x]: "+value.fhirType());
530      this.module = value;
531      return this;
532    }
533
534    /**
535     * @return {@link #status} (The status of the response. If the evaluation is completed successfully, the status will indicate success. However, in order to complete the evaluation, the engine may require more information. In this case, the status will be data-required, and the response will contain a description of the additional required information. If the evaluation completed successfully, but the engine determines that a potentially more accurate response could be provided if more data was available, the status will be data-requested, and the response will contain a description of the additional requested information.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
536     */
537    public Enumeration<GuidanceResponseStatus> getStatusElement() { 
538      if (this.status == null)
539        if (Configuration.errorOnAutoCreate())
540          throw new Error("Attempt to auto-create GuidanceResponse.status");
541        else if (Configuration.doAutoCreate())
542          this.status = new Enumeration<GuidanceResponseStatus>(new GuidanceResponseStatusEnumFactory()); // bb
543      return this.status;
544    }
545
546    public boolean hasStatusElement() { 
547      return this.status != null && !this.status.isEmpty();
548    }
549
550    public boolean hasStatus() { 
551      return this.status != null && !this.status.isEmpty();
552    }
553
554    /**
555     * @param value {@link #status} (The status of the response. If the evaluation is completed successfully, the status will indicate success. However, in order to complete the evaluation, the engine may require more information. In this case, the status will be data-required, and the response will contain a description of the additional required information. If the evaluation completed successfully, but the engine determines that a potentially more accurate response could be provided if more data was available, the status will be data-requested, and the response will contain a description of the additional requested information.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
556     */
557    public GuidanceResponse setStatusElement(Enumeration<GuidanceResponseStatus> value) { 
558      this.status = value;
559      return this;
560    }
561
562    /**
563     * @return The status of the response. If the evaluation is completed successfully, the status will indicate success. However, in order to complete the evaluation, the engine may require more information. In this case, the status will be data-required, and the response will contain a description of the additional required information. If the evaluation completed successfully, but the engine determines that a potentially more accurate response could be provided if more data was available, the status will be data-requested, and the response will contain a description of the additional requested information.
564     */
565    public GuidanceResponseStatus getStatus() { 
566      return this.status == null ? null : this.status.getValue();
567    }
568
569    /**
570     * @param value The status of the response. If the evaluation is completed successfully, the status will indicate success. However, in order to complete the evaluation, the engine may require more information. In this case, the status will be data-required, and the response will contain a description of the additional required information. If the evaluation completed successfully, but the engine determines that a potentially more accurate response could be provided if more data was available, the status will be data-requested, and the response will contain a description of the additional requested information.
571     */
572    public GuidanceResponse setStatus(GuidanceResponseStatus value) { 
573        if (this.status == null)
574          this.status = new Enumeration<GuidanceResponseStatus>(new GuidanceResponseStatusEnumFactory());
575        this.status.setValue(value);
576      return this;
577    }
578
579    /**
580     * @return {@link #subject} (The patient for which the request was processed.)
581     */
582    public Reference getSubject() { 
583      if (this.subject == null)
584        if (Configuration.errorOnAutoCreate())
585          throw new Error("Attempt to auto-create GuidanceResponse.subject");
586        else if (Configuration.doAutoCreate())
587          this.subject = new Reference(); // cc
588      return this.subject;
589    }
590
591    public boolean hasSubject() { 
592      return this.subject != null && !this.subject.isEmpty();
593    }
594
595    /**
596     * @param value {@link #subject} (The patient for which the request was processed.)
597     */
598    public GuidanceResponse setSubject(Reference value) { 
599      this.subject = value;
600      return this;
601    }
602
603    /**
604     * @return {@link #subject} The actual object that is the target of the reference. The reference library doesn't populate this, but you can use it to hold the resource if you resolve it. (The patient for which the request was processed.)
605     */
606    public Resource getSubjectTarget() { 
607      return this.subjectTarget;
608    }
609
610    /**
611     * @param value {@link #subject} The actual object that is the target of the reference. The reference library doesn't use these, but you can use it to hold the resource if you resolve it. (The patient for which the request was processed.)
612     */
613    public GuidanceResponse setSubjectTarget(Resource value) { 
614      this.subjectTarget = value;
615      return this;
616    }
617
618    /**
619     * @return {@link #context} (Allows the context of the guidance response to be provided if available. In a service context, this would likely be unavailable.)
620     */
621    public Reference getContext() { 
622      if (this.context == null)
623        if (Configuration.errorOnAutoCreate())
624          throw new Error("Attempt to auto-create GuidanceResponse.context");
625        else if (Configuration.doAutoCreate())
626          this.context = new Reference(); // cc
627      return this.context;
628    }
629
630    public boolean hasContext() { 
631      return this.context != null && !this.context.isEmpty();
632    }
633
634    /**
635     * @param value {@link #context} (Allows the context of the guidance response to be provided if available. In a service context, this would likely be unavailable.)
636     */
637    public GuidanceResponse setContext(Reference value) { 
638      this.context = value;
639      return this;
640    }
641
642    /**
643     * @return {@link #context} 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. (Allows the context of the guidance response to be provided if available. In a service context, this would likely be unavailable.)
644     */
645    public Resource getContextTarget() { 
646      return this.contextTarget;
647    }
648
649    /**
650     * @param value {@link #context} 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. (Allows the context of the guidance response to be provided if available. In a service context, this would likely be unavailable.)
651     */
652    public GuidanceResponse setContextTarget(Resource value) { 
653      this.contextTarget = value;
654      return this;
655    }
656
657    /**
658     * @return {@link #occurrenceDateTime} (Indicates when the guidance response was processed.). This is the underlying object with id, value and extensions. The accessor "getOccurrenceDateTime" gives direct access to the value
659     */
660    public DateTimeType getOccurrenceDateTimeElement() { 
661      if (this.occurrenceDateTime == null)
662        if (Configuration.errorOnAutoCreate())
663          throw new Error("Attempt to auto-create GuidanceResponse.occurrenceDateTime");
664        else if (Configuration.doAutoCreate())
665          this.occurrenceDateTime = new DateTimeType(); // bb
666      return this.occurrenceDateTime;
667    }
668
669    public boolean hasOccurrenceDateTimeElement() { 
670      return this.occurrenceDateTime != null && !this.occurrenceDateTime.isEmpty();
671    }
672
673    public boolean hasOccurrenceDateTime() { 
674      return this.occurrenceDateTime != null && !this.occurrenceDateTime.isEmpty();
675    }
676
677    /**
678     * @param value {@link #occurrenceDateTime} (Indicates when the guidance response was processed.). This is the underlying object with id, value and extensions. The accessor "getOccurrenceDateTime" gives direct access to the value
679     */
680    public GuidanceResponse setOccurrenceDateTimeElement(DateTimeType value) { 
681      this.occurrenceDateTime = value;
682      return this;
683    }
684
685    /**
686     * @return Indicates when the guidance response was processed.
687     */
688    public Date getOccurrenceDateTime() { 
689      return this.occurrenceDateTime == null ? null : this.occurrenceDateTime.getValue();
690    }
691
692    /**
693     * @param value Indicates when the guidance response was processed.
694     */
695    public GuidanceResponse setOccurrenceDateTime(Date value) { 
696      if (value == null)
697        this.occurrenceDateTime = null;
698      else {
699        if (this.occurrenceDateTime == null)
700          this.occurrenceDateTime = new DateTimeType();
701        this.occurrenceDateTime.setValue(value);
702      }
703      return this;
704    }
705
706    /**
707     * @return {@link #performer} (Provides a reference to the device that performed the guidance.)
708     */
709    public Reference getPerformer() { 
710      if (this.performer == null)
711        if (Configuration.errorOnAutoCreate())
712          throw new Error("Attempt to auto-create GuidanceResponse.performer");
713        else if (Configuration.doAutoCreate())
714          this.performer = new Reference(); // cc
715      return this.performer;
716    }
717
718    public boolean hasPerformer() { 
719      return this.performer != null && !this.performer.isEmpty();
720    }
721
722    /**
723     * @param value {@link #performer} (Provides a reference to the device that performed the guidance.)
724     */
725    public GuidanceResponse setPerformer(Reference value) { 
726      this.performer = value;
727      return this;
728    }
729
730    /**
731     * @return {@link #performer} 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. (Provides a reference to the device that performed the guidance.)
732     */
733    public Device getPerformerTarget() { 
734      if (this.performerTarget == null)
735        if (Configuration.errorOnAutoCreate())
736          throw new Error("Attempt to auto-create GuidanceResponse.performer");
737        else if (Configuration.doAutoCreate())
738          this.performerTarget = new Device(); // aa
739      return this.performerTarget;
740    }
741
742    /**
743     * @param value {@link #performer} 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. (Provides a reference to the device that performed the guidance.)
744     */
745    public GuidanceResponse setPerformerTarget(Device value) { 
746      this.performerTarget = value;
747      return this;
748    }
749
750    /**
751     * @return {@link #reasonCode} (Describes the reason for the guidance response in coded or textual form.)
752     */
753    public List<CodeableConcept> getReasonCode() { 
754      if (this.reasonCode == null)
755        this.reasonCode = new ArrayList<CodeableConcept>();
756      return this.reasonCode;
757    }
758
759    /**
760     * @return Returns a reference to <code>this</code> for easy method chaining
761     */
762    public GuidanceResponse setReasonCode(List<CodeableConcept> theReasonCode) { 
763      this.reasonCode = theReasonCode;
764      return this;
765    }
766
767    public boolean hasReasonCode() { 
768      if (this.reasonCode == null)
769        return false;
770      for (CodeableConcept item : this.reasonCode)
771        if (!item.isEmpty())
772          return true;
773      return false;
774    }
775
776    public CodeableConcept addReasonCode() { //3
777      CodeableConcept t = new CodeableConcept();
778      if (this.reasonCode == null)
779        this.reasonCode = new ArrayList<CodeableConcept>();
780      this.reasonCode.add(t);
781      return t;
782    }
783
784    public GuidanceResponse addReasonCode(CodeableConcept t) { //3
785      if (t == null)
786        return this;
787      if (this.reasonCode == null)
788        this.reasonCode = new ArrayList<CodeableConcept>();
789      this.reasonCode.add(t);
790      return this;
791    }
792
793    /**
794     * @return The first repetition of repeating field {@link #reasonCode}, creating it if it does not already exist
795     */
796    public CodeableConcept getReasonCodeFirstRep() { 
797      if (getReasonCode().isEmpty()) {
798        addReasonCode();
799      }
800      return getReasonCode().get(0);
801    }
802
803    /**
804     * @return {@link #reasonReference} (Indicates the reason the request was initiated. This is typically provided as a parameter to the evaluation and echoed by the service, although for some use cases, such as subscription- or event-based scenarios, it may provide an indication of the cause for the response.)
805     */
806    public List<Reference> getReasonReference() { 
807      if (this.reasonReference == null)
808        this.reasonReference = new ArrayList<Reference>();
809      return this.reasonReference;
810    }
811
812    /**
813     * @return Returns a reference to <code>this</code> for easy method chaining
814     */
815    public GuidanceResponse setReasonReference(List<Reference> theReasonReference) { 
816      this.reasonReference = theReasonReference;
817      return this;
818    }
819
820    public boolean hasReasonReference() { 
821      if (this.reasonReference == null)
822        return false;
823      for (Reference item : this.reasonReference)
824        if (!item.isEmpty())
825          return true;
826      return false;
827    }
828
829    public Reference addReasonReference() { //3
830      Reference t = new Reference();
831      if (this.reasonReference == null)
832        this.reasonReference = new ArrayList<Reference>();
833      this.reasonReference.add(t);
834      return t;
835    }
836
837    public GuidanceResponse addReasonReference(Reference t) { //3
838      if (t == null)
839        return this;
840      if (this.reasonReference == null)
841        this.reasonReference = new ArrayList<Reference>();
842      this.reasonReference.add(t);
843      return this;
844    }
845
846    /**
847     * @return The first repetition of repeating field {@link #reasonReference}, creating it if it does not already exist
848     */
849    public Reference getReasonReferenceFirstRep() { 
850      if (getReasonReference().isEmpty()) {
851        addReasonReference();
852      }
853      return getReasonReference().get(0);
854    }
855
856    /**
857     * @deprecated Use Reference#setResource(IBaseResource) instead
858     */
859    @Deprecated
860    public List<Resource> getReasonReferenceTarget() { 
861      if (this.reasonReferenceTarget == null)
862        this.reasonReferenceTarget = new ArrayList<Resource>();
863      return this.reasonReferenceTarget;
864    }
865
866    /**
867     * @return {@link #note} (Provides a mechanism to communicate additional information about the response.)
868     */
869    public List<Annotation> getNote() { 
870      if (this.note == null)
871        this.note = new ArrayList<Annotation>();
872      return this.note;
873    }
874
875    /**
876     * @return Returns a reference to <code>this</code> for easy method chaining
877     */
878    public GuidanceResponse setNote(List<Annotation> theNote) { 
879      this.note = theNote;
880      return this;
881    }
882
883    public boolean hasNote() { 
884      if (this.note == null)
885        return false;
886      for (Annotation item : this.note)
887        if (!item.isEmpty())
888          return true;
889      return false;
890    }
891
892    public Annotation addNote() { //3
893      Annotation t = new Annotation();
894      if (this.note == null)
895        this.note = new ArrayList<Annotation>();
896      this.note.add(t);
897      return t;
898    }
899
900    public GuidanceResponse addNote(Annotation t) { //3
901      if (t == null)
902        return this;
903      if (this.note == null)
904        this.note = new ArrayList<Annotation>();
905      this.note.add(t);
906      return this;
907    }
908
909    /**
910     * @return The first repetition of repeating field {@link #note}, creating it if it does not already exist
911     */
912    public Annotation getNoteFirstRep() { 
913      if (getNote().isEmpty()) {
914        addNote();
915      }
916      return getNote().get(0);
917    }
918
919    /**
920     * @return {@link #evaluationMessage} (Messages resulting from the evaluation of the artifact or artifacts. As part of evaluating the request, the engine may produce informational or warning messages. These messages will be provided by this element.)
921     */
922    public List<Reference> getEvaluationMessage() { 
923      if (this.evaluationMessage == null)
924        this.evaluationMessage = new ArrayList<Reference>();
925      return this.evaluationMessage;
926    }
927
928    /**
929     * @return Returns a reference to <code>this</code> for easy method chaining
930     */
931    public GuidanceResponse setEvaluationMessage(List<Reference> theEvaluationMessage) { 
932      this.evaluationMessage = theEvaluationMessage;
933      return this;
934    }
935
936    public boolean hasEvaluationMessage() { 
937      if (this.evaluationMessage == null)
938        return false;
939      for (Reference item : this.evaluationMessage)
940        if (!item.isEmpty())
941          return true;
942      return false;
943    }
944
945    public Reference addEvaluationMessage() { //3
946      Reference t = new Reference();
947      if (this.evaluationMessage == null)
948        this.evaluationMessage = new ArrayList<Reference>();
949      this.evaluationMessage.add(t);
950      return t;
951    }
952
953    public GuidanceResponse addEvaluationMessage(Reference t) { //3
954      if (t == null)
955        return this;
956      if (this.evaluationMessage == null)
957        this.evaluationMessage = new ArrayList<Reference>();
958      this.evaluationMessage.add(t);
959      return this;
960    }
961
962    /**
963     * @return The first repetition of repeating field {@link #evaluationMessage}, creating it if it does not already exist
964     */
965    public Reference getEvaluationMessageFirstRep() { 
966      if (getEvaluationMessage().isEmpty()) {
967        addEvaluationMessage();
968      }
969      return getEvaluationMessage().get(0);
970    }
971
972    /**
973     * @deprecated Use Reference#setResource(IBaseResource) instead
974     */
975    @Deprecated
976    public List<OperationOutcome> getEvaluationMessageTarget() { 
977      if (this.evaluationMessageTarget == null)
978        this.evaluationMessageTarget = new ArrayList<OperationOutcome>();
979      return this.evaluationMessageTarget;
980    }
981
982    /**
983     * @deprecated Use Reference#setResource(IBaseResource) instead
984     */
985    @Deprecated
986    public OperationOutcome addEvaluationMessageTarget() { 
987      OperationOutcome r = new OperationOutcome();
988      if (this.evaluationMessageTarget == null)
989        this.evaluationMessageTarget = new ArrayList<OperationOutcome>();
990      this.evaluationMessageTarget.add(r);
991      return r;
992    }
993
994    /**
995     * @return {@link #outputParameters} (The output parameters of the evaluation, if any. Many modules will result in the return of specific resources such as procedure or communication requests that are returned as part of the operation result. However, modules may define specific outputs that would be returned as the result of the evaluation, and these would be returned in this element.)
996     */
997    public Reference getOutputParameters() { 
998      if (this.outputParameters == null)
999        if (Configuration.errorOnAutoCreate())
1000          throw new Error("Attempt to auto-create GuidanceResponse.outputParameters");
1001        else if (Configuration.doAutoCreate())
1002          this.outputParameters = new Reference(); // cc
1003      return this.outputParameters;
1004    }
1005
1006    public boolean hasOutputParameters() { 
1007      return this.outputParameters != null && !this.outputParameters.isEmpty();
1008    }
1009
1010    /**
1011     * @param value {@link #outputParameters} (The output parameters of the evaluation, if any. Many modules will result in the return of specific resources such as procedure or communication requests that are returned as part of the operation result. However, modules may define specific outputs that would be returned as the result of the evaluation, and these would be returned in this element.)
1012     */
1013    public GuidanceResponse setOutputParameters(Reference value) { 
1014      this.outputParameters = value;
1015      return this;
1016    }
1017
1018    /**
1019     * @return {@link #outputParameters} The actual object that is the target of the reference. The reference library doesn't populate this, but you can use it to hold the resource if you resolve it. (The output parameters of the evaluation, if any. Many modules will result in the return of specific resources such as procedure or communication requests that are returned as part of the operation result. However, modules may define specific outputs that would be returned as the result of the evaluation, and these would be returned in this element.)
1020     */
1021    public Parameters getOutputParametersTarget() { 
1022      if (this.outputParametersTarget == null)
1023        if (Configuration.errorOnAutoCreate())
1024          throw new Error("Attempt to auto-create GuidanceResponse.outputParameters");
1025        else if (Configuration.doAutoCreate())
1026          this.outputParametersTarget = new Parameters(); // aa
1027      return this.outputParametersTarget;
1028    }
1029
1030    /**
1031     * @param value {@link #outputParameters} The actual object that is the target of the reference. The reference library doesn't use these, but you can use it to hold the resource if you resolve it. (The output parameters of the evaluation, if any. Many modules will result in the return of specific resources such as procedure or communication requests that are returned as part of the operation result. However, modules may define specific outputs that would be returned as the result of the evaluation, and these would be returned in this element.)
1032     */
1033    public GuidanceResponse setOutputParametersTarget(Parameters value) { 
1034      this.outputParametersTarget = value;
1035      return this;
1036    }
1037
1038    /**
1039     * @return {@link #result} (The actions, if any, produced by the evaluation of the artifact.)
1040     */
1041    public Reference getResult() { 
1042      if (this.result == null)
1043        if (Configuration.errorOnAutoCreate())
1044          throw new Error("Attempt to auto-create GuidanceResponse.result");
1045        else if (Configuration.doAutoCreate())
1046          this.result = new Reference(); // cc
1047      return this.result;
1048    }
1049
1050    public boolean hasResult() { 
1051      return this.result != null && !this.result.isEmpty();
1052    }
1053
1054    /**
1055     * @param value {@link #result} (The actions, if any, produced by the evaluation of the artifact.)
1056     */
1057    public GuidanceResponse setResult(Reference value) { 
1058      this.result = value;
1059      return this;
1060    }
1061
1062    /**
1063     * @return {@link #result} The actual object that is the target of the reference. The reference library doesn't populate this, but you can use it to hold the resource if you resolve it. (The actions, if any, produced by the evaluation of the artifact.)
1064     */
1065    public Resource getResultTarget() { 
1066      return this.resultTarget;
1067    }
1068
1069    /**
1070     * @param value {@link #result} The actual object that is the target of the reference. The reference library doesn't use these, but you can use it to hold the resource if you resolve it. (The actions, if any, produced by the evaluation of the artifact.)
1071     */
1072    public GuidanceResponse setResultTarget(Resource value) { 
1073      this.resultTarget = value;
1074      return this;
1075    }
1076
1077    /**
1078     * @return {@link #dataRequirement} (If the evaluation could not be completed due to lack of information, or additional information would potentially result in a more accurate response, this element will a description of the data required in order to proceed with the evaluation. A subsequent request to the service should include this data.)
1079     */
1080    public List<DataRequirement> getDataRequirement() { 
1081      if (this.dataRequirement == null)
1082        this.dataRequirement = new ArrayList<DataRequirement>();
1083      return this.dataRequirement;
1084    }
1085
1086    /**
1087     * @return Returns a reference to <code>this</code> for easy method chaining
1088     */
1089    public GuidanceResponse setDataRequirement(List<DataRequirement> theDataRequirement) { 
1090      this.dataRequirement = theDataRequirement;
1091      return this;
1092    }
1093
1094    public boolean hasDataRequirement() { 
1095      if (this.dataRequirement == null)
1096        return false;
1097      for (DataRequirement item : this.dataRequirement)
1098        if (!item.isEmpty())
1099          return true;
1100      return false;
1101    }
1102
1103    public DataRequirement addDataRequirement() { //3
1104      DataRequirement t = new DataRequirement();
1105      if (this.dataRequirement == null)
1106        this.dataRequirement = new ArrayList<DataRequirement>();
1107      this.dataRequirement.add(t);
1108      return t;
1109    }
1110
1111    public GuidanceResponse addDataRequirement(DataRequirement t) { //3
1112      if (t == null)
1113        return this;
1114      if (this.dataRequirement == null)
1115        this.dataRequirement = new ArrayList<DataRequirement>();
1116      this.dataRequirement.add(t);
1117      return this;
1118    }
1119
1120    /**
1121     * @return The first repetition of repeating field {@link #dataRequirement}, creating it if it does not already exist
1122     */
1123    public DataRequirement getDataRequirementFirstRep() { 
1124      if (getDataRequirement().isEmpty()) {
1125        addDataRequirement();
1126      }
1127      return getDataRequirement().get(0);
1128    }
1129
1130      protected void listChildren(List<Property> children) {
1131        super.listChildren(children);
1132        children.add(new Property("requestId", "id", "The id of the request associated with this response. If an id was given as part of the request, it will be reproduced here to enable the requester to more easily identify the response in a multi-request scenario.", 0, 1, requestId));
1133        children.add(new Property("identifier", "Identifier", "Allows a service to provide  unique, business identifiers for the response.", 0, java.lang.Integer.MAX_VALUE, identifier));
1134        children.add(new Property("module[x]", "uri|canonical|CodeableConcept", "An identifier, CodeableConcept or canonical reference to the guidance that was requested.", 0, 1, module));
1135        children.add(new Property("status", "code", "The status of the response. If the evaluation is completed successfully, the status will indicate success. However, in order to complete the evaluation, the engine may require more information. In this case, the status will be data-required, and the response will contain a description of the additional required information. If the evaluation completed successfully, but the engine determines that a potentially more accurate response could be provided if more data was available, the status will be data-requested, and the response will contain a description of the additional requested information.", 0, 1, status));
1136        children.add(new Property("subject", "Reference(Patient|Group)", "The patient for which the request was processed.", 0, 1, subject));
1137        children.add(new Property("context", "Reference(Encounter|EpisodeOfCare)", "Allows the context of the guidance response to be provided if available. In a service context, this would likely be unavailable.", 0, 1, context));
1138        children.add(new Property("occurrenceDateTime", "dateTime", "Indicates when the guidance response was processed.", 0, 1, occurrenceDateTime));
1139        children.add(new Property("performer", "Reference(Device)", "Provides a reference to the device that performed the guidance.", 0, 1, performer));
1140        children.add(new Property("reasonCode", "CodeableConcept", "Describes the reason for the guidance response in coded or textual form.", 0, java.lang.Integer.MAX_VALUE, reasonCode));
1141        children.add(new Property("reasonReference", "Reference(Condition|Observation|DiagnosticReport|DocumentReference)", "Indicates the reason the request was initiated. This is typically provided as a parameter to the evaluation and echoed by the service, although for some use cases, such as subscription- or event-based scenarios, it may provide an indication of the cause for the response.", 0, java.lang.Integer.MAX_VALUE, reasonReference));
1142        children.add(new Property("note", "Annotation", "Provides a mechanism to communicate additional information about the response.", 0, java.lang.Integer.MAX_VALUE, note));
1143        children.add(new Property("evaluationMessage", "Reference(OperationOutcome)", "Messages resulting from the evaluation of the artifact or artifacts. As part of evaluating the request, the engine may produce informational or warning messages. These messages will be provided by this element.", 0, java.lang.Integer.MAX_VALUE, evaluationMessage));
1144        children.add(new Property("outputParameters", "Reference(Parameters)", "The output parameters of the evaluation, if any. Many modules will result in the return of specific resources such as procedure or communication requests that are returned as part of the operation result. However, modules may define specific outputs that would be returned as the result of the evaluation, and these would be returned in this element.", 0, 1, outputParameters));
1145        children.add(new Property("result", "Reference(CarePlan|RequestGroup)", "The actions, if any, produced by the evaluation of the artifact.", 0, 1, result));
1146        children.add(new Property("dataRequirement", "DataRequirement", "If the evaluation could not be completed due to lack of information, or additional information would potentially result in a more accurate response, this element will a description of the data required in order to proceed with the evaluation. A subsequent request to the service should include this data.", 0, java.lang.Integer.MAX_VALUE, dataRequirement));
1147      }
1148
1149      @Override
1150      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1151        switch (_hash) {
1152        case 693933066: /*requestId*/  return new Property("requestId", "id", "The id of the request associated with this response. If an id was given as part of the request, it will be reproduced here to enable the requester to more easily identify the response in a multi-request scenario.", 0, 1, requestId);
1153        case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "Allows a service to provide  unique, business identifiers for the response.", 0, java.lang.Integer.MAX_VALUE, identifier);
1154        case -1552083308: /*module[x]*/  return new Property("module[x]", "uri|canonical|CodeableConcept", "An identifier, CodeableConcept or canonical reference to the guidance that was requested.", 0, 1, module);
1155        case -1068784020: /*module*/  return new Property("module[x]", "uri|canonical|CodeableConcept", "An identifier, CodeableConcept or canonical reference to the guidance that was requested.", 0, 1, module);
1156        case -1552089248: /*moduleUri*/  return new Property("module[x]", "uri|canonical|CodeableConcept", "An identifier, CodeableConcept or canonical reference to the guidance that was requested.", 0, 1, module);
1157        case -1153656856: /*moduleCanonical*/  return new Property("module[x]", "uri|canonical|CodeableConcept", "An identifier, CodeableConcept or canonical reference to the guidance that was requested.", 0, 1, module);
1158        case -1157899371: /*moduleCodeableConcept*/  return new Property("module[x]", "uri|canonical|CodeableConcept", "An identifier, CodeableConcept or canonical reference to the guidance that was requested.", 0, 1, module);
1159        case -892481550: /*status*/  return new Property("status", "code", "The status of the response. If the evaluation is completed successfully, the status will indicate success. However, in order to complete the evaluation, the engine may require more information. In this case, the status will be data-required, and the response will contain a description of the additional required information. If the evaluation completed successfully, but the engine determines that a potentially more accurate response could be provided if more data was available, the status will be data-requested, and the response will contain a description of the additional requested information.", 0, 1, status);
1160        case -1867885268: /*subject*/  return new Property("subject", "Reference(Patient|Group)", "The patient for which the request was processed.", 0, 1, subject);
1161        case 951530927: /*context*/  return new Property("context", "Reference(Encounter|EpisodeOfCare)", "Allows the context of the guidance response to be provided if available. In a service context, this would likely be unavailable.", 0, 1, context);
1162        case -298443636: /*occurrenceDateTime*/  return new Property("occurrenceDateTime", "dateTime", "Indicates when the guidance response was processed.", 0, 1, occurrenceDateTime);
1163        case 481140686: /*performer*/  return new Property("performer", "Reference(Device)", "Provides a reference to the device that performed the guidance.", 0, 1, performer);
1164        case 722137681: /*reasonCode*/  return new Property("reasonCode", "CodeableConcept", "Describes the reason for the guidance response in coded or textual form.", 0, java.lang.Integer.MAX_VALUE, reasonCode);
1165        case -1146218137: /*reasonReference*/  return new Property("reasonReference", "Reference(Condition|Observation|DiagnosticReport|DocumentReference)", "Indicates the reason the request was initiated. This is typically provided as a parameter to the evaluation and echoed by the service, although for some use cases, such as subscription- or event-based scenarios, it may provide an indication of the cause for the response.", 0, java.lang.Integer.MAX_VALUE, reasonReference);
1166        case 3387378: /*note*/  return new Property("note", "Annotation", "Provides a mechanism to communicate additional information about the response.", 0, java.lang.Integer.MAX_VALUE, note);
1167        case 1081619755: /*evaluationMessage*/  return new Property("evaluationMessage", "Reference(OperationOutcome)", "Messages resulting from the evaluation of the artifact or artifacts. As part of evaluating the request, the engine may produce informational or warning messages. These messages will be provided by this element.", 0, java.lang.Integer.MAX_VALUE, evaluationMessage);
1168        case 525609419: /*outputParameters*/  return new Property("outputParameters", "Reference(Parameters)", "The output parameters of the evaluation, if any. Many modules will result in the return of specific resources such as procedure or communication requests that are returned as part of the operation result. However, modules may define specific outputs that would be returned as the result of the evaluation, and these would be returned in this element.", 0, 1, outputParameters);
1169        case -934426595: /*result*/  return new Property("result", "Reference(CarePlan|RequestGroup)", "The actions, if any, produced by the evaluation of the artifact.", 0, 1, result);
1170        case 629147193: /*dataRequirement*/  return new Property("dataRequirement", "DataRequirement", "If the evaluation could not be completed due to lack of information, or additional information would potentially result in a more accurate response, this element will a description of the data required in order to proceed with the evaluation. A subsequent request to the service should include this data.", 0, java.lang.Integer.MAX_VALUE, dataRequirement);
1171        default: return super.getNamedProperty(_hash, _name, _checkValid);
1172        }
1173
1174      }
1175
1176      @Override
1177      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1178        switch (hash) {
1179        case 693933066: /*requestId*/ return this.requestId == null ? new Base[0] : new Base[] {this.requestId}; // IdType
1180        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
1181        case -1068784020: /*module*/ return this.module == null ? new Base[0] : new Base[] {this.module}; // Type
1182        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<GuidanceResponseStatus>
1183        case -1867885268: /*subject*/ return this.subject == null ? new Base[0] : new Base[] {this.subject}; // Reference
1184        case 951530927: /*context*/ return this.context == null ? new Base[0] : new Base[] {this.context}; // Reference
1185        case -298443636: /*occurrenceDateTime*/ return this.occurrenceDateTime == null ? new Base[0] : new Base[] {this.occurrenceDateTime}; // DateTimeType
1186        case 481140686: /*performer*/ return this.performer == null ? new Base[0] : new Base[] {this.performer}; // Reference
1187        case 722137681: /*reasonCode*/ return this.reasonCode == null ? new Base[0] : this.reasonCode.toArray(new Base[this.reasonCode.size()]); // CodeableConcept
1188        case -1146218137: /*reasonReference*/ return this.reasonReference == null ? new Base[0] : this.reasonReference.toArray(new Base[this.reasonReference.size()]); // Reference
1189        case 3387378: /*note*/ return this.note == null ? new Base[0] : this.note.toArray(new Base[this.note.size()]); // Annotation
1190        case 1081619755: /*evaluationMessage*/ return this.evaluationMessage == null ? new Base[0] : this.evaluationMessage.toArray(new Base[this.evaluationMessage.size()]); // Reference
1191        case 525609419: /*outputParameters*/ return this.outputParameters == null ? new Base[0] : new Base[] {this.outputParameters}; // Reference
1192        case -934426595: /*result*/ return this.result == null ? new Base[0] : new Base[] {this.result}; // Reference
1193        case 629147193: /*dataRequirement*/ return this.dataRequirement == null ? new Base[0] : this.dataRequirement.toArray(new Base[this.dataRequirement.size()]); // DataRequirement
1194        default: return super.getProperty(hash, name, checkValid);
1195        }
1196
1197      }
1198
1199      @Override
1200      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1201        switch (hash) {
1202        case 693933066: // requestId
1203          this.requestId = castToId(value); // IdType
1204          return value;
1205        case -1618432855: // identifier
1206          this.getIdentifier().add(castToIdentifier(value)); // Identifier
1207          return value;
1208        case -1068784020: // module
1209          this.module = castToType(value); // Type
1210          return value;
1211        case -892481550: // status
1212          value = new GuidanceResponseStatusEnumFactory().fromType(castToCode(value));
1213          this.status = (Enumeration) value; // Enumeration<GuidanceResponseStatus>
1214          return value;
1215        case -1867885268: // subject
1216          this.subject = castToReference(value); // Reference
1217          return value;
1218        case 951530927: // context
1219          this.context = castToReference(value); // Reference
1220          return value;
1221        case -298443636: // occurrenceDateTime
1222          this.occurrenceDateTime = castToDateTime(value); // DateTimeType
1223          return value;
1224        case 481140686: // performer
1225          this.performer = castToReference(value); // Reference
1226          return value;
1227        case 722137681: // reasonCode
1228          this.getReasonCode().add(castToCodeableConcept(value)); // CodeableConcept
1229          return value;
1230        case -1146218137: // reasonReference
1231          this.getReasonReference().add(castToReference(value)); // Reference
1232          return value;
1233        case 3387378: // note
1234          this.getNote().add(castToAnnotation(value)); // Annotation
1235          return value;
1236        case 1081619755: // evaluationMessage
1237          this.getEvaluationMessage().add(castToReference(value)); // Reference
1238          return value;
1239        case 525609419: // outputParameters
1240          this.outputParameters = castToReference(value); // Reference
1241          return value;
1242        case -934426595: // result
1243          this.result = castToReference(value); // Reference
1244          return value;
1245        case 629147193: // dataRequirement
1246          this.getDataRequirement().add(castToDataRequirement(value)); // DataRequirement
1247          return value;
1248        default: return super.setProperty(hash, name, value);
1249        }
1250
1251      }
1252
1253      @Override
1254      public Base setProperty(String name, Base value) throws FHIRException {
1255        if (name.equals("requestId")) {
1256          this.requestId = castToId(value); // IdType
1257        } else if (name.equals("identifier")) {
1258          this.getIdentifier().add(castToIdentifier(value));
1259        } else if (name.equals("module[x]")) {
1260          this.module = castToType(value); // Type
1261        } else if (name.equals("status")) {
1262          value = new GuidanceResponseStatusEnumFactory().fromType(castToCode(value));
1263          this.status = (Enumeration) value; // Enumeration<GuidanceResponseStatus>
1264        } else if (name.equals("subject")) {
1265          this.subject = castToReference(value); // Reference
1266        } else if (name.equals("context")) {
1267          this.context = castToReference(value); // Reference
1268        } else if (name.equals("occurrenceDateTime")) {
1269          this.occurrenceDateTime = castToDateTime(value); // DateTimeType
1270        } else if (name.equals("performer")) {
1271          this.performer = castToReference(value); // Reference
1272        } else if (name.equals("reasonCode")) {
1273          this.getReasonCode().add(castToCodeableConcept(value));
1274        } else if (name.equals("reasonReference")) {
1275          this.getReasonReference().add(castToReference(value));
1276        } else if (name.equals("note")) {
1277          this.getNote().add(castToAnnotation(value));
1278        } else if (name.equals("evaluationMessage")) {
1279          this.getEvaluationMessage().add(castToReference(value));
1280        } else if (name.equals("outputParameters")) {
1281          this.outputParameters = castToReference(value); // Reference
1282        } else if (name.equals("result")) {
1283          this.result = castToReference(value); // Reference
1284        } else if (name.equals("dataRequirement")) {
1285          this.getDataRequirement().add(castToDataRequirement(value));
1286        } else
1287          return super.setProperty(name, value);
1288        return value;
1289      }
1290
1291      @Override
1292      public Base makeProperty(int hash, String name) throws FHIRException {
1293        switch (hash) {
1294        case 693933066:  return getRequestIdElement();
1295        case -1618432855:  return addIdentifier(); 
1296        case -1552083308:  return getModule(); 
1297        case -1068784020:  return getModule(); 
1298        case -892481550:  return getStatusElement();
1299        case -1867885268:  return getSubject(); 
1300        case 951530927:  return getContext(); 
1301        case -298443636:  return getOccurrenceDateTimeElement();
1302        case 481140686:  return getPerformer(); 
1303        case 722137681:  return addReasonCode(); 
1304        case -1146218137:  return addReasonReference(); 
1305        case 3387378:  return addNote(); 
1306        case 1081619755:  return addEvaluationMessage(); 
1307        case 525609419:  return getOutputParameters(); 
1308        case -934426595:  return getResult(); 
1309        case 629147193:  return addDataRequirement(); 
1310        default: return super.makeProperty(hash, name);
1311        }
1312
1313      }
1314
1315      @Override
1316      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1317        switch (hash) {
1318        case 693933066: /*requestId*/ return new String[] {"id"};
1319        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
1320        case -1068784020: /*module*/ return new String[] {"uri", "canonical", "CodeableConcept"};
1321        case -892481550: /*status*/ return new String[] {"code"};
1322        case -1867885268: /*subject*/ return new String[] {"Reference"};
1323        case 951530927: /*context*/ return new String[] {"Reference"};
1324        case -298443636: /*occurrenceDateTime*/ return new String[] {"dateTime"};
1325        case 481140686: /*performer*/ return new String[] {"Reference"};
1326        case 722137681: /*reasonCode*/ return new String[] {"CodeableConcept"};
1327        case -1146218137: /*reasonReference*/ return new String[] {"Reference"};
1328        case 3387378: /*note*/ return new String[] {"Annotation"};
1329        case 1081619755: /*evaluationMessage*/ return new String[] {"Reference"};
1330        case 525609419: /*outputParameters*/ return new String[] {"Reference"};
1331        case -934426595: /*result*/ return new String[] {"Reference"};
1332        case 629147193: /*dataRequirement*/ return new String[] {"DataRequirement"};
1333        default: return super.getTypesForProperty(hash, name);
1334        }
1335
1336      }
1337
1338      @Override
1339      public Base addChild(String name) throws FHIRException {
1340        if (name.equals("requestId")) {
1341          throw new FHIRException("Cannot call addChild on a primitive type GuidanceResponse.requestId");
1342        }
1343        else if (name.equals("identifier")) {
1344          return addIdentifier();
1345        }
1346        else if (name.equals("moduleUri")) {
1347          this.module = new UriType();
1348          return this.module;
1349        }
1350        else if (name.equals("moduleCanonical")) {
1351          this.module = new CanonicalType();
1352          return this.module;
1353        }
1354        else if (name.equals("moduleCodeableConcept")) {
1355          this.module = new CodeableConcept();
1356          return this.module;
1357        }
1358        else if (name.equals("status")) {
1359          throw new FHIRException("Cannot call addChild on a primitive type GuidanceResponse.status");
1360        }
1361        else if (name.equals("subject")) {
1362          this.subject = new Reference();
1363          return this.subject;
1364        }
1365        else if (name.equals("context")) {
1366          this.context = new Reference();
1367          return this.context;
1368        }
1369        else if (name.equals("occurrenceDateTime")) {
1370          throw new FHIRException("Cannot call addChild on a primitive type GuidanceResponse.occurrenceDateTime");
1371        }
1372        else if (name.equals("performer")) {
1373          this.performer = new Reference();
1374          return this.performer;
1375        }
1376        else if (name.equals("reasonCode")) {
1377          return addReasonCode();
1378        }
1379        else if (name.equals("reasonReference")) {
1380          return addReasonReference();
1381        }
1382        else if (name.equals("note")) {
1383          return addNote();
1384        }
1385        else if (name.equals("evaluationMessage")) {
1386          return addEvaluationMessage();
1387        }
1388        else if (name.equals("outputParameters")) {
1389          this.outputParameters = new Reference();
1390          return this.outputParameters;
1391        }
1392        else if (name.equals("result")) {
1393          this.result = new Reference();
1394          return this.result;
1395        }
1396        else if (name.equals("dataRequirement")) {
1397          return addDataRequirement();
1398        }
1399        else
1400          return super.addChild(name);
1401      }
1402
1403  public String fhirType() {
1404    return "GuidanceResponse";
1405
1406  }
1407
1408      public GuidanceResponse copy() {
1409        GuidanceResponse dst = new GuidanceResponse();
1410        copyValues(dst);
1411        dst.requestId = requestId == null ? null : requestId.copy();
1412        if (identifier != null) {
1413          dst.identifier = new ArrayList<Identifier>();
1414          for (Identifier i : identifier)
1415            dst.identifier.add(i.copy());
1416        };
1417        dst.module = module == null ? null : module.copy();
1418        dst.status = status == null ? null : status.copy();
1419        dst.subject = subject == null ? null : subject.copy();
1420        dst.context = context == null ? null : context.copy();
1421        dst.occurrenceDateTime = occurrenceDateTime == null ? null : occurrenceDateTime.copy();
1422        dst.performer = performer == null ? null : performer.copy();
1423        if (reasonCode != null) {
1424          dst.reasonCode = new ArrayList<CodeableConcept>();
1425          for (CodeableConcept i : reasonCode)
1426            dst.reasonCode.add(i.copy());
1427        };
1428        if (reasonReference != null) {
1429          dst.reasonReference = new ArrayList<Reference>();
1430          for (Reference i : reasonReference)
1431            dst.reasonReference.add(i.copy());
1432        };
1433        if (note != null) {
1434          dst.note = new ArrayList<Annotation>();
1435          for (Annotation i : note)
1436            dst.note.add(i.copy());
1437        };
1438        if (evaluationMessage != null) {
1439          dst.evaluationMessage = new ArrayList<Reference>();
1440          for (Reference i : evaluationMessage)
1441            dst.evaluationMessage.add(i.copy());
1442        };
1443        dst.outputParameters = outputParameters == null ? null : outputParameters.copy();
1444        dst.result = result == null ? null : result.copy();
1445        if (dataRequirement != null) {
1446          dst.dataRequirement = new ArrayList<DataRequirement>();
1447          for (DataRequirement i : dataRequirement)
1448            dst.dataRequirement.add(i.copy());
1449        };
1450        return dst;
1451      }
1452
1453      protected GuidanceResponse typedCopy() {
1454        return copy();
1455      }
1456
1457      @Override
1458      public boolean equalsDeep(Base other_) {
1459        if (!super.equalsDeep(other_))
1460          return false;
1461        if (!(other_ instanceof GuidanceResponse))
1462          return false;
1463        GuidanceResponse o = (GuidanceResponse) other_;
1464        return compareDeep(requestId, o.requestId, true) && compareDeep(identifier, o.identifier, true)
1465           && compareDeep(module, o.module, true) && compareDeep(status, o.status, true) && compareDeep(subject, o.subject, true)
1466           && compareDeep(context, o.context, true) && compareDeep(occurrenceDateTime, o.occurrenceDateTime, true)
1467           && compareDeep(performer, o.performer, true) && compareDeep(reasonCode, o.reasonCode, true) && compareDeep(reasonReference, o.reasonReference, true)
1468           && compareDeep(note, o.note, true) && compareDeep(evaluationMessage, o.evaluationMessage, true)
1469           && compareDeep(outputParameters, o.outputParameters, true) && compareDeep(result, o.result, true)
1470           && compareDeep(dataRequirement, o.dataRequirement, true);
1471      }
1472
1473      @Override
1474      public boolean equalsShallow(Base other_) {
1475        if (!super.equalsShallow(other_))
1476          return false;
1477        if (!(other_ instanceof GuidanceResponse))
1478          return false;
1479        GuidanceResponse o = (GuidanceResponse) other_;
1480        return compareValues(requestId, o.requestId, true) && compareValues(status, o.status, true) && compareValues(occurrenceDateTime, o.occurrenceDateTime, true)
1481          ;
1482      }
1483
1484      public boolean isEmpty() {
1485        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(requestId, identifier, module
1486          , status, subject, context, occurrenceDateTime, performer, reasonCode, reasonReference
1487          , note, evaluationMessage, outputParameters, result, dataRequirement);
1488      }
1489
1490  @Override
1491  public ResourceType getResourceType() {
1492    return ResourceType.GuidanceResponse;
1493   }
1494
1495 /**
1496   * Search parameter: <b>request</b>
1497   * <p>
1498   * Description: <b>The identifier of the request associated with the response</b><br>
1499   * Type: <b>token</b><br>
1500   * Path: <b>GuidanceResponse.requestId</b><br>
1501   * </p>
1502   */
1503  @SearchParamDefinition(name="request", path="GuidanceResponse.requestId", description="The identifier of the request associated with the response", type="token" )
1504  public static final String SP_REQUEST = "request";
1505 /**
1506   * <b>Fluent Client</b> search parameter constant for <b>request</b>
1507   * <p>
1508   * Description: <b>The identifier of the request associated with the response</b><br>
1509   * Type: <b>token</b><br>
1510   * Path: <b>GuidanceResponse.requestId</b><br>
1511   * </p>
1512   */
1513  public static final ca.uhn.fhir.rest.gclient.TokenClientParam REQUEST = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_REQUEST);
1514
1515 /**
1516   * Search parameter: <b>identifier</b>
1517   * <p>
1518   * Description: <b>The identifier of the guidance response</b><br>
1519   * Type: <b>token</b><br>
1520   * Path: <b>GuidanceResponse.identifier</b><br>
1521   * </p>
1522   */
1523  @SearchParamDefinition(name="identifier", path="GuidanceResponse.identifier", description="The identifier of the guidance response", type="token" )
1524  public static final String SP_IDENTIFIER = "identifier";
1525 /**
1526   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
1527   * <p>
1528   * Description: <b>The identifier of the guidance response</b><br>
1529   * Type: <b>token</b><br>
1530   * Path: <b>GuidanceResponse.identifier</b><br>
1531   * </p>
1532   */
1533  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
1534
1535 /**
1536   * Search parameter: <b>patient</b>
1537   * <p>
1538   * Description: <b>The identity of a patient to search for guidance response results</b><br>
1539   * Type: <b>reference</b><br>
1540   * Path: <b>GuidanceResponse.subject</b><br>
1541   * </p>
1542   */
1543  @SearchParamDefinition(name="patient", path="GuidanceResponse.subject", description="The identity of a patient to search for guidance response results", type="reference", target={Patient.class } )
1544  public static final String SP_PATIENT = "patient";
1545 /**
1546   * <b>Fluent Client</b> search parameter constant for <b>patient</b>
1547   * <p>
1548   * Description: <b>The identity of a patient to search for guidance response results</b><br>
1549   * Type: <b>reference</b><br>
1550   * Path: <b>GuidanceResponse.subject</b><br>
1551   * </p>
1552   */
1553  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PATIENT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PATIENT);
1554
1555/**
1556   * Constant for fluent queries to be used to add include statements. Specifies
1557   * the path value of "<b>GuidanceResponse:patient</b>".
1558   */
1559  public static final ca.uhn.fhir.model.api.Include INCLUDE_PATIENT = new ca.uhn.fhir.model.api.Include("GuidanceResponse:patient").toLocked();
1560
1561 /**
1562   * Search parameter: <b>subject</b>
1563   * <p>
1564   * Description: <b>The subject that the guidance response is about</b><br>
1565   * Type: <b>reference</b><br>
1566   * Path: <b>GuidanceResponse.subject</b><br>
1567   * </p>
1568   */
1569  @SearchParamDefinition(name="subject", path="GuidanceResponse.subject", description="The subject that the guidance response is about", type="reference", target={Group.class, Patient.class } )
1570  public static final String SP_SUBJECT = "subject";
1571 /**
1572   * <b>Fluent Client</b> search parameter constant for <b>subject</b>
1573   * <p>
1574   * Description: <b>The subject that the guidance response is about</b><br>
1575   * Type: <b>reference</b><br>
1576   * Path: <b>GuidanceResponse.subject</b><br>
1577   * </p>
1578   */
1579  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SUBJECT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SUBJECT);
1580
1581/**
1582   * Constant for fluent queries to be used to add include statements. Specifies
1583   * the path value of "<b>GuidanceResponse:subject</b>".
1584   */
1585  public static final ca.uhn.fhir.model.api.Include INCLUDE_SUBJECT = new ca.uhn.fhir.model.api.Include("GuidanceResponse:subject").toLocked();
1586
1587
1588}
1589