001package org.hl7.fhir.r4.model;
002
003/*
004  Copyright (c) 2011+, HL7, Inc.
005  All rights reserved.
006  
007  Redistribution and use in source and binary forms, with or without modification, 
008  are permitted provided that the following conditions are met:
009  
010   * Redistributions of source code must retain the above copyright notice, this 
011     list of conditions and the following disclaimer.
012   * Redistributions in binary form must reproduce the above copyright notice, 
013     this list of conditions and the following disclaimer in the documentation 
014     and/or other materials provided with the distribution.
015   * Neither the name of HL7 nor the names of its contributors may be used to 
016     endorse or promote products derived from this software without specific 
017     prior written permission.
018  
019  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
020  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
021  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
022  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
023  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
024  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
025  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
026  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
027  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
028  POSSIBILITY OF SUCH DAMAGE.
029  
030*/
031
032// Generated on Sun, May 6, 2018 17:51-0400 for FHIR v3.4.0
033
034import java.util.*;
035
036import org.hl7.fhir.utilities.Utilities;
037import ca.uhn.fhir.model.api.annotation.ResourceDef;
038import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
039import ca.uhn.fhir.model.api.annotation.Child;
040import ca.uhn.fhir.model.api.annotation.ChildOrder;
041import ca.uhn.fhir.model.api.annotation.Description;
042import ca.uhn.fhir.model.api.annotation.Block;
043import org.hl7.fhir.instance.model.api.*;
044import org.hl7.fhir.exceptions.FHIRException;
045/**
046 * A physical entity which is the primary unit of operational and/or administrative interest in a study.
047 */
048@ResourceDef(name="ResearchSubject", profile="http://hl7.org/fhir/Profile/ResearchSubject")
049public class ResearchSubject extends DomainResource {
050
051    public enum ResearchSubjectStatus {
052        /**
053         * An identified person that can be considered for inclusion in a study.
054         */
055        CANDIDATE, 
056        /**
057         * A person that has met the eligibility criteria for inclusion in a study.
058         */
059        ELIGIBLE, 
060        /**
061         * A person is no longer receiving study intervention and/or being evaluated with tests and procedures according to the protocol, but they are being monitored on a protocol-prescribed schedule.
062         */
063        FOLLOWUP, 
064        /**
065         * A person who did not meet one or more criteria required for participation in a study is considered to have failed screening or
066is ineligible for the study.
067         */
068        INELIGIBLE, 
069        /**
070         * A person for whom registration was not completed
071         */
072        NOTREGISTERED, 
073        /**
074         * A person that has ended their participation on a study either because their treatment/observation is complete or through not
075responding, withdrawal, non-compliance and/or adverse event.
076         */
077        OFFSTUDY, 
078        /**
079         * A person that is enrolled or registered on a study.
080         */
081        ONSTUDY, 
082        /**
083         * The person is receiving the treatment or participating in an activity (e.g. yoga, diet, etc.) that the study is evaluating.
084         */
085        ONSTUDYINTERVENTION, 
086        /**
087         * The subject is being evaluated via tests and assessments according to the study calendar, but is not receiving any intervention. Note that this state is study-dependent and might not exist in all studies.  A synonym for this is "short-term follow-up".
088         */
089        ONSTUDYOBSERVATION, 
090        /**
091         * A person is pre-registered for a study.
092         */
093        PENDINGONSTUDY, 
094        /**
095         * A person that is potentially eligible for participation in the study.
096         */
097        POTENTIALCANDIDATE, 
098        /**
099         * A person who is being evaluated for eligibility for a study.
100         */
101        SCREENING, 
102        /**
103         * The person has withdrawn their participation in the study before registration.
104         */
105        WITHDRAWN, 
106        /**
107         * added to help the parsers with the generic types
108         */
109        NULL;
110        public static ResearchSubjectStatus fromCode(String codeString) throws FHIRException {
111            if (codeString == null || "".equals(codeString))
112                return null;
113        if ("candidate".equals(codeString))
114          return CANDIDATE;
115        if ("eligible".equals(codeString))
116          return ELIGIBLE;
117        if ("follow-up".equals(codeString))
118          return FOLLOWUP;
119        if ("ineligible".equals(codeString))
120          return INELIGIBLE;
121        if ("not-registered".equals(codeString))
122          return NOTREGISTERED;
123        if ("off-study".equals(codeString))
124          return OFFSTUDY;
125        if ("on-study".equals(codeString))
126          return ONSTUDY;
127        if ("on-study-intervention".equals(codeString))
128          return ONSTUDYINTERVENTION;
129        if ("on-study-observation".equals(codeString))
130          return ONSTUDYOBSERVATION;
131        if ("pending-on-study".equals(codeString))
132          return PENDINGONSTUDY;
133        if ("potential-candidate".equals(codeString))
134          return POTENTIALCANDIDATE;
135        if ("screening".equals(codeString))
136          return SCREENING;
137        if ("withdrawn".equals(codeString))
138          return WITHDRAWN;
139        if (Configuration.isAcceptInvalidEnums())
140          return null;
141        else
142          throw new FHIRException("Unknown ResearchSubjectStatus code '"+codeString+"'");
143        }
144        public String toCode() {
145          switch (this) {
146            case CANDIDATE: return "candidate";
147            case ELIGIBLE: return "eligible";
148            case FOLLOWUP: return "follow-up";
149            case INELIGIBLE: return "ineligible";
150            case NOTREGISTERED: return "not-registered";
151            case OFFSTUDY: return "off-study";
152            case ONSTUDY: return "on-study";
153            case ONSTUDYINTERVENTION: return "on-study-intervention";
154            case ONSTUDYOBSERVATION: return "on-study-observation";
155            case PENDINGONSTUDY: return "pending-on-study";
156            case POTENTIALCANDIDATE: return "potential-candidate";
157            case SCREENING: return "screening";
158            case WITHDRAWN: return "withdrawn";
159            default: return "?";
160          }
161        }
162        public String getSystem() {
163          switch (this) {
164            case CANDIDATE: return "http://hl7.org/fhir/research-subject-status";
165            case ELIGIBLE: return "http://hl7.org/fhir/research-subject-status";
166            case FOLLOWUP: return "http://hl7.org/fhir/research-subject-status";
167            case INELIGIBLE: return "http://hl7.org/fhir/research-subject-status";
168            case NOTREGISTERED: return "http://hl7.org/fhir/research-subject-status";
169            case OFFSTUDY: return "http://hl7.org/fhir/research-subject-status";
170            case ONSTUDY: return "http://hl7.org/fhir/research-subject-status";
171            case ONSTUDYINTERVENTION: return "http://hl7.org/fhir/research-subject-status";
172            case ONSTUDYOBSERVATION: return "http://hl7.org/fhir/research-subject-status";
173            case PENDINGONSTUDY: return "http://hl7.org/fhir/research-subject-status";
174            case POTENTIALCANDIDATE: return "http://hl7.org/fhir/research-subject-status";
175            case SCREENING: return "http://hl7.org/fhir/research-subject-status";
176            case WITHDRAWN: return "http://hl7.org/fhir/research-subject-status";
177            default: return "?";
178          }
179        }
180        public String getDefinition() {
181          switch (this) {
182            case CANDIDATE: return "An identified person that can be considered for inclusion in a study.";
183            case ELIGIBLE: return "A person that has met the eligibility criteria for inclusion in a study.";
184            case FOLLOWUP: return "A person is no longer receiving study intervention and/or being evaluated with tests and procedures according to the protocol, but they are being monitored on a protocol-prescribed schedule.";
185            case INELIGIBLE: return "A person who did not meet one or more criteria required for participation in a study is considered to have failed screening or\nis ineligible for the study.";
186            case NOTREGISTERED: return "A person for whom registration was not completed";
187            case OFFSTUDY: return "A person that has ended their participation on a study either because their treatment/observation is complete or through not\nresponding, withdrawal, non-compliance and/or adverse event.";
188            case ONSTUDY: return "A person that is enrolled or registered on a study.";
189            case ONSTUDYINTERVENTION: return "The person is receiving the treatment or participating in an activity (e.g. yoga, diet, etc.) that the study is evaluating.";
190            case ONSTUDYOBSERVATION: return "The subject is being evaluated via tests and assessments according to the study calendar, but is not receiving any intervention. Note that this state is study-dependent and might not exist in all studies.  A synonym for this is \"short-term follow-up\".";
191            case PENDINGONSTUDY: return "A person is pre-registered for a study.";
192            case POTENTIALCANDIDATE: return "A person that is potentially eligible for participation in the study.";
193            case SCREENING: return "A person who is being evaluated for eligibility for a study.";
194            case WITHDRAWN: return "The person has withdrawn their participation in the study before registration.";
195            default: return "?";
196          }
197        }
198        public String getDisplay() {
199          switch (this) {
200            case CANDIDATE: return "Candidate";
201            case ELIGIBLE: return "Eligible";
202            case FOLLOWUP: return "Follow-up";
203            case INELIGIBLE: return "Ineligible";
204            case NOTREGISTERED: return "Not Registered";
205            case OFFSTUDY: return "Off-study";
206            case ONSTUDY: return "On-study";
207            case ONSTUDYINTERVENTION: return "On-study-intervention";
208            case ONSTUDYOBSERVATION: return "On-study-observation";
209            case PENDINGONSTUDY: return "Pending on-study";
210            case POTENTIALCANDIDATE: return "Potential Candidate";
211            case SCREENING: return "Screening";
212            case WITHDRAWN: return "Withdrawn";
213            default: return "?";
214          }
215        }
216    }
217
218  public static class ResearchSubjectStatusEnumFactory implements EnumFactory<ResearchSubjectStatus> {
219    public ResearchSubjectStatus fromCode(String codeString) throws IllegalArgumentException {
220      if (codeString == null || "".equals(codeString))
221            if (codeString == null || "".equals(codeString))
222                return null;
223        if ("candidate".equals(codeString))
224          return ResearchSubjectStatus.CANDIDATE;
225        if ("eligible".equals(codeString))
226          return ResearchSubjectStatus.ELIGIBLE;
227        if ("follow-up".equals(codeString))
228          return ResearchSubjectStatus.FOLLOWUP;
229        if ("ineligible".equals(codeString))
230          return ResearchSubjectStatus.INELIGIBLE;
231        if ("not-registered".equals(codeString))
232          return ResearchSubjectStatus.NOTREGISTERED;
233        if ("off-study".equals(codeString))
234          return ResearchSubjectStatus.OFFSTUDY;
235        if ("on-study".equals(codeString))
236          return ResearchSubjectStatus.ONSTUDY;
237        if ("on-study-intervention".equals(codeString))
238          return ResearchSubjectStatus.ONSTUDYINTERVENTION;
239        if ("on-study-observation".equals(codeString))
240          return ResearchSubjectStatus.ONSTUDYOBSERVATION;
241        if ("pending-on-study".equals(codeString))
242          return ResearchSubjectStatus.PENDINGONSTUDY;
243        if ("potential-candidate".equals(codeString))
244          return ResearchSubjectStatus.POTENTIALCANDIDATE;
245        if ("screening".equals(codeString))
246          return ResearchSubjectStatus.SCREENING;
247        if ("withdrawn".equals(codeString))
248          return ResearchSubjectStatus.WITHDRAWN;
249        throw new IllegalArgumentException("Unknown ResearchSubjectStatus code '"+codeString+"'");
250        }
251        public Enumeration<ResearchSubjectStatus> fromType(Base code) throws FHIRException {
252          if (code == null)
253            return null;
254          if (code.isEmpty())
255            return new Enumeration<ResearchSubjectStatus>(this);
256          String codeString = ((PrimitiveType) code).asStringValue();
257          if (codeString == null || "".equals(codeString))
258            return null;
259        if ("candidate".equals(codeString))
260          return new Enumeration<ResearchSubjectStatus>(this, ResearchSubjectStatus.CANDIDATE);
261        if ("eligible".equals(codeString))
262          return new Enumeration<ResearchSubjectStatus>(this, ResearchSubjectStatus.ELIGIBLE);
263        if ("follow-up".equals(codeString))
264          return new Enumeration<ResearchSubjectStatus>(this, ResearchSubjectStatus.FOLLOWUP);
265        if ("ineligible".equals(codeString))
266          return new Enumeration<ResearchSubjectStatus>(this, ResearchSubjectStatus.INELIGIBLE);
267        if ("not-registered".equals(codeString))
268          return new Enumeration<ResearchSubjectStatus>(this, ResearchSubjectStatus.NOTREGISTERED);
269        if ("off-study".equals(codeString))
270          return new Enumeration<ResearchSubjectStatus>(this, ResearchSubjectStatus.OFFSTUDY);
271        if ("on-study".equals(codeString))
272          return new Enumeration<ResearchSubjectStatus>(this, ResearchSubjectStatus.ONSTUDY);
273        if ("on-study-intervention".equals(codeString))
274          return new Enumeration<ResearchSubjectStatus>(this, ResearchSubjectStatus.ONSTUDYINTERVENTION);
275        if ("on-study-observation".equals(codeString))
276          return new Enumeration<ResearchSubjectStatus>(this, ResearchSubjectStatus.ONSTUDYOBSERVATION);
277        if ("pending-on-study".equals(codeString))
278          return new Enumeration<ResearchSubjectStatus>(this, ResearchSubjectStatus.PENDINGONSTUDY);
279        if ("potential-candidate".equals(codeString))
280          return new Enumeration<ResearchSubjectStatus>(this, ResearchSubjectStatus.POTENTIALCANDIDATE);
281        if ("screening".equals(codeString))
282          return new Enumeration<ResearchSubjectStatus>(this, ResearchSubjectStatus.SCREENING);
283        if ("withdrawn".equals(codeString))
284          return new Enumeration<ResearchSubjectStatus>(this, ResearchSubjectStatus.WITHDRAWN);
285        throw new FHIRException("Unknown ResearchSubjectStatus code '"+codeString+"'");
286        }
287    public String toCode(ResearchSubjectStatus code) {
288      if (code == ResearchSubjectStatus.CANDIDATE)
289        return "candidate";
290      if (code == ResearchSubjectStatus.ELIGIBLE)
291        return "eligible";
292      if (code == ResearchSubjectStatus.FOLLOWUP)
293        return "follow-up";
294      if (code == ResearchSubjectStatus.INELIGIBLE)
295        return "ineligible";
296      if (code == ResearchSubjectStatus.NOTREGISTERED)
297        return "not-registered";
298      if (code == ResearchSubjectStatus.OFFSTUDY)
299        return "off-study";
300      if (code == ResearchSubjectStatus.ONSTUDY)
301        return "on-study";
302      if (code == ResearchSubjectStatus.ONSTUDYINTERVENTION)
303        return "on-study-intervention";
304      if (code == ResearchSubjectStatus.ONSTUDYOBSERVATION)
305        return "on-study-observation";
306      if (code == ResearchSubjectStatus.PENDINGONSTUDY)
307        return "pending-on-study";
308      if (code == ResearchSubjectStatus.POTENTIALCANDIDATE)
309        return "potential-candidate";
310      if (code == ResearchSubjectStatus.SCREENING)
311        return "screening";
312      if (code == ResearchSubjectStatus.WITHDRAWN)
313        return "withdrawn";
314      return "?";
315      }
316    public String toSystem(ResearchSubjectStatus code) {
317      return code.getSystem();
318      }
319    }
320
321    /**
322     * Identifiers assigned to this research subject for a study.
323     */
324    @Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
325    @Description(shortDefinition="Business Identifier for research subject in a study", formalDefinition="Identifiers assigned to this research subject for a study." )
326    protected List<Identifier> identifier;
327
328    /**
329     * The current state of the subject.
330     */
331    @Child(name = "status", type = {CodeType.class}, order=1, min=1, max=1, modifier=true, summary=true)
332    @Description(shortDefinition="candidate | eligible | follow-up | ineligible | not-registered | off-study | on-study | on-study-intervention | on-study-observation | pending-on-study | potential-candidate | screening | withdrawn", formalDefinition="The current state of the subject." )
333    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/research-subject-status")
334    protected Enumeration<ResearchSubjectStatus> status;
335
336    /**
337     * The dates the subject began and ended their participation in the study.
338     */
339    @Child(name = "period", type = {Period.class}, order=2, min=0, max=1, modifier=false, summary=true)
340    @Description(shortDefinition="Start and end of participation", formalDefinition="The dates the subject began and ended their participation in the study." )
341    protected Period period;
342
343    /**
344     * Reference to the study the subject is participating in.
345     */
346    @Child(name = "study", type = {ResearchStudy.class}, order=3, min=1, max=1, modifier=false, summary=true)
347    @Description(shortDefinition="Study subject is part of", formalDefinition="Reference to the study the subject is participating in." )
348    protected Reference study;
349
350    /**
351     * The actual object that is the target of the reference (Reference to the study the subject is participating in.)
352     */
353    protected ResearchStudy studyTarget;
354
355    /**
356     * The record of the person or animal who is involved in the study.
357     */
358    @Child(name = "individual", type = {Patient.class}, order=4, min=1, max=1, modifier=false, summary=true)
359    @Description(shortDefinition="Who is part of study", formalDefinition="The record of the person or animal who is involved in the study." )
360    protected Reference individual;
361
362    /**
363     * The actual object that is the target of the reference (The record of the person or animal who is involved in the study.)
364     */
365    protected Patient individualTarget;
366
367    /**
368     * The name of the arm in the study the subject is expected to follow as part of this study.
369     */
370    @Child(name = "assignedArm", type = {StringType.class}, order=5, min=0, max=1, modifier=false, summary=false)
371    @Description(shortDefinition="What path should be followed", formalDefinition="The name of the arm in the study the subject is expected to follow as part of this study." )
372    protected StringType assignedArm;
373
374    /**
375     * The name of the arm in the study the subject actually followed as part of this study.
376     */
377    @Child(name = "actualArm", type = {StringType.class}, order=6, min=0, max=1, modifier=false, summary=false)
378    @Description(shortDefinition="What path was followed", formalDefinition="The name of the arm in the study the subject actually followed as part of this study." )
379    protected StringType actualArm;
380
381    /**
382     * A record of the patient's informed agreement to participate in the study.
383     */
384    @Child(name = "consent", type = {Consent.class}, order=7, min=0, max=1, modifier=false, summary=false)
385    @Description(shortDefinition="Agreement to participate in study", formalDefinition="A record of the patient's informed agreement to participate in the study." )
386    protected Reference consent;
387
388    /**
389     * The actual object that is the target of the reference (A record of the patient's informed agreement to participate in the study.)
390     */
391    protected Consent consentTarget;
392
393    private static final long serialVersionUID = -884133739L;
394
395  /**
396   * Constructor
397   */
398    public ResearchSubject() {
399      super();
400    }
401
402  /**
403   * Constructor
404   */
405    public ResearchSubject(Enumeration<ResearchSubjectStatus> status, Reference study, Reference individual) {
406      super();
407      this.status = status;
408      this.study = study;
409      this.individual = individual;
410    }
411
412    /**
413     * @return {@link #identifier} (Identifiers assigned to this research subject for a study.)
414     */
415    public List<Identifier> getIdentifier() { 
416      if (this.identifier == null)
417        this.identifier = new ArrayList<Identifier>();
418      return this.identifier;
419    }
420
421    /**
422     * @return Returns a reference to <code>this</code> for easy method chaining
423     */
424    public ResearchSubject setIdentifier(List<Identifier> theIdentifier) { 
425      this.identifier = theIdentifier;
426      return this;
427    }
428
429    public boolean hasIdentifier() { 
430      if (this.identifier == null)
431        return false;
432      for (Identifier item : this.identifier)
433        if (!item.isEmpty())
434          return true;
435      return false;
436    }
437
438    public Identifier addIdentifier() { //3
439      Identifier t = new Identifier();
440      if (this.identifier == null)
441        this.identifier = new ArrayList<Identifier>();
442      this.identifier.add(t);
443      return t;
444    }
445
446    public ResearchSubject addIdentifier(Identifier t) { //3
447      if (t == null)
448        return this;
449      if (this.identifier == null)
450        this.identifier = new ArrayList<Identifier>();
451      this.identifier.add(t);
452      return this;
453    }
454
455    /**
456     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist
457     */
458    public Identifier getIdentifierFirstRep() { 
459      if (getIdentifier().isEmpty()) {
460        addIdentifier();
461      }
462      return getIdentifier().get(0);
463    }
464
465    /**
466     * @return {@link #status} (The current state of the subject.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
467     */
468    public Enumeration<ResearchSubjectStatus> getStatusElement() { 
469      if (this.status == null)
470        if (Configuration.errorOnAutoCreate())
471          throw new Error("Attempt to auto-create ResearchSubject.status");
472        else if (Configuration.doAutoCreate())
473          this.status = new Enumeration<ResearchSubjectStatus>(new ResearchSubjectStatusEnumFactory()); // bb
474      return this.status;
475    }
476
477    public boolean hasStatusElement() { 
478      return this.status != null && !this.status.isEmpty();
479    }
480
481    public boolean hasStatus() { 
482      return this.status != null && !this.status.isEmpty();
483    }
484
485    /**
486     * @param value {@link #status} (The current state of the subject.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
487     */
488    public ResearchSubject setStatusElement(Enumeration<ResearchSubjectStatus> value) { 
489      this.status = value;
490      return this;
491    }
492
493    /**
494     * @return The current state of the subject.
495     */
496    public ResearchSubjectStatus getStatus() { 
497      return this.status == null ? null : this.status.getValue();
498    }
499
500    /**
501     * @param value The current state of the subject.
502     */
503    public ResearchSubject setStatus(ResearchSubjectStatus value) { 
504        if (this.status == null)
505          this.status = new Enumeration<ResearchSubjectStatus>(new ResearchSubjectStatusEnumFactory());
506        this.status.setValue(value);
507      return this;
508    }
509
510    /**
511     * @return {@link #period} (The dates the subject began and ended their participation in the study.)
512     */
513    public Period getPeriod() { 
514      if (this.period == null)
515        if (Configuration.errorOnAutoCreate())
516          throw new Error("Attempt to auto-create ResearchSubject.period");
517        else if (Configuration.doAutoCreate())
518          this.period = new Period(); // cc
519      return this.period;
520    }
521
522    public boolean hasPeriod() { 
523      return this.period != null && !this.period.isEmpty();
524    }
525
526    /**
527     * @param value {@link #period} (The dates the subject began and ended their participation in the study.)
528     */
529    public ResearchSubject setPeriod(Period value) { 
530      this.period = value;
531      return this;
532    }
533
534    /**
535     * @return {@link #study} (Reference to the study the subject is participating in.)
536     */
537    public Reference getStudy() { 
538      if (this.study == null)
539        if (Configuration.errorOnAutoCreate())
540          throw new Error("Attempt to auto-create ResearchSubject.study");
541        else if (Configuration.doAutoCreate())
542          this.study = new Reference(); // cc
543      return this.study;
544    }
545
546    public boolean hasStudy() { 
547      return this.study != null && !this.study.isEmpty();
548    }
549
550    /**
551     * @param value {@link #study} (Reference to the study the subject is participating in.)
552     */
553    public ResearchSubject setStudy(Reference value) { 
554      this.study = value;
555      return this;
556    }
557
558    /**
559     * @return {@link #study} The actual object that is the target of the reference. The reference library doesn't populate this, but you can use it to hold the resource if you resolve it. (Reference to the study the subject is participating in.)
560     */
561    public ResearchStudy getStudyTarget() { 
562      if (this.studyTarget == null)
563        if (Configuration.errorOnAutoCreate())
564          throw new Error("Attempt to auto-create ResearchSubject.study");
565        else if (Configuration.doAutoCreate())
566          this.studyTarget = new ResearchStudy(); // aa
567      return this.studyTarget;
568    }
569
570    /**
571     * @param value {@link #study} The actual object that is the target of the reference. The reference library doesn't use these, but you can use it to hold the resource if you resolve it. (Reference to the study the subject is participating in.)
572     */
573    public ResearchSubject setStudyTarget(ResearchStudy value) { 
574      this.studyTarget = value;
575      return this;
576    }
577
578    /**
579     * @return {@link #individual} (The record of the person or animal who is involved in the study.)
580     */
581    public Reference getIndividual() { 
582      if (this.individual == null)
583        if (Configuration.errorOnAutoCreate())
584          throw new Error("Attempt to auto-create ResearchSubject.individual");
585        else if (Configuration.doAutoCreate())
586          this.individual = new Reference(); // cc
587      return this.individual;
588    }
589
590    public boolean hasIndividual() { 
591      return this.individual != null && !this.individual.isEmpty();
592    }
593
594    /**
595     * @param value {@link #individual} (The record of the person or animal who is involved in the study.)
596     */
597    public ResearchSubject setIndividual(Reference value) { 
598      this.individual = value;
599      return this;
600    }
601
602    /**
603     * @return {@link #individual} The actual object that is the target of the reference. The reference library doesn't populate this, but you can use it to hold the resource if you resolve it. (The record of the person or animal who is involved in the study.)
604     */
605    public Patient getIndividualTarget() { 
606      if (this.individualTarget == null)
607        if (Configuration.errorOnAutoCreate())
608          throw new Error("Attempt to auto-create ResearchSubject.individual");
609        else if (Configuration.doAutoCreate())
610          this.individualTarget = new Patient(); // aa
611      return this.individualTarget;
612    }
613
614    /**
615     * @param value {@link #individual} The actual object that is the target of the reference. The reference library doesn't use these, but you can use it to hold the resource if you resolve it. (The record of the person or animal who is involved in the study.)
616     */
617    public ResearchSubject setIndividualTarget(Patient value) { 
618      this.individualTarget = value;
619      return this;
620    }
621
622    /**
623     * @return {@link #assignedArm} (The name of the arm in the study the subject is expected to follow as part of this study.). This is the underlying object with id, value and extensions. The accessor "getAssignedArm" gives direct access to the value
624     */
625    public StringType getAssignedArmElement() { 
626      if (this.assignedArm == null)
627        if (Configuration.errorOnAutoCreate())
628          throw new Error("Attempt to auto-create ResearchSubject.assignedArm");
629        else if (Configuration.doAutoCreate())
630          this.assignedArm = new StringType(); // bb
631      return this.assignedArm;
632    }
633
634    public boolean hasAssignedArmElement() { 
635      return this.assignedArm != null && !this.assignedArm.isEmpty();
636    }
637
638    public boolean hasAssignedArm() { 
639      return this.assignedArm != null && !this.assignedArm.isEmpty();
640    }
641
642    /**
643     * @param value {@link #assignedArm} (The name of the arm in the study the subject is expected to follow as part of this study.). This is the underlying object with id, value and extensions. The accessor "getAssignedArm" gives direct access to the value
644     */
645    public ResearchSubject setAssignedArmElement(StringType value) { 
646      this.assignedArm = value;
647      return this;
648    }
649
650    /**
651     * @return The name of the arm in the study the subject is expected to follow as part of this study.
652     */
653    public String getAssignedArm() { 
654      return this.assignedArm == null ? null : this.assignedArm.getValue();
655    }
656
657    /**
658     * @param value The name of the arm in the study the subject is expected to follow as part of this study.
659     */
660    public ResearchSubject setAssignedArm(String value) { 
661      if (Utilities.noString(value))
662        this.assignedArm = null;
663      else {
664        if (this.assignedArm == null)
665          this.assignedArm = new StringType();
666        this.assignedArm.setValue(value);
667      }
668      return this;
669    }
670
671    /**
672     * @return {@link #actualArm} (The name of the arm in the study the subject actually followed as part of this study.). This is the underlying object with id, value and extensions. The accessor "getActualArm" gives direct access to the value
673     */
674    public StringType getActualArmElement() { 
675      if (this.actualArm == null)
676        if (Configuration.errorOnAutoCreate())
677          throw new Error("Attempt to auto-create ResearchSubject.actualArm");
678        else if (Configuration.doAutoCreate())
679          this.actualArm = new StringType(); // bb
680      return this.actualArm;
681    }
682
683    public boolean hasActualArmElement() { 
684      return this.actualArm != null && !this.actualArm.isEmpty();
685    }
686
687    public boolean hasActualArm() { 
688      return this.actualArm != null && !this.actualArm.isEmpty();
689    }
690
691    /**
692     * @param value {@link #actualArm} (The name of the arm in the study the subject actually followed as part of this study.). This is the underlying object with id, value and extensions. The accessor "getActualArm" gives direct access to the value
693     */
694    public ResearchSubject setActualArmElement(StringType value) { 
695      this.actualArm = value;
696      return this;
697    }
698
699    /**
700     * @return The name of the arm in the study the subject actually followed as part of this study.
701     */
702    public String getActualArm() { 
703      return this.actualArm == null ? null : this.actualArm.getValue();
704    }
705
706    /**
707     * @param value The name of the arm in the study the subject actually followed as part of this study.
708     */
709    public ResearchSubject setActualArm(String value) { 
710      if (Utilities.noString(value))
711        this.actualArm = null;
712      else {
713        if (this.actualArm == null)
714          this.actualArm = new StringType();
715        this.actualArm.setValue(value);
716      }
717      return this;
718    }
719
720    /**
721     * @return {@link #consent} (A record of the patient's informed agreement to participate in the study.)
722     */
723    public Reference getConsent() { 
724      if (this.consent == null)
725        if (Configuration.errorOnAutoCreate())
726          throw new Error("Attempt to auto-create ResearchSubject.consent");
727        else if (Configuration.doAutoCreate())
728          this.consent = new Reference(); // cc
729      return this.consent;
730    }
731
732    public boolean hasConsent() { 
733      return this.consent != null && !this.consent.isEmpty();
734    }
735
736    /**
737     * @param value {@link #consent} (A record of the patient's informed agreement to participate in the study.)
738     */
739    public ResearchSubject setConsent(Reference value) { 
740      this.consent = value;
741      return this;
742    }
743
744    /**
745     * @return {@link #consent} The actual object that is the target of the reference. The reference library doesn't populate this, but you can use it to hold the resource if you resolve it. (A record of the patient's informed agreement to participate in the study.)
746     */
747    public Consent getConsentTarget() { 
748      if (this.consentTarget == null)
749        if (Configuration.errorOnAutoCreate())
750          throw new Error("Attempt to auto-create ResearchSubject.consent");
751        else if (Configuration.doAutoCreate())
752          this.consentTarget = new Consent(); // aa
753      return this.consentTarget;
754    }
755
756    /**
757     * @param value {@link #consent} The actual object that is the target of the reference. The reference library doesn't use these, but you can use it to hold the resource if you resolve it. (A record of the patient's informed agreement to participate in the study.)
758     */
759    public ResearchSubject setConsentTarget(Consent value) { 
760      this.consentTarget = value;
761      return this;
762    }
763
764      protected void listChildren(List<Property> children) {
765        super.listChildren(children);
766        children.add(new Property("identifier", "Identifier", "Identifiers assigned to this research subject for a study.", 0, java.lang.Integer.MAX_VALUE, identifier));
767        children.add(new Property("status", "code", "The current state of the subject.", 0, 1, status));
768        children.add(new Property("period", "Period", "The dates the subject began and ended their participation in the study.", 0, 1, period));
769        children.add(new Property("study", "Reference(ResearchStudy)", "Reference to the study the subject is participating in.", 0, 1, study));
770        children.add(new Property("individual", "Reference(Patient)", "The record of the person or animal who is involved in the study.", 0, 1, individual));
771        children.add(new Property("assignedArm", "string", "The name of the arm in the study the subject is expected to follow as part of this study.", 0, 1, assignedArm));
772        children.add(new Property("actualArm", "string", "The name of the arm in the study the subject actually followed as part of this study.", 0, 1, actualArm));
773        children.add(new Property("consent", "Reference(Consent)", "A record of the patient's informed agreement to participate in the study.", 0, 1, consent));
774      }
775
776      @Override
777      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
778        switch (_hash) {
779        case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "Identifiers assigned to this research subject for a study.", 0, java.lang.Integer.MAX_VALUE, identifier);
780        case -892481550: /*status*/  return new Property("status", "code", "The current state of the subject.", 0, 1, status);
781        case -991726143: /*period*/  return new Property("period", "Period", "The dates the subject began and ended their participation in the study.", 0, 1, period);
782        case 109776329: /*study*/  return new Property("study", "Reference(ResearchStudy)", "Reference to the study the subject is participating in.", 0, 1, study);
783        case -46292327: /*individual*/  return new Property("individual", "Reference(Patient)", "The record of the person or animal who is involved in the study.", 0, 1, individual);
784        case 1741912494: /*assignedArm*/  return new Property("assignedArm", "string", "The name of the arm in the study the subject is expected to follow as part of this study.", 0, 1, assignedArm);
785        case 528827886: /*actualArm*/  return new Property("actualArm", "string", "The name of the arm in the study the subject actually followed as part of this study.", 0, 1, actualArm);
786        case 951500826: /*consent*/  return new Property("consent", "Reference(Consent)", "A record of the patient's informed agreement to participate in the study.", 0, 1, consent);
787        default: return super.getNamedProperty(_hash, _name, _checkValid);
788        }
789
790      }
791
792      @Override
793      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
794        switch (hash) {
795        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
796        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<ResearchSubjectStatus>
797        case -991726143: /*period*/ return this.period == null ? new Base[0] : new Base[] {this.period}; // Period
798        case 109776329: /*study*/ return this.study == null ? new Base[0] : new Base[] {this.study}; // Reference
799        case -46292327: /*individual*/ return this.individual == null ? new Base[0] : new Base[] {this.individual}; // Reference
800        case 1741912494: /*assignedArm*/ return this.assignedArm == null ? new Base[0] : new Base[] {this.assignedArm}; // StringType
801        case 528827886: /*actualArm*/ return this.actualArm == null ? new Base[0] : new Base[] {this.actualArm}; // StringType
802        case 951500826: /*consent*/ return this.consent == null ? new Base[0] : new Base[] {this.consent}; // Reference
803        default: return super.getProperty(hash, name, checkValid);
804        }
805
806      }
807
808      @Override
809      public Base setProperty(int hash, String name, Base value) throws FHIRException {
810        switch (hash) {
811        case -1618432855: // identifier
812          this.getIdentifier().add(castToIdentifier(value)); // Identifier
813          return value;
814        case -892481550: // status
815          value = new ResearchSubjectStatusEnumFactory().fromType(castToCode(value));
816          this.status = (Enumeration) value; // Enumeration<ResearchSubjectStatus>
817          return value;
818        case -991726143: // period
819          this.period = castToPeriod(value); // Period
820          return value;
821        case 109776329: // study
822          this.study = castToReference(value); // Reference
823          return value;
824        case -46292327: // individual
825          this.individual = castToReference(value); // Reference
826          return value;
827        case 1741912494: // assignedArm
828          this.assignedArm = castToString(value); // StringType
829          return value;
830        case 528827886: // actualArm
831          this.actualArm = castToString(value); // StringType
832          return value;
833        case 951500826: // consent
834          this.consent = castToReference(value); // Reference
835          return value;
836        default: return super.setProperty(hash, name, value);
837        }
838
839      }
840
841      @Override
842      public Base setProperty(String name, Base value) throws FHIRException {
843        if (name.equals("identifier")) {
844          this.getIdentifier().add(castToIdentifier(value));
845        } else if (name.equals("status")) {
846          value = new ResearchSubjectStatusEnumFactory().fromType(castToCode(value));
847          this.status = (Enumeration) value; // Enumeration<ResearchSubjectStatus>
848        } else if (name.equals("period")) {
849          this.period = castToPeriod(value); // Period
850        } else if (name.equals("study")) {
851          this.study = castToReference(value); // Reference
852        } else if (name.equals("individual")) {
853          this.individual = castToReference(value); // Reference
854        } else if (name.equals("assignedArm")) {
855          this.assignedArm = castToString(value); // StringType
856        } else if (name.equals("actualArm")) {
857          this.actualArm = castToString(value); // StringType
858        } else if (name.equals("consent")) {
859          this.consent = castToReference(value); // Reference
860        } else
861          return super.setProperty(name, value);
862        return value;
863      }
864
865      @Override
866      public Base makeProperty(int hash, String name) throws FHIRException {
867        switch (hash) {
868        case -1618432855:  return addIdentifier(); 
869        case -892481550:  return getStatusElement();
870        case -991726143:  return getPeriod(); 
871        case 109776329:  return getStudy(); 
872        case -46292327:  return getIndividual(); 
873        case 1741912494:  return getAssignedArmElement();
874        case 528827886:  return getActualArmElement();
875        case 951500826:  return getConsent(); 
876        default: return super.makeProperty(hash, name);
877        }
878
879      }
880
881      @Override
882      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
883        switch (hash) {
884        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
885        case -892481550: /*status*/ return new String[] {"code"};
886        case -991726143: /*period*/ return new String[] {"Period"};
887        case 109776329: /*study*/ return new String[] {"Reference"};
888        case -46292327: /*individual*/ return new String[] {"Reference"};
889        case 1741912494: /*assignedArm*/ return new String[] {"string"};
890        case 528827886: /*actualArm*/ return new String[] {"string"};
891        case 951500826: /*consent*/ return new String[] {"Reference"};
892        default: return super.getTypesForProperty(hash, name);
893        }
894
895      }
896
897      @Override
898      public Base addChild(String name) throws FHIRException {
899        if (name.equals("identifier")) {
900          return addIdentifier();
901        }
902        else if (name.equals("status")) {
903          throw new FHIRException("Cannot call addChild on a primitive type ResearchSubject.status");
904        }
905        else if (name.equals("period")) {
906          this.period = new Period();
907          return this.period;
908        }
909        else if (name.equals("study")) {
910          this.study = new Reference();
911          return this.study;
912        }
913        else if (name.equals("individual")) {
914          this.individual = new Reference();
915          return this.individual;
916        }
917        else if (name.equals("assignedArm")) {
918          throw new FHIRException("Cannot call addChild on a primitive type ResearchSubject.assignedArm");
919        }
920        else if (name.equals("actualArm")) {
921          throw new FHIRException("Cannot call addChild on a primitive type ResearchSubject.actualArm");
922        }
923        else if (name.equals("consent")) {
924          this.consent = new Reference();
925          return this.consent;
926        }
927        else
928          return super.addChild(name);
929      }
930
931  public String fhirType() {
932    return "ResearchSubject";
933
934  }
935
936      public ResearchSubject copy() {
937        ResearchSubject dst = new ResearchSubject();
938        copyValues(dst);
939        if (identifier != null) {
940          dst.identifier = new ArrayList<Identifier>();
941          for (Identifier i : identifier)
942            dst.identifier.add(i.copy());
943        };
944        dst.status = status == null ? null : status.copy();
945        dst.period = period == null ? null : period.copy();
946        dst.study = study == null ? null : study.copy();
947        dst.individual = individual == null ? null : individual.copy();
948        dst.assignedArm = assignedArm == null ? null : assignedArm.copy();
949        dst.actualArm = actualArm == null ? null : actualArm.copy();
950        dst.consent = consent == null ? null : consent.copy();
951        return dst;
952      }
953
954      protected ResearchSubject typedCopy() {
955        return copy();
956      }
957
958      @Override
959      public boolean equalsDeep(Base other_) {
960        if (!super.equalsDeep(other_))
961          return false;
962        if (!(other_ instanceof ResearchSubject))
963          return false;
964        ResearchSubject o = (ResearchSubject) other_;
965        return compareDeep(identifier, o.identifier, true) && compareDeep(status, o.status, true) && compareDeep(period, o.period, true)
966           && compareDeep(study, o.study, true) && compareDeep(individual, o.individual, true) && compareDeep(assignedArm, o.assignedArm, true)
967           && compareDeep(actualArm, o.actualArm, true) && compareDeep(consent, o.consent, true);
968      }
969
970      @Override
971      public boolean equalsShallow(Base other_) {
972        if (!super.equalsShallow(other_))
973          return false;
974        if (!(other_ instanceof ResearchSubject))
975          return false;
976        ResearchSubject o = (ResearchSubject) other_;
977        return compareValues(status, o.status, true) && compareValues(assignedArm, o.assignedArm, true) && compareValues(actualArm, o.actualArm, true)
978          ;
979      }
980
981      public boolean isEmpty() {
982        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, status, period
983          , study, individual, assignedArm, actualArm, consent);
984      }
985
986  @Override
987  public ResourceType getResourceType() {
988    return ResourceType.ResearchSubject;
989   }
990
991 /**
992   * Search parameter: <b>date</b>
993   * <p>
994   * Description: <b>Start and end of participation</b><br>
995   * Type: <b>date</b><br>
996   * Path: <b>ResearchSubject.period</b><br>
997   * </p>
998   */
999  @SearchParamDefinition(name="date", path="ResearchSubject.period", description="Start and end of participation", type="date" )
1000  public static final String SP_DATE = "date";
1001 /**
1002   * <b>Fluent Client</b> search parameter constant for <b>date</b>
1003   * <p>
1004   * Description: <b>Start and end of participation</b><br>
1005   * Type: <b>date</b><br>
1006   * Path: <b>ResearchSubject.period</b><br>
1007   * </p>
1008   */
1009  public static final ca.uhn.fhir.rest.gclient.DateClientParam DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_DATE);
1010
1011 /**
1012   * Search parameter: <b>identifier</b>
1013   * <p>
1014   * Description: <b>Business Identifier for research subject in a study</b><br>
1015   * Type: <b>token</b><br>
1016   * Path: <b>ResearchSubject.identifier</b><br>
1017   * </p>
1018   */
1019  @SearchParamDefinition(name="identifier", path="ResearchSubject.identifier", description="Business Identifier for research subject in a study", type="token" )
1020  public static final String SP_IDENTIFIER = "identifier";
1021 /**
1022   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
1023   * <p>
1024   * Description: <b>Business Identifier for research subject in a study</b><br>
1025   * Type: <b>token</b><br>
1026   * Path: <b>ResearchSubject.identifier</b><br>
1027   * </p>
1028   */
1029  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
1030
1031 /**
1032   * Search parameter: <b>study</b>
1033   * <p>
1034   * Description: <b>Study subject is part of</b><br>
1035   * Type: <b>reference</b><br>
1036   * Path: <b>ResearchSubject.study</b><br>
1037   * </p>
1038   */
1039  @SearchParamDefinition(name="study", path="ResearchSubject.study", description="Study subject is part of", type="reference", target={ResearchStudy.class } )
1040  public static final String SP_STUDY = "study";
1041 /**
1042   * <b>Fluent Client</b> search parameter constant for <b>study</b>
1043   * <p>
1044   * Description: <b>Study subject is part of</b><br>
1045   * Type: <b>reference</b><br>
1046   * Path: <b>ResearchSubject.study</b><br>
1047   * </p>
1048   */
1049  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam STUDY = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_STUDY);
1050
1051/**
1052   * Constant for fluent queries to be used to add include statements. Specifies
1053   * the path value of "<b>ResearchSubject:study</b>".
1054   */
1055  public static final ca.uhn.fhir.model.api.Include INCLUDE_STUDY = new ca.uhn.fhir.model.api.Include("ResearchSubject:study").toLocked();
1056
1057 /**
1058   * Search parameter: <b>individual</b>
1059   * <p>
1060   * Description: <b>Who is part of study</b><br>
1061   * Type: <b>reference</b><br>
1062   * Path: <b>ResearchSubject.individual</b><br>
1063   * </p>
1064   */
1065  @SearchParamDefinition(name="individual", path="ResearchSubject.individual", description="Who is part of study", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Patient") }, target={Patient.class } )
1066  public static final String SP_INDIVIDUAL = "individual";
1067 /**
1068   * <b>Fluent Client</b> search parameter constant for <b>individual</b>
1069   * <p>
1070   * Description: <b>Who is part of study</b><br>
1071   * Type: <b>reference</b><br>
1072   * Path: <b>ResearchSubject.individual</b><br>
1073   * </p>
1074   */
1075  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam INDIVIDUAL = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_INDIVIDUAL);
1076
1077/**
1078   * Constant for fluent queries to be used to add include statements. Specifies
1079   * the path value of "<b>ResearchSubject:individual</b>".
1080   */
1081  public static final ca.uhn.fhir.model.api.Include INCLUDE_INDIVIDUAL = new ca.uhn.fhir.model.api.Include("ResearchSubject:individual").toLocked();
1082
1083 /**
1084   * Search parameter: <b>patient</b>
1085   * <p>
1086   * Description: <b>Who is part of study</b><br>
1087   * Type: <b>reference</b><br>
1088   * Path: <b>ResearchSubject.individual</b><br>
1089   * </p>
1090   */
1091  @SearchParamDefinition(name="patient", path="ResearchSubject.individual", description="Who is part of study", type="reference", target={Patient.class } )
1092  public static final String SP_PATIENT = "patient";
1093 /**
1094   * <b>Fluent Client</b> search parameter constant for <b>patient</b>
1095   * <p>
1096   * Description: <b>Who is part of study</b><br>
1097   * Type: <b>reference</b><br>
1098   * Path: <b>ResearchSubject.individual</b><br>
1099   * </p>
1100   */
1101  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PATIENT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PATIENT);
1102
1103/**
1104   * Constant for fluent queries to be used to add include statements. Specifies
1105   * the path value of "<b>ResearchSubject:patient</b>".
1106   */
1107  public static final ca.uhn.fhir.model.api.Include INCLUDE_PATIENT = new ca.uhn.fhir.model.api.Include("ResearchSubject:patient").toLocked();
1108
1109 /**
1110   * Search parameter: <b>status</b>
1111   * <p>
1112   * Description: <b>candidate | eligible | follow-up | ineligible | not-registered | off-study | on-study | on-study-intervention | on-study-observation | pending-on-study | potential-candidate | screening | withdrawn</b><br>
1113   * Type: <b>token</b><br>
1114   * Path: <b>ResearchSubject.status</b><br>
1115   * </p>
1116   */
1117  @SearchParamDefinition(name="status", path="ResearchSubject.status", description="candidate | eligible | follow-up | ineligible | not-registered | off-study | on-study | on-study-intervention | on-study-observation | pending-on-study | potential-candidate | screening | withdrawn", type="token" )
1118  public static final String SP_STATUS = "status";
1119 /**
1120   * <b>Fluent Client</b> search parameter constant for <b>status</b>
1121   * <p>
1122   * Description: <b>candidate | eligible | follow-up | ineligible | not-registered | off-study | on-study | on-study-intervention | on-study-observation | pending-on-study | potential-candidate | screening | withdrawn</b><br>
1123   * Type: <b>token</b><br>
1124   * Path: <b>ResearchSubject.status</b><br>
1125   * </p>
1126   */
1127  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
1128
1129
1130}
1131