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