001package org.hl7.fhir.r5.model;
002
003
004/*
005  Copyright (c) 2011+, HL7, Inc.
006  All rights reserved.
007  
008  Redistribution and use in source and binary forms, with or without modification, \
009  are permitted provided that the following conditions are met:
010  
011   * Redistributions of source code must retain the above copyright notice, this \
012     list of conditions and the following disclaimer.
013   * Redistributions in binary form must reproduce the above copyright notice, \
014     this list of conditions and the following disclaimer in the documentation \
015     and/or other materials provided with the distribution.
016   * Neither the name of HL7 nor the names of its contributors may be used to 
017     endorse or promote products derived from this software without specific 
018     prior written permission.
019  
020  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND \
021  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED \
022  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. \
023  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, \
024  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT \
025  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR \
026  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, \
027  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) \
028  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE \
029  POSSIBILITY OF SUCH DAMAGE.
030  */
031
032// Generated on Thu, Mar 23, 2023 19:59+1100 for FHIR v5.0.0
033
034import java.util.ArrayList;
035import java.util.Date;
036import java.util.List;
037import java.math.*;
038import org.hl7.fhir.utilities.Utilities;
039import org.hl7.fhir.r5.model.Enumerations.*;
040import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
041import org.hl7.fhir.exceptions.FHIRException;
042import org.hl7.fhir.instance.model.api.ICompositeType;
043import ca.uhn.fhir.model.api.annotation.ResourceDef;
044import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
045import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
046import ca.uhn.fhir.model.api.annotation.Child;
047import ca.uhn.fhir.model.api.annotation.ChildOrder;
048import ca.uhn.fhir.model.api.annotation.Description;
049import ca.uhn.fhir.model.api.annotation.Block;
050
051/**
052 * Legally enforceable, formally recorded unilateral or bilateral directive i.e., a policy or agreement.
053 */
054@ResourceDef(name="Contract", profile="http://hl7.org/fhir/StructureDefinition/Contract")
055public class Contract extends DomainResource {
056
057    public enum ContractResourcePublicationStatusCodes {
058        /**
059         * Contract is augmented with additional information to correct errors in a predecessor or to updated values in a predecessor. Usage: Contract altered within effective time. Precedence Order = 9. Comparable FHIR and v.3 status codes: revised; replaced.
060         */
061        AMENDED, 
062        /**
063         * Contract is augmented with additional information that was missing from a predecessor Contract. Usage: Contract altered within effective time. Precedence Order = 9. Comparable FHIR and v.3 status codes: updated, replaced.
064         */
065        APPENDED, 
066        /**
067         * Contract is terminated due to failure of the Grantor and/or the Grantee to fulfil one or more contract provisions. Usage: Abnormal contract termination. Precedence Order = 10. Comparable FHIR and v.3 status codes: stopped; failed; aborted.
068         */
069        CANCELLED, 
070        /**
071         * Contract is pended to rectify failure of the Grantor or the Grantee to fulfil contract provision(s). E.g., Grantee complaint about Grantor's failure to comply with contract provisions. Usage: Contract pended. Precedence Order = 7. Comparable FHIR and v.3 status codes: on hold; pended; suspended.
072         */
073        DISPUTED, 
074        /**
075         * Contract was created in error. No Precedence Order.  Status may be applied to a Contract with any status.
076         */
077        ENTEREDINERROR, 
078        /**
079         * Contract execution pending; may be executed when either the Grantor or the Grantee accepts the contract provisions by signing. I.e., where either the Grantor or the Grantee has signed, but not both. E.g., when an insurance applicant signs the insurers application, which references the policy. Usage: Optional first step of contract execution activity.  May be skipped and contracting activity moves directly to executed state. Precedence Order = 3. Comparable FHIR and v.3 status codes: draft; preliminary; planned; intended; active.
080         */
081        EXECUTABLE, 
082        /**
083         * Contract is activated for period stipulated when both the Grantor and Grantee have signed it. Usage: Required state for normal completion of contracting activity.  Precedence Order = 6. Comparable FHIR and v.3 status codes: accepted; completed.
084         */
085        EXECUTED, 
086        /**
087         * Contract execution is suspended while either or both the Grantor and Grantee propose and consider new or revised contract provisions. I.e., where the party which has not signed proposes changes to the terms.  E .g., a life insurer declines to agree to the signed application because the life insurer has evidence that the applicant, who asserted to being younger or a non-smoker to get a lower premium rate - but offers instead to agree to a higher premium based on the applicants actual age or smoking status. Usage: Optional contract activity between executable and executed state. Precedence Order = 4. Comparable FHIR and v.3 status codes: in progress; review; held.
088         */
089        NEGOTIABLE, 
090        /**
091         * Contract is a proposal by either the Grantor or the Grantee. Aka - A Contract hard copy or electronic 'template', 'form' or 'application'. E.g., health insurance application; consent directive form. Usage: Beginning of contract negotiation, which may have been completed as a precondition because used for 0..* contracts. Precedence Order = 2. Comparable FHIR and v.3 status codes: requested; new.
092         */
093        OFFERED, 
094        /**
095         * Contract template is available as the basis for an application or offer by the Grantor or Grantee. E.g., health insurance policy; consent directive policy.  Usage: Required initial contract activity, which may have been completed as a precondition because used for 0..* contracts. Precedence Order = 1. Comparable FHIR and v.3 status codes: proposed; intended.
096         */
097        POLICY, 
098        /**
099         *  Execution of the Contract is not completed because either or both the Grantor and Grantee decline to accept some or all of the contract provisions. Usage: Optional contract activity between executable and abnormal termination. Precedence Order = 5. Comparable FHIR and v.3 status codes:  stopped; cancelled.
100         */
101        REJECTED, 
102        /**
103         * Beginning of a successor Contract at the termination of predecessor Contract lifecycle. Usage: Follows termination of a preceding Contract that has reached its expiry date. Precedence Order = 13. Comparable FHIR and v.3 status codes: superseded.
104         */
105        RENEWED, 
106        /**
107         * A Contract that is rescinded.  May be required prior to replacing with an updated Contract. Comparable FHIR and v.3 status codes: nullified.
108         */
109        REVOKED, 
110        /**
111         * Contract is reactivated after being pended because of faulty execution. *E.g., competency of the signer(s), or where the policy is substantially different from and did not accompany the application/form so that the applicant could not compare them. Aka - ''reactivated''. Usage: Optional stage where a pended contract is reactivated. Precedence Order = 8. Comparable FHIR and v.3 status codes: reactivated.
112         */
113        RESOLVED, 
114        /**
115         * Contract reaches its expiry date. It might or might not be renewed or renegotiated. Usage: Normal end of contract period. Precedence Order = 12. Comparable FHIR and v.3 status codes: Obsoleted.
116         */
117        TERMINATED, 
118        /**
119         * added to help the parsers with the generic types
120         */
121        NULL;
122        public static ContractResourcePublicationStatusCodes fromCode(String codeString) throws FHIRException {
123            if (codeString == null || "".equals(codeString))
124                return null;
125        if ("amended".equals(codeString))
126          return AMENDED;
127        if ("appended".equals(codeString))
128          return APPENDED;
129        if ("cancelled".equals(codeString))
130          return CANCELLED;
131        if ("disputed".equals(codeString))
132          return DISPUTED;
133        if ("entered-in-error".equals(codeString))
134          return ENTEREDINERROR;
135        if ("executable".equals(codeString))
136          return EXECUTABLE;
137        if ("executed".equals(codeString))
138          return EXECUTED;
139        if ("negotiable".equals(codeString))
140          return NEGOTIABLE;
141        if ("offered".equals(codeString))
142          return OFFERED;
143        if ("policy".equals(codeString))
144          return POLICY;
145        if ("rejected".equals(codeString))
146          return REJECTED;
147        if ("renewed".equals(codeString))
148          return RENEWED;
149        if ("revoked".equals(codeString))
150          return REVOKED;
151        if ("resolved".equals(codeString))
152          return RESOLVED;
153        if ("terminated".equals(codeString))
154          return TERMINATED;
155        if (Configuration.isAcceptInvalidEnums())
156          return null;
157        else
158          throw new FHIRException("Unknown ContractResourcePublicationStatusCodes code '"+codeString+"'");
159        }
160        public String toCode() {
161          switch (this) {
162            case AMENDED: return "amended";
163            case APPENDED: return "appended";
164            case CANCELLED: return "cancelled";
165            case DISPUTED: return "disputed";
166            case ENTEREDINERROR: return "entered-in-error";
167            case EXECUTABLE: return "executable";
168            case EXECUTED: return "executed";
169            case NEGOTIABLE: return "negotiable";
170            case OFFERED: return "offered";
171            case POLICY: return "policy";
172            case REJECTED: return "rejected";
173            case RENEWED: return "renewed";
174            case REVOKED: return "revoked";
175            case RESOLVED: return "resolved";
176            case TERMINATED: return "terminated";
177            case NULL: return null;
178            default: return "?";
179          }
180        }
181        public String getSystem() {
182          switch (this) {
183            case AMENDED: return "http://hl7.org/fhir/contract-publicationstatus";
184            case APPENDED: return "http://hl7.org/fhir/contract-publicationstatus";
185            case CANCELLED: return "http://hl7.org/fhir/contract-publicationstatus";
186            case DISPUTED: return "http://hl7.org/fhir/contract-publicationstatus";
187            case ENTEREDINERROR: return "http://hl7.org/fhir/contract-publicationstatus";
188            case EXECUTABLE: return "http://hl7.org/fhir/contract-publicationstatus";
189            case EXECUTED: return "http://hl7.org/fhir/contract-publicationstatus";
190            case NEGOTIABLE: return "http://hl7.org/fhir/contract-publicationstatus";
191            case OFFERED: return "http://hl7.org/fhir/contract-publicationstatus";
192            case POLICY: return "http://hl7.org/fhir/contract-publicationstatus";
193            case REJECTED: return "http://hl7.org/fhir/contract-publicationstatus";
194            case RENEWED: return "http://hl7.org/fhir/contract-publicationstatus";
195            case REVOKED: return "http://hl7.org/fhir/contract-publicationstatus";
196            case RESOLVED: return "http://hl7.org/fhir/contract-publicationstatus";
197            case TERMINATED: return "http://hl7.org/fhir/contract-publicationstatus";
198            case NULL: return null;
199            default: return "?";
200          }
201        }
202        public String getDefinition() {
203          switch (this) {
204            case AMENDED: return "Contract is augmented with additional information to correct errors in a predecessor or to updated values in a predecessor. Usage: Contract altered within effective time. Precedence Order = 9. Comparable FHIR and v.3 status codes: revised; replaced.";
205            case APPENDED: return "Contract is augmented with additional information that was missing from a predecessor Contract. Usage: Contract altered within effective time. Precedence Order = 9. Comparable FHIR and v.3 status codes: updated, replaced.";
206            case CANCELLED: return "Contract is terminated due to failure of the Grantor and/or the Grantee to fulfil one or more contract provisions. Usage: Abnormal contract termination. Precedence Order = 10. Comparable FHIR and v.3 status codes: stopped; failed; aborted.";
207            case DISPUTED: return "Contract is pended to rectify failure of the Grantor or the Grantee to fulfil contract provision(s). E.g., Grantee complaint about Grantor's failure to comply with contract provisions. Usage: Contract pended. Precedence Order = 7. Comparable FHIR and v.3 status codes: on hold; pended; suspended.";
208            case ENTEREDINERROR: return "Contract was created in error. No Precedence Order.  Status may be applied to a Contract with any status.";
209            case EXECUTABLE: return "Contract execution pending; may be executed when either the Grantor or the Grantee accepts the contract provisions by signing. I.e., where either the Grantor or the Grantee has signed, but not both. E.g., when an insurance applicant signs the insurers application, which references the policy. Usage: Optional first step of contract execution activity.  May be skipped and contracting activity moves directly to executed state. Precedence Order = 3. Comparable FHIR and v.3 status codes: draft; preliminary; planned; intended; active.";
210            case EXECUTED: return "Contract is activated for period stipulated when both the Grantor and Grantee have signed it. Usage: Required state for normal completion of contracting activity.  Precedence Order = 6. Comparable FHIR and v.3 status codes: accepted; completed.";
211            case NEGOTIABLE: return "Contract execution is suspended while either or both the Grantor and Grantee propose and consider new or revised contract provisions. I.e., where the party which has not signed proposes changes to the terms.  E .g., a life insurer declines to agree to the signed application because the life insurer has evidence that the applicant, who asserted to being younger or a non-smoker to get a lower premium rate - but offers instead to agree to a higher premium based on the applicants actual age or smoking status. Usage: Optional contract activity between executable and executed state. Precedence Order = 4. Comparable FHIR and v.3 status codes: in progress; review; held.";
212            case OFFERED: return "Contract is a proposal by either the Grantor or the Grantee. Aka - A Contract hard copy or electronic 'template', 'form' or 'application'. E.g., health insurance application; consent directive form. Usage: Beginning of contract negotiation, which may have been completed as a precondition because used for 0..* contracts. Precedence Order = 2. Comparable FHIR and v.3 status codes: requested; new.";
213            case POLICY: return "Contract template is available as the basis for an application or offer by the Grantor or Grantee. E.g., health insurance policy; consent directive policy.  Usage: Required initial contract activity, which may have been completed as a precondition because used for 0..* contracts. Precedence Order = 1. Comparable FHIR and v.3 status codes: proposed; intended.";
214            case REJECTED: return " Execution of the Contract is not completed because either or both the Grantor and Grantee decline to accept some or all of the contract provisions. Usage: Optional contract activity between executable and abnormal termination. Precedence Order = 5. Comparable FHIR and v.3 status codes:  stopped; cancelled.";
215            case RENEWED: return "Beginning of a successor Contract at the termination of predecessor Contract lifecycle. Usage: Follows termination of a preceding Contract that has reached its expiry date. Precedence Order = 13. Comparable FHIR and v.3 status codes: superseded.";
216            case REVOKED: return "A Contract that is rescinded.  May be required prior to replacing with an updated Contract. Comparable FHIR and v.3 status codes: nullified.";
217            case RESOLVED: return "Contract is reactivated after being pended because of faulty execution. *E.g., competency of the signer(s), or where the policy is substantially different from and did not accompany the application/form so that the applicant could not compare them. Aka - ''reactivated''. Usage: Optional stage where a pended contract is reactivated. Precedence Order = 8. Comparable FHIR and v.3 status codes: reactivated.";
218            case TERMINATED: return "Contract reaches its expiry date. It might or might not be renewed or renegotiated. Usage: Normal end of contract period. Precedence Order = 12. Comparable FHIR and v.3 status codes: Obsoleted.";
219            case NULL: return null;
220            default: return "?";
221          }
222        }
223        public String getDisplay() {
224          switch (this) {
225            case AMENDED: return "Amended";
226            case APPENDED: return "Appended";
227            case CANCELLED: return "Cancelled";
228            case DISPUTED: return "Disputed";
229            case ENTEREDINERROR: return "Entered in Error";
230            case EXECUTABLE: return "Executable";
231            case EXECUTED: return "Executed";
232            case NEGOTIABLE: return "Negotiable";
233            case OFFERED: return "Offered";
234            case POLICY: return "Policy";
235            case REJECTED: return "Rejected";
236            case RENEWED: return "Renewed";
237            case REVOKED: return "Revoked";
238            case RESOLVED: return "Resolved";
239            case TERMINATED: return "Terminated";
240            case NULL: return null;
241            default: return "?";
242          }
243        }
244    }
245
246  public static class ContractResourcePublicationStatusCodesEnumFactory implements EnumFactory<ContractResourcePublicationStatusCodes> {
247    public ContractResourcePublicationStatusCodes fromCode(String codeString) throws IllegalArgumentException {
248      if (codeString == null || "".equals(codeString))
249            if (codeString == null || "".equals(codeString))
250                return null;
251        if ("amended".equals(codeString))
252          return ContractResourcePublicationStatusCodes.AMENDED;
253        if ("appended".equals(codeString))
254          return ContractResourcePublicationStatusCodes.APPENDED;
255        if ("cancelled".equals(codeString))
256          return ContractResourcePublicationStatusCodes.CANCELLED;
257        if ("disputed".equals(codeString))
258          return ContractResourcePublicationStatusCodes.DISPUTED;
259        if ("entered-in-error".equals(codeString))
260          return ContractResourcePublicationStatusCodes.ENTEREDINERROR;
261        if ("executable".equals(codeString))
262          return ContractResourcePublicationStatusCodes.EXECUTABLE;
263        if ("executed".equals(codeString))
264          return ContractResourcePublicationStatusCodes.EXECUTED;
265        if ("negotiable".equals(codeString))
266          return ContractResourcePublicationStatusCodes.NEGOTIABLE;
267        if ("offered".equals(codeString))
268          return ContractResourcePublicationStatusCodes.OFFERED;
269        if ("policy".equals(codeString))
270          return ContractResourcePublicationStatusCodes.POLICY;
271        if ("rejected".equals(codeString))
272          return ContractResourcePublicationStatusCodes.REJECTED;
273        if ("renewed".equals(codeString))
274          return ContractResourcePublicationStatusCodes.RENEWED;
275        if ("revoked".equals(codeString))
276          return ContractResourcePublicationStatusCodes.REVOKED;
277        if ("resolved".equals(codeString))
278          return ContractResourcePublicationStatusCodes.RESOLVED;
279        if ("terminated".equals(codeString))
280          return ContractResourcePublicationStatusCodes.TERMINATED;
281        throw new IllegalArgumentException("Unknown ContractResourcePublicationStatusCodes code '"+codeString+"'");
282        }
283        public Enumeration<ContractResourcePublicationStatusCodes> fromType(PrimitiveType<?> code) throws FHIRException {
284          if (code == null)
285            return null;
286          if (code.isEmpty())
287            return new Enumeration<ContractResourcePublicationStatusCodes>(this, ContractResourcePublicationStatusCodes.NULL, code);
288          String codeString = ((PrimitiveType) code).asStringValue();
289          if (codeString == null || "".equals(codeString))
290            return new Enumeration<ContractResourcePublicationStatusCodes>(this, ContractResourcePublicationStatusCodes.NULL, code);
291        if ("amended".equals(codeString))
292          return new Enumeration<ContractResourcePublicationStatusCodes>(this, ContractResourcePublicationStatusCodes.AMENDED, code);
293        if ("appended".equals(codeString))
294          return new Enumeration<ContractResourcePublicationStatusCodes>(this, ContractResourcePublicationStatusCodes.APPENDED, code);
295        if ("cancelled".equals(codeString))
296          return new Enumeration<ContractResourcePublicationStatusCodes>(this, ContractResourcePublicationStatusCodes.CANCELLED, code);
297        if ("disputed".equals(codeString))
298          return new Enumeration<ContractResourcePublicationStatusCodes>(this, ContractResourcePublicationStatusCodes.DISPUTED, code);
299        if ("entered-in-error".equals(codeString))
300          return new Enumeration<ContractResourcePublicationStatusCodes>(this, ContractResourcePublicationStatusCodes.ENTEREDINERROR, code);
301        if ("executable".equals(codeString))
302          return new Enumeration<ContractResourcePublicationStatusCodes>(this, ContractResourcePublicationStatusCodes.EXECUTABLE, code);
303        if ("executed".equals(codeString))
304          return new Enumeration<ContractResourcePublicationStatusCodes>(this, ContractResourcePublicationStatusCodes.EXECUTED, code);
305        if ("negotiable".equals(codeString))
306          return new Enumeration<ContractResourcePublicationStatusCodes>(this, ContractResourcePublicationStatusCodes.NEGOTIABLE, code);
307        if ("offered".equals(codeString))
308          return new Enumeration<ContractResourcePublicationStatusCodes>(this, ContractResourcePublicationStatusCodes.OFFERED, code);
309        if ("policy".equals(codeString))
310          return new Enumeration<ContractResourcePublicationStatusCodes>(this, ContractResourcePublicationStatusCodes.POLICY, code);
311        if ("rejected".equals(codeString))
312          return new Enumeration<ContractResourcePublicationStatusCodes>(this, ContractResourcePublicationStatusCodes.REJECTED, code);
313        if ("renewed".equals(codeString))
314          return new Enumeration<ContractResourcePublicationStatusCodes>(this, ContractResourcePublicationStatusCodes.RENEWED, code);
315        if ("revoked".equals(codeString))
316          return new Enumeration<ContractResourcePublicationStatusCodes>(this, ContractResourcePublicationStatusCodes.REVOKED, code);
317        if ("resolved".equals(codeString))
318          return new Enumeration<ContractResourcePublicationStatusCodes>(this, ContractResourcePublicationStatusCodes.RESOLVED, code);
319        if ("terminated".equals(codeString))
320          return new Enumeration<ContractResourcePublicationStatusCodes>(this, ContractResourcePublicationStatusCodes.TERMINATED, code);
321        throw new FHIRException("Unknown ContractResourcePublicationStatusCodes code '"+codeString+"'");
322        }
323    public String toCode(ContractResourcePublicationStatusCodes code) {
324      if (code == ContractResourcePublicationStatusCodes.AMENDED)
325        return "amended";
326      if (code == ContractResourcePublicationStatusCodes.APPENDED)
327        return "appended";
328      if (code == ContractResourcePublicationStatusCodes.CANCELLED)
329        return "cancelled";
330      if (code == ContractResourcePublicationStatusCodes.DISPUTED)
331        return "disputed";
332      if (code == ContractResourcePublicationStatusCodes.ENTEREDINERROR)
333        return "entered-in-error";
334      if (code == ContractResourcePublicationStatusCodes.EXECUTABLE)
335        return "executable";
336      if (code == ContractResourcePublicationStatusCodes.EXECUTED)
337        return "executed";
338      if (code == ContractResourcePublicationStatusCodes.NEGOTIABLE)
339        return "negotiable";
340      if (code == ContractResourcePublicationStatusCodes.OFFERED)
341        return "offered";
342      if (code == ContractResourcePublicationStatusCodes.POLICY)
343        return "policy";
344      if (code == ContractResourcePublicationStatusCodes.REJECTED)
345        return "rejected";
346      if (code == ContractResourcePublicationStatusCodes.RENEWED)
347        return "renewed";
348      if (code == ContractResourcePublicationStatusCodes.REVOKED)
349        return "revoked";
350      if (code == ContractResourcePublicationStatusCodes.RESOLVED)
351        return "resolved";
352      if (code == ContractResourcePublicationStatusCodes.TERMINATED)
353        return "terminated";
354      return "?";
355      }
356    public String toSystem(ContractResourcePublicationStatusCodes code) {
357      return code.getSystem();
358      }
359    }
360
361    public enum ContractResourceStatusCodes {
362        /**
363         * Contract is augmented with additional information to correct errors in a predecessor or to updated values in a predecessor. Usage: Contract altered within effective time. Precedence Order = 9. Comparable FHIR and v.3 status codes: revised; replaced.
364         */
365        AMENDED, 
366        /**
367         * Contract is augmented with additional information that was missing from a predecessor Contract. Usage: Contract altered within effective time. Precedence Order = 9. Comparable FHIR and v.3 status codes: updated, replaced.
368         */
369        APPENDED, 
370        /**
371         * Contract is terminated due to failure of the Grantor and/or the Grantee to fulfil one or more contract provisions. Usage: Abnormal contract termination. Precedence Order = 10. Comparable FHIR and v.3 status codes: stopped; failed; aborted.
372         */
373        CANCELLED, 
374        /**
375         * Contract is pended to rectify failure of the Grantor or the Grantee to fulfil contract provision(s). E.g., Grantee complaint about Grantor's failure to comply with contract provisions. Usage: Contract pended. Precedence Order = 7. Comparable FHIR and v.3 status codes: on hold; pended; suspended.
376         */
377        DISPUTED, 
378        /**
379         * Contract was created in error. No Precedence Order.  Status may be applied to a Contract with any status.
380         */
381        ENTEREDINERROR, 
382        /**
383         * Contract execution pending; may be executed when either the Grantor or the Grantee accepts the contract provisions by signing. I.e., where either the Grantor or the Grantee has signed, but not both. E.g., when an insurance applicant signs the insurers application, which references the policy. Usage: Optional first step of contract execution activity.  May be skipped and contracting activity moves directly to executed state. Precedence Order = 3. Comparable FHIR and v.3 status codes: draft; preliminary; planned; intended; active.
384         */
385        EXECUTABLE, 
386        /**
387         * Contract is activated for period stipulated when both the Grantor and Grantee have signed it. Usage: Required state for normal completion of contracting activity.  Precedence Order = 6. Comparable FHIR and v.3 status codes: accepted; completed.
388         */
389        EXECUTED, 
390        /**
391         * Contract execution is suspended while either or both the Grantor and Grantee propose and consider new or revised contract provisions. I.e., where the party which has not signed proposes changes to the terms.  E .g., a life insurer declines to agree to the signed application because the life insurer has evidence that the applicant, who asserted to being younger or a non-smoker to get a lower premium rate - but offers instead to agree to a higher premium based on the applicants actual age or smoking status. Usage: Optional contract activity between executable and executed state. Precedence Order = 4. Comparable FHIR and v.3 status codes: in progress; review; held.
392         */
393        NEGOTIABLE, 
394        /**
395         * Contract is a proposal by either the Grantor or the Grantee. Aka - A Contract hard copy or electronic 'template', 'form' or 'application'. E.g., health insurance application; consent directive form. Usage: Beginning of contract negotiation, which may have been completed as a precondition because used for 0..* contracts. Precedence Order = 2. Comparable FHIR and v.3 status codes: requested; new.
396         */
397        OFFERED, 
398        /**
399         * Contract template is available as the basis for an application or offer by the Grantor or Grantee. E.g., health insurance policy; consent directive policy.  Usage: Required initial contract activity, which may have been completed as a precondition because used for 0..* contracts. Precedence Order = 1. Comparable FHIR and v.3 status codes: proposed; intended.
400         */
401        POLICY, 
402        /**
403         *  Execution of the Contract is not completed because either or both the Grantor and Grantee decline to accept some or all of the contract provisions. Usage: Optional contract activity between executable and abnormal termination. Precedence Order = 5. Comparable FHIR and v.3 status codes:  stopped; cancelled.
404         */
405        REJECTED, 
406        /**
407         * Beginning of a successor Contract at the termination of predecessor Contract lifecycle. Usage: Follows termination of a preceding Contract that has reached its expiry date. Precedence Order = 13. Comparable FHIR and v.3 status codes: superseded.
408         */
409        RENEWED, 
410        /**
411         * A Contract that is rescinded.  May be required prior to replacing with an updated Contract. Comparable FHIR and v.3 status codes: nullified.
412         */
413        REVOKED, 
414        /**
415         * Contract is reactivated after being pended because of faulty execution. *E.g., competency of the signer(s), or where the policy is substantially different from and did not accompany the application/form so that the applicant could not compare them. Aka - ''reactivated''. Usage: Optional stage where a pended contract is reactivated. Precedence Order = 8. Comparable FHIR and v.3 status codes: reactivated.
416         */
417        RESOLVED, 
418        /**
419         * Contract reaches its expiry date. It might or might not be renewed or renegotiated. Usage: Normal end of contract period. Precedence Order = 12. Comparable FHIR and v.3 status codes: Obsoleted.
420         */
421        TERMINATED, 
422        /**
423         * added to help the parsers with the generic types
424         */
425        NULL;
426        public static ContractResourceStatusCodes fromCode(String codeString) throws FHIRException {
427            if (codeString == null || "".equals(codeString))
428                return null;
429        if ("amended".equals(codeString))
430          return AMENDED;
431        if ("appended".equals(codeString))
432          return APPENDED;
433        if ("cancelled".equals(codeString))
434          return CANCELLED;
435        if ("disputed".equals(codeString))
436          return DISPUTED;
437        if ("entered-in-error".equals(codeString))
438          return ENTEREDINERROR;
439        if ("executable".equals(codeString))
440          return EXECUTABLE;
441        if ("executed".equals(codeString))
442          return EXECUTED;
443        if ("negotiable".equals(codeString))
444          return NEGOTIABLE;
445        if ("offered".equals(codeString))
446          return OFFERED;
447        if ("policy".equals(codeString))
448          return POLICY;
449        if ("rejected".equals(codeString))
450          return REJECTED;
451        if ("renewed".equals(codeString))
452          return RENEWED;
453        if ("revoked".equals(codeString))
454          return REVOKED;
455        if ("resolved".equals(codeString))
456          return RESOLVED;
457        if ("terminated".equals(codeString))
458          return TERMINATED;
459        if (Configuration.isAcceptInvalidEnums())
460          return null;
461        else
462          throw new FHIRException("Unknown ContractResourceStatusCodes code '"+codeString+"'");
463        }
464        public String toCode() {
465          switch (this) {
466            case AMENDED: return "amended";
467            case APPENDED: return "appended";
468            case CANCELLED: return "cancelled";
469            case DISPUTED: return "disputed";
470            case ENTEREDINERROR: return "entered-in-error";
471            case EXECUTABLE: return "executable";
472            case EXECUTED: return "executed";
473            case NEGOTIABLE: return "negotiable";
474            case OFFERED: return "offered";
475            case POLICY: return "policy";
476            case REJECTED: return "rejected";
477            case RENEWED: return "renewed";
478            case REVOKED: return "revoked";
479            case RESOLVED: return "resolved";
480            case TERMINATED: return "terminated";
481            case NULL: return null;
482            default: return "?";
483          }
484        }
485        public String getSystem() {
486          switch (this) {
487            case AMENDED: return "http://hl7.org/fhir/contract-status";
488            case APPENDED: return "http://hl7.org/fhir/contract-status";
489            case CANCELLED: return "http://hl7.org/fhir/contract-status";
490            case DISPUTED: return "http://hl7.org/fhir/contract-status";
491            case ENTEREDINERROR: return "http://hl7.org/fhir/contract-status";
492            case EXECUTABLE: return "http://hl7.org/fhir/contract-status";
493            case EXECUTED: return "http://hl7.org/fhir/contract-status";
494            case NEGOTIABLE: return "http://hl7.org/fhir/contract-status";
495            case OFFERED: return "http://hl7.org/fhir/contract-status";
496            case POLICY: return "http://hl7.org/fhir/contract-status";
497            case REJECTED: return "http://hl7.org/fhir/contract-status";
498            case RENEWED: return "http://hl7.org/fhir/contract-status";
499            case REVOKED: return "http://hl7.org/fhir/contract-status";
500            case RESOLVED: return "http://hl7.org/fhir/contract-status";
501            case TERMINATED: return "http://hl7.org/fhir/contract-status";
502            case NULL: return null;
503            default: return "?";
504          }
505        }
506        public String getDefinition() {
507          switch (this) {
508            case AMENDED: return "Contract is augmented with additional information to correct errors in a predecessor or to updated values in a predecessor. Usage: Contract altered within effective time. Precedence Order = 9. Comparable FHIR and v.3 status codes: revised; replaced.";
509            case APPENDED: return "Contract is augmented with additional information that was missing from a predecessor Contract. Usage: Contract altered within effective time. Precedence Order = 9. Comparable FHIR and v.3 status codes: updated, replaced.";
510            case CANCELLED: return "Contract is terminated due to failure of the Grantor and/or the Grantee to fulfil one or more contract provisions. Usage: Abnormal contract termination. Precedence Order = 10. Comparable FHIR and v.3 status codes: stopped; failed; aborted.";
511            case DISPUTED: return "Contract is pended to rectify failure of the Grantor or the Grantee to fulfil contract provision(s). E.g., Grantee complaint about Grantor's failure to comply with contract provisions. Usage: Contract pended. Precedence Order = 7. Comparable FHIR and v.3 status codes: on hold; pended; suspended.";
512            case ENTEREDINERROR: return "Contract was created in error. No Precedence Order.  Status may be applied to a Contract with any status.";
513            case EXECUTABLE: return "Contract execution pending; may be executed when either the Grantor or the Grantee accepts the contract provisions by signing. I.e., where either the Grantor or the Grantee has signed, but not both. E.g., when an insurance applicant signs the insurers application, which references the policy. Usage: Optional first step of contract execution activity.  May be skipped and contracting activity moves directly to executed state. Precedence Order = 3. Comparable FHIR and v.3 status codes: draft; preliminary; planned; intended; active.";
514            case EXECUTED: return "Contract is activated for period stipulated when both the Grantor and Grantee have signed it. Usage: Required state for normal completion of contracting activity.  Precedence Order = 6. Comparable FHIR and v.3 status codes: accepted; completed.";
515            case NEGOTIABLE: return "Contract execution is suspended while either or both the Grantor and Grantee propose and consider new or revised contract provisions. I.e., where the party which has not signed proposes changes to the terms.  E .g., a life insurer declines to agree to the signed application because the life insurer has evidence that the applicant, who asserted to being younger or a non-smoker to get a lower premium rate - but offers instead to agree to a higher premium based on the applicants actual age or smoking status. Usage: Optional contract activity between executable and executed state. Precedence Order = 4. Comparable FHIR and v.3 status codes: in progress; review; held.";
516            case OFFERED: return "Contract is a proposal by either the Grantor or the Grantee. Aka - A Contract hard copy or electronic 'template', 'form' or 'application'. E.g., health insurance application; consent directive form. Usage: Beginning of contract negotiation, which may have been completed as a precondition because used for 0..* contracts. Precedence Order = 2. Comparable FHIR and v.3 status codes: requested; new.";
517            case POLICY: return "Contract template is available as the basis for an application or offer by the Grantor or Grantee. E.g., health insurance policy; consent directive policy.  Usage: Required initial contract activity, which may have been completed as a precondition because used for 0..* contracts. Precedence Order = 1. Comparable FHIR and v.3 status codes: proposed; intended.";
518            case REJECTED: return " Execution of the Contract is not completed because either or both the Grantor and Grantee decline to accept some or all of the contract provisions. Usage: Optional contract activity between executable and abnormal termination. Precedence Order = 5. Comparable FHIR and v.3 status codes:  stopped; cancelled.";
519            case RENEWED: return "Beginning of a successor Contract at the termination of predecessor Contract lifecycle. Usage: Follows termination of a preceding Contract that has reached its expiry date. Precedence Order = 13. Comparable FHIR and v.3 status codes: superseded.";
520            case REVOKED: return "A Contract that is rescinded.  May be required prior to replacing with an updated Contract. Comparable FHIR and v.3 status codes: nullified.";
521            case RESOLVED: return "Contract is reactivated after being pended because of faulty execution. *E.g., competency of the signer(s), or where the policy is substantially different from and did not accompany the application/form so that the applicant could not compare them. Aka - ''reactivated''. Usage: Optional stage where a pended contract is reactivated. Precedence Order = 8. Comparable FHIR and v.3 status codes: reactivated.";
522            case TERMINATED: return "Contract reaches its expiry date. It might or might not be renewed or renegotiated. Usage: Normal end of contract period. Precedence Order = 12. Comparable FHIR and v.3 status codes: Obsoleted.";
523            case NULL: return null;
524            default: return "?";
525          }
526        }
527        public String getDisplay() {
528          switch (this) {
529            case AMENDED: return "Amended";
530            case APPENDED: return "Appended";
531            case CANCELLED: return "Cancelled";
532            case DISPUTED: return "Disputed";
533            case ENTEREDINERROR: return "Entered in Error";
534            case EXECUTABLE: return "Executable";
535            case EXECUTED: return "Executed";
536            case NEGOTIABLE: return "Negotiable";
537            case OFFERED: return "Offered";
538            case POLICY: return "Policy";
539            case REJECTED: return "Rejected";
540            case RENEWED: return "Renewed";
541            case REVOKED: return "Revoked";
542            case RESOLVED: return "Resolved";
543            case TERMINATED: return "Terminated";
544            case NULL: return null;
545            default: return "?";
546          }
547        }
548    }
549
550  public static class ContractResourceStatusCodesEnumFactory implements EnumFactory<ContractResourceStatusCodes> {
551    public ContractResourceStatusCodes fromCode(String codeString) throws IllegalArgumentException {
552      if (codeString == null || "".equals(codeString))
553            if (codeString == null || "".equals(codeString))
554                return null;
555        if ("amended".equals(codeString))
556          return ContractResourceStatusCodes.AMENDED;
557        if ("appended".equals(codeString))
558          return ContractResourceStatusCodes.APPENDED;
559        if ("cancelled".equals(codeString))
560          return ContractResourceStatusCodes.CANCELLED;
561        if ("disputed".equals(codeString))
562          return ContractResourceStatusCodes.DISPUTED;
563        if ("entered-in-error".equals(codeString))
564          return ContractResourceStatusCodes.ENTEREDINERROR;
565        if ("executable".equals(codeString))
566          return ContractResourceStatusCodes.EXECUTABLE;
567        if ("executed".equals(codeString))
568          return ContractResourceStatusCodes.EXECUTED;
569        if ("negotiable".equals(codeString))
570          return ContractResourceStatusCodes.NEGOTIABLE;
571        if ("offered".equals(codeString))
572          return ContractResourceStatusCodes.OFFERED;
573        if ("policy".equals(codeString))
574          return ContractResourceStatusCodes.POLICY;
575        if ("rejected".equals(codeString))
576          return ContractResourceStatusCodes.REJECTED;
577        if ("renewed".equals(codeString))
578          return ContractResourceStatusCodes.RENEWED;
579        if ("revoked".equals(codeString))
580          return ContractResourceStatusCodes.REVOKED;
581        if ("resolved".equals(codeString))
582          return ContractResourceStatusCodes.RESOLVED;
583        if ("terminated".equals(codeString))
584          return ContractResourceStatusCodes.TERMINATED;
585        throw new IllegalArgumentException("Unknown ContractResourceStatusCodes code '"+codeString+"'");
586        }
587        public Enumeration<ContractResourceStatusCodes> fromType(PrimitiveType<?> code) throws FHIRException {
588          if (code == null)
589            return null;
590          if (code.isEmpty())
591            return new Enumeration<ContractResourceStatusCodes>(this, ContractResourceStatusCodes.NULL, code);
592          String codeString = ((PrimitiveType) code).asStringValue();
593          if (codeString == null || "".equals(codeString))
594            return new Enumeration<ContractResourceStatusCodes>(this, ContractResourceStatusCodes.NULL, code);
595        if ("amended".equals(codeString))
596          return new Enumeration<ContractResourceStatusCodes>(this, ContractResourceStatusCodes.AMENDED, code);
597        if ("appended".equals(codeString))
598          return new Enumeration<ContractResourceStatusCodes>(this, ContractResourceStatusCodes.APPENDED, code);
599        if ("cancelled".equals(codeString))
600          return new Enumeration<ContractResourceStatusCodes>(this, ContractResourceStatusCodes.CANCELLED, code);
601        if ("disputed".equals(codeString))
602          return new Enumeration<ContractResourceStatusCodes>(this, ContractResourceStatusCodes.DISPUTED, code);
603        if ("entered-in-error".equals(codeString))
604          return new Enumeration<ContractResourceStatusCodes>(this, ContractResourceStatusCodes.ENTEREDINERROR, code);
605        if ("executable".equals(codeString))
606          return new Enumeration<ContractResourceStatusCodes>(this, ContractResourceStatusCodes.EXECUTABLE, code);
607        if ("executed".equals(codeString))
608          return new Enumeration<ContractResourceStatusCodes>(this, ContractResourceStatusCodes.EXECUTED, code);
609        if ("negotiable".equals(codeString))
610          return new Enumeration<ContractResourceStatusCodes>(this, ContractResourceStatusCodes.NEGOTIABLE, code);
611        if ("offered".equals(codeString))
612          return new Enumeration<ContractResourceStatusCodes>(this, ContractResourceStatusCodes.OFFERED, code);
613        if ("policy".equals(codeString))
614          return new Enumeration<ContractResourceStatusCodes>(this, ContractResourceStatusCodes.POLICY, code);
615        if ("rejected".equals(codeString))
616          return new Enumeration<ContractResourceStatusCodes>(this, ContractResourceStatusCodes.REJECTED, code);
617        if ("renewed".equals(codeString))
618          return new Enumeration<ContractResourceStatusCodes>(this, ContractResourceStatusCodes.RENEWED, code);
619        if ("revoked".equals(codeString))
620          return new Enumeration<ContractResourceStatusCodes>(this, ContractResourceStatusCodes.REVOKED, code);
621        if ("resolved".equals(codeString))
622          return new Enumeration<ContractResourceStatusCodes>(this, ContractResourceStatusCodes.RESOLVED, code);
623        if ("terminated".equals(codeString))
624          return new Enumeration<ContractResourceStatusCodes>(this, ContractResourceStatusCodes.TERMINATED, code);
625        throw new FHIRException("Unknown ContractResourceStatusCodes code '"+codeString+"'");
626        }
627    public String toCode(ContractResourceStatusCodes code) {
628      if (code == ContractResourceStatusCodes.AMENDED)
629        return "amended";
630      if (code == ContractResourceStatusCodes.APPENDED)
631        return "appended";
632      if (code == ContractResourceStatusCodes.CANCELLED)
633        return "cancelled";
634      if (code == ContractResourceStatusCodes.DISPUTED)
635        return "disputed";
636      if (code == ContractResourceStatusCodes.ENTEREDINERROR)
637        return "entered-in-error";
638      if (code == ContractResourceStatusCodes.EXECUTABLE)
639        return "executable";
640      if (code == ContractResourceStatusCodes.EXECUTED)
641        return "executed";
642      if (code == ContractResourceStatusCodes.NEGOTIABLE)
643        return "negotiable";
644      if (code == ContractResourceStatusCodes.OFFERED)
645        return "offered";
646      if (code == ContractResourceStatusCodes.POLICY)
647        return "policy";
648      if (code == ContractResourceStatusCodes.REJECTED)
649        return "rejected";
650      if (code == ContractResourceStatusCodes.RENEWED)
651        return "renewed";
652      if (code == ContractResourceStatusCodes.REVOKED)
653        return "revoked";
654      if (code == ContractResourceStatusCodes.RESOLVED)
655        return "resolved";
656      if (code == ContractResourceStatusCodes.TERMINATED)
657        return "terminated";
658      return "?";
659      }
660    public String toSystem(ContractResourceStatusCodes code) {
661      return code.getSystem();
662      }
663    }
664
665    @Block()
666    public static class ContentDefinitionComponent extends BackboneElement implements IBaseBackboneElement {
667        /**
668         * Precusory content structure and use, i.e., a boilerplate, template, application for a contract such as an insurance policy or benefits under a program, e.g., workers compensation.
669         */
670        @Child(name = "type", type = {CodeableConcept.class}, order=1, min=1, max=1, modifier=false, summary=false)
671        @Description(shortDefinition="Content structure and use", formalDefinition="Precusory content structure and use, i.e., a boilerplate, template, application for a contract such as an insurance policy or benefits under a program, e.g., workers compensation." )
672        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/contract-definition-type")
673        protected CodeableConcept type;
674
675        /**
676         * Detailed Precusory content type.
677         */
678        @Child(name = "subType", type = {CodeableConcept.class}, order=2, min=0, max=1, modifier=false, summary=false)
679        @Description(shortDefinition="Detailed Content Type Definition", formalDefinition="Detailed Precusory content type." )
680        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/contract-definition-subtype")
681        protected CodeableConcept subType;
682
683        /**
684         * The  individual or organization that published the Contract precursor content.
685         */
686        @Child(name = "publisher", type = {Practitioner.class, PractitionerRole.class, Organization.class}, order=3, min=0, max=1, modifier=false, summary=false)
687        @Description(shortDefinition="Publisher Entity", formalDefinition="The  individual or organization that published the Contract precursor content." )
688        protected Reference publisher;
689
690        /**
691         * The date (and optionally time) when the contract was last significantly changed. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the contract changes.
692         */
693        @Child(name = "publicationDate", type = {DateTimeType.class}, order=4, min=0, max=1, modifier=false, summary=false)
694        @Description(shortDefinition="When published", formalDefinition="The date (and optionally time) when the contract was last significantly changed. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the contract changes." )
695        protected DateTimeType publicationDate;
696
697        /**
698         * amended | appended | cancelled | disputed | entered-in-error | executable +.
699         */
700        @Child(name = "publicationStatus", type = {CodeType.class}, order=5, min=1, max=1, modifier=false, summary=false)
701        @Description(shortDefinition="amended | appended | cancelled | disputed | entered-in-error | executable +", formalDefinition="amended | appended | cancelled | disputed | entered-in-error | executable +." )
702        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/contract-publicationstatus")
703        protected Enumeration<ContractResourcePublicationStatusCodes> publicationStatus;
704
705        /**
706         * A copyright statement relating to Contract precursor content. Copyright statements are generally legal restrictions on the use and publishing of the Contract precursor content.
707         */
708        @Child(name = "copyright", type = {MarkdownType.class}, order=6, min=0, max=1, modifier=false, summary=false)
709        @Description(shortDefinition="Publication Ownership", formalDefinition="A copyright statement relating to Contract precursor content. Copyright statements are generally legal restrictions on the use and publishing of the Contract precursor content." )
710        protected MarkdownType copyright;
711
712        private static final long serialVersionUID = 306178803L;
713
714    /**
715     * Constructor
716     */
717      public ContentDefinitionComponent() {
718        super();
719      }
720
721    /**
722     * Constructor
723     */
724      public ContentDefinitionComponent(CodeableConcept type, ContractResourcePublicationStatusCodes publicationStatus) {
725        super();
726        this.setType(type);
727        this.setPublicationStatus(publicationStatus);
728      }
729
730        /**
731         * @return {@link #type} (Precusory content structure and use, i.e., a boilerplate, template, application for a contract such as an insurance policy or benefits under a program, e.g., workers compensation.)
732         */
733        public CodeableConcept getType() { 
734          if (this.type == null)
735            if (Configuration.errorOnAutoCreate())
736              throw new Error("Attempt to auto-create ContentDefinitionComponent.type");
737            else if (Configuration.doAutoCreate())
738              this.type = new CodeableConcept(); // cc
739          return this.type;
740        }
741
742        public boolean hasType() { 
743          return this.type != null && !this.type.isEmpty();
744        }
745
746        /**
747         * @param value {@link #type} (Precusory content structure and use, i.e., a boilerplate, template, application for a contract such as an insurance policy or benefits under a program, e.g., workers compensation.)
748         */
749        public ContentDefinitionComponent setType(CodeableConcept value) { 
750          this.type = value;
751          return this;
752        }
753
754        /**
755         * @return {@link #subType} (Detailed Precusory content type.)
756         */
757        public CodeableConcept getSubType() { 
758          if (this.subType == null)
759            if (Configuration.errorOnAutoCreate())
760              throw new Error("Attempt to auto-create ContentDefinitionComponent.subType");
761            else if (Configuration.doAutoCreate())
762              this.subType = new CodeableConcept(); // cc
763          return this.subType;
764        }
765
766        public boolean hasSubType() { 
767          return this.subType != null && !this.subType.isEmpty();
768        }
769
770        /**
771         * @param value {@link #subType} (Detailed Precusory content type.)
772         */
773        public ContentDefinitionComponent setSubType(CodeableConcept value) { 
774          this.subType = value;
775          return this;
776        }
777
778        /**
779         * @return {@link #publisher} (The  individual or organization that published the Contract precursor content.)
780         */
781        public Reference getPublisher() { 
782          if (this.publisher == null)
783            if (Configuration.errorOnAutoCreate())
784              throw new Error("Attempt to auto-create ContentDefinitionComponent.publisher");
785            else if (Configuration.doAutoCreate())
786              this.publisher = new Reference(); // cc
787          return this.publisher;
788        }
789
790        public boolean hasPublisher() { 
791          return this.publisher != null && !this.publisher.isEmpty();
792        }
793
794        /**
795         * @param value {@link #publisher} (The  individual or organization that published the Contract precursor content.)
796         */
797        public ContentDefinitionComponent setPublisher(Reference value) { 
798          this.publisher = value;
799          return this;
800        }
801
802        /**
803         * @return {@link #publicationDate} (The date (and optionally time) when the contract was last significantly changed. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the contract changes.). This is the underlying object with id, value and extensions. The accessor "getPublicationDate" gives direct access to the value
804         */
805        public DateTimeType getPublicationDateElement() { 
806          if (this.publicationDate == null)
807            if (Configuration.errorOnAutoCreate())
808              throw new Error("Attempt to auto-create ContentDefinitionComponent.publicationDate");
809            else if (Configuration.doAutoCreate())
810              this.publicationDate = new DateTimeType(); // bb
811          return this.publicationDate;
812        }
813
814        public boolean hasPublicationDateElement() { 
815          return this.publicationDate != null && !this.publicationDate.isEmpty();
816        }
817
818        public boolean hasPublicationDate() { 
819          return this.publicationDate != null && !this.publicationDate.isEmpty();
820        }
821
822        /**
823         * @param value {@link #publicationDate} (The date (and optionally time) when the contract was last significantly changed. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the contract changes.). This is the underlying object with id, value and extensions. The accessor "getPublicationDate" gives direct access to the value
824         */
825        public ContentDefinitionComponent setPublicationDateElement(DateTimeType value) { 
826          this.publicationDate = value;
827          return this;
828        }
829
830        /**
831         * @return The date (and optionally time) when the contract was last significantly changed. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the contract changes.
832         */
833        public Date getPublicationDate() { 
834          return this.publicationDate == null ? null : this.publicationDate.getValue();
835        }
836
837        /**
838         * @param value The date (and optionally time) when the contract was last significantly changed. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the contract changes.
839         */
840        public ContentDefinitionComponent setPublicationDate(Date value) { 
841          if (value == null)
842            this.publicationDate = null;
843          else {
844            if (this.publicationDate == null)
845              this.publicationDate = new DateTimeType();
846            this.publicationDate.setValue(value);
847          }
848          return this;
849        }
850
851        /**
852         * @return {@link #publicationStatus} (amended | appended | cancelled | disputed | entered-in-error | executable +.). This is the underlying object with id, value and extensions. The accessor "getPublicationStatus" gives direct access to the value
853         */
854        public Enumeration<ContractResourcePublicationStatusCodes> getPublicationStatusElement() { 
855          if (this.publicationStatus == null)
856            if (Configuration.errorOnAutoCreate())
857              throw new Error("Attempt to auto-create ContentDefinitionComponent.publicationStatus");
858            else if (Configuration.doAutoCreate())
859              this.publicationStatus = new Enumeration<ContractResourcePublicationStatusCodes>(new ContractResourcePublicationStatusCodesEnumFactory()); // bb
860          return this.publicationStatus;
861        }
862
863        public boolean hasPublicationStatusElement() { 
864          return this.publicationStatus != null && !this.publicationStatus.isEmpty();
865        }
866
867        public boolean hasPublicationStatus() { 
868          return this.publicationStatus != null && !this.publicationStatus.isEmpty();
869        }
870
871        /**
872         * @param value {@link #publicationStatus} (amended | appended | cancelled | disputed | entered-in-error | executable +.). This is the underlying object with id, value and extensions. The accessor "getPublicationStatus" gives direct access to the value
873         */
874        public ContentDefinitionComponent setPublicationStatusElement(Enumeration<ContractResourcePublicationStatusCodes> value) { 
875          this.publicationStatus = value;
876          return this;
877        }
878
879        /**
880         * @return amended | appended | cancelled | disputed | entered-in-error | executable +.
881         */
882        public ContractResourcePublicationStatusCodes getPublicationStatus() { 
883          return this.publicationStatus == null ? null : this.publicationStatus.getValue();
884        }
885
886        /**
887         * @param value amended | appended | cancelled | disputed | entered-in-error | executable +.
888         */
889        public ContentDefinitionComponent setPublicationStatus(ContractResourcePublicationStatusCodes value) { 
890            if (this.publicationStatus == null)
891              this.publicationStatus = new Enumeration<ContractResourcePublicationStatusCodes>(new ContractResourcePublicationStatusCodesEnumFactory());
892            this.publicationStatus.setValue(value);
893          return this;
894        }
895
896        /**
897         * @return {@link #copyright} (A copyright statement relating to Contract precursor content. Copyright statements are generally legal restrictions on the use and publishing of the Contract precursor content.). This is the underlying object with id, value and extensions. The accessor "getCopyright" gives direct access to the value
898         */
899        public MarkdownType getCopyrightElement() { 
900          if (this.copyright == null)
901            if (Configuration.errorOnAutoCreate())
902              throw new Error("Attempt to auto-create ContentDefinitionComponent.copyright");
903            else if (Configuration.doAutoCreate())
904              this.copyright = new MarkdownType(); // bb
905          return this.copyright;
906        }
907
908        public boolean hasCopyrightElement() { 
909          return this.copyright != null && !this.copyright.isEmpty();
910        }
911
912        public boolean hasCopyright() { 
913          return this.copyright != null && !this.copyright.isEmpty();
914        }
915
916        /**
917         * @param value {@link #copyright} (A copyright statement relating to Contract precursor content. Copyright statements are generally legal restrictions on the use and publishing of the Contract precursor content.). This is the underlying object with id, value and extensions. The accessor "getCopyright" gives direct access to the value
918         */
919        public ContentDefinitionComponent setCopyrightElement(MarkdownType value) { 
920          this.copyright = value;
921          return this;
922        }
923
924        /**
925         * @return A copyright statement relating to Contract precursor content. Copyright statements are generally legal restrictions on the use and publishing of the Contract precursor content.
926         */
927        public String getCopyright() { 
928          return this.copyright == null ? null : this.copyright.getValue();
929        }
930
931        /**
932         * @param value A copyright statement relating to Contract precursor content. Copyright statements are generally legal restrictions on the use and publishing of the Contract precursor content.
933         */
934        public ContentDefinitionComponent setCopyright(String value) { 
935          if (Utilities.noString(value))
936            this.copyright = null;
937          else {
938            if (this.copyright == null)
939              this.copyright = new MarkdownType();
940            this.copyright.setValue(value);
941          }
942          return this;
943        }
944
945        protected void listChildren(List<Property> children) {
946          super.listChildren(children);
947          children.add(new Property("type", "CodeableConcept", "Precusory content structure and use, i.e., a boilerplate, template, application for a contract such as an insurance policy or benefits under a program, e.g., workers compensation.", 0, 1, type));
948          children.add(new Property("subType", "CodeableConcept", "Detailed Precusory content type.", 0, 1, subType));
949          children.add(new Property("publisher", "Reference(Practitioner|PractitionerRole|Organization)", "The  individual or organization that published the Contract precursor content.", 0, 1, publisher));
950          children.add(new Property("publicationDate", "dateTime", "The date (and optionally time) when the contract was last significantly changed. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the contract changes.", 0, 1, publicationDate));
951          children.add(new Property("publicationStatus", "code", "amended | appended | cancelled | disputed | entered-in-error | executable +.", 0, 1, publicationStatus));
952          children.add(new Property("copyright", "markdown", "A copyright statement relating to Contract precursor content. Copyright statements are generally legal restrictions on the use and publishing of the Contract precursor content.", 0, 1, copyright));
953        }
954
955        @Override
956        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
957          switch (_hash) {
958          case 3575610: /*type*/  return new Property("type", "CodeableConcept", "Precusory content structure and use, i.e., a boilerplate, template, application for a contract such as an insurance policy or benefits under a program, e.g., workers compensation.", 0, 1, type);
959          case -1868521062: /*subType*/  return new Property("subType", "CodeableConcept", "Detailed Precusory content type.", 0, 1, subType);
960          case 1447404028: /*publisher*/  return new Property("publisher", "Reference(Practitioner|PractitionerRole|Organization)", "The  individual or organization that published the Contract precursor content.", 0, 1, publisher);
961          case 1470566394: /*publicationDate*/  return new Property("publicationDate", "dateTime", "The date (and optionally time) when the contract was last significantly changed. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the contract changes.", 0, 1, publicationDate);
962          case 616500542: /*publicationStatus*/  return new Property("publicationStatus", "code", "amended | appended | cancelled | disputed | entered-in-error | executable +.", 0, 1, publicationStatus);
963          case 1522889671: /*copyright*/  return new Property("copyright", "markdown", "A copyright statement relating to Contract precursor content. Copyright statements are generally legal restrictions on the use and publishing of the Contract precursor content.", 0, 1, copyright);
964          default: return super.getNamedProperty(_hash, _name, _checkValid);
965          }
966
967        }
968
969      @Override
970      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
971        switch (hash) {
972        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // CodeableConcept
973        case -1868521062: /*subType*/ return this.subType == null ? new Base[0] : new Base[] {this.subType}; // CodeableConcept
974        case 1447404028: /*publisher*/ return this.publisher == null ? new Base[0] : new Base[] {this.publisher}; // Reference
975        case 1470566394: /*publicationDate*/ return this.publicationDate == null ? new Base[0] : new Base[] {this.publicationDate}; // DateTimeType
976        case 616500542: /*publicationStatus*/ return this.publicationStatus == null ? new Base[0] : new Base[] {this.publicationStatus}; // Enumeration<ContractResourcePublicationStatusCodes>
977        case 1522889671: /*copyright*/ return this.copyright == null ? new Base[0] : new Base[] {this.copyright}; // MarkdownType
978        default: return super.getProperty(hash, name, checkValid);
979        }
980
981      }
982
983      @Override
984      public Base setProperty(int hash, String name, Base value) throws FHIRException {
985        switch (hash) {
986        case 3575610: // type
987          this.type = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
988          return value;
989        case -1868521062: // subType
990          this.subType = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
991          return value;
992        case 1447404028: // publisher
993          this.publisher = TypeConvertor.castToReference(value); // Reference
994          return value;
995        case 1470566394: // publicationDate
996          this.publicationDate = TypeConvertor.castToDateTime(value); // DateTimeType
997          return value;
998        case 616500542: // publicationStatus
999          value = new ContractResourcePublicationStatusCodesEnumFactory().fromType(TypeConvertor.castToCode(value));
1000          this.publicationStatus = (Enumeration) value; // Enumeration<ContractResourcePublicationStatusCodes>
1001          return value;
1002        case 1522889671: // copyright
1003          this.copyright = TypeConvertor.castToMarkdown(value); // MarkdownType
1004          return value;
1005        default: return super.setProperty(hash, name, value);
1006        }
1007
1008      }
1009
1010      @Override
1011      public Base setProperty(String name, Base value) throws FHIRException {
1012        if (name.equals("type")) {
1013          this.type = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1014        } else if (name.equals("subType")) {
1015          this.subType = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1016        } else if (name.equals("publisher")) {
1017          this.publisher = TypeConvertor.castToReference(value); // Reference
1018        } else if (name.equals("publicationDate")) {
1019          this.publicationDate = TypeConvertor.castToDateTime(value); // DateTimeType
1020        } else if (name.equals("publicationStatus")) {
1021          value = new ContractResourcePublicationStatusCodesEnumFactory().fromType(TypeConvertor.castToCode(value));
1022          this.publicationStatus = (Enumeration) value; // Enumeration<ContractResourcePublicationStatusCodes>
1023        } else if (name.equals("copyright")) {
1024          this.copyright = TypeConvertor.castToMarkdown(value); // MarkdownType
1025        } else
1026          return super.setProperty(name, value);
1027        return value;
1028      }
1029
1030  @Override
1031  public void removeChild(String name, Base value) throws FHIRException {
1032        if (name.equals("type")) {
1033          this.type = null;
1034        } else if (name.equals("subType")) {
1035          this.subType = null;
1036        } else if (name.equals("publisher")) {
1037          this.publisher = null;
1038        } else if (name.equals("publicationDate")) {
1039          this.publicationDate = null;
1040        } else if (name.equals("publicationStatus")) {
1041          value = new ContractResourcePublicationStatusCodesEnumFactory().fromType(TypeConvertor.castToCode(value));
1042          this.publicationStatus = (Enumeration) value; // Enumeration<ContractResourcePublicationStatusCodes>
1043        } else if (name.equals("copyright")) {
1044          this.copyright = null;
1045        } else
1046          super.removeChild(name, value);
1047        
1048      }
1049
1050      @Override
1051      public Base makeProperty(int hash, String name) throws FHIRException {
1052        switch (hash) {
1053        case 3575610:  return getType();
1054        case -1868521062:  return getSubType();
1055        case 1447404028:  return getPublisher();
1056        case 1470566394:  return getPublicationDateElement();
1057        case 616500542:  return getPublicationStatusElement();
1058        case 1522889671:  return getCopyrightElement();
1059        default: return super.makeProperty(hash, name);
1060        }
1061
1062      }
1063
1064      @Override
1065      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1066        switch (hash) {
1067        case 3575610: /*type*/ return new String[] {"CodeableConcept"};
1068        case -1868521062: /*subType*/ return new String[] {"CodeableConcept"};
1069        case 1447404028: /*publisher*/ return new String[] {"Reference"};
1070        case 1470566394: /*publicationDate*/ return new String[] {"dateTime"};
1071        case 616500542: /*publicationStatus*/ return new String[] {"code"};
1072        case 1522889671: /*copyright*/ return new String[] {"markdown"};
1073        default: return super.getTypesForProperty(hash, name);
1074        }
1075
1076      }
1077
1078      @Override
1079      public Base addChild(String name) throws FHIRException {
1080        if (name.equals("type")) {
1081          this.type = new CodeableConcept();
1082          return this.type;
1083        }
1084        else if (name.equals("subType")) {
1085          this.subType = new CodeableConcept();
1086          return this.subType;
1087        }
1088        else if (name.equals("publisher")) {
1089          this.publisher = new Reference();
1090          return this.publisher;
1091        }
1092        else if (name.equals("publicationDate")) {
1093          throw new FHIRException("Cannot call addChild on a singleton property Contract.contentDefinition.publicationDate");
1094        }
1095        else if (name.equals("publicationStatus")) {
1096          throw new FHIRException("Cannot call addChild on a singleton property Contract.contentDefinition.publicationStatus");
1097        }
1098        else if (name.equals("copyright")) {
1099          throw new FHIRException("Cannot call addChild on a singleton property Contract.contentDefinition.copyright");
1100        }
1101        else
1102          return super.addChild(name);
1103      }
1104
1105      public ContentDefinitionComponent copy() {
1106        ContentDefinitionComponent dst = new ContentDefinitionComponent();
1107        copyValues(dst);
1108        return dst;
1109      }
1110
1111      public void copyValues(ContentDefinitionComponent dst) {
1112        super.copyValues(dst);
1113        dst.type = type == null ? null : type.copy();
1114        dst.subType = subType == null ? null : subType.copy();
1115        dst.publisher = publisher == null ? null : publisher.copy();
1116        dst.publicationDate = publicationDate == null ? null : publicationDate.copy();
1117        dst.publicationStatus = publicationStatus == null ? null : publicationStatus.copy();
1118        dst.copyright = copyright == null ? null : copyright.copy();
1119      }
1120
1121      @Override
1122      public boolean equalsDeep(Base other_) {
1123        if (!super.equalsDeep(other_))
1124          return false;
1125        if (!(other_ instanceof ContentDefinitionComponent))
1126          return false;
1127        ContentDefinitionComponent o = (ContentDefinitionComponent) other_;
1128        return compareDeep(type, o.type, true) && compareDeep(subType, o.subType, true) && compareDeep(publisher, o.publisher, true)
1129           && compareDeep(publicationDate, o.publicationDate, true) && compareDeep(publicationStatus, o.publicationStatus, true)
1130           && compareDeep(copyright, o.copyright, true);
1131      }
1132
1133      @Override
1134      public boolean equalsShallow(Base other_) {
1135        if (!super.equalsShallow(other_))
1136          return false;
1137        if (!(other_ instanceof ContentDefinitionComponent))
1138          return false;
1139        ContentDefinitionComponent o = (ContentDefinitionComponent) other_;
1140        return compareValues(publicationDate, o.publicationDate, true) && compareValues(publicationStatus, o.publicationStatus, true)
1141           && compareValues(copyright, o.copyright, true);
1142      }
1143
1144      public boolean isEmpty() {
1145        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(type, subType, publisher
1146          , publicationDate, publicationStatus, copyright);
1147      }
1148
1149  public String fhirType() {
1150    return "Contract.contentDefinition";
1151
1152  }
1153
1154  }
1155
1156    @Block()
1157    public static class TermComponent extends BackboneElement implements IBaseBackboneElement {
1158        /**
1159         * Unique identifier for this particular Contract Provision.
1160         */
1161        @Child(name = "identifier", type = {Identifier.class}, order=1, min=0, max=1, modifier=false, summary=true)
1162        @Description(shortDefinition="Contract Term Number", formalDefinition="Unique identifier for this particular Contract Provision." )
1163        protected Identifier identifier;
1164
1165        /**
1166         * When this Contract Provision was issued.
1167         */
1168        @Child(name = "issued", type = {DateTimeType.class}, order=2, min=0, max=1, modifier=false, summary=true)
1169        @Description(shortDefinition="Contract Term Issue Date Time", formalDefinition="When this Contract Provision was issued." )
1170        protected DateTimeType issued;
1171
1172        /**
1173         * Relevant time or time-period when this Contract Provision is applicable.
1174         */
1175        @Child(name = "applies", type = {Period.class}, order=3, min=0, max=1, modifier=false, summary=true)
1176        @Description(shortDefinition="Contract Term Effective Time", formalDefinition="Relevant time or time-period when this Contract Provision is applicable." )
1177        protected Period applies;
1178
1179        /**
1180         * The entity that the term applies to.
1181         */
1182        @Child(name = "topic", type = {CodeableConcept.class, Reference.class}, order=4, min=0, max=1, modifier=false, summary=false)
1183        @Description(shortDefinition="Term Concern", formalDefinition="The entity that the term applies to." )
1184        protected DataType topic;
1185
1186        /**
1187         * A legal clause or condition contained within a contract that requires one or both parties to perform a particular requirement by some specified time or prevents one or both parties from performing a particular requirement by some specified time.
1188         */
1189        @Child(name = "type", type = {CodeableConcept.class}, order=5, min=0, max=1, modifier=false, summary=false)
1190        @Description(shortDefinition="Contract Term Type or Form", formalDefinition="A legal clause or condition contained within a contract that requires one or both parties to perform a particular requirement by some specified time or prevents one or both parties from performing a particular requirement by some specified time." )
1191        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/contract-term-type")
1192        protected CodeableConcept type;
1193
1194        /**
1195         * A specialized legal clause or condition based on overarching contract type.
1196         */
1197        @Child(name = "subType", type = {CodeableConcept.class}, order=6, min=0, max=1, modifier=false, summary=false)
1198        @Description(shortDefinition="Contract Term Type specific classification", formalDefinition="A specialized legal clause or condition based on overarching contract type." )
1199        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/contract-term-subtype")
1200        protected CodeableConcept subType;
1201
1202        /**
1203         * Statement of a provision in a policy or a contract.
1204         */
1205        @Child(name = "text", type = {StringType.class}, order=7, min=0, max=1, modifier=false, summary=true)
1206        @Description(shortDefinition="Term Statement", formalDefinition="Statement of a provision in a policy or a contract." )
1207        protected StringType text;
1208
1209        /**
1210         * Security labels that protect the handling of information about the term and its elements, which may be specifically identified.
1211         */
1212        @Child(name = "securityLabel", type = {}, order=8, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1213        @Description(shortDefinition="Protection for the Term", formalDefinition="Security labels that protect the handling of information about the term and its elements, which may be specifically identified." )
1214        protected List<SecurityLabelComponent> securityLabel;
1215
1216        /**
1217         * The matter of concern in the context of this provision of the agrement.
1218         */
1219        @Child(name = "offer", type = {}, order=9, min=1, max=1, modifier=false, summary=false)
1220        @Description(shortDefinition="Context of the Contract term", formalDefinition="The matter of concern in the context of this provision of the agrement." )
1221        protected ContractOfferComponent offer;
1222
1223        /**
1224         * Contract Term Asset List.
1225         */
1226        @Child(name = "asset", type = {}, order=10, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1227        @Description(shortDefinition="Contract Term Asset List", formalDefinition="Contract Term Asset List." )
1228        protected List<ContractAssetComponent> asset;
1229
1230        /**
1231         * An actor taking a role in an activity for which it can be assigned some degree of responsibility for the activity taking place.
1232         */
1233        @Child(name = "action", type = {}, order=11, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1234        @Description(shortDefinition="Entity being ascribed responsibility", formalDefinition="An actor taking a role in an activity for which it can be assigned some degree of responsibility for the activity taking place." )
1235        protected List<ActionComponent> action;
1236
1237        /**
1238         * Nested group of Contract Provisions.
1239         */
1240        @Child(name = "group", type = {TermComponent.class}, order=12, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1241        @Description(shortDefinition="Nested Contract Term Group", formalDefinition="Nested group of Contract Provisions." )
1242        protected List<TermComponent> group;
1243
1244        private static final long serialVersionUID = -1647037544L;
1245
1246    /**
1247     * Constructor
1248     */
1249      public TermComponent() {
1250        super();
1251      }
1252
1253    /**
1254     * Constructor
1255     */
1256      public TermComponent(ContractOfferComponent offer) {
1257        super();
1258        this.setOffer(offer);
1259      }
1260
1261        /**
1262         * @return {@link #identifier} (Unique identifier for this particular Contract Provision.)
1263         */
1264        public Identifier getIdentifier() { 
1265          if (this.identifier == null)
1266            if (Configuration.errorOnAutoCreate())
1267              throw new Error("Attempt to auto-create TermComponent.identifier");
1268            else if (Configuration.doAutoCreate())
1269              this.identifier = new Identifier(); // cc
1270          return this.identifier;
1271        }
1272
1273        public boolean hasIdentifier() { 
1274          return this.identifier != null && !this.identifier.isEmpty();
1275        }
1276
1277        /**
1278         * @param value {@link #identifier} (Unique identifier for this particular Contract Provision.)
1279         */
1280        public TermComponent setIdentifier(Identifier value) { 
1281          this.identifier = value;
1282          return this;
1283        }
1284
1285        /**
1286         * @return {@link #issued} (When this Contract Provision was issued.). This is the underlying object with id, value and extensions. The accessor "getIssued" gives direct access to the value
1287         */
1288        public DateTimeType getIssuedElement() { 
1289          if (this.issued == null)
1290            if (Configuration.errorOnAutoCreate())
1291              throw new Error("Attempt to auto-create TermComponent.issued");
1292            else if (Configuration.doAutoCreate())
1293              this.issued = new DateTimeType(); // bb
1294          return this.issued;
1295        }
1296
1297        public boolean hasIssuedElement() { 
1298          return this.issued != null && !this.issued.isEmpty();
1299        }
1300
1301        public boolean hasIssued() { 
1302          return this.issued != null && !this.issued.isEmpty();
1303        }
1304
1305        /**
1306         * @param value {@link #issued} (When this Contract Provision was issued.). This is the underlying object with id, value and extensions. The accessor "getIssued" gives direct access to the value
1307         */
1308        public TermComponent setIssuedElement(DateTimeType value) { 
1309          this.issued = value;
1310          return this;
1311        }
1312
1313        /**
1314         * @return When this Contract Provision was issued.
1315         */
1316        public Date getIssued() { 
1317          return this.issued == null ? null : this.issued.getValue();
1318        }
1319
1320        /**
1321         * @param value When this Contract Provision was issued.
1322         */
1323        public TermComponent setIssued(Date value) { 
1324          if (value == null)
1325            this.issued = null;
1326          else {
1327            if (this.issued == null)
1328              this.issued = new DateTimeType();
1329            this.issued.setValue(value);
1330          }
1331          return this;
1332        }
1333
1334        /**
1335         * @return {@link #applies} (Relevant time or time-period when this Contract Provision is applicable.)
1336         */
1337        public Period getApplies() { 
1338          if (this.applies == null)
1339            if (Configuration.errorOnAutoCreate())
1340              throw new Error("Attempt to auto-create TermComponent.applies");
1341            else if (Configuration.doAutoCreate())
1342              this.applies = new Period(); // cc
1343          return this.applies;
1344        }
1345
1346        public boolean hasApplies() { 
1347          return this.applies != null && !this.applies.isEmpty();
1348        }
1349
1350        /**
1351         * @param value {@link #applies} (Relevant time or time-period when this Contract Provision is applicable.)
1352         */
1353        public TermComponent setApplies(Period value) { 
1354          this.applies = value;
1355          return this;
1356        }
1357
1358        /**
1359         * @return {@link #topic} (The entity that the term applies to.)
1360         */
1361        public DataType getTopic() { 
1362          return this.topic;
1363        }
1364
1365        /**
1366         * @return {@link #topic} (The entity that the term applies to.)
1367         */
1368        public CodeableConcept getTopicCodeableConcept() throws FHIRException { 
1369          if (this.topic == null)
1370            this.topic = new CodeableConcept();
1371          if (!(this.topic instanceof CodeableConcept))
1372            throw new FHIRException("Type mismatch: the type CodeableConcept was expected, but "+this.topic.getClass().getName()+" was encountered");
1373          return (CodeableConcept) this.topic;
1374        }
1375
1376        public boolean hasTopicCodeableConcept() { 
1377          return this != null && this.topic instanceof CodeableConcept;
1378        }
1379
1380        /**
1381         * @return {@link #topic} (The entity that the term applies to.)
1382         */
1383        public Reference getTopicReference() throws FHIRException { 
1384          if (this.topic == null)
1385            this.topic = new Reference();
1386          if (!(this.topic instanceof Reference))
1387            throw new FHIRException("Type mismatch: the type Reference was expected, but "+this.topic.getClass().getName()+" was encountered");
1388          return (Reference) this.topic;
1389        }
1390
1391        public boolean hasTopicReference() { 
1392          return this != null && this.topic instanceof Reference;
1393        }
1394
1395        public boolean hasTopic() { 
1396          return this.topic != null && !this.topic.isEmpty();
1397        }
1398
1399        /**
1400         * @param value {@link #topic} (The entity that the term applies to.)
1401         */
1402        public TermComponent setTopic(DataType value) { 
1403          if (value != null && !(value instanceof CodeableConcept || value instanceof Reference))
1404            throw new FHIRException("Not the right type for Contract.term.topic[x]: "+value.fhirType());
1405          this.topic = value;
1406          return this;
1407        }
1408
1409        /**
1410         * @return {@link #type} (A legal clause or condition contained within a contract that requires one or both parties to perform a particular requirement by some specified time or prevents one or both parties from performing a particular requirement by some specified time.)
1411         */
1412        public CodeableConcept getType() { 
1413          if (this.type == null)
1414            if (Configuration.errorOnAutoCreate())
1415              throw new Error("Attempt to auto-create TermComponent.type");
1416            else if (Configuration.doAutoCreate())
1417              this.type = new CodeableConcept(); // cc
1418          return this.type;
1419        }
1420
1421        public boolean hasType() { 
1422          return this.type != null && !this.type.isEmpty();
1423        }
1424
1425        /**
1426         * @param value {@link #type} (A legal clause or condition contained within a contract that requires one or both parties to perform a particular requirement by some specified time or prevents one or both parties from performing a particular requirement by some specified time.)
1427         */
1428        public TermComponent setType(CodeableConcept value) { 
1429          this.type = value;
1430          return this;
1431        }
1432
1433        /**
1434         * @return {@link #subType} (A specialized legal clause or condition based on overarching contract type.)
1435         */
1436        public CodeableConcept getSubType() { 
1437          if (this.subType == null)
1438            if (Configuration.errorOnAutoCreate())
1439              throw new Error("Attempt to auto-create TermComponent.subType");
1440            else if (Configuration.doAutoCreate())
1441              this.subType = new CodeableConcept(); // cc
1442          return this.subType;
1443        }
1444
1445        public boolean hasSubType() { 
1446          return this.subType != null && !this.subType.isEmpty();
1447        }
1448
1449        /**
1450         * @param value {@link #subType} (A specialized legal clause or condition based on overarching contract type.)
1451         */
1452        public TermComponent setSubType(CodeableConcept value) { 
1453          this.subType = value;
1454          return this;
1455        }
1456
1457        /**
1458         * @return {@link #text} (Statement of a provision in a policy or a contract.). This is the underlying object with id, value and extensions. The accessor "getText" gives direct access to the value
1459         */
1460        public StringType getTextElement() { 
1461          if (this.text == null)
1462            if (Configuration.errorOnAutoCreate())
1463              throw new Error("Attempt to auto-create TermComponent.text");
1464            else if (Configuration.doAutoCreate())
1465              this.text = new StringType(); // bb
1466          return this.text;
1467        }
1468
1469        public boolean hasTextElement() { 
1470          return this.text != null && !this.text.isEmpty();
1471        }
1472
1473        public boolean hasText() { 
1474          return this.text != null && !this.text.isEmpty();
1475        }
1476
1477        /**
1478         * @param value {@link #text} (Statement of a provision in a policy or a contract.). This is the underlying object with id, value and extensions. The accessor "getText" gives direct access to the value
1479         */
1480        public TermComponent setTextElement(StringType value) { 
1481          this.text = value;
1482          return this;
1483        }
1484
1485        /**
1486         * @return Statement of a provision in a policy or a contract.
1487         */
1488        public String getText() { 
1489          return this.text == null ? null : this.text.getValue();
1490        }
1491
1492        /**
1493         * @param value Statement of a provision in a policy or a contract.
1494         */
1495        public TermComponent setText(String value) { 
1496          if (Utilities.noString(value))
1497            this.text = null;
1498          else {
1499            if (this.text == null)
1500              this.text = new StringType();
1501            this.text.setValue(value);
1502          }
1503          return this;
1504        }
1505
1506        /**
1507         * @return {@link #securityLabel} (Security labels that protect the handling of information about the term and its elements, which may be specifically identified.)
1508         */
1509        public List<SecurityLabelComponent> getSecurityLabel() { 
1510          if (this.securityLabel == null)
1511            this.securityLabel = new ArrayList<SecurityLabelComponent>();
1512          return this.securityLabel;
1513        }
1514
1515        /**
1516         * @return Returns a reference to <code>this</code> for easy method chaining
1517         */
1518        public TermComponent setSecurityLabel(List<SecurityLabelComponent> theSecurityLabel) { 
1519          this.securityLabel = theSecurityLabel;
1520          return this;
1521        }
1522
1523        public boolean hasSecurityLabel() { 
1524          if (this.securityLabel == null)
1525            return false;
1526          for (SecurityLabelComponent item : this.securityLabel)
1527            if (!item.isEmpty())
1528              return true;
1529          return false;
1530        }
1531
1532        public SecurityLabelComponent addSecurityLabel() { //3
1533          SecurityLabelComponent t = new SecurityLabelComponent();
1534          if (this.securityLabel == null)
1535            this.securityLabel = new ArrayList<SecurityLabelComponent>();
1536          this.securityLabel.add(t);
1537          return t;
1538        }
1539
1540        public TermComponent addSecurityLabel(SecurityLabelComponent t) { //3
1541          if (t == null)
1542            return this;
1543          if (this.securityLabel == null)
1544            this.securityLabel = new ArrayList<SecurityLabelComponent>();
1545          this.securityLabel.add(t);
1546          return this;
1547        }
1548
1549        /**
1550         * @return The first repetition of repeating field {@link #securityLabel}, creating it if it does not already exist {3}
1551         */
1552        public SecurityLabelComponent getSecurityLabelFirstRep() { 
1553          if (getSecurityLabel().isEmpty()) {
1554            addSecurityLabel();
1555          }
1556          return getSecurityLabel().get(0);
1557        }
1558
1559        /**
1560         * @return {@link #offer} (The matter of concern in the context of this provision of the agrement.)
1561         */
1562        public ContractOfferComponent getOffer() { 
1563          if (this.offer == null)
1564            if (Configuration.errorOnAutoCreate())
1565              throw new Error("Attempt to auto-create TermComponent.offer");
1566            else if (Configuration.doAutoCreate())
1567              this.offer = new ContractOfferComponent(); // cc
1568          return this.offer;
1569        }
1570
1571        public boolean hasOffer() { 
1572          return this.offer != null && !this.offer.isEmpty();
1573        }
1574
1575        /**
1576         * @param value {@link #offer} (The matter of concern in the context of this provision of the agrement.)
1577         */
1578        public TermComponent setOffer(ContractOfferComponent value) { 
1579          this.offer = value;
1580          return this;
1581        }
1582
1583        /**
1584         * @return {@link #asset} (Contract Term Asset List.)
1585         */
1586        public List<ContractAssetComponent> getAsset() { 
1587          if (this.asset == null)
1588            this.asset = new ArrayList<ContractAssetComponent>();
1589          return this.asset;
1590        }
1591
1592        /**
1593         * @return Returns a reference to <code>this</code> for easy method chaining
1594         */
1595        public TermComponent setAsset(List<ContractAssetComponent> theAsset) { 
1596          this.asset = theAsset;
1597          return this;
1598        }
1599
1600        public boolean hasAsset() { 
1601          if (this.asset == null)
1602            return false;
1603          for (ContractAssetComponent item : this.asset)
1604            if (!item.isEmpty())
1605              return true;
1606          return false;
1607        }
1608
1609        public ContractAssetComponent addAsset() { //3
1610          ContractAssetComponent t = new ContractAssetComponent();
1611          if (this.asset == null)
1612            this.asset = new ArrayList<ContractAssetComponent>();
1613          this.asset.add(t);
1614          return t;
1615        }
1616
1617        public TermComponent addAsset(ContractAssetComponent t) { //3
1618          if (t == null)
1619            return this;
1620          if (this.asset == null)
1621            this.asset = new ArrayList<ContractAssetComponent>();
1622          this.asset.add(t);
1623          return this;
1624        }
1625
1626        /**
1627         * @return The first repetition of repeating field {@link #asset}, creating it if it does not already exist {3}
1628         */
1629        public ContractAssetComponent getAssetFirstRep() { 
1630          if (getAsset().isEmpty()) {
1631            addAsset();
1632          }
1633          return getAsset().get(0);
1634        }
1635
1636        /**
1637         * @return {@link #action} (An actor taking a role in an activity for which it can be assigned some degree of responsibility for the activity taking place.)
1638         */
1639        public List<ActionComponent> getAction() { 
1640          if (this.action == null)
1641            this.action = new ArrayList<ActionComponent>();
1642          return this.action;
1643        }
1644
1645        /**
1646         * @return Returns a reference to <code>this</code> for easy method chaining
1647         */
1648        public TermComponent setAction(List<ActionComponent> theAction) { 
1649          this.action = theAction;
1650          return this;
1651        }
1652
1653        public boolean hasAction() { 
1654          if (this.action == null)
1655            return false;
1656          for (ActionComponent item : this.action)
1657            if (!item.isEmpty())
1658              return true;
1659          return false;
1660        }
1661
1662        public ActionComponent addAction() { //3
1663          ActionComponent t = new ActionComponent();
1664          if (this.action == null)
1665            this.action = new ArrayList<ActionComponent>();
1666          this.action.add(t);
1667          return t;
1668        }
1669
1670        public TermComponent addAction(ActionComponent t) { //3
1671          if (t == null)
1672            return this;
1673          if (this.action == null)
1674            this.action = new ArrayList<ActionComponent>();
1675          this.action.add(t);
1676          return this;
1677        }
1678
1679        /**
1680         * @return The first repetition of repeating field {@link #action}, creating it if it does not already exist {3}
1681         */
1682        public ActionComponent getActionFirstRep() { 
1683          if (getAction().isEmpty()) {
1684            addAction();
1685          }
1686          return getAction().get(0);
1687        }
1688
1689        /**
1690         * @return {@link #group} (Nested group of Contract Provisions.)
1691         */
1692        public List<TermComponent> getGroup() { 
1693          if (this.group == null)
1694            this.group = new ArrayList<TermComponent>();
1695          return this.group;
1696        }
1697
1698        /**
1699         * @return Returns a reference to <code>this</code> for easy method chaining
1700         */
1701        public TermComponent setGroup(List<TermComponent> theGroup) { 
1702          this.group = theGroup;
1703          return this;
1704        }
1705
1706        public boolean hasGroup() { 
1707          if (this.group == null)
1708            return false;
1709          for (TermComponent item : this.group)
1710            if (!item.isEmpty())
1711              return true;
1712          return false;
1713        }
1714
1715        public TermComponent addGroup() { //3
1716          TermComponent t = new TermComponent();
1717          if (this.group == null)
1718            this.group = new ArrayList<TermComponent>();
1719          this.group.add(t);
1720          return t;
1721        }
1722
1723        public TermComponent addGroup(TermComponent t) { //3
1724          if (t == null)
1725            return this;
1726          if (this.group == null)
1727            this.group = new ArrayList<TermComponent>();
1728          this.group.add(t);
1729          return this;
1730        }
1731
1732        /**
1733         * @return The first repetition of repeating field {@link #group}, creating it if it does not already exist {3}
1734         */
1735        public TermComponent getGroupFirstRep() { 
1736          if (getGroup().isEmpty()) {
1737            addGroup();
1738          }
1739          return getGroup().get(0);
1740        }
1741
1742        protected void listChildren(List<Property> children) {
1743          super.listChildren(children);
1744          children.add(new Property("identifier", "Identifier", "Unique identifier for this particular Contract Provision.", 0, 1, identifier));
1745          children.add(new Property("issued", "dateTime", "When this Contract Provision was issued.", 0, 1, issued));
1746          children.add(new Property("applies", "Period", "Relevant time or time-period when this Contract Provision is applicable.", 0, 1, applies));
1747          children.add(new Property("topic[x]", "CodeableConcept|Reference(Any)", "The entity that the term applies to.", 0, 1, topic));
1748          children.add(new Property("type", "CodeableConcept", "A legal clause or condition contained within a contract that requires one or both parties to perform a particular requirement by some specified time or prevents one or both parties from performing a particular requirement by some specified time.", 0, 1, type));
1749          children.add(new Property("subType", "CodeableConcept", "A specialized legal clause or condition based on overarching contract type.", 0, 1, subType));
1750          children.add(new Property("text", "string", "Statement of a provision in a policy or a contract.", 0, 1, text));
1751          children.add(new Property("securityLabel", "", "Security labels that protect the handling of information about the term and its elements, which may be specifically identified.", 0, java.lang.Integer.MAX_VALUE, securityLabel));
1752          children.add(new Property("offer", "", "The matter of concern in the context of this provision of the agrement.", 0, 1, offer));
1753          children.add(new Property("asset", "", "Contract Term Asset List.", 0, java.lang.Integer.MAX_VALUE, asset));
1754          children.add(new Property("action", "", "An actor taking a role in an activity for which it can be assigned some degree of responsibility for the activity taking place.", 0, java.lang.Integer.MAX_VALUE, action));
1755          children.add(new Property("group", "@Contract.term", "Nested group of Contract Provisions.", 0, java.lang.Integer.MAX_VALUE, group));
1756        }
1757
1758        @Override
1759        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1760          switch (_hash) {
1761          case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "Unique identifier for this particular Contract Provision.", 0, 1, identifier);
1762          case -1179159893: /*issued*/  return new Property("issued", "dateTime", "When this Contract Provision was issued.", 0, 1, issued);
1763          case -793235316: /*applies*/  return new Property("applies", "Period", "Relevant time or time-period when this Contract Provision is applicable.", 0, 1, applies);
1764          case -957295375: /*topic[x]*/  return new Property("topic[x]", "CodeableConcept|Reference(Any)", "The entity that the term applies to.", 0, 1, topic);
1765          case 110546223: /*topic*/  return new Property("topic[x]", "CodeableConcept|Reference(Any)", "The entity that the term applies to.", 0, 1, topic);
1766          case 777778802: /*topicCodeableConcept*/  return new Property("topic[x]", "CodeableConcept", "The entity that the term applies to.", 0, 1, topic);
1767          case -343345444: /*topicReference*/  return new Property("topic[x]", "Reference(Any)", "The entity that the term applies to.", 0, 1, topic);
1768          case 3575610: /*type*/  return new Property("type", "CodeableConcept", "A legal clause or condition contained within a contract that requires one or both parties to perform a particular requirement by some specified time or prevents one or both parties from performing a particular requirement by some specified time.", 0, 1, type);
1769          case -1868521062: /*subType*/  return new Property("subType", "CodeableConcept", "A specialized legal clause or condition based on overarching contract type.", 0, 1, subType);
1770          case 3556653: /*text*/  return new Property("text", "string", "Statement of a provision in a policy or a contract.", 0, 1, text);
1771          case -722296940: /*securityLabel*/  return new Property("securityLabel", "", "Security labels that protect the handling of information about the term and its elements, which may be specifically identified.", 0, java.lang.Integer.MAX_VALUE, securityLabel);
1772          case 105650780: /*offer*/  return new Property("offer", "", "The matter of concern in the context of this provision of the agrement.", 0, 1, offer);
1773          case 93121264: /*asset*/  return new Property("asset", "", "Contract Term Asset List.", 0, java.lang.Integer.MAX_VALUE, asset);
1774          case -1422950858: /*action*/  return new Property("action", "", "An actor taking a role in an activity for which it can be assigned some degree of responsibility for the activity taking place.", 0, java.lang.Integer.MAX_VALUE, action);
1775          case 98629247: /*group*/  return new Property("group", "@Contract.term", "Nested group of Contract Provisions.", 0, java.lang.Integer.MAX_VALUE, group);
1776          default: return super.getNamedProperty(_hash, _name, _checkValid);
1777          }
1778
1779        }
1780
1781      @Override
1782      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1783        switch (hash) {
1784        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : new Base[] {this.identifier}; // Identifier
1785        case -1179159893: /*issued*/ return this.issued == null ? new Base[0] : new Base[] {this.issued}; // DateTimeType
1786        case -793235316: /*applies*/ return this.applies == null ? new Base[0] : new Base[] {this.applies}; // Period
1787        case 110546223: /*topic*/ return this.topic == null ? new Base[0] : new Base[] {this.topic}; // DataType
1788        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // CodeableConcept
1789        case -1868521062: /*subType*/ return this.subType == null ? new Base[0] : new Base[] {this.subType}; // CodeableConcept
1790        case 3556653: /*text*/ return this.text == null ? new Base[0] : new Base[] {this.text}; // StringType
1791        case -722296940: /*securityLabel*/ return this.securityLabel == null ? new Base[0] : this.securityLabel.toArray(new Base[this.securityLabel.size()]); // SecurityLabelComponent
1792        case 105650780: /*offer*/ return this.offer == null ? new Base[0] : new Base[] {this.offer}; // ContractOfferComponent
1793        case 93121264: /*asset*/ return this.asset == null ? new Base[0] : this.asset.toArray(new Base[this.asset.size()]); // ContractAssetComponent
1794        case -1422950858: /*action*/ return this.action == null ? new Base[0] : this.action.toArray(new Base[this.action.size()]); // ActionComponent
1795        case 98629247: /*group*/ return this.group == null ? new Base[0] : this.group.toArray(new Base[this.group.size()]); // TermComponent
1796        default: return super.getProperty(hash, name, checkValid);
1797        }
1798
1799      }
1800
1801      @Override
1802      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1803        switch (hash) {
1804        case -1618432855: // identifier
1805          this.identifier = TypeConvertor.castToIdentifier(value); // Identifier
1806          return value;
1807        case -1179159893: // issued
1808          this.issued = TypeConvertor.castToDateTime(value); // DateTimeType
1809          return value;
1810        case -793235316: // applies
1811          this.applies = TypeConvertor.castToPeriod(value); // Period
1812          return value;
1813        case 110546223: // topic
1814          this.topic = TypeConvertor.castToType(value); // DataType
1815          return value;
1816        case 3575610: // type
1817          this.type = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1818          return value;
1819        case -1868521062: // subType
1820          this.subType = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1821          return value;
1822        case 3556653: // text
1823          this.text = TypeConvertor.castToString(value); // StringType
1824          return value;
1825        case -722296940: // securityLabel
1826          this.getSecurityLabel().add((SecurityLabelComponent) value); // SecurityLabelComponent
1827          return value;
1828        case 105650780: // offer
1829          this.offer = (ContractOfferComponent) value; // ContractOfferComponent
1830          return value;
1831        case 93121264: // asset
1832          this.getAsset().add((ContractAssetComponent) value); // ContractAssetComponent
1833          return value;
1834        case -1422950858: // action
1835          this.getAction().add((ActionComponent) value); // ActionComponent
1836          return value;
1837        case 98629247: // group
1838          this.getGroup().add((TermComponent) value); // TermComponent
1839          return value;
1840        default: return super.setProperty(hash, name, value);
1841        }
1842
1843      }
1844
1845      @Override
1846      public Base setProperty(String name, Base value) throws FHIRException {
1847        if (name.equals("identifier")) {
1848          this.identifier = TypeConvertor.castToIdentifier(value); // Identifier
1849        } else if (name.equals("issued")) {
1850          this.issued = TypeConvertor.castToDateTime(value); // DateTimeType
1851        } else if (name.equals("applies")) {
1852          this.applies = TypeConvertor.castToPeriod(value); // Period
1853        } else if (name.equals("topic[x]")) {
1854          this.topic = TypeConvertor.castToType(value); // DataType
1855        } else if (name.equals("type")) {
1856          this.type = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1857        } else if (name.equals("subType")) {
1858          this.subType = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1859        } else if (name.equals("text")) {
1860          this.text = TypeConvertor.castToString(value); // StringType
1861        } else if (name.equals("securityLabel")) {
1862          this.getSecurityLabel().add((SecurityLabelComponent) value);
1863        } else if (name.equals("offer")) {
1864          this.offer = (ContractOfferComponent) value; // ContractOfferComponent
1865        } else if (name.equals("asset")) {
1866          this.getAsset().add((ContractAssetComponent) value);
1867        } else if (name.equals("action")) {
1868          this.getAction().add((ActionComponent) value);
1869        } else if (name.equals("group")) {
1870          this.getGroup().add((TermComponent) value);
1871        } else
1872          return super.setProperty(name, value);
1873        return value;
1874      }
1875
1876  @Override
1877  public void removeChild(String name, Base value) throws FHIRException {
1878        if (name.equals("identifier")) {
1879          this.identifier = null;
1880        } else if (name.equals("issued")) {
1881          this.issued = null;
1882        } else if (name.equals("applies")) {
1883          this.applies = null;
1884        } else if (name.equals("topic[x]")) {
1885          this.topic = null;
1886        } else if (name.equals("type")) {
1887          this.type = null;
1888        } else if (name.equals("subType")) {
1889          this.subType = null;
1890        } else if (name.equals("text")) {
1891          this.text = null;
1892        } else if (name.equals("securityLabel")) {
1893          this.getSecurityLabel().remove((SecurityLabelComponent) value);
1894        } else if (name.equals("offer")) {
1895          this.offer = (ContractOfferComponent) value; // ContractOfferComponent
1896        } else if (name.equals("asset")) {
1897          this.getAsset().remove((ContractAssetComponent) value);
1898        } else if (name.equals("action")) {
1899          this.getAction().remove((ActionComponent) value);
1900        } else if (name.equals("group")) {
1901          this.getGroup().remove((TermComponent) value);
1902        } else
1903          super.removeChild(name, value);
1904        
1905      }
1906
1907      @Override
1908      public Base makeProperty(int hash, String name) throws FHIRException {
1909        switch (hash) {
1910        case -1618432855:  return getIdentifier();
1911        case -1179159893:  return getIssuedElement();
1912        case -793235316:  return getApplies();
1913        case -957295375:  return getTopic();
1914        case 110546223:  return getTopic();
1915        case 3575610:  return getType();
1916        case -1868521062:  return getSubType();
1917        case 3556653:  return getTextElement();
1918        case -722296940:  return addSecurityLabel(); 
1919        case 105650780:  return getOffer();
1920        case 93121264:  return addAsset(); 
1921        case -1422950858:  return addAction(); 
1922        case 98629247:  return addGroup(); 
1923        default: return super.makeProperty(hash, name);
1924        }
1925
1926      }
1927
1928      @Override
1929      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1930        switch (hash) {
1931        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
1932        case -1179159893: /*issued*/ return new String[] {"dateTime"};
1933        case -793235316: /*applies*/ return new String[] {"Period"};
1934        case 110546223: /*topic*/ return new String[] {"CodeableConcept", "Reference"};
1935        case 3575610: /*type*/ return new String[] {"CodeableConcept"};
1936        case -1868521062: /*subType*/ return new String[] {"CodeableConcept"};
1937        case 3556653: /*text*/ return new String[] {"string"};
1938        case -722296940: /*securityLabel*/ return new String[] {};
1939        case 105650780: /*offer*/ return new String[] {};
1940        case 93121264: /*asset*/ return new String[] {};
1941        case -1422950858: /*action*/ return new String[] {};
1942        case 98629247: /*group*/ return new String[] {"@Contract.term"};
1943        default: return super.getTypesForProperty(hash, name);
1944        }
1945
1946      }
1947
1948      @Override
1949      public Base addChild(String name) throws FHIRException {
1950        if (name.equals("identifier")) {
1951          this.identifier = new Identifier();
1952          return this.identifier;
1953        }
1954        else if (name.equals("issued")) {
1955          throw new FHIRException("Cannot call addChild on a singleton property Contract.term.issued");
1956        }
1957        else if (name.equals("applies")) {
1958          this.applies = new Period();
1959          return this.applies;
1960        }
1961        else if (name.equals("topicCodeableConcept")) {
1962          this.topic = new CodeableConcept();
1963          return this.topic;
1964        }
1965        else if (name.equals("topicReference")) {
1966          this.topic = new Reference();
1967          return this.topic;
1968        }
1969        else if (name.equals("type")) {
1970          this.type = new CodeableConcept();
1971          return this.type;
1972        }
1973        else if (name.equals("subType")) {
1974          this.subType = new CodeableConcept();
1975          return this.subType;
1976        }
1977        else if (name.equals("text")) {
1978          throw new FHIRException("Cannot call addChild on a singleton property Contract.term.text");
1979        }
1980        else if (name.equals("securityLabel")) {
1981          return addSecurityLabel();
1982        }
1983        else if (name.equals("offer")) {
1984          this.offer = new ContractOfferComponent();
1985          return this.offer;
1986        }
1987        else if (name.equals("asset")) {
1988          return addAsset();
1989        }
1990        else if (name.equals("action")) {
1991          return addAction();
1992        }
1993        else if (name.equals("group")) {
1994          return addGroup();
1995        }
1996        else
1997          return super.addChild(name);
1998      }
1999
2000      public TermComponent copy() {
2001        TermComponent dst = new TermComponent();
2002        copyValues(dst);
2003        return dst;
2004      }
2005
2006      public void copyValues(TermComponent dst) {
2007        super.copyValues(dst);
2008        dst.identifier = identifier == null ? null : identifier.copy();
2009        dst.issued = issued == null ? null : issued.copy();
2010        dst.applies = applies == null ? null : applies.copy();
2011        dst.topic = topic == null ? null : topic.copy();
2012        dst.type = type == null ? null : type.copy();
2013        dst.subType = subType == null ? null : subType.copy();
2014        dst.text = text == null ? null : text.copy();
2015        if (securityLabel != null) {
2016          dst.securityLabel = new ArrayList<SecurityLabelComponent>();
2017          for (SecurityLabelComponent i : securityLabel)
2018            dst.securityLabel.add(i.copy());
2019        };
2020        dst.offer = offer == null ? null : offer.copy();
2021        if (asset != null) {
2022          dst.asset = new ArrayList<ContractAssetComponent>();
2023          for (ContractAssetComponent i : asset)
2024            dst.asset.add(i.copy());
2025        };
2026        if (action != null) {
2027          dst.action = new ArrayList<ActionComponent>();
2028          for (ActionComponent i : action)
2029            dst.action.add(i.copy());
2030        };
2031        if (group != null) {
2032          dst.group = new ArrayList<TermComponent>();
2033          for (TermComponent i : group)
2034            dst.group.add(i.copy());
2035        };
2036      }
2037
2038      @Override
2039      public boolean equalsDeep(Base other_) {
2040        if (!super.equalsDeep(other_))
2041          return false;
2042        if (!(other_ instanceof TermComponent))
2043          return false;
2044        TermComponent o = (TermComponent) other_;
2045        return compareDeep(identifier, o.identifier, true) && compareDeep(issued, o.issued, true) && compareDeep(applies, o.applies, true)
2046           && compareDeep(topic, o.topic, true) && compareDeep(type, o.type, true) && compareDeep(subType, o.subType, true)
2047           && compareDeep(text, o.text, true) && compareDeep(securityLabel, o.securityLabel, true) && compareDeep(offer, o.offer, true)
2048           && compareDeep(asset, o.asset, true) && compareDeep(action, o.action, true) && compareDeep(group, o.group, true)
2049          ;
2050      }
2051
2052      @Override
2053      public boolean equalsShallow(Base other_) {
2054        if (!super.equalsShallow(other_))
2055          return false;
2056        if (!(other_ instanceof TermComponent))
2057          return false;
2058        TermComponent o = (TermComponent) other_;
2059        return compareValues(issued, o.issued, true) && compareValues(text, o.text, true);
2060      }
2061
2062      public boolean isEmpty() {
2063        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, issued, applies
2064          , topic, type, subType, text, securityLabel, offer, asset, action, group);
2065      }
2066
2067  public String fhirType() {
2068    return "Contract.term";
2069
2070  }
2071
2072  }
2073
2074    @Block()
2075    public static class SecurityLabelComponent extends BackboneElement implements IBaseBackboneElement {
2076        /**
2077         * Number used to link this term or term element to the applicable Security Label.
2078         */
2079        @Child(name = "number", type = {UnsignedIntType.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
2080        @Description(shortDefinition="Link to Security Labels", formalDefinition="Number used to link this term or term element to the applicable Security Label." )
2081        protected List<UnsignedIntType> number;
2082
2083        /**
2084         * Security label privacy tag that specifies the level of confidentiality protection required for this term and/or term elements.
2085         */
2086        @Child(name = "classification", type = {Coding.class}, order=2, min=1, max=1, modifier=false, summary=false)
2087        @Description(shortDefinition="Confidentiality Protection", formalDefinition="Security label privacy tag that specifies the level of confidentiality protection required for this term and/or term elements." )
2088        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/contract-security-classification")
2089        protected Coding classification;
2090
2091        /**
2092         * Security label privacy tag that specifies the applicable privacy and security policies governing this term and/or term elements.
2093         */
2094        @Child(name = "category", type = {Coding.class}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
2095        @Description(shortDefinition="Applicable Policy", formalDefinition="Security label privacy tag that specifies the applicable privacy and security policies governing this term and/or term elements." )
2096        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/contract-security-category")
2097        protected List<Coding> category;
2098
2099        /**
2100         * Security label privacy tag that specifies the manner in which term and/or term elements are to be protected.
2101         */
2102        @Child(name = "control", type = {Coding.class}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
2103        @Description(shortDefinition="Handling Instructions", formalDefinition="Security label privacy tag that specifies the manner in which term and/or term elements are to be protected." )
2104        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/contract-security-control")
2105        protected List<Coding> control;
2106
2107        private static final long serialVersionUID = 788281758L;
2108
2109    /**
2110     * Constructor
2111     */
2112      public SecurityLabelComponent() {
2113        super();
2114      }
2115
2116    /**
2117     * Constructor
2118     */
2119      public SecurityLabelComponent(Coding classification) {
2120        super();
2121        this.setClassification(classification);
2122      }
2123
2124        /**
2125         * @return {@link #number} (Number used to link this term or term element to the applicable Security Label.)
2126         */
2127        public List<UnsignedIntType> getNumber() { 
2128          if (this.number == null)
2129            this.number = new ArrayList<UnsignedIntType>();
2130          return this.number;
2131        }
2132
2133        /**
2134         * @return Returns a reference to <code>this</code> for easy method chaining
2135         */
2136        public SecurityLabelComponent setNumber(List<UnsignedIntType> theNumber) { 
2137          this.number = theNumber;
2138          return this;
2139        }
2140
2141        public boolean hasNumber() { 
2142          if (this.number == null)
2143            return false;
2144          for (UnsignedIntType item : this.number)
2145            if (!item.isEmpty())
2146              return true;
2147          return false;
2148        }
2149
2150        /**
2151         * @return {@link #number} (Number used to link this term or term element to the applicable Security Label.)
2152         */
2153        public UnsignedIntType addNumberElement() {//2 
2154          UnsignedIntType t = new UnsignedIntType();
2155          if (this.number == null)
2156            this.number = new ArrayList<UnsignedIntType>();
2157          this.number.add(t);
2158          return t;
2159        }
2160
2161        /**
2162         * @param value {@link #number} (Number used to link this term or term element to the applicable Security Label.)
2163         */
2164        public SecurityLabelComponent addNumber(int value) { //1
2165          UnsignedIntType t = new UnsignedIntType();
2166          t.setValue(value);
2167          if (this.number == null)
2168            this.number = new ArrayList<UnsignedIntType>();
2169          this.number.add(t);
2170          return this;
2171        }
2172
2173        /**
2174         * @param value {@link #number} (Number used to link this term or term element to the applicable Security Label.)
2175         */
2176        public boolean hasNumber(int value) { 
2177          if (this.number == null)
2178            return false;
2179          for (UnsignedIntType v : this.number)
2180            if (v.getValue().equals(value)) // unsignedInt
2181              return true;
2182          return false;
2183        }
2184
2185        /**
2186         * @return {@link #classification} (Security label privacy tag that specifies the level of confidentiality protection required for this term and/or term elements.)
2187         */
2188        public Coding getClassification() { 
2189          if (this.classification == null)
2190            if (Configuration.errorOnAutoCreate())
2191              throw new Error("Attempt to auto-create SecurityLabelComponent.classification");
2192            else if (Configuration.doAutoCreate())
2193              this.classification = new Coding(); // cc
2194          return this.classification;
2195        }
2196
2197        public boolean hasClassification() { 
2198          return this.classification != null && !this.classification.isEmpty();
2199        }
2200
2201        /**
2202         * @param value {@link #classification} (Security label privacy tag that specifies the level of confidentiality protection required for this term and/or term elements.)
2203         */
2204        public SecurityLabelComponent setClassification(Coding value) { 
2205          this.classification = value;
2206          return this;
2207        }
2208
2209        /**
2210         * @return {@link #category} (Security label privacy tag that specifies the applicable privacy and security policies governing this term and/or term elements.)
2211         */
2212        public List<Coding> getCategory() { 
2213          if (this.category == null)
2214            this.category = new ArrayList<Coding>();
2215          return this.category;
2216        }
2217
2218        /**
2219         * @return Returns a reference to <code>this</code> for easy method chaining
2220         */
2221        public SecurityLabelComponent setCategory(List<Coding> theCategory) { 
2222          this.category = theCategory;
2223          return this;
2224        }
2225
2226        public boolean hasCategory() { 
2227          if (this.category == null)
2228            return false;
2229          for (Coding item : this.category)
2230            if (!item.isEmpty())
2231              return true;
2232          return false;
2233        }
2234
2235        public Coding addCategory() { //3
2236          Coding t = new Coding();
2237          if (this.category == null)
2238            this.category = new ArrayList<Coding>();
2239          this.category.add(t);
2240          return t;
2241        }
2242
2243        public SecurityLabelComponent addCategory(Coding t) { //3
2244          if (t == null)
2245            return this;
2246          if (this.category == null)
2247            this.category = new ArrayList<Coding>();
2248          this.category.add(t);
2249          return this;
2250        }
2251
2252        /**
2253         * @return The first repetition of repeating field {@link #category}, creating it if it does not already exist {3}
2254         */
2255        public Coding getCategoryFirstRep() { 
2256          if (getCategory().isEmpty()) {
2257            addCategory();
2258          }
2259          return getCategory().get(0);
2260        }
2261
2262        /**
2263         * @return {@link #control} (Security label privacy tag that specifies the manner in which term and/or term elements are to be protected.)
2264         */
2265        public List<Coding> getControl() { 
2266          if (this.control == null)
2267            this.control = new ArrayList<Coding>();
2268          return this.control;
2269        }
2270
2271        /**
2272         * @return Returns a reference to <code>this</code> for easy method chaining
2273         */
2274        public SecurityLabelComponent setControl(List<Coding> theControl) { 
2275          this.control = theControl;
2276          return this;
2277        }
2278
2279        public boolean hasControl() { 
2280          if (this.control == null)
2281            return false;
2282          for (Coding item : this.control)
2283            if (!item.isEmpty())
2284              return true;
2285          return false;
2286        }
2287
2288        public Coding addControl() { //3
2289          Coding t = new Coding();
2290          if (this.control == null)
2291            this.control = new ArrayList<Coding>();
2292          this.control.add(t);
2293          return t;
2294        }
2295
2296        public SecurityLabelComponent addControl(Coding t) { //3
2297          if (t == null)
2298            return this;
2299          if (this.control == null)
2300            this.control = new ArrayList<Coding>();
2301          this.control.add(t);
2302          return this;
2303        }
2304
2305        /**
2306         * @return The first repetition of repeating field {@link #control}, creating it if it does not already exist {3}
2307         */
2308        public Coding getControlFirstRep() { 
2309          if (getControl().isEmpty()) {
2310            addControl();
2311          }
2312          return getControl().get(0);
2313        }
2314
2315        protected void listChildren(List<Property> children) {
2316          super.listChildren(children);
2317          children.add(new Property("number", "unsignedInt", "Number used to link this term or term element to the applicable Security Label.", 0, java.lang.Integer.MAX_VALUE, number));
2318          children.add(new Property("classification", "Coding", "Security label privacy tag that specifies the level of confidentiality protection required for this term and/or term elements.", 0, 1, classification));
2319          children.add(new Property("category", "Coding", "Security label privacy tag that specifies the applicable privacy and security policies governing this term and/or term elements.", 0, java.lang.Integer.MAX_VALUE, category));
2320          children.add(new Property("control", "Coding", "Security label privacy tag that specifies the manner in which term and/or term elements are to be protected.", 0, java.lang.Integer.MAX_VALUE, control));
2321        }
2322
2323        @Override
2324        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
2325          switch (_hash) {
2326          case -1034364087: /*number*/  return new Property("number", "unsignedInt", "Number used to link this term or term element to the applicable Security Label.", 0, java.lang.Integer.MAX_VALUE, number);
2327          case 382350310: /*classification*/  return new Property("classification", "Coding", "Security label privacy tag that specifies the level of confidentiality protection required for this term and/or term elements.", 0, 1, classification);
2328          case 50511102: /*category*/  return new Property("category", "Coding", "Security label privacy tag that specifies the applicable privacy and security policies governing this term and/or term elements.", 0, java.lang.Integer.MAX_VALUE, category);
2329          case 951543133: /*control*/  return new Property("control", "Coding", "Security label privacy tag that specifies the manner in which term and/or term elements are to be protected.", 0, java.lang.Integer.MAX_VALUE, control);
2330          default: return super.getNamedProperty(_hash, _name, _checkValid);
2331          }
2332
2333        }
2334
2335      @Override
2336      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
2337        switch (hash) {
2338        case -1034364087: /*number*/ return this.number == null ? new Base[0] : this.number.toArray(new Base[this.number.size()]); // UnsignedIntType
2339        case 382350310: /*classification*/ return this.classification == null ? new Base[0] : new Base[] {this.classification}; // Coding
2340        case 50511102: /*category*/ return this.category == null ? new Base[0] : this.category.toArray(new Base[this.category.size()]); // Coding
2341        case 951543133: /*control*/ return this.control == null ? new Base[0] : this.control.toArray(new Base[this.control.size()]); // Coding
2342        default: return super.getProperty(hash, name, checkValid);
2343        }
2344
2345      }
2346
2347      @Override
2348      public Base setProperty(int hash, String name, Base value) throws FHIRException {
2349        switch (hash) {
2350        case -1034364087: // number
2351          this.getNumber().add(TypeConvertor.castToUnsignedInt(value)); // UnsignedIntType
2352          return value;
2353        case 382350310: // classification
2354          this.classification = TypeConvertor.castToCoding(value); // Coding
2355          return value;
2356        case 50511102: // category
2357          this.getCategory().add(TypeConvertor.castToCoding(value)); // Coding
2358          return value;
2359        case 951543133: // control
2360          this.getControl().add(TypeConvertor.castToCoding(value)); // Coding
2361          return value;
2362        default: return super.setProperty(hash, name, value);
2363        }
2364
2365      }
2366
2367      @Override
2368      public Base setProperty(String name, Base value) throws FHIRException {
2369        if (name.equals("number")) {
2370          this.getNumber().add(TypeConvertor.castToUnsignedInt(value));
2371        } else if (name.equals("classification")) {
2372          this.classification = TypeConvertor.castToCoding(value); // Coding
2373        } else if (name.equals("category")) {
2374          this.getCategory().add(TypeConvertor.castToCoding(value));
2375        } else if (name.equals("control")) {
2376          this.getControl().add(TypeConvertor.castToCoding(value));
2377        } else
2378          return super.setProperty(name, value);
2379        return value;
2380      }
2381
2382  @Override
2383  public void removeChild(String name, Base value) throws FHIRException {
2384        if (name.equals("number")) {
2385          this.getNumber().remove(value);
2386        } else if (name.equals("classification")) {
2387          this.classification = null;
2388        } else if (name.equals("category")) {
2389          this.getCategory().remove(value);
2390        } else if (name.equals("control")) {
2391          this.getControl().remove(value);
2392        } else
2393          super.removeChild(name, value);
2394        
2395      }
2396
2397      @Override
2398      public Base makeProperty(int hash, String name) throws FHIRException {
2399        switch (hash) {
2400        case -1034364087:  return addNumberElement();
2401        case 382350310:  return getClassification();
2402        case 50511102:  return addCategory(); 
2403        case 951543133:  return addControl(); 
2404        default: return super.makeProperty(hash, name);
2405        }
2406
2407      }
2408
2409      @Override
2410      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
2411        switch (hash) {
2412        case -1034364087: /*number*/ return new String[] {"unsignedInt"};
2413        case 382350310: /*classification*/ return new String[] {"Coding"};
2414        case 50511102: /*category*/ return new String[] {"Coding"};
2415        case 951543133: /*control*/ return new String[] {"Coding"};
2416        default: return super.getTypesForProperty(hash, name);
2417        }
2418
2419      }
2420
2421      @Override
2422      public Base addChild(String name) throws FHIRException {
2423        if (name.equals("number")) {
2424          throw new FHIRException("Cannot call addChild on a singleton property Contract.term.securityLabel.number");
2425        }
2426        else if (name.equals("classification")) {
2427          this.classification = new Coding();
2428          return this.classification;
2429        }
2430        else if (name.equals("category")) {
2431          return addCategory();
2432        }
2433        else if (name.equals("control")) {
2434          return addControl();
2435        }
2436        else
2437          return super.addChild(name);
2438      }
2439
2440      public SecurityLabelComponent copy() {
2441        SecurityLabelComponent dst = new SecurityLabelComponent();
2442        copyValues(dst);
2443        return dst;
2444      }
2445
2446      public void copyValues(SecurityLabelComponent dst) {
2447        super.copyValues(dst);
2448        if (number != null) {
2449          dst.number = new ArrayList<UnsignedIntType>();
2450          for (UnsignedIntType i : number)
2451            dst.number.add(i.copy());
2452        };
2453        dst.classification = classification == null ? null : classification.copy();
2454        if (category != null) {
2455          dst.category = new ArrayList<Coding>();
2456          for (Coding i : category)
2457            dst.category.add(i.copy());
2458        };
2459        if (control != null) {
2460          dst.control = new ArrayList<Coding>();
2461          for (Coding i : control)
2462            dst.control.add(i.copy());
2463        };
2464      }
2465
2466      @Override
2467      public boolean equalsDeep(Base other_) {
2468        if (!super.equalsDeep(other_))
2469          return false;
2470        if (!(other_ instanceof SecurityLabelComponent))
2471          return false;
2472        SecurityLabelComponent o = (SecurityLabelComponent) other_;
2473        return compareDeep(number, o.number, true) && compareDeep(classification, o.classification, true)
2474           && compareDeep(category, o.category, true) && compareDeep(control, o.control, true);
2475      }
2476
2477      @Override
2478      public boolean equalsShallow(Base other_) {
2479        if (!super.equalsShallow(other_))
2480          return false;
2481        if (!(other_ instanceof SecurityLabelComponent))
2482          return false;
2483        SecurityLabelComponent o = (SecurityLabelComponent) other_;
2484        return compareValues(number, o.number, true);
2485      }
2486
2487      public boolean isEmpty() {
2488        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(number, classification, category
2489          , control);
2490      }
2491
2492  public String fhirType() {
2493    return "Contract.term.securityLabel";
2494
2495  }
2496
2497  }
2498
2499    @Block()
2500    public static class ContractOfferComponent extends BackboneElement implements IBaseBackboneElement {
2501        /**
2502         * Unique identifier for this particular Contract Provision.
2503         */
2504        @Child(name = "identifier", type = {Identifier.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
2505        @Description(shortDefinition="Offer business ID", formalDefinition="Unique identifier for this particular Contract Provision." )
2506        protected List<Identifier> identifier;
2507
2508        /**
2509         * Offer Recipient.
2510         */
2511        @Child(name = "party", type = {}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
2512        @Description(shortDefinition="Offer Recipient", formalDefinition="Offer Recipient." )
2513        protected List<ContractPartyComponent> party;
2514
2515        /**
2516         * The owner of an asset has the residual control rights over the asset: the right to decide all usages of the asset in any way not inconsistent with a prior contract, custom, or law (Hart, 1995, p. 30).
2517         */
2518        @Child(name = "topic", type = {Reference.class}, order=3, min=0, max=1, modifier=false, summary=true)
2519        @Description(shortDefinition="Negotiable offer asset", formalDefinition="The owner of an asset has the residual control rights over the asset: the right to decide all usages of the asset in any way not inconsistent with a prior contract, custom, or law (Hart, 1995, p. 30)." )
2520        protected Reference topic;
2521
2522        /**
2523         * Type of Contract Provision such as specific requirements, purposes for actions, obligations, prohibitions, e.g. life time maximum benefit.
2524         */
2525        @Child(name = "type", type = {CodeableConcept.class}, order=4, min=0, max=1, modifier=false, summary=false)
2526        @Description(shortDefinition="Contract Offer Type or Form", formalDefinition="Type of Contract Provision such as specific requirements, purposes for actions, obligations, prohibitions, e.g. life time maximum benefit." )
2527        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/contract-term-type")
2528        protected CodeableConcept type;
2529
2530        /**
2531         * Type of choice made by accepting party with respect to an offer made by an offeror/ grantee.
2532         */
2533        @Child(name = "decision", type = {CodeableConcept.class}, order=5, min=0, max=1, modifier=false, summary=false)
2534        @Description(shortDefinition="Accepting party choice", formalDefinition="Type of choice made by accepting party with respect to an offer made by an offeror/ grantee." )
2535        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://terminology.hl7.org/ValueSet/v3-ActConsentDirective")
2536        protected CodeableConcept decision;
2537
2538        /**
2539         * How the decision about a Contract was conveyed.
2540         */
2541        @Child(name = "decisionMode", type = {CodeableConcept.class}, order=6, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
2542        @Description(shortDefinition="How decision is conveyed", formalDefinition="How the decision about a Contract was conveyed." )
2543        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/contract-decision-mode")
2544        protected List<CodeableConcept> decisionMode;
2545
2546        /**
2547         * Response to offer text.
2548         */
2549        @Child(name = "answer", type = {}, order=7, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
2550        @Description(shortDefinition="Response to offer text", formalDefinition="Response to offer text." )
2551        protected List<AnswerComponent> answer;
2552
2553        /**
2554         * Human readable form of this Contract Offer.
2555         */
2556        @Child(name = "text", type = {StringType.class}, order=8, min=0, max=1, modifier=false, summary=false)
2557        @Description(shortDefinition="Human readable offer text", formalDefinition="Human readable form of this Contract Offer." )
2558        protected StringType text;
2559
2560        /**
2561         * The id of the clause or question text of the offer in the referenced questionnaire/response.
2562         */
2563        @Child(name = "linkId", type = {StringType.class}, order=9, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
2564        @Description(shortDefinition="Pointer to text", formalDefinition="The id of the clause or question text of the offer in the referenced questionnaire/response." )
2565        protected List<StringType> linkId;
2566
2567        /**
2568         * Security labels that protects the offer.
2569         */
2570        @Child(name = "securityLabelNumber", type = {UnsignedIntType.class}, order=10, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
2571        @Description(shortDefinition="Offer restriction numbers", formalDefinition="Security labels that protects the offer." )
2572        protected List<UnsignedIntType> securityLabelNumber;
2573
2574        private static final long serialVersionUID = -852140711L;
2575
2576    /**
2577     * Constructor
2578     */
2579      public ContractOfferComponent() {
2580        super();
2581      }
2582
2583        /**
2584         * @return {@link #identifier} (Unique identifier for this particular Contract Provision.)
2585         */
2586        public List<Identifier> getIdentifier() { 
2587          if (this.identifier == null)
2588            this.identifier = new ArrayList<Identifier>();
2589          return this.identifier;
2590        }
2591
2592        /**
2593         * @return Returns a reference to <code>this</code> for easy method chaining
2594         */
2595        public ContractOfferComponent setIdentifier(List<Identifier> theIdentifier) { 
2596          this.identifier = theIdentifier;
2597          return this;
2598        }
2599
2600        public boolean hasIdentifier() { 
2601          if (this.identifier == null)
2602            return false;
2603          for (Identifier item : this.identifier)
2604            if (!item.isEmpty())
2605              return true;
2606          return false;
2607        }
2608
2609        public Identifier addIdentifier() { //3
2610          Identifier t = new Identifier();
2611          if (this.identifier == null)
2612            this.identifier = new ArrayList<Identifier>();
2613          this.identifier.add(t);
2614          return t;
2615        }
2616
2617        public ContractOfferComponent addIdentifier(Identifier t) { //3
2618          if (t == null)
2619            return this;
2620          if (this.identifier == null)
2621            this.identifier = new ArrayList<Identifier>();
2622          this.identifier.add(t);
2623          return this;
2624        }
2625
2626        /**
2627         * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {3}
2628         */
2629        public Identifier getIdentifierFirstRep() { 
2630          if (getIdentifier().isEmpty()) {
2631            addIdentifier();
2632          }
2633          return getIdentifier().get(0);
2634        }
2635
2636        /**
2637         * @return {@link #party} (Offer Recipient.)
2638         */
2639        public List<ContractPartyComponent> getParty() { 
2640          if (this.party == null)
2641            this.party = new ArrayList<ContractPartyComponent>();
2642          return this.party;
2643        }
2644
2645        /**
2646         * @return Returns a reference to <code>this</code> for easy method chaining
2647         */
2648        public ContractOfferComponent setParty(List<ContractPartyComponent> theParty) { 
2649          this.party = theParty;
2650          return this;
2651        }
2652
2653        public boolean hasParty() { 
2654          if (this.party == null)
2655            return false;
2656          for (ContractPartyComponent item : this.party)
2657            if (!item.isEmpty())
2658              return true;
2659          return false;
2660        }
2661
2662        public ContractPartyComponent addParty() { //3
2663          ContractPartyComponent t = new ContractPartyComponent();
2664          if (this.party == null)
2665            this.party = new ArrayList<ContractPartyComponent>();
2666          this.party.add(t);
2667          return t;
2668        }
2669
2670        public ContractOfferComponent addParty(ContractPartyComponent t) { //3
2671          if (t == null)
2672            return this;
2673          if (this.party == null)
2674            this.party = new ArrayList<ContractPartyComponent>();
2675          this.party.add(t);
2676          return this;
2677        }
2678
2679        /**
2680         * @return The first repetition of repeating field {@link #party}, creating it if it does not already exist {3}
2681         */
2682        public ContractPartyComponent getPartyFirstRep() { 
2683          if (getParty().isEmpty()) {
2684            addParty();
2685          }
2686          return getParty().get(0);
2687        }
2688
2689        /**
2690         * @return {@link #topic} (The owner of an asset has the residual control rights over the asset: the right to decide all usages of the asset in any way not inconsistent with a prior contract, custom, or law (Hart, 1995, p. 30).)
2691         */
2692        public Reference getTopic() { 
2693          if (this.topic == null)
2694            if (Configuration.errorOnAutoCreate())
2695              throw new Error("Attempt to auto-create ContractOfferComponent.topic");
2696            else if (Configuration.doAutoCreate())
2697              this.topic = new Reference(); // cc
2698          return this.topic;
2699        }
2700
2701        public boolean hasTopic() { 
2702          return this.topic != null && !this.topic.isEmpty();
2703        }
2704
2705        /**
2706         * @param value {@link #topic} (The owner of an asset has the residual control rights over the asset: the right to decide all usages of the asset in any way not inconsistent with a prior contract, custom, or law (Hart, 1995, p. 30).)
2707         */
2708        public ContractOfferComponent setTopic(Reference value) { 
2709          this.topic = value;
2710          return this;
2711        }
2712
2713        /**
2714         * @return {@link #type} (Type of Contract Provision such as specific requirements, purposes for actions, obligations, prohibitions, e.g. life time maximum benefit.)
2715         */
2716        public CodeableConcept getType() { 
2717          if (this.type == null)
2718            if (Configuration.errorOnAutoCreate())
2719              throw new Error("Attempt to auto-create ContractOfferComponent.type");
2720            else if (Configuration.doAutoCreate())
2721              this.type = new CodeableConcept(); // cc
2722          return this.type;
2723        }
2724
2725        public boolean hasType() { 
2726          return this.type != null && !this.type.isEmpty();
2727        }
2728
2729        /**
2730         * @param value {@link #type} (Type of Contract Provision such as specific requirements, purposes for actions, obligations, prohibitions, e.g. life time maximum benefit.)
2731         */
2732        public ContractOfferComponent setType(CodeableConcept value) { 
2733          this.type = value;
2734          return this;
2735        }
2736
2737        /**
2738         * @return {@link #decision} (Type of choice made by accepting party with respect to an offer made by an offeror/ grantee.)
2739         */
2740        public CodeableConcept getDecision() { 
2741          if (this.decision == null)
2742            if (Configuration.errorOnAutoCreate())
2743              throw new Error("Attempt to auto-create ContractOfferComponent.decision");
2744            else if (Configuration.doAutoCreate())
2745              this.decision = new CodeableConcept(); // cc
2746          return this.decision;
2747        }
2748
2749        public boolean hasDecision() { 
2750          return this.decision != null && !this.decision.isEmpty();
2751        }
2752
2753        /**
2754         * @param value {@link #decision} (Type of choice made by accepting party with respect to an offer made by an offeror/ grantee.)
2755         */
2756        public ContractOfferComponent setDecision(CodeableConcept value) { 
2757          this.decision = value;
2758          return this;
2759        }
2760
2761        /**
2762         * @return {@link #decisionMode} (How the decision about a Contract was conveyed.)
2763         */
2764        public List<CodeableConcept> getDecisionMode() { 
2765          if (this.decisionMode == null)
2766            this.decisionMode = new ArrayList<CodeableConcept>();
2767          return this.decisionMode;
2768        }
2769
2770        /**
2771         * @return Returns a reference to <code>this</code> for easy method chaining
2772         */
2773        public ContractOfferComponent setDecisionMode(List<CodeableConcept> theDecisionMode) { 
2774          this.decisionMode = theDecisionMode;
2775          return this;
2776        }
2777
2778        public boolean hasDecisionMode() { 
2779          if (this.decisionMode == null)
2780            return false;
2781          for (CodeableConcept item : this.decisionMode)
2782            if (!item.isEmpty())
2783              return true;
2784          return false;
2785        }
2786
2787        public CodeableConcept addDecisionMode() { //3
2788          CodeableConcept t = new CodeableConcept();
2789          if (this.decisionMode == null)
2790            this.decisionMode = new ArrayList<CodeableConcept>();
2791          this.decisionMode.add(t);
2792          return t;
2793        }
2794
2795        public ContractOfferComponent addDecisionMode(CodeableConcept t) { //3
2796          if (t == null)
2797            return this;
2798          if (this.decisionMode == null)
2799            this.decisionMode = new ArrayList<CodeableConcept>();
2800          this.decisionMode.add(t);
2801          return this;
2802        }
2803
2804        /**
2805         * @return The first repetition of repeating field {@link #decisionMode}, creating it if it does not already exist {3}
2806         */
2807        public CodeableConcept getDecisionModeFirstRep() { 
2808          if (getDecisionMode().isEmpty()) {
2809            addDecisionMode();
2810          }
2811          return getDecisionMode().get(0);
2812        }
2813
2814        /**
2815         * @return {@link #answer} (Response to offer text.)
2816         */
2817        public List<AnswerComponent> getAnswer() { 
2818          if (this.answer == null)
2819            this.answer = new ArrayList<AnswerComponent>();
2820          return this.answer;
2821        }
2822
2823        /**
2824         * @return Returns a reference to <code>this</code> for easy method chaining
2825         */
2826        public ContractOfferComponent setAnswer(List<AnswerComponent> theAnswer) { 
2827          this.answer = theAnswer;
2828          return this;
2829        }
2830
2831        public boolean hasAnswer() { 
2832          if (this.answer == null)
2833            return false;
2834          for (AnswerComponent item : this.answer)
2835            if (!item.isEmpty())
2836              return true;
2837          return false;
2838        }
2839
2840        public AnswerComponent addAnswer() { //3
2841          AnswerComponent t = new AnswerComponent();
2842          if (this.answer == null)
2843            this.answer = new ArrayList<AnswerComponent>();
2844          this.answer.add(t);
2845          return t;
2846        }
2847
2848        public ContractOfferComponent addAnswer(AnswerComponent t) { //3
2849          if (t == null)
2850            return this;
2851          if (this.answer == null)
2852            this.answer = new ArrayList<AnswerComponent>();
2853          this.answer.add(t);
2854          return this;
2855        }
2856
2857        /**
2858         * @return The first repetition of repeating field {@link #answer}, creating it if it does not already exist {3}
2859         */
2860        public AnswerComponent getAnswerFirstRep() { 
2861          if (getAnswer().isEmpty()) {
2862            addAnswer();
2863          }
2864          return getAnswer().get(0);
2865        }
2866
2867        /**
2868         * @return {@link #text} (Human readable form of this Contract Offer.). This is the underlying object with id, value and extensions. The accessor "getText" gives direct access to the value
2869         */
2870        public StringType getTextElement() { 
2871          if (this.text == null)
2872            if (Configuration.errorOnAutoCreate())
2873              throw new Error("Attempt to auto-create ContractOfferComponent.text");
2874            else if (Configuration.doAutoCreate())
2875              this.text = new StringType(); // bb
2876          return this.text;
2877        }
2878
2879        public boolean hasTextElement() { 
2880          return this.text != null && !this.text.isEmpty();
2881        }
2882
2883        public boolean hasText() { 
2884          return this.text != null && !this.text.isEmpty();
2885        }
2886
2887        /**
2888         * @param value {@link #text} (Human readable form of this Contract Offer.). This is the underlying object with id, value and extensions. The accessor "getText" gives direct access to the value
2889         */
2890        public ContractOfferComponent setTextElement(StringType value) { 
2891          this.text = value;
2892          return this;
2893        }
2894
2895        /**
2896         * @return Human readable form of this Contract Offer.
2897         */
2898        public String getText() { 
2899          return this.text == null ? null : this.text.getValue();
2900        }
2901
2902        /**
2903         * @param value Human readable form of this Contract Offer.
2904         */
2905        public ContractOfferComponent setText(String value) { 
2906          if (Utilities.noString(value))
2907            this.text = null;
2908          else {
2909            if (this.text == null)
2910              this.text = new StringType();
2911            this.text.setValue(value);
2912          }
2913          return this;
2914        }
2915
2916        /**
2917         * @return {@link #linkId} (The id of the clause or question text of the offer in the referenced questionnaire/response.)
2918         */
2919        public List<StringType> getLinkId() { 
2920          if (this.linkId == null)
2921            this.linkId = new ArrayList<StringType>();
2922          return this.linkId;
2923        }
2924
2925        /**
2926         * @return Returns a reference to <code>this</code> for easy method chaining
2927         */
2928        public ContractOfferComponent setLinkId(List<StringType> theLinkId) { 
2929          this.linkId = theLinkId;
2930          return this;
2931        }
2932
2933        public boolean hasLinkId() { 
2934          if (this.linkId == null)
2935            return false;
2936          for (StringType item : this.linkId)
2937            if (!item.isEmpty())
2938              return true;
2939          return false;
2940        }
2941
2942        /**
2943         * @return {@link #linkId} (The id of the clause or question text of the offer in the referenced questionnaire/response.)
2944         */
2945        public StringType addLinkIdElement() {//2 
2946          StringType t = new StringType();
2947          if (this.linkId == null)
2948            this.linkId = new ArrayList<StringType>();
2949          this.linkId.add(t);
2950          return t;
2951        }
2952
2953        /**
2954         * @param value {@link #linkId} (The id of the clause or question text of the offer in the referenced questionnaire/response.)
2955         */
2956        public ContractOfferComponent addLinkId(String value) { //1
2957          StringType t = new StringType();
2958          t.setValue(value);
2959          if (this.linkId == null)
2960            this.linkId = new ArrayList<StringType>();
2961          this.linkId.add(t);
2962          return this;
2963        }
2964
2965        /**
2966         * @param value {@link #linkId} (The id of the clause or question text of the offer in the referenced questionnaire/response.)
2967         */
2968        public boolean hasLinkId(String value) { 
2969          if (this.linkId == null)
2970            return false;
2971          for (StringType v : this.linkId)
2972            if (v.getValue().equals(value)) // string
2973              return true;
2974          return false;
2975        }
2976
2977        /**
2978         * @return {@link #securityLabelNumber} (Security labels that protects the offer.)
2979         */
2980        public List<UnsignedIntType> getSecurityLabelNumber() { 
2981          if (this.securityLabelNumber == null)
2982            this.securityLabelNumber = new ArrayList<UnsignedIntType>();
2983          return this.securityLabelNumber;
2984        }
2985
2986        /**
2987         * @return Returns a reference to <code>this</code> for easy method chaining
2988         */
2989        public ContractOfferComponent setSecurityLabelNumber(List<UnsignedIntType> theSecurityLabelNumber) { 
2990          this.securityLabelNumber = theSecurityLabelNumber;
2991          return this;
2992        }
2993
2994        public boolean hasSecurityLabelNumber() { 
2995          if (this.securityLabelNumber == null)
2996            return false;
2997          for (UnsignedIntType item : this.securityLabelNumber)
2998            if (!item.isEmpty())
2999              return true;
3000          return false;
3001        }
3002
3003        /**
3004         * @return {@link #securityLabelNumber} (Security labels that protects the offer.)
3005         */
3006        public UnsignedIntType addSecurityLabelNumberElement() {//2 
3007          UnsignedIntType t = new UnsignedIntType();
3008          if (this.securityLabelNumber == null)
3009            this.securityLabelNumber = new ArrayList<UnsignedIntType>();
3010          this.securityLabelNumber.add(t);
3011          return t;
3012        }
3013
3014        /**
3015         * @param value {@link #securityLabelNumber} (Security labels that protects the offer.)
3016         */
3017        public ContractOfferComponent addSecurityLabelNumber(int value) { //1
3018          UnsignedIntType t = new UnsignedIntType();
3019          t.setValue(value);
3020          if (this.securityLabelNumber == null)
3021            this.securityLabelNumber = new ArrayList<UnsignedIntType>();
3022          this.securityLabelNumber.add(t);
3023          return this;
3024        }
3025
3026        /**
3027         * @param value {@link #securityLabelNumber} (Security labels that protects the offer.)
3028         */
3029        public boolean hasSecurityLabelNumber(int value) { 
3030          if (this.securityLabelNumber == null)
3031            return false;
3032          for (UnsignedIntType v : this.securityLabelNumber)
3033            if (v.getValue().equals(value)) // unsignedInt
3034              return true;
3035          return false;
3036        }
3037
3038        protected void listChildren(List<Property> children) {
3039          super.listChildren(children);
3040          children.add(new Property("identifier", "Identifier", "Unique identifier for this particular Contract Provision.", 0, java.lang.Integer.MAX_VALUE, identifier));
3041          children.add(new Property("party", "", "Offer Recipient.", 0, java.lang.Integer.MAX_VALUE, party));
3042          children.add(new Property("topic", "Reference(Any)", "The owner of an asset has the residual control rights over the asset: the right to decide all usages of the asset in any way not inconsistent with a prior contract, custom, or law (Hart, 1995, p. 30).", 0, 1, topic));
3043          children.add(new Property("type", "CodeableConcept", "Type of Contract Provision such as specific requirements, purposes for actions, obligations, prohibitions, e.g. life time maximum benefit.", 0, 1, type));
3044          children.add(new Property("decision", "CodeableConcept", "Type of choice made by accepting party with respect to an offer made by an offeror/ grantee.", 0, 1, decision));
3045          children.add(new Property("decisionMode", "CodeableConcept", "How the decision about a Contract was conveyed.", 0, java.lang.Integer.MAX_VALUE, decisionMode));
3046          children.add(new Property("answer", "", "Response to offer text.", 0, java.lang.Integer.MAX_VALUE, answer));
3047          children.add(new Property("text", "string", "Human readable form of this Contract Offer.", 0, 1, text));
3048          children.add(new Property("linkId", "string", "The id of the clause or question text of the offer in the referenced questionnaire/response.", 0, java.lang.Integer.MAX_VALUE, linkId));
3049          children.add(new Property("securityLabelNumber", "unsignedInt", "Security labels that protects the offer.", 0, java.lang.Integer.MAX_VALUE, securityLabelNumber));
3050        }
3051
3052        @Override
3053        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
3054          switch (_hash) {
3055          case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "Unique identifier for this particular Contract Provision.", 0, java.lang.Integer.MAX_VALUE, identifier);
3056          case 106437350: /*party*/  return new Property("party", "", "Offer Recipient.", 0, java.lang.Integer.MAX_VALUE, party);
3057          case 110546223: /*topic*/  return new Property("topic", "Reference(Any)", "The owner of an asset has the residual control rights over the asset: the right to decide all usages of the asset in any way not inconsistent with a prior contract, custom, or law (Hart, 1995, p. 30).", 0, 1, topic);
3058          case 3575610: /*type*/  return new Property("type", "CodeableConcept", "Type of Contract Provision such as specific requirements, purposes for actions, obligations, prohibitions, e.g. life time maximum benefit.", 0, 1, type);
3059          case 565719004: /*decision*/  return new Property("decision", "CodeableConcept", "Type of choice made by accepting party with respect to an offer made by an offeror/ grantee.", 0, 1, decision);
3060          case 675909535: /*decisionMode*/  return new Property("decisionMode", "CodeableConcept", "How the decision about a Contract was conveyed.", 0, java.lang.Integer.MAX_VALUE, decisionMode);
3061          case -1412808770: /*answer*/  return new Property("answer", "", "Response to offer text.", 0, java.lang.Integer.MAX_VALUE, answer);
3062          case 3556653: /*text*/  return new Property("text", "string", "Human readable form of this Contract Offer.", 0, 1, text);
3063          case -1102667083: /*linkId*/  return new Property("linkId", "string", "The id of the clause or question text of the offer in the referenced questionnaire/response.", 0, java.lang.Integer.MAX_VALUE, linkId);
3064          case -149460995: /*securityLabelNumber*/  return new Property("securityLabelNumber", "unsignedInt", "Security labels that protects the offer.", 0, java.lang.Integer.MAX_VALUE, securityLabelNumber);
3065          default: return super.getNamedProperty(_hash, _name, _checkValid);
3066          }
3067
3068        }
3069
3070      @Override
3071      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
3072        switch (hash) {
3073        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
3074        case 106437350: /*party*/ return this.party == null ? new Base[0] : this.party.toArray(new Base[this.party.size()]); // ContractPartyComponent
3075        case 110546223: /*topic*/ return this.topic == null ? new Base[0] : new Base[] {this.topic}; // Reference
3076        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // CodeableConcept
3077        case 565719004: /*decision*/ return this.decision == null ? new Base[0] : new Base[] {this.decision}; // CodeableConcept
3078        case 675909535: /*decisionMode*/ return this.decisionMode == null ? new Base[0] : this.decisionMode.toArray(new Base[this.decisionMode.size()]); // CodeableConcept
3079        case -1412808770: /*answer*/ return this.answer == null ? new Base[0] : this.answer.toArray(new Base[this.answer.size()]); // AnswerComponent
3080        case 3556653: /*text*/ return this.text == null ? new Base[0] : new Base[] {this.text}; // StringType
3081        case -1102667083: /*linkId*/ return this.linkId == null ? new Base[0] : this.linkId.toArray(new Base[this.linkId.size()]); // StringType
3082        case -149460995: /*securityLabelNumber*/ return this.securityLabelNumber == null ? new Base[0] : this.securityLabelNumber.toArray(new Base[this.securityLabelNumber.size()]); // UnsignedIntType
3083        default: return super.getProperty(hash, name, checkValid);
3084        }
3085
3086      }
3087
3088      @Override
3089      public Base setProperty(int hash, String name, Base value) throws FHIRException {
3090        switch (hash) {
3091        case -1618432855: // identifier
3092          this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier
3093          return value;
3094        case 106437350: // party
3095          this.getParty().add((ContractPartyComponent) value); // ContractPartyComponent
3096          return value;
3097        case 110546223: // topic
3098          this.topic = TypeConvertor.castToReference(value); // Reference
3099          return value;
3100        case 3575610: // type
3101          this.type = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
3102          return value;
3103        case 565719004: // decision
3104          this.decision = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
3105          return value;
3106        case 675909535: // decisionMode
3107          this.getDecisionMode().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
3108          return value;
3109        case -1412808770: // answer
3110          this.getAnswer().add((AnswerComponent) value); // AnswerComponent
3111          return value;
3112        case 3556653: // text
3113          this.text = TypeConvertor.castToString(value); // StringType
3114          return value;
3115        case -1102667083: // linkId
3116          this.getLinkId().add(TypeConvertor.castToString(value)); // StringType
3117          return value;
3118        case -149460995: // securityLabelNumber
3119          this.getSecurityLabelNumber().add(TypeConvertor.castToUnsignedInt(value)); // UnsignedIntType
3120          return value;
3121        default: return super.setProperty(hash, name, value);
3122        }
3123
3124      }
3125
3126      @Override
3127      public Base setProperty(String name, Base value) throws FHIRException {
3128        if (name.equals("identifier")) {
3129          this.getIdentifier().add(TypeConvertor.castToIdentifier(value));
3130        } else if (name.equals("party")) {
3131          this.getParty().add((ContractPartyComponent) value);
3132        } else if (name.equals("topic")) {
3133          this.topic = TypeConvertor.castToReference(value); // Reference
3134        } else if (name.equals("type")) {
3135          this.type = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
3136        } else if (name.equals("decision")) {
3137          this.decision = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
3138        } else if (name.equals("decisionMode")) {
3139          this.getDecisionMode().add(TypeConvertor.castToCodeableConcept(value));
3140        } else if (name.equals("answer")) {
3141          this.getAnswer().add((AnswerComponent) value);
3142        } else if (name.equals("text")) {
3143          this.text = TypeConvertor.castToString(value); // StringType
3144        } else if (name.equals("linkId")) {
3145          this.getLinkId().add(TypeConvertor.castToString(value));
3146        } else if (name.equals("securityLabelNumber")) {
3147          this.getSecurityLabelNumber().add(TypeConvertor.castToUnsignedInt(value));
3148        } else
3149          return super.setProperty(name, value);
3150        return value;
3151      }
3152
3153  @Override
3154  public void removeChild(String name, Base value) throws FHIRException {
3155        if (name.equals("identifier")) {
3156          this.getIdentifier().remove(value);
3157        } else if (name.equals("party")) {
3158          this.getParty().remove((ContractPartyComponent) value);
3159        } else if (name.equals("topic")) {
3160          this.topic = null;
3161        } else if (name.equals("type")) {
3162          this.type = null;
3163        } else if (name.equals("decision")) {
3164          this.decision = null;
3165        } else if (name.equals("decisionMode")) {
3166          this.getDecisionMode().remove(value);
3167        } else if (name.equals("answer")) {
3168          this.getAnswer().remove((AnswerComponent) value);
3169        } else if (name.equals("text")) {
3170          this.text = null;
3171        } else if (name.equals("linkId")) {
3172          this.getLinkId().remove(value);
3173        } else if (name.equals("securityLabelNumber")) {
3174          this.getSecurityLabelNumber().remove(value);
3175        } else
3176          super.removeChild(name, value);
3177        
3178      }
3179
3180      @Override
3181      public Base makeProperty(int hash, String name) throws FHIRException {
3182        switch (hash) {
3183        case -1618432855:  return addIdentifier(); 
3184        case 106437350:  return addParty(); 
3185        case 110546223:  return getTopic();
3186        case 3575610:  return getType();
3187        case 565719004:  return getDecision();
3188        case 675909535:  return addDecisionMode(); 
3189        case -1412808770:  return addAnswer(); 
3190        case 3556653:  return getTextElement();
3191        case -1102667083:  return addLinkIdElement();
3192        case -149460995:  return addSecurityLabelNumberElement();
3193        default: return super.makeProperty(hash, name);
3194        }
3195
3196      }
3197
3198      @Override
3199      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
3200        switch (hash) {
3201        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
3202        case 106437350: /*party*/ return new String[] {};
3203        case 110546223: /*topic*/ return new String[] {"Reference"};
3204        case 3575610: /*type*/ return new String[] {"CodeableConcept"};
3205        case 565719004: /*decision*/ return new String[] {"CodeableConcept"};
3206        case 675909535: /*decisionMode*/ return new String[] {"CodeableConcept"};
3207        case -1412808770: /*answer*/ return new String[] {};
3208        case 3556653: /*text*/ return new String[] {"string"};
3209        case -1102667083: /*linkId*/ return new String[] {"string"};
3210        case -149460995: /*securityLabelNumber*/ return new String[] {"unsignedInt"};
3211        default: return super.getTypesForProperty(hash, name);
3212        }
3213
3214      }
3215
3216      @Override
3217      public Base addChild(String name) throws FHIRException {
3218        if (name.equals("identifier")) {
3219          return addIdentifier();
3220        }
3221        else if (name.equals("party")) {
3222          return addParty();
3223        }
3224        else if (name.equals("topic")) {
3225          this.topic = new Reference();
3226          return this.topic;
3227        }
3228        else if (name.equals("type")) {
3229          this.type = new CodeableConcept();
3230          return this.type;
3231        }
3232        else if (name.equals("decision")) {
3233          this.decision = new CodeableConcept();
3234          return this.decision;
3235        }
3236        else if (name.equals("decisionMode")) {
3237          return addDecisionMode();
3238        }
3239        else if (name.equals("answer")) {
3240          return addAnswer();
3241        }
3242        else if (name.equals("text")) {
3243          throw new FHIRException("Cannot call addChild on a singleton property Contract.term.offer.text");
3244        }
3245        else if (name.equals("linkId")) {
3246          throw new FHIRException("Cannot call addChild on a singleton property Contract.term.offer.linkId");
3247        }
3248        else if (name.equals("securityLabelNumber")) {
3249          throw new FHIRException("Cannot call addChild on a singleton property Contract.term.offer.securityLabelNumber");
3250        }
3251        else
3252          return super.addChild(name);
3253      }
3254
3255      public ContractOfferComponent copy() {
3256        ContractOfferComponent dst = new ContractOfferComponent();
3257        copyValues(dst);
3258        return dst;
3259      }
3260
3261      public void copyValues(ContractOfferComponent dst) {
3262        super.copyValues(dst);
3263        if (identifier != null) {
3264          dst.identifier = new ArrayList<Identifier>();
3265          for (Identifier i : identifier)
3266            dst.identifier.add(i.copy());
3267        };
3268        if (party != null) {
3269          dst.party = new ArrayList<ContractPartyComponent>();
3270          for (ContractPartyComponent i : party)
3271            dst.party.add(i.copy());
3272        };
3273        dst.topic = topic == null ? null : topic.copy();
3274        dst.type = type == null ? null : type.copy();
3275        dst.decision = decision == null ? null : decision.copy();
3276        if (decisionMode != null) {
3277          dst.decisionMode = new ArrayList<CodeableConcept>();
3278          for (CodeableConcept i : decisionMode)
3279            dst.decisionMode.add(i.copy());
3280        };
3281        if (answer != null) {
3282          dst.answer = new ArrayList<AnswerComponent>();
3283          for (AnswerComponent i : answer)
3284            dst.answer.add(i.copy());
3285        };
3286        dst.text = text == null ? null : text.copy();
3287        if (linkId != null) {
3288          dst.linkId = new ArrayList<StringType>();
3289          for (StringType i : linkId)
3290            dst.linkId.add(i.copy());
3291        };
3292        if (securityLabelNumber != null) {
3293          dst.securityLabelNumber = new ArrayList<UnsignedIntType>();
3294          for (UnsignedIntType i : securityLabelNumber)
3295            dst.securityLabelNumber.add(i.copy());
3296        };
3297      }
3298
3299      @Override
3300      public boolean equalsDeep(Base other_) {
3301        if (!super.equalsDeep(other_))
3302          return false;
3303        if (!(other_ instanceof ContractOfferComponent))
3304          return false;
3305        ContractOfferComponent o = (ContractOfferComponent) other_;
3306        return compareDeep(identifier, o.identifier, true) && compareDeep(party, o.party, true) && compareDeep(topic, o.topic, true)
3307           && compareDeep(type, o.type, true) && compareDeep(decision, o.decision, true) && compareDeep(decisionMode, o.decisionMode, true)
3308           && compareDeep(answer, o.answer, true) && compareDeep(text, o.text, true) && compareDeep(linkId, o.linkId, true)
3309           && compareDeep(securityLabelNumber, o.securityLabelNumber, true);
3310      }
3311
3312      @Override
3313      public boolean equalsShallow(Base other_) {
3314        if (!super.equalsShallow(other_))
3315          return false;
3316        if (!(other_ instanceof ContractOfferComponent))
3317          return false;
3318        ContractOfferComponent o = (ContractOfferComponent) other_;
3319        return compareValues(text, o.text, true) && compareValues(linkId, o.linkId, true) && compareValues(securityLabelNumber, o.securityLabelNumber, true)
3320          ;
3321      }
3322
3323      public boolean isEmpty() {
3324        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, party, topic
3325          , type, decision, decisionMode, answer, text, linkId, securityLabelNumber);
3326      }
3327
3328  public String fhirType() {
3329    return "Contract.term.offer";
3330
3331  }
3332
3333  }
3334
3335    @Block()
3336    public static class ContractPartyComponent extends BackboneElement implements IBaseBackboneElement {
3337        /**
3338         * Participant in the offer.
3339         */
3340        @Child(name = "reference", type = {Patient.class, RelatedPerson.class, Practitioner.class, PractitionerRole.class, Device.class, Group.class, Organization.class}, order=1, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
3341        @Description(shortDefinition="Referenced entity", formalDefinition="Participant in the offer." )
3342        protected List<Reference> reference;
3343
3344        /**
3345         * How the party participates in the offer.
3346         */
3347        @Child(name = "role", type = {CodeableConcept.class}, order=2, min=1, max=1, modifier=false, summary=false)
3348        @Description(shortDefinition="Participant engagement type", formalDefinition="How the party participates in the offer." )
3349        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/contract-party-role")
3350        protected CodeableConcept role;
3351
3352        private static final long serialVersionUID = -1599592477L;
3353
3354    /**
3355     * Constructor
3356     */
3357      public ContractPartyComponent() {
3358        super();
3359      }
3360
3361    /**
3362     * Constructor
3363     */
3364      public ContractPartyComponent(Reference reference, CodeableConcept role) {
3365        super();
3366        this.addReference(reference);
3367        this.setRole(role);
3368      }
3369
3370        /**
3371         * @return {@link #reference} (Participant in the offer.)
3372         */
3373        public List<Reference> getReference() { 
3374          if (this.reference == null)
3375            this.reference = new ArrayList<Reference>();
3376          return this.reference;
3377        }
3378
3379        /**
3380         * @return Returns a reference to <code>this</code> for easy method chaining
3381         */
3382        public ContractPartyComponent setReference(List<Reference> theReference) { 
3383          this.reference = theReference;
3384          return this;
3385        }
3386
3387        public boolean hasReference() { 
3388          if (this.reference == null)
3389            return false;
3390          for (Reference item : this.reference)
3391            if (!item.isEmpty())
3392              return true;
3393          return false;
3394        }
3395
3396        public Reference addReference() { //3
3397          Reference t = new Reference();
3398          if (this.reference == null)
3399            this.reference = new ArrayList<Reference>();
3400          this.reference.add(t);
3401          return t;
3402        }
3403
3404        public ContractPartyComponent addReference(Reference t) { //3
3405          if (t == null)
3406            return this;
3407          if (this.reference == null)
3408            this.reference = new ArrayList<Reference>();
3409          this.reference.add(t);
3410          return this;
3411        }
3412
3413        /**
3414         * @return The first repetition of repeating field {@link #reference}, creating it if it does not already exist {3}
3415         */
3416        public Reference getReferenceFirstRep() { 
3417          if (getReference().isEmpty()) {
3418            addReference();
3419          }
3420          return getReference().get(0);
3421        }
3422
3423        /**
3424         * @return {@link #role} (How the party participates in the offer.)
3425         */
3426        public CodeableConcept getRole() { 
3427          if (this.role == null)
3428            if (Configuration.errorOnAutoCreate())
3429              throw new Error("Attempt to auto-create ContractPartyComponent.role");
3430            else if (Configuration.doAutoCreate())
3431              this.role = new CodeableConcept(); // cc
3432          return this.role;
3433        }
3434
3435        public boolean hasRole() { 
3436          return this.role != null && !this.role.isEmpty();
3437        }
3438
3439        /**
3440         * @param value {@link #role} (How the party participates in the offer.)
3441         */
3442        public ContractPartyComponent setRole(CodeableConcept value) { 
3443          this.role = value;
3444          return this;
3445        }
3446
3447        protected void listChildren(List<Property> children) {
3448          super.listChildren(children);
3449          children.add(new Property("reference", "Reference(Patient|RelatedPerson|Practitioner|PractitionerRole|Device|Group|Organization)", "Participant in the offer.", 0, java.lang.Integer.MAX_VALUE, reference));
3450          children.add(new Property("role", "CodeableConcept", "How the party participates in the offer.", 0, 1, role));
3451        }
3452
3453        @Override
3454        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
3455          switch (_hash) {
3456          case -925155509: /*reference*/  return new Property("reference", "Reference(Patient|RelatedPerson|Practitioner|PractitionerRole|Device|Group|Organization)", "Participant in the offer.", 0, java.lang.Integer.MAX_VALUE, reference);
3457          case 3506294: /*role*/  return new Property("role", "CodeableConcept", "How the party participates in the offer.", 0, 1, role);
3458          default: return super.getNamedProperty(_hash, _name, _checkValid);
3459          }
3460
3461        }
3462
3463      @Override
3464      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
3465        switch (hash) {
3466        case -925155509: /*reference*/ return this.reference == null ? new Base[0] : this.reference.toArray(new Base[this.reference.size()]); // Reference
3467        case 3506294: /*role*/ return this.role == null ? new Base[0] : new Base[] {this.role}; // CodeableConcept
3468        default: return super.getProperty(hash, name, checkValid);
3469        }
3470
3471      }
3472
3473      @Override
3474      public Base setProperty(int hash, String name, Base value) throws FHIRException {
3475        switch (hash) {
3476        case -925155509: // reference
3477          this.getReference().add(TypeConvertor.castToReference(value)); // Reference
3478          return value;
3479        case 3506294: // role
3480          this.role = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
3481          return value;
3482        default: return super.setProperty(hash, name, value);
3483        }
3484
3485      }
3486
3487      @Override
3488      public Base setProperty(String name, Base value) throws FHIRException {
3489        if (name.equals("reference")) {
3490          this.getReference().add(TypeConvertor.castToReference(value));
3491        } else if (name.equals("role")) {
3492          this.role = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
3493        } else
3494          return super.setProperty(name, value);
3495        return value;
3496      }
3497
3498  @Override
3499  public void removeChild(String name, Base value) throws FHIRException {
3500        if (name.equals("reference")) {
3501          this.getReference().remove(value);
3502        } else if (name.equals("role")) {
3503          this.role = null;
3504        } else
3505          super.removeChild(name, value);
3506        
3507      }
3508
3509      @Override
3510      public Base makeProperty(int hash, String name) throws FHIRException {
3511        switch (hash) {
3512        case -925155509:  return addReference(); 
3513        case 3506294:  return getRole();
3514        default: return super.makeProperty(hash, name);
3515        }
3516
3517      }
3518
3519      @Override
3520      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
3521        switch (hash) {
3522        case -925155509: /*reference*/ return new String[] {"Reference"};
3523        case 3506294: /*role*/ return new String[] {"CodeableConcept"};
3524        default: return super.getTypesForProperty(hash, name);
3525        }
3526
3527      }
3528
3529      @Override
3530      public Base addChild(String name) throws FHIRException {
3531        if (name.equals("reference")) {
3532          return addReference();
3533        }
3534        else if (name.equals("role")) {
3535          this.role = new CodeableConcept();
3536          return this.role;
3537        }
3538        else
3539          return super.addChild(name);
3540      }
3541
3542      public ContractPartyComponent copy() {
3543        ContractPartyComponent dst = new ContractPartyComponent();
3544        copyValues(dst);
3545        return dst;
3546      }
3547
3548      public void copyValues(ContractPartyComponent dst) {
3549        super.copyValues(dst);
3550        if (reference != null) {
3551          dst.reference = new ArrayList<Reference>();
3552          for (Reference i : reference)
3553            dst.reference.add(i.copy());
3554        };
3555        dst.role = role == null ? null : role.copy();
3556      }
3557
3558      @Override
3559      public boolean equalsDeep(Base other_) {
3560        if (!super.equalsDeep(other_))
3561          return false;
3562        if (!(other_ instanceof ContractPartyComponent))
3563          return false;
3564        ContractPartyComponent o = (ContractPartyComponent) other_;
3565        return compareDeep(reference, o.reference, true) && compareDeep(role, o.role, true);
3566      }
3567
3568      @Override
3569      public boolean equalsShallow(Base other_) {
3570        if (!super.equalsShallow(other_))
3571          return false;
3572        if (!(other_ instanceof ContractPartyComponent))
3573          return false;
3574        ContractPartyComponent o = (ContractPartyComponent) other_;
3575        return true;
3576      }
3577
3578      public boolean isEmpty() {
3579        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(reference, role);
3580      }
3581
3582  public String fhirType() {
3583    return "Contract.term.offer.party";
3584
3585  }
3586
3587  }
3588
3589    @Block()
3590    public static class AnswerComponent extends BackboneElement implements IBaseBackboneElement {
3591        /**
3592         * Response to an offer clause or question text,  which enables selection of values to be agreed to, e.g., the period of participation, the date of occupancy of a rental, warranty duration, or whether biospecimen may be used for further research.
3593         */
3594        @Child(name = "value", type = {BooleanType.class, DecimalType.class, IntegerType.class, DateType.class, DateTimeType.class, TimeType.class, StringType.class, UriType.class, Attachment.class, Coding.class, Quantity.class, Reference.class}, order=1, min=1, max=1, modifier=false, summary=false)
3595        @Description(shortDefinition="The actual answer response", formalDefinition="Response to an offer clause or question text,  which enables selection of values to be agreed to, e.g., the period of participation, the date of occupancy of a rental, warranty duration, or whether biospecimen may be used for further research." )
3596        protected DataType value;
3597
3598        private static final long serialVersionUID = -1135414639L;
3599
3600    /**
3601     * Constructor
3602     */
3603      public AnswerComponent() {
3604        super();
3605      }
3606
3607    /**
3608     * Constructor
3609     */
3610      public AnswerComponent(DataType value) {
3611        super();
3612        this.setValue(value);
3613      }
3614
3615        /**
3616         * @return {@link #value} (Response to an offer clause or question text,  which enables selection of values to be agreed to, e.g., the period of participation, the date of occupancy of a rental, warranty duration, or whether biospecimen may be used for further research.)
3617         */
3618        public DataType getValue() { 
3619          return this.value;
3620        }
3621
3622        /**
3623         * @return {@link #value} (Response to an offer clause or question text,  which enables selection of values to be agreed to, e.g., the period of participation, the date of occupancy of a rental, warranty duration, or whether biospecimen may be used for further research.)
3624         */
3625        public BooleanType getValueBooleanType() throws FHIRException { 
3626          if (this.value == null)
3627            this.value = new BooleanType();
3628          if (!(this.value instanceof BooleanType))
3629            throw new FHIRException("Type mismatch: the type BooleanType was expected, but "+this.value.getClass().getName()+" was encountered");
3630          return (BooleanType) this.value;
3631        }
3632
3633        public boolean hasValueBooleanType() { 
3634          return this != null && this.value instanceof BooleanType;
3635        }
3636
3637        /**
3638         * @return {@link #value} (Response to an offer clause or question text,  which enables selection of values to be agreed to, e.g., the period of participation, the date of occupancy of a rental, warranty duration, or whether biospecimen may be used for further research.)
3639         */
3640        public DecimalType getValueDecimalType() throws FHIRException { 
3641          if (this.value == null)
3642            this.value = new DecimalType();
3643          if (!(this.value instanceof DecimalType))
3644            throw new FHIRException("Type mismatch: the type DecimalType was expected, but "+this.value.getClass().getName()+" was encountered");
3645          return (DecimalType) this.value;
3646        }
3647
3648        public boolean hasValueDecimalType() { 
3649          return this != null && this.value instanceof DecimalType;
3650        }
3651
3652        /**
3653         * @return {@link #value} (Response to an offer clause or question text,  which enables selection of values to be agreed to, e.g., the period of participation, the date of occupancy of a rental, warranty duration, or whether biospecimen may be used for further research.)
3654         */
3655        public IntegerType getValueIntegerType() throws FHIRException { 
3656          if (this.value == null)
3657            this.value = new IntegerType();
3658          if (!(this.value instanceof IntegerType))
3659            throw new FHIRException("Type mismatch: the type IntegerType was expected, but "+this.value.getClass().getName()+" was encountered");
3660          return (IntegerType) this.value;
3661        }
3662
3663        public boolean hasValueIntegerType() { 
3664          return this != null && this.value instanceof IntegerType;
3665        }
3666
3667        /**
3668         * @return {@link #value} (Response to an offer clause or question text,  which enables selection of values to be agreed to, e.g., the period of participation, the date of occupancy of a rental, warranty duration, or whether biospecimen may be used for further research.)
3669         */
3670        public DateType getValueDateType() throws FHIRException { 
3671          if (this.value == null)
3672            this.value = new DateType();
3673          if (!(this.value instanceof DateType))
3674            throw new FHIRException("Type mismatch: the type DateType was expected, but "+this.value.getClass().getName()+" was encountered");
3675          return (DateType) this.value;
3676        }
3677
3678        public boolean hasValueDateType() { 
3679          return this != null && this.value instanceof DateType;
3680        }
3681
3682        /**
3683         * @return {@link #value} (Response to an offer clause or question text,  which enables selection of values to be agreed to, e.g., the period of participation, the date of occupancy of a rental, warranty duration, or whether biospecimen may be used for further research.)
3684         */
3685        public DateTimeType getValueDateTimeType() throws FHIRException { 
3686          if (this.value == null)
3687            this.value = new DateTimeType();
3688          if (!(this.value instanceof DateTimeType))
3689            throw new FHIRException("Type mismatch: the type DateTimeType was expected, but "+this.value.getClass().getName()+" was encountered");
3690          return (DateTimeType) this.value;
3691        }
3692
3693        public boolean hasValueDateTimeType() { 
3694          return this != null && this.value instanceof DateTimeType;
3695        }
3696
3697        /**
3698         * @return {@link #value} (Response to an offer clause or question text,  which enables selection of values to be agreed to, e.g., the period of participation, the date of occupancy of a rental, warranty duration, or whether biospecimen may be used for further research.)
3699         */
3700        public TimeType getValueTimeType() throws FHIRException { 
3701          if (this.value == null)
3702            this.value = new TimeType();
3703          if (!(this.value instanceof TimeType))
3704            throw new FHIRException("Type mismatch: the type TimeType was expected, but "+this.value.getClass().getName()+" was encountered");
3705          return (TimeType) this.value;
3706        }
3707
3708        public boolean hasValueTimeType() { 
3709          return this != null && this.value instanceof TimeType;
3710        }
3711
3712        /**
3713         * @return {@link #value} (Response to an offer clause or question text,  which enables selection of values to be agreed to, e.g., the period of participation, the date of occupancy of a rental, warranty duration, or whether biospecimen may be used for further research.)
3714         */
3715        public StringType getValueStringType() throws FHIRException { 
3716          if (this.value == null)
3717            this.value = new StringType();
3718          if (!(this.value instanceof StringType))
3719            throw new FHIRException("Type mismatch: the type StringType was expected, but "+this.value.getClass().getName()+" was encountered");
3720          return (StringType) this.value;
3721        }
3722
3723        public boolean hasValueStringType() { 
3724          return this != null && this.value instanceof StringType;
3725        }
3726
3727        /**
3728         * @return {@link #value} (Response to an offer clause or question text,  which enables selection of values to be agreed to, e.g., the period of participation, the date of occupancy of a rental, warranty duration, or whether biospecimen may be used for further research.)
3729         */
3730        public UriType getValueUriType() throws FHIRException { 
3731          if (this.value == null)
3732            this.value = new UriType();
3733          if (!(this.value instanceof UriType))
3734            throw new FHIRException("Type mismatch: the type UriType was expected, but "+this.value.getClass().getName()+" was encountered");
3735          return (UriType) this.value;
3736        }
3737
3738        public boolean hasValueUriType() { 
3739          return this != null && this.value instanceof UriType;
3740        }
3741
3742        /**
3743         * @return {@link #value} (Response to an offer clause or question text,  which enables selection of values to be agreed to, e.g., the period of participation, the date of occupancy of a rental, warranty duration, or whether biospecimen may be used for further research.)
3744         */
3745        public Attachment getValueAttachment() throws FHIRException { 
3746          if (this.value == null)
3747            this.value = new Attachment();
3748          if (!(this.value instanceof Attachment))
3749            throw new FHIRException("Type mismatch: the type Attachment was expected, but "+this.value.getClass().getName()+" was encountered");
3750          return (Attachment) this.value;
3751        }
3752
3753        public boolean hasValueAttachment() { 
3754          return this != null && this.value instanceof Attachment;
3755        }
3756
3757        /**
3758         * @return {@link #value} (Response to an offer clause or question text,  which enables selection of values to be agreed to, e.g., the period of participation, the date of occupancy of a rental, warranty duration, or whether biospecimen may be used for further research.)
3759         */
3760        public Coding getValueCoding() throws FHIRException { 
3761          if (this.value == null)
3762            this.value = new Coding();
3763          if (!(this.value instanceof Coding))
3764            throw new FHIRException("Type mismatch: the type Coding was expected, but "+this.value.getClass().getName()+" was encountered");
3765          return (Coding) this.value;
3766        }
3767
3768        public boolean hasValueCoding() { 
3769          return this != null && this.value instanceof Coding;
3770        }
3771
3772        /**
3773         * @return {@link #value} (Response to an offer clause or question text,  which enables selection of values to be agreed to, e.g., the period of participation, the date of occupancy of a rental, warranty duration, or whether biospecimen may be used for further research.)
3774         */
3775        public Quantity getValueQuantity() throws FHIRException { 
3776          if (this.value == null)
3777            this.value = new Quantity();
3778          if (!(this.value instanceof Quantity))
3779            throw new FHIRException("Type mismatch: the type Quantity was expected, but "+this.value.getClass().getName()+" was encountered");
3780          return (Quantity) this.value;
3781        }
3782
3783        public boolean hasValueQuantity() { 
3784          return this != null && this.value instanceof Quantity;
3785        }
3786
3787        /**
3788         * @return {@link #value} (Response to an offer clause or question text,  which enables selection of values to be agreed to, e.g., the period of participation, the date of occupancy of a rental, warranty duration, or whether biospecimen may be used for further research.)
3789         */
3790        public Reference getValueReference() throws FHIRException { 
3791          if (this.value == null)
3792            this.value = new Reference();
3793          if (!(this.value instanceof Reference))
3794            throw new FHIRException("Type mismatch: the type Reference was expected, but "+this.value.getClass().getName()+" was encountered");
3795          return (Reference) this.value;
3796        }
3797
3798        public boolean hasValueReference() { 
3799          return this != null && this.value instanceof Reference;
3800        }
3801
3802        public boolean hasValue() { 
3803          return this.value != null && !this.value.isEmpty();
3804        }
3805
3806        /**
3807         * @param value {@link #value} (Response to an offer clause or question text,  which enables selection of values to be agreed to, e.g., the period of participation, the date of occupancy of a rental, warranty duration, or whether biospecimen may be used for further research.)
3808         */
3809        public AnswerComponent setValue(DataType value) { 
3810          if (value != null && !(value instanceof BooleanType || value instanceof DecimalType || value instanceof IntegerType || value instanceof DateType || value instanceof DateTimeType || value instanceof TimeType || value instanceof StringType || value instanceof UriType || value instanceof Attachment || value instanceof Coding || value instanceof Quantity || value instanceof Reference))
3811            throw new FHIRException("Not the right type for Contract.term.offer.answer.value[x]: "+value.fhirType());
3812          this.value = value;
3813          return this;
3814        }
3815
3816        protected void listChildren(List<Property> children) {
3817          super.listChildren(children);
3818          children.add(new Property("value[x]", "boolean|decimal|integer|date|dateTime|time|string|uri|Attachment|Coding|Quantity|Reference(Any)", "Response to an offer clause or question text,  which enables selection of values to be agreed to, e.g., the period of participation, the date of occupancy of a rental, warranty duration, or whether biospecimen may be used for further research.", 0, 1, value));
3819        }
3820
3821        @Override
3822        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
3823          switch (_hash) {
3824          case -1410166417: /*value[x]*/  return new Property("value[x]", "boolean|decimal|integer|date|dateTime|time|string|uri|Attachment|Coding|Quantity|Reference(Any)", "Response to an offer clause or question text,  which enables selection of values to be agreed to, e.g., the period of participation, the date of occupancy of a rental, warranty duration, or whether biospecimen may be used for further research.", 0, 1, value);
3825          case 111972721: /*value*/  return new Property("value[x]", "boolean|decimal|integer|date|dateTime|time|string|uri|Attachment|Coding|Quantity|Reference(Any)", "Response to an offer clause or question text,  which enables selection of values to be agreed to, e.g., the period of participation, the date of occupancy of a rental, warranty duration, or whether biospecimen may be used for further research.", 0, 1, value);
3826          case 733421943: /*valueBoolean*/  return new Property("value[x]", "boolean", "Response to an offer clause or question text,  which enables selection of values to be agreed to, e.g., the period of participation, the date of occupancy of a rental, warranty duration, or whether biospecimen may be used for further research.", 0, 1, value);
3827          case -2083993440: /*valueDecimal*/  return new Property("value[x]", "decimal", "Response to an offer clause or question text,  which enables selection of values to be agreed to, e.g., the period of participation, the date of occupancy of a rental, warranty duration, or whether biospecimen may be used for further research.", 0, 1, value);
3828          case -1668204915: /*valueInteger*/  return new Property("value[x]", "integer", "Response to an offer clause or question text,  which enables selection of values to be agreed to, e.g., the period of participation, the date of occupancy of a rental, warranty duration, or whether biospecimen may be used for further research.", 0, 1, value);
3829          case -766192449: /*valueDate*/  return new Property("value[x]", "date", "Response to an offer clause or question text,  which enables selection of values to be agreed to, e.g., the period of participation, the date of occupancy of a rental, warranty duration, or whether biospecimen may be used for further research.", 0, 1, value);
3830          case 1047929900: /*valueDateTime*/  return new Property("value[x]", "dateTime", "Response to an offer clause or question text,  which enables selection of values to be agreed to, e.g., the period of participation, the date of occupancy of a rental, warranty duration, or whether biospecimen may be used for further research.", 0, 1, value);
3831          case -765708322: /*valueTime*/  return new Property("value[x]", "time", "Response to an offer clause or question text,  which enables selection of values to be agreed to, e.g., the period of participation, the date of occupancy of a rental, warranty duration, or whether biospecimen may be used for further research.", 0, 1, value);
3832          case -1424603934: /*valueString*/  return new Property("value[x]", "string", "Response to an offer clause or question text,  which enables selection of values to be agreed to, e.g., the period of participation, the date of occupancy of a rental, warranty duration, or whether biospecimen may be used for further research.", 0, 1, value);
3833          case -1410172357: /*valueUri*/  return new Property("value[x]", "uri", "Response to an offer clause or question text,  which enables selection of values to be agreed to, e.g., the period of participation, the date of occupancy of a rental, warranty duration, or whether biospecimen may be used for further research.", 0, 1, value);
3834          case -475566732: /*valueAttachment*/  return new Property("value[x]", "Attachment", "Response to an offer clause or question text,  which enables selection of values to be agreed to, e.g., the period of participation, the date of occupancy of a rental, warranty duration, or whether biospecimen may be used for further research.", 0, 1, value);
3835          case -1887705029: /*valueCoding*/  return new Property("value[x]", "Coding", "Response to an offer clause or question text,  which enables selection of values to be agreed to, e.g., the period of participation, the date of occupancy of a rental, warranty duration, or whether biospecimen may be used for further research.", 0, 1, value);
3836          case -2029823716: /*valueQuantity*/  return new Property("value[x]", "Quantity", "Response to an offer clause or question text,  which enables selection of values to be agreed to, e.g., the period of participation, the date of occupancy of a rental, warranty duration, or whether biospecimen may be used for further research.", 0, 1, value);
3837          case 1755241690: /*valueReference*/  return new Property("value[x]", "Reference(Any)", "Response to an offer clause or question text,  which enables selection of values to be agreed to, e.g., the period of participation, the date of occupancy of a rental, warranty duration, or whether biospecimen may be used for further research.", 0, 1, value);
3838          default: return super.getNamedProperty(_hash, _name, _checkValid);
3839          }
3840
3841        }
3842
3843      @Override
3844      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
3845        switch (hash) {
3846        case 111972721: /*value*/ return this.value == null ? new Base[0] : new Base[] {this.value}; // DataType
3847        default: return super.getProperty(hash, name, checkValid);
3848        }
3849
3850      }
3851
3852      @Override
3853      public Base setProperty(int hash, String name, Base value) throws FHIRException {
3854        switch (hash) {
3855        case 111972721: // value
3856          this.value = TypeConvertor.castToType(value); // DataType
3857          return value;
3858        default: return super.setProperty(hash, name, value);
3859        }
3860
3861      }
3862
3863      @Override
3864      public Base setProperty(String name, Base value) throws FHIRException {
3865        if (name.equals("value[x]")) {
3866          this.value = TypeConvertor.castToType(value); // DataType
3867        } else
3868          return super.setProperty(name, value);
3869        return value;
3870      }
3871
3872  @Override
3873  public void removeChild(String name, Base value) throws FHIRException {
3874        if (name.equals("value[x]")) {
3875          this.value = null;
3876        } else
3877          super.removeChild(name, value);
3878        
3879      }
3880
3881      @Override
3882      public Base makeProperty(int hash, String name) throws FHIRException {
3883        switch (hash) {
3884        case -1410166417:  return getValue();
3885        case 111972721:  return getValue();
3886        default: return super.makeProperty(hash, name);
3887        }
3888
3889      }
3890
3891      @Override
3892      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
3893        switch (hash) {
3894        case 111972721: /*value*/ return new String[] {"boolean", "decimal", "integer", "date", "dateTime", "time", "string", "uri", "Attachment", "Coding", "Quantity", "Reference"};
3895        default: return super.getTypesForProperty(hash, name);
3896        }
3897
3898      }
3899
3900      @Override
3901      public Base addChild(String name) throws FHIRException {
3902        if (name.equals("valueBoolean")) {
3903          this.value = new BooleanType();
3904          return this.value;
3905        }
3906        else if (name.equals("valueDecimal")) {
3907          this.value = new DecimalType();
3908          return this.value;
3909        }
3910        else if (name.equals("valueInteger")) {
3911          this.value = new IntegerType();
3912          return this.value;
3913        }
3914        else if (name.equals("valueDate")) {
3915          this.value = new DateType();
3916          return this.value;
3917        }
3918        else if (name.equals("valueDateTime")) {
3919          this.value = new DateTimeType();
3920          return this.value;
3921        }
3922        else if (name.equals("valueTime")) {
3923          this.value = new TimeType();
3924          return this.value;
3925        }
3926        else if (name.equals("valueString")) {
3927          this.value = new StringType();
3928          return this.value;
3929        }
3930        else if (name.equals("valueUri")) {
3931          this.value = new UriType();
3932          return this.value;
3933        }
3934        else if (name.equals("valueAttachment")) {
3935          this.value = new Attachment();
3936          return this.value;
3937        }
3938        else if (name.equals("valueCoding")) {
3939          this.value = new Coding();
3940          return this.value;
3941        }
3942        else if (name.equals("valueQuantity")) {
3943          this.value = new Quantity();
3944          return this.value;
3945        }
3946        else if (name.equals("valueReference")) {
3947          this.value = new Reference();
3948          return this.value;
3949        }
3950        else
3951          return super.addChild(name);
3952      }
3953
3954      public AnswerComponent copy() {
3955        AnswerComponent dst = new AnswerComponent();
3956        copyValues(dst);
3957        return dst;
3958      }
3959
3960      public void copyValues(AnswerComponent dst) {
3961        super.copyValues(dst);
3962        dst.value = value == null ? null : value.copy();
3963      }
3964
3965      @Override
3966      public boolean equalsDeep(Base other_) {
3967        if (!super.equalsDeep(other_))
3968          return false;
3969        if (!(other_ instanceof AnswerComponent))
3970          return false;
3971        AnswerComponent o = (AnswerComponent) other_;
3972        return compareDeep(value, o.value, true);
3973      }
3974
3975      @Override
3976      public boolean equalsShallow(Base other_) {
3977        if (!super.equalsShallow(other_))
3978          return false;
3979        if (!(other_ instanceof AnswerComponent))
3980          return false;
3981        AnswerComponent o = (AnswerComponent) other_;
3982        return true;
3983      }
3984
3985      public boolean isEmpty() {
3986        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(value);
3987      }
3988
3989  public String fhirType() {
3990    return "Contract.term.offer.answer";
3991
3992  }
3993
3994  }
3995
3996    @Block()
3997    public static class ContractAssetComponent extends BackboneElement implements IBaseBackboneElement {
3998        /**
3999         * Differentiates the kind of the asset .
4000         */
4001        @Child(name = "scope", type = {CodeableConcept.class}, order=1, min=0, max=1, modifier=false, summary=false)
4002        @Description(shortDefinition="Range of asset", formalDefinition="Differentiates the kind of the asset ." )
4003        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/contract-assetscope")
4004        protected CodeableConcept scope;
4005
4006        /**
4007         * Target entity type about which the term may be concerned.
4008         */
4009        @Child(name = "type", type = {CodeableConcept.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
4010        @Description(shortDefinition="Asset category", formalDefinition="Target entity type about which the term may be concerned." )
4011        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/contract-assettype")
4012        protected List<CodeableConcept> type;
4013
4014        /**
4015         * Associated entities.
4016         */
4017        @Child(name = "typeReference", type = {Reference.class}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
4018        @Description(shortDefinition="Associated entities", formalDefinition="Associated entities." )
4019        protected List<Reference> typeReference;
4020
4021        /**
4022         * May be a subtype or part of an offered asset.
4023         */
4024        @Child(name = "subtype", type = {CodeableConcept.class}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
4025        @Description(shortDefinition="Asset sub-category", formalDefinition="May be a subtype or part of an offered asset." )
4026        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/contract-assetsubtype")
4027        protected List<CodeableConcept> subtype;
4028
4029        /**
4030         * Specifies the applicability of the term to an asset resource instance, and instances it refers to orinstances that refer to it, and/or are owned by the offeree.
4031         */
4032        @Child(name = "relationship", type = {Coding.class}, order=5, min=0, max=1, modifier=false, summary=false)
4033        @Description(shortDefinition="Kinship of the asset", formalDefinition="Specifies the applicability of the term to an asset resource instance, and instances it refers to orinstances that refer to it, and/or are owned by the offeree." )
4034        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/consent-content-class")
4035        protected Coding relationship;
4036
4037        /**
4038         * Circumstance of the asset.
4039         */
4040        @Child(name = "context", type = {}, order=6, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
4041        @Description(shortDefinition="Circumstance of the asset", formalDefinition="Circumstance of the asset." )
4042        protected List<AssetContextComponent> context;
4043
4044        /**
4045         * Description of the quality and completeness of the asset that may be a factor in its valuation.
4046         */
4047        @Child(name = "condition", type = {StringType.class}, order=7, min=0, max=1, modifier=false, summary=false)
4048        @Description(shortDefinition="Quality desctiption of asset", formalDefinition="Description of the quality and completeness of the asset that may be a factor in its valuation." )
4049        protected StringType condition;
4050
4051        /**
4052         * Type of Asset availability for use or ownership.
4053         */
4054        @Child(name = "periodType", type = {CodeableConcept.class}, order=8, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
4055        @Description(shortDefinition="Asset availability types", formalDefinition="Type of Asset availability for use or ownership." )
4056        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/asset-availability")
4057        protected List<CodeableConcept> periodType;
4058
4059        /**
4060         * Asset relevant contractual time period.
4061         */
4062        @Child(name = "period", type = {Period.class}, order=9, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
4063        @Description(shortDefinition="Time period of the asset", formalDefinition="Asset relevant contractual time period." )
4064        protected List<Period> period;
4065
4066        /**
4067         * Time period of asset use.
4068         */
4069        @Child(name = "usePeriod", type = {Period.class}, order=10, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
4070        @Description(shortDefinition="Time period", formalDefinition="Time period of asset use." )
4071        protected List<Period> usePeriod;
4072
4073        /**
4074         * Clause or question text (Prose Object) concerning the asset in a linked form, such as a QuestionnaireResponse used in the formation of the contract.
4075         */
4076        @Child(name = "text", type = {StringType.class}, order=11, min=0, max=1, modifier=false, summary=false)
4077        @Description(shortDefinition="Asset clause or question text", formalDefinition="Clause or question text (Prose Object) concerning the asset in a linked form, such as a QuestionnaireResponse used in the formation of the contract." )
4078        protected StringType text;
4079
4080        /**
4081         * Id [identifier??] of the clause or question text about the asset in the referenced form or QuestionnaireResponse.
4082         */
4083        @Child(name = "linkId", type = {StringType.class}, order=12, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
4084        @Description(shortDefinition="Pointer to asset text", formalDefinition="Id [identifier??] of the clause or question text about the asset in the referenced form or QuestionnaireResponse." )
4085        protected List<StringType> linkId;
4086
4087        /**
4088         * Response to assets.
4089         */
4090        @Child(name = "answer", type = {AnswerComponent.class}, order=13, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
4091        @Description(shortDefinition="Response to assets", formalDefinition="Response to assets." )
4092        protected List<AnswerComponent> answer;
4093
4094        /**
4095         * Security labels that protects the asset.
4096         */
4097        @Child(name = "securityLabelNumber", type = {UnsignedIntType.class}, order=14, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
4098        @Description(shortDefinition="Asset restriction numbers", formalDefinition="Security labels that protects the asset." )
4099        protected List<UnsignedIntType> securityLabelNumber;
4100
4101        /**
4102         * Contract Valued Item List.
4103         */
4104        @Child(name = "valuedItem", type = {}, order=15, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
4105        @Description(shortDefinition="Contract Valued Item List", formalDefinition="Contract Valued Item List." )
4106        protected List<ValuedItemComponent> valuedItem;
4107
4108        private static final long serialVersionUID = -581986730L;
4109
4110    /**
4111     * Constructor
4112     */
4113      public ContractAssetComponent() {
4114        super();
4115      }
4116
4117        /**
4118         * @return {@link #scope} (Differentiates the kind of the asset .)
4119         */
4120        public CodeableConcept getScope() { 
4121          if (this.scope == null)
4122            if (Configuration.errorOnAutoCreate())
4123              throw new Error("Attempt to auto-create ContractAssetComponent.scope");
4124            else if (Configuration.doAutoCreate())
4125              this.scope = new CodeableConcept(); // cc
4126          return this.scope;
4127        }
4128
4129        public boolean hasScope() { 
4130          return this.scope != null && !this.scope.isEmpty();
4131        }
4132
4133        /**
4134         * @param value {@link #scope} (Differentiates the kind of the asset .)
4135         */
4136        public ContractAssetComponent setScope(CodeableConcept value) { 
4137          this.scope = value;
4138          return this;
4139        }
4140
4141        /**
4142         * @return {@link #type} (Target entity type about which the term may be concerned.)
4143         */
4144        public List<CodeableConcept> getType() { 
4145          if (this.type == null)
4146            this.type = new ArrayList<CodeableConcept>();
4147          return this.type;
4148        }
4149
4150        /**
4151         * @return Returns a reference to <code>this</code> for easy method chaining
4152         */
4153        public ContractAssetComponent setType(List<CodeableConcept> theType) { 
4154          this.type = theType;
4155          return this;
4156        }
4157
4158        public boolean hasType() { 
4159          if (this.type == null)
4160            return false;
4161          for (CodeableConcept item : this.type)
4162            if (!item.isEmpty())
4163              return true;
4164          return false;
4165        }
4166
4167        public CodeableConcept addType() { //3
4168          CodeableConcept t = new CodeableConcept();
4169          if (this.type == null)
4170            this.type = new ArrayList<CodeableConcept>();
4171          this.type.add(t);
4172          return t;
4173        }
4174
4175        public ContractAssetComponent addType(CodeableConcept t) { //3
4176          if (t == null)
4177            return this;
4178          if (this.type == null)
4179            this.type = new ArrayList<CodeableConcept>();
4180          this.type.add(t);
4181          return this;
4182        }
4183
4184        /**
4185         * @return The first repetition of repeating field {@link #type}, creating it if it does not already exist {3}
4186         */
4187        public CodeableConcept getTypeFirstRep() { 
4188          if (getType().isEmpty()) {
4189            addType();
4190          }
4191          return getType().get(0);
4192        }
4193
4194        /**
4195         * @return {@link #typeReference} (Associated entities.)
4196         */
4197        public List<Reference> getTypeReference() { 
4198          if (this.typeReference == null)
4199            this.typeReference = new ArrayList<Reference>();
4200          return this.typeReference;
4201        }
4202
4203        /**
4204         * @return Returns a reference to <code>this</code> for easy method chaining
4205         */
4206        public ContractAssetComponent setTypeReference(List<Reference> theTypeReference) { 
4207          this.typeReference = theTypeReference;
4208          return this;
4209        }
4210
4211        public boolean hasTypeReference() { 
4212          if (this.typeReference == null)
4213            return false;
4214          for (Reference item : this.typeReference)
4215            if (!item.isEmpty())
4216              return true;
4217          return false;
4218        }
4219
4220        public Reference addTypeReference() { //3
4221          Reference t = new Reference();
4222          if (this.typeReference == null)
4223            this.typeReference = new ArrayList<Reference>();
4224          this.typeReference.add(t);
4225          return t;
4226        }
4227
4228        public ContractAssetComponent addTypeReference(Reference t) { //3
4229          if (t == null)
4230            return this;
4231          if (this.typeReference == null)
4232            this.typeReference = new ArrayList<Reference>();
4233          this.typeReference.add(t);
4234          return this;
4235        }
4236
4237        /**
4238         * @return The first repetition of repeating field {@link #typeReference}, creating it if it does not already exist {3}
4239         */
4240        public Reference getTypeReferenceFirstRep() { 
4241          if (getTypeReference().isEmpty()) {
4242            addTypeReference();
4243          }
4244          return getTypeReference().get(0);
4245        }
4246
4247        /**
4248         * @return {@link #subtype} (May be a subtype or part of an offered asset.)
4249         */
4250        public List<CodeableConcept> getSubtype() { 
4251          if (this.subtype == null)
4252            this.subtype = new ArrayList<CodeableConcept>();
4253          return this.subtype;
4254        }
4255
4256        /**
4257         * @return Returns a reference to <code>this</code> for easy method chaining
4258         */
4259        public ContractAssetComponent setSubtype(List<CodeableConcept> theSubtype) { 
4260          this.subtype = theSubtype;
4261          return this;
4262        }
4263
4264        public boolean hasSubtype() { 
4265          if (this.subtype == null)
4266            return false;
4267          for (CodeableConcept item : this.subtype)
4268            if (!item.isEmpty())
4269              return true;
4270          return false;
4271        }
4272
4273        public CodeableConcept addSubtype() { //3
4274          CodeableConcept t = new CodeableConcept();
4275          if (this.subtype == null)
4276            this.subtype = new ArrayList<CodeableConcept>();
4277          this.subtype.add(t);
4278          return t;
4279        }
4280
4281        public ContractAssetComponent addSubtype(CodeableConcept t) { //3
4282          if (t == null)
4283            return this;
4284          if (this.subtype == null)
4285            this.subtype = new ArrayList<CodeableConcept>();
4286          this.subtype.add(t);
4287          return this;
4288        }
4289
4290        /**
4291         * @return The first repetition of repeating field {@link #subtype}, creating it if it does not already exist {3}
4292         */
4293        public CodeableConcept getSubtypeFirstRep() { 
4294          if (getSubtype().isEmpty()) {
4295            addSubtype();
4296          }
4297          return getSubtype().get(0);
4298        }
4299
4300        /**
4301         * @return {@link #relationship} (Specifies the applicability of the term to an asset resource instance, and instances it refers to orinstances that refer to it, and/or are owned by the offeree.)
4302         */
4303        public Coding getRelationship() { 
4304          if (this.relationship == null)
4305            if (Configuration.errorOnAutoCreate())
4306              throw new Error("Attempt to auto-create ContractAssetComponent.relationship");
4307            else if (Configuration.doAutoCreate())
4308              this.relationship = new Coding(); // cc
4309          return this.relationship;
4310        }
4311
4312        public boolean hasRelationship() { 
4313          return this.relationship != null && !this.relationship.isEmpty();
4314        }
4315
4316        /**
4317         * @param value {@link #relationship} (Specifies the applicability of the term to an asset resource instance, and instances it refers to orinstances that refer to it, and/or are owned by the offeree.)
4318         */
4319        public ContractAssetComponent setRelationship(Coding value) { 
4320          this.relationship = value;
4321          return this;
4322        }
4323
4324        /**
4325         * @return {@link #context} (Circumstance of the asset.)
4326         */
4327        public List<AssetContextComponent> getContext() { 
4328          if (this.context == null)
4329            this.context = new ArrayList<AssetContextComponent>();
4330          return this.context;
4331        }
4332
4333        /**
4334         * @return Returns a reference to <code>this</code> for easy method chaining
4335         */
4336        public ContractAssetComponent setContext(List<AssetContextComponent> theContext) { 
4337          this.context = theContext;
4338          return this;
4339        }
4340
4341        public boolean hasContext() { 
4342          if (this.context == null)
4343            return false;
4344          for (AssetContextComponent item : this.context)
4345            if (!item.isEmpty())
4346              return true;
4347          return false;
4348        }
4349
4350        public AssetContextComponent addContext() { //3
4351          AssetContextComponent t = new AssetContextComponent();
4352          if (this.context == null)
4353            this.context = new ArrayList<AssetContextComponent>();
4354          this.context.add(t);
4355          return t;
4356        }
4357
4358        public ContractAssetComponent addContext(AssetContextComponent t) { //3
4359          if (t == null)
4360            return this;
4361          if (this.context == null)
4362            this.context = new ArrayList<AssetContextComponent>();
4363          this.context.add(t);
4364          return this;
4365        }
4366
4367        /**
4368         * @return The first repetition of repeating field {@link #context}, creating it if it does not already exist {3}
4369         */
4370        public AssetContextComponent getContextFirstRep() { 
4371          if (getContext().isEmpty()) {
4372            addContext();
4373          }
4374          return getContext().get(0);
4375        }
4376
4377        /**
4378         * @return {@link #condition} (Description of the quality and completeness of the asset that may be a factor in its valuation.). This is the underlying object with id, value and extensions. The accessor "getCondition" gives direct access to the value
4379         */
4380        public StringType getConditionElement() { 
4381          if (this.condition == null)
4382            if (Configuration.errorOnAutoCreate())
4383              throw new Error("Attempt to auto-create ContractAssetComponent.condition");
4384            else if (Configuration.doAutoCreate())
4385              this.condition = new StringType(); // bb
4386          return this.condition;
4387        }
4388
4389        public boolean hasConditionElement() { 
4390          return this.condition != null && !this.condition.isEmpty();
4391        }
4392
4393        public boolean hasCondition() { 
4394          return this.condition != null && !this.condition.isEmpty();
4395        }
4396
4397        /**
4398         * @param value {@link #condition} (Description of the quality and completeness of the asset that may be a factor in its valuation.). This is the underlying object with id, value and extensions. The accessor "getCondition" gives direct access to the value
4399         */
4400        public ContractAssetComponent setConditionElement(StringType value) { 
4401          this.condition = value;
4402          return this;
4403        }
4404
4405        /**
4406         * @return Description of the quality and completeness of the asset that may be a factor in its valuation.
4407         */
4408        public String getCondition() { 
4409          return this.condition == null ? null : this.condition.getValue();
4410        }
4411
4412        /**
4413         * @param value Description of the quality and completeness of the asset that may be a factor in its valuation.
4414         */
4415        public ContractAssetComponent setCondition(String value) { 
4416          if (Utilities.noString(value))
4417            this.condition = null;
4418          else {
4419            if (this.condition == null)
4420              this.condition = new StringType();
4421            this.condition.setValue(value);
4422          }
4423          return this;
4424        }
4425
4426        /**
4427         * @return {@link #periodType} (Type of Asset availability for use or ownership.)
4428         */
4429        public List<CodeableConcept> getPeriodType() { 
4430          if (this.periodType == null)
4431            this.periodType = new ArrayList<CodeableConcept>();
4432          return this.periodType;
4433        }
4434
4435        /**
4436         * @return Returns a reference to <code>this</code> for easy method chaining
4437         */
4438        public ContractAssetComponent setPeriodType(List<CodeableConcept> thePeriodType) { 
4439          this.periodType = thePeriodType;
4440          return this;
4441        }
4442
4443        public boolean hasPeriodType() { 
4444          if (this.periodType == null)
4445            return false;
4446          for (CodeableConcept item : this.periodType)
4447            if (!item.isEmpty())
4448              return true;
4449          return false;
4450        }
4451
4452        public CodeableConcept addPeriodType() { //3
4453          CodeableConcept t = new CodeableConcept();
4454          if (this.periodType == null)
4455            this.periodType = new ArrayList<CodeableConcept>();
4456          this.periodType.add(t);
4457          return t;
4458        }
4459
4460        public ContractAssetComponent addPeriodType(CodeableConcept t) { //3
4461          if (t == null)
4462            return this;
4463          if (this.periodType == null)
4464            this.periodType = new ArrayList<CodeableConcept>();
4465          this.periodType.add(t);
4466          return this;
4467        }
4468
4469        /**
4470         * @return The first repetition of repeating field {@link #periodType}, creating it if it does not already exist {3}
4471         */
4472        public CodeableConcept getPeriodTypeFirstRep() { 
4473          if (getPeriodType().isEmpty()) {
4474            addPeriodType();
4475          }
4476          return getPeriodType().get(0);
4477        }
4478
4479        /**
4480         * @return {@link #period} (Asset relevant contractual time period.)
4481         */
4482        public List<Period> getPeriod() { 
4483          if (this.period == null)
4484            this.period = new ArrayList<Period>();
4485          return this.period;
4486        }
4487
4488        /**
4489         * @return Returns a reference to <code>this</code> for easy method chaining
4490         */
4491        public ContractAssetComponent setPeriod(List<Period> thePeriod) { 
4492          this.period = thePeriod;
4493          return this;
4494        }
4495
4496        public boolean hasPeriod() { 
4497          if (this.period == null)
4498            return false;
4499          for (Period item : this.period)
4500            if (!item.isEmpty())
4501              return true;
4502          return false;
4503        }
4504
4505        public Period addPeriod() { //3
4506          Period t = new Period();
4507          if (this.period == null)
4508            this.period = new ArrayList<Period>();
4509          this.period.add(t);
4510          return t;
4511        }
4512
4513        public ContractAssetComponent addPeriod(Period t) { //3
4514          if (t == null)
4515            return this;
4516          if (this.period == null)
4517            this.period = new ArrayList<Period>();
4518          this.period.add(t);
4519          return this;
4520        }
4521
4522        /**
4523         * @return The first repetition of repeating field {@link #period}, creating it if it does not already exist {3}
4524         */
4525        public Period getPeriodFirstRep() { 
4526          if (getPeriod().isEmpty()) {
4527            addPeriod();
4528          }
4529          return getPeriod().get(0);
4530        }
4531
4532        /**
4533         * @return {@link #usePeriod} (Time period of asset use.)
4534         */
4535        public List<Period> getUsePeriod() { 
4536          if (this.usePeriod == null)
4537            this.usePeriod = new ArrayList<Period>();
4538          return this.usePeriod;
4539        }
4540
4541        /**
4542         * @return Returns a reference to <code>this</code> for easy method chaining
4543         */
4544        public ContractAssetComponent setUsePeriod(List<Period> theUsePeriod) { 
4545          this.usePeriod = theUsePeriod;
4546          return this;
4547        }
4548
4549        public boolean hasUsePeriod() { 
4550          if (this.usePeriod == null)
4551            return false;
4552          for (Period item : this.usePeriod)
4553            if (!item.isEmpty())
4554              return true;
4555          return false;
4556        }
4557
4558        public Period addUsePeriod() { //3
4559          Period t = new Period();
4560          if (this.usePeriod == null)
4561            this.usePeriod = new ArrayList<Period>();
4562          this.usePeriod.add(t);
4563          return t;
4564        }
4565
4566        public ContractAssetComponent addUsePeriod(Period t) { //3
4567          if (t == null)
4568            return this;
4569          if (this.usePeriod == null)
4570            this.usePeriod = new ArrayList<Period>();
4571          this.usePeriod.add(t);
4572          return this;
4573        }
4574
4575        /**
4576         * @return The first repetition of repeating field {@link #usePeriod}, creating it if it does not already exist {3}
4577         */
4578        public Period getUsePeriodFirstRep() { 
4579          if (getUsePeriod().isEmpty()) {
4580            addUsePeriod();
4581          }
4582          return getUsePeriod().get(0);
4583        }
4584
4585        /**
4586         * @return {@link #text} (Clause or question text (Prose Object) concerning the asset in a linked form, such as a QuestionnaireResponse used in the formation of the contract.). This is the underlying object with id, value and extensions. The accessor "getText" gives direct access to the value
4587         */
4588        public StringType getTextElement() { 
4589          if (this.text == null)
4590            if (Configuration.errorOnAutoCreate())
4591              throw new Error("Attempt to auto-create ContractAssetComponent.text");
4592            else if (Configuration.doAutoCreate())
4593              this.text = new StringType(); // bb
4594          return this.text;
4595        }
4596
4597        public boolean hasTextElement() { 
4598          return this.text != null && !this.text.isEmpty();
4599        }
4600
4601        public boolean hasText() { 
4602          return this.text != null && !this.text.isEmpty();
4603        }
4604
4605        /**
4606         * @param value {@link #text} (Clause or question text (Prose Object) concerning the asset in a linked form, such as a QuestionnaireResponse used in the formation of the contract.). This is the underlying object with id, value and extensions. The accessor "getText" gives direct access to the value
4607         */
4608        public ContractAssetComponent setTextElement(StringType value) { 
4609          this.text = value;
4610          return this;
4611        }
4612
4613        /**
4614         * @return Clause or question text (Prose Object) concerning the asset in a linked form, such as a QuestionnaireResponse used in the formation of the contract.
4615         */
4616        public String getText() { 
4617          return this.text == null ? null : this.text.getValue();
4618        }
4619
4620        /**
4621         * @param value Clause or question text (Prose Object) concerning the asset in a linked form, such as a QuestionnaireResponse used in the formation of the contract.
4622         */
4623        public ContractAssetComponent setText(String value) { 
4624          if (Utilities.noString(value))
4625            this.text = null;
4626          else {
4627            if (this.text == null)
4628              this.text = new StringType();
4629            this.text.setValue(value);
4630          }
4631          return this;
4632        }
4633
4634        /**
4635         * @return {@link #linkId} (Id [identifier??] of the clause or question text about the asset in the referenced form or QuestionnaireResponse.)
4636         */
4637        public List<StringType> getLinkId() { 
4638          if (this.linkId == null)
4639            this.linkId = new ArrayList<StringType>();
4640          return this.linkId;
4641        }
4642
4643        /**
4644         * @return Returns a reference to <code>this</code> for easy method chaining
4645         */
4646        public ContractAssetComponent setLinkId(List<StringType> theLinkId) { 
4647          this.linkId = theLinkId;
4648          return this;
4649        }
4650
4651        public boolean hasLinkId() { 
4652          if (this.linkId == null)
4653            return false;
4654          for (StringType item : this.linkId)
4655            if (!item.isEmpty())
4656              return true;
4657          return false;
4658        }
4659
4660        /**
4661         * @return {@link #linkId} (Id [identifier??] of the clause or question text about the asset in the referenced form or QuestionnaireResponse.)
4662         */
4663        public StringType addLinkIdElement() {//2 
4664          StringType t = new StringType();
4665          if (this.linkId == null)
4666            this.linkId = new ArrayList<StringType>();
4667          this.linkId.add(t);
4668          return t;
4669        }
4670
4671        /**
4672         * @param value {@link #linkId} (Id [identifier??] of the clause or question text about the asset in the referenced form or QuestionnaireResponse.)
4673         */
4674        public ContractAssetComponent addLinkId(String value) { //1
4675          StringType t = new StringType();
4676          t.setValue(value);
4677          if (this.linkId == null)
4678            this.linkId = new ArrayList<StringType>();
4679          this.linkId.add(t);
4680          return this;
4681        }
4682
4683        /**
4684         * @param value {@link #linkId} (Id [identifier??] of the clause or question text about the asset in the referenced form or QuestionnaireResponse.)
4685         */
4686        public boolean hasLinkId(String value) { 
4687          if (this.linkId == null)
4688            return false;
4689          for (StringType v : this.linkId)
4690            if (v.getValue().equals(value)) // string
4691              return true;
4692          return false;
4693        }
4694
4695        /**
4696         * @return {@link #answer} (Response to assets.)
4697         */
4698        public List<AnswerComponent> getAnswer() { 
4699          if (this.answer == null)
4700            this.answer = new ArrayList<AnswerComponent>();
4701          return this.answer;
4702        }
4703
4704        /**
4705         * @return Returns a reference to <code>this</code> for easy method chaining
4706         */
4707        public ContractAssetComponent setAnswer(List<AnswerComponent> theAnswer) { 
4708          this.answer = theAnswer;
4709          return this;
4710        }
4711
4712        public boolean hasAnswer() { 
4713          if (this.answer == null)
4714            return false;
4715          for (AnswerComponent item : this.answer)
4716            if (!item.isEmpty())
4717              return true;
4718          return false;
4719        }
4720
4721        public AnswerComponent addAnswer() { //3
4722          AnswerComponent t = new AnswerComponent();
4723          if (this.answer == null)
4724            this.answer = new ArrayList<AnswerComponent>();
4725          this.answer.add(t);
4726          return t;
4727        }
4728
4729        public ContractAssetComponent addAnswer(AnswerComponent t) { //3
4730          if (t == null)
4731            return this;
4732          if (this.answer == null)
4733            this.answer = new ArrayList<AnswerComponent>();
4734          this.answer.add(t);
4735          return this;
4736        }
4737
4738        /**
4739         * @return The first repetition of repeating field {@link #answer}, creating it if it does not already exist {3}
4740         */
4741        public AnswerComponent getAnswerFirstRep() { 
4742          if (getAnswer().isEmpty()) {
4743            addAnswer();
4744          }
4745          return getAnswer().get(0);
4746        }
4747
4748        /**
4749         * @return {@link #securityLabelNumber} (Security labels that protects the asset.)
4750         */
4751        public List<UnsignedIntType> getSecurityLabelNumber() { 
4752          if (this.securityLabelNumber == null)
4753            this.securityLabelNumber = new ArrayList<UnsignedIntType>();
4754          return this.securityLabelNumber;
4755        }
4756
4757        /**
4758         * @return Returns a reference to <code>this</code> for easy method chaining
4759         */
4760        public ContractAssetComponent setSecurityLabelNumber(List<UnsignedIntType> theSecurityLabelNumber) { 
4761          this.securityLabelNumber = theSecurityLabelNumber;
4762          return this;
4763        }
4764
4765        public boolean hasSecurityLabelNumber() { 
4766          if (this.securityLabelNumber == null)
4767            return false;
4768          for (UnsignedIntType item : this.securityLabelNumber)
4769            if (!item.isEmpty())
4770              return true;
4771          return false;
4772        }
4773
4774        /**
4775         * @return {@link #securityLabelNumber} (Security labels that protects the asset.)
4776         */
4777        public UnsignedIntType addSecurityLabelNumberElement() {//2 
4778          UnsignedIntType t = new UnsignedIntType();
4779          if (this.securityLabelNumber == null)
4780            this.securityLabelNumber = new ArrayList<UnsignedIntType>();
4781          this.securityLabelNumber.add(t);
4782          return t;
4783        }
4784
4785        /**
4786         * @param value {@link #securityLabelNumber} (Security labels that protects the asset.)
4787         */
4788        public ContractAssetComponent addSecurityLabelNumber(int value) { //1
4789          UnsignedIntType t = new UnsignedIntType();
4790          t.setValue(value);
4791          if (this.securityLabelNumber == null)
4792            this.securityLabelNumber = new ArrayList<UnsignedIntType>();
4793          this.securityLabelNumber.add(t);
4794          return this;
4795        }
4796
4797        /**
4798         * @param value {@link #securityLabelNumber} (Security labels that protects the asset.)
4799         */
4800        public boolean hasSecurityLabelNumber(int value) { 
4801          if (this.securityLabelNumber == null)
4802            return false;
4803          for (UnsignedIntType v : this.securityLabelNumber)
4804            if (v.getValue().equals(value)) // unsignedInt
4805              return true;
4806          return false;
4807        }
4808
4809        /**
4810         * @return {@link #valuedItem} (Contract Valued Item List.)
4811         */
4812        public List<ValuedItemComponent> getValuedItem() { 
4813          if (this.valuedItem == null)
4814            this.valuedItem = new ArrayList<ValuedItemComponent>();
4815          return this.valuedItem;
4816        }
4817
4818        /**
4819         * @return Returns a reference to <code>this</code> for easy method chaining
4820         */
4821        public ContractAssetComponent setValuedItem(List<ValuedItemComponent> theValuedItem) { 
4822          this.valuedItem = theValuedItem;
4823          return this;
4824        }
4825
4826        public boolean hasValuedItem() { 
4827          if (this.valuedItem == null)
4828            return false;
4829          for (ValuedItemComponent item : this.valuedItem)
4830            if (!item.isEmpty())
4831              return true;
4832          return false;
4833        }
4834
4835        public ValuedItemComponent addValuedItem() { //3
4836          ValuedItemComponent t = new ValuedItemComponent();
4837          if (this.valuedItem == null)
4838            this.valuedItem = new ArrayList<ValuedItemComponent>();
4839          this.valuedItem.add(t);
4840          return t;
4841        }
4842
4843        public ContractAssetComponent addValuedItem(ValuedItemComponent t) { //3
4844          if (t == null)
4845            return this;
4846          if (this.valuedItem == null)
4847            this.valuedItem = new ArrayList<ValuedItemComponent>();
4848          this.valuedItem.add(t);
4849          return this;
4850        }
4851
4852        /**
4853         * @return The first repetition of repeating field {@link #valuedItem}, creating it if it does not already exist {3}
4854         */
4855        public ValuedItemComponent getValuedItemFirstRep() { 
4856          if (getValuedItem().isEmpty()) {
4857            addValuedItem();
4858          }
4859          return getValuedItem().get(0);
4860        }
4861
4862        protected void listChildren(List<Property> children) {
4863          super.listChildren(children);
4864          children.add(new Property("scope", "CodeableConcept", "Differentiates the kind of the asset .", 0, 1, scope));
4865          children.add(new Property("type", "CodeableConcept", "Target entity type about which the term may be concerned.", 0, java.lang.Integer.MAX_VALUE, type));
4866          children.add(new Property("typeReference", "Reference(Any)", "Associated entities.", 0, java.lang.Integer.MAX_VALUE, typeReference));
4867          children.add(new Property("subtype", "CodeableConcept", "May be a subtype or part of an offered asset.", 0, java.lang.Integer.MAX_VALUE, subtype));
4868          children.add(new Property("relationship", "Coding", "Specifies the applicability of the term to an asset resource instance, and instances it refers to orinstances that refer to it, and/or are owned by the offeree.", 0, 1, relationship));
4869          children.add(new Property("context", "", "Circumstance of the asset.", 0, java.lang.Integer.MAX_VALUE, context));
4870          children.add(new Property("condition", "string", "Description of the quality and completeness of the asset that may be a factor in its valuation.", 0, 1, condition));
4871          children.add(new Property("periodType", "CodeableConcept", "Type of Asset availability for use or ownership.", 0, java.lang.Integer.MAX_VALUE, periodType));
4872          children.add(new Property("period", "Period", "Asset relevant contractual time period.", 0, java.lang.Integer.MAX_VALUE, period));
4873          children.add(new Property("usePeriod", "Period", "Time period of asset use.", 0, java.lang.Integer.MAX_VALUE, usePeriod));
4874          children.add(new Property("text", "string", "Clause or question text (Prose Object) concerning the asset in a linked form, such as a QuestionnaireResponse used in the formation of the contract.", 0, 1, text));
4875          children.add(new Property("linkId", "string", "Id [identifier??] of the clause or question text about the asset in the referenced form or QuestionnaireResponse.", 0, java.lang.Integer.MAX_VALUE, linkId));
4876          children.add(new Property("answer", "@Contract.term.offer.answer", "Response to assets.", 0, java.lang.Integer.MAX_VALUE, answer));
4877          children.add(new Property("securityLabelNumber", "unsignedInt", "Security labels that protects the asset.", 0, java.lang.Integer.MAX_VALUE, securityLabelNumber));
4878          children.add(new Property("valuedItem", "", "Contract Valued Item List.", 0, java.lang.Integer.MAX_VALUE, valuedItem));
4879        }
4880
4881        @Override
4882        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
4883          switch (_hash) {
4884          case 109264468: /*scope*/  return new Property("scope", "CodeableConcept", "Differentiates the kind of the asset .", 0, 1, scope);
4885          case 3575610: /*type*/  return new Property("type", "CodeableConcept", "Target entity type about which the term may be concerned.", 0, java.lang.Integer.MAX_VALUE, type);
4886          case 2074825009: /*typeReference*/  return new Property("typeReference", "Reference(Any)", "Associated entities.", 0, java.lang.Integer.MAX_VALUE, typeReference);
4887          case -1867567750: /*subtype*/  return new Property("subtype", "CodeableConcept", "May be a subtype or part of an offered asset.", 0, java.lang.Integer.MAX_VALUE, subtype);
4888          case -261851592: /*relationship*/  return new Property("relationship", "Coding", "Specifies the applicability of the term to an asset resource instance, and instances it refers to orinstances that refer to it, and/or are owned by the offeree.", 0, 1, relationship);
4889          case 951530927: /*context*/  return new Property("context", "", "Circumstance of the asset.", 0, java.lang.Integer.MAX_VALUE, context);
4890          case -861311717: /*condition*/  return new Property("condition", "string", "Description of the quality and completeness of the asset that may be a factor in its valuation.", 0, 1, condition);
4891          case 384348315: /*periodType*/  return new Property("periodType", "CodeableConcept", "Type of Asset availability for use or ownership.", 0, java.lang.Integer.MAX_VALUE, periodType);
4892          case -991726143: /*period*/  return new Property("period", "Period", "Asset relevant contractual time period.", 0, java.lang.Integer.MAX_VALUE, period);
4893          case -628382168: /*usePeriod*/  return new Property("usePeriod", "Period", "Time period of asset use.", 0, java.lang.Integer.MAX_VALUE, usePeriod);
4894          case 3556653: /*text*/  return new Property("text", "string", "Clause or question text (Prose Object) concerning the asset in a linked form, such as a QuestionnaireResponse used in the formation of the contract.", 0, 1, text);
4895          case -1102667083: /*linkId*/  return new Property("linkId", "string", "Id [identifier??] of the clause or question text about the asset in the referenced form or QuestionnaireResponse.", 0, java.lang.Integer.MAX_VALUE, linkId);
4896          case -1412808770: /*answer*/  return new Property("answer", "@Contract.term.offer.answer", "Response to assets.", 0, java.lang.Integer.MAX_VALUE, answer);
4897          case -149460995: /*securityLabelNumber*/  return new Property("securityLabelNumber", "unsignedInt", "Security labels that protects the asset.", 0, java.lang.Integer.MAX_VALUE, securityLabelNumber);
4898          case 2046675654: /*valuedItem*/  return new Property("valuedItem", "", "Contract Valued Item List.", 0, java.lang.Integer.MAX_VALUE, valuedItem);
4899          default: return super.getNamedProperty(_hash, _name, _checkValid);
4900          }
4901
4902        }
4903
4904      @Override
4905      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
4906        switch (hash) {
4907        case 109264468: /*scope*/ return this.scope == null ? new Base[0] : new Base[] {this.scope}; // CodeableConcept
4908        case 3575610: /*type*/ return this.type == null ? new Base[0] : this.type.toArray(new Base[this.type.size()]); // CodeableConcept
4909        case 2074825009: /*typeReference*/ return this.typeReference == null ? new Base[0] : this.typeReference.toArray(new Base[this.typeReference.size()]); // Reference
4910        case -1867567750: /*subtype*/ return this.subtype == null ? new Base[0] : this.subtype.toArray(new Base[this.subtype.size()]); // CodeableConcept
4911        case -261851592: /*relationship*/ return this.relationship == null ? new Base[0] : new Base[] {this.relationship}; // Coding
4912        case 951530927: /*context*/ return this.context == null ? new Base[0] : this.context.toArray(new Base[this.context.size()]); // AssetContextComponent
4913        case -861311717: /*condition*/ return this.condition == null ? new Base[0] : new Base[] {this.condition}; // StringType
4914        case 384348315: /*periodType*/ return this.periodType == null ? new Base[0] : this.periodType.toArray(new Base[this.periodType.size()]); // CodeableConcept
4915        case -991726143: /*period*/ return this.period == null ? new Base[0] : this.period.toArray(new Base[this.period.size()]); // Period
4916        case -628382168: /*usePeriod*/ return this.usePeriod == null ? new Base[0] : this.usePeriod.toArray(new Base[this.usePeriod.size()]); // Period
4917        case 3556653: /*text*/ return this.text == null ? new Base[0] : new Base[] {this.text}; // StringType
4918        case -1102667083: /*linkId*/ return this.linkId == null ? new Base[0] : this.linkId.toArray(new Base[this.linkId.size()]); // StringType
4919        case -1412808770: /*answer*/ return this.answer == null ? new Base[0] : this.answer.toArray(new Base[this.answer.size()]); // AnswerComponent
4920        case -149460995: /*securityLabelNumber*/ return this.securityLabelNumber == null ? new Base[0] : this.securityLabelNumber.toArray(new Base[this.securityLabelNumber.size()]); // UnsignedIntType
4921        case 2046675654: /*valuedItem*/ return this.valuedItem == null ? new Base[0] : this.valuedItem.toArray(new Base[this.valuedItem.size()]); // ValuedItemComponent
4922        default: return super.getProperty(hash, name, checkValid);
4923        }
4924
4925      }
4926
4927      @Override
4928      public Base setProperty(int hash, String name, Base value) throws FHIRException {
4929        switch (hash) {
4930        case 109264468: // scope
4931          this.scope = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
4932          return value;
4933        case 3575610: // type
4934          this.getType().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
4935          return value;
4936        case 2074825009: // typeReference
4937          this.getTypeReference().add(TypeConvertor.castToReference(value)); // Reference
4938          return value;
4939        case -1867567750: // subtype
4940          this.getSubtype().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
4941          return value;
4942        case -261851592: // relationship
4943          this.relationship = TypeConvertor.castToCoding(value); // Coding
4944          return value;
4945        case 951530927: // context
4946          this.getContext().add((AssetContextComponent) value); // AssetContextComponent
4947          return value;
4948        case -861311717: // condition
4949          this.condition = TypeConvertor.castToString(value); // StringType
4950          return value;
4951        case 384348315: // periodType
4952          this.getPeriodType().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
4953          return value;
4954        case -991726143: // period
4955          this.getPeriod().add(TypeConvertor.castToPeriod(value)); // Period
4956          return value;
4957        case -628382168: // usePeriod
4958          this.getUsePeriod().add(TypeConvertor.castToPeriod(value)); // Period
4959          return value;
4960        case 3556653: // text
4961          this.text = TypeConvertor.castToString(value); // StringType
4962          return value;
4963        case -1102667083: // linkId
4964          this.getLinkId().add(TypeConvertor.castToString(value)); // StringType
4965          return value;
4966        case -1412808770: // answer
4967          this.getAnswer().add((AnswerComponent) value); // AnswerComponent
4968          return value;
4969        case -149460995: // securityLabelNumber
4970          this.getSecurityLabelNumber().add(TypeConvertor.castToUnsignedInt(value)); // UnsignedIntType
4971          return value;
4972        case 2046675654: // valuedItem
4973          this.getValuedItem().add((ValuedItemComponent) value); // ValuedItemComponent
4974          return value;
4975        default: return super.setProperty(hash, name, value);
4976        }
4977
4978      }
4979
4980      @Override
4981      public Base setProperty(String name, Base value) throws FHIRException {
4982        if (name.equals("scope")) {
4983          this.scope = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
4984        } else if (name.equals("type")) {
4985          this.getType().add(TypeConvertor.castToCodeableConcept(value));
4986        } else if (name.equals("typeReference")) {
4987          this.getTypeReference().add(TypeConvertor.castToReference(value));
4988        } else if (name.equals("subtype")) {
4989          this.getSubtype().add(TypeConvertor.castToCodeableConcept(value));
4990        } else if (name.equals("relationship")) {
4991          this.relationship = TypeConvertor.castToCoding(value); // Coding
4992        } else if (name.equals("context")) {
4993          this.getContext().add((AssetContextComponent) value);
4994        } else if (name.equals("condition")) {
4995          this.condition = TypeConvertor.castToString(value); // StringType
4996        } else if (name.equals("periodType")) {
4997          this.getPeriodType().add(TypeConvertor.castToCodeableConcept(value));
4998        } else if (name.equals("period")) {
4999          this.getPeriod().add(TypeConvertor.castToPeriod(value));
5000        } else if (name.equals("usePeriod")) {
5001          this.getUsePeriod().add(TypeConvertor.castToPeriod(value));
5002        } else if (name.equals("text")) {
5003          this.text = TypeConvertor.castToString(value); // StringType
5004        } else if (name.equals("linkId")) {
5005          this.getLinkId().add(TypeConvertor.castToString(value));
5006        } else if (name.equals("answer")) {
5007          this.getAnswer().add((AnswerComponent) value);
5008        } else if (name.equals("securityLabelNumber")) {
5009          this.getSecurityLabelNumber().add(TypeConvertor.castToUnsignedInt(value));
5010        } else if (name.equals("valuedItem")) {
5011          this.getValuedItem().add((ValuedItemComponent) value);
5012        } else
5013          return super.setProperty(name, value);
5014        return value;
5015      }
5016
5017  @Override
5018  public void removeChild(String name, Base value) throws FHIRException {
5019        if (name.equals("scope")) {
5020          this.scope = null;
5021        } else if (name.equals("type")) {
5022          this.getType().remove(value);
5023        } else if (name.equals("typeReference")) {
5024          this.getTypeReference().remove(value);
5025        } else if (name.equals("subtype")) {
5026          this.getSubtype().remove(value);
5027        } else if (name.equals("relationship")) {
5028          this.relationship = null;
5029        } else if (name.equals("context")) {
5030          this.getContext().remove((AssetContextComponent) value);
5031        } else if (name.equals("condition")) {
5032          this.condition = null;
5033        } else if (name.equals("periodType")) {
5034          this.getPeriodType().remove(value);
5035        } else if (name.equals("period")) {
5036          this.getPeriod().remove(value);
5037        } else if (name.equals("usePeriod")) {
5038          this.getUsePeriod().remove(value);
5039        } else if (name.equals("text")) {
5040          this.text = null;
5041        } else if (name.equals("linkId")) {
5042          this.getLinkId().remove(value);
5043        } else if (name.equals("answer")) {
5044          this.getAnswer().remove((AnswerComponent) value);
5045        } else if (name.equals("securityLabelNumber")) {
5046          this.getSecurityLabelNumber().remove(value);
5047        } else if (name.equals("valuedItem")) {
5048          this.getValuedItem().remove((ValuedItemComponent) value);
5049        } else
5050          super.removeChild(name, value);
5051        
5052      }
5053
5054      @Override
5055      public Base makeProperty(int hash, String name) throws FHIRException {
5056        switch (hash) {
5057        case 109264468:  return getScope();
5058        case 3575610:  return addType(); 
5059        case 2074825009:  return addTypeReference(); 
5060        case -1867567750:  return addSubtype(); 
5061        case -261851592:  return getRelationship();
5062        case 951530927:  return addContext(); 
5063        case -861311717:  return getConditionElement();
5064        case 384348315:  return addPeriodType(); 
5065        case -991726143:  return addPeriod(); 
5066        case -628382168:  return addUsePeriod(); 
5067        case 3556653:  return getTextElement();
5068        case -1102667083:  return addLinkIdElement();
5069        case -1412808770:  return addAnswer(); 
5070        case -149460995:  return addSecurityLabelNumberElement();
5071        case 2046675654:  return addValuedItem(); 
5072        default: return super.makeProperty(hash, name);
5073        }
5074
5075      }
5076
5077      @Override
5078      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
5079        switch (hash) {
5080        case 109264468: /*scope*/ return new String[] {"CodeableConcept"};
5081        case 3575610: /*type*/ return new String[] {"CodeableConcept"};
5082        case 2074825009: /*typeReference*/ return new String[] {"Reference"};
5083        case -1867567750: /*subtype*/ return new String[] {"CodeableConcept"};
5084        case -261851592: /*relationship*/ return new String[] {"Coding"};
5085        case 951530927: /*context*/ return new String[] {};
5086        case -861311717: /*condition*/ return new String[] {"string"};
5087        case 384348315: /*periodType*/ return new String[] {"CodeableConcept"};
5088        case -991726143: /*period*/ return new String[] {"Period"};
5089        case -628382168: /*usePeriod*/ return new String[] {"Period"};
5090        case 3556653: /*text*/ return new String[] {"string"};
5091        case -1102667083: /*linkId*/ return new String[] {"string"};
5092        case -1412808770: /*answer*/ return new String[] {"@Contract.term.offer.answer"};
5093        case -149460995: /*securityLabelNumber*/ return new String[] {"unsignedInt"};
5094        case 2046675654: /*valuedItem*/ return new String[] {};
5095        default: return super.getTypesForProperty(hash, name);
5096        }
5097
5098      }
5099
5100      @Override
5101      public Base addChild(String name) throws FHIRException {
5102        if (name.equals("scope")) {
5103          this.scope = new CodeableConcept();
5104          return this.scope;
5105        }
5106        else if (name.equals("type")) {
5107          return addType();
5108        }
5109        else if (name.equals("typeReference")) {
5110          return addTypeReference();
5111        }
5112        else if (name.equals("subtype")) {
5113          return addSubtype();
5114        }
5115        else if (name.equals("relationship")) {
5116          this.relationship = new Coding();
5117          return this.relationship;
5118        }
5119        else if (name.equals("context")) {
5120          return addContext();
5121        }
5122        else if (name.equals("condition")) {
5123          throw new FHIRException("Cannot call addChild on a singleton property Contract.term.asset.condition");
5124        }
5125        else if (name.equals("periodType")) {
5126          return addPeriodType();
5127        }
5128        else if (name.equals("period")) {
5129          return addPeriod();
5130        }
5131        else if (name.equals("usePeriod")) {
5132          return addUsePeriod();
5133        }
5134        else if (name.equals("text")) {
5135          throw new FHIRException("Cannot call addChild on a singleton property Contract.term.asset.text");
5136        }
5137        else if (name.equals("linkId")) {
5138          throw new FHIRException("Cannot call addChild on a singleton property Contract.term.asset.linkId");
5139        }
5140        else if (name.equals("answer")) {
5141          return addAnswer();
5142        }
5143        else if (name.equals("securityLabelNumber")) {
5144          throw new FHIRException("Cannot call addChild on a singleton property Contract.term.asset.securityLabelNumber");
5145        }
5146        else if (name.equals("valuedItem")) {
5147          return addValuedItem();
5148        }
5149        else
5150          return super.addChild(name);
5151      }
5152
5153      public ContractAssetComponent copy() {
5154        ContractAssetComponent dst = new ContractAssetComponent();
5155        copyValues(dst);
5156        return dst;
5157      }
5158
5159      public void copyValues(ContractAssetComponent dst) {
5160        super.copyValues(dst);
5161        dst.scope = scope == null ? null : scope.copy();
5162        if (type != null) {
5163          dst.type = new ArrayList<CodeableConcept>();
5164          for (CodeableConcept i : type)
5165            dst.type.add(i.copy());
5166        };
5167        if (typeReference != null) {
5168          dst.typeReference = new ArrayList<Reference>();
5169          for (Reference i : typeReference)
5170            dst.typeReference.add(i.copy());
5171        };
5172        if (subtype != null) {
5173          dst.subtype = new ArrayList<CodeableConcept>();
5174          for (CodeableConcept i : subtype)
5175            dst.subtype.add(i.copy());
5176        };
5177        dst.relationship = relationship == null ? null : relationship.copy();
5178        if (context != null) {
5179          dst.context = new ArrayList<AssetContextComponent>();
5180          for (AssetContextComponent i : context)
5181            dst.context.add(i.copy());
5182        };
5183        dst.condition = condition == null ? null : condition.copy();
5184        if (periodType != null) {
5185          dst.periodType = new ArrayList<CodeableConcept>();
5186          for (CodeableConcept i : periodType)
5187            dst.periodType.add(i.copy());
5188        };
5189        if (period != null) {
5190          dst.period = new ArrayList<Period>();
5191          for (Period i : period)
5192            dst.period.add(i.copy());
5193        };
5194        if (usePeriod != null) {
5195          dst.usePeriod = new ArrayList<Period>();
5196          for (Period i : usePeriod)
5197            dst.usePeriod.add(i.copy());
5198        };
5199        dst.text = text == null ? null : text.copy();
5200        if (linkId != null) {
5201          dst.linkId = new ArrayList<StringType>();
5202          for (StringType i : linkId)
5203            dst.linkId.add(i.copy());
5204        };
5205        if (answer != null) {
5206          dst.answer = new ArrayList<AnswerComponent>();
5207          for (AnswerComponent i : answer)
5208            dst.answer.add(i.copy());
5209        };
5210        if (securityLabelNumber != null) {
5211          dst.securityLabelNumber = new ArrayList<UnsignedIntType>();
5212          for (UnsignedIntType i : securityLabelNumber)
5213            dst.securityLabelNumber.add(i.copy());
5214        };
5215        if (valuedItem != null) {
5216          dst.valuedItem = new ArrayList<ValuedItemComponent>();
5217          for (ValuedItemComponent i : valuedItem)
5218            dst.valuedItem.add(i.copy());
5219        };
5220      }
5221
5222      @Override
5223      public boolean equalsDeep(Base other_) {
5224        if (!super.equalsDeep(other_))
5225          return false;
5226        if (!(other_ instanceof ContractAssetComponent))
5227          return false;
5228        ContractAssetComponent o = (ContractAssetComponent) other_;
5229        return compareDeep(scope, o.scope, true) && compareDeep(type, o.type, true) && compareDeep(typeReference, o.typeReference, true)
5230           && compareDeep(subtype, o.subtype, true) && compareDeep(relationship, o.relationship, true) && compareDeep(context, o.context, true)
5231           && compareDeep(condition, o.condition, true) && compareDeep(periodType, o.periodType, true) && compareDeep(period, o.period, true)
5232           && compareDeep(usePeriod, o.usePeriod, true) && compareDeep(text, o.text, true) && compareDeep(linkId, o.linkId, true)
5233           && compareDeep(answer, o.answer, true) && compareDeep(securityLabelNumber, o.securityLabelNumber, true)
5234           && compareDeep(valuedItem, o.valuedItem, true);
5235      }
5236
5237      @Override
5238      public boolean equalsShallow(Base other_) {
5239        if (!super.equalsShallow(other_))
5240          return false;
5241        if (!(other_ instanceof ContractAssetComponent))
5242          return false;
5243        ContractAssetComponent o = (ContractAssetComponent) other_;
5244        return compareValues(condition, o.condition, true) && compareValues(text, o.text, true) && compareValues(linkId, o.linkId, true)
5245           && compareValues(securityLabelNumber, o.securityLabelNumber, true);
5246      }
5247
5248      public boolean isEmpty() {
5249        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(scope, type, typeReference
5250          , subtype, relationship, context, condition, periodType, period, usePeriod, text
5251          , linkId, answer, securityLabelNumber, valuedItem);
5252      }
5253
5254  public String fhirType() {
5255    return "Contract.term.asset";
5256
5257  }
5258
5259  }
5260
5261    @Block()
5262    public static class AssetContextComponent extends BackboneElement implements IBaseBackboneElement {
5263        /**
5264         * Asset context reference may include the creator, custodian, or owning Person or Organization (e.g., bank, repository),  location held, e.g., building,  jurisdiction.
5265         */
5266        @Child(name = "reference", type = {Reference.class}, order=1, min=0, max=1, modifier=false, summary=false)
5267        @Description(shortDefinition="Creator,custodian or owner", formalDefinition="Asset context reference may include the creator, custodian, or owning Person or Organization (e.g., bank, repository),  location held, e.g., building,  jurisdiction." )
5268        protected Reference reference;
5269
5270        /**
5271         * Coded representation of the context generally or of the Referenced entity, such as the asset holder type or location.
5272         */
5273        @Child(name = "code", type = {CodeableConcept.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
5274        @Description(shortDefinition="Codeable asset context", formalDefinition="Coded representation of the context generally or of the Referenced entity, such as the asset holder type or location." )
5275        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/contract-assetcontext")
5276        protected List<CodeableConcept> code;
5277
5278        /**
5279         * Context description.
5280         */
5281        @Child(name = "text", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=false)
5282        @Description(shortDefinition="Context description", formalDefinition="Context description." )
5283        protected StringType text;
5284
5285        private static final long serialVersionUID = -388598648L;
5286
5287    /**
5288     * Constructor
5289     */
5290      public AssetContextComponent() {
5291        super();
5292      }
5293
5294        /**
5295         * @return {@link #reference} (Asset context reference may include the creator, custodian, or owning Person or Organization (e.g., bank, repository),  location held, e.g., building,  jurisdiction.)
5296         */
5297        public Reference getReference() { 
5298          if (this.reference == null)
5299            if (Configuration.errorOnAutoCreate())
5300              throw new Error("Attempt to auto-create AssetContextComponent.reference");
5301            else if (Configuration.doAutoCreate())
5302              this.reference = new Reference(); // cc
5303          return this.reference;
5304        }
5305
5306        public boolean hasReference() { 
5307          return this.reference != null && !this.reference.isEmpty();
5308        }
5309
5310        /**
5311         * @param value {@link #reference} (Asset context reference may include the creator, custodian, or owning Person or Organization (e.g., bank, repository),  location held, e.g., building,  jurisdiction.)
5312         */
5313        public AssetContextComponent setReference(Reference value) { 
5314          this.reference = value;
5315          return this;
5316        }
5317
5318        /**
5319         * @return {@link #code} (Coded representation of the context generally or of the Referenced entity, such as the asset holder type or location.)
5320         */
5321        public List<CodeableConcept> getCode() { 
5322          if (this.code == null)
5323            this.code = new ArrayList<CodeableConcept>();
5324          return this.code;
5325        }
5326
5327        /**
5328         * @return Returns a reference to <code>this</code> for easy method chaining
5329         */
5330        public AssetContextComponent setCode(List<CodeableConcept> theCode) { 
5331          this.code = theCode;
5332          return this;
5333        }
5334
5335        public boolean hasCode() { 
5336          if (this.code == null)
5337            return false;
5338          for (CodeableConcept item : this.code)
5339            if (!item.isEmpty())
5340              return true;
5341          return false;
5342        }
5343
5344        public CodeableConcept addCode() { //3
5345          CodeableConcept t = new CodeableConcept();
5346          if (this.code == null)
5347            this.code = new ArrayList<CodeableConcept>();
5348          this.code.add(t);
5349          return t;
5350        }
5351
5352        public AssetContextComponent addCode(CodeableConcept t) { //3
5353          if (t == null)
5354            return this;
5355          if (this.code == null)
5356            this.code = new ArrayList<CodeableConcept>();
5357          this.code.add(t);
5358          return this;
5359        }
5360
5361        /**
5362         * @return The first repetition of repeating field {@link #code}, creating it if it does not already exist {3}
5363         */
5364        public CodeableConcept getCodeFirstRep() { 
5365          if (getCode().isEmpty()) {
5366            addCode();
5367          }
5368          return getCode().get(0);
5369        }
5370
5371        /**
5372         * @return {@link #text} (Context description.). This is the underlying object with id, value and extensions. The accessor "getText" gives direct access to the value
5373         */
5374        public StringType getTextElement() { 
5375          if (this.text == null)
5376            if (Configuration.errorOnAutoCreate())
5377              throw new Error("Attempt to auto-create AssetContextComponent.text");
5378            else if (Configuration.doAutoCreate())
5379              this.text = new StringType(); // bb
5380          return this.text;
5381        }
5382
5383        public boolean hasTextElement() { 
5384          return this.text != null && !this.text.isEmpty();
5385        }
5386
5387        public boolean hasText() { 
5388          return this.text != null && !this.text.isEmpty();
5389        }
5390
5391        /**
5392         * @param value {@link #text} (Context description.). This is the underlying object with id, value and extensions. The accessor "getText" gives direct access to the value
5393         */
5394        public AssetContextComponent setTextElement(StringType value) { 
5395          this.text = value;
5396          return this;
5397        }
5398
5399        /**
5400         * @return Context description.
5401         */
5402        public String getText() { 
5403          return this.text == null ? null : this.text.getValue();
5404        }
5405
5406        /**
5407         * @param value Context description.
5408         */
5409        public AssetContextComponent setText(String value) { 
5410          if (Utilities.noString(value))
5411            this.text = null;
5412          else {
5413            if (this.text == null)
5414              this.text = new StringType();
5415            this.text.setValue(value);
5416          }
5417          return this;
5418        }
5419
5420        protected void listChildren(List<Property> children) {
5421          super.listChildren(children);
5422          children.add(new Property("reference", "Reference(Any)", "Asset context reference may include the creator, custodian, or owning Person or Organization (e.g., bank, repository),  location held, e.g., building,  jurisdiction.", 0, 1, reference));
5423          children.add(new Property("code", "CodeableConcept", "Coded representation of the context generally or of the Referenced entity, such as the asset holder type or location.", 0, java.lang.Integer.MAX_VALUE, code));
5424          children.add(new Property("text", "string", "Context description.", 0, 1, text));
5425        }
5426
5427        @Override
5428        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
5429          switch (_hash) {
5430          case -925155509: /*reference*/  return new Property("reference", "Reference(Any)", "Asset context reference may include the creator, custodian, or owning Person or Organization (e.g., bank, repository),  location held, e.g., building,  jurisdiction.", 0, 1, reference);
5431          case 3059181: /*code*/  return new Property("code", "CodeableConcept", "Coded representation of the context generally or of the Referenced entity, such as the asset holder type or location.", 0, java.lang.Integer.MAX_VALUE, code);
5432          case 3556653: /*text*/  return new Property("text", "string", "Context description.", 0, 1, text);
5433          default: return super.getNamedProperty(_hash, _name, _checkValid);
5434          }
5435
5436        }
5437
5438      @Override
5439      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
5440        switch (hash) {
5441        case -925155509: /*reference*/ return this.reference == null ? new Base[0] : new Base[] {this.reference}; // Reference
5442        case 3059181: /*code*/ return this.code == null ? new Base[0] : this.code.toArray(new Base[this.code.size()]); // CodeableConcept
5443        case 3556653: /*text*/ return this.text == null ? new Base[0] : new Base[] {this.text}; // StringType
5444        default: return super.getProperty(hash, name, checkValid);
5445        }
5446
5447      }
5448
5449      @Override
5450      public Base setProperty(int hash, String name, Base value) throws FHIRException {
5451        switch (hash) {
5452        case -925155509: // reference
5453          this.reference = TypeConvertor.castToReference(value); // Reference
5454          return value;
5455        case 3059181: // code
5456          this.getCode().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
5457          return value;
5458        case 3556653: // text
5459          this.text = TypeConvertor.castToString(value); // StringType
5460          return value;
5461        default: return super.setProperty(hash, name, value);
5462        }
5463
5464      }
5465
5466      @Override
5467      public Base setProperty(String name, Base value) throws FHIRException {
5468        if (name.equals("reference")) {
5469          this.reference = TypeConvertor.castToReference(value); // Reference
5470        } else if (name.equals("code")) {
5471          this.getCode().add(TypeConvertor.castToCodeableConcept(value));
5472        } else if (name.equals("text")) {
5473          this.text = TypeConvertor.castToString(value); // StringType
5474        } else
5475          return super.setProperty(name, value);
5476        return value;
5477      }
5478
5479  @Override
5480  public void removeChild(String name, Base value) throws FHIRException {
5481        if (name.equals("reference")) {
5482          this.reference = null;
5483        } else if (name.equals("code")) {
5484          this.getCode().remove(value);
5485        } else if (name.equals("text")) {
5486          this.text = null;
5487        } else
5488          super.removeChild(name, value);
5489        
5490      }
5491
5492      @Override
5493      public Base makeProperty(int hash, String name) throws FHIRException {
5494        switch (hash) {
5495        case -925155509:  return getReference();
5496        case 3059181:  return addCode(); 
5497        case 3556653:  return getTextElement();
5498        default: return super.makeProperty(hash, name);
5499        }
5500
5501      }
5502
5503      @Override
5504      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
5505        switch (hash) {
5506        case -925155509: /*reference*/ return new String[] {"Reference"};
5507        case 3059181: /*code*/ return new String[] {"CodeableConcept"};
5508        case 3556653: /*text*/ return new String[] {"string"};
5509        default: return super.getTypesForProperty(hash, name);
5510        }
5511
5512      }
5513
5514      @Override
5515      public Base addChild(String name) throws FHIRException {
5516        if (name.equals("reference")) {
5517          this.reference = new Reference();
5518          return this.reference;
5519        }
5520        else if (name.equals("code")) {
5521          return addCode();
5522        }
5523        else if (name.equals("text")) {
5524          throw new FHIRException("Cannot call addChild on a singleton property Contract.term.asset.context.text");
5525        }
5526        else
5527          return super.addChild(name);
5528      }
5529
5530      public AssetContextComponent copy() {
5531        AssetContextComponent dst = new AssetContextComponent();
5532        copyValues(dst);
5533        return dst;
5534      }
5535
5536      public void copyValues(AssetContextComponent dst) {
5537        super.copyValues(dst);
5538        dst.reference = reference == null ? null : reference.copy();
5539        if (code != null) {
5540          dst.code = new ArrayList<CodeableConcept>();
5541          for (CodeableConcept i : code)
5542            dst.code.add(i.copy());
5543        };
5544        dst.text = text == null ? null : text.copy();
5545      }
5546
5547      @Override
5548      public boolean equalsDeep(Base other_) {
5549        if (!super.equalsDeep(other_))
5550          return false;
5551        if (!(other_ instanceof AssetContextComponent))
5552          return false;
5553        AssetContextComponent o = (AssetContextComponent) other_;
5554        return compareDeep(reference, o.reference, true) && compareDeep(code, o.code, true) && compareDeep(text, o.text, true)
5555          ;
5556      }
5557
5558      @Override
5559      public boolean equalsShallow(Base other_) {
5560        if (!super.equalsShallow(other_))
5561          return false;
5562        if (!(other_ instanceof AssetContextComponent))
5563          return false;
5564        AssetContextComponent o = (AssetContextComponent) other_;
5565        return compareValues(text, o.text, true);
5566      }
5567
5568      public boolean isEmpty() {
5569        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(reference, code, text);
5570      }
5571
5572  public String fhirType() {
5573    return "Contract.term.asset.context";
5574
5575  }
5576
5577  }
5578
5579    @Block()
5580    public static class ValuedItemComponent extends BackboneElement implements IBaseBackboneElement {
5581        /**
5582         * Specific type of Contract Valued Item that may be priced.
5583         */
5584        @Child(name = "entity", type = {CodeableConcept.class, Reference.class}, order=1, min=0, max=1, modifier=false, summary=false)
5585        @Description(shortDefinition="Contract Valued Item Type", formalDefinition="Specific type of Contract Valued Item that may be priced." )
5586        protected DataType entity;
5587
5588        /**
5589         * Identifies a Contract Valued Item instance.
5590         */
5591        @Child(name = "identifier", type = {Identifier.class}, order=2, min=0, max=1, modifier=false, summary=false)
5592        @Description(shortDefinition="Contract Valued Item Number", formalDefinition="Identifies a Contract Valued Item instance." )
5593        protected Identifier identifier;
5594
5595        /**
5596         * Indicates the time during which this Contract ValuedItem information is effective.
5597         */
5598        @Child(name = "effectiveTime", type = {DateTimeType.class}, order=3, min=0, max=1, modifier=false, summary=false)
5599        @Description(shortDefinition="Contract Valued Item Effective Tiem", formalDefinition="Indicates the time during which this Contract ValuedItem information is effective." )
5600        protected DateTimeType effectiveTime;
5601
5602        /**
5603         * Specifies the units by which the Contract Valued Item is measured or counted, and quantifies the countable or measurable Contract Valued Item instances.
5604         */
5605        @Child(name = "quantity", type = {Quantity.class}, order=4, min=0, max=1, modifier=false, summary=false)
5606        @Description(shortDefinition="Count of Contract Valued Items", formalDefinition="Specifies the units by which the Contract Valued Item is measured or counted, and quantifies the countable or measurable Contract Valued Item instances." )
5607        protected Quantity quantity;
5608
5609        /**
5610         * A Contract Valued Item unit valuation measure.
5611         */
5612        @Child(name = "unitPrice", type = {Money.class}, order=5, min=0, max=1, modifier=false, summary=false)
5613        @Description(shortDefinition="Contract Valued Item fee, charge, or cost", formalDefinition="A Contract Valued Item unit valuation measure." )
5614        protected Money unitPrice;
5615
5616        /**
5617         * A real number that represents a multiplier used in determining the overall value of the Contract Valued Item delivered. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount.
5618         */
5619        @Child(name = "factor", type = {DecimalType.class}, order=6, min=0, max=1, modifier=false, summary=false)
5620        @Description(shortDefinition="Contract Valued Item Price Scaling Factor", formalDefinition="A real number that represents a multiplier used in determining the overall value of the Contract Valued Item delivered. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount." )
5621        protected DecimalType factor;
5622
5623        /**
5624         * An amount that expresses the weighting (based on difficulty, cost and/or resource intensiveness) associated with the Contract Valued Item delivered. The concept of Points allows for assignment of point values for a Contract Valued Item, such that a monetary amount can be assigned to each point.
5625         */
5626        @Child(name = "points", type = {DecimalType.class}, order=7, min=0, max=1, modifier=false, summary=false)
5627        @Description(shortDefinition="Contract Valued Item Difficulty Scaling Factor", formalDefinition="An amount that expresses the weighting (based on difficulty, cost and/or resource intensiveness) associated with the Contract Valued Item delivered. The concept of Points allows for assignment of point values for a Contract Valued Item, such that a monetary amount can be assigned to each point." )
5628        protected DecimalType points;
5629
5630        /**
5631         * Expresses the product of the Contract Valued Item unitQuantity and the unitPriceAmt. For example, the formula: unit Quantity * unit Price (Cost per Point) * factor Number  * points = net Amount. Quantity, factor and points are assumed to be 1 if not supplied.
5632         */
5633        @Child(name = "net", type = {Money.class}, order=8, min=0, max=1, modifier=false, summary=false)
5634        @Description(shortDefinition="Total Contract Valued Item Value", formalDefinition="Expresses the product of the Contract Valued Item unitQuantity and the unitPriceAmt. For example, the formula: unit Quantity * unit Price (Cost per Point) * factor Number  * points = net Amount. Quantity, factor and points are assumed to be 1 if not supplied." )
5635        protected Money net;
5636
5637        /**
5638         * Terms of valuation.
5639         */
5640        @Child(name = "payment", type = {StringType.class}, order=9, min=0, max=1, modifier=false, summary=false)
5641        @Description(shortDefinition="Terms of valuation", formalDefinition="Terms of valuation." )
5642        protected StringType payment;
5643
5644        /**
5645         * When payment is due.
5646         */
5647        @Child(name = "paymentDate", type = {DateTimeType.class}, order=10, min=0, max=1, modifier=false, summary=false)
5648        @Description(shortDefinition="When payment is due", formalDefinition="When payment is due." )
5649        protected DateTimeType paymentDate;
5650
5651        /**
5652         * Who will make payment.
5653         */
5654        @Child(name = "responsible", type = {Organization.class, Patient.class, Practitioner.class, PractitionerRole.class, RelatedPerson.class}, order=11, min=0, max=1, modifier=false, summary=false)
5655        @Description(shortDefinition="Who will make payment", formalDefinition="Who will make payment." )
5656        protected Reference responsible;
5657
5658        /**
5659         * Who will receive payment.
5660         */
5661        @Child(name = "recipient", type = {Organization.class, Patient.class, Practitioner.class, PractitionerRole.class, RelatedPerson.class}, order=12, min=0, max=1, modifier=false, summary=false)
5662        @Description(shortDefinition="Who will receive payment", formalDefinition="Who will receive payment." )
5663        protected Reference recipient;
5664
5665        /**
5666         * Id  of the clause or question text related to the context of this valuedItem in the referenced form or QuestionnaireResponse.
5667         */
5668        @Child(name = "linkId", type = {StringType.class}, order=13, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
5669        @Description(shortDefinition="Pointer to specific item", formalDefinition="Id  of the clause or question text related to the context of this valuedItem in the referenced form or QuestionnaireResponse." )
5670        protected List<StringType> linkId;
5671
5672        /**
5673         * A set of security labels that define which terms are controlled by this condition.
5674         */
5675        @Child(name = "securityLabelNumber", type = {UnsignedIntType.class}, order=14, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
5676        @Description(shortDefinition="Security Labels that define affected terms", formalDefinition="A set of security labels that define which terms are controlled by this condition." )
5677        protected List<UnsignedIntType> securityLabelNumber;
5678
5679        private static final long serialVersionUID = 915998998L;
5680
5681    /**
5682     * Constructor
5683     */
5684      public ValuedItemComponent() {
5685        super();
5686      }
5687
5688        /**
5689         * @return {@link #entity} (Specific type of Contract Valued Item that may be priced.)
5690         */
5691        public DataType getEntity() { 
5692          return this.entity;
5693        }
5694
5695        /**
5696         * @return {@link #entity} (Specific type of Contract Valued Item that may be priced.)
5697         */
5698        public CodeableConcept getEntityCodeableConcept() throws FHIRException { 
5699          if (this.entity == null)
5700            this.entity = new CodeableConcept();
5701          if (!(this.entity instanceof CodeableConcept))
5702            throw new FHIRException("Type mismatch: the type CodeableConcept was expected, but "+this.entity.getClass().getName()+" was encountered");
5703          return (CodeableConcept) this.entity;
5704        }
5705
5706        public boolean hasEntityCodeableConcept() { 
5707          return this != null && this.entity instanceof CodeableConcept;
5708        }
5709
5710        /**
5711         * @return {@link #entity} (Specific type of Contract Valued Item that may be priced.)
5712         */
5713        public Reference getEntityReference() throws FHIRException { 
5714          if (this.entity == null)
5715            this.entity = new Reference();
5716          if (!(this.entity instanceof Reference))
5717            throw new FHIRException("Type mismatch: the type Reference was expected, but "+this.entity.getClass().getName()+" was encountered");
5718          return (Reference) this.entity;
5719        }
5720
5721        public boolean hasEntityReference() { 
5722          return this != null && this.entity instanceof Reference;
5723        }
5724
5725        public boolean hasEntity() { 
5726          return this.entity != null && !this.entity.isEmpty();
5727        }
5728
5729        /**
5730         * @param value {@link #entity} (Specific type of Contract Valued Item that may be priced.)
5731         */
5732        public ValuedItemComponent setEntity(DataType value) { 
5733          if (value != null && !(value instanceof CodeableConcept || value instanceof Reference))
5734            throw new FHIRException("Not the right type for Contract.term.asset.valuedItem.entity[x]: "+value.fhirType());
5735          this.entity = value;
5736          return this;
5737        }
5738
5739        /**
5740         * @return {@link #identifier} (Identifies a Contract Valued Item instance.)
5741         */
5742        public Identifier getIdentifier() { 
5743          if (this.identifier == null)
5744            if (Configuration.errorOnAutoCreate())
5745              throw new Error("Attempt to auto-create ValuedItemComponent.identifier");
5746            else if (Configuration.doAutoCreate())
5747              this.identifier = new Identifier(); // cc
5748          return this.identifier;
5749        }
5750
5751        public boolean hasIdentifier() { 
5752          return this.identifier != null && !this.identifier.isEmpty();
5753        }
5754
5755        /**
5756         * @param value {@link #identifier} (Identifies a Contract Valued Item instance.)
5757         */
5758        public ValuedItemComponent setIdentifier(Identifier value) { 
5759          this.identifier = value;
5760          return this;
5761        }
5762
5763        /**
5764         * @return {@link #effectiveTime} (Indicates the time during which this Contract ValuedItem information is effective.). This is the underlying object with id, value and extensions. The accessor "getEffectiveTime" gives direct access to the value
5765         */
5766        public DateTimeType getEffectiveTimeElement() { 
5767          if (this.effectiveTime == null)
5768            if (Configuration.errorOnAutoCreate())
5769              throw new Error("Attempt to auto-create ValuedItemComponent.effectiveTime");
5770            else if (Configuration.doAutoCreate())
5771              this.effectiveTime = new DateTimeType(); // bb
5772          return this.effectiveTime;
5773        }
5774
5775        public boolean hasEffectiveTimeElement() { 
5776          return this.effectiveTime != null && !this.effectiveTime.isEmpty();
5777        }
5778
5779        public boolean hasEffectiveTime() { 
5780          return this.effectiveTime != null && !this.effectiveTime.isEmpty();
5781        }
5782
5783        /**
5784         * @param value {@link #effectiveTime} (Indicates the time during which this Contract ValuedItem information is effective.). This is the underlying object with id, value and extensions. The accessor "getEffectiveTime" gives direct access to the value
5785         */
5786        public ValuedItemComponent setEffectiveTimeElement(DateTimeType value) { 
5787          this.effectiveTime = value;
5788          return this;
5789        }
5790
5791        /**
5792         * @return Indicates the time during which this Contract ValuedItem information is effective.
5793         */
5794        public Date getEffectiveTime() { 
5795          return this.effectiveTime == null ? null : this.effectiveTime.getValue();
5796        }
5797
5798        /**
5799         * @param value Indicates the time during which this Contract ValuedItem information is effective.
5800         */
5801        public ValuedItemComponent setEffectiveTime(Date value) { 
5802          if (value == null)
5803            this.effectiveTime = null;
5804          else {
5805            if (this.effectiveTime == null)
5806              this.effectiveTime = new DateTimeType();
5807            this.effectiveTime.setValue(value);
5808          }
5809          return this;
5810        }
5811
5812        /**
5813         * @return {@link #quantity} (Specifies the units by which the Contract Valued Item is measured or counted, and quantifies the countable or measurable Contract Valued Item instances.)
5814         */
5815        public Quantity getQuantity() { 
5816          if (this.quantity == null)
5817            if (Configuration.errorOnAutoCreate())
5818              throw new Error("Attempt to auto-create ValuedItemComponent.quantity");
5819            else if (Configuration.doAutoCreate())
5820              this.quantity = new Quantity(); // cc
5821          return this.quantity;
5822        }
5823
5824        public boolean hasQuantity() { 
5825          return this.quantity != null && !this.quantity.isEmpty();
5826        }
5827
5828        /**
5829         * @param value {@link #quantity} (Specifies the units by which the Contract Valued Item is measured or counted, and quantifies the countable or measurable Contract Valued Item instances.)
5830         */
5831        public ValuedItemComponent setQuantity(Quantity value) { 
5832          this.quantity = value;
5833          return this;
5834        }
5835
5836        /**
5837         * @return {@link #unitPrice} (A Contract Valued Item unit valuation measure.)
5838         */
5839        public Money getUnitPrice() { 
5840          if (this.unitPrice == null)
5841            if (Configuration.errorOnAutoCreate())
5842              throw new Error("Attempt to auto-create ValuedItemComponent.unitPrice");
5843            else if (Configuration.doAutoCreate())
5844              this.unitPrice = new Money(); // cc
5845          return this.unitPrice;
5846        }
5847
5848        public boolean hasUnitPrice() { 
5849          return this.unitPrice != null && !this.unitPrice.isEmpty();
5850        }
5851
5852        /**
5853         * @param value {@link #unitPrice} (A Contract Valued Item unit valuation measure.)
5854         */
5855        public ValuedItemComponent setUnitPrice(Money value) { 
5856          this.unitPrice = value;
5857          return this;
5858        }
5859
5860        /**
5861         * @return {@link #factor} (A real number that represents a multiplier used in determining the overall value of the Contract Valued Item delivered. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount.). This is the underlying object with id, value and extensions. The accessor "getFactor" gives direct access to the value
5862         */
5863        public DecimalType getFactorElement() { 
5864          if (this.factor == null)
5865            if (Configuration.errorOnAutoCreate())
5866              throw new Error("Attempt to auto-create ValuedItemComponent.factor");
5867            else if (Configuration.doAutoCreate())
5868              this.factor = new DecimalType(); // bb
5869          return this.factor;
5870        }
5871
5872        public boolean hasFactorElement() { 
5873          return this.factor != null && !this.factor.isEmpty();
5874        }
5875
5876        public boolean hasFactor() { 
5877          return this.factor != null && !this.factor.isEmpty();
5878        }
5879
5880        /**
5881         * @param value {@link #factor} (A real number that represents a multiplier used in determining the overall value of the Contract Valued Item delivered. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount.). This is the underlying object with id, value and extensions. The accessor "getFactor" gives direct access to the value
5882         */
5883        public ValuedItemComponent setFactorElement(DecimalType value) { 
5884          this.factor = value;
5885          return this;
5886        }
5887
5888        /**
5889         * @return A real number that represents a multiplier used in determining the overall value of the Contract Valued Item delivered. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount.
5890         */
5891        public BigDecimal getFactor() { 
5892          return this.factor == null ? null : this.factor.getValue();
5893        }
5894
5895        /**
5896         * @param value A real number that represents a multiplier used in determining the overall value of the Contract Valued Item delivered. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount.
5897         */
5898        public ValuedItemComponent setFactor(BigDecimal value) { 
5899          if (value == null)
5900            this.factor = null;
5901          else {
5902            if (this.factor == null)
5903              this.factor = new DecimalType();
5904            this.factor.setValue(value);
5905          }
5906          return this;
5907        }
5908
5909        /**
5910         * @param value A real number that represents a multiplier used in determining the overall value of the Contract Valued Item delivered. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount.
5911         */
5912        public ValuedItemComponent setFactor(long value) { 
5913              this.factor = new DecimalType();
5914            this.factor.setValue(value);
5915          return this;
5916        }
5917
5918        /**
5919         * @param value A real number that represents a multiplier used in determining the overall value of the Contract Valued Item delivered. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount.
5920         */
5921        public ValuedItemComponent setFactor(double value) { 
5922              this.factor = new DecimalType();
5923            this.factor.setValue(value);
5924          return this;
5925        }
5926
5927        /**
5928         * @return {@link #points} (An amount that expresses the weighting (based on difficulty, cost and/or resource intensiveness) associated with the Contract Valued Item delivered. The concept of Points allows for assignment of point values for a Contract Valued Item, such that a monetary amount can be assigned to each point.). This is the underlying object with id, value and extensions. The accessor "getPoints" gives direct access to the value
5929         */
5930        public DecimalType getPointsElement() { 
5931          if (this.points == null)
5932            if (Configuration.errorOnAutoCreate())
5933              throw new Error("Attempt to auto-create ValuedItemComponent.points");
5934            else if (Configuration.doAutoCreate())
5935              this.points = new DecimalType(); // bb
5936          return this.points;
5937        }
5938
5939        public boolean hasPointsElement() { 
5940          return this.points != null && !this.points.isEmpty();
5941        }
5942
5943        public boolean hasPoints() { 
5944          return this.points != null && !this.points.isEmpty();
5945        }
5946
5947        /**
5948         * @param value {@link #points} (An amount that expresses the weighting (based on difficulty, cost and/or resource intensiveness) associated with the Contract Valued Item delivered. The concept of Points allows for assignment of point values for a Contract Valued Item, such that a monetary amount can be assigned to each point.). This is the underlying object with id, value and extensions. The accessor "getPoints" gives direct access to the value
5949         */
5950        public ValuedItemComponent setPointsElement(DecimalType value) { 
5951          this.points = value;
5952          return this;
5953        }
5954
5955        /**
5956         * @return An amount that expresses the weighting (based on difficulty, cost and/or resource intensiveness) associated with the Contract Valued Item delivered. The concept of Points allows for assignment of point values for a Contract Valued Item, such that a monetary amount can be assigned to each point.
5957         */
5958        public BigDecimal getPoints() { 
5959          return this.points == null ? null : this.points.getValue();
5960        }
5961
5962        /**
5963         * @param value An amount that expresses the weighting (based on difficulty, cost and/or resource intensiveness) associated with the Contract Valued Item delivered. The concept of Points allows for assignment of point values for a Contract Valued Item, such that a monetary amount can be assigned to each point.
5964         */
5965        public ValuedItemComponent setPoints(BigDecimal value) { 
5966          if (value == null)
5967            this.points = null;
5968          else {
5969            if (this.points == null)
5970              this.points = new DecimalType();
5971            this.points.setValue(value);
5972          }
5973          return this;
5974        }
5975
5976        /**
5977         * @param value An amount that expresses the weighting (based on difficulty, cost and/or resource intensiveness) associated with the Contract Valued Item delivered. The concept of Points allows for assignment of point values for a Contract Valued Item, such that a monetary amount can be assigned to each point.
5978         */
5979        public ValuedItemComponent setPoints(long value) { 
5980              this.points = new DecimalType();
5981            this.points.setValue(value);
5982          return this;
5983        }
5984
5985        /**
5986         * @param value An amount that expresses the weighting (based on difficulty, cost and/or resource intensiveness) associated with the Contract Valued Item delivered. The concept of Points allows for assignment of point values for a Contract Valued Item, such that a monetary amount can be assigned to each point.
5987         */
5988        public ValuedItemComponent setPoints(double value) { 
5989              this.points = new DecimalType();
5990            this.points.setValue(value);
5991          return this;
5992        }
5993
5994        /**
5995         * @return {@link #net} (Expresses the product of the Contract Valued Item unitQuantity and the unitPriceAmt. For example, the formula: unit Quantity * unit Price (Cost per Point) * factor Number  * points = net Amount. Quantity, factor and points are assumed to be 1 if not supplied.)
5996         */
5997        public Money getNet() { 
5998          if (this.net == null)
5999            if (Configuration.errorOnAutoCreate())
6000              throw new Error("Attempt to auto-create ValuedItemComponent.net");
6001            else if (Configuration.doAutoCreate())
6002              this.net = new Money(); // cc
6003          return this.net;
6004        }
6005
6006        public boolean hasNet() { 
6007          return this.net != null && !this.net.isEmpty();
6008        }
6009
6010        /**
6011         * @param value {@link #net} (Expresses the product of the Contract Valued Item unitQuantity and the unitPriceAmt. For example, the formula: unit Quantity * unit Price (Cost per Point) * factor Number  * points = net Amount. Quantity, factor and points are assumed to be 1 if not supplied.)
6012         */
6013        public ValuedItemComponent setNet(Money value) { 
6014          this.net = value;
6015          return this;
6016        }
6017
6018        /**
6019         * @return {@link #payment} (Terms of valuation.). This is the underlying object with id, value and extensions. The accessor "getPayment" gives direct access to the value
6020         */
6021        public StringType getPaymentElement() { 
6022          if (this.payment == null)
6023            if (Configuration.errorOnAutoCreate())
6024              throw new Error("Attempt to auto-create ValuedItemComponent.payment");
6025            else if (Configuration.doAutoCreate())
6026              this.payment = new StringType(); // bb
6027          return this.payment;
6028        }
6029
6030        public boolean hasPaymentElement() { 
6031          return this.payment != null && !this.payment.isEmpty();
6032        }
6033
6034        public boolean hasPayment() { 
6035          return this.payment != null && !this.payment.isEmpty();
6036        }
6037
6038        /**
6039         * @param value {@link #payment} (Terms of valuation.). This is the underlying object with id, value and extensions. The accessor "getPayment" gives direct access to the value
6040         */
6041        public ValuedItemComponent setPaymentElement(StringType value) { 
6042          this.payment = value;
6043          return this;
6044        }
6045
6046        /**
6047         * @return Terms of valuation.
6048         */
6049        public String getPayment() { 
6050          return this.payment == null ? null : this.payment.getValue();
6051        }
6052
6053        /**
6054         * @param value Terms of valuation.
6055         */
6056        public ValuedItemComponent setPayment(String value) { 
6057          if (Utilities.noString(value))
6058            this.payment = null;
6059          else {
6060            if (this.payment == null)
6061              this.payment = new StringType();
6062            this.payment.setValue(value);
6063          }
6064          return this;
6065        }
6066
6067        /**
6068         * @return {@link #paymentDate} (When payment is due.). This is the underlying object with id, value and extensions. The accessor "getPaymentDate" gives direct access to the value
6069         */
6070        public DateTimeType getPaymentDateElement() { 
6071          if (this.paymentDate == null)
6072            if (Configuration.errorOnAutoCreate())
6073              throw new Error("Attempt to auto-create ValuedItemComponent.paymentDate");
6074            else if (Configuration.doAutoCreate())
6075              this.paymentDate = new DateTimeType(); // bb
6076          return this.paymentDate;
6077        }
6078
6079        public boolean hasPaymentDateElement() { 
6080          return this.paymentDate != null && !this.paymentDate.isEmpty();
6081        }
6082
6083        public boolean hasPaymentDate() { 
6084          return this.paymentDate != null && !this.paymentDate.isEmpty();
6085        }
6086
6087        /**
6088         * @param value {@link #paymentDate} (When payment is due.). This is the underlying object with id, value and extensions. The accessor "getPaymentDate" gives direct access to the value
6089         */
6090        public ValuedItemComponent setPaymentDateElement(DateTimeType value) { 
6091          this.paymentDate = value;
6092          return this;
6093        }
6094
6095        /**
6096         * @return When payment is due.
6097         */
6098        public Date getPaymentDate() { 
6099          return this.paymentDate == null ? null : this.paymentDate.getValue();
6100        }
6101
6102        /**
6103         * @param value When payment is due.
6104         */
6105        public ValuedItemComponent setPaymentDate(Date value) { 
6106          if (value == null)
6107            this.paymentDate = null;
6108          else {
6109            if (this.paymentDate == null)
6110              this.paymentDate = new DateTimeType();
6111            this.paymentDate.setValue(value);
6112          }
6113          return this;
6114        }
6115
6116        /**
6117         * @return {@link #responsible} (Who will make payment.)
6118         */
6119        public Reference getResponsible() { 
6120          if (this.responsible == null)
6121            if (Configuration.errorOnAutoCreate())
6122              throw new Error("Attempt to auto-create ValuedItemComponent.responsible");
6123            else if (Configuration.doAutoCreate())
6124              this.responsible = new Reference(); // cc
6125          return this.responsible;
6126        }
6127
6128        public boolean hasResponsible() { 
6129          return this.responsible != null && !this.responsible.isEmpty();
6130        }
6131
6132        /**
6133         * @param value {@link #responsible} (Who will make payment.)
6134         */
6135        public ValuedItemComponent setResponsible(Reference value) { 
6136          this.responsible = value;
6137          return this;
6138        }
6139
6140        /**
6141         * @return {@link #recipient} (Who will receive payment.)
6142         */
6143        public Reference getRecipient() { 
6144          if (this.recipient == null)
6145            if (Configuration.errorOnAutoCreate())
6146              throw new Error("Attempt to auto-create ValuedItemComponent.recipient");
6147            else if (Configuration.doAutoCreate())
6148              this.recipient = new Reference(); // cc
6149          return this.recipient;
6150        }
6151
6152        public boolean hasRecipient() { 
6153          return this.recipient != null && !this.recipient.isEmpty();
6154        }
6155
6156        /**
6157         * @param value {@link #recipient} (Who will receive payment.)
6158         */
6159        public ValuedItemComponent setRecipient(Reference value) { 
6160          this.recipient = value;
6161          return this;
6162        }
6163
6164        /**
6165         * @return {@link #linkId} (Id  of the clause or question text related to the context of this valuedItem in the referenced form or QuestionnaireResponse.)
6166         */
6167        public List<StringType> getLinkId() { 
6168          if (this.linkId == null)
6169            this.linkId = new ArrayList<StringType>();
6170          return this.linkId;
6171        }
6172
6173        /**
6174         * @return Returns a reference to <code>this</code> for easy method chaining
6175         */
6176        public ValuedItemComponent setLinkId(List<StringType> theLinkId) { 
6177          this.linkId = theLinkId;
6178          return this;
6179        }
6180
6181        public boolean hasLinkId() { 
6182          if (this.linkId == null)
6183            return false;
6184          for (StringType item : this.linkId)
6185            if (!item.isEmpty())
6186              return true;
6187          return false;
6188        }
6189
6190        /**
6191         * @return {@link #linkId} (Id  of the clause or question text related to the context of this valuedItem in the referenced form or QuestionnaireResponse.)
6192         */
6193        public StringType addLinkIdElement() {//2 
6194          StringType t = new StringType();
6195          if (this.linkId == null)
6196            this.linkId = new ArrayList<StringType>();
6197          this.linkId.add(t);
6198          return t;
6199        }
6200
6201        /**
6202         * @param value {@link #linkId} (Id  of the clause or question text related to the context of this valuedItem in the referenced form or QuestionnaireResponse.)
6203         */
6204        public ValuedItemComponent addLinkId(String value) { //1
6205          StringType t = new StringType();
6206          t.setValue(value);
6207          if (this.linkId == null)
6208            this.linkId = new ArrayList<StringType>();
6209          this.linkId.add(t);
6210          return this;
6211        }
6212
6213        /**
6214         * @param value {@link #linkId} (Id  of the clause or question text related to the context of this valuedItem in the referenced form or QuestionnaireResponse.)
6215         */
6216        public boolean hasLinkId(String value) { 
6217          if (this.linkId == null)
6218            return false;
6219          for (StringType v : this.linkId)
6220            if (v.getValue().equals(value)) // string
6221              return true;
6222          return false;
6223        }
6224
6225        /**
6226         * @return {@link #securityLabelNumber} (A set of security labels that define which terms are controlled by this condition.)
6227         */
6228        public List<UnsignedIntType> getSecurityLabelNumber() { 
6229          if (this.securityLabelNumber == null)
6230            this.securityLabelNumber = new ArrayList<UnsignedIntType>();
6231          return this.securityLabelNumber;
6232        }
6233
6234        /**
6235         * @return Returns a reference to <code>this</code> for easy method chaining
6236         */
6237        public ValuedItemComponent setSecurityLabelNumber(List<UnsignedIntType> theSecurityLabelNumber) { 
6238          this.securityLabelNumber = theSecurityLabelNumber;
6239          return this;
6240        }
6241
6242        public boolean hasSecurityLabelNumber() { 
6243          if (this.securityLabelNumber == null)
6244            return false;
6245          for (UnsignedIntType item : this.securityLabelNumber)
6246            if (!item.isEmpty())
6247              return true;
6248          return false;
6249        }
6250
6251        /**
6252         * @return {@link #securityLabelNumber} (A set of security labels that define which terms are controlled by this condition.)
6253         */
6254        public UnsignedIntType addSecurityLabelNumberElement() {//2 
6255          UnsignedIntType t = new UnsignedIntType();
6256          if (this.securityLabelNumber == null)
6257            this.securityLabelNumber = new ArrayList<UnsignedIntType>();
6258          this.securityLabelNumber.add(t);
6259          return t;
6260        }
6261
6262        /**
6263         * @param value {@link #securityLabelNumber} (A set of security labels that define which terms are controlled by this condition.)
6264         */
6265        public ValuedItemComponent addSecurityLabelNumber(int value) { //1
6266          UnsignedIntType t = new UnsignedIntType();
6267          t.setValue(value);
6268          if (this.securityLabelNumber == null)
6269            this.securityLabelNumber = new ArrayList<UnsignedIntType>();
6270          this.securityLabelNumber.add(t);
6271          return this;
6272        }
6273
6274        /**
6275         * @param value {@link #securityLabelNumber} (A set of security labels that define which terms are controlled by this condition.)
6276         */
6277        public boolean hasSecurityLabelNumber(int value) { 
6278          if (this.securityLabelNumber == null)
6279            return false;
6280          for (UnsignedIntType v : this.securityLabelNumber)
6281            if (v.getValue().equals(value)) // unsignedInt
6282              return true;
6283          return false;
6284        }
6285
6286        protected void listChildren(List<Property> children) {
6287          super.listChildren(children);
6288          children.add(new Property("entity[x]", "CodeableConcept|Reference(Any)", "Specific type of Contract Valued Item that may be priced.", 0, 1, entity));
6289          children.add(new Property("identifier", "Identifier", "Identifies a Contract Valued Item instance.", 0, 1, identifier));
6290          children.add(new Property("effectiveTime", "dateTime", "Indicates the time during which this Contract ValuedItem information is effective.", 0, 1, effectiveTime));
6291          children.add(new Property("quantity", "Quantity", "Specifies the units by which the Contract Valued Item is measured or counted, and quantifies the countable or measurable Contract Valued Item instances.", 0, 1, quantity));
6292          children.add(new Property("unitPrice", "Money", "A Contract Valued Item unit valuation measure.", 0, 1, unitPrice));
6293          children.add(new Property("factor", "decimal", "A real number that represents a multiplier used in determining the overall value of the Contract Valued Item delivered. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount.", 0, 1, factor));
6294          children.add(new Property("points", "decimal", "An amount that expresses the weighting (based on difficulty, cost and/or resource intensiveness) associated with the Contract Valued Item delivered. The concept of Points allows for assignment of point values for a Contract Valued Item, such that a monetary amount can be assigned to each point.", 0, 1, points));
6295          children.add(new Property("net", "Money", "Expresses the product of the Contract Valued Item unitQuantity and the unitPriceAmt. For example, the formula: unit Quantity * unit Price (Cost per Point) * factor Number  * points = net Amount. Quantity, factor and points are assumed to be 1 if not supplied.", 0, 1, net));
6296          children.add(new Property("payment", "string", "Terms of valuation.", 0, 1, payment));
6297          children.add(new Property("paymentDate", "dateTime", "When payment is due.", 0, 1, paymentDate));
6298          children.add(new Property("responsible", "Reference(Organization|Patient|Practitioner|PractitionerRole|RelatedPerson)", "Who will make payment.", 0, 1, responsible));
6299          children.add(new Property("recipient", "Reference(Organization|Patient|Practitioner|PractitionerRole|RelatedPerson)", "Who will receive payment.", 0, 1, recipient));
6300          children.add(new Property("linkId", "string", "Id  of the clause or question text related to the context of this valuedItem in the referenced form or QuestionnaireResponse.", 0, java.lang.Integer.MAX_VALUE, linkId));
6301          children.add(new Property("securityLabelNumber", "unsignedInt", "A set of security labels that define which terms are controlled by this condition.", 0, java.lang.Integer.MAX_VALUE, securityLabelNumber));
6302        }
6303
6304        @Override
6305        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
6306          switch (_hash) {
6307          case -740568643: /*entity[x]*/  return new Property("entity[x]", "CodeableConcept|Reference(Any)", "Specific type of Contract Valued Item that may be priced.", 0, 1, entity);
6308          case -1298275357: /*entity*/  return new Property("entity[x]", "CodeableConcept|Reference(Any)", "Specific type of Contract Valued Item that may be priced.", 0, 1, entity);
6309          case 924197182: /*entityCodeableConcept*/  return new Property("entity[x]", "CodeableConcept", "Specific type of Contract Valued Item that may be priced.", 0, 1, entity);
6310          case -356635992: /*entityReference*/  return new Property("entity[x]", "Reference(Any)", "Specific type of Contract Valued Item that may be priced.", 0, 1, entity);
6311          case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "Identifies a Contract Valued Item instance.", 0, 1, identifier);
6312          case -929905388: /*effectiveTime*/  return new Property("effectiveTime", "dateTime", "Indicates the time during which this Contract ValuedItem information is effective.", 0, 1, effectiveTime);
6313          case -1285004149: /*quantity*/  return new Property("quantity", "Quantity", "Specifies the units by which the Contract Valued Item is measured or counted, and quantifies the countable or measurable Contract Valued Item instances.", 0, 1, quantity);
6314          case -486196699: /*unitPrice*/  return new Property("unitPrice", "Money", "A Contract Valued Item unit valuation measure.", 0, 1, unitPrice);
6315          case -1282148017: /*factor*/  return new Property("factor", "decimal", "A real number that represents a multiplier used in determining the overall value of the Contract Valued Item delivered. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount.", 0, 1, factor);
6316          case -982754077: /*points*/  return new Property("points", "decimal", "An amount that expresses the weighting (based on difficulty, cost and/or resource intensiveness) associated with the Contract Valued Item delivered. The concept of Points allows for assignment of point values for a Contract Valued Item, such that a monetary amount can be assigned to each point.", 0, 1, points);
6317          case 108957: /*net*/  return new Property("net", "Money", "Expresses the product of the Contract Valued Item unitQuantity and the unitPriceAmt. For example, the formula: unit Quantity * unit Price (Cost per Point) * factor Number  * points = net Amount. Quantity, factor and points are assumed to be 1 if not supplied.", 0, 1, net);
6318          case -786681338: /*payment*/  return new Property("payment", "string", "Terms of valuation.", 0, 1, payment);
6319          case -1540873516: /*paymentDate*/  return new Property("paymentDate", "dateTime", "When payment is due.", 0, 1, paymentDate);
6320          case 1847674614: /*responsible*/  return new Property("responsible", "Reference(Organization|Patient|Practitioner|PractitionerRole|RelatedPerson)", "Who will make payment.", 0, 1, responsible);
6321          case 820081177: /*recipient*/  return new Property("recipient", "Reference(Organization|Patient|Practitioner|PractitionerRole|RelatedPerson)", "Who will receive payment.", 0, 1, recipient);
6322          case -1102667083: /*linkId*/  return new Property("linkId", "string", "Id  of the clause or question text related to the context of this valuedItem in the referenced form or QuestionnaireResponse.", 0, java.lang.Integer.MAX_VALUE, linkId);
6323          case -149460995: /*securityLabelNumber*/  return new Property("securityLabelNumber", "unsignedInt", "A set of security labels that define which terms are controlled by this condition.", 0, java.lang.Integer.MAX_VALUE, securityLabelNumber);
6324          default: return super.getNamedProperty(_hash, _name, _checkValid);
6325          }
6326
6327        }
6328
6329      @Override
6330      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
6331        switch (hash) {
6332        case -1298275357: /*entity*/ return this.entity == null ? new Base[0] : new Base[] {this.entity}; // DataType
6333        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : new Base[] {this.identifier}; // Identifier
6334        case -929905388: /*effectiveTime*/ return this.effectiveTime == null ? new Base[0] : new Base[] {this.effectiveTime}; // DateTimeType
6335        case -1285004149: /*quantity*/ return this.quantity == null ? new Base[0] : new Base[] {this.quantity}; // Quantity
6336        case -486196699: /*unitPrice*/ return this.unitPrice == null ? new Base[0] : new Base[] {this.unitPrice}; // Money
6337        case -1282148017: /*factor*/ return this.factor == null ? new Base[0] : new Base[] {this.factor}; // DecimalType
6338        case -982754077: /*points*/ return this.points == null ? new Base[0] : new Base[] {this.points}; // DecimalType
6339        case 108957: /*net*/ return this.net == null ? new Base[0] : new Base[] {this.net}; // Money
6340        case -786681338: /*payment*/ return this.payment == null ? new Base[0] : new Base[] {this.payment}; // StringType
6341        case -1540873516: /*paymentDate*/ return this.paymentDate == null ? new Base[0] : new Base[] {this.paymentDate}; // DateTimeType
6342        case 1847674614: /*responsible*/ return this.responsible == null ? new Base[0] : new Base[] {this.responsible}; // Reference
6343        case 820081177: /*recipient*/ return this.recipient == null ? new Base[0] : new Base[] {this.recipient}; // Reference
6344        case -1102667083: /*linkId*/ return this.linkId == null ? new Base[0] : this.linkId.toArray(new Base[this.linkId.size()]); // StringType
6345        case -149460995: /*securityLabelNumber*/ return this.securityLabelNumber == null ? new Base[0] : this.securityLabelNumber.toArray(new Base[this.securityLabelNumber.size()]); // UnsignedIntType
6346        default: return super.getProperty(hash, name, checkValid);
6347        }
6348
6349      }
6350
6351      @Override
6352      public Base setProperty(int hash, String name, Base value) throws FHIRException {
6353        switch (hash) {
6354        case -1298275357: // entity
6355          this.entity = TypeConvertor.castToType(value); // DataType
6356          return value;
6357        case -1618432855: // identifier
6358          this.identifier = TypeConvertor.castToIdentifier(value); // Identifier
6359          return value;
6360        case -929905388: // effectiveTime
6361          this.effectiveTime = TypeConvertor.castToDateTime(value); // DateTimeType
6362          return value;
6363        case -1285004149: // quantity
6364          this.quantity = TypeConvertor.castToQuantity(value); // Quantity
6365          return value;
6366        case -486196699: // unitPrice
6367          this.unitPrice = TypeConvertor.castToMoney(value); // Money
6368          return value;
6369        case -1282148017: // factor
6370          this.factor = TypeConvertor.castToDecimal(value); // DecimalType
6371          return value;
6372        case -982754077: // points
6373          this.points = TypeConvertor.castToDecimal(value); // DecimalType
6374          return value;
6375        case 108957: // net
6376          this.net = TypeConvertor.castToMoney(value); // Money
6377          return value;
6378        case -786681338: // payment
6379          this.payment = TypeConvertor.castToString(value); // StringType
6380          return value;
6381        case -1540873516: // paymentDate
6382          this.paymentDate = TypeConvertor.castToDateTime(value); // DateTimeType
6383          return value;
6384        case 1847674614: // responsible
6385          this.responsible = TypeConvertor.castToReference(value); // Reference
6386          return value;
6387        case 820081177: // recipient
6388          this.recipient = TypeConvertor.castToReference(value); // Reference
6389          return value;
6390        case -1102667083: // linkId
6391          this.getLinkId().add(TypeConvertor.castToString(value)); // StringType
6392          return value;
6393        case -149460995: // securityLabelNumber
6394          this.getSecurityLabelNumber().add(TypeConvertor.castToUnsignedInt(value)); // UnsignedIntType
6395          return value;
6396        default: return super.setProperty(hash, name, value);
6397        }
6398
6399      }
6400
6401      @Override
6402      public Base setProperty(String name, Base value) throws FHIRException {
6403        if (name.equals("entity[x]")) {
6404          this.entity = TypeConvertor.castToType(value); // DataType
6405        } else if (name.equals("identifier")) {
6406          this.identifier = TypeConvertor.castToIdentifier(value); // Identifier
6407        } else if (name.equals("effectiveTime")) {
6408          this.effectiveTime = TypeConvertor.castToDateTime(value); // DateTimeType
6409        } else if (name.equals("quantity")) {
6410          this.quantity = TypeConvertor.castToQuantity(value); // Quantity
6411        } else if (name.equals("unitPrice")) {
6412          this.unitPrice = TypeConvertor.castToMoney(value); // Money
6413        } else if (name.equals("factor")) {
6414          this.factor = TypeConvertor.castToDecimal(value); // DecimalType
6415        } else if (name.equals("points")) {
6416          this.points = TypeConvertor.castToDecimal(value); // DecimalType
6417        } else if (name.equals("net")) {
6418          this.net = TypeConvertor.castToMoney(value); // Money
6419        } else if (name.equals("payment")) {
6420          this.payment = TypeConvertor.castToString(value); // StringType
6421        } else if (name.equals("paymentDate")) {
6422          this.paymentDate = TypeConvertor.castToDateTime(value); // DateTimeType
6423        } else if (name.equals("responsible")) {
6424          this.responsible = TypeConvertor.castToReference(value); // Reference
6425        } else if (name.equals("recipient")) {
6426          this.recipient = TypeConvertor.castToReference(value); // Reference
6427        } else if (name.equals("linkId")) {
6428          this.getLinkId().add(TypeConvertor.castToString(value));
6429        } else if (name.equals("securityLabelNumber")) {
6430          this.getSecurityLabelNumber().add(TypeConvertor.castToUnsignedInt(value));
6431        } else
6432          return super.setProperty(name, value);
6433        return value;
6434      }
6435
6436  @Override
6437  public void removeChild(String name, Base value) throws FHIRException {
6438        if (name.equals("entity[x]")) {
6439          this.entity = null;
6440        } else if (name.equals("identifier")) {
6441          this.identifier = null;
6442        } else if (name.equals("effectiveTime")) {
6443          this.effectiveTime = null;
6444        } else if (name.equals("quantity")) {
6445          this.quantity = null;
6446        } else if (name.equals("unitPrice")) {
6447          this.unitPrice = null;
6448        } else if (name.equals("factor")) {
6449          this.factor = null;
6450        } else if (name.equals("points")) {
6451          this.points = null;
6452        } else if (name.equals("net")) {
6453          this.net = null;
6454        } else if (name.equals("payment")) {
6455          this.payment = null;
6456        } else if (name.equals("paymentDate")) {
6457          this.paymentDate = null;
6458        } else if (name.equals("responsible")) {
6459          this.responsible = null;
6460        } else if (name.equals("recipient")) {
6461          this.recipient = null;
6462        } else if (name.equals("linkId")) {
6463          this.getLinkId().remove(value);
6464        } else if (name.equals("securityLabelNumber")) {
6465          this.getSecurityLabelNumber().remove(value);
6466        } else
6467          super.removeChild(name, value);
6468        
6469      }
6470
6471      @Override
6472      public Base makeProperty(int hash, String name) throws FHIRException {
6473        switch (hash) {
6474        case -740568643:  return getEntity();
6475        case -1298275357:  return getEntity();
6476        case -1618432855:  return getIdentifier();
6477        case -929905388:  return getEffectiveTimeElement();
6478        case -1285004149:  return getQuantity();
6479        case -486196699:  return getUnitPrice();
6480        case -1282148017:  return getFactorElement();
6481        case -982754077:  return getPointsElement();
6482        case 108957:  return getNet();
6483        case -786681338:  return getPaymentElement();
6484        case -1540873516:  return getPaymentDateElement();
6485        case 1847674614:  return getResponsible();
6486        case 820081177:  return getRecipient();
6487        case -1102667083:  return addLinkIdElement();
6488        case -149460995:  return addSecurityLabelNumberElement();
6489        default: return super.makeProperty(hash, name);
6490        }
6491
6492      }
6493
6494      @Override
6495      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
6496        switch (hash) {
6497        case -1298275357: /*entity*/ return new String[] {"CodeableConcept", "Reference"};
6498        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
6499        case -929905388: /*effectiveTime*/ return new String[] {"dateTime"};
6500        case -1285004149: /*quantity*/ return new String[] {"Quantity"};
6501        case -486196699: /*unitPrice*/ return new String[] {"Money"};
6502        case -1282148017: /*factor*/ return new String[] {"decimal"};
6503        case -982754077: /*points*/ return new String[] {"decimal"};
6504        case 108957: /*net*/ return new String[] {"Money"};
6505        case -786681338: /*payment*/ return new String[] {"string"};
6506        case -1540873516: /*paymentDate*/ return new String[] {"dateTime"};
6507        case 1847674614: /*responsible*/ return new String[] {"Reference"};
6508        case 820081177: /*recipient*/ return new String[] {"Reference"};
6509        case -1102667083: /*linkId*/ return new String[] {"string"};
6510        case -149460995: /*securityLabelNumber*/ return new String[] {"unsignedInt"};
6511        default: return super.getTypesForProperty(hash, name);
6512        }
6513
6514      }
6515
6516      @Override
6517      public Base addChild(String name) throws FHIRException {
6518        if (name.equals("entityCodeableConcept")) {
6519          this.entity = new CodeableConcept();
6520          return this.entity;
6521        }
6522        else if (name.equals("entityReference")) {
6523          this.entity = new Reference();
6524          return this.entity;
6525        }
6526        else if (name.equals("identifier")) {
6527          this.identifier = new Identifier();
6528          return this.identifier;
6529        }
6530        else if (name.equals("effectiveTime")) {
6531          throw new FHIRException("Cannot call addChild on a singleton property Contract.term.asset.valuedItem.effectiveTime");
6532        }
6533        else if (name.equals("quantity")) {
6534          this.quantity = new Quantity();
6535          return this.quantity;
6536        }
6537        else if (name.equals("unitPrice")) {
6538          this.unitPrice = new Money();
6539          return this.unitPrice;
6540        }
6541        else if (name.equals("factor")) {
6542          throw new FHIRException("Cannot call addChild on a singleton property Contract.term.asset.valuedItem.factor");
6543        }
6544        else if (name.equals("points")) {
6545          throw new FHIRException("Cannot call addChild on a singleton property Contract.term.asset.valuedItem.points");
6546        }
6547        else if (name.equals("net")) {
6548          this.net = new Money();
6549          return this.net;
6550        }
6551        else if (name.equals("payment")) {
6552          throw new FHIRException("Cannot call addChild on a singleton property Contract.term.asset.valuedItem.payment");
6553        }
6554        else if (name.equals("paymentDate")) {
6555          throw new FHIRException("Cannot call addChild on a singleton property Contract.term.asset.valuedItem.paymentDate");
6556        }
6557        else if (name.equals("responsible")) {
6558          this.responsible = new Reference();
6559          return this.responsible;
6560        }
6561        else if (name.equals("recipient")) {
6562          this.recipient = new Reference();
6563          return this.recipient;
6564        }
6565        else if (name.equals("linkId")) {
6566          throw new FHIRException("Cannot call addChild on a singleton property Contract.term.asset.valuedItem.linkId");
6567        }
6568        else if (name.equals("securityLabelNumber")) {
6569          throw new FHIRException("Cannot call addChild on a singleton property Contract.term.asset.valuedItem.securityLabelNumber");
6570        }
6571        else
6572          return super.addChild(name);
6573      }
6574
6575      public ValuedItemComponent copy() {
6576        ValuedItemComponent dst = new ValuedItemComponent();
6577        copyValues(dst);
6578        return dst;
6579      }
6580
6581      public void copyValues(ValuedItemComponent dst) {
6582        super.copyValues(dst);
6583        dst.entity = entity == null ? null : entity.copy();
6584        dst.identifier = identifier == null ? null : identifier.copy();
6585        dst.effectiveTime = effectiveTime == null ? null : effectiveTime.copy();
6586        dst.quantity = quantity == null ? null : quantity.copy();
6587        dst.unitPrice = unitPrice == null ? null : unitPrice.copy();
6588        dst.factor = factor == null ? null : factor.copy();
6589        dst.points = points == null ? null : points.copy();
6590        dst.net = net == null ? null : net.copy();
6591        dst.payment = payment == null ? null : payment.copy();
6592        dst.paymentDate = paymentDate == null ? null : paymentDate.copy();
6593        dst.responsible = responsible == null ? null : responsible.copy();
6594        dst.recipient = recipient == null ? null : recipient.copy();
6595        if (linkId != null) {
6596          dst.linkId = new ArrayList<StringType>();
6597          for (StringType i : linkId)
6598            dst.linkId.add(i.copy());
6599        };
6600        if (securityLabelNumber != null) {
6601          dst.securityLabelNumber = new ArrayList<UnsignedIntType>();
6602          for (UnsignedIntType i : securityLabelNumber)
6603            dst.securityLabelNumber.add(i.copy());
6604        };
6605      }
6606
6607      @Override
6608      public boolean equalsDeep(Base other_) {
6609        if (!super.equalsDeep(other_))
6610          return false;
6611        if (!(other_ instanceof ValuedItemComponent))
6612          return false;
6613        ValuedItemComponent o = (ValuedItemComponent) other_;
6614        return compareDeep(entity, o.entity, true) && compareDeep(identifier, o.identifier, true) && compareDeep(effectiveTime, o.effectiveTime, true)
6615           && compareDeep(quantity, o.quantity, true) && compareDeep(unitPrice, o.unitPrice, true) && compareDeep(factor, o.factor, true)
6616           && compareDeep(points, o.points, true) && compareDeep(net, o.net, true) && compareDeep(payment, o.payment, true)
6617           && compareDeep(paymentDate, o.paymentDate, true) && compareDeep(responsible, o.responsible, true)
6618           && compareDeep(recipient, o.recipient, true) && compareDeep(linkId, o.linkId, true) && compareDeep(securityLabelNumber, o.securityLabelNumber, true)
6619          ;
6620      }
6621
6622      @Override
6623      public boolean equalsShallow(Base other_) {
6624        if (!super.equalsShallow(other_))
6625          return false;
6626        if (!(other_ instanceof ValuedItemComponent))
6627          return false;
6628        ValuedItemComponent o = (ValuedItemComponent) other_;
6629        return compareValues(effectiveTime, o.effectiveTime, true) && compareValues(factor, o.factor, true)
6630           && compareValues(points, o.points, true) && compareValues(payment, o.payment, true) && compareValues(paymentDate, o.paymentDate, true)
6631           && compareValues(linkId, o.linkId, true) && compareValues(securityLabelNumber, o.securityLabelNumber, true)
6632          ;
6633      }
6634
6635      public boolean isEmpty() {
6636        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(entity, identifier, effectiveTime
6637          , quantity, unitPrice, factor, points, net, payment, paymentDate, responsible
6638          , recipient, linkId, securityLabelNumber);
6639      }
6640
6641  public String fhirType() {
6642    return "Contract.term.asset.valuedItem";
6643
6644  }
6645
6646  }
6647
6648    @Block()
6649    public static class ActionComponent extends BackboneElement implements IBaseBackboneElement {
6650        /**
6651         * True if the term prohibits the  action.
6652         */
6653        @Child(name = "doNotPerform", type = {BooleanType.class}, order=1, min=0, max=1, modifier=true, summary=false)
6654        @Description(shortDefinition="True if the term prohibits the  action", formalDefinition="True if the term prohibits the  action." )
6655        protected BooleanType doNotPerform;
6656
6657        /**
6658         * Activity or service obligation to be done or not done, performed or not performed, effectuated or not by this Contract term.
6659         */
6660        @Child(name = "type", type = {CodeableConcept.class}, order=2, min=1, max=1, modifier=false, summary=false)
6661        @Description(shortDefinition="Type or form of the action", formalDefinition="Activity or service obligation to be done or not done, performed or not performed, effectuated or not by this Contract term." )
6662        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/contract-action")
6663        protected CodeableConcept type;
6664
6665        /**
6666         * Entity of the action.
6667         */
6668        @Child(name = "subject", type = {}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
6669        @Description(shortDefinition="Entity of the action", formalDefinition="Entity of the action." )
6670        protected List<ActionSubjectComponent> subject;
6671
6672        /**
6673         * Reason or purpose for the action stipulated by this Contract Provision.
6674         */
6675        @Child(name = "intent", type = {CodeableConcept.class}, order=4, min=1, max=1, modifier=false, summary=false)
6676        @Description(shortDefinition="Purpose for the Contract Term Action", formalDefinition="Reason or purpose for the action stipulated by this Contract Provision." )
6677        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://terminology.hl7.org/ValueSet/v3-PurposeOfUse")
6678        protected CodeableConcept intent;
6679
6680        /**
6681         * Id [identifier??] of the clause or question text related to this action in the referenced form or QuestionnaireResponse.
6682         */
6683        @Child(name = "linkId", type = {StringType.class}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
6684        @Description(shortDefinition="Pointer to specific item", formalDefinition="Id [identifier??] of the clause or question text related to this action in the referenced form or QuestionnaireResponse." )
6685        protected List<StringType> linkId;
6686
6687        /**
6688         * Current state of the term action.
6689         */
6690        @Child(name = "status", type = {CodeableConcept.class}, order=6, min=1, max=1, modifier=false, summary=false)
6691        @Description(shortDefinition="State of the action", formalDefinition="Current state of the term action." )
6692        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/contract-actionstatus")
6693        protected CodeableConcept status;
6694
6695        /**
6696         * Encounter or Episode with primary association to the specified term activity.
6697         */
6698        @Child(name = "context", type = {Encounter.class, EpisodeOfCare.class}, order=7, min=0, max=1, modifier=false, summary=false)
6699        @Description(shortDefinition="Episode associated with action", formalDefinition="Encounter or Episode with primary association to the specified term activity." )
6700        protected Reference context;
6701
6702        /**
6703         * Id [identifier??] of the clause or question text related to the requester of this action in the referenced form or QuestionnaireResponse.
6704         */
6705        @Child(name = "contextLinkId", type = {StringType.class}, order=8, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
6706        @Description(shortDefinition="Pointer to specific item", formalDefinition="Id [identifier??] of the clause or question text related to the requester of this action in the referenced form or QuestionnaireResponse." )
6707        protected List<StringType> contextLinkId;
6708
6709        /**
6710         * When action happens.
6711         */
6712        @Child(name = "occurrence", type = {DateTimeType.class, Period.class, Timing.class}, order=9, min=0, max=1, modifier=false, summary=false)
6713        @Description(shortDefinition="When action happens", formalDefinition="When action happens." )
6714        protected DataType occurrence;
6715
6716        /**
6717         * Who or what initiated the action and has responsibility for its activation.
6718         */
6719        @Child(name = "requester", type = {Patient.class, RelatedPerson.class, Practitioner.class, PractitionerRole.class, Device.class, Group.class, Organization.class}, order=10, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
6720        @Description(shortDefinition="Who asked for action", formalDefinition="Who or what initiated the action and has responsibility for its activation." )
6721        protected List<Reference> requester;
6722
6723        /**
6724         * Id [identifier??] of the clause or question text related to the requester of this action in the referenced form or QuestionnaireResponse.
6725         */
6726        @Child(name = "requesterLinkId", type = {StringType.class}, order=11, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
6727        @Description(shortDefinition="Pointer to specific item", formalDefinition="Id [identifier??] of the clause or question text related to the requester of this action in the referenced form or QuestionnaireResponse." )
6728        protected List<StringType> requesterLinkId;
6729
6730        /**
6731         * The type of individual that is desired or required to perform or not perform the action.
6732         */
6733        @Child(name = "performerType", type = {CodeableConcept.class}, order=12, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
6734        @Description(shortDefinition="Kind of service performer", formalDefinition="The type of individual that is desired or required to perform or not perform the action." )
6735        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/participation-role-type")
6736        protected List<CodeableConcept> performerType;
6737
6738        /**
6739         * The type of role or competency of an individual desired or required to perform or not perform the action.
6740         */
6741        @Child(name = "performerRole", type = {CodeableConcept.class}, order=13, min=0, max=1, modifier=false, summary=false)
6742        @Description(shortDefinition="Competency of the performer", formalDefinition="The type of role or competency of an individual desired or required to perform or not perform the action." )
6743        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/security-role-type")
6744        protected CodeableConcept performerRole;
6745
6746        /**
6747         * Indicates who or what is being asked to perform (or not perform) the ction.
6748         */
6749        @Child(name = "performer", type = {RelatedPerson.class, Patient.class, Practitioner.class, PractitionerRole.class, CareTeam.class, Device.class, Substance.class, Organization.class, Location.class}, order=14, min=0, max=1, modifier=false, summary=false)
6750        @Description(shortDefinition="Actor that wil execute (or not) the action", formalDefinition="Indicates who or what is being asked to perform (or not perform) the ction." )
6751        protected Reference performer;
6752
6753        /**
6754         * Id [identifier??] of the clause or question text related to the reason type or reference of this  action in the referenced form or QuestionnaireResponse.
6755         */
6756        @Child(name = "performerLinkId", type = {StringType.class}, order=15, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
6757        @Description(shortDefinition="Pointer to specific item", formalDefinition="Id [identifier??] of the clause or question text related to the reason type or reference of this  action in the referenced form or QuestionnaireResponse." )
6758        protected List<StringType> performerLinkId;
6759
6760        /**
6761         * Rationale for the action to be performed or not performed. Describes why the action is permitted or prohibited. Either a coded concept, or another resource whose existence justifies permitting or not permitting this action.
6762         */
6763        @Child(name = "reason", type = {CodeableReference.class}, order=16, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
6764        @Description(shortDefinition="Why is action (not) needed?", formalDefinition="Rationale for the action to be performed or not performed. Describes why the action is permitted or prohibited. Either a coded concept, or another resource whose existence justifies permitting or not permitting this action." )
6765        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://terminology.hl7.org/ValueSet/v3-PurposeOfUse")
6766        protected List<CodeableReference> reason;
6767
6768        /**
6769         * Id [identifier??] of the clause or question text related to the reason type or reference of this  action in the referenced form or QuestionnaireResponse.
6770         */
6771        @Child(name = "reasonLinkId", type = {StringType.class}, order=17, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
6772        @Description(shortDefinition="Pointer to specific item", formalDefinition="Id [identifier??] of the clause or question text related to the reason type or reference of this  action in the referenced form or QuestionnaireResponse." )
6773        protected List<StringType> reasonLinkId;
6774
6775        /**
6776         * Comments made about the term action made by the requester, performer, subject or other participants.
6777         */
6778        @Child(name = "note", type = {Annotation.class}, order=18, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
6779        @Description(shortDefinition="Comments about the action", formalDefinition="Comments made about the term action made by the requester, performer, subject or other participants." )
6780        protected List<Annotation> note;
6781
6782        /**
6783         * Security labels that protects the action.
6784         */
6785        @Child(name = "securityLabelNumber", type = {UnsignedIntType.class}, order=19, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
6786        @Description(shortDefinition="Action restriction numbers", formalDefinition="Security labels that protects the action." )
6787        protected List<UnsignedIntType> securityLabelNumber;
6788
6789        private static final long serialVersionUID = 337159017L;
6790
6791    /**
6792     * Constructor
6793     */
6794      public ActionComponent() {
6795        super();
6796      }
6797
6798    /**
6799     * Constructor
6800     */
6801      public ActionComponent(CodeableConcept type, CodeableConcept intent, CodeableConcept status) {
6802        super();
6803        this.setType(type);
6804        this.setIntent(intent);
6805        this.setStatus(status);
6806      }
6807
6808        /**
6809         * @return {@link #doNotPerform} (True if the term prohibits the  action.). This is the underlying object with id, value and extensions. The accessor "getDoNotPerform" gives direct access to the value
6810         */
6811        public BooleanType getDoNotPerformElement() { 
6812          if (this.doNotPerform == null)
6813            if (Configuration.errorOnAutoCreate())
6814              throw new Error("Attempt to auto-create ActionComponent.doNotPerform");
6815            else if (Configuration.doAutoCreate())
6816              this.doNotPerform = new BooleanType(); // bb
6817          return this.doNotPerform;
6818        }
6819
6820        public boolean hasDoNotPerformElement() { 
6821          return this.doNotPerform != null && !this.doNotPerform.isEmpty();
6822        }
6823
6824        public boolean hasDoNotPerform() { 
6825          return this.doNotPerform != null && !this.doNotPerform.isEmpty();
6826        }
6827
6828        /**
6829         * @param value {@link #doNotPerform} (True if the term prohibits the  action.). This is the underlying object with id, value and extensions. The accessor "getDoNotPerform" gives direct access to the value
6830         */
6831        public ActionComponent setDoNotPerformElement(BooleanType value) { 
6832          this.doNotPerform = value;
6833          return this;
6834        }
6835
6836        /**
6837         * @return True if the term prohibits the  action.
6838         */
6839        public boolean getDoNotPerform() { 
6840          return this.doNotPerform == null || this.doNotPerform.isEmpty() ? false : this.doNotPerform.getValue();
6841        }
6842
6843        /**
6844         * @param value True if the term prohibits the  action.
6845         */
6846        public ActionComponent setDoNotPerform(boolean value) { 
6847            if (this.doNotPerform == null)
6848              this.doNotPerform = new BooleanType();
6849            this.doNotPerform.setValue(value);
6850          return this;
6851        }
6852
6853        /**
6854         * @return {@link #type} (Activity or service obligation to be done or not done, performed or not performed, effectuated or not by this Contract term.)
6855         */
6856        public CodeableConcept getType() { 
6857          if (this.type == null)
6858            if (Configuration.errorOnAutoCreate())
6859              throw new Error("Attempt to auto-create ActionComponent.type");
6860            else if (Configuration.doAutoCreate())
6861              this.type = new CodeableConcept(); // cc
6862          return this.type;
6863        }
6864
6865        public boolean hasType() { 
6866          return this.type != null && !this.type.isEmpty();
6867        }
6868
6869        /**
6870         * @param value {@link #type} (Activity or service obligation to be done or not done, performed or not performed, effectuated or not by this Contract term.)
6871         */
6872        public ActionComponent setType(CodeableConcept value) { 
6873          this.type = value;
6874          return this;
6875        }
6876
6877        /**
6878         * @return {@link #subject} (Entity of the action.)
6879         */
6880        public List<ActionSubjectComponent> getSubject() { 
6881          if (this.subject == null)
6882            this.subject = new ArrayList<ActionSubjectComponent>();
6883          return this.subject;
6884        }
6885
6886        /**
6887         * @return Returns a reference to <code>this</code> for easy method chaining
6888         */
6889        public ActionComponent setSubject(List<ActionSubjectComponent> theSubject) { 
6890          this.subject = theSubject;
6891          return this;
6892        }
6893
6894        public boolean hasSubject() { 
6895          if (this.subject == null)
6896            return false;
6897          for (ActionSubjectComponent item : this.subject)
6898            if (!item.isEmpty())
6899              return true;
6900          return false;
6901        }
6902
6903        public ActionSubjectComponent addSubject() { //3
6904          ActionSubjectComponent t = new ActionSubjectComponent();
6905          if (this.subject == null)
6906            this.subject = new ArrayList<ActionSubjectComponent>();
6907          this.subject.add(t);
6908          return t;
6909        }
6910
6911        public ActionComponent addSubject(ActionSubjectComponent t) { //3
6912          if (t == null)
6913            return this;
6914          if (this.subject == null)
6915            this.subject = new ArrayList<ActionSubjectComponent>();
6916          this.subject.add(t);
6917          return this;
6918        }
6919
6920        /**
6921         * @return The first repetition of repeating field {@link #subject}, creating it if it does not already exist {3}
6922         */
6923        public ActionSubjectComponent getSubjectFirstRep() { 
6924          if (getSubject().isEmpty()) {
6925            addSubject();
6926          }
6927          return getSubject().get(0);
6928        }
6929
6930        /**
6931         * @return {@link #intent} (Reason or purpose for the action stipulated by this Contract Provision.)
6932         */
6933        public CodeableConcept getIntent() { 
6934          if (this.intent == null)
6935            if (Configuration.errorOnAutoCreate())
6936              throw new Error("Attempt to auto-create ActionComponent.intent");
6937            else if (Configuration.doAutoCreate())
6938              this.intent = new CodeableConcept(); // cc
6939          return this.intent;
6940        }
6941
6942        public boolean hasIntent() { 
6943          return this.intent != null && !this.intent.isEmpty();
6944        }
6945
6946        /**
6947         * @param value {@link #intent} (Reason or purpose for the action stipulated by this Contract Provision.)
6948         */
6949        public ActionComponent setIntent(CodeableConcept value) { 
6950          this.intent = value;
6951          return this;
6952        }
6953
6954        /**
6955         * @return {@link #linkId} (Id [identifier??] of the clause or question text related to this action in the referenced form or QuestionnaireResponse.)
6956         */
6957        public List<StringType> getLinkId() { 
6958          if (this.linkId == null)
6959            this.linkId = new ArrayList<StringType>();
6960          return this.linkId;
6961        }
6962
6963        /**
6964         * @return Returns a reference to <code>this</code> for easy method chaining
6965         */
6966        public ActionComponent setLinkId(List<StringType> theLinkId) { 
6967          this.linkId = theLinkId;
6968          return this;
6969        }
6970
6971        public boolean hasLinkId() { 
6972          if (this.linkId == null)
6973            return false;
6974          for (StringType item : this.linkId)
6975            if (!item.isEmpty())
6976              return true;
6977          return false;
6978        }
6979
6980        /**
6981         * @return {@link #linkId} (Id [identifier??] of the clause or question text related to this action in the referenced form or QuestionnaireResponse.)
6982         */
6983        public StringType addLinkIdElement() {//2 
6984          StringType t = new StringType();
6985          if (this.linkId == null)
6986            this.linkId = new ArrayList<StringType>();
6987          this.linkId.add(t);
6988          return t;
6989        }
6990
6991        /**
6992         * @param value {@link #linkId} (Id [identifier??] of the clause or question text related to this action in the referenced form or QuestionnaireResponse.)
6993         */
6994        public ActionComponent addLinkId(String value) { //1
6995          StringType t = new StringType();
6996          t.setValue(value);
6997          if (this.linkId == null)
6998            this.linkId = new ArrayList<StringType>();
6999          this.linkId.add(t);
7000          return this;
7001        }
7002
7003        /**
7004         * @param value {@link #linkId} (Id [identifier??] of the clause or question text related to this action in the referenced form or QuestionnaireResponse.)
7005         */
7006        public boolean hasLinkId(String value) { 
7007          if (this.linkId == null)
7008            return false;
7009          for (StringType v : this.linkId)
7010            if (v.getValue().equals(value)) // string
7011              return true;
7012          return false;
7013        }
7014
7015        /**
7016         * @return {@link #status} (Current state of the term action.)
7017         */
7018        public CodeableConcept getStatus() { 
7019          if (this.status == null)
7020            if (Configuration.errorOnAutoCreate())
7021              throw new Error("Attempt to auto-create ActionComponent.status");
7022            else if (Configuration.doAutoCreate())
7023              this.status = new CodeableConcept(); // cc
7024          return this.status;
7025        }
7026
7027        public boolean hasStatus() { 
7028          return this.status != null && !this.status.isEmpty();
7029        }
7030
7031        /**
7032         * @param value {@link #status} (Current state of the term action.)
7033         */
7034        public ActionComponent setStatus(CodeableConcept value) { 
7035          this.status = value;
7036          return this;
7037        }
7038
7039        /**
7040         * @return {@link #context} (Encounter or Episode with primary association to the specified term activity.)
7041         */
7042        public Reference getContext() { 
7043          if (this.context == null)
7044            if (Configuration.errorOnAutoCreate())
7045              throw new Error("Attempt to auto-create ActionComponent.context");
7046            else if (Configuration.doAutoCreate())
7047              this.context = new Reference(); // cc
7048          return this.context;
7049        }
7050
7051        public boolean hasContext() { 
7052          return this.context != null && !this.context.isEmpty();
7053        }
7054
7055        /**
7056         * @param value {@link #context} (Encounter or Episode with primary association to the specified term activity.)
7057         */
7058        public ActionComponent setContext(Reference value) { 
7059          this.context = value;
7060          return this;
7061        }
7062
7063        /**
7064         * @return {@link #contextLinkId} (Id [identifier??] of the clause or question text related to the requester of this action in the referenced form or QuestionnaireResponse.)
7065         */
7066        public List<StringType> getContextLinkId() { 
7067          if (this.contextLinkId == null)
7068            this.contextLinkId = new ArrayList<StringType>();
7069          return this.contextLinkId;
7070        }
7071
7072        /**
7073         * @return Returns a reference to <code>this</code> for easy method chaining
7074         */
7075        public ActionComponent setContextLinkId(List<StringType> theContextLinkId) { 
7076          this.contextLinkId = theContextLinkId;
7077          return this;
7078        }
7079
7080        public boolean hasContextLinkId() { 
7081          if (this.contextLinkId == null)
7082            return false;
7083          for (StringType item : this.contextLinkId)
7084            if (!item.isEmpty())
7085              return true;
7086          return false;
7087        }
7088
7089        /**
7090         * @return {@link #contextLinkId} (Id [identifier??] of the clause or question text related to the requester of this action in the referenced form or QuestionnaireResponse.)
7091         */
7092        public StringType addContextLinkIdElement() {//2 
7093          StringType t = new StringType();
7094          if (this.contextLinkId == null)
7095            this.contextLinkId = new ArrayList<StringType>();
7096          this.contextLinkId.add(t);
7097          return t;
7098        }
7099
7100        /**
7101         * @param value {@link #contextLinkId} (Id [identifier??] of the clause or question text related to the requester of this action in the referenced form or QuestionnaireResponse.)
7102         */
7103        public ActionComponent addContextLinkId(String value) { //1
7104          StringType t = new StringType();
7105          t.setValue(value);
7106          if (this.contextLinkId == null)
7107            this.contextLinkId = new ArrayList<StringType>();
7108          this.contextLinkId.add(t);
7109          return this;
7110        }
7111
7112        /**
7113         * @param value {@link #contextLinkId} (Id [identifier??] of the clause or question text related to the requester of this action in the referenced form or QuestionnaireResponse.)
7114         */
7115        public boolean hasContextLinkId(String value) { 
7116          if (this.contextLinkId == null)
7117            return false;
7118          for (StringType v : this.contextLinkId)
7119            if (v.getValue().equals(value)) // string
7120              return true;
7121          return false;
7122        }
7123
7124        /**
7125         * @return {@link #occurrence} (When action happens.)
7126         */
7127        public DataType getOccurrence() { 
7128          return this.occurrence;
7129        }
7130
7131        /**
7132         * @return {@link #occurrence} (When action happens.)
7133         */
7134        public DateTimeType getOccurrenceDateTimeType() throws FHIRException { 
7135          if (this.occurrence == null)
7136            this.occurrence = new DateTimeType();
7137          if (!(this.occurrence instanceof DateTimeType))
7138            throw new FHIRException("Type mismatch: the type DateTimeType was expected, but "+this.occurrence.getClass().getName()+" was encountered");
7139          return (DateTimeType) this.occurrence;
7140        }
7141
7142        public boolean hasOccurrenceDateTimeType() { 
7143          return this != null && this.occurrence instanceof DateTimeType;
7144        }
7145
7146        /**
7147         * @return {@link #occurrence} (When action happens.)
7148         */
7149        public Period getOccurrencePeriod() throws FHIRException { 
7150          if (this.occurrence == null)
7151            this.occurrence = new Period();
7152          if (!(this.occurrence instanceof Period))
7153            throw new FHIRException("Type mismatch: the type Period was expected, but "+this.occurrence.getClass().getName()+" was encountered");
7154          return (Period) this.occurrence;
7155        }
7156
7157        public boolean hasOccurrencePeriod() { 
7158          return this != null && this.occurrence instanceof Period;
7159        }
7160
7161        /**
7162         * @return {@link #occurrence} (When action happens.)
7163         */
7164        public Timing getOccurrenceTiming() throws FHIRException { 
7165          if (this.occurrence == null)
7166            this.occurrence = new Timing();
7167          if (!(this.occurrence instanceof Timing))
7168            throw new FHIRException("Type mismatch: the type Timing was expected, but "+this.occurrence.getClass().getName()+" was encountered");
7169          return (Timing) this.occurrence;
7170        }
7171
7172        public boolean hasOccurrenceTiming() { 
7173          return this != null && this.occurrence instanceof Timing;
7174        }
7175
7176        public boolean hasOccurrence() { 
7177          return this.occurrence != null && !this.occurrence.isEmpty();
7178        }
7179
7180        /**
7181         * @param value {@link #occurrence} (When action happens.)
7182         */
7183        public ActionComponent setOccurrence(DataType value) { 
7184          if (value != null && !(value instanceof DateTimeType || value instanceof Period || value instanceof Timing))
7185            throw new FHIRException("Not the right type for Contract.term.action.occurrence[x]: "+value.fhirType());
7186          this.occurrence = value;
7187          return this;
7188        }
7189
7190        /**
7191         * @return {@link #requester} (Who or what initiated the action and has responsibility for its activation.)
7192         */
7193        public List<Reference> getRequester() { 
7194          if (this.requester == null)
7195            this.requester = new ArrayList<Reference>();
7196          return this.requester;
7197        }
7198
7199        /**
7200         * @return Returns a reference to <code>this</code> for easy method chaining
7201         */
7202        public ActionComponent setRequester(List<Reference> theRequester) { 
7203          this.requester = theRequester;
7204          return this;
7205        }
7206
7207        public boolean hasRequester() { 
7208          if (this.requester == null)
7209            return false;
7210          for (Reference item : this.requester)
7211            if (!item.isEmpty())
7212              return true;
7213          return false;
7214        }
7215
7216        public Reference addRequester() { //3
7217          Reference t = new Reference();
7218          if (this.requester == null)
7219            this.requester = new ArrayList<Reference>();
7220          this.requester.add(t);
7221          return t;
7222        }
7223
7224        public ActionComponent addRequester(Reference t) { //3
7225          if (t == null)
7226            return this;
7227          if (this.requester == null)
7228            this.requester = new ArrayList<Reference>();
7229          this.requester.add(t);
7230          return this;
7231        }
7232
7233        /**
7234         * @return The first repetition of repeating field {@link #requester}, creating it if it does not already exist {3}
7235         */
7236        public Reference getRequesterFirstRep() { 
7237          if (getRequester().isEmpty()) {
7238            addRequester();
7239          }
7240          return getRequester().get(0);
7241        }
7242
7243        /**
7244         * @return {@link #requesterLinkId} (Id [identifier??] of the clause or question text related to the requester of this action in the referenced form or QuestionnaireResponse.)
7245         */
7246        public List<StringType> getRequesterLinkId() { 
7247          if (this.requesterLinkId == null)
7248            this.requesterLinkId = new ArrayList<StringType>();
7249          return this.requesterLinkId;
7250        }
7251
7252        /**
7253         * @return Returns a reference to <code>this</code> for easy method chaining
7254         */
7255        public ActionComponent setRequesterLinkId(List<StringType> theRequesterLinkId) { 
7256          this.requesterLinkId = theRequesterLinkId;
7257          return this;
7258        }
7259
7260        public boolean hasRequesterLinkId() { 
7261          if (this.requesterLinkId == null)
7262            return false;
7263          for (StringType item : this.requesterLinkId)
7264            if (!item.isEmpty())
7265              return true;
7266          return false;
7267        }
7268
7269        /**
7270         * @return {@link #requesterLinkId} (Id [identifier??] of the clause or question text related to the requester of this action in the referenced form or QuestionnaireResponse.)
7271         */
7272        public StringType addRequesterLinkIdElement() {//2 
7273          StringType t = new StringType();
7274          if (this.requesterLinkId == null)
7275            this.requesterLinkId = new ArrayList<StringType>();
7276          this.requesterLinkId.add(t);
7277          return t;
7278        }
7279
7280        /**
7281         * @param value {@link #requesterLinkId} (Id [identifier??] of the clause or question text related to the requester of this action in the referenced form or QuestionnaireResponse.)
7282         */
7283        public ActionComponent addRequesterLinkId(String value) { //1
7284          StringType t = new StringType();
7285          t.setValue(value);
7286          if (this.requesterLinkId == null)
7287            this.requesterLinkId = new ArrayList<StringType>();
7288          this.requesterLinkId.add(t);
7289          return this;
7290        }
7291
7292        /**
7293         * @param value {@link #requesterLinkId} (Id [identifier??] of the clause or question text related to the requester of this action in the referenced form or QuestionnaireResponse.)
7294         */
7295        public boolean hasRequesterLinkId(String value) { 
7296          if (this.requesterLinkId == null)
7297            return false;
7298          for (StringType v : this.requesterLinkId)
7299            if (v.getValue().equals(value)) // string
7300              return true;
7301          return false;
7302        }
7303
7304        /**
7305         * @return {@link #performerType} (The type of individual that is desired or required to perform or not perform the action.)
7306         */
7307        public List<CodeableConcept> getPerformerType() { 
7308          if (this.performerType == null)
7309            this.performerType = new ArrayList<CodeableConcept>();
7310          return this.performerType;
7311        }
7312
7313        /**
7314         * @return Returns a reference to <code>this</code> for easy method chaining
7315         */
7316        public ActionComponent setPerformerType(List<CodeableConcept> thePerformerType) { 
7317          this.performerType = thePerformerType;
7318          return this;
7319        }
7320
7321        public boolean hasPerformerType() { 
7322          if (this.performerType == null)
7323            return false;
7324          for (CodeableConcept item : this.performerType)
7325            if (!item.isEmpty())
7326              return true;
7327          return false;
7328        }
7329
7330        public CodeableConcept addPerformerType() { //3
7331          CodeableConcept t = new CodeableConcept();
7332          if (this.performerType == null)
7333            this.performerType = new ArrayList<CodeableConcept>();
7334          this.performerType.add(t);
7335          return t;
7336        }
7337
7338        public ActionComponent addPerformerType(CodeableConcept t) { //3
7339          if (t == null)
7340            return this;
7341          if (this.performerType == null)
7342            this.performerType = new ArrayList<CodeableConcept>();
7343          this.performerType.add(t);
7344          return this;
7345        }
7346
7347        /**
7348         * @return The first repetition of repeating field {@link #performerType}, creating it if it does not already exist {3}
7349         */
7350        public CodeableConcept getPerformerTypeFirstRep() { 
7351          if (getPerformerType().isEmpty()) {
7352            addPerformerType();
7353          }
7354          return getPerformerType().get(0);
7355        }
7356
7357        /**
7358         * @return {@link #performerRole} (The type of role or competency of an individual desired or required to perform or not perform the action.)
7359         */
7360        public CodeableConcept getPerformerRole() { 
7361          if (this.performerRole == null)
7362            if (Configuration.errorOnAutoCreate())
7363              throw new Error("Attempt to auto-create ActionComponent.performerRole");
7364            else if (Configuration.doAutoCreate())
7365              this.performerRole = new CodeableConcept(); // cc
7366          return this.performerRole;
7367        }
7368
7369        public boolean hasPerformerRole() { 
7370          return this.performerRole != null && !this.performerRole.isEmpty();
7371        }
7372
7373        /**
7374         * @param value {@link #performerRole} (The type of role or competency of an individual desired or required to perform or not perform the action.)
7375         */
7376        public ActionComponent setPerformerRole(CodeableConcept value) { 
7377          this.performerRole = value;
7378          return this;
7379        }
7380
7381        /**
7382         * @return {@link #performer} (Indicates who or what is being asked to perform (or not perform) the ction.)
7383         */
7384        public Reference getPerformer() { 
7385          if (this.performer == null)
7386            if (Configuration.errorOnAutoCreate())
7387              throw new Error("Attempt to auto-create ActionComponent.performer");
7388            else if (Configuration.doAutoCreate())
7389              this.performer = new Reference(); // cc
7390          return this.performer;
7391        }
7392
7393        public boolean hasPerformer() { 
7394          return this.performer != null && !this.performer.isEmpty();
7395        }
7396
7397        /**
7398         * @param value {@link #performer} (Indicates who or what is being asked to perform (or not perform) the ction.)
7399         */
7400        public ActionComponent setPerformer(Reference value) { 
7401          this.performer = value;
7402          return this;
7403        }
7404
7405        /**
7406         * @return {@link #performerLinkId} (Id [identifier??] of the clause or question text related to the reason type or reference of this  action in the referenced form or QuestionnaireResponse.)
7407         */
7408        public List<StringType> getPerformerLinkId() { 
7409          if (this.performerLinkId == null)
7410            this.performerLinkId = new ArrayList<StringType>();
7411          return this.performerLinkId;
7412        }
7413
7414        /**
7415         * @return Returns a reference to <code>this</code> for easy method chaining
7416         */
7417        public ActionComponent setPerformerLinkId(List<StringType> thePerformerLinkId) { 
7418          this.performerLinkId = thePerformerLinkId;
7419          return this;
7420        }
7421
7422        public boolean hasPerformerLinkId() { 
7423          if (this.performerLinkId == null)
7424            return false;
7425          for (StringType item : this.performerLinkId)
7426            if (!item.isEmpty())
7427              return true;
7428          return false;
7429        }
7430
7431        /**
7432         * @return {@link #performerLinkId} (Id [identifier??] of the clause or question text related to the reason type or reference of this  action in the referenced form or QuestionnaireResponse.)
7433         */
7434        public StringType addPerformerLinkIdElement() {//2 
7435          StringType t = new StringType();
7436          if (this.performerLinkId == null)
7437            this.performerLinkId = new ArrayList<StringType>();
7438          this.performerLinkId.add(t);
7439          return t;
7440        }
7441
7442        /**
7443         * @param value {@link #performerLinkId} (Id [identifier??] of the clause or question text related to the reason type or reference of this  action in the referenced form or QuestionnaireResponse.)
7444         */
7445        public ActionComponent addPerformerLinkId(String value) { //1
7446          StringType t = new StringType();
7447          t.setValue(value);
7448          if (this.performerLinkId == null)
7449            this.performerLinkId = new ArrayList<StringType>();
7450          this.performerLinkId.add(t);
7451          return this;
7452        }
7453
7454        /**
7455         * @param value {@link #performerLinkId} (Id [identifier??] of the clause or question text related to the reason type or reference of this  action in the referenced form or QuestionnaireResponse.)
7456         */
7457        public boolean hasPerformerLinkId(String value) { 
7458          if (this.performerLinkId == null)
7459            return false;
7460          for (StringType v : this.performerLinkId)
7461            if (v.getValue().equals(value)) // string
7462              return true;
7463          return false;
7464        }
7465
7466        /**
7467         * @return {@link #reason} (Rationale for the action to be performed or not performed. Describes why the action is permitted or prohibited. Either a coded concept, or another resource whose existence justifies permitting or not permitting this action.)
7468         */
7469        public List<CodeableReference> getReason() { 
7470          if (this.reason == null)
7471            this.reason = new ArrayList<CodeableReference>();
7472          return this.reason;
7473        }
7474
7475        /**
7476         * @return Returns a reference to <code>this</code> for easy method chaining
7477         */
7478        public ActionComponent setReason(List<CodeableReference> theReason) { 
7479          this.reason = theReason;
7480          return this;
7481        }
7482
7483        public boolean hasReason() { 
7484          if (this.reason == null)
7485            return false;
7486          for (CodeableReference item : this.reason)
7487            if (!item.isEmpty())
7488              return true;
7489          return false;
7490        }
7491
7492        public CodeableReference addReason() { //3
7493          CodeableReference t = new CodeableReference();
7494          if (this.reason == null)
7495            this.reason = new ArrayList<CodeableReference>();
7496          this.reason.add(t);
7497          return t;
7498        }
7499
7500        public ActionComponent addReason(CodeableReference t) { //3
7501          if (t == null)
7502            return this;
7503          if (this.reason == null)
7504            this.reason = new ArrayList<CodeableReference>();
7505          this.reason.add(t);
7506          return this;
7507        }
7508
7509        /**
7510         * @return The first repetition of repeating field {@link #reason}, creating it if it does not already exist {3}
7511         */
7512        public CodeableReference getReasonFirstRep() { 
7513          if (getReason().isEmpty()) {
7514            addReason();
7515          }
7516          return getReason().get(0);
7517        }
7518
7519        /**
7520         * @return {@link #reasonLinkId} (Id [identifier??] of the clause or question text related to the reason type or reference of this  action in the referenced form or QuestionnaireResponse.)
7521         */
7522        public List<StringType> getReasonLinkId() { 
7523          if (this.reasonLinkId == null)
7524            this.reasonLinkId = new ArrayList<StringType>();
7525          return this.reasonLinkId;
7526        }
7527
7528        /**
7529         * @return Returns a reference to <code>this</code> for easy method chaining
7530         */
7531        public ActionComponent setReasonLinkId(List<StringType> theReasonLinkId) { 
7532          this.reasonLinkId = theReasonLinkId;
7533          return this;
7534        }
7535
7536        public boolean hasReasonLinkId() { 
7537          if (this.reasonLinkId == null)
7538            return false;
7539          for (StringType item : this.reasonLinkId)
7540            if (!item.isEmpty())
7541              return true;
7542          return false;
7543        }
7544
7545        /**
7546         * @return {@link #reasonLinkId} (Id [identifier??] of the clause or question text related to the reason type or reference of this  action in the referenced form or QuestionnaireResponse.)
7547         */
7548        public StringType addReasonLinkIdElement() {//2 
7549          StringType t = new StringType();
7550          if (this.reasonLinkId == null)
7551            this.reasonLinkId = new ArrayList<StringType>();
7552          this.reasonLinkId.add(t);
7553          return t;
7554        }
7555
7556        /**
7557         * @param value {@link #reasonLinkId} (Id [identifier??] of the clause or question text related to the reason type or reference of this  action in the referenced form or QuestionnaireResponse.)
7558         */
7559        public ActionComponent addReasonLinkId(String value) { //1
7560          StringType t = new StringType();
7561          t.setValue(value);
7562          if (this.reasonLinkId == null)
7563            this.reasonLinkId = new ArrayList<StringType>();
7564          this.reasonLinkId.add(t);
7565          return this;
7566        }
7567
7568        /**
7569         * @param value {@link #reasonLinkId} (Id [identifier??] of the clause or question text related to the reason type or reference of this  action in the referenced form or QuestionnaireResponse.)
7570         */
7571        public boolean hasReasonLinkId(String value) { 
7572          if (this.reasonLinkId == null)
7573            return false;
7574          for (StringType v : this.reasonLinkId)
7575            if (v.getValue().equals(value)) // string
7576              return true;
7577          return false;
7578        }
7579
7580        /**
7581         * @return {@link #note} (Comments made about the term action made by the requester, performer, subject or other participants.)
7582         */
7583        public List<Annotation> getNote() { 
7584          if (this.note == null)
7585            this.note = new ArrayList<Annotation>();
7586          return this.note;
7587        }
7588
7589        /**
7590         * @return Returns a reference to <code>this</code> for easy method chaining
7591         */
7592        public ActionComponent setNote(List<Annotation> theNote) { 
7593          this.note = theNote;
7594          return this;
7595        }
7596
7597        public boolean hasNote() { 
7598          if (this.note == null)
7599            return false;
7600          for (Annotation item : this.note)
7601            if (!item.isEmpty())
7602              return true;
7603          return false;
7604        }
7605
7606        public Annotation addNote() { //3
7607          Annotation t = new Annotation();
7608          if (this.note == null)
7609            this.note = new ArrayList<Annotation>();
7610          this.note.add(t);
7611          return t;
7612        }
7613
7614        public ActionComponent addNote(Annotation t) { //3
7615          if (t == null)
7616            return this;
7617          if (this.note == null)
7618            this.note = new ArrayList<Annotation>();
7619          this.note.add(t);
7620          return this;
7621        }
7622
7623        /**
7624         * @return The first repetition of repeating field {@link #note}, creating it if it does not already exist {3}
7625         */
7626        public Annotation getNoteFirstRep() { 
7627          if (getNote().isEmpty()) {
7628            addNote();
7629          }
7630          return getNote().get(0);
7631        }
7632
7633        /**
7634         * @return {@link #securityLabelNumber} (Security labels that protects the action.)
7635         */
7636        public List<UnsignedIntType> getSecurityLabelNumber() { 
7637          if (this.securityLabelNumber == null)
7638            this.securityLabelNumber = new ArrayList<UnsignedIntType>();
7639          return this.securityLabelNumber;
7640        }
7641
7642        /**
7643         * @return Returns a reference to <code>this</code> for easy method chaining
7644         */
7645        public ActionComponent setSecurityLabelNumber(List<UnsignedIntType> theSecurityLabelNumber) { 
7646          this.securityLabelNumber = theSecurityLabelNumber;
7647          return this;
7648        }
7649
7650        public boolean hasSecurityLabelNumber() { 
7651          if (this.securityLabelNumber == null)
7652            return false;
7653          for (UnsignedIntType item : this.securityLabelNumber)
7654            if (!item.isEmpty())
7655              return true;
7656          return false;
7657        }
7658
7659        /**
7660         * @return {@link #securityLabelNumber} (Security labels that protects the action.)
7661         */
7662        public UnsignedIntType addSecurityLabelNumberElement() {//2 
7663          UnsignedIntType t = new UnsignedIntType();
7664          if (this.securityLabelNumber == null)
7665            this.securityLabelNumber = new ArrayList<UnsignedIntType>();
7666          this.securityLabelNumber.add(t);
7667          return t;
7668        }
7669
7670        /**
7671         * @param value {@link #securityLabelNumber} (Security labels that protects the action.)
7672         */
7673        public ActionComponent addSecurityLabelNumber(int value) { //1
7674          UnsignedIntType t = new UnsignedIntType();
7675          t.setValue(value);
7676          if (this.securityLabelNumber == null)
7677            this.securityLabelNumber = new ArrayList<UnsignedIntType>();
7678          this.securityLabelNumber.add(t);
7679          return this;
7680        }
7681
7682        /**
7683         * @param value {@link #securityLabelNumber} (Security labels that protects the action.)
7684         */
7685        public boolean hasSecurityLabelNumber(int value) { 
7686          if (this.securityLabelNumber == null)
7687            return false;
7688          for (UnsignedIntType v : this.securityLabelNumber)
7689            if (v.getValue().equals(value)) // unsignedInt
7690              return true;
7691          return false;
7692        }
7693
7694        protected void listChildren(List<Property> children) {
7695          super.listChildren(children);
7696          children.add(new Property("doNotPerform", "boolean", "True if the term prohibits the  action.", 0, 1, doNotPerform));
7697          children.add(new Property("type", "CodeableConcept", "Activity or service obligation to be done or not done, performed or not performed, effectuated or not by this Contract term.", 0, 1, type));
7698          children.add(new Property("subject", "", "Entity of the action.", 0, java.lang.Integer.MAX_VALUE, subject));
7699          children.add(new Property("intent", "CodeableConcept", "Reason or purpose for the action stipulated by this Contract Provision.", 0, 1, intent));
7700          children.add(new Property("linkId", "string", "Id [identifier??] of the clause or question text related to this action in the referenced form or QuestionnaireResponse.", 0, java.lang.Integer.MAX_VALUE, linkId));
7701          children.add(new Property("status", "CodeableConcept", "Current state of the term action.", 0, 1, status));
7702          children.add(new Property("context", "Reference(Encounter|EpisodeOfCare)", "Encounter or Episode with primary association to the specified term activity.", 0, 1, context));
7703          children.add(new Property("contextLinkId", "string", "Id [identifier??] of the clause or question text related to the requester of this action in the referenced form or QuestionnaireResponse.", 0, java.lang.Integer.MAX_VALUE, contextLinkId));
7704          children.add(new Property("occurrence[x]", "dateTime|Period|Timing", "When action happens.", 0, 1, occurrence));
7705          children.add(new Property("requester", "Reference(Patient|RelatedPerson|Practitioner|PractitionerRole|Device|Group|Organization)", "Who or what initiated the action and has responsibility for its activation.", 0, java.lang.Integer.MAX_VALUE, requester));
7706          children.add(new Property("requesterLinkId", "string", "Id [identifier??] of the clause or question text related to the requester of this action in the referenced form or QuestionnaireResponse.", 0, java.lang.Integer.MAX_VALUE, requesterLinkId));
7707          children.add(new Property("performerType", "CodeableConcept", "The type of individual that is desired or required to perform or not perform the action.", 0, java.lang.Integer.MAX_VALUE, performerType));
7708          children.add(new Property("performerRole", "CodeableConcept", "The type of role or competency of an individual desired or required to perform or not perform the action.", 0, 1, performerRole));
7709          children.add(new Property("performer", "Reference(RelatedPerson|Patient|Practitioner|PractitionerRole|CareTeam|Device|Substance|Organization|Location)", "Indicates who or what is being asked to perform (or not perform) the ction.", 0, 1, performer));
7710          children.add(new Property("performerLinkId", "string", "Id [identifier??] of the clause or question text related to the reason type or reference of this  action in the referenced form or QuestionnaireResponse.", 0, java.lang.Integer.MAX_VALUE, performerLinkId));
7711          children.add(new Property("reason", "CodeableReference(Condition|Observation|DiagnosticReport|DocumentReference|Questionnaire|QuestionnaireResponse)", "Rationale for the action to be performed or not performed. Describes why the action is permitted or prohibited. Either a coded concept, or another resource whose existence justifies permitting or not permitting this action.", 0, java.lang.Integer.MAX_VALUE, reason));
7712          children.add(new Property("reasonLinkId", "string", "Id [identifier??] of the clause or question text related to the reason type or reference of this  action in the referenced form or QuestionnaireResponse.", 0, java.lang.Integer.MAX_VALUE, reasonLinkId));
7713          children.add(new Property("note", "Annotation", "Comments made about the term action made by the requester, performer, subject or other participants.", 0, java.lang.Integer.MAX_VALUE, note));
7714          children.add(new Property("securityLabelNumber", "unsignedInt", "Security labels that protects the action.", 0, java.lang.Integer.MAX_VALUE, securityLabelNumber));
7715        }
7716
7717        @Override
7718        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
7719          switch (_hash) {
7720          case -1788508167: /*doNotPerform*/  return new Property("doNotPerform", "boolean", "True if the term prohibits the  action.", 0, 1, doNotPerform);
7721          case 3575610: /*type*/  return new Property("type", "CodeableConcept", "Activity or service obligation to be done or not done, performed or not performed, effectuated or not by this Contract term.", 0, 1, type);
7722          case -1867885268: /*subject*/  return new Property("subject", "", "Entity of the action.", 0, java.lang.Integer.MAX_VALUE, subject);
7723          case -1183762788: /*intent*/  return new Property("intent", "CodeableConcept", "Reason or purpose for the action stipulated by this Contract Provision.", 0, 1, intent);
7724          case -1102667083: /*linkId*/  return new Property("linkId", "string", "Id [identifier??] of the clause or question text related to this action in the referenced form or QuestionnaireResponse.", 0, java.lang.Integer.MAX_VALUE, linkId);
7725          case -892481550: /*status*/  return new Property("status", "CodeableConcept", "Current state of the term action.", 0, 1, status);
7726          case 951530927: /*context*/  return new Property("context", "Reference(Encounter|EpisodeOfCare)", "Encounter or Episode with primary association to the specified term activity.", 0, 1, context);
7727          case -288783036: /*contextLinkId*/  return new Property("contextLinkId", "string", "Id [identifier??] of the clause or question text related to the requester of this action in the referenced form or QuestionnaireResponse.", 0, java.lang.Integer.MAX_VALUE, contextLinkId);
7728          case -2022646513: /*occurrence[x]*/  return new Property("occurrence[x]", "dateTime|Period|Timing", "When action happens.", 0, 1, occurrence);
7729          case 1687874001: /*occurrence*/  return new Property("occurrence[x]", "dateTime|Period|Timing", "When action happens.", 0, 1, occurrence);
7730          case -298443636: /*occurrenceDateTime*/  return new Property("occurrence[x]", "dateTime", "When action happens.", 0, 1, occurrence);
7731          case 1397156594: /*occurrencePeriod*/  return new Property("occurrence[x]", "Period", "When action happens.", 0, 1, occurrence);
7732          case 1515218299: /*occurrenceTiming*/  return new Property("occurrence[x]", "Timing", "When action happens.", 0, 1, occurrence);
7733          case 693933948: /*requester*/  return new Property("requester", "Reference(Patient|RelatedPerson|Practitioner|PractitionerRole|Device|Group|Organization)", "Who or what initiated the action and has responsibility for its activation.", 0, java.lang.Integer.MAX_VALUE, requester);
7734          case -1468032687: /*requesterLinkId*/  return new Property("requesterLinkId", "string", "Id [identifier??] of the clause or question text related to the requester of this action in the referenced form or QuestionnaireResponse.", 0, java.lang.Integer.MAX_VALUE, requesterLinkId);
7735          case -901444568: /*performerType*/  return new Property("performerType", "CodeableConcept", "The type of individual that is desired or required to perform or not perform the action.", 0, java.lang.Integer.MAX_VALUE, performerType);
7736          case -901513884: /*performerRole*/  return new Property("performerRole", "CodeableConcept", "The type of role or competency of an individual desired or required to perform or not perform the action.", 0, 1, performerRole);
7737          case 481140686: /*performer*/  return new Property("performer", "Reference(RelatedPerson|Patient|Practitioner|PractitionerRole|CareTeam|Device|Substance|Organization|Location)", "Indicates who or what is being asked to perform (or not perform) the ction.", 0, 1, performer);
7738          case 1051302947: /*performerLinkId*/  return new Property("performerLinkId", "string", "Id [identifier??] of the clause or question text related to the reason type or reference of this  action in the referenced form or QuestionnaireResponse.", 0, java.lang.Integer.MAX_VALUE, performerLinkId);
7739          case -934964668: /*reason*/  return new Property("reason", "CodeableReference(Condition|Observation|DiagnosticReport|DocumentReference|Questionnaire|QuestionnaireResponse)", "Rationale for the action to be performed or not performed. Describes why the action is permitted or prohibited. Either a coded concept, or another resource whose existence justifies permitting or not permitting this action.", 0, java.lang.Integer.MAX_VALUE, reason);
7740          case -1557963239: /*reasonLinkId*/  return new Property("reasonLinkId", "string", "Id [identifier??] of the clause or question text related to the reason type or reference of this  action in the referenced form or QuestionnaireResponse.", 0, java.lang.Integer.MAX_VALUE, reasonLinkId);
7741          case 3387378: /*note*/  return new Property("note", "Annotation", "Comments made about the term action made by the requester, performer, subject or other participants.", 0, java.lang.Integer.MAX_VALUE, note);
7742          case -149460995: /*securityLabelNumber*/  return new Property("securityLabelNumber", "unsignedInt", "Security labels that protects the action.", 0, java.lang.Integer.MAX_VALUE, securityLabelNumber);
7743          default: return super.getNamedProperty(_hash, _name, _checkValid);
7744          }
7745
7746        }
7747
7748      @Override
7749      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
7750        switch (hash) {
7751        case -1788508167: /*doNotPerform*/ return this.doNotPerform == null ? new Base[0] : new Base[] {this.doNotPerform}; // BooleanType
7752        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // CodeableConcept
7753        case -1867885268: /*subject*/ return this.subject == null ? new Base[0] : this.subject.toArray(new Base[this.subject.size()]); // ActionSubjectComponent
7754        case -1183762788: /*intent*/ return this.intent == null ? new Base[0] : new Base[] {this.intent}; // CodeableConcept
7755        case -1102667083: /*linkId*/ return this.linkId == null ? new Base[0] : this.linkId.toArray(new Base[this.linkId.size()]); // StringType
7756        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // CodeableConcept
7757        case 951530927: /*context*/ return this.context == null ? new Base[0] : new Base[] {this.context}; // Reference
7758        case -288783036: /*contextLinkId*/ return this.contextLinkId == null ? new Base[0] : this.contextLinkId.toArray(new Base[this.contextLinkId.size()]); // StringType
7759        case 1687874001: /*occurrence*/ return this.occurrence == null ? new Base[0] : new Base[] {this.occurrence}; // DataType
7760        case 693933948: /*requester*/ return this.requester == null ? new Base[0] : this.requester.toArray(new Base[this.requester.size()]); // Reference
7761        case -1468032687: /*requesterLinkId*/ return this.requesterLinkId == null ? new Base[0] : this.requesterLinkId.toArray(new Base[this.requesterLinkId.size()]); // StringType
7762        case -901444568: /*performerType*/ return this.performerType == null ? new Base[0] : this.performerType.toArray(new Base[this.performerType.size()]); // CodeableConcept
7763        case -901513884: /*performerRole*/ return this.performerRole == null ? new Base[0] : new Base[] {this.performerRole}; // CodeableConcept
7764        case 481140686: /*performer*/ return this.performer == null ? new Base[0] : new Base[] {this.performer}; // Reference
7765        case 1051302947: /*performerLinkId*/ return this.performerLinkId == null ? new Base[0] : this.performerLinkId.toArray(new Base[this.performerLinkId.size()]); // StringType
7766        case -934964668: /*reason*/ return this.reason == null ? new Base[0] : this.reason.toArray(new Base[this.reason.size()]); // CodeableReference
7767        case -1557963239: /*reasonLinkId*/ return this.reasonLinkId == null ? new Base[0] : this.reasonLinkId.toArray(new Base[this.reasonLinkId.size()]); // StringType
7768        case 3387378: /*note*/ return this.note == null ? new Base[0] : this.note.toArray(new Base[this.note.size()]); // Annotation
7769        case -149460995: /*securityLabelNumber*/ return this.securityLabelNumber == null ? new Base[0] : this.securityLabelNumber.toArray(new Base[this.securityLabelNumber.size()]); // UnsignedIntType
7770        default: return super.getProperty(hash, name, checkValid);
7771        }
7772
7773      }
7774
7775      @Override
7776      public Base setProperty(int hash, String name, Base value) throws FHIRException {
7777        switch (hash) {
7778        case -1788508167: // doNotPerform
7779          this.doNotPerform = TypeConvertor.castToBoolean(value); // BooleanType
7780          return value;
7781        case 3575610: // type
7782          this.type = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
7783          return value;
7784        case -1867885268: // subject
7785          this.getSubject().add((ActionSubjectComponent) value); // ActionSubjectComponent
7786          return value;
7787        case -1183762788: // intent
7788          this.intent = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
7789          return value;
7790        case -1102667083: // linkId
7791          this.getLinkId().add(TypeConvertor.castToString(value)); // StringType
7792          return value;
7793        case -892481550: // status
7794          this.status = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
7795          return value;
7796        case 951530927: // context
7797          this.context = TypeConvertor.castToReference(value); // Reference
7798          return value;
7799        case -288783036: // contextLinkId
7800          this.getContextLinkId().add(TypeConvertor.castToString(value)); // StringType
7801          return value;
7802        case 1687874001: // occurrence
7803          this.occurrence = TypeConvertor.castToType(value); // DataType
7804          return value;
7805        case 693933948: // requester
7806          this.getRequester().add(TypeConvertor.castToReference(value)); // Reference
7807          return value;
7808        case -1468032687: // requesterLinkId
7809          this.getRequesterLinkId().add(TypeConvertor.castToString(value)); // StringType
7810          return value;
7811        case -901444568: // performerType
7812          this.getPerformerType().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
7813          return value;
7814        case -901513884: // performerRole
7815          this.performerRole = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
7816          return value;
7817        case 481140686: // performer
7818          this.performer = TypeConvertor.castToReference(value); // Reference
7819          return value;
7820        case 1051302947: // performerLinkId
7821          this.getPerformerLinkId().add(TypeConvertor.castToString(value)); // StringType
7822          return value;
7823        case -934964668: // reason
7824          this.getReason().add(TypeConvertor.castToCodeableReference(value)); // CodeableReference
7825          return value;
7826        case -1557963239: // reasonLinkId
7827          this.getReasonLinkId().add(TypeConvertor.castToString(value)); // StringType
7828          return value;
7829        case 3387378: // note
7830          this.getNote().add(TypeConvertor.castToAnnotation(value)); // Annotation
7831          return value;
7832        case -149460995: // securityLabelNumber
7833          this.getSecurityLabelNumber().add(TypeConvertor.castToUnsignedInt(value)); // UnsignedIntType
7834          return value;
7835        default: return super.setProperty(hash, name, value);
7836        }
7837
7838      }
7839
7840      @Override
7841      public Base setProperty(String name, Base value) throws FHIRException {
7842        if (name.equals("doNotPerform")) {
7843          this.doNotPerform = TypeConvertor.castToBoolean(value); // BooleanType
7844        } else if (name.equals("type")) {
7845          this.type = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
7846        } else if (name.equals("subject")) {
7847          this.getSubject().add((ActionSubjectComponent) value);
7848        } else if (name.equals("intent")) {
7849          this.intent = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
7850        } else if (name.equals("linkId")) {
7851          this.getLinkId().add(TypeConvertor.castToString(value));
7852        } else if (name.equals("status")) {
7853          this.status = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
7854        } else if (name.equals("context")) {
7855          this.context = TypeConvertor.castToReference(value); // Reference
7856        } else if (name.equals("contextLinkId")) {
7857          this.getContextLinkId().add(TypeConvertor.castToString(value));
7858        } else if (name.equals("occurrence[x]")) {
7859          this.occurrence = TypeConvertor.castToType(value); // DataType
7860        } else if (name.equals("requester")) {
7861          this.getRequester().add(TypeConvertor.castToReference(value));
7862        } else if (name.equals("requesterLinkId")) {
7863          this.getRequesterLinkId().add(TypeConvertor.castToString(value));
7864        } else if (name.equals("performerType")) {
7865          this.getPerformerType().add(TypeConvertor.castToCodeableConcept(value));
7866        } else if (name.equals("performerRole")) {
7867          this.performerRole = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
7868        } else if (name.equals("performer")) {
7869          this.performer = TypeConvertor.castToReference(value); // Reference
7870        } else if (name.equals("performerLinkId")) {
7871          this.getPerformerLinkId().add(TypeConvertor.castToString(value));
7872        } else if (name.equals("reason")) {
7873          this.getReason().add(TypeConvertor.castToCodeableReference(value));
7874        } else if (name.equals("reasonLinkId")) {
7875          this.getReasonLinkId().add(TypeConvertor.castToString(value));
7876        } else if (name.equals("note")) {
7877          this.getNote().add(TypeConvertor.castToAnnotation(value));
7878        } else if (name.equals("securityLabelNumber")) {
7879          this.getSecurityLabelNumber().add(TypeConvertor.castToUnsignedInt(value));
7880        } else
7881          return super.setProperty(name, value);
7882        return value;
7883      }
7884
7885  @Override
7886  public void removeChild(String name, Base value) throws FHIRException {
7887        if (name.equals("doNotPerform")) {
7888          this.doNotPerform = null;
7889        } else if (name.equals("type")) {
7890          this.type = null;
7891        } else if (name.equals("subject")) {
7892          this.getSubject().remove((ActionSubjectComponent) value);
7893        } else if (name.equals("intent")) {
7894          this.intent = null;
7895        } else if (name.equals("linkId")) {
7896          this.getLinkId().remove(value);
7897        } else if (name.equals("status")) {
7898          this.status = null;
7899        } else if (name.equals("context")) {
7900          this.context = null;
7901        } else if (name.equals("contextLinkId")) {
7902          this.getContextLinkId().remove(value);
7903        } else if (name.equals("occurrence[x]")) {
7904          this.occurrence = null;
7905        } else if (name.equals("requester")) {
7906          this.getRequester().remove(value);
7907        } else if (name.equals("requesterLinkId")) {
7908          this.getRequesterLinkId().remove(value);
7909        } else if (name.equals("performerType")) {
7910          this.getPerformerType().remove(value);
7911        } else if (name.equals("performerRole")) {
7912          this.performerRole = null;
7913        } else if (name.equals("performer")) {
7914          this.performer = null;
7915        } else if (name.equals("performerLinkId")) {
7916          this.getPerformerLinkId().remove(value);
7917        } else if (name.equals("reason")) {
7918          this.getReason().remove(value);
7919        } else if (name.equals("reasonLinkId")) {
7920          this.getReasonLinkId().remove(value);
7921        } else if (name.equals("note")) {
7922          this.getNote().remove(value);
7923        } else if (name.equals("securityLabelNumber")) {
7924          this.getSecurityLabelNumber().remove(value);
7925        } else
7926          super.removeChild(name, value);
7927        
7928      }
7929
7930      @Override
7931      public Base makeProperty(int hash, String name) throws FHIRException {
7932        switch (hash) {
7933        case -1788508167:  return getDoNotPerformElement();
7934        case 3575610:  return getType();
7935        case -1867885268:  return addSubject(); 
7936        case -1183762788:  return getIntent();
7937        case -1102667083:  return addLinkIdElement();
7938        case -892481550:  return getStatus();
7939        case 951530927:  return getContext();
7940        case -288783036:  return addContextLinkIdElement();
7941        case -2022646513:  return getOccurrence();
7942        case 1687874001:  return getOccurrence();
7943        case 693933948:  return addRequester(); 
7944        case -1468032687:  return addRequesterLinkIdElement();
7945        case -901444568:  return addPerformerType(); 
7946        case -901513884:  return getPerformerRole();
7947        case 481140686:  return getPerformer();
7948        case 1051302947:  return addPerformerLinkIdElement();
7949        case -934964668:  return addReason(); 
7950        case -1557963239:  return addReasonLinkIdElement();
7951        case 3387378:  return addNote(); 
7952        case -149460995:  return addSecurityLabelNumberElement();
7953        default: return super.makeProperty(hash, name);
7954        }
7955
7956      }
7957
7958      @Override
7959      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
7960        switch (hash) {
7961        case -1788508167: /*doNotPerform*/ return new String[] {"boolean"};
7962        case 3575610: /*type*/ return new String[] {"CodeableConcept"};
7963        case -1867885268: /*subject*/ return new String[] {};
7964        case -1183762788: /*intent*/ return new String[] {"CodeableConcept"};
7965        case -1102667083: /*linkId*/ return new String[] {"string"};
7966        case -892481550: /*status*/ return new String[] {"CodeableConcept"};
7967        case 951530927: /*context*/ return new String[] {"Reference"};
7968        case -288783036: /*contextLinkId*/ return new String[] {"string"};
7969        case 1687874001: /*occurrence*/ return new String[] {"dateTime", "Period", "Timing"};
7970        case 693933948: /*requester*/ return new String[] {"Reference"};
7971        case -1468032687: /*requesterLinkId*/ return new String[] {"string"};
7972        case -901444568: /*performerType*/ return new String[] {"CodeableConcept"};
7973        case -901513884: /*performerRole*/ return new String[] {"CodeableConcept"};
7974        case 481140686: /*performer*/ return new String[] {"Reference"};
7975        case 1051302947: /*performerLinkId*/ return new String[] {"string"};
7976        case -934964668: /*reason*/ return new String[] {"CodeableReference"};
7977        case -1557963239: /*reasonLinkId*/ return new String[] {"string"};
7978        case 3387378: /*note*/ return new String[] {"Annotation"};
7979        case -149460995: /*securityLabelNumber*/ return new String[] {"unsignedInt"};
7980        default: return super.getTypesForProperty(hash, name);
7981        }
7982
7983      }
7984
7985      @Override
7986      public Base addChild(String name) throws FHIRException {
7987        if (name.equals("doNotPerform")) {
7988          throw new FHIRException("Cannot call addChild on a singleton property Contract.term.action.doNotPerform");
7989        }
7990        else if (name.equals("type")) {
7991          this.type = new CodeableConcept();
7992          return this.type;
7993        }
7994        else if (name.equals("subject")) {
7995          return addSubject();
7996        }
7997        else if (name.equals("intent")) {
7998          this.intent = new CodeableConcept();
7999          return this.intent;
8000        }
8001        else if (name.equals("linkId")) {
8002          throw new FHIRException("Cannot call addChild on a singleton property Contract.term.action.linkId");
8003        }
8004        else if (name.equals("status")) {
8005          this.status = new CodeableConcept();
8006          return this.status;
8007        }
8008        else if (name.equals("context")) {
8009          this.context = new Reference();
8010          return this.context;
8011        }
8012        else if (name.equals("contextLinkId")) {
8013          throw new FHIRException("Cannot call addChild on a singleton property Contract.term.action.contextLinkId");
8014        }
8015        else if (name.equals("occurrenceDateTime")) {
8016          this.occurrence = new DateTimeType();
8017          return this.occurrence;
8018        }
8019        else if (name.equals("occurrencePeriod")) {
8020          this.occurrence = new Period();
8021          return this.occurrence;
8022        }
8023        else if (name.equals("occurrenceTiming")) {
8024          this.occurrence = new Timing();
8025          return this.occurrence;
8026        }
8027        else if (name.equals("requester")) {
8028          return addRequester();
8029        }
8030        else if (name.equals("requesterLinkId")) {
8031          throw new FHIRException("Cannot call addChild on a singleton property Contract.term.action.requesterLinkId");
8032        }
8033        else if (name.equals("performerType")) {
8034          return addPerformerType();
8035        }
8036        else if (name.equals("performerRole")) {
8037          this.performerRole = new CodeableConcept();
8038          return this.performerRole;
8039        }
8040        else if (name.equals("performer")) {
8041          this.performer = new Reference();
8042          return this.performer;
8043        }
8044        else if (name.equals("performerLinkId")) {
8045          throw new FHIRException("Cannot call addChild on a singleton property Contract.term.action.performerLinkId");
8046        }
8047        else if (name.equals("reason")) {
8048          return addReason();
8049        }
8050        else if (name.equals("reasonLinkId")) {
8051          throw new FHIRException("Cannot call addChild on a singleton property Contract.term.action.reasonLinkId");
8052        }
8053        else if (name.equals("note")) {
8054          return addNote();
8055        }
8056        else if (name.equals("securityLabelNumber")) {
8057          throw new FHIRException("Cannot call addChild on a singleton property Contract.term.action.securityLabelNumber");
8058        }
8059        else
8060          return super.addChild(name);
8061      }
8062
8063      public ActionComponent copy() {
8064        ActionComponent dst = new ActionComponent();
8065        copyValues(dst);
8066        return dst;
8067      }
8068
8069      public void copyValues(ActionComponent dst) {
8070        super.copyValues(dst);
8071        dst.doNotPerform = doNotPerform == null ? null : doNotPerform.copy();
8072        dst.type = type == null ? null : type.copy();
8073        if (subject != null) {
8074          dst.subject = new ArrayList<ActionSubjectComponent>();
8075          for (ActionSubjectComponent i : subject)
8076            dst.subject.add(i.copy());
8077        };
8078        dst.intent = intent == null ? null : intent.copy();
8079        if (linkId != null) {
8080          dst.linkId = new ArrayList<StringType>();
8081          for (StringType i : linkId)
8082            dst.linkId.add(i.copy());
8083        };
8084        dst.status = status == null ? null : status.copy();
8085        dst.context = context == null ? null : context.copy();
8086        if (contextLinkId != null) {
8087          dst.contextLinkId = new ArrayList<StringType>();
8088          for (StringType i : contextLinkId)
8089            dst.contextLinkId.add(i.copy());
8090        };
8091        dst.occurrence = occurrence == null ? null : occurrence.copy();
8092        if (requester != null) {
8093          dst.requester = new ArrayList<Reference>();
8094          for (Reference i : requester)
8095            dst.requester.add(i.copy());
8096        };
8097        if (requesterLinkId != null) {
8098          dst.requesterLinkId = new ArrayList<StringType>();
8099          for (StringType i : requesterLinkId)
8100            dst.requesterLinkId.add(i.copy());
8101        };
8102        if (performerType != null) {
8103          dst.performerType = new ArrayList<CodeableConcept>();
8104          for (CodeableConcept i : performerType)
8105            dst.performerType.add(i.copy());
8106        };
8107        dst.performerRole = performerRole == null ? null : performerRole.copy();
8108        dst.performer = performer == null ? null : performer.copy();
8109        if (performerLinkId != null) {
8110          dst.performerLinkId = new ArrayList<StringType>();
8111          for (StringType i : performerLinkId)
8112            dst.performerLinkId.add(i.copy());
8113        };
8114        if (reason != null) {
8115          dst.reason = new ArrayList<CodeableReference>();
8116          for (CodeableReference i : reason)
8117            dst.reason.add(i.copy());
8118        };
8119        if (reasonLinkId != null) {
8120          dst.reasonLinkId = new ArrayList<StringType>();
8121          for (StringType i : reasonLinkId)
8122            dst.reasonLinkId.add(i.copy());
8123        };
8124        if (note != null) {
8125          dst.note = new ArrayList<Annotation>();
8126          for (Annotation i : note)
8127            dst.note.add(i.copy());
8128        };
8129        if (securityLabelNumber != null) {
8130          dst.securityLabelNumber = new ArrayList<UnsignedIntType>();
8131          for (UnsignedIntType i : securityLabelNumber)
8132            dst.securityLabelNumber.add(i.copy());
8133        };
8134      }
8135
8136      @Override
8137      public boolean equalsDeep(Base other_) {
8138        if (!super.equalsDeep(other_))
8139          return false;
8140        if (!(other_ instanceof ActionComponent))
8141          return false;
8142        ActionComponent o = (ActionComponent) other_;
8143        return compareDeep(doNotPerform, o.doNotPerform, true) && compareDeep(type, o.type, true) && compareDeep(subject, o.subject, true)
8144           && compareDeep(intent, o.intent, true) && compareDeep(linkId, o.linkId, true) && compareDeep(status, o.status, true)
8145           && compareDeep(context, o.context, true) && compareDeep(contextLinkId, o.contextLinkId, true) && compareDeep(occurrence, o.occurrence, true)
8146           && compareDeep(requester, o.requester, true) && compareDeep(requesterLinkId, o.requesterLinkId, true)
8147           && compareDeep(performerType, o.performerType, true) && compareDeep(performerRole, o.performerRole, true)
8148           && compareDeep(performer, o.performer, true) && compareDeep(performerLinkId, o.performerLinkId, true)
8149           && compareDeep(reason, o.reason, true) && compareDeep(reasonLinkId, o.reasonLinkId, true) && compareDeep(note, o.note, true)
8150           && compareDeep(securityLabelNumber, o.securityLabelNumber, true);
8151      }
8152
8153      @Override
8154      public boolean equalsShallow(Base other_) {
8155        if (!super.equalsShallow(other_))
8156          return false;
8157        if (!(other_ instanceof ActionComponent))
8158          return false;
8159        ActionComponent o = (ActionComponent) other_;
8160        return compareValues(doNotPerform, o.doNotPerform, true) && compareValues(linkId, o.linkId, true) && compareValues(contextLinkId, o.contextLinkId, true)
8161           && compareValues(requesterLinkId, o.requesterLinkId, true) && compareValues(performerLinkId, o.performerLinkId, true)
8162           && compareValues(reasonLinkId, o.reasonLinkId, true) && compareValues(securityLabelNumber, o.securityLabelNumber, true)
8163          ;
8164      }
8165
8166      public boolean isEmpty() {
8167        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(doNotPerform, type, subject
8168          , intent, linkId, status, context, contextLinkId, occurrence, requester, requesterLinkId
8169          , performerType, performerRole, performer, performerLinkId, reason, reasonLinkId
8170          , note, securityLabelNumber);
8171      }
8172
8173  public String fhirType() {
8174    return "Contract.term.action";
8175
8176  }
8177
8178  }
8179
8180    @Block()
8181    public static class ActionSubjectComponent extends BackboneElement implements IBaseBackboneElement {
8182        /**
8183         * The entity the action is performed or not performed on or for.
8184         */
8185        @Child(name = "reference", type = {Patient.class, RelatedPerson.class, Practitioner.class, PractitionerRole.class, Device.class, Group.class, Organization.class}, order=1, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
8186        @Description(shortDefinition="Entity of the action", formalDefinition="The entity the action is performed or not performed on or for." )
8187        protected List<Reference> reference;
8188
8189        /**
8190         * Role type of agent assigned roles in this Contract.
8191         */
8192        @Child(name = "role", type = {CodeableConcept.class}, order=2, min=0, max=1, modifier=false, summary=false)
8193        @Description(shortDefinition="Role type of the agent", formalDefinition="Role type of agent assigned roles in this Contract." )
8194        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/contract-actorrole")
8195        protected CodeableConcept role;
8196
8197        private static final long serialVersionUID = -1599592477L;
8198
8199    /**
8200     * Constructor
8201     */
8202      public ActionSubjectComponent() {
8203        super();
8204      }
8205
8206    /**
8207     * Constructor
8208     */
8209      public ActionSubjectComponent(Reference reference) {
8210        super();
8211        this.addReference(reference);
8212      }
8213
8214        /**
8215         * @return {@link #reference} (The entity the action is performed or not performed on or for.)
8216         */
8217        public List<Reference> getReference() { 
8218          if (this.reference == null)
8219            this.reference = new ArrayList<Reference>();
8220          return this.reference;
8221        }
8222
8223        /**
8224         * @return Returns a reference to <code>this</code> for easy method chaining
8225         */
8226        public ActionSubjectComponent setReference(List<Reference> theReference) { 
8227          this.reference = theReference;
8228          return this;
8229        }
8230
8231        public boolean hasReference() { 
8232          if (this.reference == null)
8233            return false;
8234          for (Reference item : this.reference)
8235            if (!item.isEmpty())
8236              return true;
8237          return false;
8238        }
8239
8240        public Reference addReference() { //3
8241          Reference t = new Reference();
8242          if (this.reference == null)
8243            this.reference = new ArrayList<Reference>();
8244          this.reference.add(t);
8245          return t;
8246        }
8247
8248        public ActionSubjectComponent addReference(Reference t) { //3
8249          if (t == null)
8250            return this;
8251          if (this.reference == null)
8252            this.reference = new ArrayList<Reference>();
8253          this.reference.add(t);
8254          return this;
8255        }
8256
8257        /**
8258         * @return The first repetition of repeating field {@link #reference}, creating it if it does not already exist {3}
8259         */
8260        public Reference getReferenceFirstRep() { 
8261          if (getReference().isEmpty()) {
8262            addReference();
8263          }
8264          return getReference().get(0);
8265        }
8266
8267        /**
8268         * @return {@link #role} (Role type of agent assigned roles in this Contract.)
8269         */
8270        public CodeableConcept getRole() { 
8271          if (this.role == null)
8272            if (Configuration.errorOnAutoCreate())
8273              throw new Error("Attempt to auto-create ActionSubjectComponent.role");
8274            else if (Configuration.doAutoCreate())
8275              this.role = new CodeableConcept(); // cc
8276          return this.role;
8277        }
8278
8279        public boolean hasRole() { 
8280          return this.role != null && !this.role.isEmpty();
8281        }
8282
8283        /**
8284         * @param value {@link #role} (Role type of agent assigned roles in this Contract.)
8285         */
8286        public ActionSubjectComponent setRole(CodeableConcept value) { 
8287          this.role = value;
8288          return this;
8289        }
8290
8291        protected void listChildren(List<Property> children) {
8292          super.listChildren(children);
8293          children.add(new Property("reference", "Reference(Patient|RelatedPerson|Practitioner|PractitionerRole|Device|Group|Organization)", "The entity the action is performed or not performed on or for.", 0, java.lang.Integer.MAX_VALUE, reference));
8294          children.add(new Property("role", "CodeableConcept", "Role type of agent assigned roles in this Contract.", 0, 1, role));
8295        }
8296
8297        @Override
8298        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
8299          switch (_hash) {
8300          case -925155509: /*reference*/  return new Property("reference", "Reference(Patient|RelatedPerson|Practitioner|PractitionerRole|Device|Group|Organization)", "The entity the action is performed or not performed on or for.", 0, java.lang.Integer.MAX_VALUE, reference);
8301          case 3506294: /*role*/  return new Property("role", "CodeableConcept", "Role type of agent assigned roles in this Contract.", 0, 1, role);
8302          default: return super.getNamedProperty(_hash, _name, _checkValid);
8303          }
8304
8305        }
8306
8307      @Override
8308      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
8309        switch (hash) {
8310        case -925155509: /*reference*/ return this.reference == null ? new Base[0] : this.reference.toArray(new Base[this.reference.size()]); // Reference
8311        case 3506294: /*role*/ return this.role == null ? new Base[0] : new Base[] {this.role}; // CodeableConcept
8312        default: return super.getProperty(hash, name, checkValid);
8313        }
8314
8315      }
8316
8317      @Override
8318      public Base setProperty(int hash, String name, Base value) throws FHIRException {
8319        switch (hash) {
8320        case -925155509: // reference
8321          this.getReference().add(TypeConvertor.castToReference(value)); // Reference
8322          return value;
8323        case 3506294: // role
8324          this.role = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
8325          return value;
8326        default: return super.setProperty(hash, name, value);
8327        }
8328
8329      }
8330
8331      @Override
8332      public Base setProperty(String name, Base value) throws FHIRException {
8333        if (name.equals("reference")) {
8334          this.getReference().add(TypeConvertor.castToReference(value));
8335        } else if (name.equals("role")) {
8336          this.role = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
8337        } else
8338          return super.setProperty(name, value);
8339        return value;
8340      }
8341
8342  @Override
8343  public void removeChild(String name, Base value) throws FHIRException {
8344        if (name.equals("reference")) {
8345          this.getReference().remove(value);
8346        } else if (name.equals("role")) {
8347          this.role = null;
8348        } else
8349          super.removeChild(name, value);
8350        
8351      }
8352
8353      @Override
8354      public Base makeProperty(int hash, String name) throws FHIRException {
8355        switch (hash) {
8356        case -925155509:  return addReference(); 
8357        case 3506294:  return getRole();
8358        default: return super.makeProperty(hash, name);
8359        }
8360
8361      }
8362
8363      @Override
8364      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
8365        switch (hash) {
8366        case -925155509: /*reference*/ return new String[] {"Reference"};
8367        case 3506294: /*role*/ return new String[] {"CodeableConcept"};
8368        default: return super.getTypesForProperty(hash, name);
8369        }
8370
8371      }
8372
8373      @Override
8374      public Base addChild(String name) throws FHIRException {
8375        if (name.equals("reference")) {
8376          return addReference();
8377        }
8378        else if (name.equals("role")) {
8379          this.role = new CodeableConcept();
8380          return this.role;
8381        }
8382        else
8383          return super.addChild(name);
8384      }
8385
8386      public ActionSubjectComponent copy() {
8387        ActionSubjectComponent dst = new ActionSubjectComponent();
8388        copyValues(dst);
8389        return dst;
8390      }
8391
8392      public void copyValues(ActionSubjectComponent dst) {
8393        super.copyValues(dst);
8394        if (reference != null) {
8395          dst.reference = new ArrayList<Reference>();
8396          for (Reference i : reference)
8397            dst.reference.add(i.copy());
8398        };
8399        dst.role = role == null ? null : role.copy();
8400      }
8401
8402      @Override
8403      public boolean equalsDeep(Base other_) {
8404        if (!super.equalsDeep(other_))
8405          return false;
8406        if (!(other_ instanceof ActionSubjectComponent))
8407          return false;
8408        ActionSubjectComponent o = (ActionSubjectComponent) other_;
8409        return compareDeep(reference, o.reference, true) && compareDeep(role, o.role, true);
8410      }
8411
8412      @Override
8413      public boolean equalsShallow(Base other_) {
8414        if (!super.equalsShallow(other_))
8415          return false;
8416        if (!(other_ instanceof ActionSubjectComponent))
8417          return false;
8418        ActionSubjectComponent o = (ActionSubjectComponent) other_;
8419        return true;
8420      }
8421
8422      public boolean isEmpty() {
8423        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(reference, role);
8424      }
8425
8426  public String fhirType() {
8427    return "Contract.term.action.subject";
8428
8429  }
8430
8431  }
8432
8433    @Block()
8434    public static class SignatoryComponent extends BackboneElement implements IBaseBackboneElement {
8435        /**
8436         * Role of this Contract signer, e.g. notary, grantee.
8437         */
8438        @Child(name = "type", type = {Coding.class}, order=1, min=1, max=1, modifier=false, summary=false)
8439        @Description(shortDefinition="Contract Signatory Role", formalDefinition="Role of this Contract signer, e.g. notary, grantee." )
8440        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/contract-signer-type")
8441        protected Coding type;
8442
8443        /**
8444         * Party which is a signator to this Contract.
8445         */
8446        @Child(name = "party", type = {Organization.class, Patient.class, Practitioner.class, PractitionerRole.class, RelatedPerson.class}, order=2, min=1, max=1, modifier=false, summary=false)
8447        @Description(shortDefinition="Contract Signatory Party", formalDefinition="Party which is a signator to this Contract." )
8448        protected Reference party;
8449
8450        /**
8451         * Legally binding Contract DSIG signature contents in Base64.
8452         */
8453        @Child(name = "signature", type = {Signature.class}, order=3, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
8454        @Description(shortDefinition="Contract Documentation Signature", formalDefinition="Legally binding Contract DSIG signature contents in Base64." )
8455        protected List<Signature> signature;
8456
8457        private static final long serialVersionUID = 1384929729L;
8458
8459    /**
8460     * Constructor
8461     */
8462      public SignatoryComponent() {
8463        super();
8464      }
8465
8466    /**
8467     * Constructor
8468     */
8469      public SignatoryComponent(Coding type, Reference party, Signature signature) {
8470        super();
8471        this.setType(type);
8472        this.setParty(party);
8473        this.addSignature(signature);
8474      }
8475
8476        /**
8477         * @return {@link #type} (Role of this Contract signer, e.g. notary, grantee.)
8478         */
8479        public Coding getType() { 
8480          if (this.type == null)
8481            if (Configuration.errorOnAutoCreate())
8482              throw new Error("Attempt to auto-create SignatoryComponent.type");
8483            else if (Configuration.doAutoCreate())
8484              this.type = new Coding(); // cc
8485          return this.type;
8486        }
8487
8488        public boolean hasType() { 
8489          return this.type != null && !this.type.isEmpty();
8490        }
8491
8492        /**
8493         * @param value {@link #type} (Role of this Contract signer, e.g. notary, grantee.)
8494         */
8495        public SignatoryComponent setType(Coding value) { 
8496          this.type = value;
8497          return this;
8498        }
8499
8500        /**
8501         * @return {@link #party} (Party which is a signator to this Contract.)
8502         */
8503        public Reference getParty() { 
8504          if (this.party == null)
8505            if (Configuration.errorOnAutoCreate())
8506              throw new Error("Attempt to auto-create SignatoryComponent.party");
8507            else if (Configuration.doAutoCreate())
8508              this.party = new Reference(); // cc
8509          return this.party;
8510        }
8511
8512        public boolean hasParty() { 
8513          return this.party != null && !this.party.isEmpty();
8514        }
8515
8516        /**
8517         * @param value {@link #party} (Party which is a signator to this Contract.)
8518         */
8519        public SignatoryComponent setParty(Reference value) { 
8520          this.party = value;
8521          return this;
8522        }
8523
8524        /**
8525         * @return {@link #signature} (Legally binding Contract DSIG signature contents in Base64.)
8526         */
8527        public List<Signature> getSignature() { 
8528          if (this.signature == null)
8529            this.signature = new ArrayList<Signature>();
8530          return this.signature;
8531        }
8532
8533        /**
8534         * @return Returns a reference to <code>this</code> for easy method chaining
8535         */
8536        public SignatoryComponent setSignature(List<Signature> theSignature) { 
8537          this.signature = theSignature;
8538          return this;
8539        }
8540
8541        public boolean hasSignature() { 
8542          if (this.signature == null)
8543            return false;
8544          for (Signature item : this.signature)
8545            if (!item.isEmpty())
8546              return true;
8547          return false;
8548        }
8549
8550        public Signature addSignature() { //3
8551          Signature t = new Signature();
8552          if (this.signature == null)
8553            this.signature = new ArrayList<Signature>();
8554          this.signature.add(t);
8555          return t;
8556        }
8557
8558        public SignatoryComponent addSignature(Signature t) { //3
8559          if (t == null)
8560            return this;
8561          if (this.signature == null)
8562            this.signature = new ArrayList<Signature>();
8563          this.signature.add(t);
8564          return this;
8565        }
8566
8567        /**
8568         * @return The first repetition of repeating field {@link #signature}, creating it if it does not already exist {3}
8569         */
8570        public Signature getSignatureFirstRep() { 
8571          if (getSignature().isEmpty()) {
8572            addSignature();
8573          }
8574          return getSignature().get(0);
8575        }
8576
8577        protected void listChildren(List<Property> children) {
8578          super.listChildren(children);
8579          children.add(new Property("type", "Coding", "Role of this Contract signer, e.g. notary, grantee.", 0, 1, type));
8580          children.add(new Property("party", "Reference(Organization|Patient|Practitioner|PractitionerRole|RelatedPerson)", "Party which is a signator to this Contract.", 0, 1, party));
8581          children.add(new Property("signature", "Signature", "Legally binding Contract DSIG signature contents in Base64.", 0, java.lang.Integer.MAX_VALUE, signature));
8582        }
8583
8584        @Override
8585        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
8586          switch (_hash) {
8587          case 3575610: /*type*/  return new Property("type", "Coding", "Role of this Contract signer, e.g. notary, grantee.", 0, 1, type);
8588          case 106437350: /*party*/  return new Property("party", "Reference(Organization|Patient|Practitioner|PractitionerRole|RelatedPerson)", "Party which is a signator to this Contract.", 0, 1, party);
8589          case 1073584312: /*signature*/  return new Property("signature", "Signature", "Legally binding Contract DSIG signature contents in Base64.", 0, java.lang.Integer.MAX_VALUE, signature);
8590          default: return super.getNamedProperty(_hash, _name, _checkValid);
8591          }
8592
8593        }
8594
8595      @Override
8596      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
8597        switch (hash) {
8598        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // Coding
8599        case 106437350: /*party*/ return this.party == null ? new Base[0] : new Base[] {this.party}; // Reference
8600        case 1073584312: /*signature*/ return this.signature == null ? new Base[0] : this.signature.toArray(new Base[this.signature.size()]); // Signature
8601        default: return super.getProperty(hash, name, checkValid);
8602        }
8603
8604      }
8605
8606      @Override
8607      public Base setProperty(int hash, String name, Base value) throws FHIRException {
8608        switch (hash) {
8609        case 3575610: // type
8610          this.type = TypeConvertor.castToCoding(value); // Coding
8611          return value;
8612        case 106437350: // party
8613          this.party = TypeConvertor.castToReference(value); // Reference
8614          return value;
8615        case 1073584312: // signature
8616          this.getSignature().add(TypeConvertor.castToSignature(value)); // Signature
8617          return value;
8618        default: return super.setProperty(hash, name, value);
8619        }
8620
8621      }
8622
8623      @Override
8624      public Base setProperty(String name, Base value) throws FHIRException {
8625        if (name.equals("type")) {
8626          this.type = TypeConvertor.castToCoding(value); // Coding
8627        } else if (name.equals("party")) {
8628          this.party = TypeConvertor.castToReference(value); // Reference
8629        } else if (name.equals("signature")) {
8630          this.getSignature().add(TypeConvertor.castToSignature(value));
8631        } else
8632          return super.setProperty(name, value);
8633        return value;
8634      }
8635
8636  @Override
8637  public void removeChild(String name, Base value) throws FHIRException {
8638        if (name.equals("type")) {
8639          this.type = null;
8640        } else if (name.equals("party")) {
8641          this.party = null;
8642        } else if (name.equals("signature")) {
8643          this.getSignature().remove(value);
8644        } else
8645          super.removeChild(name, value);
8646        
8647      }
8648
8649      @Override
8650      public Base makeProperty(int hash, String name) throws FHIRException {
8651        switch (hash) {
8652        case 3575610:  return getType();
8653        case 106437350:  return getParty();
8654        case 1073584312:  return addSignature(); 
8655        default: return super.makeProperty(hash, name);
8656        }
8657
8658      }
8659
8660      @Override
8661      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
8662        switch (hash) {
8663        case 3575610: /*type*/ return new String[] {"Coding"};
8664        case 106437350: /*party*/ return new String[] {"Reference"};
8665        case 1073584312: /*signature*/ return new String[] {"Signature"};
8666        default: return super.getTypesForProperty(hash, name);
8667        }
8668
8669      }
8670
8671      @Override
8672      public Base addChild(String name) throws FHIRException {
8673        if (name.equals("type")) {
8674          this.type = new Coding();
8675          return this.type;
8676        }
8677        else if (name.equals("party")) {
8678          this.party = new Reference();
8679          return this.party;
8680        }
8681        else if (name.equals("signature")) {
8682          return addSignature();
8683        }
8684        else
8685          return super.addChild(name);
8686      }
8687
8688      public SignatoryComponent copy() {
8689        SignatoryComponent dst = new SignatoryComponent();
8690        copyValues(dst);
8691        return dst;
8692      }
8693
8694      public void copyValues(SignatoryComponent dst) {
8695        super.copyValues(dst);
8696        dst.type = type == null ? null : type.copy();
8697        dst.party = party == null ? null : party.copy();
8698        if (signature != null) {
8699          dst.signature = new ArrayList<Signature>();
8700          for (Signature i : signature)
8701            dst.signature.add(i.copy());
8702        };
8703      }
8704
8705      @Override
8706      public boolean equalsDeep(Base other_) {
8707        if (!super.equalsDeep(other_))
8708          return false;
8709        if (!(other_ instanceof SignatoryComponent))
8710          return false;
8711        SignatoryComponent o = (SignatoryComponent) other_;
8712        return compareDeep(type, o.type, true) && compareDeep(party, o.party, true) && compareDeep(signature, o.signature, true)
8713          ;
8714      }
8715
8716      @Override
8717      public boolean equalsShallow(Base other_) {
8718        if (!super.equalsShallow(other_))
8719          return false;
8720        if (!(other_ instanceof SignatoryComponent))
8721          return false;
8722        SignatoryComponent o = (SignatoryComponent) other_;
8723        return true;
8724      }
8725
8726      public boolean isEmpty() {
8727        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(type, party, signature);
8728      }
8729
8730  public String fhirType() {
8731    return "Contract.signer";
8732
8733  }
8734
8735  }
8736
8737    @Block()
8738    public static class FriendlyLanguageComponent extends BackboneElement implements IBaseBackboneElement {
8739        /**
8740         * Human readable rendering of this Contract in a format and representation intended to enhance comprehension and ensure understandability.
8741         */
8742        @Child(name = "content", type = {Attachment.class, Composition.class, DocumentReference.class, QuestionnaireResponse.class}, order=1, min=1, max=1, modifier=false, summary=false)
8743        @Description(shortDefinition="Easily comprehended representation of this Contract", formalDefinition="Human readable rendering of this Contract in a format and representation intended to enhance comprehension and ensure understandability." )
8744        protected DataType content;
8745
8746        private static final long serialVersionUID = -1954179063L;
8747
8748    /**
8749     * Constructor
8750     */
8751      public FriendlyLanguageComponent() {
8752        super();
8753      }
8754
8755    /**
8756     * Constructor
8757     */
8758      public FriendlyLanguageComponent(DataType content) {
8759        super();
8760        this.setContent(content);
8761      }
8762
8763        /**
8764         * @return {@link #content} (Human readable rendering of this Contract in a format and representation intended to enhance comprehension and ensure understandability.)
8765         */
8766        public DataType getContent() { 
8767          return this.content;
8768        }
8769
8770        /**
8771         * @return {@link #content} (Human readable rendering of this Contract in a format and representation intended to enhance comprehension and ensure understandability.)
8772         */
8773        public Attachment getContentAttachment() throws FHIRException { 
8774          if (this.content == null)
8775            this.content = new Attachment();
8776          if (!(this.content instanceof Attachment))
8777            throw new FHIRException("Type mismatch: the type Attachment was expected, but "+this.content.getClass().getName()+" was encountered");
8778          return (Attachment) this.content;
8779        }
8780
8781        public boolean hasContentAttachment() { 
8782          return this != null && this.content instanceof Attachment;
8783        }
8784
8785        /**
8786         * @return {@link #content} (Human readable rendering of this Contract in a format and representation intended to enhance comprehension and ensure understandability.)
8787         */
8788        public Reference getContentReference() throws FHIRException { 
8789          if (this.content == null)
8790            this.content = new Reference();
8791          if (!(this.content instanceof Reference))
8792            throw new FHIRException("Type mismatch: the type Reference was expected, but "+this.content.getClass().getName()+" was encountered");
8793          return (Reference) this.content;
8794        }
8795
8796        public boolean hasContentReference() { 
8797          return this != null && this.content instanceof Reference;
8798        }
8799
8800        public boolean hasContent() { 
8801          return this.content != null && !this.content.isEmpty();
8802        }
8803
8804        /**
8805         * @param value {@link #content} (Human readable rendering of this Contract in a format and representation intended to enhance comprehension and ensure understandability.)
8806         */
8807        public FriendlyLanguageComponent setContent(DataType value) { 
8808          if (value != null && !(value instanceof Attachment || value instanceof Reference))
8809            throw new FHIRException("Not the right type for Contract.friendly.content[x]: "+value.fhirType());
8810          this.content = value;
8811          return this;
8812        }
8813
8814        protected void listChildren(List<Property> children) {
8815          super.listChildren(children);
8816          children.add(new Property("content[x]", "Attachment|Reference(Composition|DocumentReference|QuestionnaireResponse)", "Human readable rendering of this Contract in a format and representation intended to enhance comprehension and ensure understandability.", 0, 1, content));
8817        }
8818
8819        @Override
8820        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
8821          switch (_hash) {
8822          case 264548711: /*content[x]*/  return new Property("content[x]", "Attachment|Reference(Composition|DocumentReference|QuestionnaireResponse)", "Human readable rendering of this Contract in a format and representation intended to enhance comprehension and ensure understandability.", 0, 1, content);
8823          case 951530617: /*content*/  return new Property("content[x]", "Attachment|Reference(Composition|DocumentReference|QuestionnaireResponse)", "Human readable rendering of this Contract in a format and representation intended to enhance comprehension and ensure understandability.", 0, 1, content);
8824          case -702028164: /*contentAttachment*/  return new Property("content[x]", "Attachment", "Human readable rendering of this Contract in a format and representation intended to enhance comprehension and ensure understandability.", 0, 1, content);
8825          case 1193747154: /*contentReference*/  return new Property("content[x]", "Reference(Composition|DocumentReference|QuestionnaireResponse)", "Human readable rendering of this Contract in a format and representation intended to enhance comprehension and ensure understandability.", 0, 1, content);
8826          default: return super.getNamedProperty(_hash, _name, _checkValid);
8827          }
8828
8829        }
8830
8831      @Override
8832      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
8833        switch (hash) {
8834        case 951530617: /*content*/ return this.content == null ? new Base[0] : new Base[] {this.content}; // DataType
8835        default: return super.getProperty(hash, name, checkValid);
8836        }
8837
8838      }
8839
8840      @Override
8841      public Base setProperty(int hash, String name, Base value) throws FHIRException {
8842        switch (hash) {
8843        case 951530617: // content
8844          this.content = TypeConvertor.castToType(value); // DataType
8845          return value;
8846        default: return super.setProperty(hash, name, value);
8847        }
8848
8849      }
8850
8851      @Override
8852      public Base setProperty(String name, Base value) throws FHIRException {
8853        if (name.equals("content[x]")) {
8854          this.content = TypeConvertor.castToType(value); // DataType
8855        } else
8856          return super.setProperty(name, value);
8857        return value;
8858      }
8859
8860  @Override
8861  public void removeChild(String name, Base value) throws FHIRException {
8862        if (name.equals("content[x]")) {
8863          this.content = null;
8864        } else
8865          super.removeChild(name, value);
8866        
8867      }
8868
8869      @Override
8870      public Base makeProperty(int hash, String name) throws FHIRException {
8871        switch (hash) {
8872        case 264548711:  return getContent();
8873        case 951530617:  return getContent();
8874        default: return super.makeProperty(hash, name);
8875        }
8876
8877      }
8878
8879      @Override
8880      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
8881        switch (hash) {
8882        case 951530617: /*content*/ return new String[] {"Attachment", "Reference"};
8883        default: return super.getTypesForProperty(hash, name);
8884        }
8885
8886      }
8887
8888      @Override
8889      public Base addChild(String name) throws FHIRException {
8890        if (name.equals("contentAttachment")) {
8891          this.content = new Attachment();
8892          return this.content;
8893        }
8894        else if (name.equals("contentReference")) {
8895          this.content = new Reference();
8896          return this.content;
8897        }
8898        else
8899          return super.addChild(name);
8900      }
8901
8902      public FriendlyLanguageComponent copy() {
8903        FriendlyLanguageComponent dst = new FriendlyLanguageComponent();
8904        copyValues(dst);
8905        return dst;
8906      }
8907
8908      public void copyValues(FriendlyLanguageComponent dst) {
8909        super.copyValues(dst);
8910        dst.content = content == null ? null : content.copy();
8911      }
8912
8913      @Override
8914      public boolean equalsDeep(Base other_) {
8915        if (!super.equalsDeep(other_))
8916          return false;
8917        if (!(other_ instanceof FriendlyLanguageComponent))
8918          return false;
8919        FriendlyLanguageComponent o = (FriendlyLanguageComponent) other_;
8920        return compareDeep(content, o.content, true);
8921      }
8922
8923      @Override
8924      public boolean equalsShallow(Base other_) {
8925        if (!super.equalsShallow(other_))
8926          return false;
8927        if (!(other_ instanceof FriendlyLanguageComponent))
8928          return false;
8929        FriendlyLanguageComponent o = (FriendlyLanguageComponent) other_;
8930        return true;
8931      }
8932
8933      public boolean isEmpty() {
8934        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(content);
8935      }
8936
8937  public String fhirType() {
8938    return "Contract.friendly";
8939
8940  }
8941
8942  }
8943
8944    @Block()
8945    public static class LegalLanguageComponent extends BackboneElement implements IBaseBackboneElement {
8946        /**
8947         * Contract legal text in human renderable form.
8948         */
8949        @Child(name = "content", type = {Attachment.class, Composition.class, DocumentReference.class, QuestionnaireResponse.class}, order=1, min=1, max=1, modifier=false, summary=false)
8950        @Description(shortDefinition="Contract Legal Text", formalDefinition="Contract legal text in human renderable form." )
8951        protected DataType content;
8952
8953        private static final long serialVersionUID = -1954179063L;
8954
8955    /**
8956     * Constructor
8957     */
8958      public LegalLanguageComponent() {
8959        super();
8960      }
8961
8962    /**
8963     * Constructor
8964     */
8965      public LegalLanguageComponent(DataType content) {
8966        super();
8967        this.setContent(content);
8968      }
8969
8970        /**
8971         * @return {@link #content} (Contract legal text in human renderable form.)
8972         */
8973        public DataType getContent() { 
8974          return this.content;
8975        }
8976
8977        /**
8978         * @return {@link #content} (Contract legal text in human renderable form.)
8979         */
8980        public Attachment getContentAttachment() throws FHIRException { 
8981          if (this.content == null)
8982            this.content = new Attachment();
8983          if (!(this.content instanceof Attachment))
8984            throw new FHIRException("Type mismatch: the type Attachment was expected, but "+this.content.getClass().getName()+" was encountered");
8985          return (Attachment) this.content;
8986        }
8987
8988        public boolean hasContentAttachment() { 
8989          return this != null && this.content instanceof Attachment;
8990        }
8991
8992        /**
8993         * @return {@link #content} (Contract legal text in human renderable form.)
8994         */
8995        public Reference getContentReference() throws FHIRException { 
8996          if (this.content == null)
8997            this.content = new Reference();
8998          if (!(this.content instanceof Reference))
8999            throw new FHIRException("Type mismatch: the type Reference was expected, but "+this.content.getClass().getName()+" was encountered");
9000          return (Reference) this.content;
9001        }
9002
9003        public boolean hasContentReference() { 
9004          return this != null && this.content instanceof Reference;
9005        }
9006
9007        public boolean hasContent() { 
9008          return this.content != null && !this.content.isEmpty();
9009        }
9010
9011        /**
9012         * @param value {@link #content} (Contract legal text in human renderable form.)
9013         */
9014        public LegalLanguageComponent setContent(DataType value) { 
9015          if (value != null && !(value instanceof Attachment || value instanceof Reference))
9016            throw new FHIRException("Not the right type for Contract.legal.content[x]: "+value.fhirType());
9017          this.content = value;
9018          return this;
9019        }
9020
9021        protected void listChildren(List<Property> children) {
9022          super.listChildren(children);
9023          children.add(new Property("content[x]", "Attachment|Reference(Composition|DocumentReference|QuestionnaireResponse)", "Contract legal text in human renderable form.", 0, 1, content));
9024        }
9025
9026        @Override
9027        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
9028          switch (_hash) {
9029          case 264548711: /*content[x]*/  return new Property("content[x]", "Attachment|Reference(Composition|DocumentReference|QuestionnaireResponse)", "Contract legal text in human renderable form.", 0, 1, content);
9030          case 951530617: /*content*/  return new Property("content[x]", "Attachment|Reference(Composition|DocumentReference|QuestionnaireResponse)", "Contract legal text in human renderable form.", 0, 1, content);
9031          case -702028164: /*contentAttachment*/  return new Property("content[x]", "Attachment", "Contract legal text in human renderable form.", 0, 1, content);
9032          case 1193747154: /*contentReference*/  return new Property("content[x]", "Reference(Composition|DocumentReference|QuestionnaireResponse)", "Contract legal text in human renderable form.", 0, 1, content);
9033          default: return super.getNamedProperty(_hash, _name, _checkValid);
9034          }
9035
9036        }
9037
9038      @Override
9039      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
9040        switch (hash) {
9041        case 951530617: /*content*/ return this.content == null ? new Base[0] : new Base[] {this.content}; // DataType
9042        default: return super.getProperty(hash, name, checkValid);
9043        }
9044
9045      }
9046
9047      @Override
9048      public Base setProperty(int hash, String name, Base value) throws FHIRException {
9049        switch (hash) {
9050        case 951530617: // content
9051          this.content = TypeConvertor.castToType(value); // DataType
9052          return value;
9053        default: return super.setProperty(hash, name, value);
9054        }
9055
9056      }
9057
9058      @Override
9059      public Base setProperty(String name, Base value) throws FHIRException {
9060        if (name.equals("content[x]")) {
9061          this.content = TypeConvertor.castToType(value); // DataType
9062        } else
9063          return super.setProperty(name, value);
9064        return value;
9065      }
9066
9067  @Override
9068  public void removeChild(String name, Base value) throws FHIRException {
9069        if (name.equals("content[x]")) {
9070          this.content = null;
9071        } else
9072          super.removeChild(name, value);
9073        
9074      }
9075
9076      @Override
9077      public Base makeProperty(int hash, String name) throws FHIRException {
9078        switch (hash) {
9079        case 264548711:  return getContent();
9080        case 951530617:  return getContent();
9081        default: return super.makeProperty(hash, name);
9082        }
9083
9084      }
9085
9086      @Override
9087      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
9088        switch (hash) {
9089        case 951530617: /*content*/ return new String[] {"Attachment", "Reference"};
9090        default: return super.getTypesForProperty(hash, name);
9091        }
9092
9093      }
9094
9095      @Override
9096      public Base addChild(String name) throws FHIRException {
9097        if (name.equals("contentAttachment")) {
9098          this.content = new Attachment();
9099          return this.content;
9100        }
9101        else if (name.equals("contentReference")) {
9102          this.content = new Reference();
9103          return this.content;
9104        }
9105        else
9106          return super.addChild(name);
9107      }
9108
9109      public LegalLanguageComponent copy() {
9110        LegalLanguageComponent dst = new LegalLanguageComponent();
9111        copyValues(dst);
9112        return dst;
9113      }
9114
9115      public void copyValues(LegalLanguageComponent dst) {
9116        super.copyValues(dst);
9117        dst.content = content == null ? null : content.copy();
9118      }
9119
9120      @Override
9121      public boolean equalsDeep(Base other_) {
9122        if (!super.equalsDeep(other_))
9123          return false;
9124        if (!(other_ instanceof LegalLanguageComponent))
9125          return false;
9126        LegalLanguageComponent o = (LegalLanguageComponent) other_;
9127        return compareDeep(content, o.content, true);
9128      }
9129
9130      @Override
9131      public boolean equalsShallow(Base other_) {
9132        if (!super.equalsShallow(other_))
9133          return false;
9134        if (!(other_ instanceof LegalLanguageComponent))
9135          return false;
9136        LegalLanguageComponent o = (LegalLanguageComponent) other_;
9137        return true;
9138      }
9139
9140      public boolean isEmpty() {
9141        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(content);
9142      }
9143
9144  public String fhirType() {
9145    return "Contract.legal";
9146
9147  }
9148
9149  }
9150
9151    @Block()
9152    public static class ComputableLanguageComponent extends BackboneElement implements IBaseBackboneElement {
9153        /**
9154         * Computable Contract conveyed using a policy rule language (e.g. XACML, DKAL, SecPal).
9155         */
9156        @Child(name = "content", type = {Attachment.class, DocumentReference.class}, order=1, min=1, max=1, modifier=false, summary=false)
9157        @Description(shortDefinition="Computable Contract Rules", formalDefinition="Computable Contract conveyed using a policy rule language (e.g. XACML, DKAL, SecPal)." )
9158        protected DataType content;
9159
9160        private static final long serialVersionUID = -1954179063L;
9161
9162    /**
9163     * Constructor
9164     */
9165      public ComputableLanguageComponent() {
9166        super();
9167      }
9168
9169    /**
9170     * Constructor
9171     */
9172      public ComputableLanguageComponent(DataType content) {
9173        super();
9174        this.setContent(content);
9175      }
9176
9177        /**
9178         * @return {@link #content} (Computable Contract conveyed using a policy rule language (e.g. XACML, DKAL, SecPal).)
9179         */
9180        public DataType getContent() { 
9181          return this.content;
9182        }
9183
9184        /**
9185         * @return {@link #content} (Computable Contract conveyed using a policy rule language (e.g. XACML, DKAL, SecPal).)
9186         */
9187        public Attachment getContentAttachment() throws FHIRException { 
9188          if (this.content == null)
9189            this.content = new Attachment();
9190          if (!(this.content instanceof Attachment))
9191            throw new FHIRException("Type mismatch: the type Attachment was expected, but "+this.content.getClass().getName()+" was encountered");
9192          return (Attachment) this.content;
9193        }
9194
9195        public boolean hasContentAttachment() { 
9196          return this != null && this.content instanceof Attachment;
9197        }
9198
9199        /**
9200         * @return {@link #content} (Computable Contract conveyed using a policy rule language (e.g. XACML, DKAL, SecPal).)
9201         */
9202        public Reference getContentReference() throws FHIRException { 
9203          if (this.content == null)
9204            this.content = new Reference();
9205          if (!(this.content instanceof Reference))
9206            throw new FHIRException("Type mismatch: the type Reference was expected, but "+this.content.getClass().getName()+" was encountered");
9207          return (Reference) this.content;
9208        }
9209
9210        public boolean hasContentReference() { 
9211          return this != null && this.content instanceof Reference;
9212        }
9213
9214        public boolean hasContent() { 
9215          return this.content != null && !this.content.isEmpty();
9216        }
9217
9218        /**
9219         * @param value {@link #content} (Computable Contract conveyed using a policy rule language (e.g. XACML, DKAL, SecPal).)
9220         */
9221        public ComputableLanguageComponent setContent(DataType value) { 
9222          if (value != null && !(value instanceof Attachment || value instanceof Reference))
9223            throw new FHIRException("Not the right type for Contract.rule.content[x]: "+value.fhirType());
9224          this.content = value;
9225          return this;
9226        }
9227
9228        protected void listChildren(List<Property> children) {
9229          super.listChildren(children);
9230          children.add(new Property("content[x]", "Attachment|Reference(DocumentReference)", "Computable Contract conveyed using a policy rule language (e.g. XACML, DKAL, SecPal).", 0, 1, content));
9231        }
9232
9233        @Override
9234        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
9235          switch (_hash) {
9236          case 264548711: /*content[x]*/  return new Property("content[x]", "Attachment|Reference(DocumentReference)", "Computable Contract conveyed using a policy rule language (e.g. XACML, DKAL, SecPal).", 0, 1, content);
9237          case 951530617: /*content*/  return new Property("content[x]", "Attachment|Reference(DocumentReference)", "Computable Contract conveyed using a policy rule language (e.g. XACML, DKAL, SecPal).", 0, 1, content);
9238          case -702028164: /*contentAttachment*/  return new Property("content[x]", "Attachment", "Computable Contract conveyed using a policy rule language (e.g. XACML, DKAL, SecPal).", 0, 1, content);
9239          case 1193747154: /*contentReference*/  return new Property("content[x]", "Reference(DocumentReference)", "Computable Contract conveyed using a policy rule language (e.g. XACML, DKAL, SecPal).", 0, 1, content);
9240          default: return super.getNamedProperty(_hash, _name, _checkValid);
9241          }
9242
9243        }
9244
9245      @Override
9246      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
9247        switch (hash) {
9248        case 951530617: /*content*/ return this.content == null ? new Base[0] : new Base[] {this.content}; // DataType
9249        default: return super.getProperty(hash, name, checkValid);
9250        }
9251
9252      }
9253
9254      @Override
9255      public Base setProperty(int hash, String name, Base value) throws FHIRException {
9256        switch (hash) {
9257        case 951530617: // content
9258          this.content = TypeConvertor.castToType(value); // DataType
9259          return value;
9260        default: return super.setProperty(hash, name, value);
9261        }
9262
9263      }
9264
9265      @Override
9266      public Base setProperty(String name, Base value) throws FHIRException {
9267        if (name.equals("content[x]")) {
9268          this.content = TypeConvertor.castToType(value); // DataType
9269        } else
9270          return super.setProperty(name, value);
9271        return value;
9272      }
9273
9274  @Override
9275  public void removeChild(String name, Base value) throws FHIRException {
9276        if (name.equals("content[x]")) {
9277          this.content = null;
9278        } else
9279          super.removeChild(name, value);
9280        
9281      }
9282
9283      @Override
9284      public Base makeProperty(int hash, String name) throws FHIRException {
9285        switch (hash) {
9286        case 264548711:  return getContent();
9287        case 951530617:  return getContent();
9288        default: return super.makeProperty(hash, name);
9289        }
9290
9291      }
9292
9293      @Override
9294      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
9295        switch (hash) {
9296        case 951530617: /*content*/ return new String[] {"Attachment", "Reference"};
9297        default: return super.getTypesForProperty(hash, name);
9298        }
9299
9300      }
9301
9302      @Override
9303      public Base addChild(String name) throws FHIRException {
9304        if (name.equals("contentAttachment")) {
9305          this.content = new Attachment();
9306          return this.content;
9307        }
9308        else if (name.equals("contentReference")) {
9309          this.content = new Reference();
9310          return this.content;
9311        }
9312        else
9313          return super.addChild(name);
9314      }
9315
9316      public ComputableLanguageComponent copy() {
9317        ComputableLanguageComponent dst = new ComputableLanguageComponent();
9318        copyValues(dst);
9319        return dst;
9320      }
9321
9322      public void copyValues(ComputableLanguageComponent dst) {
9323        super.copyValues(dst);
9324        dst.content = content == null ? null : content.copy();
9325      }
9326
9327      @Override
9328      public boolean equalsDeep(Base other_) {
9329        if (!super.equalsDeep(other_))
9330          return false;
9331        if (!(other_ instanceof ComputableLanguageComponent))
9332          return false;
9333        ComputableLanguageComponent o = (ComputableLanguageComponent) other_;
9334        return compareDeep(content, o.content, true);
9335      }
9336
9337      @Override
9338      public boolean equalsShallow(Base other_) {
9339        if (!super.equalsShallow(other_))
9340          return false;
9341        if (!(other_ instanceof ComputableLanguageComponent))
9342          return false;
9343        ComputableLanguageComponent o = (ComputableLanguageComponent) other_;
9344        return true;
9345      }
9346
9347      public boolean isEmpty() {
9348        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(content);
9349      }
9350
9351  public String fhirType() {
9352    return "Contract.rule";
9353
9354  }
9355
9356  }
9357
9358    /**
9359     * Unique identifier for this Contract or a derivative that references a Source Contract.
9360     */
9361    @Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
9362    @Description(shortDefinition="Contract number", formalDefinition="Unique identifier for this Contract or a derivative that references a Source Contract." )
9363    protected List<Identifier> identifier;
9364
9365    /**
9366     * Canonical identifier for this contract, represented as a URI (globally unique).
9367     */
9368    @Child(name = "url", type = {UriType.class}, order=1, min=0, max=1, modifier=false, summary=false)
9369    @Description(shortDefinition="Basal definition", formalDefinition="Canonical identifier for this contract, represented as a URI (globally unique)." )
9370    protected UriType url;
9371
9372    /**
9373     * An edition identifier used for business purposes to label business significant variants.
9374     */
9375    @Child(name = "version", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=true)
9376    @Description(shortDefinition="Business edition", formalDefinition="An edition identifier used for business purposes to label business significant variants." )
9377    protected StringType version;
9378
9379    /**
9380     * The status of the resource instance.
9381     */
9382    @Child(name = "status", type = {CodeType.class}, order=3, min=0, max=1, modifier=true, summary=true)
9383    @Description(shortDefinition="amended | appended | cancelled | disputed | entered-in-error | executable +", formalDefinition="The status of the resource instance." )
9384    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/contract-status")
9385    protected Enumeration<ContractResourceStatusCodes> status;
9386
9387    /**
9388     * Legal states of the formation of a legal instrument, which is a formally executed written document that can be formally attributed to its author, records and formally expresses a legally enforceable act, process, or contractual duty, obligation, or right, and therefore evidences that act, process, or agreement.
9389     */
9390    @Child(name = "legalState", type = {CodeableConcept.class}, order=4, min=0, max=1, modifier=false, summary=false)
9391    @Description(shortDefinition="Negotiation status", formalDefinition="Legal states of the formation of a legal instrument, which is a formally executed written document that can be formally attributed to its author, records and formally expresses a legally enforceable act, process, or contractual duty, obligation, or right, and therefore evidences that act, process, or agreement." )
9392    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/contract-legalstate")
9393    protected CodeableConcept legalState;
9394
9395    /**
9396     * The URL pointing to a FHIR-defined Contract Definition that is adhered to in whole or part by this Contract.
9397     */
9398    @Child(name = "instantiatesCanonical", type = {Contract.class}, order=5, min=0, max=1, modifier=false, summary=false)
9399    @Description(shortDefinition="Source Contract Definition", formalDefinition="The URL pointing to a FHIR-defined Contract Definition that is adhered to in whole or part by this Contract." )
9400    protected Reference instantiatesCanonical;
9401
9402    /**
9403     * The URL pointing to an externally maintained definition that is adhered to in whole or in part by this Contract.
9404     */
9405    @Child(name = "instantiatesUri", type = {UriType.class}, order=6, min=0, max=1, modifier=false, summary=false)
9406    @Description(shortDefinition="External Contract Definition", formalDefinition="The URL pointing to an externally maintained definition that is adhered to in whole or in part by this Contract." )
9407    protected UriType instantiatesUri;
9408
9409    /**
9410     * The minimal content derived from the basal information source at a specific stage in its lifecycle.
9411     */
9412    @Child(name = "contentDerivative", type = {CodeableConcept.class}, order=7, min=0, max=1, modifier=false, summary=false)
9413    @Description(shortDefinition="Content derived from the basal information", formalDefinition="The minimal content derived from the basal information source at a specific stage in its lifecycle." )
9414    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/contract-content-derivative")
9415    protected CodeableConcept contentDerivative;
9416
9417    /**
9418     * When this  Contract was issued.
9419     */
9420    @Child(name = "issued", type = {DateTimeType.class}, order=8, min=0, max=1, modifier=false, summary=true)
9421    @Description(shortDefinition="When this Contract was issued", formalDefinition="When this  Contract was issued." )
9422    protected DateTimeType issued;
9423
9424    /**
9425     * Relevant time or time-period when this Contract is applicable.
9426     */
9427    @Child(name = "applies", type = {Period.class}, order=9, min=0, max=1, modifier=false, summary=true)
9428    @Description(shortDefinition="Effective time", formalDefinition="Relevant time or time-period when this Contract is applicable." )
9429    protected Period applies;
9430
9431    /**
9432     * Event resulting in discontinuation or termination of this Contract instance by one or more parties to the contract.
9433     */
9434    @Child(name = "expirationType", type = {CodeableConcept.class}, order=10, min=0, max=1, modifier=false, summary=false)
9435    @Description(shortDefinition="Contract cessation cause", formalDefinition="Event resulting in discontinuation or termination of this Contract instance by one or more parties to the contract." )
9436    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/contract-expiration-type")
9437    protected CodeableConcept expirationType;
9438
9439    /**
9440     * The target entity impacted by or of interest to parties to the agreement.
9441     */
9442    @Child(name = "subject", type = {Reference.class}, order=11, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
9443    @Description(shortDefinition="Contract Target Entity", formalDefinition="The target entity impacted by or of interest to parties to the agreement." )
9444    protected List<Reference> subject;
9445
9446    /**
9447     * A formally or informally recognized grouping of people, principals, organizations, or jurisdictions formed for the purpose of achieving some form of collective action such as the promulgation, administration and enforcement of contracts and policies.
9448     */
9449    @Child(name = "authority", type = {Organization.class}, order=12, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
9450    @Description(shortDefinition="Authority under which this Contract has standing", formalDefinition="A formally or informally recognized grouping of people, principals, organizations, or jurisdictions formed for the purpose of achieving some form of collective action such as the promulgation, administration and enforcement of contracts and policies." )
9451    protected List<Reference> authority;
9452
9453    /**
9454     * Recognized governance framework or system operating with a circumscribed scope in accordance with specified principles, policies, processes or procedures for managing rights, actions, or behaviors of parties or principals relative to resources.
9455     */
9456    @Child(name = "domain", type = {Location.class}, order=13, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
9457    @Description(shortDefinition="A sphere of control governed by an authoritative jurisdiction, organization, or person", formalDefinition="Recognized governance framework or system operating with a circumscribed scope in accordance with specified principles, policies, processes or procedures for managing rights, actions, or behaviors of parties or principals relative to resources." )
9458    protected List<Reference> domain;
9459
9460    /**
9461     * Sites in which the contract is complied with,  exercised, or in force.
9462     */
9463    @Child(name = "site", type = {Location.class}, order=14, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
9464    @Description(shortDefinition="Specific Location", formalDefinition="Sites in which the contract is complied with,  exercised, or in force." )
9465    protected List<Reference> site;
9466
9467    /**
9468     * A natural language name identifying this Contract definition, derivative, or instance in any legal state. Provides additional information about its content. This name should be usable as an identifier for the module by machine processing applications such as code generation.
9469     */
9470    @Child(name = "name", type = {StringType.class}, order=15, min=0, max=1, modifier=false, summary=true)
9471    @Description(shortDefinition="Computer friendly designation", formalDefinition="A natural language name identifying this Contract definition, derivative, or instance in any legal state. Provides additional information about its content. This name should be usable as an identifier for the module by machine processing applications such as code generation." )
9472    protected StringType name;
9473
9474    /**
9475     * A short, descriptive, user-friendly title for this Contract definition, derivative, or instance in any legal state.
9476     */
9477    @Child(name = "title", type = {StringType.class}, order=16, min=0, max=1, modifier=false, summary=true)
9478    @Description(shortDefinition="Human Friendly name", formalDefinition="A short, descriptive, user-friendly title for this Contract definition, derivative, or instance in any legal state." )
9479    protected StringType title;
9480
9481    /**
9482     * A more detailed or qualifying explanatory or alternate user-friendly title for this Contract definition, derivative, or instance in any legal state.
9483     */
9484    @Child(name = "subtitle", type = {StringType.class}, order=17, min=0, max=1, modifier=false, summary=false)
9485    @Description(shortDefinition="Subordinate Friendly name", formalDefinition="A more detailed or qualifying explanatory or alternate user-friendly title for this Contract definition, derivative, or instance in any legal state." )
9486    protected StringType subtitle;
9487
9488    /**
9489     * Alternative representation of the title for this Contract definition, derivative, or instance in any legal state., e.g., a domain specific contract number related to legislation.
9490     */
9491    @Child(name = "alias", type = {StringType.class}, order=18, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
9492    @Description(shortDefinition="Acronym or short name", formalDefinition="Alternative representation of the title for this Contract definition, derivative, or instance in any legal state., e.g., a domain specific contract number related to legislation." )
9493    protected List<StringType> alias;
9494
9495    /**
9496     * The individual or organization that authored the Contract definition, derivative, or instance in any legal state.
9497     */
9498    @Child(name = "author", type = {Patient.class, Practitioner.class, PractitionerRole.class, Organization.class}, order=19, min=0, max=1, modifier=false, summary=false)
9499    @Description(shortDefinition="Source of Contract", formalDefinition="The individual or organization that authored the Contract definition, derivative, or instance in any legal state." )
9500    protected Reference author;
9501
9502    /**
9503     * A selector of legal concerns for this Contract definition, derivative, or instance in any legal state.
9504     */
9505    @Child(name = "scope", type = {CodeableConcept.class}, order=20, min=0, max=1, modifier=false, summary=false)
9506    @Description(shortDefinition="Range of Legal Concerns", formalDefinition="A selector of legal concerns for this Contract definition, derivative, or instance in any legal state." )
9507    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/contract-scope")
9508    protected CodeableConcept scope;
9509
9510    /**
9511     * Narrows the range of legal concerns to focus on the achievement of specific contractual objectives.
9512     */
9513    @Child(name = "topic", type = {CodeableConcept.class, Reference.class}, order=21, min=0, max=1, modifier=false, summary=false)
9514    @Description(shortDefinition="Focus of contract interest", formalDefinition="Narrows the range of legal concerns to focus on the achievement of specific contractual objectives." )
9515    protected DataType topic;
9516
9517    /**
9518     * A high-level category for the legal instrument, whether constructed as a Contract definition, derivative, or instance in any legal state.  Provides additional information about its content within the context of the Contract's scope to distinguish the kinds of systems that would be interested in the contract.
9519     */
9520    @Child(name = "type", type = {CodeableConcept.class}, order=22, min=0, max=1, modifier=false, summary=true)
9521    @Description(shortDefinition="Legal instrument category", formalDefinition="A high-level category for the legal instrument, whether constructed as a Contract definition, derivative, or instance in any legal state.  Provides additional information about its content within the context of the Contract's scope to distinguish the kinds of systems that would be interested in the contract." )
9522    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/contract-type")
9523    protected CodeableConcept type;
9524
9525    /**
9526     * Sub-category for the Contract that distinguishes the kinds of systems that would be interested in the Contract within the context of the Contract's scope.
9527     */
9528    @Child(name = "subType", type = {CodeableConcept.class}, order=23, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
9529    @Description(shortDefinition="Subtype within the context of type", formalDefinition="Sub-category for the Contract that distinguishes the kinds of systems that would be interested in the Contract within the context of the Contract's scope." )
9530    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/contract-subtype")
9531    protected List<CodeableConcept> subType;
9532
9533    /**
9534     * Precusory content developed with a focus and intent of supporting the formation a Contract instance, which may be associated with and transformable into a Contract.
9535     */
9536    @Child(name = "contentDefinition", type = {}, order=24, min=0, max=1, modifier=false, summary=false)
9537    @Description(shortDefinition="Contract precursor content", formalDefinition="Precusory content developed with a focus and intent of supporting the formation a Contract instance, which may be associated with and transformable into a Contract." )
9538    protected ContentDefinitionComponent contentDefinition;
9539
9540    /**
9541     * One or more Contract Provisions, which may be related and conveyed as a group, and may contain nested groups.
9542     */
9543    @Child(name = "term", type = {}, order=25, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
9544    @Description(shortDefinition="Contract Term List", formalDefinition="One or more Contract Provisions, which may be related and conveyed as a group, and may contain nested groups." )
9545    protected List<TermComponent> term;
9546
9547    /**
9548     * Information that may be needed by/relevant to the performer in their execution of this term action.
9549     */
9550    @Child(name = "supportingInfo", type = {Reference.class}, order=26, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
9551    @Description(shortDefinition="Extra Information", formalDefinition="Information that may be needed by/relevant to the performer in their execution of this term action." )
9552    protected List<Reference> supportingInfo;
9553
9554    /**
9555     * Links to Provenance records for past versions of this Contract definition, derivative, or instance, which identify key state transitions or updates that are likely to be relevant to a user looking at the current version of the Contract.  The Provenance.entity indicates the target that was changed in the update (see [Provenance.entity](provenance-definitions.html#Provenance.entity)).
9556     */
9557    @Child(name = "relevantHistory", type = {Provenance.class}, order=27, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
9558    @Description(shortDefinition="Key event in Contract History", formalDefinition="Links to Provenance records for past versions of this Contract definition, derivative, or instance, which identify key state transitions or updates that are likely to be relevant to a user looking at the current version of the Contract.  The Provenance.entity indicates the target that was changed in the update (see [Provenance.entity](provenance-definitions.html#Provenance.entity))." )
9559    protected List<Reference> relevantHistory;
9560
9561    /**
9562     * Parties with legal standing in the Contract, including the principal parties, the grantor(s) and grantee(s), which are any person or organization bound by the contract, and any ancillary parties, which facilitate the execution of the contract such as a notary or witness.
9563     */
9564    @Child(name = "signer", type = {}, order=28, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
9565    @Description(shortDefinition="Contract Signatory", formalDefinition="Parties with legal standing in the Contract, including the principal parties, the grantor(s) and grantee(s), which are any person or organization bound by the contract, and any ancillary parties, which facilitate the execution of the contract such as a notary or witness." )
9566    protected List<SignatoryComponent> signer;
9567
9568    /**
9569     * The "patient friendly language" versionof the Contract in whole or in parts. "Patient friendly language" means the representation of the Contract and Contract Provisions in a manner that is readily accessible and understandable by a layperson in accordance with best practices for communication styles that ensure that those agreeing to or signing the Contract understand the roles, actions, obligations, responsibilities, and implication of the agreement.
9570     */
9571    @Child(name = "friendly", type = {}, order=29, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
9572    @Description(shortDefinition="Contract Friendly Language", formalDefinition="The \"patient friendly language\" versionof the Contract in whole or in parts. \"Patient friendly language\" means the representation of the Contract and Contract Provisions in a manner that is readily accessible and understandable by a layperson in accordance with best practices for communication styles that ensure that those agreeing to or signing the Contract understand the roles, actions, obligations, responsibilities, and implication of the agreement." )
9573    protected List<FriendlyLanguageComponent> friendly;
9574
9575    /**
9576     * List of Legal expressions or representations of this Contract.
9577     */
9578    @Child(name = "legal", type = {}, order=30, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
9579    @Description(shortDefinition="Contract Legal Language", formalDefinition="List of Legal expressions or representations of this Contract." )
9580    protected List<LegalLanguageComponent> legal;
9581
9582    /**
9583     * List of Computable Policy Rule Language Representations of this Contract.
9584     */
9585    @Child(name = "rule", type = {}, order=31, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
9586    @Description(shortDefinition="Computable Contract Language", formalDefinition="List of Computable Policy Rule Language Representations of this Contract." )
9587    protected List<ComputableLanguageComponent> rule;
9588
9589    /**
9590     * Legally binding Contract: This is the signed and legally recognized representation of the Contract, which is considered the "source of truth" and which would be the basis for legal action related to enforcement of this Contract.
9591     */
9592    @Child(name = "legallyBinding", type = {Attachment.class, Composition.class, DocumentReference.class, QuestionnaireResponse.class, Contract.class}, order=32, min=0, max=1, modifier=false, summary=false)
9593    @Description(shortDefinition="Binding Contract", formalDefinition="Legally binding Contract: This is the signed and legally recognized representation of the Contract, which is considered the \"source of truth\" and which would be the basis for legal action related to enforcement of this Contract." )
9594    protected DataType legallyBinding;
9595
9596    private static final long serialVersionUID = -792431459L;
9597
9598  /**
9599   * Constructor
9600   */
9601    public Contract() {
9602      super();
9603    }
9604
9605    /**
9606     * @return {@link #identifier} (Unique identifier for this Contract or a derivative that references a Source Contract.)
9607     */
9608    public List<Identifier> getIdentifier() { 
9609      if (this.identifier == null)
9610        this.identifier = new ArrayList<Identifier>();
9611      return this.identifier;
9612    }
9613
9614    /**
9615     * @return Returns a reference to <code>this</code> for easy method chaining
9616     */
9617    public Contract setIdentifier(List<Identifier> theIdentifier) { 
9618      this.identifier = theIdentifier;
9619      return this;
9620    }
9621
9622    public boolean hasIdentifier() { 
9623      if (this.identifier == null)
9624        return false;
9625      for (Identifier item : this.identifier)
9626        if (!item.isEmpty())
9627          return true;
9628      return false;
9629    }
9630
9631    public Identifier addIdentifier() { //3
9632      Identifier t = new Identifier();
9633      if (this.identifier == null)
9634        this.identifier = new ArrayList<Identifier>();
9635      this.identifier.add(t);
9636      return t;
9637    }
9638
9639    public Contract addIdentifier(Identifier t) { //3
9640      if (t == null)
9641        return this;
9642      if (this.identifier == null)
9643        this.identifier = new ArrayList<Identifier>();
9644      this.identifier.add(t);
9645      return this;
9646    }
9647
9648    /**
9649     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {3}
9650     */
9651    public Identifier getIdentifierFirstRep() { 
9652      if (getIdentifier().isEmpty()) {
9653        addIdentifier();
9654      }
9655      return getIdentifier().get(0);
9656    }
9657
9658    /**
9659     * @return {@link #url} (Canonical identifier for this contract, represented as a URI (globally unique).). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
9660     */
9661    public UriType getUrlElement() { 
9662      if (this.url == null)
9663        if (Configuration.errorOnAutoCreate())
9664          throw new Error("Attempt to auto-create Contract.url");
9665        else if (Configuration.doAutoCreate())
9666          this.url = new UriType(); // bb
9667      return this.url;
9668    }
9669
9670    public boolean hasUrlElement() { 
9671      return this.url != null && !this.url.isEmpty();
9672    }
9673
9674    public boolean hasUrl() { 
9675      return this.url != null && !this.url.isEmpty();
9676    }
9677
9678    /**
9679     * @param value {@link #url} (Canonical identifier for this contract, represented as a URI (globally unique).). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
9680     */
9681    public Contract setUrlElement(UriType value) { 
9682      this.url = value;
9683      return this;
9684    }
9685
9686    /**
9687     * @return Canonical identifier for this contract, represented as a URI (globally unique).
9688     */
9689    public String getUrl() { 
9690      return this.url == null ? null : this.url.getValue();
9691    }
9692
9693    /**
9694     * @param value Canonical identifier for this contract, represented as a URI (globally unique).
9695     */
9696    public Contract setUrl(String value) { 
9697      if (Utilities.noString(value))
9698        this.url = null;
9699      else {
9700        if (this.url == null)
9701          this.url = new UriType();
9702        this.url.setValue(value);
9703      }
9704      return this;
9705    }
9706
9707    /**
9708     * @return {@link #version} (An edition identifier used for business purposes to label business significant variants.). This is the underlying object with id, value and extensions. The accessor "getVersion" gives direct access to the value
9709     */
9710    public StringType getVersionElement() { 
9711      if (this.version == null)
9712        if (Configuration.errorOnAutoCreate())
9713          throw new Error("Attempt to auto-create Contract.version");
9714        else if (Configuration.doAutoCreate())
9715          this.version = new StringType(); // bb
9716      return this.version;
9717    }
9718
9719    public boolean hasVersionElement() { 
9720      return this.version != null && !this.version.isEmpty();
9721    }
9722
9723    public boolean hasVersion() { 
9724      return this.version != null && !this.version.isEmpty();
9725    }
9726
9727    /**
9728     * @param value {@link #version} (An edition identifier used for business purposes to label business significant variants.). This is the underlying object with id, value and extensions. The accessor "getVersion" gives direct access to the value
9729     */
9730    public Contract setVersionElement(StringType value) { 
9731      this.version = value;
9732      return this;
9733    }
9734
9735    /**
9736     * @return An edition identifier used for business purposes to label business significant variants.
9737     */
9738    public String getVersion() { 
9739      return this.version == null ? null : this.version.getValue();
9740    }
9741
9742    /**
9743     * @param value An edition identifier used for business purposes to label business significant variants.
9744     */
9745    public Contract setVersion(String value) { 
9746      if (Utilities.noString(value))
9747        this.version = null;
9748      else {
9749        if (this.version == null)
9750          this.version = new StringType();
9751        this.version.setValue(value);
9752      }
9753      return this;
9754    }
9755
9756    /**
9757     * @return {@link #status} (The status of the resource instance.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
9758     */
9759    public Enumeration<ContractResourceStatusCodes> getStatusElement() { 
9760      if (this.status == null)
9761        if (Configuration.errorOnAutoCreate())
9762          throw new Error("Attempt to auto-create Contract.status");
9763        else if (Configuration.doAutoCreate())
9764          this.status = new Enumeration<ContractResourceStatusCodes>(new ContractResourceStatusCodesEnumFactory()); // bb
9765      return this.status;
9766    }
9767
9768    public boolean hasStatusElement() { 
9769      return this.status != null && !this.status.isEmpty();
9770    }
9771
9772    public boolean hasStatus() { 
9773      return this.status != null && !this.status.isEmpty();
9774    }
9775
9776    /**
9777     * @param value {@link #status} (The status of the resource instance.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
9778     */
9779    public Contract setStatusElement(Enumeration<ContractResourceStatusCodes> value) { 
9780      this.status = value;
9781      return this;
9782    }
9783
9784    /**
9785     * @return The status of the resource instance.
9786     */
9787    public ContractResourceStatusCodes getStatus() { 
9788      return this.status == null ? null : this.status.getValue();
9789    }
9790
9791    /**
9792     * @param value The status of the resource instance.
9793     */
9794    public Contract setStatus(ContractResourceStatusCodes value) { 
9795      if (value == null)
9796        this.status = null;
9797      else {
9798        if (this.status == null)
9799          this.status = new Enumeration<ContractResourceStatusCodes>(new ContractResourceStatusCodesEnumFactory());
9800        this.status.setValue(value);
9801      }
9802      return this;
9803    }
9804
9805    /**
9806     * @return {@link #legalState} (Legal states of the formation of a legal instrument, which is a formally executed written document that can be formally attributed to its author, records and formally expresses a legally enforceable act, process, or contractual duty, obligation, or right, and therefore evidences that act, process, or agreement.)
9807     */
9808    public CodeableConcept getLegalState() { 
9809      if (this.legalState == null)
9810        if (Configuration.errorOnAutoCreate())
9811          throw new Error("Attempt to auto-create Contract.legalState");
9812        else if (Configuration.doAutoCreate())
9813          this.legalState = new CodeableConcept(); // cc
9814      return this.legalState;
9815    }
9816
9817    public boolean hasLegalState() { 
9818      return this.legalState != null && !this.legalState.isEmpty();
9819    }
9820
9821    /**
9822     * @param value {@link #legalState} (Legal states of the formation of a legal instrument, which is a formally executed written document that can be formally attributed to its author, records and formally expresses a legally enforceable act, process, or contractual duty, obligation, or right, and therefore evidences that act, process, or agreement.)
9823     */
9824    public Contract setLegalState(CodeableConcept value) { 
9825      this.legalState = value;
9826      return this;
9827    }
9828
9829    /**
9830     * @return {@link #instantiatesCanonical} (The URL pointing to a FHIR-defined Contract Definition that is adhered to in whole or part by this Contract.)
9831     */
9832    public Reference getInstantiatesCanonical() { 
9833      if (this.instantiatesCanonical == null)
9834        if (Configuration.errorOnAutoCreate())
9835          throw new Error("Attempt to auto-create Contract.instantiatesCanonical");
9836        else if (Configuration.doAutoCreate())
9837          this.instantiatesCanonical = new Reference(); // cc
9838      return this.instantiatesCanonical;
9839    }
9840
9841    public boolean hasInstantiatesCanonical() { 
9842      return this.instantiatesCanonical != null && !this.instantiatesCanonical.isEmpty();
9843    }
9844
9845    /**
9846     * @param value {@link #instantiatesCanonical} (The URL pointing to a FHIR-defined Contract Definition that is adhered to in whole or part by this Contract.)
9847     */
9848    public Contract setInstantiatesCanonical(Reference value) { 
9849      this.instantiatesCanonical = value;
9850      return this;
9851    }
9852
9853    /**
9854     * @return {@link #instantiatesUri} (The URL pointing to an externally maintained definition that is adhered to in whole or in part by this Contract.). This is the underlying object with id, value and extensions. The accessor "getInstantiatesUri" gives direct access to the value
9855     */
9856    public UriType getInstantiatesUriElement() { 
9857      if (this.instantiatesUri == null)
9858        if (Configuration.errorOnAutoCreate())
9859          throw new Error("Attempt to auto-create Contract.instantiatesUri");
9860        else if (Configuration.doAutoCreate())
9861          this.instantiatesUri = new UriType(); // bb
9862      return this.instantiatesUri;
9863    }
9864
9865    public boolean hasInstantiatesUriElement() { 
9866      return this.instantiatesUri != null && !this.instantiatesUri.isEmpty();
9867    }
9868
9869    public boolean hasInstantiatesUri() { 
9870      return this.instantiatesUri != null && !this.instantiatesUri.isEmpty();
9871    }
9872
9873    /**
9874     * @param value {@link #instantiatesUri} (The URL pointing to an externally maintained definition that is adhered to in whole or in part by this Contract.). This is the underlying object with id, value and extensions. The accessor "getInstantiatesUri" gives direct access to the value
9875     */
9876    public Contract setInstantiatesUriElement(UriType value) { 
9877      this.instantiatesUri = value;
9878      return this;
9879    }
9880
9881    /**
9882     * @return The URL pointing to an externally maintained definition that is adhered to in whole or in part by this Contract.
9883     */
9884    public String getInstantiatesUri() { 
9885      return this.instantiatesUri == null ? null : this.instantiatesUri.getValue();
9886    }
9887
9888    /**
9889     * @param value The URL pointing to an externally maintained definition that is adhered to in whole or in part by this Contract.
9890     */
9891    public Contract setInstantiatesUri(String value) { 
9892      if (Utilities.noString(value))
9893        this.instantiatesUri = null;
9894      else {
9895        if (this.instantiatesUri == null)
9896          this.instantiatesUri = new UriType();
9897        this.instantiatesUri.setValue(value);
9898      }
9899      return this;
9900    }
9901
9902    /**
9903     * @return {@link #contentDerivative} (The minimal content derived from the basal information source at a specific stage in its lifecycle.)
9904     */
9905    public CodeableConcept getContentDerivative() { 
9906      if (this.contentDerivative == null)
9907        if (Configuration.errorOnAutoCreate())
9908          throw new Error("Attempt to auto-create Contract.contentDerivative");
9909        else if (Configuration.doAutoCreate())
9910          this.contentDerivative = new CodeableConcept(); // cc
9911      return this.contentDerivative;
9912    }
9913
9914    public boolean hasContentDerivative() { 
9915      return this.contentDerivative != null && !this.contentDerivative.isEmpty();
9916    }
9917
9918    /**
9919     * @param value {@link #contentDerivative} (The minimal content derived from the basal information source at a specific stage in its lifecycle.)
9920     */
9921    public Contract setContentDerivative(CodeableConcept value) { 
9922      this.contentDerivative = value;
9923      return this;
9924    }
9925
9926    /**
9927     * @return {@link #issued} (When this  Contract was issued.). This is the underlying object with id, value and extensions. The accessor "getIssued" gives direct access to the value
9928     */
9929    public DateTimeType getIssuedElement() { 
9930      if (this.issued == null)
9931        if (Configuration.errorOnAutoCreate())
9932          throw new Error("Attempt to auto-create Contract.issued");
9933        else if (Configuration.doAutoCreate())
9934          this.issued = new DateTimeType(); // bb
9935      return this.issued;
9936    }
9937
9938    public boolean hasIssuedElement() { 
9939      return this.issued != null && !this.issued.isEmpty();
9940    }
9941
9942    public boolean hasIssued() { 
9943      return this.issued != null && !this.issued.isEmpty();
9944    }
9945
9946    /**
9947     * @param value {@link #issued} (When this  Contract was issued.). This is the underlying object with id, value and extensions. The accessor "getIssued" gives direct access to the value
9948     */
9949    public Contract setIssuedElement(DateTimeType value) { 
9950      this.issued = value;
9951      return this;
9952    }
9953
9954    /**
9955     * @return When this  Contract was issued.
9956     */
9957    public Date getIssued() { 
9958      return this.issued == null ? null : this.issued.getValue();
9959    }
9960
9961    /**
9962     * @param value When this  Contract was issued.
9963     */
9964    public Contract setIssued(Date value) { 
9965      if (value == null)
9966        this.issued = null;
9967      else {
9968        if (this.issued == null)
9969          this.issued = new DateTimeType();
9970        this.issued.setValue(value);
9971      }
9972      return this;
9973    }
9974
9975    /**
9976     * @return {@link #applies} (Relevant time or time-period when this Contract is applicable.)
9977     */
9978    public Period getApplies() { 
9979      if (this.applies == null)
9980        if (Configuration.errorOnAutoCreate())
9981          throw new Error("Attempt to auto-create Contract.applies");
9982        else if (Configuration.doAutoCreate())
9983          this.applies = new Period(); // cc
9984      return this.applies;
9985    }
9986
9987    public boolean hasApplies() { 
9988      return this.applies != null && !this.applies.isEmpty();
9989    }
9990
9991    /**
9992     * @param value {@link #applies} (Relevant time or time-period when this Contract is applicable.)
9993     */
9994    public Contract setApplies(Period value) { 
9995      this.applies = value;
9996      return this;
9997    }
9998
9999    /**
10000     * @return {@link #expirationType} (Event resulting in discontinuation or termination of this Contract instance by one or more parties to the contract.)
10001     */
10002    public CodeableConcept getExpirationType() { 
10003      if (this.expirationType == null)
10004        if (Configuration.errorOnAutoCreate())
10005          throw new Error("Attempt to auto-create Contract.expirationType");
10006        else if (Configuration.doAutoCreate())
10007          this.expirationType = new CodeableConcept(); // cc
10008      return this.expirationType;
10009    }
10010
10011    public boolean hasExpirationType() { 
10012      return this.expirationType != null && !this.expirationType.isEmpty();
10013    }
10014
10015    /**
10016     * @param value {@link #expirationType} (Event resulting in discontinuation or termination of this Contract instance by one or more parties to the contract.)
10017     */
10018    public Contract setExpirationType(CodeableConcept value) { 
10019      this.expirationType = value;
10020      return this;
10021    }
10022
10023    /**
10024     * @return {@link #subject} (The target entity impacted by or of interest to parties to the agreement.)
10025     */
10026    public List<Reference> getSubject() { 
10027      if (this.subject == null)
10028        this.subject = new ArrayList<Reference>();
10029      return this.subject;
10030    }
10031
10032    /**
10033     * @return Returns a reference to <code>this</code> for easy method chaining
10034     */
10035    public Contract setSubject(List<Reference> theSubject) { 
10036      this.subject = theSubject;
10037      return this;
10038    }
10039
10040    public boolean hasSubject() { 
10041      if (this.subject == null)
10042        return false;
10043      for (Reference item : this.subject)
10044        if (!item.isEmpty())
10045          return true;
10046      return false;
10047    }
10048
10049    public Reference addSubject() { //3
10050      Reference t = new Reference();
10051      if (this.subject == null)
10052        this.subject = new ArrayList<Reference>();
10053      this.subject.add(t);
10054      return t;
10055    }
10056
10057    public Contract addSubject(Reference t) { //3
10058      if (t == null)
10059        return this;
10060      if (this.subject == null)
10061        this.subject = new ArrayList<Reference>();
10062      this.subject.add(t);
10063      return this;
10064    }
10065
10066    /**
10067     * @return The first repetition of repeating field {@link #subject}, creating it if it does not already exist {3}
10068     */
10069    public Reference getSubjectFirstRep() { 
10070      if (getSubject().isEmpty()) {
10071        addSubject();
10072      }
10073      return getSubject().get(0);
10074    }
10075
10076    /**
10077     * @return {@link #authority} (A formally or informally recognized grouping of people, principals, organizations, or jurisdictions formed for the purpose of achieving some form of collective action such as the promulgation, administration and enforcement of contracts and policies.)
10078     */
10079    public List<Reference> getAuthority() { 
10080      if (this.authority == null)
10081        this.authority = new ArrayList<Reference>();
10082      return this.authority;
10083    }
10084
10085    /**
10086     * @return Returns a reference to <code>this</code> for easy method chaining
10087     */
10088    public Contract setAuthority(List<Reference> theAuthority) { 
10089      this.authority = theAuthority;
10090      return this;
10091    }
10092
10093    public boolean hasAuthority() { 
10094      if (this.authority == null)
10095        return false;
10096      for (Reference item : this.authority)
10097        if (!item.isEmpty())
10098          return true;
10099      return false;
10100    }
10101
10102    public Reference addAuthority() { //3
10103      Reference t = new Reference();
10104      if (this.authority == null)
10105        this.authority = new ArrayList<Reference>();
10106      this.authority.add(t);
10107      return t;
10108    }
10109
10110    public Contract addAuthority(Reference t) { //3
10111      if (t == null)
10112        return this;
10113      if (this.authority == null)
10114        this.authority = new ArrayList<Reference>();
10115      this.authority.add(t);
10116      return this;
10117    }
10118
10119    /**
10120     * @return The first repetition of repeating field {@link #authority}, creating it if it does not already exist {3}
10121     */
10122    public Reference getAuthorityFirstRep() { 
10123      if (getAuthority().isEmpty()) {
10124        addAuthority();
10125      }
10126      return getAuthority().get(0);
10127    }
10128
10129    /**
10130     * @return {@link #domain} (Recognized governance framework or system operating with a circumscribed scope in accordance with specified principles, policies, processes or procedures for managing rights, actions, or behaviors of parties or principals relative to resources.)
10131     */
10132    public List<Reference> getDomain() { 
10133      if (this.domain == null)
10134        this.domain = new ArrayList<Reference>();
10135      return this.domain;
10136    }
10137
10138    /**
10139     * @return Returns a reference to <code>this</code> for easy method chaining
10140     */
10141    public Contract setDomain(List<Reference> theDomain) { 
10142      this.domain = theDomain;
10143      return this;
10144    }
10145
10146    public boolean hasDomain() { 
10147      if (this.domain == null)
10148        return false;
10149      for (Reference item : this.domain)
10150        if (!item.isEmpty())
10151          return true;
10152      return false;
10153    }
10154
10155    public Reference addDomain() { //3
10156      Reference t = new Reference();
10157      if (this.domain == null)
10158        this.domain = new ArrayList<Reference>();
10159      this.domain.add(t);
10160      return t;
10161    }
10162
10163    public Contract addDomain(Reference t) { //3
10164      if (t == null)
10165        return this;
10166      if (this.domain == null)
10167        this.domain = new ArrayList<Reference>();
10168      this.domain.add(t);
10169      return this;
10170    }
10171
10172    /**
10173     * @return The first repetition of repeating field {@link #domain}, creating it if it does not already exist {3}
10174     */
10175    public Reference getDomainFirstRep() { 
10176      if (getDomain().isEmpty()) {
10177        addDomain();
10178      }
10179      return getDomain().get(0);
10180    }
10181
10182    /**
10183     * @return {@link #site} (Sites in which the contract is complied with,  exercised, or in force.)
10184     */
10185    public List<Reference> getSite() { 
10186      if (this.site == null)
10187        this.site = new ArrayList<Reference>();
10188      return this.site;
10189    }
10190
10191    /**
10192     * @return Returns a reference to <code>this</code> for easy method chaining
10193     */
10194    public Contract setSite(List<Reference> theSite) { 
10195      this.site = theSite;
10196      return this;
10197    }
10198
10199    public boolean hasSite() { 
10200      if (this.site == null)
10201        return false;
10202      for (Reference item : this.site)
10203        if (!item.isEmpty())
10204          return true;
10205      return false;
10206    }
10207
10208    public Reference addSite() { //3
10209      Reference t = new Reference();
10210      if (this.site == null)
10211        this.site = new ArrayList<Reference>();
10212      this.site.add(t);
10213      return t;
10214    }
10215
10216    public Contract addSite(Reference t) { //3
10217      if (t == null)
10218        return this;
10219      if (this.site == null)
10220        this.site = new ArrayList<Reference>();
10221      this.site.add(t);
10222      return this;
10223    }
10224
10225    /**
10226     * @return The first repetition of repeating field {@link #site}, creating it if it does not already exist {3}
10227     */
10228    public Reference getSiteFirstRep() { 
10229      if (getSite().isEmpty()) {
10230        addSite();
10231      }
10232      return getSite().get(0);
10233    }
10234
10235    /**
10236     * @return {@link #name} (A natural language name identifying this Contract definition, derivative, or instance in any legal state. Provides additional information about its content. This name should be usable as an identifier for the module by machine processing applications such as code generation.). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
10237     */
10238    public StringType getNameElement() { 
10239      if (this.name == null)
10240        if (Configuration.errorOnAutoCreate())
10241          throw new Error("Attempt to auto-create Contract.name");
10242        else if (Configuration.doAutoCreate())
10243          this.name = new StringType(); // bb
10244      return this.name;
10245    }
10246
10247    public boolean hasNameElement() { 
10248      return this.name != null && !this.name.isEmpty();
10249    }
10250
10251    public boolean hasName() { 
10252      return this.name != null && !this.name.isEmpty();
10253    }
10254
10255    /**
10256     * @param value {@link #name} (A natural language name identifying this Contract definition, derivative, or instance in any legal state. Provides additional information about its content. This name should be usable as an identifier for the module by machine processing applications such as code generation.). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
10257     */
10258    public Contract setNameElement(StringType value) { 
10259      this.name = value;
10260      return this;
10261    }
10262
10263    /**
10264     * @return A natural language name identifying this Contract definition, derivative, or instance in any legal state. Provides additional information about its content. This name should be usable as an identifier for the module by machine processing applications such as code generation.
10265     */
10266    public String getName() { 
10267      return this.name == null ? null : this.name.getValue();
10268    }
10269
10270    /**
10271     * @param value A natural language name identifying this Contract definition, derivative, or instance in any legal state. Provides additional information about its content. This name should be usable as an identifier for the module by machine processing applications such as code generation.
10272     */
10273    public Contract setName(String value) { 
10274      if (Utilities.noString(value))
10275        this.name = null;
10276      else {
10277        if (this.name == null)
10278          this.name = new StringType();
10279        this.name.setValue(value);
10280      }
10281      return this;
10282    }
10283
10284    /**
10285     * @return {@link #title} (A short, descriptive, user-friendly title for this Contract definition, derivative, or instance in any legal state.). This is the underlying object with id, value and extensions. The accessor "getTitle" gives direct access to the value
10286     */
10287    public StringType getTitleElement() { 
10288      if (this.title == null)
10289        if (Configuration.errorOnAutoCreate())
10290          throw new Error("Attempt to auto-create Contract.title");
10291        else if (Configuration.doAutoCreate())
10292          this.title = new StringType(); // bb
10293      return this.title;
10294    }
10295
10296    public boolean hasTitleElement() { 
10297      return this.title != null && !this.title.isEmpty();
10298    }
10299
10300    public boolean hasTitle() { 
10301      return this.title != null && !this.title.isEmpty();
10302    }
10303
10304    /**
10305     * @param value {@link #title} (A short, descriptive, user-friendly title for this Contract definition, derivative, or instance in any legal state.). This is the underlying object with id, value and extensions. The accessor "getTitle" gives direct access to the value
10306     */
10307    public Contract setTitleElement(StringType value) { 
10308      this.title = value;
10309      return this;
10310    }
10311
10312    /**
10313     * @return A short, descriptive, user-friendly title for this Contract definition, derivative, or instance in any legal state.
10314     */
10315    public String getTitle() { 
10316      return this.title == null ? null : this.title.getValue();
10317    }
10318
10319    /**
10320     * @param value A short, descriptive, user-friendly title for this Contract definition, derivative, or instance in any legal state.
10321     */
10322    public Contract setTitle(String value) { 
10323      if (Utilities.noString(value))
10324        this.title = null;
10325      else {
10326        if (this.title == null)
10327          this.title = new StringType();
10328        this.title.setValue(value);
10329      }
10330      return this;
10331    }
10332
10333    /**
10334     * @return {@link #subtitle} (A more detailed or qualifying explanatory or alternate user-friendly title for this Contract definition, derivative, or instance in any legal state.). This is the underlying object with id, value and extensions. The accessor "getSubtitle" gives direct access to the value
10335     */
10336    public StringType getSubtitleElement() { 
10337      if (this.subtitle == null)
10338        if (Configuration.errorOnAutoCreate())
10339          throw new Error("Attempt to auto-create Contract.subtitle");
10340        else if (Configuration.doAutoCreate())
10341          this.subtitle = new StringType(); // bb
10342      return this.subtitle;
10343    }
10344
10345    public boolean hasSubtitleElement() { 
10346      return this.subtitle != null && !this.subtitle.isEmpty();
10347    }
10348
10349    public boolean hasSubtitle() { 
10350      return this.subtitle != null && !this.subtitle.isEmpty();
10351    }
10352
10353    /**
10354     * @param value {@link #subtitle} (A more detailed or qualifying explanatory or alternate user-friendly title for this Contract definition, derivative, or instance in any legal state.). This is the underlying object with id, value and extensions. The accessor "getSubtitle" gives direct access to the value
10355     */
10356    public Contract setSubtitleElement(StringType value) { 
10357      this.subtitle = value;
10358      return this;
10359    }
10360
10361    /**
10362     * @return A more detailed or qualifying explanatory or alternate user-friendly title for this Contract definition, derivative, or instance in any legal state.
10363     */
10364    public String getSubtitle() { 
10365      return this.subtitle == null ? null : this.subtitle.getValue();
10366    }
10367
10368    /**
10369     * @param value A more detailed or qualifying explanatory or alternate user-friendly title for this Contract definition, derivative, or instance in any legal state.
10370     */
10371    public Contract setSubtitle(String value) { 
10372      if (Utilities.noString(value))
10373        this.subtitle = null;
10374      else {
10375        if (this.subtitle == null)
10376          this.subtitle = new StringType();
10377        this.subtitle.setValue(value);
10378      }
10379      return this;
10380    }
10381
10382    /**
10383     * @return {@link #alias} (Alternative representation of the title for this Contract definition, derivative, or instance in any legal state., e.g., a domain specific contract number related to legislation.)
10384     */
10385    public List<StringType> getAlias() { 
10386      if (this.alias == null)
10387        this.alias = new ArrayList<StringType>();
10388      return this.alias;
10389    }
10390
10391    /**
10392     * @return Returns a reference to <code>this</code> for easy method chaining
10393     */
10394    public Contract setAlias(List<StringType> theAlias) { 
10395      this.alias = theAlias;
10396      return this;
10397    }
10398
10399    public boolean hasAlias() { 
10400      if (this.alias == null)
10401        return false;
10402      for (StringType item : this.alias)
10403        if (!item.isEmpty())
10404          return true;
10405      return false;
10406    }
10407
10408    /**
10409     * @return {@link #alias} (Alternative representation of the title for this Contract definition, derivative, or instance in any legal state., e.g., a domain specific contract number related to legislation.)
10410     */
10411    public StringType addAliasElement() {//2 
10412      StringType t = new StringType();
10413      if (this.alias == null)
10414        this.alias = new ArrayList<StringType>();
10415      this.alias.add(t);
10416      return t;
10417    }
10418
10419    /**
10420     * @param value {@link #alias} (Alternative representation of the title for this Contract definition, derivative, or instance in any legal state., e.g., a domain specific contract number related to legislation.)
10421     */
10422    public Contract addAlias(String value) { //1
10423      StringType t = new StringType();
10424      t.setValue(value);
10425      if (this.alias == null)
10426        this.alias = new ArrayList<StringType>();
10427      this.alias.add(t);
10428      return this;
10429    }
10430
10431    /**
10432     * @param value {@link #alias} (Alternative representation of the title for this Contract definition, derivative, or instance in any legal state., e.g., a domain specific contract number related to legislation.)
10433     */
10434    public boolean hasAlias(String value) { 
10435      if (this.alias == null)
10436        return false;
10437      for (StringType v : this.alias)
10438        if (v.getValue().equals(value)) // string
10439          return true;
10440      return false;
10441    }
10442
10443    /**
10444     * @return {@link #author} (The individual or organization that authored the Contract definition, derivative, or instance in any legal state.)
10445     */
10446    public Reference getAuthor() { 
10447      if (this.author == null)
10448        if (Configuration.errorOnAutoCreate())
10449          throw new Error("Attempt to auto-create Contract.author");
10450        else if (Configuration.doAutoCreate())
10451          this.author = new Reference(); // cc
10452      return this.author;
10453    }
10454
10455    public boolean hasAuthor() { 
10456      return this.author != null && !this.author.isEmpty();
10457    }
10458
10459    /**
10460     * @param value {@link #author} (The individual or organization that authored the Contract definition, derivative, or instance in any legal state.)
10461     */
10462    public Contract setAuthor(Reference value) { 
10463      this.author = value;
10464      return this;
10465    }
10466
10467    /**
10468     * @return {@link #scope} (A selector of legal concerns for this Contract definition, derivative, or instance in any legal state.)
10469     */
10470    public CodeableConcept getScope() { 
10471      if (this.scope == null)
10472        if (Configuration.errorOnAutoCreate())
10473          throw new Error("Attempt to auto-create Contract.scope");
10474        else if (Configuration.doAutoCreate())
10475          this.scope = new CodeableConcept(); // cc
10476      return this.scope;
10477    }
10478
10479    public boolean hasScope() { 
10480      return this.scope != null && !this.scope.isEmpty();
10481    }
10482
10483    /**
10484     * @param value {@link #scope} (A selector of legal concerns for this Contract definition, derivative, or instance in any legal state.)
10485     */
10486    public Contract setScope(CodeableConcept value) { 
10487      this.scope = value;
10488      return this;
10489    }
10490
10491    /**
10492     * @return {@link #topic} (Narrows the range of legal concerns to focus on the achievement of specific contractual objectives.)
10493     */
10494    public DataType getTopic() { 
10495      return this.topic;
10496    }
10497
10498    /**
10499     * @return {@link #topic} (Narrows the range of legal concerns to focus on the achievement of specific contractual objectives.)
10500     */
10501    public CodeableConcept getTopicCodeableConcept() throws FHIRException { 
10502      if (this.topic == null)
10503        this.topic = new CodeableConcept();
10504      if (!(this.topic instanceof CodeableConcept))
10505        throw new FHIRException("Type mismatch: the type CodeableConcept was expected, but "+this.topic.getClass().getName()+" was encountered");
10506      return (CodeableConcept) this.topic;
10507    }
10508
10509    public boolean hasTopicCodeableConcept() { 
10510      return this != null && this.topic instanceof CodeableConcept;
10511    }
10512
10513    /**
10514     * @return {@link #topic} (Narrows the range of legal concerns to focus on the achievement of specific contractual objectives.)
10515     */
10516    public Reference getTopicReference() throws FHIRException { 
10517      if (this.topic == null)
10518        this.topic = new Reference();
10519      if (!(this.topic instanceof Reference))
10520        throw new FHIRException("Type mismatch: the type Reference was expected, but "+this.topic.getClass().getName()+" was encountered");
10521      return (Reference) this.topic;
10522    }
10523
10524    public boolean hasTopicReference() { 
10525      return this != null && this.topic instanceof Reference;
10526    }
10527
10528    public boolean hasTopic() { 
10529      return this.topic != null && !this.topic.isEmpty();
10530    }
10531
10532    /**
10533     * @param value {@link #topic} (Narrows the range of legal concerns to focus on the achievement of specific contractual objectives.)
10534     */
10535    public Contract setTopic(DataType value) { 
10536      if (value != null && !(value instanceof CodeableConcept || value instanceof Reference))
10537        throw new FHIRException("Not the right type for Contract.topic[x]: "+value.fhirType());
10538      this.topic = value;
10539      return this;
10540    }
10541
10542    /**
10543     * @return {@link #type} (A high-level category for the legal instrument, whether constructed as a Contract definition, derivative, or instance in any legal state.  Provides additional information about its content within the context of the Contract's scope to distinguish the kinds of systems that would be interested in the contract.)
10544     */
10545    public CodeableConcept getType() { 
10546      if (this.type == null)
10547        if (Configuration.errorOnAutoCreate())
10548          throw new Error("Attempt to auto-create Contract.type");
10549        else if (Configuration.doAutoCreate())
10550          this.type = new CodeableConcept(); // cc
10551      return this.type;
10552    }
10553
10554    public boolean hasType() { 
10555      return this.type != null && !this.type.isEmpty();
10556    }
10557
10558    /**
10559     * @param value {@link #type} (A high-level category for the legal instrument, whether constructed as a Contract definition, derivative, or instance in any legal state.  Provides additional information about its content within the context of the Contract's scope to distinguish the kinds of systems that would be interested in the contract.)
10560     */
10561    public Contract setType(CodeableConcept value) { 
10562      this.type = value;
10563      return this;
10564    }
10565
10566    /**
10567     * @return {@link #subType} (Sub-category for the Contract that distinguishes the kinds of systems that would be interested in the Contract within the context of the Contract's scope.)
10568     */
10569    public List<CodeableConcept> getSubType() { 
10570      if (this.subType == null)
10571        this.subType = new ArrayList<CodeableConcept>();
10572      return this.subType;
10573    }
10574
10575    /**
10576     * @return Returns a reference to <code>this</code> for easy method chaining
10577     */
10578    public Contract setSubType(List<CodeableConcept> theSubType) { 
10579      this.subType = theSubType;
10580      return this;
10581    }
10582
10583    public boolean hasSubType() { 
10584      if (this.subType == null)
10585        return false;
10586      for (CodeableConcept item : this.subType)
10587        if (!item.isEmpty())
10588          return true;
10589      return false;
10590    }
10591
10592    public CodeableConcept addSubType() { //3
10593      CodeableConcept t = new CodeableConcept();
10594      if (this.subType == null)
10595        this.subType = new ArrayList<CodeableConcept>();
10596      this.subType.add(t);
10597      return t;
10598    }
10599
10600    public Contract addSubType(CodeableConcept t) { //3
10601      if (t == null)
10602        return this;
10603      if (this.subType == null)
10604        this.subType = new ArrayList<CodeableConcept>();
10605      this.subType.add(t);
10606      return this;
10607    }
10608
10609    /**
10610     * @return The first repetition of repeating field {@link #subType}, creating it if it does not already exist {3}
10611     */
10612    public CodeableConcept getSubTypeFirstRep() { 
10613      if (getSubType().isEmpty()) {
10614        addSubType();
10615      }
10616      return getSubType().get(0);
10617    }
10618
10619    /**
10620     * @return {@link #contentDefinition} (Precusory content developed with a focus and intent of supporting the formation a Contract instance, which may be associated with and transformable into a Contract.)
10621     */
10622    public ContentDefinitionComponent getContentDefinition() { 
10623      if (this.contentDefinition == null)
10624        if (Configuration.errorOnAutoCreate())
10625          throw new Error("Attempt to auto-create Contract.contentDefinition");
10626        else if (Configuration.doAutoCreate())
10627          this.contentDefinition = new ContentDefinitionComponent(); // cc
10628      return this.contentDefinition;
10629    }
10630
10631    public boolean hasContentDefinition() { 
10632      return this.contentDefinition != null && !this.contentDefinition.isEmpty();
10633    }
10634
10635    /**
10636     * @param value {@link #contentDefinition} (Precusory content developed with a focus and intent of supporting the formation a Contract instance, which may be associated with and transformable into a Contract.)
10637     */
10638    public Contract setContentDefinition(ContentDefinitionComponent value) { 
10639      this.contentDefinition = value;
10640      return this;
10641    }
10642
10643    /**
10644     * @return {@link #term} (One or more Contract Provisions, which may be related and conveyed as a group, and may contain nested groups.)
10645     */
10646    public List<TermComponent> getTerm() { 
10647      if (this.term == null)
10648        this.term = new ArrayList<TermComponent>();
10649      return this.term;
10650    }
10651
10652    /**
10653     * @return Returns a reference to <code>this</code> for easy method chaining
10654     */
10655    public Contract setTerm(List<TermComponent> theTerm) { 
10656      this.term = theTerm;
10657      return this;
10658    }
10659
10660    public boolean hasTerm() { 
10661      if (this.term == null)
10662        return false;
10663      for (TermComponent item : this.term)
10664        if (!item.isEmpty())
10665          return true;
10666      return false;
10667    }
10668
10669    public TermComponent addTerm() { //3
10670      TermComponent t = new TermComponent();
10671      if (this.term == null)
10672        this.term = new ArrayList<TermComponent>();
10673      this.term.add(t);
10674      return t;
10675    }
10676
10677    public Contract addTerm(TermComponent t) { //3
10678      if (t == null)
10679        return this;
10680      if (this.term == null)
10681        this.term = new ArrayList<TermComponent>();
10682      this.term.add(t);
10683      return this;
10684    }
10685
10686    /**
10687     * @return The first repetition of repeating field {@link #term}, creating it if it does not already exist {3}
10688     */
10689    public TermComponent getTermFirstRep() { 
10690      if (getTerm().isEmpty()) {
10691        addTerm();
10692      }
10693      return getTerm().get(0);
10694    }
10695
10696    /**
10697     * @return {@link #supportingInfo} (Information that may be needed by/relevant to the performer in their execution of this term action.)
10698     */
10699    public List<Reference> getSupportingInfo() { 
10700      if (this.supportingInfo == null)
10701        this.supportingInfo = new ArrayList<Reference>();
10702      return this.supportingInfo;
10703    }
10704
10705    /**
10706     * @return Returns a reference to <code>this</code> for easy method chaining
10707     */
10708    public Contract setSupportingInfo(List<Reference> theSupportingInfo) { 
10709      this.supportingInfo = theSupportingInfo;
10710      return this;
10711    }
10712
10713    public boolean hasSupportingInfo() { 
10714      if (this.supportingInfo == null)
10715        return false;
10716      for (Reference item : this.supportingInfo)
10717        if (!item.isEmpty())
10718          return true;
10719      return false;
10720    }
10721
10722    public Reference addSupportingInfo() { //3
10723      Reference t = new Reference();
10724      if (this.supportingInfo == null)
10725        this.supportingInfo = new ArrayList<Reference>();
10726      this.supportingInfo.add(t);
10727      return t;
10728    }
10729
10730    public Contract addSupportingInfo(Reference t) { //3
10731      if (t == null)
10732        return this;
10733      if (this.supportingInfo == null)
10734        this.supportingInfo = new ArrayList<Reference>();
10735      this.supportingInfo.add(t);
10736      return this;
10737    }
10738
10739    /**
10740     * @return The first repetition of repeating field {@link #supportingInfo}, creating it if it does not already exist {3}
10741     */
10742    public Reference getSupportingInfoFirstRep() { 
10743      if (getSupportingInfo().isEmpty()) {
10744        addSupportingInfo();
10745      }
10746      return getSupportingInfo().get(0);
10747    }
10748
10749    /**
10750     * @return {@link #relevantHistory} (Links to Provenance records for past versions of this Contract definition, derivative, or instance, which identify key state transitions or updates that are likely to be relevant to a user looking at the current version of the Contract.  The Provenance.entity indicates the target that was changed in the update (see [Provenance.entity](provenance-definitions.html#Provenance.entity)).)
10751     */
10752    public List<Reference> getRelevantHistory() { 
10753      if (this.relevantHistory == null)
10754        this.relevantHistory = new ArrayList<Reference>();
10755      return this.relevantHistory;
10756    }
10757
10758    /**
10759     * @return Returns a reference to <code>this</code> for easy method chaining
10760     */
10761    public Contract setRelevantHistory(List<Reference> theRelevantHistory) { 
10762      this.relevantHistory = theRelevantHistory;
10763      return this;
10764    }
10765
10766    public boolean hasRelevantHistory() { 
10767      if (this.relevantHistory == null)
10768        return false;
10769      for (Reference item : this.relevantHistory)
10770        if (!item.isEmpty())
10771          return true;
10772      return false;
10773    }
10774
10775    public Reference addRelevantHistory() { //3
10776      Reference t = new Reference();
10777      if (this.relevantHistory == null)
10778        this.relevantHistory = new ArrayList<Reference>();
10779      this.relevantHistory.add(t);
10780      return t;
10781    }
10782
10783    public Contract addRelevantHistory(Reference t) { //3
10784      if (t == null)
10785        return this;
10786      if (this.relevantHistory == null)
10787        this.relevantHistory = new ArrayList<Reference>();
10788      this.relevantHistory.add(t);
10789      return this;
10790    }
10791
10792    /**
10793     * @return The first repetition of repeating field {@link #relevantHistory}, creating it if it does not already exist {3}
10794     */
10795    public Reference getRelevantHistoryFirstRep() { 
10796      if (getRelevantHistory().isEmpty()) {
10797        addRelevantHistory();
10798      }
10799      return getRelevantHistory().get(0);
10800    }
10801
10802    /**
10803     * @return {@link #signer} (Parties with legal standing in the Contract, including the principal parties, the grantor(s) and grantee(s), which are any person or organization bound by the contract, and any ancillary parties, which facilitate the execution of the contract such as a notary or witness.)
10804     */
10805    public List<SignatoryComponent> getSigner() { 
10806      if (this.signer == null)
10807        this.signer = new ArrayList<SignatoryComponent>();
10808      return this.signer;
10809    }
10810
10811    /**
10812     * @return Returns a reference to <code>this</code> for easy method chaining
10813     */
10814    public Contract setSigner(List<SignatoryComponent> theSigner) { 
10815      this.signer = theSigner;
10816      return this;
10817    }
10818
10819    public boolean hasSigner() { 
10820      if (this.signer == null)
10821        return false;
10822      for (SignatoryComponent item : this.signer)
10823        if (!item.isEmpty())
10824          return true;
10825      return false;
10826    }
10827
10828    public SignatoryComponent addSigner() { //3
10829      SignatoryComponent t = new SignatoryComponent();
10830      if (this.signer == null)
10831        this.signer = new ArrayList<SignatoryComponent>();
10832      this.signer.add(t);
10833      return t;
10834    }
10835
10836    public Contract addSigner(SignatoryComponent t) { //3
10837      if (t == null)
10838        return this;
10839      if (this.signer == null)
10840        this.signer = new ArrayList<SignatoryComponent>();
10841      this.signer.add(t);
10842      return this;
10843    }
10844
10845    /**
10846     * @return The first repetition of repeating field {@link #signer}, creating it if it does not already exist {3}
10847     */
10848    public SignatoryComponent getSignerFirstRep() { 
10849      if (getSigner().isEmpty()) {
10850        addSigner();
10851      }
10852      return getSigner().get(0);
10853    }
10854
10855    /**
10856     * @return {@link #friendly} (The "patient friendly language" versionof the Contract in whole or in parts. "Patient friendly language" means the representation of the Contract and Contract Provisions in a manner that is readily accessible and understandable by a layperson in accordance with best practices for communication styles that ensure that those agreeing to or signing the Contract understand the roles, actions, obligations, responsibilities, and implication of the agreement.)
10857     */
10858    public List<FriendlyLanguageComponent> getFriendly() { 
10859      if (this.friendly == null)
10860        this.friendly = new ArrayList<FriendlyLanguageComponent>();
10861      return this.friendly;
10862    }
10863
10864    /**
10865     * @return Returns a reference to <code>this</code> for easy method chaining
10866     */
10867    public Contract setFriendly(List<FriendlyLanguageComponent> theFriendly) { 
10868      this.friendly = theFriendly;
10869      return this;
10870    }
10871
10872    public boolean hasFriendly() { 
10873      if (this.friendly == null)
10874        return false;
10875      for (FriendlyLanguageComponent item : this.friendly)
10876        if (!item.isEmpty())
10877          return true;
10878      return false;
10879    }
10880
10881    public FriendlyLanguageComponent addFriendly() { //3
10882      FriendlyLanguageComponent t = new FriendlyLanguageComponent();
10883      if (this.friendly == null)
10884        this.friendly = new ArrayList<FriendlyLanguageComponent>();
10885      this.friendly.add(t);
10886      return t;
10887    }
10888
10889    public Contract addFriendly(FriendlyLanguageComponent t) { //3
10890      if (t == null)
10891        return this;
10892      if (this.friendly == null)
10893        this.friendly = new ArrayList<FriendlyLanguageComponent>();
10894      this.friendly.add(t);
10895      return this;
10896    }
10897
10898    /**
10899     * @return The first repetition of repeating field {@link #friendly}, creating it if it does not already exist {3}
10900     */
10901    public FriendlyLanguageComponent getFriendlyFirstRep() { 
10902      if (getFriendly().isEmpty()) {
10903        addFriendly();
10904      }
10905      return getFriendly().get(0);
10906    }
10907
10908    /**
10909     * @return {@link #legal} (List of Legal expressions or representations of this Contract.)
10910     */
10911    public List<LegalLanguageComponent> getLegal() { 
10912      if (this.legal == null)
10913        this.legal = new ArrayList<LegalLanguageComponent>();
10914      return this.legal;
10915    }
10916
10917    /**
10918     * @return Returns a reference to <code>this</code> for easy method chaining
10919     */
10920    public Contract setLegal(List<LegalLanguageComponent> theLegal) { 
10921      this.legal = theLegal;
10922      return this;
10923    }
10924
10925    public boolean hasLegal() { 
10926      if (this.legal == null)
10927        return false;
10928      for (LegalLanguageComponent item : this.legal)
10929        if (!item.isEmpty())
10930          return true;
10931      return false;
10932    }
10933
10934    public LegalLanguageComponent addLegal() { //3
10935      LegalLanguageComponent t = new LegalLanguageComponent();
10936      if (this.legal == null)
10937        this.legal = new ArrayList<LegalLanguageComponent>();
10938      this.legal.add(t);
10939      return t;
10940    }
10941
10942    public Contract addLegal(LegalLanguageComponent t) { //3
10943      if (t == null)
10944        return this;
10945      if (this.legal == null)
10946        this.legal = new ArrayList<LegalLanguageComponent>();
10947      this.legal.add(t);
10948      return this;
10949    }
10950
10951    /**
10952     * @return The first repetition of repeating field {@link #legal}, creating it if it does not already exist {3}
10953     */
10954    public LegalLanguageComponent getLegalFirstRep() { 
10955      if (getLegal().isEmpty()) {
10956        addLegal();
10957      }
10958      return getLegal().get(0);
10959    }
10960
10961    /**
10962     * @return {@link #rule} (List of Computable Policy Rule Language Representations of this Contract.)
10963     */
10964    public List<ComputableLanguageComponent> getRule() { 
10965      if (this.rule == null)
10966        this.rule = new ArrayList<ComputableLanguageComponent>();
10967      return this.rule;
10968    }
10969
10970    /**
10971     * @return Returns a reference to <code>this</code> for easy method chaining
10972     */
10973    public Contract setRule(List<ComputableLanguageComponent> theRule) { 
10974      this.rule = theRule;
10975      return this;
10976    }
10977
10978    public boolean hasRule() { 
10979      if (this.rule == null)
10980        return false;
10981      for (ComputableLanguageComponent item : this.rule)
10982        if (!item.isEmpty())
10983          return true;
10984      return false;
10985    }
10986
10987    public ComputableLanguageComponent addRule() { //3
10988      ComputableLanguageComponent t = new ComputableLanguageComponent();
10989      if (this.rule == null)
10990        this.rule = new ArrayList<ComputableLanguageComponent>();
10991      this.rule.add(t);
10992      return t;
10993    }
10994
10995    public Contract addRule(ComputableLanguageComponent t) { //3
10996      if (t == null)
10997        return this;
10998      if (this.rule == null)
10999        this.rule = new ArrayList<ComputableLanguageComponent>();
11000      this.rule.add(t);
11001      return this;
11002    }
11003
11004    /**
11005     * @return The first repetition of repeating field {@link #rule}, creating it if it does not already exist {3}
11006     */
11007    public ComputableLanguageComponent getRuleFirstRep() { 
11008      if (getRule().isEmpty()) {
11009        addRule();
11010      }
11011      return getRule().get(0);
11012    }
11013
11014    /**
11015     * @return {@link #legallyBinding} (Legally binding Contract: This is the signed and legally recognized representation of the Contract, which is considered the "source of truth" and which would be the basis for legal action related to enforcement of this Contract.)
11016     */
11017    public DataType getLegallyBinding() { 
11018      return this.legallyBinding;
11019    }
11020
11021    /**
11022     * @return {@link #legallyBinding} (Legally binding Contract: This is the signed and legally recognized representation of the Contract, which is considered the "source of truth" and which would be the basis for legal action related to enforcement of this Contract.)
11023     */
11024    public Attachment getLegallyBindingAttachment() throws FHIRException { 
11025      if (this.legallyBinding == null)
11026        this.legallyBinding = new Attachment();
11027      if (!(this.legallyBinding instanceof Attachment))
11028        throw new FHIRException("Type mismatch: the type Attachment was expected, but "+this.legallyBinding.getClass().getName()+" was encountered");
11029      return (Attachment) this.legallyBinding;
11030    }
11031
11032    public boolean hasLegallyBindingAttachment() { 
11033      return this != null && this.legallyBinding instanceof Attachment;
11034    }
11035
11036    /**
11037     * @return {@link #legallyBinding} (Legally binding Contract: This is the signed and legally recognized representation of the Contract, which is considered the "source of truth" and which would be the basis for legal action related to enforcement of this Contract.)
11038     */
11039    public Reference getLegallyBindingReference() throws FHIRException { 
11040      if (this.legallyBinding == null)
11041        this.legallyBinding = new Reference();
11042      if (!(this.legallyBinding instanceof Reference))
11043        throw new FHIRException("Type mismatch: the type Reference was expected, but "+this.legallyBinding.getClass().getName()+" was encountered");
11044      return (Reference) this.legallyBinding;
11045    }
11046
11047    public boolean hasLegallyBindingReference() { 
11048      return this != null && this.legallyBinding instanceof Reference;
11049    }
11050
11051    public boolean hasLegallyBinding() { 
11052      return this.legallyBinding != null && !this.legallyBinding.isEmpty();
11053    }
11054
11055    /**
11056     * @param value {@link #legallyBinding} (Legally binding Contract: This is the signed and legally recognized representation of the Contract, which is considered the "source of truth" and which would be the basis for legal action related to enforcement of this Contract.)
11057     */
11058    public Contract setLegallyBinding(DataType value) { 
11059      if (value != null && !(value instanceof Attachment || value instanceof Reference))
11060        throw new FHIRException("Not the right type for Contract.legallyBinding[x]: "+value.fhirType());
11061      this.legallyBinding = value;
11062      return this;
11063    }
11064
11065      protected void listChildren(List<Property> children) {
11066        super.listChildren(children);
11067        children.add(new Property("identifier", "Identifier", "Unique identifier for this Contract or a derivative that references a Source Contract.", 0, java.lang.Integer.MAX_VALUE, identifier));
11068        children.add(new Property("url", "uri", "Canonical identifier for this contract, represented as a URI (globally unique).", 0, 1, url));
11069        children.add(new Property("version", "string", "An edition identifier used for business purposes to label business significant variants.", 0, 1, version));
11070        children.add(new Property("status", "code", "The status of the resource instance.", 0, 1, status));
11071        children.add(new Property("legalState", "CodeableConcept", "Legal states of the formation of a legal instrument, which is a formally executed written document that can be formally attributed to its author, records and formally expresses a legally enforceable act, process, or contractual duty, obligation, or right, and therefore evidences that act, process, or agreement.", 0, 1, legalState));
11072        children.add(new Property("instantiatesCanonical", "Reference(Contract)", "The URL pointing to a FHIR-defined Contract Definition that is adhered to in whole or part by this Contract.", 0, 1, instantiatesCanonical));
11073        children.add(new Property("instantiatesUri", "uri", "The URL pointing to an externally maintained definition that is adhered to in whole or in part by this Contract.", 0, 1, instantiatesUri));
11074        children.add(new Property("contentDerivative", "CodeableConcept", "The minimal content derived from the basal information source at a specific stage in its lifecycle.", 0, 1, contentDerivative));
11075        children.add(new Property("issued", "dateTime", "When this  Contract was issued.", 0, 1, issued));
11076        children.add(new Property("applies", "Period", "Relevant time or time-period when this Contract is applicable.", 0, 1, applies));
11077        children.add(new Property("expirationType", "CodeableConcept", "Event resulting in discontinuation or termination of this Contract instance by one or more parties to the contract.", 0, 1, expirationType));
11078        children.add(new Property("subject", "Reference(Any)", "The target entity impacted by or of interest to parties to the agreement.", 0, java.lang.Integer.MAX_VALUE, subject));
11079        children.add(new Property("authority", "Reference(Organization)", "A formally or informally recognized grouping of people, principals, organizations, or jurisdictions formed for the purpose of achieving some form of collective action such as the promulgation, administration and enforcement of contracts and policies.", 0, java.lang.Integer.MAX_VALUE, authority));
11080        children.add(new Property("domain", "Reference(Location)", "Recognized governance framework or system operating with a circumscribed scope in accordance with specified principles, policies, processes or procedures for managing rights, actions, or behaviors of parties or principals relative to resources.", 0, java.lang.Integer.MAX_VALUE, domain));
11081        children.add(new Property("site", "Reference(Location)", "Sites in which the contract is complied with,  exercised, or in force.", 0, java.lang.Integer.MAX_VALUE, site));
11082        children.add(new Property("name", "string", "A natural language name identifying this Contract definition, derivative, or instance in any legal state. Provides additional information about its content. This name should be usable as an identifier for the module by machine processing applications such as code generation.", 0, 1, name));
11083        children.add(new Property("title", "string", "A short, descriptive, user-friendly title for this Contract definition, derivative, or instance in any legal state.", 0, 1, title));
11084        children.add(new Property("subtitle", "string", "A more detailed or qualifying explanatory or alternate user-friendly title for this Contract definition, derivative, or instance in any legal state.", 0, 1, subtitle));
11085        children.add(new Property("alias", "string", "Alternative representation of the title for this Contract definition, derivative, or instance in any legal state., e.g., a domain specific contract number related to legislation.", 0, java.lang.Integer.MAX_VALUE, alias));
11086        children.add(new Property("author", "Reference(Patient|Practitioner|PractitionerRole|Organization)", "The individual or organization that authored the Contract definition, derivative, or instance in any legal state.", 0, 1, author));
11087        children.add(new Property("scope", "CodeableConcept", "A selector of legal concerns for this Contract definition, derivative, or instance in any legal state.", 0, 1, scope));
11088        children.add(new Property("topic[x]", "CodeableConcept|Reference(Any)", "Narrows the range of legal concerns to focus on the achievement of specific contractual objectives.", 0, 1, topic));
11089        children.add(new Property("type", "CodeableConcept", "A high-level category for the legal instrument, whether constructed as a Contract definition, derivative, or instance in any legal state.  Provides additional information about its content within the context of the Contract's scope to distinguish the kinds of systems that would be interested in the contract.", 0, 1, type));
11090        children.add(new Property("subType", "CodeableConcept", "Sub-category for the Contract that distinguishes the kinds of systems that would be interested in the Contract within the context of the Contract's scope.", 0, java.lang.Integer.MAX_VALUE, subType));
11091        children.add(new Property("contentDefinition", "", "Precusory content developed with a focus and intent of supporting the formation a Contract instance, which may be associated with and transformable into a Contract.", 0, 1, contentDefinition));
11092        children.add(new Property("term", "", "One or more Contract Provisions, which may be related and conveyed as a group, and may contain nested groups.", 0, java.lang.Integer.MAX_VALUE, term));
11093        children.add(new Property("supportingInfo", "Reference(Any)", "Information that may be needed by/relevant to the performer in their execution of this term action.", 0, java.lang.Integer.MAX_VALUE, supportingInfo));
11094        children.add(new Property("relevantHistory", "Reference(Provenance)", "Links to Provenance records for past versions of this Contract definition, derivative, or instance, which identify key state transitions or updates that are likely to be relevant to a user looking at the current version of the Contract.  The Provenance.entity indicates the target that was changed in the update (see [Provenance.entity](provenance-definitions.html#Provenance.entity)).", 0, java.lang.Integer.MAX_VALUE, relevantHistory));
11095        children.add(new Property("signer", "", "Parties with legal standing in the Contract, including the principal parties, the grantor(s) and grantee(s), which are any person or organization bound by the contract, and any ancillary parties, which facilitate the execution of the contract such as a notary or witness.", 0, java.lang.Integer.MAX_VALUE, signer));
11096        children.add(new Property("friendly", "", "The \"patient friendly language\" versionof the Contract in whole or in parts. \"Patient friendly language\" means the representation of the Contract and Contract Provisions in a manner that is readily accessible and understandable by a layperson in accordance with best practices for communication styles that ensure that those agreeing to or signing the Contract understand the roles, actions, obligations, responsibilities, and implication of the agreement.", 0, java.lang.Integer.MAX_VALUE, friendly));
11097        children.add(new Property("legal", "", "List of Legal expressions or representations of this Contract.", 0, java.lang.Integer.MAX_VALUE, legal));
11098        children.add(new Property("rule", "", "List of Computable Policy Rule Language Representations of this Contract.", 0, java.lang.Integer.MAX_VALUE, rule));
11099        children.add(new Property("legallyBinding[x]", "Attachment|Reference(Composition|DocumentReference|QuestionnaireResponse|Contract)", "Legally binding Contract: This is the signed and legally recognized representation of the Contract, which is considered the \"source of truth\" and which would be the basis for legal action related to enforcement of this Contract.", 0, 1, legallyBinding));
11100      }
11101
11102      @Override
11103      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
11104        switch (_hash) {
11105        case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "Unique identifier for this Contract or a derivative that references a Source Contract.", 0, java.lang.Integer.MAX_VALUE, identifier);
11106        case 116079: /*url*/  return new Property("url", "uri", "Canonical identifier for this contract, represented as a URI (globally unique).", 0, 1, url);
11107        case 351608024: /*version*/  return new Property("version", "string", "An edition identifier used for business purposes to label business significant variants.", 0, 1, version);
11108        case -892481550: /*status*/  return new Property("status", "code", "The status of the resource instance.", 0, 1, status);
11109        case 568606040: /*legalState*/  return new Property("legalState", "CodeableConcept", "Legal states of the formation of a legal instrument, which is a formally executed written document that can be formally attributed to its author, records and formally expresses a legally enforceable act, process, or contractual duty, obligation, or right, and therefore evidences that act, process, or agreement.", 0, 1, legalState);
11110        case 8911915: /*instantiatesCanonical*/  return new Property("instantiatesCanonical", "Reference(Contract)", "The URL pointing to a FHIR-defined Contract Definition that is adhered to in whole or part by this Contract.", 0, 1, instantiatesCanonical);
11111        case -1926393373: /*instantiatesUri*/  return new Property("instantiatesUri", "uri", "The URL pointing to an externally maintained definition that is adhered to in whole or in part by this Contract.", 0, 1, instantiatesUri);
11112        case -92412192: /*contentDerivative*/  return new Property("contentDerivative", "CodeableConcept", "The minimal content derived from the basal information source at a specific stage in its lifecycle.", 0, 1, contentDerivative);
11113        case -1179159893: /*issued*/  return new Property("issued", "dateTime", "When this  Contract was issued.", 0, 1, issued);
11114        case -793235316: /*applies*/  return new Property("applies", "Period", "Relevant time or time-period when this Contract is applicable.", 0, 1, applies);
11115        case -668311927: /*expirationType*/  return new Property("expirationType", "CodeableConcept", "Event resulting in discontinuation or termination of this Contract instance by one or more parties to the contract.", 0, 1, expirationType);
11116        case -1867885268: /*subject*/  return new Property("subject", "Reference(Any)", "The target entity impacted by or of interest to parties to the agreement.", 0, java.lang.Integer.MAX_VALUE, subject);
11117        case 1475610435: /*authority*/  return new Property("authority", "Reference(Organization)", "A formally or informally recognized grouping of people, principals, organizations, or jurisdictions formed for the purpose of achieving some form of collective action such as the promulgation, administration and enforcement of contracts and policies.", 0, java.lang.Integer.MAX_VALUE, authority);
11118        case -1326197564: /*domain*/  return new Property("domain", "Reference(Location)", "Recognized governance framework or system operating with a circumscribed scope in accordance with specified principles, policies, processes or procedures for managing rights, actions, or behaviors of parties or principals relative to resources.", 0, java.lang.Integer.MAX_VALUE, domain);
11119        case 3530567: /*site*/  return new Property("site", "Reference(Location)", "Sites in which the contract is complied with,  exercised, or in force.", 0, java.lang.Integer.MAX_VALUE, site);
11120        case 3373707: /*name*/  return new Property("name", "string", "A natural language name identifying this Contract definition, derivative, or instance in any legal state. Provides additional information about its content. This name should be usable as an identifier for the module by machine processing applications such as code generation.", 0, 1, name);
11121        case 110371416: /*title*/  return new Property("title", "string", "A short, descriptive, user-friendly title for this Contract definition, derivative, or instance in any legal state.", 0, 1, title);
11122        case -2060497896: /*subtitle*/  return new Property("subtitle", "string", "A more detailed or qualifying explanatory or alternate user-friendly title for this Contract definition, derivative, or instance in any legal state.", 0, 1, subtitle);
11123        case 92902992: /*alias*/  return new Property("alias", "string", "Alternative representation of the title for this Contract definition, derivative, or instance in any legal state., e.g., a domain specific contract number related to legislation.", 0, java.lang.Integer.MAX_VALUE, alias);
11124        case -1406328437: /*author*/  return new Property("author", "Reference(Patient|Practitioner|PractitionerRole|Organization)", "The individual or organization that authored the Contract definition, derivative, or instance in any legal state.", 0, 1, author);
11125        case 109264468: /*scope*/  return new Property("scope", "CodeableConcept", "A selector of legal concerns for this Contract definition, derivative, or instance in any legal state.", 0, 1, scope);
11126        case -957295375: /*topic[x]*/  return new Property("topic[x]", "CodeableConcept|Reference(Any)", "Narrows the range of legal concerns to focus on the achievement of specific contractual objectives.", 0, 1, topic);
11127        case 110546223: /*topic*/  return new Property("topic[x]", "CodeableConcept|Reference(Any)", "Narrows the range of legal concerns to focus on the achievement of specific contractual objectives.", 0, 1, topic);
11128        case 777778802: /*topicCodeableConcept*/  return new Property("topic[x]", "CodeableConcept", "Narrows the range of legal concerns to focus on the achievement of specific contractual objectives.", 0, 1, topic);
11129        case -343345444: /*topicReference*/  return new Property("topic[x]", "Reference(Any)", "Narrows the range of legal concerns to focus on the achievement of specific contractual objectives.", 0, 1, topic);
11130        case 3575610: /*type*/  return new Property("type", "CodeableConcept", "A high-level category for the legal instrument, whether constructed as a Contract definition, derivative, or instance in any legal state.  Provides additional information about its content within the context of the Contract's scope to distinguish the kinds of systems that would be interested in the contract.", 0, 1, type);
11131        case -1868521062: /*subType*/  return new Property("subType", "CodeableConcept", "Sub-category for the Contract that distinguishes the kinds of systems that would be interested in the Contract within the context of the Contract's scope.", 0, java.lang.Integer.MAX_VALUE, subType);
11132        case 247055020: /*contentDefinition*/  return new Property("contentDefinition", "", "Precusory content developed with a focus and intent of supporting the formation a Contract instance, which may be associated with and transformable into a Contract.", 0, 1, contentDefinition);
11133        case 3556460: /*term*/  return new Property("term", "", "One or more Contract Provisions, which may be related and conveyed as a group, and may contain nested groups.", 0, java.lang.Integer.MAX_VALUE, term);
11134        case 1922406657: /*supportingInfo*/  return new Property("supportingInfo", "Reference(Any)", "Information that may be needed by/relevant to the performer in their execution of this term action.", 0, java.lang.Integer.MAX_VALUE, supportingInfo);
11135        case 1538891575: /*relevantHistory*/  return new Property("relevantHistory", "Reference(Provenance)", "Links to Provenance records for past versions of this Contract definition, derivative, or instance, which identify key state transitions or updates that are likely to be relevant to a user looking at the current version of the Contract.  The Provenance.entity indicates the target that was changed in the update (see [Provenance.entity](provenance-definitions.html#Provenance.entity)).", 0, java.lang.Integer.MAX_VALUE, relevantHistory);
11136        case -902467798: /*signer*/  return new Property("signer", "", "Parties with legal standing in the Contract, including the principal parties, the grantor(s) and grantee(s), which are any person or organization bound by the contract, and any ancillary parties, which facilitate the execution of the contract such as a notary or witness.", 0, java.lang.Integer.MAX_VALUE, signer);
11137        case -1423054677: /*friendly*/  return new Property("friendly", "", "The \"patient friendly language\" versionof the Contract in whole or in parts. \"Patient friendly language\" means the representation of the Contract and Contract Provisions in a manner that is readily accessible and understandable by a layperson in accordance with best practices for communication styles that ensure that those agreeing to or signing the Contract understand the roles, actions, obligations, responsibilities, and implication of the agreement.", 0, java.lang.Integer.MAX_VALUE, friendly);
11138        case 102851257: /*legal*/  return new Property("legal", "", "List of Legal expressions or representations of this Contract.", 0, java.lang.Integer.MAX_VALUE, legal);
11139        case 3512060: /*rule*/  return new Property("rule", "", "List of Computable Policy Rule Language Representations of this Contract.", 0, java.lang.Integer.MAX_VALUE, rule);
11140        case -772497791: /*legallyBinding[x]*/  return new Property("legallyBinding[x]", "Attachment|Reference(Composition|DocumentReference|QuestionnaireResponse|Contract)", "Legally binding Contract: This is the signed and legally recognized representation of the Contract, which is considered the \"source of truth\" and which would be the basis for legal action related to enforcement of this Contract.", 0, 1, legallyBinding);
11141        case -126751329: /*legallyBinding*/  return new Property("legallyBinding[x]", "Attachment|Reference(Composition|DocumentReference|QuestionnaireResponse|Contract)", "Legally binding Contract: This is the signed and legally recognized representation of the Contract, which is considered the \"source of truth\" and which would be the basis for legal action related to enforcement of this Contract.", 0, 1, legallyBinding);
11142        case 344057890: /*legallyBindingAttachment*/  return new Property("legallyBinding[x]", "Attachment", "Legally binding Contract: This is the signed and legally recognized representation of the Contract, which is considered the \"source of truth\" and which would be the basis for legal action related to enforcement of this Contract.", 0, 1, legallyBinding);
11143        case -296528788: /*legallyBindingReference*/  return new Property("legallyBinding[x]", "Reference(Composition|DocumentReference|QuestionnaireResponse|Contract)", "Legally binding Contract: This is the signed and legally recognized representation of the Contract, which is considered the \"source of truth\" and which would be the basis for legal action related to enforcement of this Contract.", 0, 1, legallyBinding);
11144        default: return super.getNamedProperty(_hash, _name, _checkValid);
11145        }
11146
11147      }
11148
11149      @Override
11150      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
11151        switch (hash) {
11152        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
11153        case 116079: /*url*/ return this.url == null ? new Base[0] : new Base[] {this.url}; // UriType
11154        case 351608024: /*version*/ return this.version == null ? new Base[0] : new Base[] {this.version}; // StringType
11155        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<ContractResourceStatusCodes>
11156        case 568606040: /*legalState*/ return this.legalState == null ? new Base[0] : new Base[] {this.legalState}; // CodeableConcept
11157        case 8911915: /*instantiatesCanonical*/ return this.instantiatesCanonical == null ? new Base[0] : new Base[] {this.instantiatesCanonical}; // Reference
11158        case -1926393373: /*instantiatesUri*/ return this.instantiatesUri == null ? new Base[0] : new Base[] {this.instantiatesUri}; // UriType
11159        case -92412192: /*contentDerivative*/ return this.contentDerivative == null ? new Base[0] : new Base[] {this.contentDerivative}; // CodeableConcept
11160        case -1179159893: /*issued*/ return this.issued == null ? new Base[0] : new Base[] {this.issued}; // DateTimeType
11161        case -793235316: /*applies*/ return this.applies == null ? new Base[0] : new Base[] {this.applies}; // Period
11162        case -668311927: /*expirationType*/ return this.expirationType == null ? new Base[0] : new Base[] {this.expirationType}; // CodeableConcept
11163        case -1867885268: /*subject*/ return this.subject == null ? new Base[0] : this.subject.toArray(new Base[this.subject.size()]); // Reference
11164        case 1475610435: /*authority*/ return this.authority == null ? new Base[0] : this.authority.toArray(new Base[this.authority.size()]); // Reference
11165        case -1326197564: /*domain*/ return this.domain == null ? new Base[0] : this.domain.toArray(new Base[this.domain.size()]); // Reference
11166        case 3530567: /*site*/ return this.site == null ? new Base[0] : this.site.toArray(new Base[this.site.size()]); // Reference
11167        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
11168        case 110371416: /*title*/ return this.title == null ? new Base[0] : new Base[] {this.title}; // StringType
11169        case -2060497896: /*subtitle*/ return this.subtitle == null ? new Base[0] : new Base[] {this.subtitle}; // StringType
11170        case 92902992: /*alias*/ return this.alias == null ? new Base[0] : this.alias.toArray(new Base[this.alias.size()]); // StringType
11171        case -1406328437: /*author*/ return this.author == null ? new Base[0] : new Base[] {this.author}; // Reference
11172        case 109264468: /*scope*/ return this.scope == null ? new Base[0] : new Base[] {this.scope}; // CodeableConcept
11173        case 110546223: /*topic*/ return this.topic == null ? new Base[0] : new Base[] {this.topic}; // DataType
11174        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // CodeableConcept
11175        case -1868521062: /*subType*/ return this.subType == null ? new Base[0] : this.subType.toArray(new Base[this.subType.size()]); // CodeableConcept
11176        case 247055020: /*contentDefinition*/ return this.contentDefinition == null ? new Base[0] : new Base[] {this.contentDefinition}; // ContentDefinitionComponent
11177        case 3556460: /*term*/ return this.term == null ? new Base[0] : this.term.toArray(new Base[this.term.size()]); // TermComponent
11178        case 1922406657: /*supportingInfo*/ return this.supportingInfo == null ? new Base[0] : this.supportingInfo.toArray(new Base[this.supportingInfo.size()]); // Reference
11179        case 1538891575: /*relevantHistory*/ return this.relevantHistory == null ? new Base[0] : this.relevantHistory.toArray(new Base[this.relevantHistory.size()]); // Reference
11180        case -902467798: /*signer*/ return this.signer == null ? new Base[0] : this.signer.toArray(new Base[this.signer.size()]); // SignatoryComponent
11181        case -1423054677: /*friendly*/ return this.friendly == null ? new Base[0] : this.friendly.toArray(new Base[this.friendly.size()]); // FriendlyLanguageComponent
11182        case 102851257: /*legal*/ return this.legal == null ? new Base[0] : this.legal.toArray(new Base[this.legal.size()]); // LegalLanguageComponent
11183        case 3512060: /*rule*/ return this.rule == null ? new Base[0] : this.rule.toArray(new Base[this.rule.size()]); // ComputableLanguageComponent
11184        case -126751329: /*legallyBinding*/ return this.legallyBinding == null ? new Base[0] : new Base[] {this.legallyBinding}; // DataType
11185        default: return super.getProperty(hash, name, checkValid);
11186        }
11187
11188      }
11189
11190      @Override
11191      public Base setProperty(int hash, String name, Base value) throws FHIRException {
11192        switch (hash) {
11193        case -1618432855: // identifier
11194          this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier
11195          return value;
11196        case 116079: // url
11197          this.url = TypeConvertor.castToUri(value); // UriType
11198          return value;
11199        case 351608024: // version
11200          this.version = TypeConvertor.castToString(value); // StringType
11201          return value;
11202        case -892481550: // status
11203          value = new ContractResourceStatusCodesEnumFactory().fromType(TypeConvertor.castToCode(value));
11204          this.status = (Enumeration) value; // Enumeration<ContractResourceStatusCodes>
11205          return value;
11206        case 568606040: // legalState
11207          this.legalState = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
11208          return value;
11209        case 8911915: // instantiatesCanonical
11210          this.instantiatesCanonical = TypeConvertor.castToReference(value); // Reference
11211          return value;
11212        case -1926393373: // instantiatesUri
11213          this.instantiatesUri = TypeConvertor.castToUri(value); // UriType
11214          return value;
11215        case -92412192: // contentDerivative
11216          this.contentDerivative = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
11217          return value;
11218        case -1179159893: // issued
11219          this.issued = TypeConvertor.castToDateTime(value); // DateTimeType
11220          return value;
11221        case -793235316: // applies
11222          this.applies = TypeConvertor.castToPeriod(value); // Period
11223          return value;
11224        case -668311927: // expirationType
11225          this.expirationType = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
11226          return value;
11227        case -1867885268: // subject
11228          this.getSubject().add(TypeConvertor.castToReference(value)); // Reference
11229          return value;
11230        case 1475610435: // authority
11231          this.getAuthority().add(TypeConvertor.castToReference(value)); // Reference
11232          return value;
11233        case -1326197564: // domain
11234          this.getDomain().add(TypeConvertor.castToReference(value)); // Reference
11235          return value;
11236        case 3530567: // site
11237          this.getSite().add(TypeConvertor.castToReference(value)); // Reference
11238          return value;
11239        case 3373707: // name
11240          this.name = TypeConvertor.castToString(value); // StringType
11241          return value;
11242        case 110371416: // title
11243          this.title = TypeConvertor.castToString(value); // StringType
11244          return value;
11245        case -2060497896: // subtitle
11246          this.subtitle = TypeConvertor.castToString(value); // StringType
11247          return value;
11248        case 92902992: // alias
11249          this.getAlias().add(TypeConvertor.castToString(value)); // StringType
11250          return value;
11251        case -1406328437: // author
11252          this.author = TypeConvertor.castToReference(value); // Reference
11253          return value;
11254        case 109264468: // scope
11255          this.scope = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
11256          return value;
11257        case 110546223: // topic
11258          this.topic = TypeConvertor.castToType(value); // DataType
11259          return value;
11260        case 3575610: // type
11261          this.type = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
11262          return value;
11263        case -1868521062: // subType
11264          this.getSubType().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
11265          return value;
11266        case 247055020: // contentDefinition
11267          this.contentDefinition = (ContentDefinitionComponent) value; // ContentDefinitionComponent
11268          return value;
11269        case 3556460: // term
11270          this.getTerm().add((TermComponent) value); // TermComponent
11271          return value;
11272        case 1922406657: // supportingInfo
11273          this.getSupportingInfo().add(TypeConvertor.castToReference(value)); // Reference
11274          return value;
11275        case 1538891575: // relevantHistory
11276          this.getRelevantHistory().add(TypeConvertor.castToReference(value)); // Reference
11277          return value;
11278        case -902467798: // signer
11279          this.getSigner().add((SignatoryComponent) value); // SignatoryComponent
11280          return value;
11281        case -1423054677: // friendly
11282          this.getFriendly().add((FriendlyLanguageComponent) value); // FriendlyLanguageComponent
11283          return value;
11284        case 102851257: // legal
11285          this.getLegal().add((LegalLanguageComponent) value); // LegalLanguageComponent
11286          return value;
11287        case 3512060: // rule
11288          this.getRule().add((ComputableLanguageComponent) value); // ComputableLanguageComponent
11289          return value;
11290        case -126751329: // legallyBinding
11291          this.legallyBinding = TypeConvertor.castToType(value); // DataType
11292          return value;
11293        default: return super.setProperty(hash, name, value);
11294        }
11295
11296      }
11297
11298      @Override
11299      public Base setProperty(String name, Base value) throws FHIRException {
11300        if (name.equals("identifier")) {
11301          this.getIdentifier().add(TypeConvertor.castToIdentifier(value));
11302        } else if (name.equals("url")) {
11303          this.url = TypeConvertor.castToUri(value); // UriType
11304        } else if (name.equals("version")) {
11305          this.version = TypeConvertor.castToString(value); // StringType
11306        } else if (name.equals("status")) {
11307          value = new ContractResourceStatusCodesEnumFactory().fromType(TypeConvertor.castToCode(value));
11308          this.status = (Enumeration) value; // Enumeration<ContractResourceStatusCodes>
11309        } else if (name.equals("legalState")) {
11310          this.legalState = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
11311        } else if (name.equals("instantiatesCanonical")) {
11312          this.instantiatesCanonical = TypeConvertor.castToReference(value); // Reference
11313        } else if (name.equals("instantiatesUri")) {
11314          this.instantiatesUri = TypeConvertor.castToUri(value); // UriType
11315        } else if (name.equals("contentDerivative")) {
11316          this.contentDerivative = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
11317        } else if (name.equals("issued")) {
11318          this.issued = TypeConvertor.castToDateTime(value); // DateTimeType
11319        } else if (name.equals("applies")) {
11320          this.applies = TypeConvertor.castToPeriod(value); // Period
11321        } else if (name.equals("expirationType")) {
11322          this.expirationType = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
11323        } else if (name.equals("subject")) {
11324          this.getSubject().add(TypeConvertor.castToReference(value));
11325        } else if (name.equals("authority")) {
11326          this.getAuthority().add(TypeConvertor.castToReference(value));
11327        } else if (name.equals("domain")) {
11328          this.getDomain().add(TypeConvertor.castToReference(value));
11329        } else if (name.equals("site")) {
11330          this.getSite().add(TypeConvertor.castToReference(value));
11331        } else if (name.equals("name")) {
11332          this.name = TypeConvertor.castToString(value); // StringType
11333        } else if (name.equals("title")) {
11334          this.title = TypeConvertor.castToString(value); // StringType
11335        } else if (name.equals("subtitle")) {
11336          this.subtitle = TypeConvertor.castToString(value); // StringType
11337        } else if (name.equals("alias")) {
11338          this.getAlias().add(TypeConvertor.castToString(value));
11339        } else if (name.equals("author")) {
11340          this.author = TypeConvertor.castToReference(value); // Reference
11341        } else if (name.equals("scope")) {
11342          this.scope = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
11343        } else if (name.equals("topic[x]")) {
11344          this.topic = TypeConvertor.castToType(value); // DataType
11345        } else if (name.equals("type")) {
11346          this.type = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
11347        } else if (name.equals("subType")) {
11348          this.getSubType().add(TypeConvertor.castToCodeableConcept(value));
11349        } else if (name.equals("contentDefinition")) {
11350          this.contentDefinition = (ContentDefinitionComponent) value; // ContentDefinitionComponent
11351        } else if (name.equals("term")) {
11352          this.getTerm().add((TermComponent) value);
11353        } else if (name.equals("supportingInfo")) {
11354          this.getSupportingInfo().add(TypeConvertor.castToReference(value));
11355        } else if (name.equals("relevantHistory")) {
11356          this.getRelevantHistory().add(TypeConvertor.castToReference(value));
11357        } else if (name.equals("signer")) {
11358          this.getSigner().add((SignatoryComponent) value);
11359        } else if (name.equals("friendly")) {
11360          this.getFriendly().add((FriendlyLanguageComponent) value);
11361        } else if (name.equals("legal")) {
11362          this.getLegal().add((LegalLanguageComponent) value);
11363        } else if (name.equals("rule")) {
11364          this.getRule().add((ComputableLanguageComponent) value);
11365        } else if (name.equals("legallyBinding[x]")) {
11366          this.legallyBinding = TypeConvertor.castToType(value); // DataType
11367        } else
11368          return super.setProperty(name, value);
11369        return value;
11370      }
11371
11372  @Override
11373  public void removeChild(String name, Base value) throws FHIRException {
11374        if (name.equals("identifier")) {
11375          this.getIdentifier().remove(value);
11376        } else if (name.equals("url")) {
11377          this.url = null;
11378        } else if (name.equals("version")) {
11379          this.version = null;
11380        } else if (name.equals("status")) {
11381          value = new ContractResourceStatusCodesEnumFactory().fromType(TypeConvertor.castToCode(value));
11382          this.status = (Enumeration) value; // Enumeration<ContractResourceStatusCodes>
11383        } else if (name.equals("legalState")) {
11384          this.legalState = null;
11385        } else if (name.equals("instantiatesCanonical")) {
11386          this.instantiatesCanonical = null;
11387        } else if (name.equals("instantiatesUri")) {
11388          this.instantiatesUri = null;
11389        } else if (name.equals("contentDerivative")) {
11390          this.contentDerivative = null;
11391        } else if (name.equals("issued")) {
11392          this.issued = null;
11393        } else if (name.equals("applies")) {
11394          this.applies = null;
11395        } else if (name.equals("expirationType")) {
11396          this.expirationType = null;
11397        } else if (name.equals("subject")) {
11398          this.getSubject().remove(value);
11399        } else if (name.equals("authority")) {
11400          this.getAuthority().remove(value);
11401        } else if (name.equals("domain")) {
11402          this.getDomain().remove(value);
11403        } else if (name.equals("site")) {
11404          this.getSite().remove(value);
11405        } else if (name.equals("name")) {
11406          this.name = null;
11407        } else if (name.equals("title")) {
11408          this.title = null;
11409        } else if (name.equals("subtitle")) {
11410          this.subtitle = null;
11411        } else if (name.equals("alias")) {
11412          this.getAlias().remove(value);
11413        } else if (name.equals("author")) {
11414          this.author = null;
11415        } else if (name.equals("scope")) {
11416          this.scope = null;
11417        } else if (name.equals("topic[x]")) {
11418          this.topic = null;
11419        } else if (name.equals("type")) {
11420          this.type = null;
11421        } else if (name.equals("subType")) {
11422          this.getSubType().remove(value);
11423        } else if (name.equals("contentDefinition")) {
11424          this.contentDefinition = (ContentDefinitionComponent) value; // ContentDefinitionComponent
11425        } else if (name.equals("term")) {
11426          this.getTerm().remove((TermComponent) value);
11427        } else if (name.equals("supportingInfo")) {
11428          this.getSupportingInfo().remove(value);
11429        } else if (name.equals("relevantHistory")) {
11430          this.getRelevantHistory().remove(value);
11431        } else if (name.equals("signer")) {
11432          this.getSigner().remove((SignatoryComponent) value);
11433        } else if (name.equals("friendly")) {
11434          this.getFriendly().remove((FriendlyLanguageComponent) value);
11435        } else if (name.equals("legal")) {
11436          this.getLegal().remove((LegalLanguageComponent) value);
11437        } else if (name.equals("rule")) {
11438          this.getRule().remove((ComputableLanguageComponent) value);
11439        } else if (name.equals("legallyBinding[x]")) {
11440          this.legallyBinding = null;
11441        } else
11442          super.removeChild(name, value);
11443        
11444      }
11445
11446      @Override
11447      public Base makeProperty(int hash, String name) throws FHIRException {
11448        switch (hash) {
11449        case -1618432855:  return addIdentifier(); 
11450        case 116079:  return getUrlElement();
11451        case 351608024:  return getVersionElement();
11452        case -892481550:  return getStatusElement();
11453        case 568606040:  return getLegalState();
11454        case 8911915:  return getInstantiatesCanonical();
11455        case -1926393373:  return getInstantiatesUriElement();
11456        case -92412192:  return getContentDerivative();
11457        case -1179159893:  return getIssuedElement();
11458        case -793235316:  return getApplies();
11459        case -668311927:  return getExpirationType();
11460        case -1867885268:  return addSubject(); 
11461        case 1475610435:  return addAuthority(); 
11462        case -1326197564:  return addDomain(); 
11463        case 3530567:  return addSite(); 
11464        case 3373707:  return getNameElement();
11465        case 110371416:  return getTitleElement();
11466        case -2060497896:  return getSubtitleElement();
11467        case 92902992:  return addAliasElement();
11468        case -1406328437:  return getAuthor();
11469        case 109264468:  return getScope();
11470        case -957295375:  return getTopic();
11471        case 110546223:  return getTopic();
11472        case 3575610:  return getType();
11473        case -1868521062:  return addSubType(); 
11474        case 247055020:  return getContentDefinition();
11475        case 3556460:  return addTerm(); 
11476        case 1922406657:  return addSupportingInfo(); 
11477        case 1538891575:  return addRelevantHistory(); 
11478        case -902467798:  return addSigner(); 
11479        case -1423054677:  return addFriendly(); 
11480        case 102851257:  return addLegal(); 
11481        case 3512060:  return addRule(); 
11482        case -772497791:  return getLegallyBinding();
11483        case -126751329:  return getLegallyBinding();
11484        default: return super.makeProperty(hash, name);
11485        }
11486
11487      }
11488
11489      @Override
11490      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
11491        switch (hash) {
11492        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
11493        case 116079: /*url*/ return new String[] {"uri"};
11494        case 351608024: /*version*/ return new String[] {"string"};
11495        case -892481550: /*status*/ return new String[] {"code"};
11496        case 568606040: /*legalState*/ return new String[] {"CodeableConcept"};
11497        case 8911915: /*instantiatesCanonical*/ return new String[] {"Reference"};
11498        case -1926393373: /*instantiatesUri*/ return new String[] {"uri"};
11499        case -92412192: /*contentDerivative*/ return new String[] {"CodeableConcept"};
11500        case -1179159893: /*issued*/ return new String[] {"dateTime"};
11501        case -793235316: /*applies*/ return new String[] {"Period"};
11502        case -668311927: /*expirationType*/ return new String[] {"CodeableConcept"};
11503        case -1867885268: /*subject*/ return new String[] {"Reference"};
11504        case 1475610435: /*authority*/ return new String[] {"Reference"};
11505        case -1326197564: /*domain*/ return new String[] {"Reference"};
11506        case 3530567: /*site*/ return new String[] {"Reference"};
11507        case 3373707: /*name*/ return new String[] {"string"};
11508        case 110371416: /*title*/ return new String[] {"string"};
11509        case -2060497896: /*subtitle*/ return new String[] {"string"};
11510        case 92902992: /*alias*/ return new String[] {"string"};
11511        case -1406328437: /*author*/ return new String[] {"Reference"};
11512        case 109264468: /*scope*/ return new String[] {"CodeableConcept"};
11513        case 110546223: /*topic*/ return new String[] {"CodeableConcept", "Reference"};
11514        case 3575610: /*type*/ return new String[] {"CodeableConcept"};
11515        case -1868521062: /*subType*/ return new String[] {"CodeableConcept"};
11516        case 247055020: /*contentDefinition*/ return new String[] {};
11517        case 3556460: /*term*/ return new String[] {};
11518        case 1922406657: /*supportingInfo*/ return new String[] {"Reference"};
11519        case 1538891575: /*relevantHistory*/ return new String[] {"Reference"};
11520        case -902467798: /*signer*/ return new String[] {};
11521        case -1423054677: /*friendly*/ return new String[] {};
11522        case 102851257: /*legal*/ return new String[] {};
11523        case 3512060: /*rule*/ return new String[] {};
11524        case -126751329: /*legallyBinding*/ return new String[] {"Attachment", "Reference"};
11525        default: return super.getTypesForProperty(hash, name);
11526        }
11527
11528      }
11529
11530      @Override
11531      public Base addChild(String name) throws FHIRException {
11532        if (name.equals("identifier")) {
11533          return addIdentifier();
11534        }
11535        else if (name.equals("url")) {
11536          throw new FHIRException("Cannot call addChild on a singleton property Contract.url");
11537        }
11538        else if (name.equals("version")) {
11539          throw new FHIRException("Cannot call addChild on a singleton property Contract.version");
11540        }
11541        else if (name.equals("status")) {
11542          throw new FHIRException("Cannot call addChild on a singleton property Contract.status");
11543        }
11544        else if (name.equals("legalState")) {
11545          this.legalState = new CodeableConcept();
11546          return this.legalState;
11547        }
11548        else if (name.equals("instantiatesCanonical")) {
11549          this.instantiatesCanonical = new Reference();
11550          return this.instantiatesCanonical;
11551        }
11552        else if (name.equals("instantiatesUri")) {
11553          throw new FHIRException("Cannot call addChild on a singleton property Contract.instantiatesUri");
11554        }
11555        else if (name.equals("contentDerivative")) {
11556          this.contentDerivative = new CodeableConcept();
11557          return this.contentDerivative;
11558        }
11559        else if (name.equals("issued")) {
11560          throw new FHIRException("Cannot call addChild on a singleton property Contract.issued");
11561        }
11562        else if (name.equals("applies")) {
11563          this.applies = new Period();
11564          return this.applies;
11565        }
11566        else if (name.equals("expirationType")) {
11567          this.expirationType = new CodeableConcept();
11568          return this.expirationType;
11569        }
11570        else if (name.equals("subject")) {
11571          return addSubject();
11572        }
11573        else if (name.equals("authority")) {
11574          return addAuthority();
11575        }
11576        else if (name.equals("domain")) {
11577          return addDomain();
11578        }
11579        else if (name.equals("site")) {
11580          return addSite();
11581        }
11582        else if (name.equals("name")) {
11583          throw new FHIRException("Cannot call addChild on a singleton property Contract.name");
11584        }
11585        else if (name.equals("title")) {
11586          throw new FHIRException("Cannot call addChild on a singleton property Contract.title");
11587        }
11588        else if (name.equals("subtitle")) {
11589          throw new FHIRException("Cannot call addChild on a singleton property Contract.subtitle");
11590        }
11591        else if (name.equals("alias")) {
11592          throw new FHIRException("Cannot call addChild on a singleton property Contract.alias");
11593        }
11594        else if (name.equals("author")) {
11595          this.author = new Reference();
11596          return this.author;
11597        }
11598        else if (name.equals("scope")) {
11599          this.scope = new CodeableConcept();
11600          return this.scope;
11601        }
11602        else if (name.equals("topicCodeableConcept")) {
11603          this.topic = new CodeableConcept();
11604          return this.topic;
11605        }
11606        else if (name.equals("topicReference")) {
11607          this.topic = new Reference();
11608          return this.topic;
11609        }
11610        else if (name.equals("type")) {
11611          this.type = new CodeableConcept();
11612          return this.type;
11613        }
11614        else if (name.equals("subType")) {
11615          return addSubType();
11616        }
11617        else if (name.equals("contentDefinition")) {
11618          this.contentDefinition = new ContentDefinitionComponent();
11619          return this.contentDefinition;
11620        }
11621        else if (name.equals("term")) {
11622          return addTerm();
11623        }
11624        else if (name.equals("supportingInfo")) {
11625          return addSupportingInfo();
11626        }
11627        else if (name.equals("relevantHistory")) {
11628          return addRelevantHistory();
11629        }
11630        else if (name.equals("signer")) {
11631          return addSigner();
11632        }
11633        else if (name.equals("friendly")) {
11634          return addFriendly();
11635        }
11636        else if (name.equals("legal")) {
11637          return addLegal();
11638        }
11639        else if (name.equals("rule")) {
11640          return addRule();
11641        }
11642        else if (name.equals("legallyBindingAttachment")) {
11643          this.legallyBinding = new Attachment();
11644          return this.legallyBinding;
11645        }
11646        else if (name.equals("legallyBindingReference")) {
11647          this.legallyBinding = new Reference();
11648          return this.legallyBinding;
11649        }
11650        else
11651          return super.addChild(name);
11652      }
11653
11654  public String fhirType() {
11655    return "Contract";
11656
11657  }
11658
11659      public Contract copy() {
11660        Contract dst = new Contract();
11661        copyValues(dst);
11662        return dst;
11663      }
11664
11665      public void copyValues(Contract dst) {
11666        super.copyValues(dst);
11667        if (identifier != null) {
11668          dst.identifier = new ArrayList<Identifier>();
11669          for (Identifier i : identifier)
11670            dst.identifier.add(i.copy());
11671        };
11672        dst.url = url == null ? null : url.copy();
11673        dst.version = version == null ? null : version.copy();
11674        dst.status = status == null ? null : status.copy();
11675        dst.legalState = legalState == null ? null : legalState.copy();
11676        dst.instantiatesCanonical = instantiatesCanonical == null ? null : instantiatesCanonical.copy();
11677        dst.instantiatesUri = instantiatesUri == null ? null : instantiatesUri.copy();
11678        dst.contentDerivative = contentDerivative == null ? null : contentDerivative.copy();
11679        dst.issued = issued == null ? null : issued.copy();
11680        dst.applies = applies == null ? null : applies.copy();
11681        dst.expirationType = expirationType == null ? null : expirationType.copy();
11682        if (subject != null) {
11683          dst.subject = new ArrayList<Reference>();
11684          for (Reference i : subject)
11685            dst.subject.add(i.copy());
11686        };
11687        if (authority != null) {
11688          dst.authority = new ArrayList<Reference>();
11689          for (Reference i : authority)
11690            dst.authority.add(i.copy());
11691        };
11692        if (domain != null) {
11693          dst.domain = new ArrayList<Reference>();
11694          for (Reference i : domain)
11695            dst.domain.add(i.copy());
11696        };
11697        if (site != null) {
11698          dst.site = new ArrayList<Reference>();
11699          for (Reference i : site)
11700            dst.site.add(i.copy());
11701        };
11702        dst.name = name == null ? null : name.copy();
11703        dst.title = title == null ? null : title.copy();
11704        dst.subtitle = subtitle == null ? null : subtitle.copy();
11705        if (alias != null) {
11706          dst.alias = new ArrayList<StringType>();
11707          for (StringType i : alias)
11708            dst.alias.add(i.copy());
11709        };
11710        dst.author = author == null ? null : author.copy();
11711        dst.scope = scope == null ? null : scope.copy();
11712        dst.topic = topic == null ? null : topic.copy();
11713        dst.type = type == null ? null : type.copy();
11714        if (subType != null) {
11715          dst.subType = new ArrayList<CodeableConcept>();
11716          for (CodeableConcept i : subType)
11717            dst.subType.add(i.copy());
11718        };
11719        dst.contentDefinition = contentDefinition == null ? null : contentDefinition.copy();
11720        if (term != null) {
11721          dst.term = new ArrayList<TermComponent>();
11722          for (TermComponent i : term)
11723            dst.term.add(i.copy());
11724        };
11725        if (supportingInfo != null) {
11726          dst.supportingInfo = new ArrayList<Reference>();
11727          for (Reference i : supportingInfo)
11728            dst.supportingInfo.add(i.copy());
11729        };
11730        if (relevantHistory != null) {
11731          dst.relevantHistory = new ArrayList<Reference>();
11732          for (Reference i : relevantHistory)
11733            dst.relevantHistory.add(i.copy());
11734        };
11735        if (signer != null) {
11736          dst.signer = new ArrayList<SignatoryComponent>();
11737          for (SignatoryComponent i : signer)
11738            dst.signer.add(i.copy());
11739        };
11740        if (friendly != null) {
11741          dst.friendly = new ArrayList<FriendlyLanguageComponent>();
11742          for (FriendlyLanguageComponent i : friendly)
11743            dst.friendly.add(i.copy());
11744        };
11745        if (legal != null) {
11746          dst.legal = new ArrayList<LegalLanguageComponent>();
11747          for (LegalLanguageComponent i : legal)
11748            dst.legal.add(i.copy());
11749        };
11750        if (rule != null) {
11751          dst.rule = new ArrayList<ComputableLanguageComponent>();
11752          for (ComputableLanguageComponent i : rule)
11753            dst.rule.add(i.copy());
11754        };
11755        dst.legallyBinding = legallyBinding == null ? null : legallyBinding.copy();
11756      }
11757
11758      protected Contract typedCopy() {
11759        return copy();
11760      }
11761
11762      @Override
11763      public boolean equalsDeep(Base other_) {
11764        if (!super.equalsDeep(other_))
11765          return false;
11766        if (!(other_ instanceof Contract))
11767          return false;
11768        Contract o = (Contract) other_;
11769        return compareDeep(identifier, o.identifier, true) && compareDeep(url, o.url, true) && compareDeep(version, o.version, true)
11770           && compareDeep(status, o.status, true) && compareDeep(legalState, o.legalState, true) && compareDeep(instantiatesCanonical, o.instantiatesCanonical, true)
11771           && compareDeep(instantiatesUri, o.instantiatesUri, true) && compareDeep(contentDerivative, o.contentDerivative, true)
11772           && compareDeep(issued, o.issued, true) && compareDeep(applies, o.applies, true) && compareDeep(expirationType, o.expirationType, true)
11773           && compareDeep(subject, o.subject, true) && compareDeep(authority, o.authority, true) && compareDeep(domain, o.domain, true)
11774           && compareDeep(site, o.site, true) && compareDeep(name, o.name, true) && compareDeep(title, o.title, true)
11775           && compareDeep(subtitle, o.subtitle, true) && compareDeep(alias, o.alias, true) && compareDeep(author, o.author, true)
11776           && compareDeep(scope, o.scope, true) && compareDeep(topic, o.topic, true) && compareDeep(type, o.type, true)
11777           && compareDeep(subType, o.subType, true) && compareDeep(contentDefinition, o.contentDefinition, true)
11778           && compareDeep(term, o.term, true) && compareDeep(supportingInfo, o.supportingInfo, true) && compareDeep(relevantHistory, o.relevantHistory, true)
11779           && compareDeep(signer, o.signer, true) && compareDeep(friendly, o.friendly, true) && compareDeep(legal, o.legal, true)
11780           && compareDeep(rule, o.rule, true) && compareDeep(legallyBinding, o.legallyBinding, true);
11781      }
11782
11783      @Override
11784      public boolean equalsShallow(Base other_) {
11785        if (!super.equalsShallow(other_))
11786          return false;
11787        if (!(other_ instanceof Contract))
11788          return false;
11789        Contract o = (Contract) other_;
11790        return compareValues(url, o.url, true) && compareValues(version, o.version, true) && compareValues(status, o.status, true)
11791           && compareValues(instantiatesUri, o.instantiatesUri, true) && compareValues(issued, o.issued, true)
11792           && compareValues(name, o.name, true) && compareValues(title, o.title, true) && compareValues(subtitle, o.subtitle, true)
11793           && compareValues(alias, o.alias, true);
11794      }
11795
11796      public boolean isEmpty() {
11797        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, url, version
11798          , status, legalState, instantiatesCanonical, instantiatesUri, contentDerivative, issued
11799          , applies, expirationType, subject, authority, domain, site, name, title, subtitle
11800          , alias, author, scope, topic, type, subType, contentDefinition, term, supportingInfo
11801          , relevantHistory, signer, friendly, legal, rule, legallyBinding);
11802      }
11803
11804  @Override
11805  public ResourceType getResourceType() {
11806    return ResourceType.Contract;
11807   }
11808
11809 /**
11810   * Search parameter: <b>authority</b>
11811   * <p>
11812   * Description: <b>The authority of the contract</b><br>
11813   * Type: <b>reference</b><br>
11814   * Path: <b>Contract.authority</b><br>
11815   * </p>
11816   */
11817  @SearchParamDefinition(name="authority", path="Contract.authority", description="The authority of the contract", type="reference", target={Organization.class } )
11818  public static final String SP_AUTHORITY = "authority";
11819 /**
11820   * <b>Fluent Client</b> search parameter constant for <b>authority</b>
11821   * <p>
11822   * Description: <b>The authority of the contract</b><br>
11823   * Type: <b>reference</b><br>
11824   * Path: <b>Contract.authority</b><br>
11825   * </p>
11826   */
11827  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam AUTHORITY = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_AUTHORITY);
11828
11829/**
11830   * Constant for fluent queries to be used to add include statements. Specifies
11831   * the path value of "<b>Contract:authority</b>".
11832   */
11833  public static final ca.uhn.fhir.model.api.Include INCLUDE_AUTHORITY = new ca.uhn.fhir.model.api.Include("Contract:authority").toLocked();
11834
11835 /**
11836   * Search parameter: <b>domain</b>
11837   * <p>
11838   * Description: <b>The domain of the contract</b><br>
11839   * Type: <b>reference</b><br>
11840   * Path: <b>Contract.domain</b><br>
11841   * </p>
11842   */
11843  @SearchParamDefinition(name="domain", path="Contract.domain", description="The domain of the contract", type="reference", target={Location.class } )
11844  public static final String SP_DOMAIN = "domain";
11845 /**
11846   * <b>Fluent Client</b> search parameter constant for <b>domain</b>
11847   * <p>
11848   * Description: <b>The domain of the contract</b><br>
11849   * Type: <b>reference</b><br>
11850   * Path: <b>Contract.domain</b><br>
11851   * </p>
11852   */
11853  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam DOMAIN = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_DOMAIN);
11854
11855/**
11856   * Constant for fluent queries to be used to add include statements. Specifies
11857   * the path value of "<b>Contract:domain</b>".
11858   */
11859  public static final ca.uhn.fhir.model.api.Include INCLUDE_DOMAIN = new ca.uhn.fhir.model.api.Include("Contract:domain").toLocked();
11860
11861 /**
11862   * Search parameter: <b>instantiates</b>
11863   * <p>
11864   * Description: <b>A source definition of the contract</b><br>
11865   * Type: <b>uri</b><br>
11866   * Path: <b>Contract.instantiatesUri</b><br>
11867   * </p>
11868   */
11869  @SearchParamDefinition(name="instantiates", path="Contract.instantiatesUri", description="A source definition of the contract", type="uri" )
11870  public static final String SP_INSTANTIATES = "instantiates";
11871 /**
11872   * <b>Fluent Client</b> search parameter constant for <b>instantiates</b>
11873   * <p>
11874   * Description: <b>A source definition of the contract</b><br>
11875   * Type: <b>uri</b><br>
11876   * Path: <b>Contract.instantiatesUri</b><br>
11877   * </p>
11878   */
11879  public static final ca.uhn.fhir.rest.gclient.UriClientParam INSTANTIATES = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_INSTANTIATES);
11880
11881 /**
11882   * Search parameter: <b>issued</b>
11883   * <p>
11884   * Description: <b>The date/time the contract was issued</b><br>
11885   * Type: <b>date</b><br>
11886   * Path: <b>Contract.issued</b><br>
11887   * </p>
11888   */
11889  @SearchParamDefinition(name="issued", path="Contract.issued", description="The date/time the contract was issued", type="date" )
11890  public static final String SP_ISSUED = "issued";
11891 /**
11892   * <b>Fluent Client</b> search parameter constant for <b>issued</b>
11893   * <p>
11894   * Description: <b>The date/time the contract was issued</b><br>
11895   * Type: <b>date</b><br>
11896   * Path: <b>Contract.issued</b><br>
11897   * </p>
11898   */
11899  public static final ca.uhn.fhir.rest.gclient.DateClientParam ISSUED = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_ISSUED);
11900
11901 /**
11902   * Search parameter: <b>signer</b>
11903   * <p>
11904   * Description: <b>Contract Signatory Party</b><br>
11905   * Type: <b>reference</b><br>
11906   * Path: <b>Contract.signer.party</b><br>
11907   * </p>
11908   */
11909  @SearchParamDefinition(name="signer", path="Contract.signer.party", description="Contract Signatory Party", type="reference", target={Organization.class, Patient.class, Practitioner.class, PractitionerRole.class, RelatedPerson.class } )
11910  public static final String SP_SIGNER = "signer";
11911 /**
11912   * <b>Fluent Client</b> search parameter constant for <b>signer</b>
11913   * <p>
11914   * Description: <b>Contract Signatory Party</b><br>
11915   * Type: <b>reference</b><br>
11916   * Path: <b>Contract.signer.party</b><br>
11917   * </p>
11918   */
11919  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SIGNER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SIGNER);
11920
11921/**
11922   * Constant for fluent queries to be used to add include statements. Specifies
11923   * the path value of "<b>Contract:signer</b>".
11924   */
11925  public static final ca.uhn.fhir.model.api.Include INCLUDE_SIGNER = new ca.uhn.fhir.model.api.Include("Contract:signer").toLocked();
11926
11927 /**
11928   * Search parameter: <b>status</b>
11929   * <p>
11930   * Description: <b>The status of the contract</b><br>
11931   * Type: <b>token</b><br>
11932   * Path: <b>Contract.status</b><br>
11933   * </p>
11934   */
11935  @SearchParamDefinition(name="status", path="Contract.status", description="The status of the contract", type="token" )
11936  public static final String SP_STATUS = "status";
11937 /**
11938   * <b>Fluent Client</b> search parameter constant for <b>status</b>
11939   * <p>
11940   * Description: <b>The status of the contract</b><br>
11941   * Type: <b>token</b><br>
11942   * Path: <b>Contract.status</b><br>
11943   * </p>
11944   */
11945  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
11946
11947 /**
11948   * Search parameter: <b>subject</b>
11949   * <p>
11950   * Description: <b>The identity of the subject of the contract</b><br>
11951   * Type: <b>reference</b><br>
11952   * Path: <b>Contract.subject</b><br>
11953   * </p>
11954   */
11955  @SearchParamDefinition(name="subject", path="Contract.subject", description="The identity of the subject of the contract", type="reference", target={Account.class, ActivityDefinition.class, ActorDefinition.class, AdministrableProductDefinition.class, AdverseEvent.class, AllergyIntolerance.class, Appointment.class, AppointmentResponse.class, ArtifactAssessment.class, AuditEvent.class, Basic.class, Binary.class, BiologicallyDerivedProduct.class, BiologicallyDerivedProductDispense.class, BodyStructure.class, Bundle.class, CapabilityStatement.class, CarePlan.class, CareTeam.class, ChargeItem.class, ChargeItemDefinition.class, Citation.class, Claim.class, ClaimResponse.class, ClinicalImpression.class, ClinicalUseDefinition.class, CodeSystem.class, Communication.class, CommunicationRequest.class, CompartmentDefinition.class, Composition.class, ConceptMap.class, Condition.class, ConditionDefinition.class, Consent.class, Contract.class, Coverage.class, CoverageEligibilityRequest.class, CoverageEligibilityResponse.class, DetectedIssue.class, Device.class, DeviceAssociation.class, DeviceDefinition.class, DeviceDispense.class, DeviceMetric.class, DeviceRequest.class, DeviceUsage.class, DiagnosticReport.class, DocumentReference.class, Encounter.class, EncounterHistory.class, Endpoint.class, EnrollmentRequest.class, EnrollmentResponse.class, EpisodeOfCare.class, EventDefinition.class, Evidence.class, EvidenceReport.class, EvidenceVariable.class, ExampleScenario.class, ExplanationOfBenefit.class, FamilyMemberHistory.class, Flag.class, FormularyItem.class, GenomicStudy.class, Goal.class, GraphDefinition.class, Group.class, GuidanceResponse.class, HealthcareService.class, ImagingSelection.class, ImagingStudy.class, Immunization.class, ImmunizationEvaluation.class, ImmunizationRecommendation.class, ImplementationGuide.class, Ingredient.class, InsurancePlan.class, InventoryItem.class, InventoryReport.class, Invoice.class, Library.class, Linkage.class, ListResource.class, Location.class, ManufacturedItemDefinition.class, Measure.class, MeasureReport.class, Medication.class, MedicationAdministration.class, MedicationDispense.class, MedicationKnowledge.class, MedicationRequest.class, MedicationStatement.class, MedicinalProductDefinition.class, MessageDefinition.class, MessageHeader.class, MolecularSequence.class, NamingSystem.class, NutritionIntake.class, NutritionOrder.class, NutritionProduct.class, Observation.class, ObservationDefinition.class, OperationDefinition.class, OperationOutcome.class, Organization.class, OrganizationAffiliation.class, PackagedProductDefinition.class, Parameters.class, Patient.class, PaymentNotice.class, PaymentReconciliation.class, Permission.class, Person.class, PlanDefinition.class, Practitioner.class, PractitionerRole.class, Procedure.class, Provenance.class, Questionnaire.class, QuestionnaireResponse.class, RegulatedAuthorization.class, RelatedPerson.class, RequestOrchestration.class, Requirements.class, ResearchStudy.class, ResearchSubject.class, RiskAssessment.class, Schedule.class, SearchParameter.class, ServiceRequest.class, Slot.class, Specimen.class, SpecimenDefinition.class, StructureDefinition.class, StructureMap.class, Subscription.class, SubscriptionStatus.class, SubscriptionTopic.class, Substance.class, SubstanceDefinition.class, SubstanceNucleicAcid.class, SubstancePolymer.class, SubstanceProtein.class, SubstanceReferenceInformation.class, SubstanceSourceMaterial.class, SupplyDelivery.class, SupplyRequest.class, Task.class, TerminologyCapabilities.class, TestPlan.class, TestReport.class, TestScript.class, Transport.class, ValueSet.class, VerificationResult.class, VisionPrescription.class } )
11956  public static final String SP_SUBJECT = "subject";
11957 /**
11958   * <b>Fluent Client</b> search parameter constant for <b>subject</b>
11959   * <p>
11960   * Description: <b>The identity of the subject of the contract</b><br>
11961   * Type: <b>reference</b><br>
11962   * Path: <b>Contract.subject</b><br>
11963   * </p>
11964   */
11965  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SUBJECT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SUBJECT);
11966
11967/**
11968   * Constant for fluent queries to be used to add include statements. Specifies
11969   * the path value of "<b>Contract:subject</b>".
11970   */
11971  public static final ca.uhn.fhir.model.api.Include INCLUDE_SUBJECT = new ca.uhn.fhir.model.api.Include("Contract:subject").toLocked();
11972
11973 /**
11974   * Search parameter: <b>url</b>
11975   * <p>
11976   * Description: <b>The basal contract definition</b><br>
11977   * Type: <b>uri</b><br>
11978   * Path: <b>Contract.url</b><br>
11979   * </p>
11980   */
11981  @SearchParamDefinition(name="url", path="Contract.url", description="The basal contract definition", type="uri" )
11982  public static final String SP_URL = "url";
11983 /**
11984   * <b>Fluent Client</b> search parameter constant for <b>url</b>
11985   * <p>
11986   * Description: <b>The basal contract definition</b><br>
11987   * Type: <b>uri</b><br>
11988   * Path: <b>Contract.url</b><br>
11989   * </p>
11990   */
11991  public static final ca.uhn.fhir.rest.gclient.UriClientParam URL = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_URL);
11992
11993 /**
11994   * Search parameter: <b>identifier</b>
11995   * <p>
11996   * Description: <b>Multiple Resources: 
11997
11998* [Account](account.html): Account number
11999* [AdverseEvent](adverseevent.html): Business identifier for the event
12000* [AllergyIntolerance](allergyintolerance.html): External ids for this item
12001* [Appointment](appointment.html): An Identifier of the Appointment
12002* [AppointmentResponse](appointmentresponse.html): An Identifier in this appointment response
12003* [Basic](basic.html): Business identifier
12004* [BodyStructure](bodystructure.html): Bodystructure identifier
12005* [CarePlan](careplan.html): External Ids for this plan
12006* [CareTeam](careteam.html): External Ids for this team
12007* [ChargeItem](chargeitem.html): Business Identifier for item
12008* [Claim](claim.html): The primary identifier of the financial resource
12009* [ClaimResponse](claimresponse.html): The identity of the ClaimResponse
12010* [ClinicalImpression](clinicalimpression.html): Business identifier
12011* [Communication](communication.html): Unique identifier
12012* [CommunicationRequest](communicationrequest.html): Unique identifier
12013* [Composition](composition.html): Version-independent identifier for the Composition
12014* [Condition](condition.html): A unique identifier of the condition record
12015* [Consent](consent.html): Identifier for this record (external references)
12016* [Contract](contract.html): The identity of the contract
12017* [Coverage](coverage.html): The primary identifier of the insured and the coverage
12018* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The business identifier of the Eligibility
12019* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The business identifier
12020* [DetectedIssue](detectedissue.html): Unique id for the detected issue
12021* [DeviceRequest](devicerequest.html): Business identifier for request/order
12022* [DeviceUsage](deviceusage.html): Search by identifier
12023* [DiagnosticReport](diagnosticreport.html): An identifier for the report
12024* [DocumentReference](documentreference.html): Identifier of the attachment binary
12025* [Encounter](encounter.html): Identifier(s) by which this encounter is known
12026* [EnrollmentRequest](enrollmentrequest.html): The business identifier of the Enrollment
12027* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare
12028* [ExplanationOfBenefit](explanationofbenefit.html): The business identifier of the Explanation of Benefit
12029* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier
12030* [Flag](flag.html): Business identifier
12031* [Goal](goal.html): External Ids for this goal
12032* [GuidanceResponse](guidanceresponse.html): The identifier of the guidance response
12033* [ImagingSelection](imagingselection.html): Identifiers for the imaging selection
12034* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID
12035* [Immunization](immunization.html): Business identifier
12036* [ImmunizationEvaluation](immunizationevaluation.html): ID of the evaluation
12037* [ImmunizationRecommendation](immunizationrecommendation.html): Business identifier
12038* [Invoice](invoice.html): Business Identifier for item
12039* [List](list.html): Business identifier
12040* [MeasureReport](measurereport.html): External identifier of the measure report to be returned
12041* [Medication](medication.html): Returns medications with this external identifier
12042* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier
12043* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier
12044* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier
12045* [MedicationStatement](medicationstatement.html): Return statements with this external identifier
12046* [MolecularSequence](molecularsequence.html): The unique identity for a particular sequence
12047* [NutritionIntake](nutritionintake.html): Return statements with this external identifier
12048* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier
12049* [Observation](observation.html): The unique id for a particular observation
12050* [Person](person.html): A person Identifier
12051* [Procedure](procedure.html): A unique identifier for a procedure
12052* [QuestionnaireResponse](questionnaireresponse.html): The unique identifier for the questionnaire response
12053* [RelatedPerson](relatedperson.html): An Identifier of the RelatedPerson
12054* [RequestOrchestration](requestorchestration.html): External identifiers for the request orchestration
12055* [ResearchSubject](researchsubject.html): Business Identifier for research subject in a study
12056* [RiskAssessment](riskassessment.html): Unique identifier for the assessment
12057* [ServiceRequest](servicerequest.html): Identifiers assigned to this order
12058* [Specimen](specimen.html): The unique identifier associated with the specimen
12059* [SupplyDelivery](supplydelivery.html): External identifier
12060* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest
12061* [Task](task.html): Search for a task instance by its business identifier
12062* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier
12063</b><br>
12064   * Type: <b>token</b><br>
12065   * Path: <b>Account.identifier | AdverseEvent.identifier | AllergyIntolerance.identifier | Appointment.identifier | AppointmentResponse.identifier | Basic.identifier | BodyStructure.identifier | CarePlan.identifier | CareTeam.identifier | ChargeItem.identifier | Claim.identifier | ClaimResponse.identifier | ClinicalImpression.identifier | Communication.identifier | CommunicationRequest.identifier | Composition.identifier | Condition.identifier | Consent.identifier | Contract.identifier | Coverage.identifier | CoverageEligibilityRequest.identifier | CoverageEligibilityResponse.identifier | DetectedIssue.identifier | DeviceRequest.identifier | DeviceUsage.identifier | DiagnosticReport.identifier | DocumentReference.identifier | Encounter.identifier | EnrollmentRequest.identifier | EpisodeOfCare.identifier | ExplanationOfBenefit.identifier | FamilyMemberHistory.identifier | Flag.identifier | Goal.identifier | GuidanceResponse.identifier | ImagingSelection.identifier | ImagingStudy.identifier | Immunization.identifier | ImmunizationEvaluation.identifier | ImmunizationRecommendation.identifier | Invoice.identifier | List.identifier | MeasureReport.identifier | Medication.identifier | MedicationAdministration.identifier | MedicationDispense.identifier | MedicationRequest.identifier | MedicationStatement.identifier | MolecularSequence.identifier | NutritionIntake.identifier | NutritionOrder.identifier | Observation.identifier | Person.identifier | Procedure.identifier | QuestionnaireResponse.identifier | RelatedPerson.identifier | RequestOrchestration.identifier | ResearchSubject.identifier | RiskAssessment.identifier | ServiceRequest.identifier | Specimen.identifier | SupplyDelivery.identifier | SupplyRequest.identifier | Task.identifier | VisionPrescription.identifier</b><br>
12066   * </p>
12067   */
12068  @SearchParamDefinition(name="identifier", path="Account.identifier | AdverseEvent.identifier | AllergyIntolerance.identifier | Appointment.identifier | AppointmentResponse.identifier | Basic.identifier | BodyStructure.identifier | CarePlan.identifier | CareTeam.identifier | ChargeItem.identifier | Claim.identifier | ClaimResponse.identifier | ClinicalImpression.identifier | Communication.identifier | CommunicationRequest.identifier | Composition.identifier | Condition.identifier | Consent.identifier | Contract.identifier | Coverage.identifier | CoverageEligibilityRequest.identifier | CoverageEligibilityResponse.identifier | DetectedIssue.identifier | DeviceRequest.identifier | DeviceUsage.identifier | DiagnosticReport.identifier | DocumentReference.identifier | Encounter.identifier | EnrollmentRequest.identifier | EpisodeOfCare.identifier | ExplanationOfBenefit.identifier | FamilyMemberHistory.identifier | Flag.identifier | Goal.identifier | GuidanceResponse.identifier | ImagingSelection.identifier | ImagingStudy.identifier | Immunization.identifier | ImmunizationEvaluation.identifier | ImmunizationRecommendation.identifier | Invoice.identifier | List.identifier | MeasureReport.identifier | Medication.identifier | MedicationAdministration.identifier | MedicationDispense.identifier | MedicationRequest.identifier | MedicationStatement.identifier | MolecularSequence.identifier | NutritionIntake.identifier | NutritionOrder.identifier | Observation.identifier | Person.identifier | Procedure.identifier | QuestionnaireResponse.identifier | RelatedPerson.identifier | RequestOrchestration.identifier | ResearchSubject.identifier | RiskAssessment.identifier | ServiceRequest.identifier | Specimen.identifier | SupplyDelivery.identifier | SupplyRequest.identifier | Task.identifier | VisionPrescription.identifier", description="Multiple Resources: \r\n\r\n* [Account](account.html): Account number\r\n* [AdverseEvent](adverseevent.html): Business identifier for the event\r\n* [AllergyIntolerance](allergyintolerance.html): External ids for this item\r\n* [Appointment](appointment.html): An Identifier of the Appointment\r\n* [AppointmentResponse](appointmentresponse.html): An Identifier in this appointment response\r\n* [Basic](basic.html): Business identifier\r\n* [BodyStructure](bodystructure.html): Bodystructure identifier\r\n* [CarePlan](careplan.html): External Ids for this plan\r\n* [CareTeam](careteam.html): External Ids for this team\r\n* [ChargeItem](chargeitem.html): Business Identifier for item\r\n* [Claim](claim.html): The primary identifier of the financial resource\r\n* [ClaimResponse](claimresponse.html): The identity of the ClaimResponse\r\n* [ClinicalImpression](clinicalimpression.html): Business identifier\r\n* [Communication](communication.html): Unique identifier\r\n* [CommunicationRequest](communicationrequest.html): Unique identifier\r\n* [Composition](composition.html): Version-independent identifier for the Composition\r\n* [Condition](condition.html): A unique identifier of the condition record\r\n* [Consent](consent.html): Identifier for this record (external references)\r\n* [Contract](contract.html): The identity of the contract\r\n* [Coverage](coverage.html): The primary identifier of the insured and the coverage\r\n* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The business identifier of the Eligibility\r\n* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The business identifier\r\n* [DetectedIssue](detectedissue.html): Unique id for the detected issue\r\n* [DeviceRequest](devicerequest.html): Business identifier for request/order\r\n* [DeviceUsage](deviceusage.html): Search by identifier\r\n* [DiagnosticReport](diagnosticreport.html): An identifier for the report\r\n* [DocumentReference](documentreference.html): Identifier of the attachment binary\r\n* [Encounter](encounter.html): Identifier(s) by which this encounter is known\r\n* [EnrollmentRequest](enrollmentrequest.html): The business identifier of the Enrollment\r\n* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare\r\n* [ExplanationOfBenefit](explanationofbenefit.html): The business identifier of the Explanation of Benefit\r\n* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier\r\n* [Flag](flag.html): Business identifier\r\n* [Goal](goal.html): External Ids for this goal\r\n* [GuidanceResponse](guidanceresponse.html): The identifier of the guidance response\r\n* [ImagingSelection](imagingselection.html): Identifiers for the imaging selection\r\n* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID\r\n* [Immunization](immunization.html): Business identifier\r\n* [ImmunizationEvaluation](immunizationevaluation.html): ID of the evaluation\r\n* [ImmunizationRecommendation](immunizationrecommendation.html): Business identifier\r\n* [Invoice](invoice.html): Business Identifier for item\r\n* [List](list.html): Business identifier\r\n* [MeasureReport](measurereport.html): External identifier of the measure report to be returned\r\n* [Medication](medication.html): Returns medications with this external identifier\r\n* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier\r\n* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier\r\n* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier\r\n* [MedicationStatement](medicationstatement.html): Return statements with this external identifier\r\n* [MolecularSequence](molecularsequence.html): The unique identity for a particular sequence\r\n* [NutritionIntake](nutritionintake.html): Return statements with this external identifier\r\n* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier\r\n* [Observation](observation.html): The unique id for a particular observation\r\n* [Person](person.html): A person Identifier\r\n* [Procedure](procedure.html): A unique identifier for a procedure\r\n* [QuestionnaireResponse](questionnaireresponse.html): The unique identifier for the questionnaire response\r\n* [RelatedPerson](relatedperson.html): An Identifier of the RelatedPerson\r\n* [RequestOrchestration](requestorchestration.html): External identifiers for the request orchestration\r\n* [ResearchSubject](researchsubject.html): Business Identifier for research subject in a study\r\n* [RiskAssessment](riskassessment.html): Unique identifier for the assessment\r\n* [ServiceRequest](servicerequest.html): Identifiers assigned to this order\r\n* [Specimen](specimen.html): The unique identifier associated with the specimen\r\n* [SupplyDelivery](supplydelivery.html): External identifier\r\n* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest\r\n* [Task](task.html): Search for a task instance by its business identifier\r\n* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier\r\n", type="token" )
12069  public static final String SP_IDENTIFIER = "identifier";
12070 /**
12071   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
12072   * <p>
12073   * Description: <b>Multiple Resources: 
12074
12075* [Account](account.html): Account number
12076* [AdverseEvent](adverseevent.html): Business identifier for the event
12077* [AllergyIntolerance](allergyintolerance.html): External ids for this item
12078* [Appointment](appointment.html): An Identifier of the Appointment
12079* [AppointmentResponse](appointmentresponse.html): An Identifier in this appointment response
12080* [Basic](basic.html): Business identifier
12081* [BodyStructure](bodystructure.html): Bodystructure identifier
12082* [CarePlan](careplan.html): External Ids for this plan
12083* [CareTeam](careteam.html): External Ids for this team
12084* [ChargeItem](chargeitem.html): Business Identifier for item
12085* [Claim](claim.html): The primary identifier of the financial resource
12086* [ClaimResponse](claimresponse.html): The identity of the ClaimResponse
12087* [ClinicalImpression](clinicalimpression.html): Business identifier
12088* [Communication](communication.html): Unique identifier
12089* [CommunicationRequest](communicationrequest.html): Unique identifier
12090* [Composition](composition.html): Version-independent identifier for the Composition
12091* [Condition](condition.html): A unique identifier of the condition record
12092* [Consent](consent.html): Identifier for this record (external references)
12093* [Contract](contract.html): The identity of the contract
12094* [Coverage](coverage.html): The primary identifier of the insured and the coverage
12095* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The business identifier of the Eligibility
12096* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The business identifier
12097* [DetectedIssue](detectedissue.html): Unique id for the detected issue
12098* [DeviceRequest](devicerequest.html): Business identifier for request/order
12099* [DeviceUsage](deviceusage.html): Search by identifier
12100* [DiagnosticReport](diagnosticreport.html): An identifier for the report
12101* [DocumentReference](documentreference.html): Identifier of the attachment binary
12102* [Encounter](encounter.html): Identifier(s) by which this encounter is known
12103* [EnrollmentRequest](enrollmentrequest.html): The business identifier of the Enrollment
12104* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare
12105* [ExplanationOfBenefit](explanationofbenefit.html): The business identifier of the Explanation of Benefit
12106* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier
12107* [Flag](flag.html): Business identifier
12108* [Goal](goal.html): External Ids for this goal
12109* [GuidanceResponse](guidanceresponse.html): The identifier of the guidance response
12110* [ImagingSelection](imagingselection.html): Identifiers for the imaging selection
12111* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID
12112* [Immunization](immunization.html): Business identifier
12113* [ImmunizationEvaluation](immunizationevaluation.html): ID of the evaluation
12114* [ImmunizationRecommendation](immunizationrecommendation.html): Business identifier
12115* [Invoice](invoice.html): Business Identifier for item
12116* [List](list.html): Business identifier
12117* [MeasureReport](measurereport.html): External identifier of the measure report to be returned
12118* [Medication](medication.html): Returns medications with this external identifier
12119* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier
12120* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier
12121* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier
12122* [MedicationStatement](medicationstatement.html): Return statements with this external identifier
12123* [MolecularSequence](molecularsequence.html): The unique identity for a particular sequence
12124* [NutritionIntake](nutritionintake.html): Return statements with this external identifier
12125* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier
12126* [Observation](observation.html): The unique id for a particular observation
12127* [Person](person.html): A person Identifier
12128* [Procedure](procedure.html): A unique identifier for a procedure
12129* [QuestionnaireResponse](questionnaireresponse.html): The unique identifier for the questionnaire response
12130* [RelatedPerson](relatedperson.html): An Identifier of the RelatedPerson
12131* [RequestOrchestration](requestorchestration.html): External identifiers for the request orchestration
12132* [ResearchSubject](researchsubject.html): Business Identifier for research subject in a study
12133* [RiskAssessment](riskassessment.html): Unique identifier for the assessment
12134* [ServiceRequest](servicerequest.html): Identifiers assigned to this order
12135* [Specimen](specimen.html): The unique identifier associated with the specimen
12136* [SupplyDelivery](supplydelivery.html): External identifier
12137* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest
12138* [Task](task.html): Search for a task instance by its business identifier
12139* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier
12140</b><br>
12141   * Type: <b>token</b><br>
12142   * Path: <b>Account.identifier | AdverseEvent.identifier | AllergyIntolerance.identifier | Appointment.identifier | AppointmentResponse.identifier | Basic.identifier | BodyStructure.identifier | CarePlan.identifier | CareTeam.identifier | ChargeItem.identifier | Claim.identifier | ClaimResponse.identifier | ClinicalImpression.identifier | Communication.identifier | CommunicationRequest.identifier | Composition.identifier | Condition.identifier | Consent.identifier | Contract.identifier | Coverage.identifier | CoverageEligibilityRequest.identifier | CoverageEligibilityResponse.identifier | DetectedIssue.identifier | DeviceRequest.identifier | DeviceUsage.identifier | DiagnosticReport.identifier | DocumentReference.identifier | Encounter.identifier | EnrollmentRequest.identifier | EpisodeOfCare.identifier | ExplanationOfBenefit.identifier | FamilyMemberHistory.identifier | Flag.identifier | Goal.identifier | GuidanceResponse.identifier | ImagingSelection.identifier | ImagingStudy.identifier | Immunization.identifier | ImmunizationEvaluation.identifier | ImmunizationRecommendation.identifier | Invoice.identifier | List.identifier | MeasureReport.identifier | Medication.identifier | MedicationAdministration.identifier | MedicationDispense.identifier | MedicationRequest.identifier | MedicationStatement.identifier | MolecularSequence.identifier | NutritionIntake.identifier | NutritionOrder.identifier | Observation.identifier | Person.identifier | Procedure.identifier | QuestionnaireResponse.identifier | RelatedPerson.identifier | RequestOrchestration.identifier | ResearchSubject.identifier | RiskAssessment.identifier | ServiceRequest.identifier | Specimen.identifier | SupplyDelivery.identifier | SupplyRequest.identifier | Task.identifier | VisionPrescription.identifier</b><br>
12143   * </p>
12144   */
12145  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
12146
12147 /**
12148   * Search parameter: <b>patient</b>
12149   * <p>
12150   * Description: <b>Multiple Resources: 
12151
12152* [Account](account.html): The entity that caused the expenses
12153* [AdverseEvent](adverseevent.html): Subject impacted by event
12154* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for
12155* [Appointment](appointment.html): One of the individuals of the appointment is this patient
12156* [AppointmentResponse](appointmentresponse.html): This Response is for this Patient
12157* [AuditEvent](auditevent.html): Where the activity involved patient data
12158* [Basic](basic.html): Identifies the focus of this resource
12159* [BodyStructure](bodystructure.html): Who this is about
12160* [CarePlan](careplan.html): Who the care plan is for
12161* [CareTeam](careteam.html): Who care team is for
12162* [ChargeItem](chargeitem.html): Individual service was done for/to
12163* [Claim](claim.html): Patient receiving the products or services
12164* [ClaimResponse](claimresponse.html): The subject of care
12165* [ClinicalImpression](clinicalimpression.html): Patient assessed
12166* [Communication](communication.html): Focus of message
12167* [CommunicationRequest](communicationrequest.html): Focus of message
12168* [Composition](composition.html): Who and/or what the composition is about
12169* [Condition](condition.html): Who has the condition?
12170* [Consent](consent.html): Who the consent applies to
12171* [Contract](contract.html): The identity of the subject of the contract (if a patient)
12172* [Coverage](coverage.html): Retrieve coverages for a patient
12173* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The reference to the patient
12174* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The reference to the patient
12175* [DetectedIssue](detectedissue.html): Associated patient
12176* [DeviceRequest](devicerequest.html): Individual the service is ordered for
12177* [DeviceUsage](deviceusage.html): Search by patient who used / uses the device
12178* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient
12179* [DocumentReference](documentreference.html): Who/what is the subject of the document
12180* [Encounter](encounter.html): The patient present at the encounter
12181* [EnrollmentRequest](enrollmentrequest.html): The party to be enrolled
12182* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care
12183* [ExplanationOfBenefit](explanationofbenefit.html): The reference to the patient
12184* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for
12185* [Flag](flag.html): The identity of a subject to list flags for
12186* [Goal](goal.html): Who this goal is intended for
12187* [GuidanceResponse](guidanceresponse.html): The identity of a patient to search for guidance response results
12188* [ImagingSelection](imagingselection.html): Who the study is about
12189* [ImagingStudy](imagingstudy.html): Who the study is about
12190* [Immunization](immunization.html): The patient for the vaccination record
12191* [ImmunizationEvaluation](immunizationevaluation.html): The patient being evaluated
12192* [ImmunizationRecommendation](immunizationrecommendation.html): Who this profile is for
12193* [Invoice](invoice.html): Recipient(s) of goods and services
12194* [List](list.html): If all resources have the same subject
12195* [MeasureReport](measurereport.html): The identity of a patient to search for individual measure report results for
12196* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for
12197* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for
12198* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient
12199* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.
12200* [MolecularSequence](molecularsequence.html): The subject that the sequence is about
12201* [NutritionIntake](nutritionintake.html): Returns statements for a specific patient.
12202* [NutritionOrder](nutritionorder.html): The identity of the individual or set of individuals who requires the diet, formula or nutritional supplement
12203* [Observation](observation.html): The subject that the observation is about (if patient)
12204* [Person](person.html): The Person links to this Patient
12205* [Procedure](procedure.html): Search by subject - a patient
12206* [Provenance](provenance.html): Where the activity involved patient data
12207* [QuestionnaireResponse](questionnaireresponse.html): The patient that is the subject of the questionnaire response
12208* [RelatedPerson](relatedperson.html): The patient this related person is related to
12209* [RequestOrchestration](requestorchestration.html): The identity of a patient to search for request orchestrations
12210* [ResearchSubject](researchsubject.html): Who or what is part of study
12211* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?
12212* [ServiceRequest](servicerequest.html): Search by subject - a patient
12213* [Specimen](specimen.html): The patient the specimen comes from
12214* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied
12215* [SupplyRequest](supplyrequest.html): The patient or subject for whom the supply is destined
12216* [Task](task.html): Search by patient
12217* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for
12218</b><br>
12219   * Type: <b>reference</b><br>
12220   * Path: <b>Account.subject.where(resolve() is Patient) | AdverseEvent.subject.where(resolve() is Patient) | AllergyIntolerance.patient | Appointment.participant.actor.where(resolve() is Patient) | Appointment.subject.where(resolve() is Patient) | AppointmentResponse.actor.where(resolve() is Patient) | AuditEvent.patient | Basic.subject.where(resolve() is Patient) | BodyStructure.patient | CarePlan.subject.where(resolve() is Patient) | CareTeam.subject.where(resolve() is Patient) | ChargeItem.subject.where(resolve() is Patient) | Claim.patient | ClaimResponse.patient | ClinicalImpression.subject.where(resolve() is Patient) | Communication.subject.where(resolve() is Patient) | CommunicationRequest.subject.where(resolve() is Patient) | Composition.subject.where(resolve() is Patient) | Condition.subject.where(resolve() is Patient) | Consent.subject.where(resolve() is Patient) | Contract.subject.where(resolve() is Patient) | Coverage.beneficiary | CoverageEligibilityRequest.patient | CoverageEligibilityResponse.patient | DetectedIssue.subject.where(resolve() is Patient) | DeviceRequest.subject.where(resolve() is Patient) | DeviceUsage.patient | DiagnosticReport.subject.where(resolve() is Patient) | DocumentReference.subject.where(resolve() is Patient) | Encounter.subject.where(resolve() is Patient) | EnrollmentRequest.candidate | EpisodeOfCare.patient | ExplanationOfBenefit.patient | FamilyMemberHistory.patient | Flag.subject.where(resolve() is Patient) | Goal.subject.where(resolve() is Patient) | GuidanceResponse.subject.where(resolve() is Patient) | ImagingSelection.subject.where(resolve() is Patient) | ImagingStudy.subject.where(resolve() is Patient) | Immunization.patient | ImmunizationEvaluation.patient | ImmunizationRecommendation.patient | Invoice.subject.where(resolve() is Patient) | List.subject.where(resolve() is Patient) | MeasureReport.subject.where(resolve() is Patient) | MedicationAdministration.subject.where(resolve() is Patient) | MedicationDispense.subject.where(resolve() is Patient) | MedicationRequest.subject.where(resolve() is Patient) | MedicationStatement.subject.where(resolve() is Patient) | MolecularSequence.subject.where(resolve() is Patient) | NutritionIntake.subject.where(resolve() is Patient) | NutritionOrder.subject.where(resolve() is Patient) | Observation.subject.where(resolve() is Patient) | Person.link.target.where(resolve() is Patient) | Procedure.subject.where(resolve() is Patient) | Provenance.patient | QuestionnaireResponse.subject.where(resolve() is Patient) | RelatedPerson.patient | RequestOrchestration.subject.where(resolve() is Patient) | ResearchSubject.subject.where(resolve() is Patient) | RiskAssessment.subject.where(resolve() is Patient) | ServiceRequest.subject.where(resolve() is Patient) | Specimen.subject.where(resolve() is Patient) | SupplyDelivery.patient | SupplyRequest.deliverFor | Task.for.where(resolve() is Patient) | VisionPrescription.patient</b><br>
12221   * </p>
12222   */
12223  @SearchParamDefinition(name="patient", path="Account.subject.where(resolve() is Patient) | AdverseEvent.subject.where(resolve() is Patient) | AllergyIntolerance.patient | Appointment.participant.actor.where(resolve() is Patient) | Appointment.subject.where(resolve() is Patient) | AppointmentResponse.actor.where(resolve() is Patient) | AuditEvent.patient | Basic.subject.where(resolve() is Patient) | BodyStructure.patient | CarePlan.subject.where(resolve() is Patient) | CareTeam.subject.where(resolve() is Patient) | ChargeItem.subject.where(resolve() is Patient) | Claim.patient | ClaimResponse.patient | ClinicalImpression.subject.where(resolve() is Patient) | Communication.subject.where(resolve() is Patient) | CommunicationRequest.subject.where(resolve() is Patient) | Composition.subject.where(resolve() is Patient) | Condition.subject.where(resolve() is Patient) | Consent.subject.where(resolve() is Patient) | Contract.subject.where(resolve() is Patient) | Coverage.beneficiary | CoverageEligibilityRequest.patient | CoverageEligibilityResponse.patient | DetectedIssue.subject.where(resolve() is Patient) | DeviceRequest.subject.where(resolve() is Patient) | DeviceUsage.patient | DiagnosticReport.subject.where(resolve() is Patient) | DocumentReference.subject.where(resolve() is Patient) | Encounter.subject.where(resolve() is Patient) | EnrollmentRequest.candidate | EpisodeOfCare.patient | ExplanationOfBenefit.patient | FamilyMemberHistory.patient | Flag.subject.where(resolve() is Patient) | Goal.subject.where(resolve() is Patient) | GuidanceResponse.subject.where(resolve() is Patient) | ImagingSelection.subject.where(resolve() is Patient) | ImagingStudy.subject.where(resolve() is Patient) | Immunization.patient | ImmunizationEvaluation.patient | ImmunizationRecommendation.patient | Invoice.subject.where(resolve() is Patient) | List.subject.where(resolve() is Patient) | MeasureReport.subject.where(resolve() is Patient) | MedicationAdministration.subject.where(resolve() is Patient) | MedicationDispense.subject.where(resolve() is Patient) | MedicationRequest.subject.where(resolve() is Patient) | MedicationStatement.subject.where(resolve() is Patient) | MolecularSequence.subject.where(resolve() is Patient) | NutritionIntake.subject.where(resolve() is Patient) | NutritionOrder.subject.where(resolve() is Patient) | Observation.subject.where(resolve() is Patient) | Person.link.target.where(resolve() is Patient) | Procedure.subject.where(resolve() is Patient) | Provenance.patient | QuestionnaireResponse.subject.where(resolve() is Patient) | RelatedPerson.patient | RequestOrchestration.subject.where(resolve() is Patient) | ResearchSubject.subject.where(resolve() is Patient) | RiskAssessment.subject.where(resolve() is Patient) | ServiceRequest.subject.where(resolve() is Patient) | Specimen.subject.where(resolve() is Patient) | SupplyDelivery.patient | SupplyRequest.deliverFor | Task.for.where(resolve() is Patient) | VisionPrescription.patient", description="Multiple Resources: \r\n\r\n* [Account](account.html): The entity that caused the expenses\r\n* [AdverseEvent](adverseevent.html): Subject impacted by event\r\n* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for\r\n* [Appointment](appointment.html): One of the individuals of the appointment is this patient\r\n* [AppointmentResponse](appointmentresponse.html): This Response is for this Patient\r\n* [AuditEvent](auditevent.html): Where the activity involved patient data\r\n* [Basic](basic.html): Identifies the focus of this resource\r\n* [BodyStructure](bodystructure.html): Who this is about\r\n* [CarePlan](careplan.html): Who the care plan is for\r\n* [CareTeam](careteam.html): Who care team is for\r\n* [ChargeItem](chargeitem.html): Individual service was done for/to\r\n* [Claim](claim.html): Patient receiving the products or services\r\n* [ClaimResponse](claimresponse.html): The subject of care\r\n* [ClinicalImpression](clinicalimpression.html): Patient assessed\r\n* [Communication](communication.html): Focus of message\r\n* [CommunicationRequest](communicationrequest.html): Focus of message\r\n* [Composition](composition.html): Who and/or what the composition is about\r\n* [Condition](condition.html): Who has the condition?\r\n* [Consent](consent.html): Who the consent applies to\r\n* [Contract](contract.html): The identity of the subject of the contract (if a patient)\r\n* [Coverage](coverage.html): Retrieve coverages for a patient\r\n* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The reference to the patient\r\n* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The reference to the patient\r\n* [DetectedIssue](detectedissue.html): Associated patient\r\n* [DeviceRequest](devicerequest.html): Individual the service is ordered for\r\n* [DeviceUsage](deviceusage.html): Search by patient who used / uses the device\r\n* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient\r\n* [DocumentReference](documentreference.html): Who/what is the subject of the document\r\n* [Encounter](encounter.html): The patient present at the encounter\r\n* [EnrollmentRequest](enrollmentrequest.html): The party to be enrolled\r\n* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care\r\n* [ExplanationOfBenefit](explanationofbenefit.html): The reference to the patient\r\n* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for\r\n* [Flag](flag.html): The identity of a subject to list flags for\r\n* [Goal](goal.html): Who this goal is intended for\r\n* [GuidanceResponse](guidanceresponse.html): The identity of a patient to search for guidance response results\r\n* [ImagingSelection](imagingselection.html): Who the study is about\r\n* [ImagingStudy](imagingstudy.html): Who the study is about\r\n* [Immunization](immunization.html): The patient for the vaccination record\r\n* [ImmunizationEvaluation](immunizationevaluation.html): The patient being evaluated\r\n* [ImmunizationRecommendation](immunizationrecommendation.html): Who this profile is for\r\n* [Invoice](invoice.html): Recipient(s) of goods and services\r\n* [List](list.html): If all resources have the same subject\r\n* [MeasureReport](measurereport.html): The identity of a patient to search for individual measure report results for\r\n* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for\r\n* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for\r\n* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient\r\n* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.\r\n* [MolecularSequence](molecularsequence.html): The subject that the sequence is about\r\n* [NutritionIntake](nutritionintake.html): Returns statements for a specific patient.\r\n* [NutritionOrder](nutritionorder.html): The identity of the individual or set of individuals who requires the diet, formula or nutritional supplement\r\n* [Observation](observation.html): The subject that the observation is about (if patient)\r\n* [Person](person.html): The Person links to this Patient\r\n* [Procedure](procedure.html): Search by subject - a patient\r\n* [Provenance](provenance.html): Where the activity involved patient data\r\n* [QuestionnaireResponse](questionnaireresponse.html): The patient that is the subject of the questionnaire response\r\n* [RelatedPerson](relatedperson.html): The patient this related person is related to\r\n* [RequestOrchestration](requestorchestration.html): The identity of a patient to search for request orchestrations\r\n* [ResearchSubject](researchsubject.html): Who or what is part of study\r\n* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?\r\n* [ServiceRequest](servicerequest.html): Search by subject - a patient\r\n* [Specimen](specimen.html): The patient the specimen comes from\r\n* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied\r\n* [SupplyRequest](supplyrequest.html): The patient or subject for whom the supply is destined\r\n* [Task](task.html): Search by patient\r\n* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for\r\n", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Patient") }, target={Patient.class } )
12224  public static final String SP_PATIENT = "patient";
12225 /**
12226   * <b>Fluent Client</b> search parameter constant for <b>patient</b>
12227   * <p>
12228   * Description: <b>Multiple Resources: 
12229
12230* [Account](account.html): The entity that caused the expenses
12231* [AdverseEvent](adverseevent.html): Subject impacted by event
12232* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for
12233* [Appointment](appointment.html): One of the individuals of the appointment is this patient
12234* [AppointmentResponse](appointmentresponse.html): This Response is for this Patient
12235* [AuditEvent](auditevent.html): Where the activity involved patient data
12236* [Basic](basic.html): Identifies the focus of this resource
12237* [BodyStructure](bodystructure.html): Who this is about
12238* [CarePlan](careplan.html): Who the care plan is for
12239* [CareTeam](careteam.html): Who care team is for
12240* [ChargeItem](chargeitem.html): Individual service was done for/to
12241* [Claim](claim.html): Patient receiving the products or services
12242* [ClaimResponse](claimresponse.html): The subject of care
12243* [ClinicalImpression](clinicalimpression.html): Patient assessed
12244* [Communication](communication.html): Focus of message
12245* [CommunicationRequest](communicationrequest.html): Focus of message
12246* [Composition](composition.html): Who and/or what the composition is about
12247* [Condition](condition.html): Who has the condition?
12248* [Consent](consent.html): Who the consent applies to
12249* [Contract](contract.html): The identity of the subject of the contract (if a patient)
12250* [Coverage](coverage.html): Retrieve coverages for a patient
12251* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The reference to the patient
12252* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The reference to the patient
12253* [DetectedIssue](detectedissue.html): Associated patient
12254* [DeviceRequest](devicerequest.html): Individual the service is ordered for
12255* [DeviceUsage](deviceusage.html): Search by patient who used / uses the device
12256* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient
12257* [DocumentReference](documentreference.html): Who/what is the subject of the document
12258* [Encounter](encounter.html): The patient present at the encounter
12259* [EnrollmentRequest](enrollmentrequest.html): The party to be enrolled
12260* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care
12261* [ExplanationOfBenefit](explanationofbenefit.html): The reference to the patient
12262* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for
12263* [Flag](flag.html): The identity of a subject to list flags for
12264* [Goal](goal.html): Who this goal is intended for
12265* [GuidanceResponse](guidanceresponse.html): The identity of a patient to search for guidance response results
12266* [ImagingSelection](imagingselection.html): Who the study is about
12267* [ImagingStudy](imagingstudy.html): Who the study is about
12268* [Immunization](immunization.html): The patient for the vaccination record
12269* [ImmunizationEvaluation](immunizationevaluation.html): The patient being evaluated
12270* [ImmunizationRecommendation](immunizationrecommendation.html): Who this profile is for
12271* [Invoice](invoice.html): Recipient(s) of goods and services
12272* [List](list.html): If all resources have the same subject
12273* [MeasureReport](measurereport.html): The identity of a patient to search for individual measure report results for
12274* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for
12275* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for
12276* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient
12277* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.
12278* [MolecularSequence](molecularsequence.html): The subject that the sequence is about
12279* [NutritionIntake](nutritionintake.html): Returns statements for a specific patient.
12280* [NutritionOrder](nutritionorder.html): The identity of the individual or set of individuals who requires the diet, formula or nutritional supplement
12281* [Observation](observation.html): The subject that the observation is about (if patient)
12282* [Person](person.html): The Person links to this Patient
12283* [Procedure](procedure.html): Search by subject - a patient
12284* [Provenance](provenance.html): Where the activity involved patient data
12285* [QuestionnaireResponse](questionnaireresponse.html): The patient that is the subject of the questionnaire response
12286* [RelatedPerson](relatedperson.html): The patient this related person is related to
12287* [RequestOrchestration](requestorchestration.html): The identity of a patient to search for request orchestrations
12288* [ResearchSubject](researchsubject.html): Who or what is part of study
12289* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?
12290* [ServiceRequest](servicerequest.html): Search by subject - a patient
12291* [Specimen](specimen.html): The patient the specimen comes from
12292* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied
12293* [SupplyRequest](supplyrequest.html): The patient or subject for whom the supply is destined
12294* [Task](task.html): Search by patient
12295* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for
12296</b><br>
12297   * Type: <b>reference</b><br>
12298   * Path: <b>Account.subject.where(resolve() is Patient) | AdverseEvent.subject.where(resolve() is Patient) | AllergyIntolerance.patient | Appointment.participant.actor.where(resolve() is Patient) | Appointment.subject.where(resolve() is Patient) | AppointmentResponse.actor.where(resolve() is Patient) | AuditEvent.patient | Basic.subject.where(resolve() is Patient) | BodyStructure.patient | CarePlan.subject.where(resolve() is Patient) | CareTeam.subject.where(resolve() is Patient) | ChargeItem.subject.where(resolve() is Patient) | Claim.patient | ClaimResponse.patient | ClinicalImpression.subject.where(resolve() is Patient) | Communication.subject.where(resolve() is Patient) | CommunicationRequest.subject.where(resolve() is Patient) | Composition.subject.where(resolve() is Patient) | Condition.subject.where(resolve() is Patient) | Consent.subject.where(resolve() is Patient) | Contract.subject.where(resolve() is Patient) | Coverage.beneficiary | CoverageEligibilityRequest.patient | CoverageEligibilityResponse.patient | DetectedIssue.subject.where(resolve() is Patient) | DeviceRequest.subject.where(resolve() is Patient) | DeviceUsage.patient | DiagnosticReport.subject.where(resolve() is Patient) | DocumentReference.subject.where(resolve() is Patient) | Encounter.subject.where(resolve() is Patient) | EnrollmentRequest.candidate | EpisodeOfCare.patient | ExplanationOfBenefit.patient | FamilyMemberHistory.patient | Flag.subject.where(resolve() is Patient) | Goal.subject.where(resolve() is Patient) | GuidanceResponse.subject.where(resolve() is Patient) | ImagingSelection.subject.where(resolve() is Patient) | ImagingStudy.subject.where(resolve() is Patient) | Immunization.patient | ImmunizationEvaluation.patient | ImmunizationRecommendation.patient | Invoice.subject.where(resolve() is Patient) | List.subject.where(resolve() is Patient) | MeasureReport.subject.where(resolve() is Patient) | MedicationAdministration.subject.where(resolve() is Patient) | MedicationDispense.subject.where(resolve() is Patient) | MedicationRequest.subject.where(resolve() is Patient) | MedicationStatement.subject.where(resolve() is Patient) | MolecularSequence.subject.where(resolve() is Patient) | NutritionIntake.subject.where(resolve() is Patient) | NutritionOrder.subject.where(resolve() is Patient) | Observation.subject.where(resolve() is Patient) | Person.link.target.where(resolve() is Patient) | Procedure.subject.where(resolve() is Patient) | Provenance.patient | QuestionnaireResponse.subject.where(resolve() is Patient) | RelatedPerson.patient | RequestOrchestration.subject.where(resolve() is Patient) | ResearchSubject.subject.where(resolve() is Patient) | RiskAssessment.subject.where(resolve() is Patient) | ServiceRequest.subject.where(resolve() is Patient) | Specimen.subject.where(resolve() is Patient) | SupplyDelivery.patient | SupplyRequest.deliverFor | Task.for.where(resolve() is Patient) | VisionPrescription.patient</b><br>
12299   * </p>
12300   */
12301  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PATIENT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PATIENT);
12302
12303/**
12304   * Constant for fluent queries to be used to add include statements. Specifies
12305   * the path value of "<b>Contract:patient</b>".
12306   */
12307  public static final ca.uhn.fhir.model.api.Include INCLUDE_PATIENT = new ca.uhn.fhir.model.api.Include("Contract:patient").toLocked();
12308
12309
12310}
12311