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 Thu, Dec 27, 2018 10:06-0500 for FHIR v4.0.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/StructureDefinition/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 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.
209     */
210    @Child(name = "requestIdentifier", type = {Identifier.class}, order=0, min=0, max=1, modifier=false, summary=true)
211    @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." )
212    protected Identifier requestIdentifier;
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     * The encounter during which this response was created or to which the creation of this record is tightly associated.
250     */
251    @Child(name = "encounter", type = {Encounter.class}, order=5, min=0, max=1, modifier=false, summary=false)
252    @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." )
253    protected Reference encounter;
254
255    /**
256     * 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.)
257     */
258    protected Encounter encounterTarget;
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 = -760182193L;
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 #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.)
368     */
369    public Identifier getRequestIdentifier() { 
370      if (this.requestIdentifier == null)
371        if (Configuration.errorOnAutoCreate())
372          throw new Error("Attempt to auto-create GuidanceResponse.requestIdentifier");
373        else if (Configuration.doAutoCreate())
374          this.requestIdentifier = new Identifier(); // cc
375      return this.requestIdentifier;
376    }
377
378    public boolean hasRequestIdentifier() { 
379      return this.requestIdentifier != null && !this.requestIdentifier.isEmpty();
380    }
381
382    /**
383     * @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.)
384     */
385    public GuidanceResponse setRequestIdentifier(Identifier value) { 
386      this.requestIdentifier = value;
387      return this;
388    }
389
390    /**
391     * @return {@link #identifier} (Allows a service to provide  unique, business identifiers for the response.)
392     */
393    public List<Identifier> getIdentifier() { 
394      if (this.identifier == null)
395        this.identifier = new ArrayList<Identifier>();
396      return this.identifier;
397    }
398
399    /**
400     * @return Returns a reference to <code>this</code> for easy method chaining
401     */
402    public GuidanceResponse setIdentifier(List<Identifier> theIdentifier) { 
403      this.identifier = theIdentifier;
404      return this;
405    }
406
407    public boolean hasIdentifier() { 
408      if (this.identifier == null)
409        return false;
410      for (Identifier item : this.identifier)
411        if (!item.isEmpty())
412          return true;
413      return false;
414    }
415
416    public Identifier addIdentifier() { //3
417      Identifier t = new Identifier();
418      if (this.identifier == null)
419        this.identifier = new ArrayList<Identifier>();
420      this.identifier.add(t);
421      return t;
422    }
423
424    public GuidanceResponse addIdentifier(Identifier t) { //3
425      if (t == null)
426        return this;
427      if (this.identifier == null)
428        this.identifier = new ArrayList<Identifier>();
429      this.identifier.add(t);
430      return this;
431    }
432
433    /**
434     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist
435     */
436    public Identifier getIdentifierFirstRep() { 
437      if (getIdentifier().isEmpty()) {
438        addIdentifier();
439      }
440      return getIdentifier().get(0);
441    }
442
443    /**
444     * @return {@link #module} (An identifier, CodeableConcept or canonical reference to the guidance that was requested.)
445     */
446    public Type getModule() { 
447      return this.module;
448    }
449
450    /**
451     * @return {@link #module} (An identifier, CodeableConcept or canonical reference to the guidance that was requested.)
452     */
453    public UriType getModuleUriType() throws FHIRException { 
454      if (this.module == null)
455        this.module = new UriType();
456      if (!(this.module instanceof UriType))
457        throw new FHIRException("Type mismatch: the type UriType was expected, but "+this.module.getClass().getName()+" was encountered");
458      return (UriType) this.module;
459    }
460
461    public boolean hasModuleUriType() { 
462      return this != null && this.module instanceof UriType;
463    }
464
465    /**
466     * @return {@link #module} (An identifier, CodeableConcept or canonical reference to the guidance that was requested.)
467     */
468    public CanonicalType getModuleCanonicalType() throws FHIRException { 
469      if (this.module == null)
470        this.module = new CanonicalType();
471      if (!(this.module instanceof CanonicalType))
472        throw new FHIRException("Type mismatch: the type CanonicalType was expected, but "+this.module.getClass().getName()+" was encountered");
473      return (CanonicalType) this.module;
474    }
475
476    public boolean hasModuleCanonicalType() { 
477      return this != null && this.module instanceof CanonicalType;
478    }
479
480    /**
481     * @return {@link #module} (An identifier, CodeableConcept or canonical reference to the guidance that was requested.)
482     */
483    public CodeableConcept getModuleCodeableConcept() throws FHIRException { 
484      if (this.module == null)
485        this.module = new CodeableConcept();
486      if (!(this.module instanceof CodeableConcept))
487        throw new FHIRException("Type mismatch: the type CodeableConcept was expected, but "+this.module.getClass().getName()+" was encountered");
488      return (CodeableConcept) this.module;
489    }
490
491    public boolean hasModuleCodeableConcept() { 
492      return this != null && this.module instanceof CodeableConcept;
493    }
494
495    public boolean hasModule() { 
496      return this.module != null && !this.module.isEmpty();
497    }
498
499    /**
500     * @param value {@link #module} (An identifier, CodeableConcept or canonical reference to the guidance that was requested.)
501     */
502    public GuidanceResponse setModule(Type value) { 
503      if (value != null && !(value instanceof UriType || value instanceof CanonicalType || value instanceof CodeableConcept))
504        throw new Error("Not the right type for GuidanceResponse.module[x]: "+value.fhirType());
505      this.module = value;
506      return this;
507    }
508
509    /**
510     * @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
511     */
512    public Enumeration<GuidanceResponseStatus> getStatusElement() { 
513      if (this.status == null)
514        if (Configuration.errorOnAutoCreate())
515          throw new Error("Attempt to auto-create GuidanceResponse.status");
516        else if (Configuration.doAutoCreate())
517          this.status = new Enumeration<GuidanceResponseStatus>(new GuidanceResponseStatusEnumFactory()); // bb
518      return this.status;
519    }
520
521    public boolean hasStatusElement() { 
522      return this.status != null && !this.status.isEmpty();
523    }
524
525    public boolean hasStatus() { 
526      return this.status != null && !this.status.isEmpty();
527    }
528
529    /**
530     * @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
531     */
532    public GuidanceResponse setStatusElement(Enumeration<GuidanceResponseStatus> value) { 
533      this.status = value;
534      return this;
535    }
536
537    /**
538     * @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.
539     */
540    public GuidanceResponseStatus getStatus() { 
541      return this.status == null ? null : this.status.getValue();
542    }
543
544    /**
545     * @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.
546     */
547    public GuidanceResponse setStatus(GuidanceResponseStatus value) { 
548        if (this.status == null)
549          this.status = new Enumeration<GuidanceResponseStatus>(new GuidanceResponseStatusEnumFactory());
550        this.status.setValue(value);
551      return this;
552    }
553
554    /**
555     * @return {@link #subject} (The patient for which the request was processed.)
556     */
557    public Reference getSubject() { 
558      if (this.subject == null)
559        if (Configuration.errorOnAutoCreate())
560          throw new Error("Attempt to auto-create GuidanceResponse.subject");
561        else if (Configuration.doAutoCreate())
562          this.subject = new Reference(); // cc
563      return this.subject;
564    }
565
566    public boolean hasSubject() { 
567      return this.subject != null && !this.subject.isEmpty();
568    }
569
570    /**
571     * @param value {@link #subject} (The patient for which the request was processed.)
572     */
573    public GuidanceResponse setSubject(Reference value) { 
574      this.subject = value;
575      return this;
576    }
577
578    /**
579     * @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.)
580     */
581    public Resource getSubjectTarget() { 
582      return this.subjectTarget;
583    }
584
585    /**
586     * @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.)
587     */
588    public GuidanceResponse setSubjectTarget(Resource value) { 
589      this.subjectTarget = value;
590      return this;
591    }
592
593    /**
594     * @return {@link #encounter} (The encounter during which this response was created or to which the creation of this record is tightly associated.)
595     */
596    public Reference getEncounter() { 
597      if (this.encounter == null)
598        if (Configuration.errorOnAutoCreate())
599          throw new Error("Attempt to auto-create GuidanceResponse.encounter");
600        else if (Configuration.doAutoCreate())
601          this.encounter = new Reference(); // cc
602      return this.encounter;
603    }
604
605    public boolean hasEncounter() { 
606      return this.encounter != null && !this.encounter.isEmpty();
607    }
608
609    /**
610     * @param value {@link #encounter} (The encounter during which this response was created or to which the creation of this record is tightly associated.)
611     */
612    public GuidanceResponse setEncounter(Reference value) { 
613      this.encounter = value;
614      return this;
615    }
616
617    /**
618     * @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.)
619     */
620    public Encounter getEncounterTarget() { 
621      if (this.encounterTarget == null)
622        if (Configuration.errorOnAutoCreate())
623          throw new Error("Attempt to auto-create GuidanceResponse.encounter");
624        else if (Configuration.doAutoCreate())
625          this.encounterTarget = new Encounter(); // aa
626      return this.encounterTarget;
627    }
628
629    /**
630     * @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.)
631     */
632    public GuidanceResponse setEncounterTarget(Encounter value) { 
633      this.encounterTarget = value;
634      return this;
635    }
636
637    /**
638     * @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
639     */
640    public DateTimeType getOccurrenceDateTimeElement() { 
641      if (this.occurrenceDateTime == null)
642        if (Configuration.errorOnAutoCreate())
643          throw new Error("Attempt to auto-create GuidanceResponse.occurrenceDateTime");
644        else if (Configuration.doAutoCreate())
645          this.occurrenceDateTime = new DateTimeType(); // bb
646      return this.occurrenceDateTime;
647    }
648
649    public boolean hasOccurrenceDateTimeElement() { 
650      return this.occurrenceDateTime != null && !this.occurrenceDateTime.isEmpty();
651    }
652
653    public boolean hasOccurrenceDateTime() { 
654      return this.occurrenceDateTime != null && !this.occurrenceDateTime.isEmpty();
655    }
656
657    /**
658     * @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
659     */
660    public GuidanceResponse setOccurrenceDateTimeElement(DateTimeType value) { 
661      this.occurrenceDateTime = value;
662      return this;
663    }
664
665    /**
666     * @return Indicates when the guidance response was processed.
667     */
668    public Date getOccurrenceDateTime() { 
669      return this.occurrenceDateTime == null ? null : this.occurrenceDateTime.getValue();
670    }
671
672    /**
673     * @param value Indicates when the guidance response was processed.
674     */
675    public GuidanceResponse setOccurrenceDateTime(Date value) { 
676      if (value == null)
677        this.occurrenceDateTime = null;
678      else {
679        if (this.occurrenceDateTime == null)
680          this.occurrenceDateTime = new DateTimeType();
681        this.occurrenceDateTime.setValue(value);
682      }
683      return this;
684    }
685
686    /**
687     * @return {@link #performer} (Provides a reference to the device that performed the guidance.)
688     */
689    public Reference getPerformer() { 
690      if (this.performer == null)
691        if (Configuration.errorOnAutoCreate())
692          throw new Error("Attempt to auto-create GuidanceResponse.performer");
693        else if (Configuration.doAutoCreate())
694          this.performer = new Reference(); // cc
695      return this.performer;
696    }
697
698    public boolean hasPerformer() { 
699      return this.performer != null && !this.performer.isEmpty();
700    }
701
702    /**
703     * @param value {@link #performer} (Provides a reference to the device that performed the guidance.)
704     */
705    public GuidanceResponse setPerformer(Reference value) { 
706      this.performer = value;
707      return this;
708    }
709
710    /**
711     * @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.)
712     */
713    public Device getPerformerTarget() { 
714      if (this.performerTarget == null)
715        if (Configuration.errorOnAutoCreate())
716          throw new Error("Attempt to auto-create GuidanceResponse.performer");
717        else if (Configuration.doAutoCreate())
718          this.performerTarget = new Device(); // aa
719      return this.performerTarget;
720    }
721
722    /**
723     * @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.)
724     */
725    public GuidanceResponse setPerformerTarget(Device value) { 
726      this.performerTarget = value;
727      return this;
728    }
729
730    /**
731     * @return {@link #reasonCode} (Describes the reason for the guidance response in coded or textual form.)
732     */
733    public List<CodeableConcept> getReasonCode() { 
734      if (this.reasonCode == null)
735        this.reasonCode = new ArrayList<CodeableConcept>();
736      return this.reasonCode;
737    }
738
739    /**
740     * @return Returns a reference to <code>this</code> for easy method chaining
741     */
742    public GuidanceResponse setReasonCode(List<CodeableConcept> theReasonCode) { 
743      this.reasonCode = theReasonCode;
744      return this;
745    }
746
747    public boolean hasReasonCode() { 
748      if (this.reasonCode == null)
749        return false;
750      for (CodeableConcept item : this.reasonCode)
751        if (!item.isEmpty())
752          return true;
753      return false;
754    }
755
756    public CodeableConcept addReasonCode() { //3
757      CodeableConcept t = new CodeableConcept();
758      if (this.reasonCode == null)
759        this.reasonCode = new ArrayList<CodeableConcept>();
760      this.reasonCode.add(t);
761      return t;
762    }
763
764    public GuidanceResponse addReasonCode(CodeableConcept t) { //3
765      if (t == null)
766        return this;
767      if (this.reasonCode == null)
768        this.reasonCode = new ArrayList<CodeableConcept>();
769      this.reasonCode.add(t);
770      return this;
771    }
772
773    /**
774     * @return The first repetition of repeating field {@link #reasonCode}, creating it if it does not already exist
775     */
776    public CodeableConcept getReasonCodeFirstRep() { 
777      if (getReasonCode().isEmpty()) {
778        addReasonCode();
779      }
780      return getReasonCode().get(0);
781    }
782
783    /**
784     * @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.)
785     */
786    public List<Reference> getReasonReference() { 
787      if (this.reasonReference == null)
788        this.reasonReference = new ArrayList<Reference>();
789      return this.reasonReference;
790    }
791
792    /**
793     * @return Returns a reference to <code>this</code> for easy method chaining
794     */
795    public GuidanceResponse setReasonReference(List<Reference> theReasonReference) { 
796      this.reasonReference = theReasonReference;
797      return this;
798    }
799
800    public boolean hasReasonReference() { 
801      if (this.reasonReference == null)
802        return false;
803      for (Reference item : this.reasonReference)
804        if (!item.isEmpty())
805          return true;
806      return false;
807    }
808
809    public Reference addReasonReference() { //3
810      Reference t = new Reference();
811      if (this.reasonReference == null)
812        this.reasonReference = new ArrayList<Reference>();
813      this.reasonReference.add(t);
814      return t;
815    }
816
817    public GuidanceResponse addReasonReference(Reference t) { //3
818      if (t == null)
819        return this;
820      if (this.reasonReference == null)
821        this.reasonReference = new ArrayList<Reference>();
822      this.reasonReference.add(t);
823      return this;
824    }
825
826    /**
827     * @return The first repetition of repeating field {@link #reasonReference}, creating it if it does not already exist
828     */
829    public Reference getReasonReferenceFirstRep() { 
830      if (getReasonReference().isEmpty()) {
831        addReasonReference();
832      }
833      return getReasonReference().get(0);
834    }
835
836    /**
837     * @deprecated Use Reference#setResource(IBaseResource) instead
838     */
839    @Deprecated
840    public List<Resource> getReasonReferenceTarget() { 
841      if (this.reasonReferenceTarget == null)
842        this.reasonReferenceTarget = new ArrayList<Resource>();
843      return this.reasonReferenceTarget;
844    }
845
846    /**
847     * @return {@link #note} (Provides a mechanism to communicate additional information about the response.)
848     */
849    public List<Annotation> getNote() { 
850      if (this.note == null)
851        this.note = new ArrayList<Annotation>();
852      return this.note;
853    }
854
855    /**
856     * @return Returns a reference to <code>this</code> for easy method chaining
857     */
858    public GuidanceResponse setNote(List<Annotation> theNote) { 
859      this.note = theNote;
860      return this;
861    }
862
863    public boolean hasNote() { 
864      if (this.note == null)
865        return false;
866      for (Annotation item : this.note)
867        if (!item.isEmpty())
868          return true;
869      return false;
870    }
871
872    public Annotation addNote() { //3
873      Annotation t = new Annotation();
874      if (this.note == null)
875        this.note = new ArrayList<Annotation>();
876      this.note.add(t);
877      return t;
878    }
879
880    public GuidanceResponse addNote(Annotation t) { //3
881      if (t == null)
882        return this;
883      if (this.note == null)
884        this.note = new ArrayList<Annotation>();
885      this.note.add(t);
886      return this;
887    }
888
889    /**
890     * @return The first repetition of repeating field {@link #note}, creating it if it does not already exist
891     */
892    public Annotation getNoteFirstRep() { 
893      if (getNote().isEmpty()) {
894        addNote();
895      }
896      return getNote().get(0);
897    }
898
899    /**
900     * @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.)
901     */
902    public List<Reference> getEvaluationMessage() { 
903      if (this.evaluationMessage == null)
904        this.evaluationMessage = new ArrayList<Reference>();
905      return this.evaluationMessage;
906    }
907
908    /**
909     * @return Returns a reference to <code>this</code> for easy method chaining
910     */
911    public GuidanceResponse setEvaluationMessage(List<Reference> theEvaluationMessage) { 
912      this.evaluationMessage = theEvaluationMessage;
913      return this;
914    }
915
916    public boolean hasEvaluationMessage() { 
917      if (this.evaluationMessage == null)
918        return false;
919      for (Reference item : this.evaluationMessage)
920        if (!item.isEmpty())
921          return true;
922      return false;
923    }
924
925    public Reference addEvaluationMessage() { //3
926      Reference t = new Reference();
927      if (this.evaluationMessage == null)
928        this.evaluationMessage = new ArrayList<Reference>();
929      this.evaluationMessage.add(t);
930      return t;
931    }
932
933    public GuidanceResponse addEvaluationMessage(Reference t) { //3
934      if (t == null)
935        return this;
936      if (this.evaluationMessage == null)
937        this.evaluationMessage = new ArrayList<Reference>();
938      this.evaluationMessage.add(t);
939      return this;
940    }
941
942    /**
943     * @return The first repetition of repeating field {@link #evaluationMessage}, creating it if it does not already exist
944     */
945    public Reference getEvaluationMessageFirstRep() { 
946      if (getEvaluationMessage().isEmpty()) {
947        addEvaluationMessage();
948      }
949      return getEvaluationMessage().get(0);
950    }
951
952    /**
953     * @deprecated Use Reference#setResource(IBaseResource) instead
954     */
955    @Deprecated
956    public List<OperationOutcome> getEvaluationMessageTarget() { 
957      if (this.evaluationMessageTarget == null)
958        this.evaluationMessageTarget = new ArrayList<OperationOutcome>();
959      return this.evaluationMessageTarget;
960    }
961
962    /**
963     * @deprecated Use Reference#setResource(IBaseResource) instead
964     */
965    @Deprecated
966    public OperationOutcome addEvaluationMessageTarget() { 
967      OperationOutcome r = new OperationOutcome();
968      if (this.evaluationMessageTarget == null)
969        this.evaluationMessageTarget = new ArrayList<OperationOutcome>();
970      this.evaluationMessageTarget.add(r);
971      return r;
972    }
973
974    /**
975     * @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.)
976     */
977    public Reference getOutputParameters() { 
978      if (this.outputParameters == null)
979        if (Configuration.errorOnAutoCreate())
980          throw new Error("Attempt to auto-create GuidanceResponse.outputParameters");
981        else if (Configuration.doAutoCreate())
982          this.outputParameters = new Reference(); // cc
983      return this.outputParameters;
984    }
985
986    public boolean hasOutputParameters() { 
987      return this.outputParameters != null && !this.outputParameters.isEmpty();
988    }
989
990    /**
991     * @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.)
992     */
993    public GuidanceResponse setOutputParameters(Reference value) { 
994      this.outputParameters = value;
995      return this;
996    }
997
998    /**
999     * @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.)
1000     */
1001    public Parameters getOutputParametersTarget() { 
1002      if (this.outputParametersTarget == null)
1003        if (Configuration.errorOnAutoCreate())
1004          throw new Error("Attempt to auto-create GuidanceResponse.outputParameters");
1005        else if (Configuration.doAutoCreate())
1006          this.outputParametersTarget = new Parameters(); // aa
1007      return this.outputParametersTarget;
1008    }
1009
1010    /**
1011     * @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.)
1012     */
1013    public GuidanceResponse setOutputParametersTarget(Parameters value) { 
1014      this.outputParametersTarget = value;
1015      return this;
1016    }
1017
1018    /**
1019     * @return {@link #result} (The actions, if any, produced by the evaluation of the artifact.)
1020     */
1021    public Reference getResult() { 
1022      if (this.result == null)
1023        if (Configuration.errorOnAutoCreate())
1024          throw new Error("Attempt to auto-create GuidanceResponse.result");
1025        else if (Configuration.doAutoCreate())
1026          this.result = new Reference(); // cc
1027      return this.result;
1028    }
1029
1030    public boolean hasResult() { 
1031      return this.result != null && !this.result.isEmpty();
1032    }
1033
1034    /**
1035     * @param value {@link #result} (The actions, if any, produced by the evaluation of the artifact.)
1036     */
1037    public GuidanceResponse setResult(Reference value) { 
1038      this.result = value;
1039      return this;
1040    }
1041
1042    /**
1043     * @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.)
1044     */
1045    public Resource getResultTarget() { 
1046      return this.resultTarget;
1047    }
1048
1049    /**
1050     * @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.)
1051     */
1052    public GuidanceResponse setResultTarget(Resource value) { 
1053      this.resultTarget = value;
1054      return this;
1055    }
1056
1057    /**
1058     * @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.)
1059     */
1060    public List<DataRequirement> getDataRequirement() { 
1061      if (this.dataRequirement == null)
1062        this.dataRequirement = new ArrayList<DataRequirement>();
1063      return this.dataRequirement;
1064    }
1065
1066    /**
1067     * @return Returns a reference to <code>this</code> for easy method chaining
1068     */
1069    public GuidanceResponse setDataRequirement(List<DataRequirement> theDataRequirement) { 
1070      this.dataRequirement = theDataRequirement;
1071      return this;
1072    }
1073
1074    public boolean hasDataRequirement() { 
1075      if (this.dataRequirement == null)
1076        return false;
1077      for (DataRequirement item : this.dataRequirement)
1078        if (!item.isEmpty())
1079          return true;
1080      return false;
1081    }
1082
1083    public DataRequirement addDataRequirement() { //3
1084      DataRequirement t = new DataRequirement();
1085      if (this.dataRequirement == null)
1086        this.dataRequirement = new ArrayList<DataRequirement>();
1087      this.dataRequirement.add(t);
1088      return t;
1089    }
1090
1091    public GuidanceResponse addDataRequirement(DataRequirement t) { //3
1092      if (t == null)
1093        return this;
1094      if (this.dataRequirement == null)
1095        this.dataRequirement = new ArrayList<DataRequirement>();
1096      this.dataRequirement.add(t);
1097      return this;
1098    }
1099
1100    /**
1101     * @return The first repetition of repeating field {@link #dataRequirement}, creating it if it does not already exist
1102     */
1103    public DataRequirement getDataRequirementFirstRep() { 
1104      if (getDataRequirement().isEmpty()) {
1105        addDataRequirement();
1106      }
1107      return getDataRequirement().get(0);
1108    }
1109
1110      protected void listChildren(List<Property> children) {
1111        super.listChildren(children);
1112        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));
1113        children.add(new Property("identifier", "Identifier", "Allows a service to provide  unique, business identifiers for the response.", 0, java.lang.Integer.MAX_VALUE, identifier));
1114        children.add(new Property("module[x]", "uri|canonical|CodeableConcept", "An identifier, CodeableConcept or canonical reference to the guidance that was requested.", 0, 1, module));
1115        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));
1116        children.add(new Property("subject", "Reference(Patient|Group)", "The patient for which the request was processed.", 0, 1, subject));
1117        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));
1118        children.add(new Property("occurrenceDateTime", "dateTime", "Indicates when the guidance response was processed.", 0, 1, occurrenceDateTime));
1119        children.add(new Property("performer", "Reference(Device)", "Provides a reference to the device that performed the guidance.", 0, 1, performer));
1120        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));
1121        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));
1122        children.add(new Property("note", "Annotation", "Provides a mechanism to communicate additional information about the response.", 0, java.lang.Integer.MAX_VALUE, note));
1123        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));
1124        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));
1125        children.add(new Property("result", "Reference(CarePlan|RequestGroup)", "The actions, if any, produced by the evaluation of the artifact.", 0, 1, result));
1126        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));
1127      }
1128
1129      @Override
1130      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1131        switch (_hash) {
1132        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);
1133        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);
1134        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);
1135        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);
1136        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);
1137        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);
1138        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);
1139        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);
1140        case -1867885268: /*subject*/  return new Property("subject", "Reference(Patient|Group)", "The patient for which the request was processed.", 0, 1, subject);
1141        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);
1142        case -298443636: /*occurrenceDateTime*/  return new Property("occurrenceDateTime", "dateTime", "Indicates when the guidance response was processed.", 0, 1, occurrenceDateTime);
1143        case 481140686: /*performer*/  return new Property("performer", "Reference(Device)", "Provides a reference to the device that performed the guidance.", 0, 1, performer);
1144        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);
1145        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);
1146        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);
1147        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);
1148        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);
1149        case -934426595: /*result*/  return new Property("result", "Reference(CarePlan|RequestGroup)", "The actions, if any, produced by the evaluation of the artifact.", 0, 1, result);
1150        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);
1151        default: return super.getNamedProperty(_hash, _name, _checkValid);
1152        }
1153
1154      }
1155
1156      @Override
1157      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1158        switch (hash) {
1159        case -354233192: /*requestIdentifier*/ return this.requestIdentifier == null ? new Base[0] : new Base[] {this.requestIdentifier}; // Identifier
1160        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
1161        case -1068784020: /*module*/ return this.module == null ? new Base[0] : new Base[] {this.module}; // Type
1162        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<GuidanceResponseStatus>
1163        case -1867885268: /*subject*/ return this.subject == null ? new Base[0] : new Base[] {this.subject}; // Reference
1164        case 1524132147: /*encounter*/ return this.encounter == null ? new Base[0] : new Base[] {this.encounter}; // Reference
1165        case -298443636: /*occurrenceDateTime*/ return this.occurrenceDateTime == null ? new Base[0] : new Base[] {this.occurrenceDateTime}; // DateTimeType
1166        case 481140686: /*performer*/ return this.performer == null ? new Base[0] : new Base[] {this.performer}; // Reference
1167        case 722137681: /*reasonCode*/ return this.reasonCode == null ? new Base[0] : this.reasonCode.toArray(new Base[this.reasonCode.size()]); // CodeableConcept
1168        case -1146218137: /*reasonReference*/ return this.reasonReference == null ? new Base[0] : this.reasonReference.toArray(new Base[this.reasonReference.size()]); // Reference
1169        case 3387378: /*note*/ return this.note == null ? new Base[0] : this.note.toArray(new Base[this.note.size()]); // Annotation
1170        case 1081619755: /*evaluationMessage*/ return this.evaluationMessage == null ? new Base[0] : this.evaluationMessage.toArray(new Base[this.evaluationMessage.size()]); // Reference
1171        case 525609419: /*outputParameters*/ return this.outputParameters == null ? new Base[0] : new Base[] {this.outputParameters}; // Reference
1172        case -934426595: /*result*/ return this.result == null ? new Base[0] : new Base[] {this.result}; // Reference
1173        case 629147193: /*dataRequirement*/ return this.dataRequirement == null ? new Base[0] : this.dataRequirement.toArray(new Base[this.dataRequirement.size()]); // DataRequirement
1174        default: return super.getProperty(hash, name, checkValid);
1175        }
1176
1177      }
1178
1179      @Override
1180      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1181        switch (hash) {
1182        case -354233192: // requestIdentifier
1183          this.requestIdentifier = castToIdentifier(value); // Identifier
1184          return value;
1185        case -1618432855: // identifier
1186          this.getIdentifier().add(castToIdentifier(value)); // Identifier
1187          return value;
1188        case -1068784020: // module
1189          this.module = castToType(value); // Type
1190          return value;
1191        case -892481550: // status
1192          value = new GuidanceResponseStatusEnumFactory().fromType(castToCode(value));
1193          this.status = (Enumeration) value; // Enumeration<GuidanceResponseStatus>
1194          return value;
1195        case -1867885268: // subject
1196          this.subject = castToReference(value); // Reference
1197          return value;
1198        case 1524132147: // encounter
1199          this.encounter = castToReference(value); // Reference
1200          return value;
1201        case -298443636: // occurrenceDateTime
1202          this.occurrenceDateTime = castToDateTime(value); // DateTimeType
1203          return value;
1204        case 481140686: // performer
1205          this.performer = castToReference(value); // Reference
1206          return value;
1207        case 722137681: // reasonCode
1208          this.getReasonCode().add(castToCodeableConcept(value)); // CodeableConcept
1209          return value;
1210        case -1146218137: // reasonReference
1211          this.getReasonReference().add(castToReference(value)); // Reference
1212          return value;
1213        case 3387378: // note
1214          this.getNote().add(castToAnnotation(value)); // Annotation
1215          return value;
1216        case 1081619755: // evaluationMessage
1217          this.getEvaluationMessage().add(castToReference(value)); // Reference
1218          return value;
1219        case 525609419: // outputParameters
1220          this.outputParameters = castToReference(value); // Reference
1221          return value;
1222        case -934426595: // result
1223          this.result = castToReference(value); // Reference
1224          return value;
1225        case 629147193: // dataRequirement
1226          this.getDataRequirement().add(castToDataRequirement(value)); // DataRequirement
1227          return value;
1228        default: return super.setProperty(hash, name, value);
1229        }
1230
1231      }
1232
1233      @Override
1234      public Base setProperty(String name, Base value) throws FHIRException {
1235        if (name.equals("requestIdentifier")) {
1236          this.requestIdentifier = castToIdentifier(value); // Identifier
1237        } else if (name.equals("identifier")) {
1238          this.getIdentifier().add(castToIdentifier(value));
1239        } else if (name.equals("module[x]")) {
1240          this.module = castToType(value); // Type
1241        } else if (name.equals("status")) {
1242          value = new GuidanceResponseStatusEnumFactory().fromType(castToCode(value));
1243          this.status = (Enumeration) value; // Enumeration<GuidanceResponseStatus>
1244        } else if (name.equals("subject")) {
1245          this.subject = castToReference(value); // Reference
1246        } else if (name.equals("encounter")) {
1247          this.encounter = castToReference(value); // Reference
1248        } else if (name.equals("occurrenceDateTime")) {
1249          this.occurrenceDateTime = castToDateTime(value); // DateTimeType
1250        } else if (name.equals("performer")) {
1251          this.performer = castToReference(value); // Reference
1252        } else if (name.equals("reasonCode")) {
1253          this.getReasonCode().add(castToCodeableConcept(value));
1254        } else if (name.equals("reasonReference")) {
1255          this.getReasonReference().add(castToReference(value));
1256        } else if (name.equals("note")) {
1257          this.getNote().add(castToAnnotation(value));
1258        } else if (name.equals("evaluationMessage")) {
1259          this.getEvaluationMessage().add(castToReference(value));
1260        } else if (name.equals("outputParameters")) {
1261          this.outputParameters = castToReference(value); // Reference
1262        } else if (name.equals("result")) {
1263          this.result = castToReference(value); // Reference
1264        } else if (name.equals("dataRequirement")) {
1265          this.getDataRequirement().add(castToDataRequirement(value));
1266        } else
1267          return super.setProperty(name, value);
1268        return value;
1269      }
1270
1271      @Override
1272      public Base makeProperty(int hash, String name) throws FHIRException {
1273        switch (hash) {
1274        case -354233192:  return getRequestIdentifier(); 
1275        case -1618432855:  return addIdentifier(); 
1276        case -1552083308:  return getModule(); 
1277        case -1068784020:  return getModule(); 
1278        case -892481550:  return getStatusElement();
1279        case -1867885268:  return getSubject(); 
1280        case 1524132147:  return getEncounter(); 
1281        case -298443636:  return getOccurrenceDateTimeElement();
1282        case 481140686:  return getPerformer(); 
1283        case 722137681:  return addReasonCode(); 
1284        case -1146218137:  return addReasonReference(); 
1285        case 3387378:  return addNote(); 
1286        case 1081619755:  return addEvaluationMessage(); 
1287        case 525609419:  return getOutputParameters(); 
1288        case -934426595:  return getResult(); 
1289        case 629147193:  return addDataRequirement(); 
1290        default: return super.makeProperty(hash, name);
1291        }
1292
1293      }
1294
1295      @Override
1296      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1297        switch (hash) {
1298        case -354233192: /*requestIdentifier*/ return new String[] {"Identifier"};
1299        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
1300        case -1068784020: /*module*/ return new String[] {"uri", "canonical", "CodeableConcept"};
1301        case -892481550: /*status*/ return new String[] {"code"};
1302        case -1867885268: /*subject*/ return new String[] {"Reference"};
1303        case 1524132147: /*encounter*/ return new String[] {"Reference"};
1304        case -298443636: /*occurrenceDateTime*/ return new String[] {"dateTime"};
1305        case 481140686: /*performer*/ return new String[] {"Reference"};
1306        case 722137681: /*reasonCode*/ return new String[] {"CodeableConcept"};
1307        case -1146218137: /*reasonReference*/ return new String[] {"Reference"};
1308        case 3387378: /*note*/ return new String[] {"Annotation"};
1309        case 1081619755: /*evaluationMessage*/ return new String[] {"Reference"};
1310        case 525609419: /*outputParameters*/ return new String[] {"Reference"};
1311        case -934426595: /*result*/ return new String[] {"Reference"};
1312        case 629147193: /*dataRequirement*/ return new String[] {"DataRequirement"};
1313        default: return super.getTypesForProperty(hash, name);
1314        }
1315
1316      }
1317
1318      @Override
1319      public Base addChild(String name) throws FHIRException {
1320        if (name.equals("requestIdentifier")) {
1321          this.requestIdentifier = new Identifier();
1322          return this.requestIdentifier;
1323        }
1324        else if (name.equals("identifier")) {
1325          return addIdentifier();
1326        }
1327        else if (name.equals("moduleUri")) {
1328          this.module = new UriType();
1329          return this.module;
1330        }
1331        else if (name.equals("moduleCanonical")) {
1332          this.module = new CanonicalType();
1333          return this.module;
1334        }
1335        else if (name.equals("moduleCodeableConcept")) {
1336          this.module = new CodeableConcept();
1337          return this.module;
1338        }
1339        else if (name.equals("status")) {
1340          throw new FHIRException("Cannot call addChild on a primitive type GuidanceResponse.status");
1341        }
1342        else if (name.equals("subject")) {
1343          this.subject = new Reference();
1344          return this.subject;
1345        }
1346        else if (name.equals("encounter")) {
1347          this.encounter = new Reference();
1348          return this.encounter;
1349        }
1350        else if (name.equals("occurrenceDateTime")) {
1351          throw new FHIRException("Cannot call addChild on a primitive type GuidanceResponse.occurrenceDateTime");
1352        }
1353        else if (name.equals("performer")) {
1354          this.performer = new Reference();
1355          return this.performer;
1356        }
1357        else if (name.equals("reasonCode")) {
1358          return addReasonCode();
1359        }
1360        else if (name.equals("reasonReference")) {
1361          return addReasonReference();
1362        }
1363        else if (name.equals("note")) {
1364          return addNote();
1365        }
1366        else if (name.equals("evaluationMessage")) {
1367          return addEvaluationMessage();
1368        }
1369        else if (name.equals("outputParameters")) {
1370          this.outputParameters = new Reference();
1371          return this.outputParameters;
1372        }
1373        else if (name.equals("result")) {
1374          this.result = new Reference();
1375          return this.result;
1376        }
1377        else if (name.equals("dataRequirement")) {
1378          return addDataRequirement();
1379        }
1380        else
1381          return super.addChild(name);
1382      }
1383
1384  public String fhirType() {
1385    return "GuidanceResponse";
1386
1387  }
1388
1389      public GuidanceResponse copy() {
1390        GuidanceResponse dst = new GuidanceResponse();
1391        copyValues(dst);
1392        dst.requestIdentifier = requestIdentifier == null ? null : requestIdentifier.copy();
1393        if (identifier != null) {
1394          dst.identifier = new ArrayList<Identifier>();
1395          for (Identifier i : identifier)
1396            dst.identifier.add(i.copy());
1397        };
1398        dst.module = module == null ? null : module.copy();
1399        dst.status = status == null ? null : status.copy();
1400        dst.subject = subject == null ? null : subject.copy();
1401        dst.encounter = encounter == null ? null : encounter.copy();
1402        dst.occurrenceDateTime = occurrenceDateTime == null ? null : occurrenceDateTime.copy();
1403        dst.performer = performer == null ? null : performer.copy();
1404        if (reasonCode != null) {
1405          dst.reasonCode = new ArrayList<CodeableConcept>();
1406          for (CodeableConcept i : reasonCode)
1407            dst.reasonCode.add(i.copy());
1408        };
1409        if (reasonReference != null) {
1410          dst.reasonReference = new ArrayList<Reference>();
1411          for (Reference i : reasonReference)
1412            dst.reasonReference.add(i.copy());
1413        };
1414        if (note != null) {
1415          dst.note = new ArrayList<Annotation>();
1416          for (Annotation i : note)
1417            dst.note.add(i.copy());
1418        };
1419        if (evaluationMessage != null) {
1420          dst.evaluationMessage = new ArrayList<Reference>();
1421          for (Reference i : evaluationMessage)
1422            dst.evaluationMessage.add(i.copy());
1423        };
1424        dst.outputParameters = outputParameters == null ? null : outputParameters.copy();
1425        dst.result = result == null ? null : result.copy();
1426        if (dataRequirement != null) {
1427          dst.dataRequirement = new ArrayList<DataRequirement>();
1428          for (DataRequirement i : dataRequirement)
1429            dst.dataRequirement.add(i.copy());
1430        };
1431        return dst;
1432      }
1433
1434      protected GuidanceResponse typedCopy() {
1435        return copy();
1436      }
1437
1438      @Override
1439      public boolean equalsDeep(Base other_) {
1440        if (!super.equalsDeep(other_))
1441          return false;
1442        if (!(other_ instanceof GuidanceResponse))
1443          return false;
1444        GuidanceResponse o = (GuidanceResponse) other_;
1445        return compareDeep(requestIdentifier, o.requestIdentifier, true) && compareDeep(identifier, o.identifier, true)
1446           && compareDeep(module, o.module, true) && compareDeep(status, o.status, true) && compareDeep(subject, o.subject, true)
1447           && compareDeep(encounter, o.encounter, true) && compareDeep(occurrenceDateTime, o.occurrenceDateTime, true)
1448           && compareDeep(performer, o.performer, true) && compareDeep(reasonCode, o.reasonCode, true) && compareDeep(reasonReference, o.reasonReference, true)
1449           && compareDeep(note, o.note, true) && compareDeep(evaluationMessage, o.evaluationMessage, true)
1450           && compareDeep(outputParameters, o.outputParameters, true) && compareDeep(result, o.result, true)
1451           && compareDeep(dataRequirement, o.dataRequirement, true);
1452      }
1453
1454      @Override
1455      public boolean equalsShallow(Base other_) {
1456        if (!super.equalsShallow(other_))
1457          return false;
1458        if (!(other_ instanceof GuidanceResponse))
1459          return false;
1460        GuidanceResponse o = (GuidanceResponse) other_;
1461        return compareValues(status, o.status, true) && compareValues(occurrenceDateTime, o.occurrenceDateTime, true)
1462          ;
1463      }
1464
1465      public boolean isEmpty() {
1466        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(requestIdentifier, identifier
1467          , module, status, subject, encounter, occurrenceDateTime, performer, reasonCode
1468          , reasonReference, note, evaluationMessage, outputParameters, result, dataRequirement
1469          );
1470      }
1471
1472  @Override
1473  public ResourceType getResourceType() {
1474    return ResourceType.GuidanceResponse;
1475   }
1476
1477 /**
1478   * Search parameter: <b>request</b>
1479   * <p>
1480   * Description: <b>The identifier of the request associated with the response</b><br>
1481   * Type: <b>token</b><br>
1482   * Path: <b>GuidanceResponse.requestIdentifier</b><br>
1483   * </p>
1484   */
1485  @SearchParamDefinition(name="request", path="GuidanceResponse.requestIdentifier", description="The identifier of the request associated with the response", type="token" )
1486  public static final String SP_REQUEST = "request";
1487 /**
1488   * <b>Fluent Client</b> search parameter constant for <b>request</b>
1489   * <p>
1490   * Description: <b>The identifier of the request associated with the response</b><br>
1491   * Type: <b>token</b><br>
1492   * Path: <b>GuidanceResponse.requestIdentifier</b><br>
1493   * </p>
1494   */
1495  public static final ca.uhn.fhir.rest.gclient.TokenClientParam REQUEST = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_REQUEST);
1496
1497 /**
1498   * Search parameter: <b>identifier</b>
1499   * <p>
1500   * Description: <b>The identifier of the guidance response</b><br>
1501   * Type: <b>token</b><br>
1502   * Path: <b>GuidanceResponse.identifier</b><br>
1503   * </p>
1504   */
1505  @SearchParamDefinition(name="identifier", path="GuidanceResponse.identifier", description="The identifier of the guidance response", type="token" )
1506  public static final String SP_IDENTIFIER = "identifier";
1507 /**
1508   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
1509   * <p>
1510   * Description: <b>The identifier of the guidance response</b><br>
1511   * Type: <b>token</b><br>
1512   * Path: <b>GuidanceResponse.identifier</b><br>
1513   * </p>
1514   */
1515  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
1516
1517 /**
1518   * Search parameter: <b>patient</b>
1519   * <p>
1520   * Description: <b>The identity of a patient to search for guidance response results</b><br>
1521   * Type: <b>reference</b><br>
1522   * Path: <b>GuidanceResponse.subject</b><br>
1523   * </p>
1524   */
1525  @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 } )
1526  public static final String SP_PATIENT = "patient";
1527 /**
1528   * <b>Fluent Client</b> search parameter constant for <b>patient</b>
1529   * <p>
1530   * Description: <b>The identity of a patient to search for guidance response results</b><br>
1531   * Type: <b>reference</b><br>
1532   * Path: <b>GuidanceResponse.subject</b><br>
1533   * </p>
1534   */
1535  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PATIENT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PATIENT);
1536
1537/**
1538   * Constant for fluent queries to be used to add include statements. Specifies
1539   * the path value of "<b>GuidanceResponse:patient</b>".
1540   */
1541  public static final ca.uhn.fhir.model.api.Include INCLUDE_PATIENT = new ca.uhn.fhir.model.api.Include("GuidanceResponse:patient").toLocked();
1542
1543 /**
1544   * Search parameter: <b>subject</b>
1545   * <p>
1546   * Description: <b>The subject that the guidance response is about</b><br>
1547   * Type: <b>reference</b><br>
1548   * Path: <b>GuidanceResponse.subject</b><br>
1549   * </p>
1550   */
1551  @SearchParamDefinition(name="subject", path="GuidanceResponse.subject", description="The subject that the guidance response is about", type="reference", target={Group.class, Patient.class } )
1552  public static final String SP_SUBJECT = "subject";
1553 /**
1554   * <b>Fluent Client</b> search parameter constant for <b>subject</b>
1555   * <p>
1556   * Description: <b>The subject that the guidance response is about</b><br>
1557   * Type: <b>reference</b><br>
1558   * Path: <b>GuidanceResponse.subject</b><br>
1559   * </p>
1560   */
1561  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SUBJECT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SUBJECT);
1562
1563/**
1564   * Constant for fluent queries to be used to add include statements. Specifies
1565   * the path value of "<b>GuidanceResponse:subject</b>".
1566   */
1567  public static final ca.uhn.fhir.model.api.Include INCLUDE_SUBJECT = new ca.uhn.fhir.model.api.Include("GuidanceResponse:subject").toLocked();
1568
1569
1570}
1571