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 org.hl7.fhir.utilities.Utilities;
038import org.hl7.fhir.r5.model.Enumerations.*;
039import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
040import org.hl7.fhir.exceptions.FHIRException;
041import org.hl7.fhir.instance.model.api.ICompositeType;
042import ca.uhn.fhir.model.api.annotation.ResourceDef;
043import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
044import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
045import ca.uhn.fhir.model.api.annotation.Child;
046import ca.uhn.fhir.model.api.annotation.ChildOrder;
047import ca.uhn.fhir.model.api.annotation.Description;
048import ca.uhn.fhir.model.api.annotation.Block;
049
050/**
051 * The MeasureReport resource contains the results of the calculation of a measure; and optionally a reference to the resources involved in that calculation.
052 */
053@ResourceDef(name="MeasureReport", profile="http://hl7.org/fhir/StructureDefinition/MeasureReport")
054public class MeasureReport extends DomainResource {
055
056    public enum MeasureReportStatus {
057        /**
058         * The report is complete and ready for use.
059         */
060        COMPLETE, 
061        /**
062         * The report is currently being generated.
063         */
064        PENDING, 
065        /**
066         * An error occurred attempting to generate the report.
067         */
068        ERROR, 
069        /**
070         * added to help the parsers with the generic types
071         */
072        NULL;
073        public static MeasureReportStatus fromCode(String codeString) throws FHIRException {
074            if (codeString == null || "".equals(codeString))
075                return null;
076        if ("complete".equals(codeString))
077          return COMPLETE;
078        if ("pending".equals(codeString))
079          return PENDING;
080        if ("error".equals(codeString))
081          return ERROR;
082        if (Configuration.isAcceptInvalidEnums())
083          return null;
084        else
085          throw new FHIRException("Unknown MeasureReportStatus code '"+codeString+"'");
086        }
087        public String toCode() {
088          switch (this) {
089            case COMPLETE: return "complete";
090            case PENDING: return "pending";
091            case ERROR: return "error";
092            case NULL: return null;
093            default: return "?";
094          }
095        }
096        public String getSystem() {
097          switch (this) {
098            case COMPLETE: return "http://hl7.org/fhir/measure-report-status";
099            case PENDING: return "http://hl7.org/fhir/measure-report-status";
100            case ERROR: return "http://hl7.org/fhir/measure-report-status";
101            case NULL: return null;
102            default: return "?";
103          }
104        }
105        public String getDefinition() {
106          switch (this) {
107            case COMPLETE: return "The report is complete and ready for use.";
108            case PENDING: return "The report is currently being generated.";
109            case ERROR: return "An error occurred attempting to generate the report.";
110            case NULL: return null;
111            default: return "?";
112          }
113        }
114        public String getDisplay() {
115          switch (this) {
116            case COMPLETE: return "Complete";
117            case PENDING: return "Pending";
118            case ERROR: return "Error";
119            case NULL: return null;
120            default: return "?";
121          }
122        }
123    }
124
125  public static class MeasureReportStatusEnumFactory implements EnumFactory<MeasureReportStatus> {
126    public MeasureReportStatus fromCode(String codeString) throws IllegalArgumentException {
127      if (codeString == null || "".equals(codeString))
128            if (codeString == null || "".equals(codeString))
129                return null;
130        if ("complete".equals(codeString))
131          return MeasureReportStatus.COMPLETE;
132        if ("pending".equals(codeString))
133          return MeasureReportStatus.PENDING;
134        if ("error".equals(codeString))
135          return MeasureReportStatus.ERROR;
136        throw new IllegalArgumentException("Unknown MeasureReportStatus code '"+codeString+"'");
137        }
138        public Enumeration<MeasureReportStatus> fromType(PrimitiveType<?> code) throws FHIRException {
139          if (code == null)
140            return null;
141          if (code.isEmpty())
142            return new Enumeration<MeasureReportStatus>(this, MeasureReportStatus.NULL, code);
143          String codeString = ((PrimitiveType) code).asStringValue();
144          if (codeString == null || "".equals(codeString))
145            return new Enumeration<MeasureReportStatus>(this, MeasureReportStatus.NULL, code);
146        if ("complete".equals(codeString))
147          return new Enumeration<MeasureReportStatus>(this, MeasureReportStatus.COMPLETE, code);
148        if ("pending".equals(codeString))
149          return new Enumeration<MeasureReportStatus>(this, MeasureReportStatus.PENDING, code);
150        if ("error".equals(codeString))
151          return new Enumeration<MeasureReportStatus>(this, MeasureReportStatus.ERROR, code);
152        throw new FHIRException("Unknown MeasureReportStatus code '"+codeString+"'");
153        }
154    public String toCode(MeasureReportStatus code) {
155      if (code == MeasureReportStatus.COMPLETE)
156        return "complete";
157      if (code == MeasureReportStatus.PENDING)
158        return "pending";
159      if (code == MeasureReportStatus.ERROR)
160        return "error";
161      return "?";
162      }
163    public String toSystem(MeasureReportStatus code) {
164      return code.getSystem();
165      }
166    }
167
168    public enum MeasureReportType {
169        /**
170         * An individual report that provides information on the performance for a given measure with respect to a single subject.
171         */
172        INDIVIDUAL, 
173        /**
174         * A subject list report that includes a listing of subjects that satisfied each population criteria in the measure.
175         */
176        SUBJECTLIST, 
177        /**
178         * A summary report that returns the number of members in each population criteria for the measure.
179         */
180        SUMMARY, 
181        /**
182         * A data exchange report that contains data-of-interest for the measure (i.e. data that is needed to calculate the measure)
183         */
184        DATAEXCHANGE, 
185        /**
186         * added to help the parsers with the generic types
187         */
188        NULL;
189        public static MeasureReportType fromCode(String codeString) throws FHIRException {
190            if (codeString == null || "".equals(codeString))
191                return null;
192        if ("individual".equals(codeString))
193          return INDIVIDUAL;
194        if ("subject-list".equals(codeString))
195          return SUBJECTLIST;
196        if ("summary".equals(codeString))
197          return SUMMARY;
198        if ("data-exchange".equals(codeString))
199          return DATAEXCHANGE;
200        if (Configuration.isAcceptInvalidEnums())
201          return null;
202        else
203          throw new FHIRException("Unknown MeasureReportType code '"+codeString+"'");
204        }
205        public String toCode() {
206          switch (this) {
207            case INDIVIDUAL: return "individual";
208            case SUBJECTLIST: return "subject-list";
209            case SUMMARY: return "summary";
210            case DATAEXCHANGE: return "data-exchange";
211            case NULL: return null;
212            default: return "?";
213          }
214        }
215        public String getSystem() {
216          switch (this) {
217            case INDIVIDUAL: return "http://hl7.org/fhir/measure-report-type";
218            case SUBJECTLIST: return "http://hl7.org/fhir/measure-report-type";
219            case SUMMARY: return "http://hl7.org/fhir/measure-report-type";
220            case DATAEXCHANGE: return "http://hl7.org/fhir/measure-report-type";
221            case NULL: return null;
222            default: return "?";
223          }
224        }
225        public String getDefinition() {
226          switch (this) {
227            case INDIVIDUAL: return "An individual report that provides information on the performance for a given measure with respect to a single subject.";
228            case SUBJECTLIST: return "A subject list report that includes a listing of subjects that satisfied each population criteria in the measure.";
229            case SUMMARY: return "A summary report that returns the number of members in each population criteria for the measure.";
230            case DATAEXCHANGE: return "A data exchange report that contains data-of-interest for the measure (i.e. data that is needed to calculate the measure)";
231            case NULL: return null;
232            default: return "?";
233          }
234        }
235        public String getDisplay() {
236          switch (this) {
237            case INDIVIDUAL: return "Individual";
238            case SUBJECTLIST: return "Subject List";
239            case SUMMARY: return "Summary";
240            case DATAEXCHANGE: return "Data Exchange";
241            case NULL: return null;
242            default: return "?";
243          }
244        }
245    }
246
247  public static class MeasureReportTypeEnumFactory implements EnumFactory<MeasureReportType> {
248    public MeasureReportType fromCode(String codeString) throws IllegalArgumentException {
249      if (codeString == null || "".equals(codeString))
250            if (codeString == null || "".equals(codeString))
251                return null;
252        if ("individual".equals(codeString))
253          return MeasureReportType.INDIVIDUAL;
254        if ("subject-list".equals(codeString))
255          return MeasureReportType.SUBJECTLIST;
256        if ("summary".equals(codeString))
257          return MeasureReportType.SUMMARY;
258        if ("data-exchange".equals(codeString))
259          return MeasureReportType.DATAEXCHANGE;
260        throw new IllegalArgumentException("Unknown MeasureReportType code '"+codeString+"'");
261        }
262        public Enumeration<MeasureReportType> fromType(PrimitiveType<?> code) throws FHIRException {
263          if (code == null)
264            return null;
265          if (code.isEmpty())
266            return new Enumeration<MeasureReportType>(this, MeasureReportType.NULL, code);
267          String codeString = ((PrimitiveType) code).asStringValue();
268          if (codeString == null || "".equals(codeString))
269            return new Enumeration<MeasureReportType>(this, MeasureReportType.NULL, code);
270        if ("individual".equals(codeString))
271          return new Enumeration<MeasureReportType>(this, MeasureReportType.INDIVIDUAL, code);
272        if ("subject-list".equals(codeString))
273          return new Enumeration<MeasureReportType>(this, MeasureReportType.SUBJECTLIST, code);
274        if ("summary".equals(codeString))
275          return new Enumeration<MeasureReportType>(this, MeasureReportType.SUMMARY, code);
276        if ("data-exchange".equals(codeString))
277          return new Enumeration<MeasureReportType>(this, MeasureReportType.DATAEXCHANGE, code);
278        throw new FHIRException("Unknown MeasureReportType code '"+codeString+"'");
279        }
280    public String toCode(MeasureReportType code) {
281      if (code == MeasureReportType.INDIVIDUAL)
282        return "individual";
283      if (code == MeasureReportType.SUBJECTLIST)
284        return "subject-list";
285      if (code == MeasureReportType.SUMMARY)
286        return "summary";
287      if (code == MeasureReportType.DATAEXCHANGE)
288        return "data-exchange";
289      return "?";
290      }
291    public String toSystem(MeasureReportType code) {
292      return code.getSystem();
293      }
294    }
295
296    public enum SubmitDataUpdateType {
297        /**
298         * In contrast to the Snapshot Update, the FHIR Parameters resource used in a Submit Data or the Collect Data scenario contains only the new and updated DEQM and QI Core Profiles since the last transaction. If the Consumer supports incremental updates, the contents of the updated payload updates the previous payload data.
299         */
300        INCREMENTAL, 
301        /**
302         * In contrast to the Incremental Update, the FHIR Parameters resource used in a Submit Data or the Collect Data scenario contains all the DEQM and QI Core Profiles for each transaction.  If the Consumer supports snapshot updates, the contents of the updated payload entirely replaces the previous payload
303         */
304        SNAPSHOT, 
305        /**
306         * added to help the parsers with the generic types
307         */
308        NULL;
309        public static SubmitDataUpdateType fromCode(String codeString) throws FHIRException {
310            if (codeString == null || "".equals(codeString))
311                return null;
312        if ("incremental".equals(codeString))
313          return INCREMENTAL;
314        if ("snapshot".equals(codeString))
315          return SNAPSHOT;
316        if (Configuration.isAcceptInvalidEnums())
317          return null;
318        else
319          throw new FHIRException("Unknown SubmitDataUpdateType code '"+codeString+"'");
320        }
321        public String toCode() {
322          switch (this) {
323            case INCREMENTAL: return "incremental";
324            case SNAPSHOT: return "snapshot";
325            case NULL: return null;
326            default: return "?";
327          }
328        }
329        public String getSystem() {
330          switch (this) {
331            case INCREMENTAL: return "http://hl7.org/fhir/CodeSystem/submit-data-update-type";
332            case SNAPSHOT: return "http://hl7.org/fhir/CodeSystem/submit-data-update-type";
333            case NULL: return null;
334            default: return "?";
335          }
336        }
337        public String getDefinition() {
338          switch (this) {
339            case INCREMENTAL: return "In contrast to the Snapshot Update, the FHIR Parameters resource used in a Submit Data or the Collect Data scenario contains only the new and updated DEQM and QI Core Profiles since the last transaction. If the Consumer supports incremental updates, the contents of the updated payload updates the previous payload data.";
340            case SNAPSHOT: return "In contrast to the Incremental Update, the FHIR Parameters resource used in a Submit Data or the Collect Data scenario contains all the DEQM and QI Core Profiles for each transaction.  If the Consumer supports snapshot updates, the contents of the updated payload entirely replaces the previous payload";
341            case NULL: return null;
342            default: return "?";
343          }
344        }
345        public String getDisplay() {
346          switch (this) {
347            case INCREMENTAL: return "Incremental";
348            case SNAPSHOT: return "Snapshot";
349            case NULL: return null;
350            default: return "?";
351          }
352        }
353    }
354
355  public static class SubmitDataUpdateTypeEnumFactory implements EnumFactory<SubmitDataUpdateType> {
356    public SubmitDataUpdateType fromCode(String codeString) throws IllegalArgumentException {
357      if (codeString == null || "".equals(codeString))
358            if (codeString == null || "".equals(codeString))
359                return null;
360        if ("incremental".equals(codeString))
361          return SubmitDataUpdateType.INCREMENTAL;
362        if ("snapshot".equals(codeString))
363          return SubmitDataUpdateType.SNAPSHOT;
364        throw new IllegalArgumentException("Unknown SubmitDataUpdateType code '"+codeString+"'");
365        }
366        public Enumeration<SubmitDataUpdateType> fromType(PrimitiveType<?> code) throws FHIRException {
367          if (code == null)
368            return null;
369          if (code.isEmpty())
370            return new Enumeration<SubmitDataUpdateType>(this, SubmitDataUpdateType.NULL, code);
371          String codeString = ((PrimitiveType) code).asStringValue();
372          if (codeString == null || "".equals(codeString))
373            return new Enumeration<SubmitDataUpdateType>(this, SubmitDataUpdateType.NULL, code);
374        if ("incremental".equals(codeString))
375          return new Enumeration<SubmitDataUpdateType>(this, SubmitDataUpdateType.INCREMENTAL, code);
376        if ("snapshot".equals(codeString))
377          return new Enumeration<SubmitDataUpdateType>(this, SubmitDataUpdateType.SNAPSHOT, code);
378        throw new FHIRException("Unknown SubmitDataUpdateType code '"+codeString+"'");
379        }
380    public String toCode(SubmitDataUpdateType code) {
381      if (code == SubmitDataUpdateType.INCREMENTAL)
382        return "incremental";
383      if (code == SubmitDataUpdateType.SNAPSHOT)
384        return "snapshot";
385      return "?";
386      }
387    public String toSystem(SubmitDataUpdateType code) {
388      return code.getSystem();
389      }
390    }
391
392    @Block()
393    public static class MeasureReportGroupComponent extends BackboneElement implements IBaseBackboneElement {
394        /**
395         * The group from the Measure that corresponds to this group in the MeasureReport resource.
396         */
397        @Child(name = "linkId", type = {StringType.class}, order=1, min=0, max=1, modifier=false, summary=false)
398        @Description(shortDefinition="Pointer to specific group from Measure", formalDefinition="The group from the Measure that corresponds to this group in the MeasureReport resource." )
399        protected StringType linkId;
400
401        /**
402         * The meaning of the population group as defined in the measure definition.
403         */
404        @Child(name = "code", type = {CodeableConcept.class}, order=2, min=0, max=1, modifier=false, summary=true)
405        @Description(shortDefinition="Meaning of the group", formalDefinition="The meaning of the population group as defined in the measure definition." )
406        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/measure-group-example")
407        protected CodeableConcept code;
408
409        /**
410         * Optional subject identifying the individual or individuals the report is for.
411         */
412        @Child(name = "subject", type = {CareTeam.class, Device.class, Group.class, HealthcareService.class, Location.class, Organization.class, Patient.class, Practitioner.class, PractitionerRole.class, RelatedPerson.class}, order=3, min=0, max=1, modifier=false, summary=true)
413        @Description(shortDefinition="What individual(s) the report is for", formalDefinition="Optional subject identifying the individual or individuals the report is for." )
414        protected Reference subject;
415
416        /**
417         * The populations that make up the population group, one for each type of population appropriate for the measure.
418         */
419        @Child(name = "population", type = {}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
420        @Description(shortDefinition="The populations in the group", formalDefinition="The populations that make up the population group, one for each type of population appropriate for the measure." )
421        protected List<MeasureReportGroupPopulationComponent> population;
422
423        /**
424         * The measure score for this population group, calculated as appropriate for the measure type and scoring method, and based on the contents of the populations defined in the group.
425         */
426        @Child(name = "measureScore", type = {Quantity.class, DateTimeType.class, CodeableConcept.class, Period.class, Range.class, Duration.class}, order=5, min=0, max=1, modifier=false, summary=true)
427        @Description(shortDefinition="What score this group achieved", formalDefinition="The measure score for this population group, calculated as appropriate for the measure type and scoring method, and based on the contents of the populations defined in the group." )
428        protected DataType measureScore;
429
430        /**
431         * When a measure includes multiple stratifiers, there will be a stratifier group for each stratifier defined by the measure.
432         */
433        @Child(name = "stratifier", type = {}, order=6, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
434        @Description(shortDefinition="Stratification results", formalDefinition="When a measure includes multiple stratifiers, there will be a stratifier group for each stratifier defined by the measure." )
435        protected List<MeasureReportGroupStratifierComponent> stratifier;
436
437        private static final long serialVersionUID = 438553747L;
438
439    /**
440     * Constructor
441     */
442      public MeasureReportGroupComponent() {
443        super();
444      }
445
446        /**
447         * @return {@link #linkId} (The group from the Measure that corresponds to this group in the MeasureReport resource.). This is the underlying object with id, value and extensions. The accessor "getLinkId" gives direct access to the value
448         */
449        public StringType getLinkIdElement() { 
450          if (this.linkId == null)
451            if (Configuration.errorOnAutoCreate())
452              throw new Error("Attempt to auto-create MeasureReportGroupComponent.linkId");
453            else if (Configuration.doAutoCreate())
454              this.linkId = new StringType(); // bb
455          return this.linkId;
456        }
457
458        public boolean hasLinkIdElement() { 
459          return this.linkId != null && !this.linkId.isEmpty();
460        }
461
462        public boolean hasLinkId() { 
463          return this.linkId != null && !this.linkId.isEmpty();
464        }
465
466        /**
467         * @param value {@link #linkId} (The group from the Measure that corresponds to this group in the MeasureReport resource.). This is the underlying object with id, value and extensions. The accessor "getLinkId" gives direct access to the value
468         */
469        public MeasureReportGroupComponent setLinkIdElement(StringType value) { 
470          this.linkId = value;
471          return this;
472        }
473
474        /**
475         * @return The group from the Measure that corresponds to this group in the MeasureReport resource.
476         */
477        public String getLinkId() { 
478          return this.linkId == null ? null : this.linkId.getValue();
479        }
480
481        /**
482         * @param value The group from the Measure that corresponds to this group in the MeasureReport resource.
483         */
484        public MeasureReportGroupComponent setLinkId(String value) { 
485          if (Utilities.noString(value))
486            this.linkId = null;
487          else {
488            if (this.linkId == null)
489              this.linkId = new StringType();
490            this.linkId.setValue(value);
491          }
492          return this;
493        }
494
495        /**
496         * @return {@link #code} (The meaning of the population group as defined in the measure definition.)
497         */
498        public CodeableConcept getCode() { 
499          if (this.code == null)
500            if (Configuration.errorOnAutoCreate())
501              throw new Error("Attempt to auto-create MeasureReportGroupComponent.code");
502            else if (Configuration.doAutoCreate())
503              this.code = new CodeableConcept(); // cc
504          return this.code;
505        }
506
507        public boolean hasCode() { 
508          return this.code != null && !this.code.isEmpty();
509        }
510
511        /**
512         * @param value {@link #code} (The meaning of the population group as defined in the measure definition.)
513         */
514        public MeasureReportGroupComponent setCode(CodeableConcept value) { 
515          this.code = value;
516          return this;
517        }
518
519        /**
520         * @return {@link #subject} (Optional subject identifying the individual or individuals the report is for.)
521         */
522        public Reference getSubject() { 
523          if (this.subject == null)
524            if (Configuration.errorOnAutoCreate())
525              throw new Error("Attempt to auto-create MeasureReportGroupComponent.subject");
526            else if (Configuration.doAutoCreate())
527              this.subject = new Reference(); // cc
528          return this.subject;
529        }
530
531        public boolean hasSubject() { 
532          return this.subject != null && !this.subject.isEmpty();
533        }
534
535        /**
536         * @param value {@link #subject} (Optional subject identifying the individual or individuals the report is for.)
537         */
538        public MeasureReportGroupComponent setSubject(Reference value) { 
539          this.subject = value;
540          return this;
541        }
542
543        /**
544         * @return {@link #population} (The populations that make up the population group, one for each type of population appropriate for the measure.)
545         */
546        public List<MeasureReportGroupPopulationComponent> getPopulation() { 
547          if (this.population == null)
548            this.population = new ArrayList<MeasureReportGroupPopulationComponent>();
549          return this.population;
550        }
551
552        /**
553         * @return Returns a reference to <code>this</code> for easy method chaining
554         */
555        public MeasureReportGroupComponent setPopulation(List<MeasureReportGroupPopulationComponent> thePopulation) { 
556          this.population = thePopulation;
557          return this;
558        }
559
560        public boolean hasPopulation() { 
561          if (this.population == null)
562            return false;
563          for (MeasureReportGroupPopulationComponent item : this.population)
564            if (!item.isEmpty())
565              return true;
566          return false;
567        }
568
569        public MeasureReportGroupPopulationComponent addPopulation() { //3
570          MeasureReportGroupPopulationComponent t = new MeasureReportGroupPopulationComponent();
571          if (this.population == null)
572            this.population = new ArrayList<MeasureReportGroupPopulationComponent>();
573          this.population.add(t);
574          return t;
575        }
576
577        public MeasureReportGroupComponent addPopulation(MeasureReportGroupPopulationComponent t) { //3
578          if (t == null)
579            return this;
580          if (this.population == null)
581            this.population = new ArrayList<MeasureReportGroupPopulationComponent>();
582          this.population.add(t);
583          return this;
584        }
585
586        /**
587         * @return The first repetition of repeating field {@link #population}, creating it if it does not already exist {3}
588         */
589        public MeasureReportGroupPopulationComponent getPopulationFirstRep() { 
590          if (getPopulation().isEmpty()) {
591            addPopulation();
592          }
593          return getPopulation().get(0);
594        }
595
596        /**
597         * @return {@link #measureScore} (The measure score for this population group, calculated as appropriate for the measure type and scoring method, and based on the contents of the populations defined in the group.)
598         */
599        public DataType getMeasureScore() { 
600          return this.measureScore;
601        }
602
603        /**
604         * @return {@link #measureScore} (The measure score for this population group, calculated as appropriate for the measure type and scoring method, and based on the contents of the populations defined in the group.)
605         */
606        public Quantity getMeasureScoreQuantity() throws FHIRException { 
607          if (this.measureScore == null)
608            this.measureScore = new Quantity();
609          if (!(this.measureScore instanceof Quantity))
610            throw new FHIRException("Type mismatch: the type Quantity was expected, but "+this.measureScore.getClass().getName()+" was encountered");
611          return (Quantity) this.measureScore;
612        }
613
614        public boolean hasMeasureScoreQuantity() { 
615          return this != null && this.measureScore instanceof Quantity;
616        }
617
618        /**
619         * @return {@link #measureScore} (The measure score for this population group, calculated as appropriate for the measure type and scoring method, and based on the contents of the populations defined in the group.)
620         */
621        public DateTimeType getMeasureScoreDateTimeType() throws FHIRException { 
622          if (this.measureScore == null)
623            this.measureScore = new DateTimeType();
624          if (!(this.measureScore instanceof DateTimeType))
625            throw new FHIRException("Type mismatch: the type DateTimeType was expected, but "+this.measureScore.getClass().getName()+" was encountered");
626          return (DateTimeType) this.measureScore;
627        }
628
629        public boolean hasMeasureScoreDateTimeType() { 
630          return this != null && this.measureScore instanceof DateTimeType;
631        }
632
633        /**
634         * @return {@link #measureScore} (The measure score for this population group, calculated as appropriate for the measure type and scoring method, and based on the contents of the populations defined in the group.)
635         */
636        public CodeableConcept getMeasureScoreCodeableConcept() throws FHIRException { 
637          if (this.measureScore == null)
638            this.measureScore = new CodeableConcept();
639          if (!(this.measureScore instanceof CodeableConcept))
640            throw new FHIRException("Type mismatch: the type CodeableConcept was expected, but "+this.measureScore.getClass().getName()+" was encountered");
641          return (CodeableConcept) this.measureScore;
642        }
643
644        public boolean hasMeasureScoreCodeableConcept() { 
645          return this != null && this.measureScore instanceof CodeableConcept;
646        }
647
648        /**
649         * @return {@link #measureScore} (The measure score for this population group, calculated as appropriate for the measure type and scoring method, and based on the contents of the populations defined in the group.)
650         */
651        public Period getMeasureScorePeriod() throws FHIRException { 
652          if (this.measureScore == null)
653            this.measureScore = new Period();
654          if (!(this.measureScore instanceof Period))
655            throw new FHIRException("Type mismatch: the type Period was expected, but "+this.measureScore.getClass().getName()+" was encountered");
656          return (Period) this.measureScore;
657        }
658
659        public boolean hasMeasureScorePeriod() { 
660          return this != null && this.measureScore instanceof Period;
661        }
662
663        /**
664         * @return {@link #measureScore} (The measure score for this population group, calculated as appropriate for the measure type and scoring method, and based on the contents of the populations defined in the group.)
665         */
666        public Range getMeasureScoreRange() throws FHIRException { 
667          if (this.measureScore == null)
668            this.measureScore = new Range();
669          if (!(this.measureScore instanceof Range))
670            throw new FHIRException("Type mismatch: the type Range was expected, but "+this.measureScore.getClass().getName()+" was encountered");
671          return (Range) this.measureScore;
672        }
673
674        public boolean hasMeasureScoreRange() { 
675          return this != null && this.measureScore instanceof Range;
676        }
677
678        /**
679         * @return {@link #measureScore} (The measure score for this population group, calculated as appropriate for the measure type and scoring method, and based on the contents of the populations defined in the group.)
680         */
681        public Duration getMeasureScoreDuration() throws FHIRException { 
682          if (this.measureScore == null)
683            this.measureScore = new Duration();
684          if (!(this.measureScore instanceof Duration))
685            throw new FHIRException("Type mismatch: the type Duration was expected, but "+this.measureScore.getClass().getName()+" was encountered");
686          return (Duration) this.measureScore;
687        }
688
689        public boolean hasMeasureScoreDuration() { 
690          return this != null && this.measureScore instanceof Duration;
691        }
692
693        public boolean hasMeasureScore() { 
694          return this.measureScore != null && !this.measureScore.isEmpty();
695        }
696
697        /**
698         * @param value {@link #measureScore} (The measure score for this population group, calculated as appropriate for the measure type and scoring method, and based on the contents of the populations defined in the group.)
699         */
700        public MeasureReportGroupComponent setMeasureScore(DataType value) { 
701          if (value != null && !(value instanceof Quantity || value instanceof DateTimeType || value instanceof CodeableConcept || value instanceof Period || value instanceof Range || value instanceof Duration))
702            throw new FHIRException("Not the right type for MeasureReport.group.measureScore[x]: "+value.fhirType());
703          this.measureScore = value;
704          return this;
705        }
706
707        /**
708         * @return {@link #stratifier} (When a measure includes multiple stratifiers, there will be a stratifier group for each stratifier defined by the measure.)
709         */
710        public List<MeasureReportGroupStratifierComponent> getStratifier() { 
711          if (this.stratifier == null)
712            this.stratifier = new ArrayList<MeasureReportGroupStratifierComponent>();
713          return this.stratifier;
714        }
715
716        /**
717         * @return Returns a reference to <code>this</code> for easy method chaining
718         */
719        public MeasureReportGroupComponent setStratifier(List<MeasureReportGroupStratifierComponent> theStratifier) { 
720          this.stratifier = theStratifier;
721          return this;
722        }
723
724        public boolean hasStratifier() { 
725          if (this.stratifier == null)
726            return false;
727          for (MeasureReportGroupStratifierComponent item : this.stratifier)
728            if (!item.isEmpty())
729              return true;
730          return false;
731        }
732
733        public MeasureReportGroupStratifierComponent addStratifier() { //3
734          MeasureReportGroupStratifierComponent t = new MeasureReportGroupStratifierComponent();
735          if (this.stratifier == null)
736            this.stratifier = new ArrayList<MeasureReportGroupStratifierComponent>();
737          this.stratifier.add(t);
738          return t;
739        }
740
741        public MeasureReportGroupComponent addStratifier(MeasureReportGroupStratifierComponent t) { //3
742          if (t == null)
743            return this;
744          if (this.stratifier == null)
745            this.stratifier = new ArrayList<MeasureReportGroupStratifierComponent>();
746          this.stratifier.add(t);
747          return this;
748        }
749
750        /**
751         * @return The first repetition of repeating field {@link #stratifier}, creating it if it does not already exist {3}
752         */
753        public MeasureReportGroupStratifierComponent getStratifierFirstRep() { 
754          if (getStratifier().isEmpty()) {
755            addStratifier();
756          }
757          return getStratifier().get(0);
758        }
759
760        protected void listChildren(List<Property> children) {
761          super.listChildren(children);
762          children.add(new Property("linkId", "string", "The group from the Measure that corresponds to this group in the MeasureReport resource.", 0, 1, linkId));
763          children.add(new Property("code", "CodeableConcept", "The meaning of the population group as defined in the measure definition.", 0, 1, code));
764          children.add(new Property("subject", "Reference(CareTeam|Device|Group|HealthcareService|Location|Organization|Patient|Practitioner|PractitionerRole|RelatedPerson)", "Optional subject identifying the individual or individuals the report is for.", 0, 1, subject));
765          children.add(new Property("population", "", "The populations that make up the population group, one for each type of population appropriate for the measure.", 0, java.lang.Integer.MAX_VALUE, population));
766          children.add(new Property("measureScore[x]", "Quantity|dateTime|CodeableConcept|Period|Range|Duration", "The measure score for this population group, calculated as appropriate for the measure type and scoring method, and based on the contents of the populations defined in the group.", 0, 1, measureScore));
767          children.add(new Property("stratifier", "", "When a measure includes multiple stratifiers, there will be a stratifier group for each stratifier defined by the measure.", 0, java.lang.Integer.MAX_VALUE, stratifier));
768        }
769
770        @Override
771        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
772          switch (_hash) {
773          case -1102667083: /*linkId*/  return new Property("linkId", "string", "The group from the Measure that corresponds to this group in the MeasureReport resource.", 0, 1, linkId);
774          case 3059181: /*code*/  return new Property("code", "CodeableConcept", "The meaning of the population group as defined in the measure definition.", 0, 1, code);
775          case -1867885268: /*subject*/  return new Property("subject", "Reference(CareTeam|Device|Group|HealthcareService|Location|Organization|Patient|Practitioner|PractitionerRole|RelatedPerson)", "Optional subject identifying the individual or individuals the report is for.", 0, 1, subject);
776          case -2023558323: /*population*/  return new Property("population", "", "The populations that make up the population group, one for each type of population appropriate for the measure.", 0, java.lang.Integer.MAX_VALUE, population);
777          case 1854115884: /*measureScore[x]*/  return new Property("measureScore[x]", "Quantity|dateTime|CodeableConcept|Period|Range|Duration", "The measure score for this population group, calculated as appropriate for the measure type and scoring method, and based on the contents of the populations defined in the group.", 0, 1, measureScore);
778          case -386313260: /*measureScore*/  return new Property("measureScore[x]", "Quantity|dateTime|CodeableConcept|Period|Range|Duration", "The measure score for this population group, calculated as appropriate for the measure type and scoring method, and based on the contents of the populations defined in the group.", 0, 1, measureScore);
779          case -1880815489: /*measureScoreQuantity*/  return new Property("measureScore[x]", "Quantity", "The measure score for this population group, calculated as appropriate for the measure type and scoring method, and based on the contents of the populations defined in the group.", 0, 1, measureScore);
780          case 1196938127: /*measureScoreDateTime*/  return new Property("measureScore[x]", "dateTime", "The measure score for this population group, calculated as appropriate for the measure type and scoring method, and based on the contents of the populations defined in the group.", 0, 1, measureScore);
781          case -1193234131: /*measureScoreCodeableConcept*/  return new Property("measureScore[x]", "CodeableConcept", "The measure score for this population group, calculated as appropriate for the measure type and scoring method, and based on the contents of the populations defined in the group.", 0, 1, measureScore);
782          case -1939831115: /*measureScorePeriod*/  return new Property("measureScore[x]", "Period", "The measure score for this population group, calculated as appropriate for the measure type and scoring method, and based on the contents of the populations defined in the group.", 0, 1, measureScore);
783          case -615040567: /*measureScoreRange*/  return new Property("measureScore[x]", "Range", "The measure score for this population group, calculated as appropriate for the measure type and scoring method, and based on the contents of the populations defined in the group.", 0, 1, measureScore);
784          case 1707143560: /*measureScoreDuration*/  return new Property("measureScore[x]", "Duration", "The measure score for this population group, calculated as appropriate for the measure type and scoring method, and based on the contents of the populations defined in the group.", 0, 1, measureScore);
785          case 90983669: /*stratifier*/  return new Property("stratifier", "", "When a measure includes multiple stratifiers, there will be a stratifier group for each stratifier defined by the measure.", 0, java.lang.Integer.MAX_VALUE, stratifier);
786          default: return super.getNamedProperty(_hash, _name, _checkValid);
787          }
788
789        }
790
791      @Override
792      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
793        switch (hash) {
794        case -1102667083: /*linkId*/ return this.linkId == null ? new Base[0] : new Base[] {this.linkId}; // StringType
795        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // CodeableConcept
796        case -1867885268: /*subject*/ return this.subject == null ? new Base[0] : new Base[] {this.subject}; // Reference
797        case -2023558323: /*population*/ return this.population == null ? new Base[0] : this.population.toArray(new Base[this.population.size()]); // MeasureReportGroupPopulationComponent
798        case -386313260: /*measureScore*/ return this.measureScore == null ? new Base[0] : new Base[] {this.measureScore}; // DataType
799        case 90983669: /*stratifier*/ return this.stratifier == null ? new Base[0] : this.stratifier.toArray(new Base[this.stratifier.size()]); // MeasureReportGroupStratifierComponent
800        default: return super.getProperty(hash, name, checkValid);
801        }
802
803      }
804
805      @Override
806      public Base setProperty(int hash, String name, Base value) throws FHIRException {
807        switch (hash) {
808        case -1102667083: // linkId
809          this.linkId = TypeConvertor.castToString(value); // StringType
810          return value;
811        case 3059181: // code
812          this.code = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
813          return value;
814        case -1867885268: // subject
815          this.subject = TypeConvertor.castToReference(value); // Reference
816          return value;
817        case -2023558323: // population
818          this.getPopulation().add((MeasureReportGroupPopulationComponent) value); // MeasureReportGroupPopulationComponent
819          return value;
820        case -386313260: // measureScore
821          this.measureScore = TypeConvertor.castToType(value); // DataType
822          return value;
823        case 90983669: // stratifier
824          this.getStratifier().add((MeasureReportGroupStratifierComponent) value); // MeasureReportGroupStratifierComponent
825          return value;
826        default: return super.setProperty(hash, name, value);
827        }
828
829      }
830
831      @Override
832      public Base setProperty(String name, Base value) throws FHIRException {
833        if (name.equals("linkId")) {
834          this.linkId = TypeConvertor.castToString(value); // StringType
835        } else if (name.equals("code")) {
836          this.code = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
837        } else if (name.equals("subject")) {
838          this.subject = TypeConvertor.castToReference(value); // Reference
839        } else if (name.equals("population")) {
840          this.getPopulation().add((MeasureReportGroupPopulationComponent) value);
841        } else if (name.equals("measureScore[x]")) {
842          this.measureScore = TypeConvertor.castToType(value); // DataType
843        } else if (name.equals("stratifier")) {
844          this.getStratifier().add((MeasureReportGroupStratifierComponent) value);
845        } else
846          return super.setProperty(name, value);
847        return value;
848      }
849
850  @Override
851  public void removeChild(String name, Base value) throws FHIRException {
852        if (name.equals("linkId")) {
853          this.linkId = null;
854        } else if (name.equals("code")) {
855          this.code = null;
856        } else if (name.equals("subject")) {
857          this.subject = null;
858        } else if (name.equals("population")) {
859          this.getPopulation().remove((MeasureReportGroupPopulationComponent) value);
860        } else if (name.equals("measureScore[x]")) {
861          this.measureScore = null;
862        } else if (name.equals("stratifier")) {
863          this.getStratifier().remove((MeasureReportGroupStratifierComponent) value);
864        } else
865          super.removeChild(name, value);
866        
867      }
868
869      @Override
870      public Base makeProperty(int hash, String name) throws FHIRException {
871        switch (hash) {
872        case -1102667083:  return getLinkIdElement();
873        case 3059181:  return getCode();
874        case -1867885268:  return getSubject();
875        case -2023558323:  return addPopulation(); 
876        case 1854115884:  return getMeasureScore();
877        case -386313260:  return getMeasureScore();
878        case 90983669:  return addStratifier(); 
879        default: return super.makeProperty(hash, name);
880        }
881
882      }
883
884      @Override
885      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
886        switch (hash) {
887        case -1102667083: /*linkId*/ return new String[] {"string"};
888        case 3059181: /*code*/ return new String[] {"CodeableConcept"};
889        case -1867885268: /*subject*/ return new String[] {"Reference"};
890        case -2023558323: /*population*/ return new String[] {};
891        case -386313260: /*measureScore*/ return new String[] {"Quantity", "dateTime", "CodeableConcept", "Period", "Range", "Duration"};
892        case 90983669: /*stratifier*/ return new String[] {};
893        default: return super.getTypesForProperty(hash, name);
894        }
895
896      }
897
898      @Override
899      public Base addChild(String name) throws FHIRException {
900        if (name.equals("linkId")) {
901          throw new FHIRException("Cannot call addChild on a singleton property MeasureReport.group.linkId");
902        }
903        else if (name.equals("code")) {
904          this.code = new CodeableConcept();
905          return this.code;
906        }
907        else if (name.equals("subject")) {
908          this.subject = new Reference();
909          return this.subject;
910        }
911        else if (name.equals("population")) {
912          return addPopulation();
913        }
914        else if (name.equals("measureScoreQuantity")) {
915          this.measureScore = new Quantity();
916          return this.measureScore;
917        }
918        else if (name.equals("measureScoreDateTime")) {
919          this.measureScore = new DateTimeType();
920          return this.measureScore;
921        }
922        else if (name.equals("measureScoreCodeableConcept")) {
923          this.measureScore = new CodeableConcept();
924          return this.measureScore;
925        }
926        else if (name.equals("measureScorePeriod")) {
927          this.measureScore = new Period();
928          return this.measureScore;
929        }
930        else if (name.equals("measureScoreRange")) {
931          this.measureScore = new Range();
932          return this.measureScore;
933        }
934        else if (name.equals("measureScoreDuration")) {
935          this.measureScore = new Duration();
936          return this.measureScore;
937        }
938        else if (name.equals("stratifier")) {
939          return addStratifier();
940        }
941        else
942          return super.addChild(name);
943      }
944
945      public MeasureReportGroupComponent copy() {
946        MeasureReportGroupComponent dst = new MeasureReportGroupComponent();
947        copyValues(dst);
948        return dst;
949      }
950
951      public void copyValues(MeasureReportGroupComponent dst) {
952        super.copyValues(dst);
953        dst.linkId = linkId == null ? null : linkId.copy();
954        dst.code = code == null ? null : code.copy();
955        dst.subject = subject == null ? null : subject.copy();
956        if (population != null) {
957          dst.population = new ArrayList<MeasureReportGroupPopulationComponent>();
958          for (MeasureReportGroupPopulationComponent i : population)
959            dst.population.add(i.copy());
960        };
961        dst.measureScore = measureScore == null ? null : measureScore.copy();
962        if (stratifier != null) {
963          dst.stratifier = new ArrayList<MeasureReportGroupStratifierComponent>();
964          for (MeasureReportGroupStratifierComponent i : stratifier)
965            dst.stratifier.add(i.copy());
966        };
967      }
968
969      @Override
970      public boolean equalsDeep(Base other_) {
971        if (!super.equalsDeep(other_))
972          return false;
973        if (!(other_ instanceof MeasureReportGroupComponent))
974          return false;
975        MeasureReportGroupComponent o = (MeasureReportGroupComponent) other_;
976        return compareDeep(linkId, o.linkId, true) && compareDeep(code, o.code, true) && compareDeep(subject, o.subject, true)
977           && compareDeep(population, o.population, true) && compareDeep(measureScore, o.measureScore, true)
978           && compareDeep(stratifier, o.stratifier, true);
979      }
980
981      @Override
982      public boolean equalsShallow(Base other_) {
983        if (!super.equalsShallow(other_))
984          return false;
985        if (!(other_ instanceof MeasureReportGroupComponent))
986          return false;
987        MeasureReportGroupComponent o = (MeasureReportGroupComponent) other_;
988        return compareValues(linkId, o.linkId, true);
989      }
990
991      public boolean isEmpty() {
992        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(linkId, code, subject, population
993          , measureScore, stratifier);
994      }
995
996  public String fhirType() {
997    return "MeasureReport.group";
998
999  }
1000
1001  }
1002
1003    @Block()
1004    public static class MeasureReportGroupPopulationComponent extends BackboneElement implements IBaseBackboneElement {
1005        /**
1006         * The population from the Measure that corresponds to this population in the MeasureReport resource.
1007         */
1008        @Child(name = "linkId", type = {StringType.class}, order=1, min=0, max=1, modifier=false, summary=false)
1009        @Description(shortDefinition="Pointer to specific population from Measure", formalDefinition="The population from the Measure that corresponds to this population in the MeasureReport resource." )
1010        protected StringType linkId;
1011
1012        /**
1013         * The type of the population.
1014         */
1015        @Child(name = "code", type = {CodeableConcept.class}, order=2, min=0, max=1, modifier=false, summary=true)
1016        @Description(shortDefinition="initial-population | numerator | numerator-exclusion | denominator | denominator-exclusion | denominator-exception | measure-population | measure-population-exclusion | measure-observation", formalDefinition="The type of the population." )
1017        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/measure-population")
1018        protected CodeableConcept code;
1019
1020        /**
1021         * The number of members of the population.
1022         */
1023        @Child(name = "count", type = {IntegerType.class}, order=3, min=0, max=1, modifier=false, summary=false)
1024        @Description(shortDefinition="Size of the population", formalDefinition="The number of members of the population." )
1025        protected IntegerType count;
1026
1027        /**
1028         * This element refers to a List of individual level MeasureReport resources, one for each subject in this population.
1029         */
1030        @Child(name = "subjectResults", type = {ListResource.class}, order=4, min=0, max=1, modifier=false, summary=false)
1031        @Description(shortDefinition="For subject-list reports, the subject results in this population", formalDefinition="This element refers to a List of individual level MeasureReport resources, one for each subject in this population." )
1032        protected Reference subjectResults;
1033
1034        /**
1035         * A reference to an individual level MeasureReport resource for a member of the population.
1036         */
1037        @Child(name = "subjectReport", type = {MeasureReport.class}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1038        @Description(shortDefinition="For subject-list reports, a subject result in this population", formalDefinition="A reference to an individual level MeasureReport resource for a member of the population." )
1039        protected List<Reference> subjectReport;
1040
1041        /**
1042         * Optional Group identifying the individuals that make up the population.
1043         */
1044        @Child(name = "subjects", type = {Group.class}, order=6, min=0, max=1, modifier=false, summary=false)
1045        @Description(shortDefinition="What individual(s) in the population", formalDefinition="Optional Group identifying the individuals that make up the population." )
1046        protected Reference subjects;
1047
1048        private static final long serialVersionUID = -203678073L;
1049
1050    /**
1051     * Constructor
1052     */
1053      public MeasureReportGroupPopulationComponent() {
1054        super();
1055      }
1056
1057        /**
1058         * @return {@link #linkId} (The population from the Measure that corresponds to this population in the MeasureReport resource.). This is the underlying object with id, value and extensions. The accessor "getLinkId" gives direct access to the value
1059         */
1060        public StringType getLinkIdElement() { 
1061          if (this.linkId == null)
1062            if (Configuration.errorOnAutoCreate())
1063              throw new Error("Attempt to auto-create MeasureReportGroupPopulationComponent.linkId");
1064            else if (Configuration.doAutoCreate())
1065              this.linkId = new StringType(); // bb
1066          return this.linkId;
1067        }
1068
1069        public boolean hasLinkIdElement() { 
1070          return this.linkId != null && !this.linkId.isEmpty();
1071        }
1072
1073        public boolean hasLinkId() { 
1074          return this.linkId != null && !this.linkId.isEmpty();
1075        }
1076
1077        /**
1078         * @param value {@link #linkId} (The population from the Measure that corresponds to this population in the MeasureReport resource.). This is the underlying object with id, value and extensions. The accessor "getLinkId" gives direct access to the value
1079         */
1080        public MeasureReportGroupPopulationComponent setLinkIdElement(StringType value) { 
1081          this.linkId = value;
1082          return this;
1083        }
1084
1085        /**
1086         * @return The population from the Measure that corresponds to this population in the MeasureReport resource.
1087         */
1088        public String getLinkId() { 
1089          return this.linkId == null ? null : this.linkId.getValue();
1090        }
1091
1092        /**
1093         * @param value The population from the Measure that corresponds to this population in the MeasureReport resource.
1094         */
1095        public MeasureReportGroupPopulationComponent setLinkId(String value) { 
1096          if (Utilities.noString(value))
1097            this.linkId = null;
1098          else {
1099            if (this.linkId == null)
1100              this.linkId = new StringType();
1101            this.linkId.setValue(value);
1102          }
1103          return this;
1104        }
1105
1106        /**
1107         * @return {@link #code} (The type of the population.)
1108         */
1109        public CodeableConcept getCode() { 
1110          if (this.code == null)
1111            if (Configuration.errorOnAutoCreate())
1112              throw new Error("Attempt to auto-create MeasureReportGroupPopulationComponent.code");
1113            else if (Configuration.doAutoCreate())
1114              this.code = new CodeableConcept(); // cc
1115          return this.code;
1116        }
1117
1118        public boolean hasCode() { 
1119          return this.code != null && !this.code.isEmpty();
1120        }
1121
1122        /**
1123         * @param value {@link #code} (The type of the population.)
1124         */
1125        public MeasureReportGroupPopulationComponent setCode(CodeableConcept value) { 
1126          this.code = value;
1127          return this;
1128        }
1129
1130        /**
1131         * @return {@link #count} (The number of members of the population.). This is the underlying object with id, value and extensions. The accessor "getCount" gives direct access to the value
1132         */
1133        public IntegerType getCountElement() { 
1134          if (this.count == null)
1135            if (Configuration.errorOnAutoCreate())
1136              throw new Error("Attempt to auto-create MeasureReportGroupPopulationComponent.count");
1137            else if (Configuration.doAutoCreate())
1138              this.count = new IntegerType(); // bb
1139          return this.count;
1140        }
1141
1142        public boolean hasCountElement() { 
1143          return this.count != null && !this.count.isEmpty();
1144        }
1145
1146        public boolean hasCount() { 
1147          return this.count != null && !this.count.isEmpty();
1148        }
1149
1150        /**
1151         * @param value {@link #count} (The number of members of the population.). This is the underlying object with id, value and extensions. The accessor "getCount" gives direct access to the value
1152         */
1153        public MeasureReportGroupPopulationComponent setCountElement(IntegerType value) { 
1154          this.count = value;
1155          return this;
1156        }
1157
1158        /**
1159         * @return The number of members of the population.
1160         */
1161        public int getCount() { 
1162          return this.count == null || this.count.isEmpty() ? 0 : this.count.getValue();
1163        }
1164
1165        /**
1166         * @param value The number of members of the population.
1167         */
1168        public MeasureReportGroupPopulationComponent setCount(int value) { 
1169            if (this.count == null)
1170              this.count = new IntegerType();
1171            this.count.setValue(value);
1172          return this;
1173        }
1174
1175        /**
1176         * @return {@link #subjectResults} (This element refers to a List of individual level MeasureReport resources, one for each subject in this population.)
1177         */
1178        public Reference getSubjectResults() { 
1179          if (this.subjectResults == null)
1180            if (Configuration.errorOnAutoCreate())
1181              throw new Error("Attempt to auto-create MeasureReportGroupPopulationComponent.subjectResults");
1182            else if (Configuration.doAutoCreate())
1183              this.subjectResults = new Reference(); // cc
1184          return this.subjectResults;
1185        }
1186
1187        public boolean hasSubjectResults() { 
1188          return this.subjectResults != null && !this.subjectResults.isEmpty();
1189        }
1190
1191        /**
1192         * @param value {@link #subjectResults} (This element refers to a List of individual level MeasureReport resources, one for each subject in this population.)
1193         */
1194        public MeasureReportGroupPopulationComponent setSubjectResults(Reference value) { 
1195          this.subjectResults = value;
1196          return this;
1197        }
1198
1199        /**
1200         * @return {@link #subjectReport} (A reference to an individual level MeasureReport resource for a member of the population.)
1201         */
1202        public List<Reference> getSubjectReport() { 
1203          if (this.subjectReport == null)
1204            this.subjectReport = new ArrayList<Reference>();
1205          return this.subjectReport;
1206        }
1207
1208        /**
1209         * @return Returns a reference to <code>this</code> for easy method chaining
1210         */
1211        public MeasureReportGroupPopulationComponent setSubjectReport(List<Reference> theSubjectReport) { 
1212          this.subjectReport = theSubjectReport;
1213          return this;
1214        }
1215
1216        public boolean hasSubjectReport() { 
1217          if (this.subjectReport == null)
1218            return false;
1219          for (Reference item : this.subjectReport)
1220            if (!item.isEmpty())
1221              return true;
1222          return false;
1223        }
1224
1225        public Reference addSubjectReport() { //3
1226          Reference t = new Reference();
1227          if (this.subjectReport == null)
1228            this.subjectReport = new ArrayList<Reference>();
1229          this.subjectReport.add(t);
1230          return t;
1231        }
1232
1233        public MeasureReportGroupPopulationComponent addSubjectReport(Reference t) { //3
1234          if (t == null)
1235            return this;
1236          if (this.subjectReport == null)
1237            this.subjectReport = new ArrayList<Reference>();
1238          this.subjectReport.add(t);
1239          return this;
1240        }
1241
1242        /**
1243         * @return The first repetition of repeating field {@link #subjectReport}, creating it if it does not already exist {3}
1244         */
1245        public Reference getSubjectReportFirstRep() { 
1246          if (getSubjectReport().isEmpty()) {
1247            addSubjectReport();
1248          }
1249          return getSubjectReport().get(0);
1250        }
1251
1252        /**
1253         * @return {@link #subjects} (Optional Group identifying the individuals that make up the population.)
1254         */
1255        public Reference getSubjects() { 
1256          if (this.subjects == null)
1257            if (Configuration.errorOnAutoCreate())
1258              throw new Error("Attempt to auto-create MeasureReportGroupPopulationComponent.subjects");
1259            else if (Configuration.doAutoCreate())
1260              this.subjects = new Reference(); // cc
1261          return this.subjects;
1262        }
1263
1264        public boolean hasSubjects() { 
1265          return this.subjects != null && !this.subjects.isEmpty();
1266        }
1267
1268        /**
1269         * @param value {@link #subjects} (Optional Group identifying the individuals that make up the population.)
1270         */
1271        public MeasureReportGroupPopulationComponent setSubjects(Reference value) { 
1272          this.subjects = value;
1273          return this;
1274        }
1275
1276        protected void listChildren(List<Property> children) {
1277          super.listChildren(children);
1278          children.add(new Property("linkId", "string", "The population from the Measure that corresponds to this population in the MeasureReport resource.", 0, 1, linkId));
1279          children.add(new Property("code", "CodeableConcept", "The type of the population.", 0, 1, code));
1280          children.add(new Property("count", "integer", "The number of members of the population.", 0, 1, count));
1281          children.add(new Property("subjectResults", "Reference(List)", "This element refers to a List of individual level MeasureReport resources, one for each subject in this population.", 0, 1, subjectResults));
1282          children.add(new Property("subjectReport", "Reference(MeasureReport)", "A reference to an individual level MeasureReport resource for a member of the population.", 0, java.lang.Integer.MAX_VALUE, subjectReport));
1283          children.add(new Property("subjects", "Reference(Group)", "Optional Group identifying the individuals that make up the population.", 0, 1, subjects));
1284        }
1285
1286        @Override
1287        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1288          switch (_hash) {
1289          case -1102667083: /*linkId*/  return new Property("linkId", "string", "The population from the Measure that corresponds to this population in the MeasureReport resource.", 0, 1, linkId);
1290          case 3059181: /*code*/  return new Property("code", "CodeableConcept", "The type of the population.", 0, 1, code);
1291          case 94851343: /*count*/  return new Property("count", "integer", "The number of members of the population.", 0, 1, count);
1292          case 2136184106: /*subjectResults*/  return new Property("subjectResults", "Reference(List)", "This element refers to a List of individual level MeasureReport resources, one for each subject in this population.", 0, 1, subjectResults);
1293          case 68814208: /*subjectReport*/  return new Property("subjectReport", "Reference(MeasureReport)", "A reference to an individual level MeasureReport resource for a member of the population.", 0, java.lang.Integer.MAX_VALUE, subjectReport);
1294          case -2069868345: /*subjects*/  return new Property("subjects", "Reference(Group)", "Optional Group identifying the individuals that make up the population.", 0, 1, subjects);
1295          default: return super.getNamedProperty(_hash, _name, _checkValid);
1296          }
1297
1298        }
1299
1300      @Override
1301      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1302        switch (hash) {
1303        case -1102667083: /*linkId*/ return this.linkId == null ? new Base[0] : new Base[] {this.linkId}; // StringType
1304        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // CodeableConcept
1305        case 94851343: /*count*/ return this.count == null ? new Base[0] : new Base[] {this.count}; // IntegerType
1306        case 2136184106: /*subjectResults*/ return this.subjectResults == null ? new Base[0] : new Base[] {this.subjectResults}; // Reference
1307        case 68814208: /*subjectReport*/ return this.subjectReport == null ? new Base[0] : this.subjectReport.toArray(new Base[this.subjectReport.size()]); // Reference
1308        case -2069868345: /*subjects*/ return this.subjects == null ? new Base[0] : new Base[] {this.subjects}; // Reference
1309        default: return super.getProperty(hash, name, checkValid);
1310        }
1311
1312      }
1313
1314      @Override
1315      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1316        switch (hash) {
1317        case -1102667083: // linkId
1318          this.linkId = TypeConvertor.castToString(value); // StringType
1319          return value;
1320        case 3059181: // code
1321          this.code = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1322          return value;
1323        case 94851343: // count
1324          this.count = TypeConvertor.castToInteger(value); // IntegerType
1325          return value;
1326        case 2136184106: // subjectResults
1327          this.subjectResults = TypeConvertor.castToReference(value); // Reference
1328          return value;
1329        case 68814208: // subjectReport
1330          this.getSubjectReport().add(TypeConvertor.castToReference(value)); // Reference
1331          return value;
1332        case -2069868345: // subjects
1333          this.subjects = TypeConvertor.castToReference(value); // Reference
1334          return value;
1335        default: return super.setProperty(hash, name, value);
1336        }
1337
1338      }
1339
1340      @Override
1341      public Base setProperty(String name, Base value) throws FHIRException {
1342        if (name.equals("linkId")) {
1343          this.linkId = TypeConvertor.castToString(value); // StringType
1344        } else if (name.equals("code")) {
1345          this.code = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1346        } else if (name.equals("count")) {
1347          this.count = TypeConvertor.castToInteger(value); // IntegerType
1348        } else if (name.equals("subjectResults")) {
1349          this.subjectResults = TypeConvertor.castToReference(value); // Reference
1350        } else if (name.equals("subjectReport")) {
1351          this.getSubjectReport().add(TypeConvertor.castToReference(value));
1352        } else if (name.equals("subjects")) {
1353          this.subjects = TypeConvertor.castToReference(value); // Reference
1354        } else
1355          return super.setProperty(name, value);
1356        return value;
1357      }
1358
1359  @Override
1360  public void removeChild(String name, Base value) throws FHIRException {
1361        if (name.equals("linkId")) {
1362          this.linkId = null;
1363        } else if (name.equals("code")) {
1364          this.code = null;
1365        } else if (name.equals("count")) {
1366          this.count = null;
1367        } else if (name.equals("subjectResults")) {
1368          this.subjectResults = null;
1369        } else if (name.equals("subjectReport")) {
1370          this.getSubjectReport().remove(value);
1371        } else if (name.equals("subjects")) {
1372          this.subjects = null;
1373        } else
1374          super.removeChild(name, value);
1375        
1376      }
1377
1378      @Override
1379      public Base makeProperty(int hash, String name) throws FHIRException {
1380        switch (hash) {
1381        case -1102667083:  return getLinkIdElement();
1382        case 3059181:  return getCode();
1383        case 94851343:  return getCountElement();
1384        case 2136184106:  return getSubjectResults();
1385        case 68814208:  return addSubjectReport(); 
1386        case -2069868345:  return getSubjects();
1387        default: return super.makeProperty(hash, name);
1388        }
1389
1390      }
1391
1392      @Override
1393      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1394        switch (hash) {
1395        case -1102667083: /*linkId*/ return new String[] {"string"};
1396        case 3059181: /*code*/ return new String[] {"CodeableConcept"};
1397        case 94851343: /*count*/ return new String[] {"integer"};
1398        case 2136184106: /*subjectResults*/ return new String[] {"Reference"};
1399        case 68814208: /*subjectReport*/ return new String[] {"Reference"};
1400        case -2069868345: /*subjects*/ return new String[] {"Reference"};
1401        default: return super.getTypesForProperty(hash, name);
1402        }
1403
1404      }
1405
1406      @Override
1407      public Base addChild(String name) throws FHIRException {
1408        if (name.equals("linkId")) {
1409          throw new FHIRException("Cannot call addChild on a singleton property MeasureReport.group.population.linkId");
1410        }
1411        else if (name.equals("code")) {
1412          this.code = new CodeableConcept();
1413          return this.code;
1414        }
1415        else if (name.equals("count")) {
1416          throw new FHIRException("Cannot call addChild on a singleton property MeasureReport.group.population.count");
1417        }
1418        else if (name.equals("subjectResults")) {
1419          this.subjectResults = new Reference();
1420          return this.subjectResults;
1421        }
1422        else if (name.equals("subjectReport")) {
1423          return addSubjectReport();
1424        }
1425        else if (name.equals("subjects")) {
1426          this.subjects = new Reference();
1427          return this.subjects;
1428        }
1429        else
1430          return super.addChild(name);
1431      }
1432
1433      public MeasureReportGroupPopulationComponent copy() {
1434        MeasureReportGroupPopulationComponent dst = new MeasureReportGroupPopulationComponent();
1435        copyValues(dst);
1436        return dst;
1437      }
1438
1439      public void copyValues(MeasureReportGroupPopulationComponent dst) {
1440        super.copyValues(dst);
1441        dst.linkId = linkId == null ? null : linkId.copy();
1442        dst.code = code == null ? null : code.copy();
1443        dst.count = count == null ? null : count.copy();
1444        dst.subjectResults = subjectResults == null ? null : subjectResults.copy();
1445        if (subjectReport != null) {
1446          dst.subjectReport = new ArrayList<Reference>();
1447          for (Reference i : subjectReport)
1448            dst.subjectReport.add(i.copy());
1449        };
1450        dst.subjects = subjects == null ? null : subjects.copy();
1451      }
1452
1453      @Override
1454      public boolean equalsDeep(Base other_) {
1455        if (!super.equalsDeep(other_))
1456          return false;
1457        if (!(other_ instanceof MeasureReportGroupPopulationComponent))
1458          return false;
1459        MeasureReportGroupPopulationComponent o = (MeasureReportGroupPopulationComponent) other_;
1460        return compareDeep(linkId, o.linkId, true) && compareDeep(code, o.code, true) && compareDeep(count, o.count, true)
1461           && compareDeep(subjectResults, o.subjectResults, true) && compareDeep(subjectReport, o.subjectReport, true)
1462           && compareDeep(subjects, o.subjects, true);
1463      }
1464
1465      @Override
1466      public boolean equalsShallow(Base other_) {
1467        if (!super.equalsShallow(other_))
1468          return false;
1469        if (!(other_ instanceof MeasureReportGroupPopulationComponent))
1470          return false;
1471        MeasureReportGroupPopulationComponent o = (MeasureReportGroupPopulationComponent) other_;
1472        return compareValues(linkId, o.linkId, true) && compareValues(count, o.count, true);
1473      }
1474
1475      public boolean isEmpty() {
1476        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(linkId, code, count, subjectResults
1477          , subjectReport, subjects);
1478      }
1479
1480  public String fhirType() {
1481    return "MeasureReport.group.population";
1482
1483  }
1484
1485  }
1486
1487    @Block()
1488    public static class MeasureReportGroupStratifierComponent extends BackboneElement implements IBaseBackboneElement {
1489        /**
1490         * The stratifier from the Measure that corresponds to this stratifier in the MeasureReport resource.
1491         */
1492        @Child(name = "linkId", type = {StringType.class}, order=1, min=0, max=1, modifier=false, summary=false)
1493        @Description(shortDefinition="Pointer to specific stratifier from Measure", formalDefinition="The stratifier from the Measure that corresponds to this stratifier in the MeasureReport resource." )
1494        protected StringType linkId;
1495
1496        /**
1497         * The meaning of this stratifier, as defined in the measure definition.
1498         */
1499        @Child(name = "code", type = {CodeableConcept.class}, order=2, min=0, max=1, modifier=false, summary=false)
1500        @Description(shortDefinition="What stratifier of the group", formalDefinition="The meaning of this stratifier, as defined in the measure definition." )
1501        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/measure-stratifier-example")
1502        protected CodeableConcept code;
1503
1504        /**
1505         * This element contains the results for a single stratum within the stratifier. For example, when stratifying on administrative gender, there will be four strata, one for each possible gender value.
1506         */
1507        @Child(name = "stratum", type = {}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1508        @Description(shortDefinition="Stratum results, one for each unique value, or set of values, in the stratifier, or stratifier components", formalDefinition="This element contains the results for a single stratum within the stratifier. For example, when stratifying on administrative gender, there will be four strata, one for each possible gender value." )
1509        protected List<StratifierGroupComponent> stratum;
1510
1511        private static final long serialVersionUID = 1021076195L;
1512
1513    /**
1514     * Constructor
1515     */
1516      public MeasureReportGroupStratifierComponent() {
1517        super();
1518      }
1519
1520        /**
1521         * @return {@link #linkId} (The stratifier from the Measure that corresponds to this stratifier in the MeasureReport resource.). This is the underlying object with id, value and extensions. The accessor "getLinkId" gives direct access to the value
1522         */
1523        public StringType getLinkIdElement() { 
1524          if (this.linkId == null)
1525            if (Configuration.errorOnAutoCreate())
1526              throw new Error("Attempt to auto-create MeasureReportGroupStratifierComponent.linkId");
1527            else if (Configuration.doAutoCreate())
1528              this.linkId = new StringType(); // bb
1529          return this.linkId;
1530        }
1531
1532        public boolean hasLinkIdElement() { 
1533          return this.linkId != null && !this.linkId.isEmpty();
1534        }
1535
1536        public boolean hasLinkId() { 
1537          return this.linkId != null && !this.linkId.isEmpty();
1538        }
1539
1540        /**
1541         * @param value {@link #linkId} (The stratifier from the Measure that corresponds to this stratifier in the MeasureReport resource.). This is the underlying object with id, value and extensions. The accessor "getLinkId" gives direct access to the value
1542         */
1543        public MeasureReportGroupStratifierComponent setLinkIdElement(StringType value) { 
1544          this.linkId = value;
1545          return this;
1546        }
1547
1548        /**
1549         * @return The stratifier from the Measure that corresponds to this stratifier in the MeasureReport resource.
1550         */
1551        public String getLinkId() { 
1552          return this.linkId == null ? null : this.linkId.getValue();
1553        }
1554
1555        /**
1556         * @param value The stratifier from the Measure that corresponds to this stratifier in the MeasureReport resource.
1557         */
1558        public MeasureReportGroupStratifierComponent setLinkId(String value) { 
1559          if (Utilities.noString(value))
1560            this.linkId = null;
1561          else {
1562            if (this.linkId == null)
1563              this.linkId = new StringType();
1564            this.linkId.setValue(value);
1565          }
1566          return this;
1567        }
1568
1569        /**
1570         * @return {@link #code} (The meaning of this stratifier, as defined in the measure definition.)
1571         */
1572        public CodeableConcept getCode() { 
1573          if (this.code == null)
1574            if (Configuration.errorOnAutoCreate())
1575              throw new Error("Attempt to auto-create MeasureReportGroupStratifierComponent.code");
1576            else if (Configuration.doAutoCreate())
1577              this.code = new CodeableConcept(); // cc
1578          return this.code;
1579        }
1580
1581        public boolean hasCode() { 
1582          return this.code != null && !this.code.isEmpty();
1583        }
1584
1585        /**
1586         * @param value {@link #code} (The meaning of this stratifier, as defined in the measure definition.)
1587         */
1588        public MeasureReportGroupStratifierComponent setCode(CodeableConcept value) { 
1589          this.code = value;
1590          return this;
1591        }
1592
1593        /**
1594         * @return {@link #stratum} (This element contains the results for a single stratum within the stratifier. For example, when stratifying on administrative gender, there will be four strata, one for each possible gender value.)
1595         */
1596        public List<StratifierGroupComponent> getStratum() { 
1597          if (this.stratum == null)
1598            this.stratum = new ArrayList<StratifierGroupComponent>();
1599          return this.stratum;
1600        }
1601
1602        /**
1603         * @return Returns a reference to <code>this</code> for easy method chaining
1604         */
1605        public MeasureReportGroupStratifierComponent setStratum(List<StratifierGroupComponent> theStratum) { 
1606          this.stratum = theStratum;
1607          return this;
1608        }
1609
1610        public boolean hasStratum() { 
1611          if (this.stratum == null)
1612            return false;
1613          for (StratifierGroupComponent item : this.stratum)
1614            if (!item.isEmpty())
1615              return true;
1616          return false;
1617        }
1618
1619        public StratifierGroupComponent addStratum() { //3
1620          StratifierGroupComponent t = new StratifierGroupComponent();
1621          if (this.stratum == null)
1622            this.stratum = new ArrayList<StratifierGroupComponent>();
1623          this.stratum.add(t);
1624          return t;
1625        }
1626
1627        public MeasureReportGroupStratifierComponent addStratum(StratifierGroupComponent t) { //3
1628          if (t == null)
1629            return this;
1630          if (this.stratum == null)
1631            this.stratum = new ArrayList<StratifierGroupComponent>();
1632          this.stratum.add(t);
1633          return this;
1634        }
1635
1636        /**
1637         * @return The first repetition of repeating field {@link #stratum}, creating it if it does not already exist {3}
1638         */
1639        public StratifierGroupComponent getStratumFirstRep() { 
1640          if (getStratum().isEmpty()) {
1641            addStratum();
1642          }
1643          return getStratum().get(0);
1644        }
1645
1646        protected void listChildren(List<Property> children) {
1647          super.listChildren(children);
1648          children.add(new Property("linkId", "string", "The stratifier from the Measure that corresponds to this stratifier in the MeasureReport resource.", 0, 1, linkId));
1649          children.add(new Property("code", "CodeableConcept", "The meaning of this stratifier, as defined in the measure definition.", 0, 1, code));
1650          children.add(new Property("stratum", "", "This element contains the results for a single stratum within the stratifier. For example, when stratifying on administrative gender, there will be four strata, one for each possible gender value.", 0, java.lang.Integer.MAX_VALUE, stratum));
1651        }
1652
1653        @Override
1654        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1655          switch (_hash) {
1656          case -1102667083: /*linkId*/  return new Property("linkId", "string", "The stratifier from the Measure that corresponds to this stratifier in the MeasureReport resource.", 0, 1, linkId);
1657          case 3059181: /*code*/  return new Property("code", "CodeableConcept", "The meaning of this stratifier, as defined in the measure definition.", 0, 1, code);
1658          case -1881991236: /*stratum*/  return new Property("stratum", "", "This element contains the results for a single stratum within the stratifier. For example, when stratifying on administrative gender, there will be four strata, one for each possible gender value.", 0, java.lang.Integer.MAX_VALUE, stratum);
1659          default: return super.getNamedProperty(_hash, _name, _checkValid);
1660          }
1661
1662        }
1663
1664      @Override
1665      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1666        switch (hash) {
1667        case -1102667083: /*linkId*/ return this.linkId == null ? new Base[0] : new Base[] {this.linkId}; // StringType
1668        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // CodeableConcept
1669        case -1881991236: /*stratum*/ return this.stratum == null ? new Base[0] : this.stratum.toArray(new Base[this.stratum.size()]); // StratifierGroupComponent
1670        default: return super.getProperty(hash, name, checkValid);
1671        }
1672
1673      }
1674
1675      @Override
1676      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1677        switch (hash) {
1678        case -1102667083: // linkId
1679          this.linkId = TypeConvertor.castToString(value); // StringType
1680          return value;
1681        case 3059181: // code
1682          this.code = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1683          return value;
1684        case -1881991236: // stratum
1685          this.getStratum().add((StratifierGroupComponent) value); // StratifierGroupComponent
1686          return value;
1687        default: return super.setProperty(hash, name, value);
1688        }
1689
1690      }
1691
1692      @Override
1693      public Base setProperty(String name, Base value) throws FHIRException {
1694        if (name.equals("linkId")) {
1695          this.linkId = TypeConvertor.castToString(value); // StringType
1696        } else if (name.equals("code")) {
1697          this.code = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1698        } else if (name.equals("stratum")) {
1699          this.getStratum().add((StratifierGroupComponent) value);
1700        } else
1701          return super.setProperty(name, value);
1702        return value;
1703      }
1704
1705  @Override
1706  public void removeChild(String name, Base value) throws FHIRException {
1707        if (name.equals("linkId")) {
1708          this.linkId = null;
1709        } else if (name.equals("code")) {
1710          this.code = null;
1711        } else if (name.equals("stratum")) {
1712          this.getStratum().remove((StratifierGroupComponent) value);
1713        } else
1714          super.removeChild(name, value);
1715        
1716      }
1717
1718      @Override
1719      public Base makeProperty(int hash, String name) throws FHIRException {
1720        switch (hash) {
1721        case -1102667083:  return getLinkIdElement();
1722        case 3059181:  return getCode();
1723        case -1881991236:  return addStratum(); 
1724        default: return super.makeProperty(hash, name);
1725        }
1726
1727      }
1728
1729      @Override
1730      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1731        switch (hash) {
1732        case -1102667083: /*linkId*/ return new String[] {"string"};
1733        case 3059181: /*code*/ return new String[] {"CodeableConcept"};
1734        case -1881991236: /*stratum*/ return new String[] {};
1735        default: return super.getTypesForProperty(hash, name);
1736        }
1737
1738      }
1739
1740      @Override
1741      public Base addChild(String name) throws FHIRException {
1742        if (name.equals("linkId")) {
1743          throw new FHIRException("Cannot call addChild on a singleton property MeasureReport.group.stratifier.linkId");
1744        }
1745        else if (name.equals("code")) {
1746          this.code = new CodeableConcept();
1747          return this.code;
1748        }
1749        else if (name.equals("stratum")) {
1750          return addStratum();
1751        }
1752        else
1753          return super.addChild(name);
1754      }
1755
1756      public MeasureReportGroupStratifierComponent copy() {
1757        MeasureReportGroupStratifierComponent dst = new MeasureReportGroupStratifierComponent();
1758        copyValues(dst);
1759        return dst;
1760      }
1761
1762      public void copyValues(MeasureReportGroupStratifierComponent dst) {
1763        super.copyValues(dst);
1764        dst.linkId = linkId == null ? null : linkId.copy();
1765        dst.code = code == null ? null : code.copy();
1766        if (stratum != null) {
1767          dst.stratum = new ArrayList<StratifierGroupComponent>();
1768          for (StratifierGroupComponent i : stratum)
1769            dst.stratum.add(i.copy());
1770        };
1771      }
1772
1773      @Override
1774      public boolean equalsDeep(Base other_) {
1775        if (!super.equalsDeep(other_))
1776          return false;
1777        if (!(other_ instanceof MeasureReportGroupStratifierComponent))
1778          return false;
1779        MeasureReportGroupStratifierComponent o = (MeasureReportGroupStratifierComponent) other_;
1780        return compareDeep(linkId, o.linkId, true) && compareDeep(code, o.code, true) && compareDeep(stratum, o.stratum, true)
1781          ;
1782      }
1783
1784      @Override
1785      public boolean equalsShallow(Base other_) {
1786        if (!super.equalsShallow(other_))
1787          return false;
1788        if (!(other_ instanceof MeasureReportGroupStratifierComponent))
1789          return false;
1790        MeasureReportGroupStratifierComponent o = (MeasureReportGroupStratifierComponent) other_;
1791        return compareValues(linkId, o.linkId, true);
1792      }
1793
1794      public boolean isEmpty() {
1795        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(linkId, code, stratum);
1796      }
1797
1798  public String fhirType() {
1799    return "MeasureReport.group.stratifier";
1800
1801  }
1802
1803  }
1804
1805    @Block()
1806    public static class StratifierGroupComponent extends BackboneElement implements IBaseBackboneElement {
1807        /**
1808         * The value for this stratum, expressed as a CodeableConcept. When defining stratifiers on complex values, the value must be rendered such that the value for each stratum within the stratifier is unique.
1809         */
1810        @Child(name = "value", type = {CodeableConcept.class, BooleanType.class, Quantity.class, Range.class, Reference.class}, order=1, min=0, max=1, modifier=false, summary=false)
1811        @Description(shortDefinition="The stratum value, e.g. male", formalDefinition="The value for this stratum, expressed as a CodeableConcept. When defining stratifiers on complex values, the value must be rendered such that the value for each stratum within the stratifier is unique." )
1812        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/measurereport-stratifier-value-example")
1813        protected DataType value;
1814
1815        /**
1816         * A stratifier component value.
1817         */
1818        @Child(name = "component", type = {}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1819        @Description(shortDefinition="Stratifier component values", formalDefinition="A stratifier component value." )
1820        protected List<StratifierGroupComponentComponent> component;
1821
1822        /**
1823         * The populations that make up the stratum, one for each type of population appropriate to the measure.
1824         */
1825        @Child(name = "population", type = {}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1826        @Description(shortDefinition="Population results in this stratum", formalDefinition="The populations that make up the stratum, one for each type of population appropriate to the measure." )
1827        protected List<StratifierGroupPopulationComponent> population;
1828
1829        /**
1830         * The measure score for this stratum, calculated as appropriate for the measure type and scoring method, and based on only the members of this stratum.
1831         */
1832        @Child(name = "measureScore", type = {Quantity.class, DateTimeType.class, CodeableConcept.class, Period.class, Range.class, Duration.class}, order=4, min=0, max=1, modifier=false, summary=false)
1833        @Description(shortDefinition="What score this stratum achieved", formalDefinition="The measure score for this stratum, calculated as appropriate for the measure type and scoring method, and based on only the members of this stratum." )
1834        protected DataType measureScore;
1835
1836        private static final long serialVersionUID = -1713783491L;
1837
1838    /**
1839     * Constructor
1840     */
1841      public StratifierGroupComponent() {
1842        super();
1843      }
1844
1845        /**
1846         * @return {@link #value} (The value for this stratum, expressed as a CodeableConcept. When defining stratifiers on complex values, the value must be rendered such that the value for each stratum within the stratifier is unique.)
1847         */
1848        public DataType getValue() { 
1849          return this.value;
1850        }
1851
1852        /**
1853         * @return {@link #value} (The value for this stratum, expressed as a CodeableConcept. When defining stratifiers on complex values, the value must be rendered such that the value for each stratum within the stratifier is unique.)
1854         */
1855        public CodeableConcept getValueCodeableConcept() throws FHIRException { 
1856          if (this.value == null)
1857            this.value = new CodeableConcept();
1858          if (!(this.value instanceof CodeableConcept))
1859            throw new FHIRException("Type mismatch: the type CodeableConcept was expected, but "+this.value.getClass().getName()+" was encountered");
1860          return (CodeableConcept) this.value;
1861        }
1862
1863        public boolean hasValueCodeableConcept() { 
1864          return this != null && this.value instanceof CodeableConcept;
1865        }
1866
1867        /**
1868         * @return {@link #value} (The value for this stratum, expressed as a CodeableConcept. When defining stratifiers on complex values, the value must be rendered such that the value for each stratum within the stratifier is unique.)
1869         */
1870        public BooleanType getValueBooleanType() throws FHIRException { 
1871          if (this.value == null)
1872            this.value = new BooleanType();
1873          if (!(this.value instanceof BooleanType))
1874            throw new FHIRException("Type mismatch: the type BooleanType was expected, but "+this.value.getClass().getName()+" was encountered");
1875          return (BooleanType) this.value;
1876        }
1877
1878        public boolean hasValueBooleanType() { 
1879          return this != null && this.value instanceof BooleanType;
1880        }
1881
1882        /**
1883         * @return {@link #value} (The value for this stratum, expressed as a CodeableConcept. When defining stratifiers on complex values, the value must be rendered such that the value for each stratum within the stratifier is unique.)
1884         */
1885        public Quantity getValueQuantity() throws FHIRException { 
1886          if (this.value == null)
1887            this.value = new Quantity();
1888          if (!(this.value instanceof Quantity))
1889            throw new FHIRException("Type mismatch: the type Quantity was expected, but "+this.value.getClass().getName()+" was encountered");
1890          return (Quantity) this.value;
1891        }
1892
1893        public boolean hasValueQuantity() { 
1894          return this != null && this.value instanceof Quantity;
1895        }
1896
1897        /**
1898         * @return {@link #value} (The value for this stratum, expressed as a CodeableConcept. When defining stratifiers on complex values, the value must be rendered such that the value for each stratum within the stratifier is unique.)
1899         */
1900        public Range getValueRange() throws FHIRException { 
1901          if (this.value == null)
1902            this.value = new Range();
1903          if (!(this.value instanceof Range))
1904            throw new FHIRException("Type mismatch: the type Range was expected, but "+this.value.getClass().getName()+" was encountered");
1905          return (Range) this.value;
1906        }
1907
1908        public boolean hasValueRange() { 
1909          return this != null && this.value instanceof Range;
1910        }
1911
1912        /**
1913         * @return {@link #value} (The value for this stratum, expressed as a CodeableConcept. When defining stratifiers on complex values, the value must be rendered such that the value for each stratum within the stratifier is unique.)
1914         */
1915        public Reference getValueReference() throws FHIRException { 
1916          if (this.value == null)
1917            this.value = new Reference();
1918          if (!(this.value instanceof Reference))
1919            throw new FHIRException("Type mismatch: the type Reference was expected, but "+this.value.getClass().getName()+" was encountered");
1920          return (Reference) this.value;
1921        }
1922
1923        public boolean hasValueReference() { 
1924          return this != null && this.value instanceof Reference;
1925        }
1926
1927        public boolean hasValue() { 
1928          return this.value != null && !this.value.isEmpty();
1929        }
1930
1931        /**
1932         * @param value {@link #value} (The value for this stratum, expressed as a CodeableConcept. When defining stratifiers on complex values, the value must be rendered such that the value for each stratum within the stratifier is unique.)
1933         */
1934        public StratifierGroupComponent setValue(DataType value) { 
1935          if (value != null && !(value instanceof CodeableConcept || value instanceof BooleanType || value instanceof Quantity || value instanceof Range || value instanceof Reference))
1936            throw new FHIRException("Not the right type for MeasureReport.group.stratifier.stratum.value[x]: "+value.fhirType());
1937          this.value = value;
1938          return this;
1939        }
1940
1941        /**
1942         * @return {@link #component} (A stratifier component value.)
1943         */
1944        public List<StratifierGroupComponentComponent> getComponent() { 
1945          if (this.component == null)
1946            this.component = new ArrayList<StratifierGroupComponentComponent>();
1947          return this.component;
1948        }
1949
1950        /**
1951         * @return Returns a reference to <code>this</code> for easy method chaining
1952         */
1953        public StratifierGroupComponent setComponent(List<StratifierGroupComponentComponent> theComponent) { 
1954          this.component = theComponent;
1955          return this;
1956        }
1957
1958        public boolean hasComponent() { 
1959          if (this.component == null)
1960            return false;
1961          for (StratifierGroupComponentComponent item : this.component)
1962            if (!item.isEmpty())
1963              return true;
1964          return false;
1965        }
1966
1967        public StratifierGroupComponentComponent addComponent() { //3
1968          StratifierGroupComponentComponent t = new StratifierGroupComponentComponent();
1969          if (this.component == null)
1970            this.component = new ArrayList<StratifierGroupComponentComponent>();
1971          this.component.add(t);
1972          return t;
1973        }
1974
1975        public StratifierGroupComponent addComponent(StratifierGroupComponentComponent t) { //3
1976          if (t == null)
1977            return this;
1978          if (this.component == null)
1979            this.component = new ArrayList<StratifierGroupComponentComponent>();
1980          this.component.add(t);
1981          return this;
1982        }
1983
1984        /**
1985         * @return The first repetition of repeating field {@link #component}, creating it if it does not already exist {3}
1986         */
1987        public StratifierGroupComponentComponent getComponentFirstRep() { 
1988          if (getComponent().isEmpty()) {
1989            addComponent();
1990          }
1991          return getComponent().get(0);
1992        }
1993
1994        /**
1995         * @return {@link #population} (The populations that make up the stratum, one for each type of population appropriate to the measure.)
1996         */
1997        public List<StratifierGroupPopulationComponent> getPopulation() { 
1998          if (this.population == null)
1999            this.population = new ArrayList<StratifierGroupPopulationComponent>();
2000          return this.population;
2001        }
2002
2003        /**
2004         * @return Returns a reference to <code>this</code> for easy method chaining
2005         */
2006        public StratifierGroupComponent setPopulation(List<StratifierGroupPopulationComponent> thePopulation) { 
2007          this.population = thePopulation;
2008          return this;
2009        }
2010
2011        public boolean hasPopulation() { 
2012          if (this.population == null)
2013            return false;
2014          for (StratifierGroupPopulationComponent item : this.population)
2015            if (!item.isEmpty())
2016              return true;
2017          return false;
2018        }
2019
2020        public StratifierGroupPopulationComponent addPopulation() { //3
2021          StratifierGroupPopulationComponent t = new StratifierGroupPopulationComponent();
2022          if (this.population == null)
2023            this.population = new ArrayList<StratifierGroupPopulationComponent>();
2024          this.population.add(t);
2025          return t;
2026        }
2027
2028        public StratifierGroupComponent addPopulation(StratifierGroupPopulationComponent t) { //3
2029          if (t == null)
2030            return this;
2031          if (this.population == null)
2032            this.population = new ArrayList<StratifierGroupPopulationComponent>();
2033          this.population.add(t);
2034          return this;
2035        }
2036
2037        /**
2038         * @return The first repetition of repeating field {@link #population}, creating it if it does not already exist {3}
2039         */
2040        public StratifierGroupPopulationComponent getPopulationFirstRep() { 
2041          if (getPopulation().isEmpty()) {
2042            addPopulation();
2043          }
2044          return getPopulation().get(0);
2045        }
2046
2047        /**
2048         * @return {@link #measureScore} (The measure score for this stratum, calculated as appropriate for the measure type and scoring method, and based on only the members of this stratum.)
2049         */
2050        public DataType getMeasureScore() { 
2051          return this.measureScore;
2052        }
2053
2054        /**
2055         * @return {@link #measureScore} (The measure score for this stratum, calculated as appropriate for the measure type and scoring method, and based on only the members of this stratum.)
2056         */
2057        public Quantity getMeasureScoreQuantity() throws FHIRException { 
2058          if (this.measureScore == null)
2059            this.measureScore = new Quantity();
2060          if (!(this.measureScore instanceof Quantity))
2061            throw new FHIRException("Type mismatch: the type Quantity was expected, but "+this.measureScore.getClass().getName()+" was encountered");
2062          return (Quantity) this.measureScore;
2063        }
2064
2065        public boolean hasMeasureScoreQuantity() { 
2066          return this != null && this.measureScore instanceof Quantity;
2067        }
2068
2069        /**
2070         * @return {@link #measureScore} (The measure score for this stratum, calculated as appropriate for the measure type and scoring method, and based on only the members of this stratum.)
2071         */
2072        public DateTimeType getMeasureScoreDateTimeType() throws FHIRException { 
2073          if (this.measureScore == null)
2074            this.measureScore = new DateTimeType();
2075          if (!(this.measureScore instanceof DateTimeType))
2076            throw new FHIRException("Type mismatch: the type DateTimeType was expected, but "+this.measureScore.getClass().getName()+" was encountered");
2077          return (DateTimeType) this.measureScore;
2078        }
2079
2080        public boolean hasMeasureScoreDateTimeType() { 
2081          return this != null && this.measureScore instanceof DateTimeType;
2082        }
2083
2084        /**
2085         * @return {@link #measureScore} (The measure score for this stratum, calculated as appropriate for the measure type and scoring method, and based on only the members of this stratum.)
2086         */
2087        public CodeableConcept getMeasureScoreCodeableConcept() throws FHIRException { 
2088          if (this.measureScore == null)
2089            this.measureScore = new CodeableConcept();
2090          if (!(this.measureScore instanceof CodeableConcept))
2091            throw new FHIRException("Type mismatch: the type CodeableConcept was expected, but "+this.measureScore.getClass().getName()+" was encountered");
2092          return (CodeableConcept) this.measureScore;
2093        }
2094
2095        public boolean hasMeasureScoreCodeableConcept() { 
2096          return this != null && this.measureScore instanceof CodeableConcept;
2097        }
2098
2099        /**
2100         * @return {@link #measureScore} (The measure score for this stratum, calculated as appropriate for the measure type and scoring method, and based on only the members of this stratum.)
2101         */
2102        public Period getMeasureScorePeriod() throws FHIRException { 
2103          if (this.measureScore == null)
2104            this.measureScore = new Period();
2105          if (!(this.measureScore instanceof Period))
2106            throw new FHIRException("Type mismatch: the type Period was expected, but "+this.measureScore.getClass().getName()+" was encountered");
2107          return (Period) this.measureScore;
2108        }
2109
2110        public boolean hasMeasureScorePeriod() { 
2111          return this != null && this.measureScore instanceof Period;
2112        }
2113
2114        /**
2115         * @return {@link #measureScore} (The measure score for this stratum, calculated as appropriate for the measure type and scoring method, and based on only the members of this stratum.)
2116         */
2117        public Range getMeasureScoreRange() throws FHIRException { 
2118          if (this.measureScore == null)
2119            this.measureScore = new Range();
2120          if (!(this.measureScore instanceof Range))
2121            throw new FHIRException("Type mismatch: the type Range was expected, but "+this.measureScore.getClass().getName()+" was encountered");
2122          return (Range) this.measureScore;
2123        }
2124
2125        public boolean hasMeasureScoreRange() { 
2126          return this != null && this.measureScore instanceof Range;
2127        }
2128
2129        /**
2130         * @return {@link #measureScore} (The measure score for this stratum, calculated as appropriate for the measure type and scoring method, and based on only the members of this stratum.)
2131         */
2132        public Duration getMeasureScoreDuration() throws FHIRException { 
2133          if (this.measureScore == null)
2134            this.measureScore = new Duration();
2135          if (!(this.measureScore instanceof Duration))
2136            throw new FHIRException("Type mismatch: the type Duration was expected, but "+this.measureScore.getClass().getName()+" was encountered");
2137          return (Duration) this.measureScore;
2138        }
2139
2140        public boolean hasMeasureScoreDuration() { 
2141          return this != null && this.measureScore instanceof Duration;
2142        }
2143
2144        public boolean hasMeasureScore() { 
2145          return this.measureScore != null && !this.measureScore.isEmpty();
2146        }
2147
2148        /**
2149         * @param value {@link #measureScore} (The measure score for this stratum, calculated as appropriate for the measure type and scoring method, and based on only the members of this stratum.)
2150         */
2151        public StratifierGroupComponent setMeasureScore(DataType value) { 
2152          if (value != null && !(value instanceof Quantity || value instanceof DateTimeType || value instanceof CodeableConcept || value instanceof Period || value instanceof Range || value instanceof Duration))
2153            throw new FHIRException("Not the right type for MeasureReport.group.stratifier.stratum.measureScore[x]: "+value.fhirType());
2154          this.measureScore = value;
2155          return this;
2156        }
2157
2158        protected void listChildren(List<Property> children) {
2159          super.listChildren(children);
2160          children.add(new Property("value[x]", "CodeableConcept|boolean|Quantity|Range|Reference", "The value for this stratum, expressed as a CodeableConcept. When defining stratifiers on complex values, the value must be rendered such that the value for each stratum within the stratifier is unique.", 0, 1, value));
2161          children.add(new Property("component", "", "A stratifier component value.", 0, java.lang.Integer.MAX_VALUE, component));
2162          children.add(new Property("population", "", "The populations that make up the stratum, one for each type of population appropriate to the measure.", 0, java.lang.Integer.MAX_VALUE, population));
2163          children.add(new Property("measureScore[x]", "Quantity|dateTime|CodeableConcept|Period|Range|Duration", "The measure score for this stratum, calculated as appropriate for the measure type and scoring method, and based on only the members of this stratum.", 0, 1, measureScore));
2164        }
2165
2166        @Override
2167        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
2168          switch (_hash) {
2169          case -1410166417: /*value[x]*/  return new Property("value[x]", "CodeableConcept|boolean|Quantity|Range|Reference", "The value for this stratum, expressed as a CodeableConcept. When defining stratifiers on complex values, the value must be rendered such that the value for each stratum within the stratifier is unique.", 0, 1, value);
2170          case 111972721: /*value*/  return new Property("value[x]", "CodeableConcept|boolean|Quantity|Range|Reference", "The value for this stratum, expressed as a CodeableConcept. When defining stratifiers on complex values, the value must be rendered such that the value for each stratum within the stratifier is unique.", 0, 1, value);
2171          case 924902896: /*valueCodeableConcept*/  return new Property("value[x]", "CodeableConcept", "The value for this stratum, expressed as a CodeableConcept. When defining stratifiers on complex values, the value must be rendered such that the value for each stratum within the stratifier is unique.", 0, 1, value);
2172          case 733421943: /*valueBoolean*/  return new Property("value[x]", "boolean", "The value for this stratum, expressed as a CodeableConcept. When defining stratifiers on complex values, the value must be rendered such that the value for each stratum within the stratifier is unique.", 0, 1, value);
2173          case -2029823716: /*valueQuantity*/  return new Property("value[x]", "Quantity", "The value for this stratum, expressed as a CodeableConcept. When defining stratifiers on complex values, the value must be rendered such that the value for each stratum within the stratifier is unique.", 0, 1, value);
2174          case 2030761548: /*valueRange*/  return new Property("value[x]", "Range", "The value for this stratum, expressed as a CodeableConcept. When defining stratifiers on complex values, the value must be rendered such that the value for each stratum within the stratifier is unique.", 0, 1, value);
2175          case 1755241690: /*valueReference*/  return new Property("value[x]", "Reference", "The value for this stratum, expressed as a CodeableConcept. When defining stratifiers on complex values, the value must be rendered such that the value for each stratum within the stratifier is unique.", 0, 1, value);
2176          case -1399907075: /*component*/  return new Property("component", "", "A stratifier component value.", 0, java.lang.Integer.MAX_VALUE, component);
2177          case -2023558323: /*population*/  return new Property("population", "", "The populations that make up the stratum, one for each type of population appropriate to the measure.", 0, java.lang.Integer.MAX_VALUE, population);
2178          case 1854115884: /*measureScore[x]*/  return new Property("measureScore[x]", "Quantity|dateTime|CodeableConcept|Period|Range|Duration", "The measure score for this stratum, calculated as appropriate for the measure type and scoring method, and based on only the members of this stratum.", 0, 1, measureScore);
2179          case -386313260: /*measureScore*/  return new Property("measureScore[x]", "Quantity|dateTime|CodeableConcept|Period|Range|Duration", "The measure score for this stratum, calculated as appropriate for the measure type and scoring method, and based on only the members of this stratum.", 0, 1, measureScore);
2180          case -1880815489: /*measureScoreQuantity*/  return new Property("measureScore[x]", "Quantity", "The measure score for this stratum, calculated as appropriate for the measure type and scoring method, and based on only the members of this stratum.", 0, 1, measureScore);
2181          case 1196938127: /*measureScoreDateTime*/  return new Property("measureScore[x]", "dateTime", "The measure score for this stratum, calculated as appropriate for the measure type and scoring method, and based on only the members of this stratum.", 0, 1, measureScore);
2182          case -1193234131: /*measureScoreCodeableConcept*/  return new Property("measureScore[x]", "CodeableConcept", "The measure score for this stratum, calculated as appropriate for the measure type and scoring method, and based on only the members of this stratum.", 0, 1, measureScore);
2183          case -1939831115: /*measureScorePeriod*/  return new Property("measureScore[x]", "Period", "The measure score for this stratum, calculated as appropriate for the measure type and scoring method, and based on only the members of this stratum.", 0, 1, measureScore);
2184          case -615040567: /*measureScoreRange*/  return new Property("measureScore[x]", "Range", "The measure score for this stratum, calculated as appropriate for the measure type and scoring method, and based on only the members of this stratum.", 0, 1, measureScore);
2185          case 1707143560: /*measureScoreDuration*/  return new Property("measureScore[x]", "Duration", "The measure score for this stratum, calculated as appropriate for the measure type and scoring method, and based on only the members of this stratum.", 0, 1, measureScore);
2186          default: return super.getNamedProperty(_hash, _name, _checkValid);
2187          }
2188
2189        }
2190
2191      @Override
2192      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
2193        switch (hash) {
2194        case 111972721: /*value*/ return this.value == null ? new Base[0] : new Base[] {this.value}; // DataType
2195        case -1399907075: /*component*/ return this.component == null ? new Base[0] : this.component.toArray(new Base[this.component.size()]); // StratifierGroupComponentComponent
2196        case -2023558323: /*population*/ return this.population == null ? new Base[0] : this.population.toArray(new Base[this.population.size()]); // StratifierGroupPopulationComponent
2197        case -386313260: /*measureScore*/ return this.measureScore == null ? new Base[0] : new Base[] {this.measureScore}; // DataType
2198        default: return super.getProperty(hash, name, checkValid);
2199        }
2200
2201      }
2202
2203      @Override
2204      public Base setProperty(int hash, String name, Base value) throws FHIRException {
2205        switch (hash) {
2206        case 111972721: // value
2207          this.value = TypeConvertor.castToType(value); // DataType
2208          return value;
2209        case -1399907075: // component
2210          this.getComponent().add((StratifierGroupComponentComponent) value); // StratifierGroupComponentComponent
2211          return value;
2212        case -2023558323: // population
2213          this.getPopulation().add((StratifierGroupPopulationComponent) value); // StratifierGroupPopulationComponent
2214          return value;
2215        case -386313260: // measureScore
2216          this.measureScore = TypeConvertor.castToType(value); // DataType
2217          return value;
2218        default: return super.setProperty(hash, name, value);
2219        }
2220
2221      }
2222
2223      @Override
2224      public Base setProperty(String name, Base value) throws FHIRException {
2225        if (name.equals("value[x]")) {
2226          this.value = TypeConvertor.castToType(value); // DataType
2227        } else if (name.equals("component")) {
2228          this.getComponent().add((StratifierGroupComponentComponent) value);
2229        } else if (name.equals("population")) {
2230          this.getPopulation().add((StratifierGroupPopulationComponent) value);
2231        } else if (name.equals("measureScore[x]")) {
2232          this.measureScore = TypeConvertor.castToType(value); // DataType
2233        } else
2234          return super.setProperty(name, value);
2235        return value;
2236      }
2237
2238  @Override
2239  public void removeChild(String name, Base value) throws FHIRException {
2240        if (name.equals("value[x]")) {
2241          this.value = null;
2242        } else if (name.equals("component")) {
2243          this.getComponent().remove((StratifierGroupComponentComponent) value);
2244        } else if (name.equals("population")) {
2245          this.getPopulation().remove((StratifierGroupPopulationComponent) value);
2246        } else if (name.equals("measureScore[x]")) {
2247          this.measureScore = null;
2248        } else
2249          super.removeChild(name, value);
2250        
2251      }
2252
2253      @Override
2254      public Base makeProperty(int hash, String name) throws FHIRException {
2255        switch (hash) {
2256        case -1410166417:  return getValue();
2257        case 111972721:  return getValue();
2258        case -1399907075:  return addComponent(); 
2259        case -2023558323:  return addPopulation(); 
2260        case 1854115884:  return getMeasureScore();
2261        case -386313260:  return getMeasureScore();
2262        default: return super.makeProperty(hash, name);
2263        }
2264
2265      }
2266
2267      @Override
2268      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
2269        switch (hash) {
2270        case 111972721: /*value*/ return new String[] {"CodeableConcept", "boolean", "Quantity", "Range", "Reference"};
2271        case -1399907075: /*component*/ return new String[] {};
2272        case -2023558323: /*population*/ return new String[] {};
2273        case -386313260: /*measureScore*/ return new String[] {"Quantity", "dateTime", "CodeableConcept", "Period", "Range", "Duration"};
2274        default: return super.getTypesForProperty(hash, name);
2275        }
2276
2277      }
2278
2279      @Override
2280      public Base addChild(String name) throws FHIRException {
2281        if (name.equals("valueCodeableConcept")) {
2282          this.value = new CodeableConcept();
2283          return this.value;
2284        }
2285        else if (name.equals("valueBoolean")) {
2286          this.value = new BooleanType();
2287          return this.value;
2288        }
2289        else if (name.equals("valueQuantity")) {
2290          this.value = new Quantity();
2291          return this.value;
2292        }
2293        else if (name.equals("valueRange")) {
2294          this.value = new Range();
2295          return this.value;
2296        }
2297        else if (name.equals("valueReference")) {
2298          this.value = new Reference();
2299          return this.value;
2300        }
2301        else if (name.equals("component")) {
2302          return addComponent();
2303        }
2304        else if (name.equals("population")) {
2305          return addPopulation();
2306        }
2307        else if (name.equals("measureScoreQuantity")) {
2308          this.measureScore = new Quantity();
2309          return this.measureScore;
2310        }
2311        else if (name.equals("measureScoreDateTime")) {
2312          this.measureScore = new DateTimeType();
2313          return this.measureScore;
2314        }
2315        else if (name.equals("measureScoreCodeableConcept")) {
2316          this.measureScore = new CodeableConcept();
2317          return this.measureScore;
2318        }
2319        else if (name.equals("measureScorePeriod")) {
2320          this.measureScore = new Period();
2321          return this.measureScore;
2322        }
2323        else if (name.equals("measureScoreRange")) {
2324          this.measureScore = new Range();
2325          return this.measureScore;
2326        }
2327        else if (name.equals("measureScoreDuration")) {
2328          this.measureScore = new Duration();
2329          return this.measureScore;
2330        }
2331        else
2332          return super.addChild(name);
2333      }
2334
2335      public StratifierGroupComponent copy() {
2336        StratifierGroupComponent dst = new StratifierGroupComponent();
2337        copyValues(dst);
2338        return dst;
2339      }
2340
2341      public void copyValues(StratifierGroupComponent dst) {
2342        super.copyValues(dst);
2343        dst.value = value == null ? null : value.copy();
2344        if (component != null) {
2345          dst.component = new ArrayList<StratifierGroupComponentComponent>();
2346          for (StratifierGroupComponentComponent i : component)
2347            dst.component.add(i.copy());
2348        };
2349        if (population != null) {
2350          dst.population = new ArrayList<StratifierGroupPopulationComponent>();
2351          for (StratifierGroupPopulationComponent i : population)
2352            dst.population.add(i.copy());
2353        };
2354        dst.measureScore = measureScore == null ? null : measureScore.copy();
2355      }
2356
2357      @Override
2358      public boolean equalsDeep(Base other_) {
2359        if (!super.equalsDeep(other_))
2360          return false;
2361        if (!(other_ instanceof StratifierGroupComponent))
2362          return false;
2363        StratifierGroupComponent o = (StratifierGroupComponent) other_;
2364        return compareDeep(value, o.value, true) && compareDeep(component, o.component, true) && compareDeep(population, o.population, true)
2365           && compareDeep(measureScore, o.measureScore, true);
2366      }
2367
2368      @Override
2369      public boolean equalsShallow(Base other_) {
2370        if (!super.equalsShallow(other_))
2371          return false;
2372        if (!(other_ instanceof StratifierGroupComponent))
2373          return false;
2374        StratifierGroupComponent o = (StratifierGroupComponent) other_;
2375        return true;
2376      }
2377
2378      public boolean isEmpty() {
2379        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(value, component, population
2380          , measureScore);
2381      }
2382
2383  public String fhirType() {
2384    return "MeasureReport.group.stratifier.stratum";
2385
2386  }
2387
2388  }
2389
2390    @Block()
2391    public static class StratifierGroupComponentComponent extends BackboneElement implements IBaseBackboneElement {
2392        /**
2393         * The stratifier component from the Measure that corresponds to this stratifier component in the MeasureReport resource.
2394         */
2395        @Child(name = "linkId", type = {StringType.class}, order=1, min=0, max=1, modifier=false, summary=false)
2396        @Description(shortDefinition="Pointer to specific stratifier component from Measure", formalDefinition="The stratifier component from the Measure that corresponds to this stratifier component in the MeasureReport resource." )
2397        protected StringType linkId;
2398
2399        /**
2400         * The code for the stratum component value.
2401         */
2402        @Child(name = "code", type = {CodeableConcept.class}, order=2, min=1, max=1, modifier=false, summary=false)
2403        @Description(shortDefinition="What stratifier component of the group", formalDefinition="The code for the stratum component value." )
2404        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/measure-stratifier-example")
2405        protected CodeableConcept code;
2406
2407        /**
2408         * The stratum component value.
2409         */
2410        @Child(name = "value", type = {CodeableConcept.class, BooleanType.class, Quantity.class, Range.class, Reference.class}, order=3, min=1, max=1, modifier=false, summary=false)
2411        @Description(shortDefinition="The stratum component value, e.g. male", formalDefinition="The stratum component value." )
2412        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/measurereport-stratifier-value-example")
2413        protected DataType value;
2414
2415        private static final long serialVersionUID = 368088311L;
2416
2417    /**
2418     * Constructor
2419     */
2420      public StratifierGroupComponentComponent() {
2421        super();
2422      }
2423
2424    /**
2425     * Constructor
2426     */
2427      public StratifierGroupComponentComponent(CodeableConcept code, DataType value) {
2428        super();
2429        this.setCode(code);
2430        this.setValue(value);
2431      }
2432
2433        /**
2434         * @return {@link #linkId} (The stratifier component from the Measure that corresponds to this stratifier component in the MeasureReport resource.). This is the underlying object with id, value and extensions. The accessor "getLinkId" gives direct access to the value
2435         */
2436        public StringType getLinkIdElement() { 
2437          if (this.linkId == null)
2438            if (Configuration.errorOnAutoCreate())
2439              throw new Error("Attempt to auto-create StratifierGroupComponentComponent.linkId");
2440            else if (Configuration.doAutoCreate())
2441              this.linkId = new StringType(); // bb
2442          return this.linkId;
2443        }
2444
2445        public boolean hasLinkIdElement() { 
2446          return this.linkId != null && !this.linkId.isEmpty();
2447        }
2448
2449        public boolean hasLinkId() { 
2450          return this.linkId != null && !this.linkId.isEmpty();
2451        }
2452
2453        /**
2454         * @param value {@link #linkId} (The stratifier component from the Measure that corresponds to this stratifier component in the MeasureReport resource.). This is the underlying object with id, value and extensions. The accessor "getLinkId" gives direct access to the value
2455         */
2456        public StratifierGroupComponentComponent setLinkIdElement(StringType value) { 
2457          this.linkId = value;
2458          return this;
2459        }
2460
2461        /**
2462         * @return The stratifier component from the Measure that corresponds to this stratifier component in the MeasureReport resource.
2463         */
2464        public String getLinkId() { 
2465          return this.linkId == null ? null : this.linkId.getValue();
2466        }
2467
2468        /**
2469         * @param value The stratifier component from the Measure that corresponds to this stratifier component in the MeasureReport resource.
2470         */
2471        public StratifierGroupComponentComponent setLinkId(String value) { 
2472          if (Utilities.noString(value))
2473            this.linkId = null;
2474          else {
2475            if (this.linkId == null)
2476              this.linkId = new StringType();
2477            this.linkId.setValue(value);
2478          }
2479          return this;
2480        }
2481
2482        /**
2483         * @return {@link #code} (The code for the stratum component value.)
2484         */
2485        public CodeableConcept getCode() { 
2486          if (this.code == null)
2487            if (Configuration.errorOnAutoCreate())
2488              throw new Error("Attempt to auto-create StratifierGroupComponentComponent.code");
2489            else if (Configuration.doAutoCreate())
2490              this.code = new CodeableConcept(); // cc
2491          return this.code;
2492        }
2493
2494        public boolean hasCode() { 
2495          return this.code != null && !this.code.isEmpty();
2496        }
2497
2498        /**
2499         * @param value {@link #code} (The code for the stratum component value.)
2500         */
2501        public StratifierGroupComponentComponent setCode(CodeableConcept value) { 
2502          this.code = value;
2503          return this;
2504        }
2505
2506        /**
2507         * @return {@link #value} (The stratum component value.)
2508         */
2509        public DataType getValue() { 
2510          return this.value;
2511        }
2512
2513        /**
2514         * @return {@link #value} (The stratum component value.)
2515         */
2516        public CodeableConcept getValueCodeableConcept() throws FHIRException { 
2517          if (this.value == null)
2518            this.value = new CodeableConcept();
2519          if (!(this.value instanceof CodeableConcept))
2520            throw new FHIRException("Type mismatch: the type CodeableConcept was expected, but "+this.value.getClass().getName()+" was encountered");
2521          return (CodeableConcept) this.value;
2522        }
2523
2524        public boolean hasValueCodeableConcept() { 
2525          return this != null && this.value instanceof CodeableConcept;
2526        }
2527
2528        /**
2529         * @return {@link #value} (The stratum component value.)
2530         */
2531        public BooleanType getValueBooleanType() throws FHIRException { 
2532          if (this.value == null)
2533            this.value = new BooleanType();
2534          if (!(this.value instanceof BooleanType))
2535            throw new FHIRException("Type mismatch: the type BooleanType was expected, but "+this.value.getClass().getName()+" was encountered");
2536          return (BooleanType) this.value;
2537        }
2538
2539        public boolean hasValueBooleanType() { 
2540          return this != null && this.value instanceof BooleanType;
2541        }
2542
2543        /**
2544         * @return {@link #value} (The stratum component value.)
2545         */
2546        public Quantity getValueQuantity() throws FHIRException { 
2547          if (this.value == null)
2548            this.value = new Quantity();
2549          if (!(this.value instanceof Quantity))
2550            throw new FHIRException("Type mismatch: the type Quantity was expected, but "+this.value.getClass().getName()+" was encountered");
2551          return (Quantity) this.value;
2552        }
2553
2554        public boolean hasValueQuantity() { 
2555          return this != null && this.value instanceof Quantity;
2556        }
2557
2558        /**
2559         * @return {@link #value} (The stratum component value.)
2560         */
2561        public Range getValueRange() throws FHIRException { 
2562          if (this.value == null)
2563            this.value = new Range();
2564          if (!(this.value instanceof Range))
2565            throw new FHIRException("Type mismatch: the type Range was expected, but "+this.value.getClass().getName()+" was encountered");
2566          return (Range) this.value;
2567        }
2568
2569        public boolean hasValueRange() { 
2570          return this != null && this.value instanceof Range;
2571        }
2572
2573        /**
2574         * @return {@link #value} (The stratum component value.)
2575         */
2576        public Reference getValueReference() throws FHIRException { 
2577          if (this.value == null)
2578            this.value = new Reference();
2579          if (!(this.value instanceof Reference))
2580            throw new FHIRException("Type mismatch: the type Reference was expected, but "+this.value.getClass().getName()+" was encountered");
2581          return (Reference) this.value;
2582        }
2583
2584        public boolean hasValueReference() { 
2585          return this != null && this.value instanceof Reference;
2586        }
2587
2588        public boolean hasValue() { 
2589          return this.value != null && !this.value.isEmpty();
2590        }
2591
2592        /**
2593         * @param value {@link #value} (The stratum component value.)
2594         */
2595        public StratifierGroupComponentComponent setValue(DataType value) { 
2596          if (value != null && !(value instanceof CodeableConcept || value instanceof BooleanType || value instanceof Quantity || value instanceof Range || value instanceof Reference))
2597            throw new FHIRException("Not the right type for MeasureReport.group.stratifier.stratum.component.value[x]: "+value.fhirType());
2598          this.value = value;
2599          return this;
2600        }
2601
2602        protected void listChildren(List<Property> children) {
2603          super.listChildren(children);
2604          children.add(new Property("linkId", "string", "The stratifier component from the Measure that corresponds to this stratifier component in the MeasureReport resource.", 0, 1, linkId));
2605          children.add(new Property("code", "CodeableConcept", "The code for the stratum component value.", 0, 1, code));
2606          children.add(new Property("value[x]", "CodeableConcept|boolean|Quantity|Range|Reference", "The stratum component value.", 0, 1, value));
2607        }
2608
2609        @Override
2610        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
2611          switch (_hash) {
2612          case -1102667083: /*linkId*/  return new Property("linkId", "string", "The stratifier component from the Measure that corresponds to this stratifier component in the MeasureReport resource.", 0, 1, linkId);
2613          case 3059181: /*code*/  return new Property("code", "CodeableConcept", "The code for the stratum component value.", 0, 1, code);
2614          case -1410166417: /*value[x]*/  return new Property("value[x]", "CodeableConcept|boolean|Quantity|Range|Reference", "The stratum component value.", 0, 1, value);
2615          case 111972721: /*value*/  return new Property("value[x]", "CodeableConcept|boolean|Quantity|Range|Reference", "The stratum component value.", 0, 1, value);
2616          case 924902896: /*valueCodeableConcept*/  return new Property("value[x]", "CodeableConcept", "The stratum component value.", 0, 1, value);
2617          case 733421943: /*valueBoolean*/  return new Property("value[x]", "boolean", "The stratum component value.", 0, 1, value);
2618          case -2029823716: /*valueQuantity*/  return new Property("value[x]", "Quantity", "The stratum component value.", 0, 1, value);
2619          case 2030761548: /*valueRange*/  return new Property("value[x]", "Range", "The stratum component value.", 0, 1, value);
2620          case 1755241690: /*valueReference*/  return new Property("value[x]", "Reference", "The stratum component value.", 0, 1, value);
2621          default: return super.getNamedProperty(_hash, _name, _checkValid);
2622          }
2623
2624        }
2625
2626      @Override
2627      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
2628        switch (hash) {
2629        case -1102667083: /*linkId*/ return this.linkId == null ? new Base[0] : new Base[] {this.linkId}; // StringType
2630        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // CodeableConcept
2631        case 111972721: /*value*/ return this.value == null ? new Base[0] : new Base[] {this.value}; // DataType
2632        default: return super.getProperty(hash, name, checkValid);
2633        }
2634
2635      }
2636
2637      @Override
2638      public Base setProperty(int hash, String name, Base value) throws FHIRException {
2639        switch (hash) {
2640        case -1102667083: // linkId
2641          this.linkId = TypeConvertor.castToString(value); // StringType
2642          return value;
2643        case 3059181: // code
2644          this.code = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
2645          return value;
2646        case 111972721: // value
2647          this.value = TypeConvertor.castToType(value); // DataType
2648          return value;
2649        default: return super.setProperty(hash, name, value);
2650        }
2651
2652      }
2653
2654      @Override
2655      public Base setProperty(String name, Base value) throws FHIRException {
2656        if (name.equals("linkId")) {
2657          this.linkId = TypeConvertor.castToString(value); // StringType
2658        } else if (name.equals("code")) {
2659          this.code = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
2660        } else if (name.equals("value[x]")) {
2661          this.value = TypeConvertor.castToType(value); // DataType
2662        } else
2663          return super.setProperty(name, value);
2664        return value;
2665      }
2666
2667  @Override
2668  public void removeChild(String name, Base value) throws FHIRException {
2669        if (name.equals("linkId")) {
2670          this.linkId = null;
2671        } else if (name.equals("code")) {
2672          this.code = null;
2673        } else if (name.equals("value[x]")) {
2674          this.value = null;
2675        } else
2676          super.removeChild(name, value);
2677        
2678      }
2679
2680      @Override
2681      public Base makeProperty(int hash, String name) throws FHIRException {
2682        switch (hash) {
2683        case -1102667083:  return getLinkIdElement();
2684        case 3059181:  return getCode();
2685        case -1410166417:  return getValue();
2686        case 111972721:  return getValue();
2687        default: return super.makeProperty(hash, name);
2688        }
2689
2690      }
2691
2692      @Override
2693      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
2694        switch (hash) {
2695        case -1102667083: /*linkId*/ return new String[] {"string"};
2696        case 3059181: /*code*/ return new String[] {"CodeableConcept"};
2697        case 111972721: /*value*/ return new String[] {"CodeableConcept", "boolean", "Quantity", "Range", "Reference"};
2698        default: return super.getTypesForProperty(hash, name);
2699        }
2700
2701      }
2702
2703      @Override
2704      public Base addChild(String name) throws FHIRException {
2705        if (name.equals("linkId")) {
2706          throw new FHIRException("Cannot call addChild on a singleton property MeasureReport.group.stratifier.stratum.component.linkId");
2707        }
2708        else if (name.equals("code")) {
2709          this.code = new CodeableConcept();
2710          return this.code;
2711        }
2712        else if (name.equals("valueCodeableConcept")) {
2713          this.value = new CodeableConcept();
2714          return this.value;
2715        }
2716        else if (name.equals("valueBoolean")) {
2717          this.value = new BooleanType();
2718          return this.value;
2719        }
2720        else if (name.equals("valueQuantity")) {
2721          this.value = new Quantity();
2722          return this.value;
2723        }
2724        else if (name.equals("valueRange")) {
2725          this.value = new Range();
2726          return this.value;
2727        }
2728        else if (name.equals("valueReference")) {
2729          this.value = new Reference();
2730          return this.value;
2731        }
2732        else
2733          return super.addChild(name);
2734      }
2735
2736      public StratifierGroupComponentComponent copy() {
2737        StratifierGroupComponentComponent dst = new StratifierGroupComponentComponent();
2738        copyValues(dst);
2739        return dst;
2740      }
2741
2742      public void copyValues(StratifierGroupComponentComponent dst) {
2743        super.copyValues(dst);
2744        dst.linkId = linkId == null ? null : linkId.copy();
2745        dst.code = code == null ? null : code.copy();
2746        dst.value = value == null ? null : value.copy();
2747      }
2748
2749      @Override
2750      public boolean equalsDeep(Base other_) {
2751        if (!super.equalsDeep(other_))
2752          return false;
2753        if (!(other_ instanceof StratifierGroupComponentComponent))
2754          return false;
2755        StratifierGroupComponentComponent o = (StratifierGroupComponentComponent) other_;
2756        return compareDeep(linkId, o.linkId, true) && compareDeep(code, o.code, true) && compareDeep(value, o.value, true)
2757          ;
2758      }
2759
2760      @Override
2761      public boolean equalsShallow(Base other_) {
2762        if (!super.equalsShallow(other_))
2763          return false;
2764        if (!(other_ instanceof StratifierGroupComponentComponent))
2765          return false;
2766        StratifierGroupComponentComponent o = (StratifierGroupComponentComponent) other_;
2767        return compareValues(linkId, o.linkId, true);
2768      }
2769
2770      public boolean isEmpty() {
2771        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(linkId, code, value);
2772      }
2773
2774  public String fhirType() {
2775    return "MeasureReport.group.stratifier.stratum.component";
2776
2777  }
2778
2779  }
2780
2781    @Block()
2782    public static class StratifierGroupPopulationComponent extends BackboneElement implements IBaseBackboneElement {
2783        /**
2784         * The population from the Measure that corresponds to this population in the MeasureReport resource.
2785         */
2786        @Child(name = "linkId", type = {StringType.class}, order=1, min=0, max=1, modifier=false, summary=false)
2787        @Description(shortDefinition="Pointer to specific population from Measure", formalDefinition="The population from the Measure that corresponds to this population in the MeasureReport resource." )
2788        protected StringType linkId;
2789
2790        /**
2791         * The type of the population.
2792         */
2793        @Child(name = "code", type = {CodeableConcept.class}, order=2, min=0, max=1, modifier=false, summary=false)
2794        @Description(shortDefinition="initial-population | numerator | numerator-exclusion | denominator | denominator-exclusion | denominator-exception | measure-population | measure-population-exclusion | measure-observation", formalDefinition="The type of the population." )
2795        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/measure-population")
2796        protected CodeableConcept code;
2797
2798        /**
2799         * The number of members of the population in this stratum.
2800         */
2801        @Child(name = "count", type = {IntegerType.class}, order=3, min=0, max=1, modifier=false, summary=false)
2802        @Description(shortDefinition="Size of the population", formalDefinition="The number of members of the population in this stratum." )
2803        protected IntegerType count;
2804
2805        /**
2806         * This element refers to a List of individual level MeasureReport resources, one for each subject in this population in this stratum.
2807         */
2808        @Child(name = "subjectResults", type = {ListResource.class}, order=4, min=0, max=1, modifier=false, summary=false)
2809        @Description(shortDefinition="For subject-list reports, the subject results in this population", formalDefinition="This element refers to a List of individual level MeasureReport resources, one for each subject in this population in this stratum." )
2810        protected Reference subjectResults;
2811
2812        /**
2813         * A reference to an individual level MeasureReport resource for a member of the population.
2814         */
2815        @Child(name = "subjectReport", type = {MeasureReport.class}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
2816        @Description(shortDefinition="For subject-list reports, a subject result in this population", formalDefinition="A reference to an individual level MeasureReport resource for a member of the population." )
2817        protected List<Reference> subjectReport;
2818
2819        /**
2820         * Optional Group identifying the individuals that make up the population.
2821         */
2822        @Child(name = "subjects", type = {Group.class}, order=6, min=0, max=1, modifier=false, summary=false)
2823        @Description(shortDefinition="What individual(s) in the population", formalDefinition="Optional Group identifying the individuals that make up the population." )
2824        protected Reference subjects;
2825
2826        private static final long serialVersionUID = -203678073L;
2827
2828    /**
2829     * Constructor
2830     */
2831      public StratifierGroupPopulationComponent() {
2832        super();
2833      }
2834
2835        /**
2836         * @return {@link #linkId} (The population from the Measure that corresponds to this population in the MeasureReport resource.). This is the underlying object with id, value and extensions. The accessor "getLinkId" gives direct access to the value
2837         */
2838        public StringType getLinkIdElement() { 
2839          if (this.linkId == null)
2840            if (Configuration.errorOnAutoCreate())
2841              throw new Error("Attempt to auto-create StratifierGroupPopulationComponent.linkId");
2842            else if (Configuration.doAutoCreate())
2843              this.linkId = new StringType(); // bb
2844          return this.linkId;
2845        }
2846
2847        public boolean hasLinkIdElement() { 
2848          return this.linkId != null && !this.linkId.isEmpty();
2849        }
2850
2851        public boolean hasLinkId() { 
2852          return this.linkId != null && !this.linkId.isEmpty();
2853        }
2854
2855        /**
2856         * @param value {@link #linkId} (The population from the Measure that corresponds to this population in the MeasureReport resource.). This is the underlying object with id, value and extensions. The accessor "getLinkId" gives direct access to the value
2857         */
2858        public StratifierGroupPopulationComponent setLinkIdElement(StringType value) { 
2859          this.linkId = value;
2860          return this;
2861        }
2862
2863        /**
2864         * @return The population from the Measure that corresponds to this population in the MeasureReport resource.
2865         */
2866        public String getLinkId() { 
2867          return this.linkId == null ? null : this.linkId.getValue();
2868        }
2869
2870        /**
2871         * @param value The population from the Measure that corresponds to this population in the MeasureReport resource.
2872         */
2873        public StratifierGroupPopulationComponent setLinkId(String value) { 
2874          if (Utilities.noString(value))
2875            this.linkId = null;
2876          else {
2877            if (this.linkId == null)
2878              this.linkId = new StringType();
2879            this.linkId.setValue(value);
2880          }
2881          return this;
2882        }
2883
2884        /**
2885         * @return {@link #code} (The type of the population.)
2886         */
2887        public CodeableConcept getCode() { 
2888          if (this.code == null)
2889            if (Configuration.errorOnAutoCreate())
2890              throw new Error("Attempt to auto-create StratifierGroupPopulationComponent.code");
2891            else if (Configuration.doAutoCreate())
2892              this.code = new CodeableConcept(); // cc
2893          return this.code;
2894        }
2895
2896        public boolean hasCode() { 
2897          return this.code != null && !this.code.isEmpty();
2898        }
2899
2900        /**
2901         * @param value {@link #code} (The type of the population.)
2902         */
2903        public StratifierGroupPopulationComponent setCode(CodeableConcept value) { 
2904          this.code = value;
2905          return this;
2906        }
2907
2908        /**
2909         * @return {@link #count} (The number of members of the population in this stratum.). This is the underlying object with id, value and extensions. The accessor "getCount" gives direct access to the value
2910         */
2911        public IntegerType getCountElement() { 
2912          if (this.count == null)
2913            if (Configuration.errorOnAutoCreate())
2914              throw new Error("Attempt to auto-create StratifierGroupPopulationComponent.count");
2915            else if (Configuration.doAutoCreate())
2916              this.count = new IntegerType(); // bb
2917          return this.count;
2918        }
2919
2920        public boolean hasCountElement() { 
2921          return this.count != null && !this.count.isEmpty();
2922        }
2923
2924        public boolean hasCount() { 
2925          return this.count != null && !this.count.isEmpty();
2926        }
2927
2928        /**
2929         * @param value {@link #count} (The number of members of the population in this stratum.). This is the underlying object with id, value and extensions. The accessor "getCount" gives direct access to the value
2930         */
2931        public StratifierGroupPopulationComponent setCountElement(IntegerType value) { 
2932          this.count = value;
2933          return this;
2934        }
2935
2936        /**
2937         * @return The number of members of the population in this stratum.
2938         */
2939        public int getCount() { 
2940          return this.count == null || this.count.isEmpty() ? 0 : this.count.getValue();
2941        }
2942
2943        /**
2944         * @param value The number of members of the population in this stratum.
2945         */
2946        public StratifierGroupPopulationComponent setCount(int value) { 
2947            if (this.count == null)
2948              this.count = new IntegerType();
2949            this.count.setValue(value);
2950          return this;
2951        }
2952
2953        /**
2954         * @return {@link #subjectResults} (This element refers to a List of individual level MeasureReport resources, one for each subject in this population in this stratum.)
2955         */
2956        public Reference getSubjectResults() { 
2957          if (this.subjectResults == null)
2958            if (Configuration.errorOnAutoCreate())
2959              throw new Error("Attempt to auto-create StratifierGroupPopulationComponent.subjectResults");
2960            else if (Configuration.doAutoCreate())
2961              this.subjectResults = new Reference(); // cc
2962          return this.subjectResults;
2963        }
2964
2965        public boolean hasSubjectResults() { 
2966          return this.subjectResults != null && !this.subjectResults.isEmpty();
2967        }
2968
2969        /**
2970         * @param value {@link #subjectResults} (This element refers to a List of individual level MeasureReport resources, one for each subject in this population in this stratum.)
2971         */
2972        public StratifierGroupPopulationComponent setSubjectResults(Reference value) { 
2973          this.subjectResults = value;
2974          return this;
2975        }
2976
2977        /**
2978         * @return {@link #subjectReport} (A reference to an individual level MeasureReport resource for a member of the population.)
2979         */
2980        public List<Reference> getSubjectReport() { 
2981          if (this.subjectReport == null)
2982            this.subjectReport = new ArrayList<Reference>();
2983          return this.subjectReport;
2984        }
2985
2986        /**
2987         * @return Returns a reference to <code>this</code> for easy method chaining
2988         */
2989        public StratifierGroupPopulationComponent setSubjectReport(List<Reference> theSubjectReport) { 
2990          this.subjectReport = theSubjectReport;
2991          return this;
2992        }
2993
2994        public boolean hasSubjectReport() { 
2995          if (this.subjectReport == null)
2996            return false;
2997          for (Reference item : this.subjectReport)
2998            if (!item.isEmpty())
2999              return true;
3000          return false;
3001        }
3002
3003        public Reference addSubjectReport() { //3
3004          Reference t = new Reference();
3005          if (this.subjectReport == null)
3006            this.subjectReport = new ArrayList<Reference>();
3007          this.subjectReport.add(t);
3008          return t;
3009        }
3010
3011        public StratifierGroupPopulationComponent addSubjectReport(Reference t) { //3
3012          if (t == null)
3013            return this;
3014          if (this.subjectReport == null)
3015            this.subjectReport = new ArrayList<Reference>();
3016          this.subjectReport.add(t);
3017          return this;
3018        }
3019
3020        /**
3021         * @return The first repetition of repeating field {@link #subjectReport}, creating it if it does not already exist {3}
3022         */
3023        public Reference getSubjectReportFirstRep() { 
3024          if (getSubjectReport().isEmpty()) {
3025            addSubjectReport();
3026          }
3027          return getSubjectReport().get(0);
3028        }
3029
3030        /**
3031         * @return {@link #subjects} (Optional Group identifying the individuals that make up the population.)
3032         */
3033        public Reference getSubjects() { 
3034          if (this.subjects == null)
3035            if (Configuration.errorOnAutoCreate())
3036              throw new Error("Attempt to auto-create StratifierGroupPopulationComponent.subjects");
3037            else if (Configuration.doAutoCreate())
3038              this.subjects = new Reference(); // cc
3039          return this.subjects;
3040        }
3041
3042        public boolean hasSubjects() { 
3043          return this.subjects != null && !this.subjects.isEmpty();
3044        }
3045
3046        /**
3047         * @param value {@link #subjects} (Optional Group identifying the individuals that make up the population.)
3048         */
3049        public StratifierGroupPopulationComponent setSubjects(Reference value) { 
3050          this.subjects = value;
3051          return this;
3052        }
3053
3054        protected void listChildren(List<Property> children) {
3055          super.listChildren(children);
3056          children.add(new Property("linkId", "string", "The population from the Measure that corresponds to this population in the MeasureReport resource.", 0, 1, linkId));
3057          children.add(new Property("code", "CodeableConcept", "The type of the population.", 0, 1, code));
3058          children.add(new Property("count", "integer", "The number of members of the population in this stratum.", 0, 1, count));
3059          children.add(new Property("subjectResults", "Reference(List)", "This element refers to a List of individual level MeasureReport resources, one for each subject in this population in this stratum.", 0, 1, subjectResults));
3060          children.add(new Property("subjectReport", "Reference(MeasureReport)", "A reference to an individual level MeasureReport resource for a member of the population.", 0, java.lang.Integer.MAX_VALUE, subjectReport));
3061          children.add(new Property("subjects", "Reference(Group)", "Optional Group identifying the individuals that make up the population.", 0, 1, subjects));
3062        }
3063
3064        @Override
3065        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
3066          switch (_hash) {
3067          case -1102667083: /*linkId*/  return new Property("linkId", "string", "The population from the Measure that corresponds to this population in the MeasureReport resource.", 0, 1, linkId);
3068          case 3059181: /*code*/  return new Property("code", "CodeableConcept", "The type of the population.", 0, 1, code);
3069          case 94851343: /*count*/  return new Property("count", "integer", "The number of members of the population in this stratum.", 0, 1, count);
3070          case 2136184106: /*subjectResults*/  return new Property("subjectResults", "Reference(List)", "This element refers to a List of individual level MeasureReport resources, one for each subject in this population in this stratum.", 0, 1, subjectResults);
3071          case 68814208: /*subjectReport*/  return new Property("subjectReport", "Reference(MeasureReport)", "A reference to an individual level MeasureReport resource for a member of the population.", 0, java.lang.Integer.MAX_VALUE, subjectReport);
3072          case -2069868345: /*subjects*/  return new Property("subjects", "Reference(Group)", "Optional Group identifying the individuals that make up the population.", 0, 1, subjects);
3073          default: return super.getNamedProperty(_hash, _name, _checkValid);
3074          }
3075
3076        }
3077
3078      @Override
3079      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
3080        switch (hash) {
3081        case -1102667083: /*linkId*/ return this.linkId == null ? new Base[0] : new Base[] {this.linkId}; // StringType
3082        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // CodeableConcept
3083        case 94851343: /*count*/ return this.count == null ? new Base[0] : new Base[] {this.count}; // IntegerType
3084        case 2136184106: /*subjectResults*/ return this.subjectResults == null ? new Base[0] : new Base[] {this.subjectResults}; // Reference
3085        case 68814208: /*subjectReport*/ return this.subjectReport == null ? new Base[0] : this.subjectReport.toArray(new Base[this.subjectReport.size()]); // Reference
3086        case -2069868345: /*subjects*/ return this.subjects == null ? new Base[0] : new Base[] {this.subjects}; // Reference
3087        default: return super.getProperty(hash, name, checkValid);
3088        }
3089
3090      }
3091
3092      @Override
3093      public Base setProperty(int hash, String name, Base value) throws FHIRException {
3094        switch (hash) {
3095        case -1102667083: // linkId
3096          this.linkId = TypeConvertor.castToString(value); // StringType
3097          return value;
3098        case 3059181: // code
3099          this.code = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
3100          return value;
3101        case 94851343: // count
3102          this.count = TypeConvertor.castToInteger(value); // IntegerType
3103          return value;
3104        case 2136184106: // subjectResults
3105          this.subjectResults = TypeConvertor.castToReference(value); // Reference
3106          return value;
3107        case 68814208: // subjectReport
3108          this.getSubjectReport().add(TypeConvertor.castToReference(value)); // Reference
3109          return value;
3110        case -2069868345: // subjects
3111          this.subjects = TypeConvertor.castToReference(value); // Reference
3112          return value;
3113        default: return super.setProperty(hash, name, value);
3114        }
3115
3116      }
3117
3118      @Override
3119      public Base setProperty(String name, Base value) throws FHIRException {
3120        if (name.equals("linkId")) {
3121          this.linkId = TypeConvertor.castToString(value); // StringType
3122        } else if (name.equals("code")) {
3123          this.code = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
3124        } else if (name.equals("count")) {
3125          this.count = TypeConvertor.castToInteger(value); // IntegerType
3126        } else if (name.equals("subjectResults")) {
3127          this.subjectResults = TypeConvertor.castToReference(value); // Reference
3128        } else if (name.equals("subjectReport")) {
3129          this.getSubjectReport().add(TypeConvertor.castToReference(value));
3130        } else if (name.equals("subjects")) {
3131          this.subjects = TypeConvertor.castToReference(value); // Reference
3132        } else
3133          return super.setProperty(name, value);
3134        return value;
3135      }
3136
3137  @Override
3138  public void removeChild(String name, Base value) throws FHIRException {
3139        if (name.equals("linkId")) {
3140          this.linkId = null;
3141        } else if (name.equals("code")) {
3142          this.code = null;
3143        } else if (name.equals("count")) {
3144          this.count = null;
3145        } else if (name.equals("subjectResults")) {
3146          this.subjectResults = null;
3147        } else if (name.equals("subjectReport")) {
3148          this.getSubjectReport().remove(value);
3149        } else if (name.equals("subjects")) {
3150          this.subjects = null;
3151        } else
3152          super.removeChild(name, value);
3153        
3154      }
3155
3156      @Override
3157      public Base makeProperty(int hash, String name) throws FHIRException {
3158        switch (hash) {
3159        case -1102667083:  return getLinkIdElement();
3160        case 3059181:  return getCode();
3161        case 94851343:  return getCountElement();
3162        case 2136184106:  return getSubjectResults();
3163        case 68814208:  return addSubjectReport(); 
3164        case -2069868345:  return getSubjects();
3165        default: return super.makeProperty(hash, name);
3166        }
3167
3168      }
3169
3170      @Override
3171      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
3172        switch (hash) {
3173        case -1102667083: /*linkId*/ return new String[] {"string"};
3174        case 3059181: /*code*/ return new String[] {"CodeableConcept"};
3175        case 94851343: /*count*/ return new String[] {"integer"};
3176        case 2136184106: /*subjectResults*/ return new String[] {"Reference"};
3177        case 68814208: /*subjectReport*/ return new String[] {"Reference"};
3178        case -2069868345: /*subjects*/ return new String[] {"Reference"};
3179        default: return super.getTypesForProperty(hash, name);
3180        }
3181
3182      }
3183
3184      @Override
3185      public Base addChild(String name) throws FHIRException {
3186        if (name.equals("linkId")) {
3187          throw new FHIRException("Cannot call addChild on a singleton property MeasureReport.group.stratifier.stratum.population.linkId");
3188        }
3189        else if (name.equals("code")) {
3190          this.code = new CodeableConcept();
3191          return this.code;
3192        }
3193        else if (name.equals("count")) {
3194          throw new FHIRException("Cannot call addChild on a singleton property MeasureReport.group.stratifier.stratum.population.count");
3195        }
3196        else if (name.equals("subjectResults")) {
3197          this.subjectResults = new Reference();
3198          return this.subjectResults;
3199        }
3200        else if (name.equals("subjectReport")) {
3201          return addSubjectReport();
3202        }
3203        else if (name.equals("subjects")) {
3204          this.subjects = new Reference();
3205          return this.subjects;
3206        }
3207        else
3208          return super.addChild(name);
3209      }
3210
3211      public StratifierGroupPopulationComponent copy() {
3212        StratifierGroupPopulationComponent dst = new StratifierGroupPopulationComponent();
3213        copyValues(dst);
3214        return dst;
3215      }
3216
3217      public void copyValues(StratifierGroupPopulationComponent dst) {
3218        super.copyValues(dst);
3219        dst.linkId = linkId == null ? null : linkId.copy();
3220        dst.code = code == null ? null : code.copy();
3221        dst.count = count == null ? null : count.copy();
3222        dst.subjectResults = subjectResults == null ? null : subjectResults.copy();
3223        if (subjectReport != null) {
3224          dst.subjectReport = new ArrayList<Reference>();
3225          for (Reference i : subjectReport)
3226            dst.subjectReport.add(i.copy());
3227        };
3228        dst.subjects = subjects == null ? null : subjects.copy();
3229      }
3230
3231      @Override
3232      public boolean equalsDeep(Base other_) {
3233        if (!super.equalsDeep(other_))
3234          return false;
3235        if (!(other_ instanceof StratifierGroupPopulationComponent))
3236          return false;
3237        StratifierGroupPopulationComponent o = (StratifierGroupPopulationComponent) other_;
3238        return compareDeep(linkId, o.linkId, true) && compareDeep(code, o.code, true) && compareDeep(count, o.count, true)
3239           && compareDeep(subjectResults, o.subjectResults, true) && compareDeep(subjectReport, o.subjectReport, true)
3240           && compareDeep(subjects, o.subjects, true);
3241      }
3242
3243      @Override
3244      public boolean equalsShallow(Base other_) {
3245        if (!super.equalsShallow(other_))
3246          return false;
3247        if (!(other_ instanceof StratifierGroupPopulationComponent))
3248          return false;
3249        StratifierGroupPopulationComponent o = (StratifierGroupPopulationComponent) other_;
3250        return compareValues(linkId, o.linkId, true) && compareValues(count, o.count, true);
3251      }
3252
3253      public boolean isEmpty() {
3254        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(linkId, code, count, subjectResults
3255          , subjectReport, subjects);
3256      }
3257
3258  public String fhirType() {
3259    return "MeasureReport.group.stratifier.stratum.population";
3260
3261  }
3262
3263  }
3264
3265    /**
3266     * A formal identifier that is used to identify this MeasureReport when it is represented in other formats or referenced in a specification, model, design or an instance.
3267     */
3268    @Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
3269    @Description(shortDefinition="Additional identifier for the MeasureReport", formalDefinition="A formal identifier that is used to identify this MeasureReport when it is represented in other formats or referenced in a specification, model, design or an instance." )
3270    protected List<Identifier> identifier;
3271
3272    /**
3273     * The MeasureReport status. No data will be available until the MeasureReport status is complete.
3274     */
3275    @Child(name = "status", type = {CodeType.class}, order=1, min=1, max=1, modifier=true, summary=true)
3276    @Description(shortDefinition="complete | pending | error", formalDefinition="The MeasureReport status. No data will be available until the MeasureReport status is complete." )
3277    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/measure-report-status")
3278    protected Enumeration<MeasureReportStatus> status;
3279
3280    /**
3281     * The type of measure report. This may be an individual report, which provides the score for the measure for an individual member of the population; a subject-listing, which returns the list of members that meet the various criteria in the measure; a summary report, which returns a population count for each of the criteria in the measure; or a data-collection, which enables the MeasureReport to be used to exchange the data-of-interest for a quality measure.
3282     */
3283    @Child(name = "type", type = {CodeType.class}, order=2, min=1, max=1, modifier=false, summary=true)
3284    @Description(shortDefinition="individual | subject-list | summary | data-exchange", formalDefinition="The type of measure report. This may be an individual report, which provides the score for the measure for an individual member of the population; a subject-listing, which returns the list of members that meet the various criteria in the measure; a summary report, which returns a population count for each of the criteria in the measure; or a data-collection, which enables the MeasureReport to be used to exchange the data-of-interest for a quality measure." )
3285    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/measure-report-type")
3286    protected Enumeration<MeasureReportType> type;
3287
3288    /**
3289     * Indicates whether the data submitted in a data-exchange report represents a snapshot or incremental update. A snapshot update replaces all previously submitted data for the receiver, whereas an incremental update represents only updated and/or changed data and should be applied as a differential update to the existing submitted data for the receiver.
3290     */
3291    @Child(name = "dataUpdateType", type = {CodeType.class}, order=3, min=0, max=1, modifier=true, summary=true)
3292    @Description(shortDefinition="incremental | snapshot", formalDefinition="Indicates whether the data submitted in a data-exchange report represents a snapshot or incremental update. A snapshot update replaces all previously submitted data for the receiver, whereas an incremental update represents only updated and/or changed data and should be applied as a differential update to the existing submitted data for the receiver." )
3293    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/submit-data-update-type")
3294    protected Enumeration<SubmitDataUpdateType> dataUpdateType;
3295
3296    /**
3297     * A reference to the Measure that was calculated to produce this report.
3298     */
3299    @Child(name = "measure", type = {CanonicalType.class}, order=4, min=0, max=1, modifier=false, summary=true)
3300    @Description(shortDefinition="What measure was calculated", formalDefinition="A reference to the Measure that was calculated to produce this report." )
3301    protected CanonicalType measure;
3302
3303    /**
3304     * Optional subject identifying the individual or individuals the report is for.
3305     */
3306    @Child(name = "subject", type = {CareTeam.class, Device.class, Group.class, HealthcareService.class, Location.class, Organization.class, Patient.class, Practitioner.class, PractitionerRole.class, RelatedPerson.class}, order=5, min=0, max=1, modifier=false, summary=true)
3307    @Description(shortDefinition="What individual(s) the report is for", formalDefinition="Optional subject identifying the individual or individuals the report is for." )
3308    protected Reference subject;
3309
3310    /**
3311     * The date this measure was calculated.
3312     */
3313    @Child(name = "date", type = {DateTimeType.class}, order=6, min=0, max=1, modifier=false, summary=true)
3314    @Description(shortDefinition="When the measure was calculated", formalDefinition="The date this measure was calculated." )
3315    protected DateTimeType date;
3316
3317    /**
3318     * The individual or organization that is reporting the data.
3319     */
3320    @Child(name = "reporter", type = {Practitioner.class, PractitionerRole.class, Organization.class, Group.class}, order=7, min=0, max=1, modifier=false, summary=true)
3321    @Description(shortDefinition="Who is reporting the data", formalDefinition="The individual or organization that is reporting the data." )
3322    protected Reference reporter;
3323
3324    /**
3325     * A reference to the vendor who queried the data, calculated results and/or generated the report. The ?reporting vendor? is intended to represent the submitting entity when it is not the same as the reporting entity. This extension is used when the Receiver is interested in getting vendor information in the report.
3326     */
3327    @Child(name = "reportingVendor", type = {Organization.class}, order=8, min=0, max=1, modifier=false, summary=false)
3328    @Description(shortDefinition="What vendor prepared the data", formalDefinition="A reference to the vendor who queried the data, calculated results and/or generated the report. The ?reporting vendor? is intended to represent the submitting entity when it is not the same as the reporting entity. This extension is used when the Receiver is interested in getting vendor information in the report." )
3329    protected Reference reportingVendor;
3330
3331    /**
3332     * A reference to the location for which the data is being reported.
3333     */
3334    @Child(name = "location", type = {Location.class}, order=9, min=0, max=1, modifier=false, summary=false)
3335    @Description(shortDefinition="Where the reported data is from", formalDefinition="A reference to the location for which the data is being reported." )
3336    protected Reference location;
3337
3338    /**
3339     * The reporting period for which the report was calculated.
3340     */
3341    @Child(name = "period", type = {Period.class}, order=10, min=1, max=1, modifier=false, summary=true)
3342    @Description(shortDefinition="What period the report covers", formalDefinition="The reporting period for which the report was calculated." )
3343    protected Period period;
3344
3345    /**
3346     * A reference to a Parameters resource (typically represented using a contained resource) that represents any input parameters that were provided to the operation that generated the report.
3347     */
3348    @Child(name = "inputParameters", type = {Parameters.class}, order=11, min=0, max=1, modifier=false, summary=false)
3349    @Description(shortDefinition="What parameters were provided to the report", formalDefinition="A reference to a Parameters resource (typically represented using a contained resource) that represents any input parameters that were provided to the operation that generated the report." )
3350    protected Reference inputParameters;
3351
3352    /**
3353     * Indicates how the calculation is performed for the measure, including proportion, ratio, continuous-variable, and cohort. The value set is extensible, allowing additional measure scoring types to be represented. It is expected to be the same as the scoring element on the referenced Measure.
3354     */
3355    @Child(name = "scoring", type = {CodeableConcept.class}, order=12, min=0, max=1, modifier=true, summary=true)
3356    @Description(shortDefinition="What scoring method (e.g. proportion, ratio, continuous-variable)", formalDefinition="Indicates how the calculation is performed for the measure, including proportion, ratio, continuous-variable, and cohort. The value set is extensible, allowing additional measure scoring types to be represented. It is expected to be the same as the scoring element on the referenced Measure." )
3357    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://terminology.hl7.org/ValueSet/measure-scoring")
3358    protected CodeableConcept scoring;
3359
3360    /**
3361     * Whether improvement in the measure is noted by an increase or decrease in the measure score.
3362     */
3363    @Child(name = "improvementNotation", type = {CodeableConcept.class}, order=13, min=0, max=1, modifier=true, summary=true)
3364    @Description(shortDefinition="increase | decrease", formalDefinition="Whether improvement in the measure is noted by an increase or decrease in the measure score." )
3365    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/measure-improvement-notation")
3366    protected CodeableConcept improvementNotation;
3367
3368    /**
3369     * The results of the calculation, one for each population group in the measure.
3370     */
3371    @Child(name = "group", type = {}, order=14, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
3372    @Description(shortDefinition="Measure results for each group", formalDefinition="The results of the calculation, one for each population group in the measure." )
3373    protected List<MeasureReportGroupComponent> group;
3374
3375    /**
3376     * A reference to a Resource that represents additional information collected for the report. If the value of the supplemental data is not a Resource (i.e. evaluating the supplementalData expression for this case in the measure results in a value that is not a FHIR Resource), it is reported as a reference to a contained Observation resource.
3377     */
3378    @Child(name = "supplementalData", type = {Reference.class}, order=15, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
3379    @Description(shortDefinition="Additional information collected for the report", formalDefinition="A reference to a Resource that represents additional information collected for the report. If the value of the supplemental data is not a Resource (i.e. evaluating the supplementalData expression for this case in the measure results in a value that is not a FHIR Resource), it is reported as a reference to a contained Observation resource." )
3380    protected List<Reference> supplementalData;
3381
3382    /**
3383     * Evaluated resources are used to capture what data was involved in the calculation of a measure. This usage is only allowed for individual reports to ensure that the size of the MeasureReport resource is bounded.
3384     */
3385    @Child(name = "evaluatedResource", type = {Reference.class}, order=16, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
3386    @Description(shortDefinition="What data was used to calculate the measure score", formalDefinition="Evaluated resources are used to capture what data was involved in the calculation of a measure. This usage is only allowed for individual reports to ensure that the size of the MeasureReport resource is bounded." )
3387    protected List<Reference> evaluatedResource;
3388
3389    private static final long serialVersionUID = 962133374L;
3390
3391  /**
3392   * Constructor
3393   */
3394    public MeasureReport() {
3395      super();
3396    }
3397
3398  /**
3399   * Constructor
3400   */
3401    public MeasureReport(MeasureReportStatus status, MeasureReportType type, Period period) {
3402      super();
3403      this.setStatus(status);
3404      this.setType(type);
3405      this.setPeriod(period);
3406    }
3407
3408    /**
3409     * @return {@link #identifier} (A formal identifier that is used to identify this MeasureReport when it is represented in other formats or referenced in a specification, model, design or an instance.)
3410     */
3411    public List<Identifier> getIdentifier() { 
3412      if (this.identifier == null)
3413        this.identifier = new ArrayList<Identifier>();
3414      return this.identifier;
3415    }
3416
3417    /**
3418     * @return Returns a reference to <code>this</code> for easy method chaining
3419     */
3420    public MeasureReport setIdentifier(List<Identifier> theIdentifier) { 
3421      this.identifier = theIdentifier;
3422      return this;
3423    }
3424
3425    public boolean hasIdentifier() { 
3426      if (this.identifier == null)
3427        return false;
3428      for (Identifier item : this.identifier)
3429        if (!item.isEmpty())
3430          return true;
3431      return false;
3432    }
3433
3434    public Identifier addIdentifier() { //3
3435      Identifier t = new Identifier();
3436      if (this.identifier == null)
3437        this.identifier = new ArrayList<Identifier>();
3438      this.identifier.add(t);
3439      return t;
3440    }
3441
3442    public MeasureReport addIdentifier(Identifier t) { //3
3443      if (t == null)
3444        return this;
3445      if (this.identifier == null)
3446        this.identifier = new ArrayList<Identifier>();
3447      this.identifier.add(t);
3448      return this;
3449    }
3450
3451    /**
3452     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {3}
3453     */
3454    public Identifier getIdentifierFirstRep() { 
3455      if (getIdentifier().isEmpty()) {
3456        addIdentifier();
3457      }
3458      return getIdentifier().get(0);
3459    }
3460
3461    /**
3462     * @return {@link #status} (The MeasureReport status. No data will be available until the MeasureReport status is complete.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
3463     */
3464    public Enumeration<MeasureReportStatus> getStatusElement() { 
3465      if (this.status == null)
3466        if (Configuration.errorOnAutoCreate())
3467          throw new Error("Attempt to auto-create MeasureReport.status");
3468        else if (Configuration.doAutoCreate())
3469          this.status = new Enumeration<MeasureReportStatus>(new MeasureReportStatusEnumFactory()); // bb
3470      return this.status;
3471    }
3472
3473    public boolean hasStatusElement() { 
3474      return this.status != null && !this.status.isEmpty();
3475    }
3476
3477    public boolean hasStatus() { 
3478      return this.status != null && !this.status.isEmpty();
3479    }
3480
3481    /**
3482     * @param value {@link #status} (The MeasureReport status. No data will be available until the MeasureReport status is complete.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
3483     */
3484    public MeasureReport setStatusElement(Enumeration<MeasureReportStatus> value) { 
3485      this.status = value;
3486      return this;
3487    }
3488
3489    /**
3490     * @return The MeasureReport status. No data will be available until the MeasureReport status is complete.
3491     */
3492    public MeasureReportStatus getStatus() { 
3493      return this.status == null ? null : this.status.getValue();
3494    }
3495
3496    /**
3497     * @param value The MeasureReport status. No data will be available until the MeasureReport status is complete.
3498     */
3499    public MeasureReport setStatus(MeasureReportStatus value) { 
3500        if (this.status == null)
3501          this.status = new Enumeration<MeasureReportStatus>(new MeasureReportStatusEnumFactory());
3502        this.status.setValue(value);
3503      return this;
3504    }
3505
3506    /**
3507     * @return {@link #type} (The type of measure report. This may be an individual report, which provides the score for the measure for an individual member of the population; a subject-listing, which returns the list of members that meet the various criteria in the measure; a summary report, which returns a population count for each of the criteria in the measure; or a data-collection, which enables the MeasureReport to be used to exchange the data-of-interest for a quality measure.). This is the underlying object with id, value and extensions. The accessor "getType" gives direct access to the value
3508     */
3509    public Enumeration<MeasureReportType> getTypeElement() { 
3510      if (this.type == null)
3511        if (Configuration.errorOnAutoCreate())
3512          throw new Error("Attempt to auto-create MeasureReport.type");
3513        else if (Configuration.doAutoCreate())
3514          this.type = new Enumeration<MeasureReportType>(new MeasureReportTypeEnumFactory()); // bb
3515      return this.type;
3516    }
3517
3518    public boolean hasTypeElement() { 
3519      return this.type != null && !this.type.isEmpty();
3520    }
3521
3522    public boolean hasType() { 
3523      return this.type != null && !this.type.isEmpty();
3524    }
3525
3526    /**
3527     * @param value {@link #type} (The type of measure report. This may be an individual report, which provides the score for the measure for an individual member of the population; a subject-listing, which returns the list of members that meet the various criteria in the measure; a summary report, which returns a population count for each of the criteria in the measure; or a data-collection, which enables the MeasureReport to be used to exchange the data-of-interest for a quality measure.). This is the underlying object with id, value and extensions. The accessor "getType" gives direct access to the value
3528     */
3529    public MeasureReport setTypeElement(Enumeration<MeasureReportType> value) { 
3530      this.type = value;
3531      return this;
3532    }
3533
3534    /**
3535     * @return The type of measure report. This may be an individual report, which provides the score for the measure for an individual member of the population; a subject-listing, which returns the list of members that meet the various criteria in the measure; a summary report, which returns a population count for each of the criteria in the measure; or a data-collection, which enables the MeasureReport to be used to exchange the data-of-interest for a quality measure.
3536     */
3537    public MeasureReportType getType() { 
3538      return this.type == null ? null : this.type.getValue();
3539    }
3540
3541    /**
3542     * @param value The type of measure report. This may be an individual report, which provides the score for the measure for an individual member of the population; a subject-listing, which returns the list of members that meet the various criteria in the measure; a summary report, which returns a population count for each of the criteria in the measure; or a data-collection, which enables the MeasureReport to be used to exchange the data-of-interest for a quality measure.
3543     */
3544    public MeasureReport setType(MeasureReportType value) { 
3545        if (this.type == null)
3546          this.type = new Enumeration<MeasureReportType>(new MeasureReportTypeEnumFactory());
3547        this.type.setValue(value);
3548      return this;
3549    }
3550
3551    /**
3552     * @return {@link #dataUpdateType} (Indicates whether the data submitted in a data-exchange report represents a snapshot or incremental update. A snapshot update replaces all previously submitted data for the receiver, whereas an incremental update represents only updated and/or changed data and should be applied as a differential update to the existing submitted data for the receiver.). This is the underlying object with id, value and extensions. The accessor "getDataUpdateType" gives direct access to the value
3553     */
3554    public Enumeration<SubmitDataUpdateType> getDataUpdateTypeElement() { 
3555      if (this.dataUpdateType == null)
3556        if (Configuration.errorOnAutoCreate())
3557          throw new Error("Attempt to auto-create MeasureReport.dataUpdateType");
3558        else if (Configuration.doAutoCreate())
3559          this.dataUpdateType = new Enumeration<SubmitDataUpdateType>(new SubmitDataUpdateTypeEnumFactory()); // bb
3560      return this.dataUpdateType;
3561    }
3562
3563    public boolean hasDataUpdateTypeElement() { 
3564      return this.dataUpdateType != null && !this.dataUpdateType.isEmpty();
3565    }
3566
3567    public boolean hasDataUpdateType() { 
3568      return this.dataUpdateType != null && !this.dataUpdateType.isEmpty();
3569    }
3570
3571    /**
3572     * @param value {@link #dataUpdateType} (Indicates whether the data submitted in a data-exchange report represents a snapshot or incremental update. A snapshot update replaces all previously submitted data for the receiver, whereas an incremental update represents only updated and/or changed data and should be applied as a differential update to the existing submitted data for the receiver.). This is the underlying object with id, value and extensions. The accessor "getDataUpdateType" gives direct access to the value
3573     */
3574    public MeasureReport setDataUpdateTypeElement(Enumeration<SubmitDataUpdateType> value) { 
3575      this.dataUpdateType = value;
3576      return this;
3577    }
3578
3579    /**
3580     * @return Indicates whether the data submitted in a data-exchange report represents a snapshot or incremental update. A snapshot update replaces all previously submitted data for the receiver, whereas an incremental update represents only updated and/or changed data and should be applied as a differential update to the existing submitted data for the receiver.
3581     */
3582    public SubmitDataUpdateType getDataUpdateType() { 
3583      return this.dataUpdateType == null ? null : this.dataUpdateType.getValue();
3584    }
3585
3586    /**
3587     * @param value Indicates whether the data submitted in a data-exchange report represents a snapshot or incremental update. A snapshot update replaces all previously submitted data for the receiver, whereas an incremental update represents only updated and/or changed data and should be applied as a differential update to the existing submitted data for the receiver.
3588     */
3589    public MeasureReport setDataUpdateType(SubmitDataUpdateType value) { 
3590      if (value == null)
3591        this.dataUpdateType = null;
3592      else {
3593        if (this.dataUpdateType == null)
3594          this.dataUpdateType = new Enumeration<SubmitDataUpdateType>(new SubmitDataUpdateTypeEnumFactory());
3595        this.dataUpdateType.setValue(value);
3596      }
3597      return this;
3598    }
3599
3600    /**
3601     * @return {@link #measure} (A reference to the Measure that was calculated to produce this report.). This is the underlying object with id, value and extensions. The accessor "getMeasure" gives direct access to the value
3602     */
3603    public CanonicalType getMeasureElement() { 
3604      if (this.measure == null)
3605        if (Configuration.errorOnAutoCreate())
3606          throw new Error("Attempt to auto-create MeasureReport.measure");
3607        else if (Configuration.doAutoCreate())
3608          this.measure = new CanonicalType(); // bb
3609      return this.measure;
3610    }
3611
3612    public boolean hasMeasureElement() { 
3613      return this.measure != null && !this.measure.isEmpty();
3614    }
3615
3616    public boolean hasMeasure() { 
3617      return this.measure != null && !this.measure.isEmpty();
3618    }
3619
3620    /**
3621     * @param value {@link #measure} (A reference to the Measure that was calculated to produce this report.). This is the underlying object with id, value and extensions. The accessor "getMeasure" gives direct access to the value
3622     */
3623    public MeasureReport setMeasureElement(CanonicalType value) { 
3624      this.measure = value;
3625      return this;
3626    }
3627
3628    /**
3629     * @return A reference to the Measure that was calculated to produce this report.
3630     */
3631    public String getMeasure() { 
3632      return this.measure == null ? null : this.measure.getValue();
3633    }
3634
3635    /**
3636     * @param value A reference to the Measure that was calculated to produce this report.
3637     */
3638    public MeasureReport setMeasure(String value) { 
3639      if (Utilities.noString(value))
3640        this.measure = null;
3641      else {
3642        if (this.measure == null)
3643          this.measure = new CanonicalType();
3644        this.measure.setValue(value);
3645      }
3646      return this;
3647    }
3648
3649    /**
3650     * @return {@link #subject} (Optional subject identifying the individual or individuals the report is for.)
3651     */
3652    public Reference getSubject() { 
3653      if (this.subject == null)
3654        if (Configuration.errorOnAutoCreate())
3655          throw new Error("Attempt to auto-create MeasureReport.subject");
3656        else if (Configuration.doAutoCreate())
3657          this.subject = new Reference(); // cc
3658      return this.subject;
3659    }
3660
3661    public boolean hasSubject() { 
3662      return this.subject != null && !this.subject.isEmpty();
3663    }
3664
3665    /**
3666     * @param value {@link #subject} (Optional subject identifying the individual or individuals the report is for.)
3667     */
3668    public MeasureReport setSubject(Reference value) { 
3669      this.subject = value;
3670      return this;
3671    }
3672
3673    /**
3674     * @return {@link #date} (The date this measure was calculated.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
3675     */
3676    public DateTimeType getDateElement() { 
3677      if (this.date == null)
3678        if (Configuration.errorOnAutoCreate())
3679          throw new Error("Attempt to auto-create MeasureReport.date");
3680        else if (Configuration.doAutoCreate())
3681          this.date = new DateTimeType(); // bb
3682      return this.date;
3683    }
3684
3685    public boolean hasDateElement() { 
3686      return this.date != null && !this.date.isEmpty();
3687    }
3688
3689    public boolean hasDate() { 
3690      return this.date != null && !this.date.isEmpty();
3691    }
3692
3693    /**
3694     * @param value {@link #date} (The date this measure was calculated.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
3695     */
3696    public MeasureReport setDateElement(DateTimeType value) { 
3697      this.date = value;
3698      return this;
3699    }
3700
3701    /**
3702     * @return The date this measure was calculated.
3703     */
3704    public Date getDate() { 
3705      return this.date == null ? null : this.date.getValue();
3706    }
3707
3708    /**
3709     * @param value The date this measure was calculated.
3710     */
3711    public MeasureReport setDate(Date value) { 
3712      if (value == null)
3713        this.date = null;
3714      else {
3715        if (this.date == null)
3716          this.date = new DateTimeType();
3717        this.date.setValue(value);
3718      }
3719      return this;
3720    }
3721
3722    /**
3723     * @return {@link #reporter} (The individual or organization that is reporting the data.)
3724     */
3725    public Reference getReporter() { 
3726      if (this.reporter == null)
3727        if (Configuration.errorOnAutoCreate())
3728          throw new Error("Attempt to auto-create MeasureReport.reporter");
3729        else if (Configuration.doAutoCreate())
3730          this.reporter = new Reference(); // cc
3731      return this.reporter;
3732    }
3733
3734    public boolean hasReporter() { 
3735      return this.reporter != null && !this.reporter.isEmpty();
3736    }
3737
3738    /**
3739     * @param value {@link #reporter} (The individual or organization that is reporting the data.)
3740     */
3741    public MeasureReport setReporter(Reference value) { 
3742      this.reporter = value;
3743      return this;
3744    }
3745
3746    /**
3747     * @return {@link #reportingVendor} (A reference to the vendor who queried the data, calculated results and/or generated the report. The ?reporting vendor? is intended to represent the submitting entity when it is not the same as the reporting entity. This extension is used when the Receiver is interested in getting vendor information in the report.)
3748     */
3749    public Reference getReportingVendor() { 
3750      if (this.reportingVendor == null)
3751        if (Configuration.errorOnAutoCreate())
3752          throw new Error("Attempt to auto-create MeasureReport.reportingVendor");
3753        else if (Configuration.doAutoCreate())
3754          this.reportingVendor = new Reference(); // cc
3755      return this.reportingVendor;
3756    }
3757
3758    public boolean hasReportingVendor() { 
3759      return this.reportingVendor != null && !this.reportingVendor.isEmpty();
3760    }
3761
3762    /**
3763     * @param value {@link #reportingVendor} (A reference to the vendor who queried the data, calculated results and/or generated the report. The ?reporting vendor? is intended to represent the submitting entity when it is not the same as the reporting entity. This extension is used when the Receiver is interested in getting vendor information in the report.)
3764     */
3765    public MeasureReport setReportingVendor(Reference value) { 
3766      this.reportingVendor = value;
3767      return this;
3768    }
3769
3770    /**
3771     * @return {@link #location} (A reference to the location for which the data is being reported.)
3772     */
3773    public Reference getLocation() { 
3774      if (this.location == null)
3775        if (Configuration.errorOnAutoCreate())
3776          throw new Error("Attempt to auto-create MeasureReport.location");
3777        else if (Configuration.doAutoCreate())
3778          this.location = new Reference(); // cc
3779      return this.location;
3780    }
3781
3782    public boolean hasLocation() { 
3783      return this.location != null && !this.location.isEmpty();
3784    }
3785
3786    /**
3787     * @param value {@link #location} (A reference to the location for which the data is being reported.)
3788     */
3789    public MeasureReport setLocation(Reference value) { 
3790      this.location = value;
3791      return this;
3792    }
3793
3794    /**
3795     * @return {@link #period} (The reporting period for which the report was calculated.)
3796     */
3797    public Period getPeriod() { 
3798      if (this.period == null)
3799        if (Configuration.errorOnAutoCreate())
3800          throw new Error("Attempt to auto-create MeasureReport.period");
3801        else if (Configuration.doAutoCreate())
3802          this.period = new Period(); // cc
3803      return this.period;
3804    }
3805
3806    public boolean hasPeriod() { 
3807      return this.period != null && !this.period.isEmpty();
3808    }
3809
3810    /**
3811     * @param value {@link #period} (The reporting period for which the report was calculated.)
3812     */
3813    public MeasureReport setPeriod(Period value) { 
3814      this.period = value;
3815      return this;
3816    }
3817
3818    /**
3819     * @return {@link #inputParameters} (A reference to a Parameters resource (typically represented using a contained resource) that represents any input parameters that were provided to the operation that generated the report.)
3820     */
3821    public Reference getInputParameters() { 
3822      if (this.inputParameters == null)
3823        if (Configuration.errorOnAutoCreate())
3824          throw new Error("Attempt to auto-create MeasureReport.inputParameters");
3825        else if (Configuration.doAutoCreate())
3826          this.inputParameters = new Reference(); // cc
3827      return this.inputParameters;
3828    }
3829
3830    public boolean hasInputParameters() { 
3831      return this.inputParameters != null && !this.inputParameters.isEmpty();
3832    }
3833
3834    /**
3835     * @param value {@link #inputParameters} (A reference to a Parameters resource (typically represented using a contained resource) that represents any input parameters that were provided to the operation that generated the report.)
3836     */
3837    public MeasureReport setInputParameters(Reference value) { 
3838      this.inputParameters = value;
3839      return this;
3840    }
3841
3842    /**
3843     * @return {@link #scoring} (Indicates how the calculation is performed for the measure, including proportion, ratio, continuous-variable, and cohort. The value set is extensible, allowing additional measure scoring types to be represented. It is expected to be the same as the scoring element on the referenced Measure.)
3844     */
3845    public CodeableConcept getScoring() { 
3846      if (this.scoring == null)
3847        if (Configuration.errorOnAutoCreate())
3848          throw new Error("Attempt to auto-create MeasureReport.scoring");
3849        else if (Configuration.doAutoCreate())
3850          this.scoring = new CodeableConcept(); // cc
3851      return this.scoring;
3852    }
3853
3854    public boolean hasScoring() { 
3855      return this.scoring != null && !this.scoring.isEmpty();
3856    }
3857
3858    /**
3859     * @param value {@link #scoring} (Indicates how the calculation is performed for the measure, including proportion, ratio, continuous-variable, and cohort. The value set is extensible, allowing additional measure scoring types to be represented. It is expected to be the same as the scoring element on the referenced Measure.)
3860     */
3861    public MeasureReport setScoring(CodeableConcept value) { 
3862      this.scoring = value;
3863      return this;
3864    }
3865
3866    /**
3867     * @return {@link #improvementNotation} (Whether improvement in the measure is noted by an increase or decrease in the measure score.)
3868     */
3869    public CodeableConcept getImprovementNotation() { 
3870      if (this.improvementNotation == null)
3871        if (Configuration.errorOnAutoCreate())
3872          throw new Error("Attempt to auto-create MeasureReport.improvementNotation");
3873        else if (Configuration.doAutoCreate())
3874          this.improvementNotation = new CodeableConcept(); // cc
3875      return this.improvementNotation;
3876    }
3877
3878    public boolean hasImprovementNotation() { 
3879      return this.improvementNotation != null && !this.improvementNotation.isEmpty();
3880    }
3881
3882    /**
3883     * @param value {@link #improvementNotation} (Whether improvement in the measure is noted by an increase or decrease in the measure score.)
3884     */
3885    public MeasureReport setImprovementNotation(CodeableConcept value) { 
3886      this.improvementNotation = value;
3887      return this;
3888    }
3889
3890    /**
3891     * @return {@link #group} (The results of the calculation, one for each population group in the measure.)
3892     */
3893    public List<MeasureReportGroupComponent> getGroup() { 
3894      if (this.group == null)
3895        this.group = new ArrayList<MeasureReportGroupComponent>();
3896      return this.group;
3897    }
3898
3899    /**
3900     * @return Returns a reference to <code>this</code> for easy method chaining
3901     */
3902    public MeasureReport setGroup(List<MeasureReportGroupComponent> theGroup) { 
3903      this.group = theGroup;
3904      return this;
3905    }
3906
3907    public boolean hasGroup() { 
3908      if (this.group == null)
3909        return false;
3910      for (MeasureReportGroupComponent item : this.group)
3911        if (!item.isEmpty())
3912          return true;
3913      return false;
3914    }
3915
3916    public MeasureReportGroupComponent addGroup() { //3
3917      MeasureReportGroupComponent t = new MeasureReportGroupComponent();
3918      if (this.group == null)
3919        this.group = new ArrayList<MeasureReportGroupComponent>();
3920      this.group.add(t);
3921      return t;
3922    }
3923
3924    public MeasureReport addGroup(MeasureReportGroupComponent t) { //3
3925      if (t == null)
3926        return this;
3927      if (this.group == null)
3928        this.group = new ArrayList<MeasureReportGroupComponent>();
3929      this.group.add(t);
3930      return this;
3931    }
3932
3933    /**
3934     * @return The first repetition of repeating field {@link #group}, creating it if it does not already exist {3}
3935     */
3936    public MeasureReportGroupComponent getGroupFirstRep() { 
3937      if (getGroup().isEmpty()) {
3938        addGroup();
3939      }
3940      return getGroup().get(0);
3941    }
3942
3943    /**
3944     * @return {@link #supplementalData} (A reference to a Resource that represents additional information collected for the report. If the value of the supplemental data is not a Resource (i.e. evaluating the supplementalData expression for this case in the measure results in a value that is not a FHIR Resource), it is reported as a reference to a contained Observation resource.)
3945     */
3946    public List<Reference> getSupplementalData() { 
3947      if (this.supplementalData == null)
3948        this.supplementalData = new ArrayList<Reference>();
3949      return this.supplementalData;
3950    }
3951
3952    /**
3953     * @return Returns a reference to <code>this</code> for easy method chaining
3954     */
3955    public MeasureReport setSupplementalData(List<Reference> theSupplementalData) { 
3956      this.supplementalData = theSupplementalData;
3957      return this;
3958    }
3959
3960    public boolean hasSupplementalData() { 
3961      if (this.supplementalData == null)
3962        return false;
3963      for (Reference item : this.supplementalData)
3964        if (!item.isEmpty())
3965          return true;
3966      return false;
3967    }
3968
3969    public Reference addSupplementalData() { //3
3970      Reference t = new Reference();
3971      if (this.supplementalData == null)
3972        this.supplementalData = new ArrayList<Reference>();
3973      this.supplementalData.add(t);
3974      return t;
3975    }
3976
3977    public MeasureReport addSupplementalData(Reference t) { //3
3978      if (t == null)
3979        return this;
3980      if (this.supplementalData == null)
3981        this.supplementalData = new ArrayList<Reference>();
3982      this.supplementalData.add(t);
3983      return this;
3984    }
3985
3986    /**
3987     * @return The first repetition of repeating field {@link #supplementalData}, creating it if it does not already exist {3}
3988     */
3989    public Reference getSupplementalDataFirstRep() { 
3990      if (getSupplementalData().isEmpty()) {
3991        addSupplementalData();
3992      }
3993      return getSupplementalData().get(0);
3994    }
3995
3996    /**
3997     * @return {@link #evaluatedResource} (Evaluated resources are used to capture what data was involved in the calculation of a measure. This usage is only allowed for individual reports to ensure that the size of the MeasureReport resource is bounded.)
3998     */
3999    public List<Reference> getEvaluatedResource() { 
4000      if (this.evaluatedResource == null)
4001        this.evaluatedResource = new ArrayList<Reference>();
4002      return this.evaluatedResource;
4003    }
4004
4005    /**
4006     * @return Returns a reference to <code>this</code> for easy method chaining
4007     */
4008    public MeasureReport setEvaluatedResource(List<Reference> theEvaluatedResource) { 
4009      this.evaluatedResource = theEvaluatedResource;
4010      return this;
4011    }
4012
4013    public boolean hasEvaluatedResource() { 
4014      if (this.evaluatedResource == null)
4015        return false;
4016      for (Reference item : this.evaluatedResource)
4017        if (!item.isEmpty())
4018          return true;
4019      return false;
4020    }
4021
4022    public Reference addEvaluatedResource() { //3
4023      Reference t = new Reference();
4024      if (this.evaluatedResource == null)
4025        this.evaluatedResource = new ArrayList<Reference>();
4026      this.evaluatedResource.add(t);
4027      return t;
4028    }
4029
4030    public MeasureReport addEvaluatedResource(Reference t) { //3
4031      if (t == null)
4032        return this;
4033      if (this.evaluatedResource == null)
4034        this.evaluatedResource = new ArrayList<Reference>();
4035      this.evaluatedResource.add(t);
4036      return this;
4037    }
4038
4039    /**
4040     * @return The first repetition of repeating field {@link #evaluatedResource}, creating it if it does not already exist {3}
4041     */
4042    public Reference getEvaluatedResourceFirstRep() { 
4043      if (getEvaluatedResource().isEmpty()) {
4044        addEvaluatedResource();
4045      }
4046      return getEvaluatedResource().get(0);
4047    }
4048
4049      protected void listChildren(List<Property> children) {
4050        super.listChildren(children);
4051        children.add(new Property("identifier", "Identifier", "A formal identifier that is used to identify this MeasureReport when it is represented in other formats or referenced in a specification, model, design or an instance.", 0, java.lang.Integer.MAX_VALUE, identifier));
4052        children.add(new Property("status", "code", "The MeasureReport status. No data will be available until the MeasureReport status is complete.", 0, 1, status));
4053        children.add(new Property("type", "code", "The type of measure report. This may be an individual report, which provides the score for the measure for an individual member of the population; a subject-listing, which returns the list of members that meet the various criteria in the measure; a summary report, which returns a population count for each of the criteria in the measure; or a data-collection, which enables the MeasureReport to be used to exchange the data-of-interest for a quality measure.", 0, 1, type));
4054        children.add(new Property("dataUpdateType", "code", "Indicates whether the data submitted in a data-exchange report represents a snapshot or incremental update. A snapshot update replaces all previously submitted data for the receiver, whereas an incremental update represents only updated and/or changed data and should be applied as a differential update to the existing submitted data for the receiver.", 0, 1, dataUpdateType));
4055        children.add(new Property("measure", "canonical(Measure)", "A reference to the Measure that was calculated to produce this report.", 0, 1, measure));
4056        children.add(new Property("subject", "Reference(CareTeam|Device|Group|HealthcareService|Location|Organization|Patient|Practitioner|PractitionerRole|RelatedPerson)", "Optional subject identifying the individual or individuals the report is for.", 0, 1, subject));
4057        children.add(new Property("date", "dateTime", "The date this measure was calculated.", 0, 1, date));
4058        children.add(new Property("reporter", "Reference(Practitioner|PractitionerRole|Organization|Group)", "The individual or organization that is reporting the data.", 0, 1, reporter));
4059        children.add(new Property("reportingVendor", "Reference(Organization)", "A reference to the vendor who queried the data, calculated results and/or generated the report. The ?reporting vendor? is intended to represent the submitting entity when it is not the same as the reporting entity. This extension is used when the Receiver is interested in getting vendor information in the report.", 0, 1, reportingVendor));
4060        children.add(new Property("location", "Reference(Location)", "A reference to the location for which the data is being reported.", 0, 1, location));
4061        children.add(new Property("period", "Period", "The reporting period for which the report was calculated.", 0, 1, period));
4062        children.add(new Property("inputParameters", "Reference(Parameters)", "A reference to a Parameters resource (typically represented using a contained resource) that represents any input parameters that were provided to the operation that generated the report.", 0, 1, inputParameters));
4063        children.add(new Property("scoring", "CodeableConcept", "Indicates how the calculation is performed for the measure, including proportion, ratio, continuous-variable, and cohort. The value set is extensible, allowing additional measure scoring types to be represented. It is expected to be the same as the scoring element on the referenced Measure.", 0, 1, scoring));
4064        children.add(new Property("improvementNotation", "CodeableConcept", "Whether improvement in the measure is noted by an increase or decrease in the measure score.", 0, 1, improvementNotation));
4065        children.add(new Property("group", "", "The results of the calculation, one for each population group in the measure.", 0, java.lang.Integer.MAX_VALUE, group));
4066        children.add(new Property("supplementalData", "Reference(Any)", "A reference to a Resource that represents additional information collected for the report. If the value of the supplemental data is not a Resource (i.e. evaluating the supplementalData expression for this case in the measure results in a value that is not a FHIR Resource), it is reported as a reference to a contained Observation resource.", 0, java.lang.Integer.MAX_VALUE, supplementalData));
4067        children.add(new Property("evaluatedResource", "Reference(Any)", "Evaluated resources are used to capture what data was involved in the calculation of a measure. This usage is only allowed for individual reports to ensure that the size of the MeasureReport resource is bounded.", 0, java.lang.Integer.MAX_VALUE, evaluatedResource));
4068      }
4069
4070      @Override
4071      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
4072        switch (_hash) {
4073        case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "A formal identifier that is used to identify this MeasureReport when it is represented in other formats or referenced in a specification, model, design or an instance.", 0, java.lang.Integer.MAX_VALUE, identifier);
4074        case -892481550: /*status*/  return new Property("status", "code", "The MeasureReport status. No data will be available until the MeasureReport status is complete.", 0, 1, status);
4075        case 3575610: /*type*/  return new Property("type", "code", "The type of measure report. This may be an individual report, which provides the score for the measure for an individual member of the population; a subject-listing, which returns the list of members that meet the various criteria in the measure; a summary report, which returns a population count for each of the criteria in the measure; or a data-collection, which enables the MeasureReport to be used to exchange the data-of-interest for a quality measure.", 0, 1, type);
4076        case -425890067: /*dataUpdateType*/  return new Property("dataUpdateType", "code", "Indicates whether the data submitted in a data-exchange report represents a snapshot or incremental update. A snapshot update replaces all previously submitted data for the receiver, whereas an incremental update represents only updated and/or changed data and should be applied as a differential update to the existing submitted data for the receiver.", 0, 1, dataUpdateType);
4077        case 938321246: /*measure*/  return new Property("measure", "canonical(Measure)", "A reference to the Measure that was calculated to produce this report.", 0, 1, measure);
4078        case -1867885268: /*subject*/  return new Property("subject", "Reference(CareTeam|Device|Group|HealthcareService|Location|Organization|Patient|Practitioner|PractitionerRole|RelatedPerson)", "Optional subject identifying the individual or individuals the report is for.", 0, 1, subject);
4079        case 3076014: /*date*/  return new Property("date", "dateTime", "The date this measure was calculated.", 0, 1, date);
4080        case -427039519: /*reporter*/  return new Property("reporter", "Reference(Practitioner|PractitionerRole|Organization|Group)", "The individual or organization that is reporting the data.", 0, 1, reporter);
4081        case 581336342: /*reportingVendor*/  return new Property("reportingVendor", "Reference(Organization)", "A reference to the vendor who queried the data, calculated results and/or generated the report. The ?reporting vendor? is intended to represent the submitting entity when it is not the same as the reporting entity. This extension is used when the Receiver is interested in getting vendor information in the report.", 0, 1, reportingVendor);
4082        case 1901043637: /*location*/  return new Property("location", "Reference(Location)", "A reference to the location for which the data is being reported.", 0, 1, location);
4083        case -991726143: /*period*/  return new Property("period", "Period", "The reporting period for which the report was calculated.", 0, 1, period);
4084        case -812039852: /*inputParameters*/  return new Property("inputParameters", "Reference(Parameters)", "A reference to a Parameters resource (typically represented using a contained resource) that represents any input parameters that were provided to the operation that generated the report.", 0, 1, inputParameters);
4085        case 1924005583: /*scoring*/  return new Property("scoring", "CodeableConcept", "Indicates how the calculation is performed for the measure, including proportion, ratio, continuous-variable, and cohort. The value set is extensible, allowing additional measure scoring types to be represented. It is expected to be the same as the scoring element on the referenced Measure.", 0, 1, scoring);
4086        case -2085456136: /*improvementNotation*/  return new Property("improvementNotation", "CodeableConcept", "Whether improvement in the measure is noted by an increase or decrease in the measure score.", 0, 1, improvementNotation);
4087        case 98629247: /*group*/  return new Property("group", "", "The results of the calculation, one for each population group in the measure.", 0, java.lang.Integer.MAX_VALUE, group);
4088        case 1447496814: /*supplementalData*/  return new Property("supplementalData", "Reference(Any)", "A reference to a Resource that represents additional information collected for the report. If the value of the supplemental data is not a Resource (i.e. evaluating the supplementalData expression for this case in the measure results in a value that is not a FHIR Resource), it is reported as a reference to a contained Observation resource.", 0, java.lang.Integer.MAX_VALUE, supplementalData);
4089        case -1056771047: /*evaluatedResource*/  return new Property("evaluatedResource", "Reference(Any)", "Evaluated resources are used to capture what data was involved in the calculation of a measure. This usage is only allowed for individual reports to ensure that the size of the MeasureReport resource is bounded.", 0, java.lang.Integer.MAX_VALUE, evaluatedResource);
4090        default: return super.getNamedProperty(_hash, _name, _checkValid);
4091        }
4092
4093      }
4094
4095      @Override
4096      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
4097        switch (hash) {
4098        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
4099        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<MeasureReportStatus>
4100        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // Enumeration<MeasureReportType>
4101        case -425890067: /*dataUpdateType*/ return this.dataUpdateType == null ? new Base[0] : new Base[] {this.dataUpdateType}; // Enumeration<SubmitDataUpdateType>
4102        case 938321246: /*measure*/ return this.measure == null ? new Base[0] : new Base[] {this.measure}; // CanonicalType
4103        case -1867885268: /*subject*/ return this.subject == null ? new Base[0] : new Base[] {this.subject}; // Reference
4104        case 3076014: /*date*/ return this.date == null ? new Base[0] : new Base[] {this.date}; // DateTimeType
4105        case -427039519: /*reporter*/ return this.reporter == null ? new Base[0] : new Base[] {this.reporter}; // Reference
4106        case 581336342: /*reportingVendor*/ return this.reportingVendor == null ? new Base[0] : new Base[] {this.reportingVendor}; // Reference
4107        case 1901043637: /*location*/ return this.location == null ? new Base[0] : new Base[] {this.location}; // Reference
4108        case -991726143: /*period*/ return this.period == null ? new Base[0] : new Base[] {this.period}; // Period
4109        case -812039852: /*inputParameters*/ return this.inputParameters == null ? new Base[0] : new Base[] {this.inputParameters}; // Reference
4110        case 1924005583: /*scoring*/ return this.scoring == null ? new Base[0] : new Base[] {this.scoring}; // CodeableConcept
4111        case -2085456136: /*improvementNotation*/ return this.improvementNotation == null ? new Base[0] : new Base[] {this.improvementNotation}; // CodeableConcept
4112        case 98629247: /*group*/ return this.group == null ? new Base[0] : this.group.toArray(new Base[this.group.size()]); // MeasureReportGroupComponent
4113        case 1447496814: /*supplementalData*/ return this.supplementalData == null ? new Base[0] : this.supplementalData.toArray(new Base[this.supplementalData.size()]); // Reference
4114        case -1056771047: /*evaluatedResource*/ return this.evaluatedResource == null ? new Base[0] : this.evaluatedResource.toArray(new Base[this.evaluatedResource.size()]); // Reference
4115        default: return super.getProperty(hash, name, checkValid);
4116        }
4117
4118      }
4119
4120      @Override
4121      public Base setProperty(int hash, String name, Base value) throws FHIRException {
4122        switch (hash) {
4123        case -1618432855: // identifier
4124          this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier
4125          return value;
4126        case -892481550: // status
4127          value = new MeasureReportStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
4128          this.status = (Enumeration) value; // Enumeration<MeasureReportStatus>
4129          return value;
4130        case 3575610: // type
4131          value = new MeasureReportTypeEnumFactory().fromType(TypeConvertor.castToCode(value));
4132          this.type = (Enumeration) value; // Enumeration<MeasureReportType>
4133          return value;
4134        case -425890067: // dataUpdateType
4135          value = new SubmitDataUpdateTypeEnumFactory().fromType(TypeConvertor.castToCode(value));
4136          this.dataUpdateType = (Enumeration) value; // Enumeration<SubmitDataUpdateType>
4137          return value;
4138        case 938321246: // measure
4139          this.measure = TypeConvertor.castToCanonical(value); // CanonicalType
4140          return value;
4141        case -1867885268: // subject
4142          this.subject = TypeConvertor.castToReference(value); // Reference
4143          return value;
4144        case 3076014: // date
4145          this.date = TypeConvertor.castToDateTime(value); // DateTimeType
4146          return value;
4147        case -427039519: // reporter
4148          this.reporter = TypeConvertor.castToReference(value); // Reference
4149          return value;
4150        case 581336342: // reportingVendor
4151          this.reportingVendor = TypeConvertor.castToReference(value); // Reference
4152          return value;
4153        case 1901043637: // location
4154          this.location = TypeConvertor.castToReference(value); // Reference
4155          return value;
4156        case -991726143: // period
4157          this.period = TypeConvertor.castToPeriod(value); // Period
4158          return value;
4159        case -812039852: // inputParameters
4160          this.inputParameters = TypeConvertor.castToReference(value); // Reference
4161          return value;
4162        case 1924005583: // scoring
4163          this.scoring = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
4164          return value;
4165        case -2085456136: // improvementNotation
4166          this.improvementNotation = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
4167          return value;
4168        case 98629247: // group
4169          this.getGroup().add((MeasureReportGroupComponent) value); // MeasureReportGroupComponent
4170          return value;
4171        case 1447496814: // supplementalData
4172          this.getSupplementalData().add(TypeConvertor.castToReference(value)); // Reference
4173          return value;
4174        case -1056771047: // evaluatedResource
4175          this.getEvaluatedResource().add(TypeConvertor.castToReference(value)); // Reference
4176          return value;
4177        default: return super.setProperty(hash, name, value);
4178        }
4179
4180      }
4181
4182      @Override
4183      public Base setProperty(String name, Base value) throws FHIRException {
4184        if (name.equals("identifier")) {
4185          this.getIdentifier().add(TypeConvertor.castToIdentifier(value));
4186        } else if (name.equals("status")) {
4187          value = new MeasureReportStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
4188          this.status = (Enumeration) value; // Enumeration<MeasureReportStatus>
4189        } else if (name.equals("type")) {
4190          value = new MeasureReportTypeEnumFactory().fromType(TypeConvertor.castToCode(value));
4191          this.type = (Enumeration) value; // Enumeration<MeasureReportType>
4192        } else if (name.equals("dataUpdateType")) {
4193          value = new SubmitDataUpdateTypeEnumFactory().fromType(TypeConvertor.castToCode(value));
4194          this.dataUpdateType = (Enumeration) value; // Enumeration<SubmitDataUpdateType>
4195        } else if (name.equals("measure")) {
4196          this.measure = TypeConvertor.castToCanonical(value); // CanonicalType
4197        } else if (name.equals("subject")) {
4198          this.subject = TypeConvertor.castToReference(value); // Reference
4199        } else if (name.equals("date")) {
4200          this.date = TypeConvertor.castToDateTime(value); // DateTimeType
4201        } else if (name.equals("reporter")) {
4202          this.reporter = TypeConvertor.castToReference(value); // Reference
4203        } else if (name.equals("reportingVendor")) {
4204          this.reportingVendor = TypeConvertor.castToReference(value); // Reference
4205        } else if (name.equals("location")) {
4206          this.location = TypeConvertor.castToReference(value); // Reference
4207        } else if (name.equals("period")) {
4208          this.period = TypeConvertor.castToPeriod(value); // Period
4209        } else if (name.equals("inputParameters")) {
4210          this.inputParameters = TypeConvertor.castToReference(value); // Reference
4211        } else if (name.equals("scoring")) {
4212          this.scoring = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
4213        } else if (name.equals("improvementNotation")) {
4214          this.improvementNotation = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
4215        } else if (name.equals("group")) {
4216          this.getGroup().add((MeasureReportGroupComponent) value);
4217        } else if (name.equals("supplementalData")) {
4218          this.getSupplementalData().add(TypeConvertor.castToReference(value));
4219        } else if (name.equals("evaluatedResource")) {
4220          this.getEvaluatedResource().add(TypeConvertor.castToReference(value));
4221        } else
4222          return super.setProperty(name, value);
4223        return value;
4224      }
4225
4226  @Override
4227  public void removeChild(String name, Base value) throws FHIRException {
4228        if (name.equals("identifier")) {
4229          this.getIdentifier().remove(value);
4230        } else if (name.equals("status")) {
4231          value = new MeasureReportStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
4232          this.status = (Enumeration) value; // Enumeration<MeasureReportStatus>
4233        } else if (name.equals("type")) {
4234          value = new MeasureReportTypeEnumFactory().fromType(TypeConvertor.castToCode(value));
4235          this.type = (Enumeration) value; // Enumeration<MeasureReportType>
4236        } else if (name.equals("dataUpdateType")) {
4237          value = new SubmitDataUpdateTypeEnumFactory().fromType(TypeConvertor.castToCode(value));
4238          this.dataUpdateType = (Enumeration) value; // Enumeration<SubmitDataUpdateType>
4239        } else if (name.equals("measure")) {
4240          this.measure = null;
4241        } else if (name.equals("subject")) {
4242          this.subject = null;
4243        } else if (name.equals("date")) {
4244          this.date = null;
4245        } else if (name.equals("reporter")) {
4246          this.reporter = null;
4247        } else if (name.equals("reportingVendor")) {
4248          this.reportingVendor = null;
4249        } else if (name.equals("location")) {
4250          this.location = null;
4251        } else if (name.equals("period")) {
4252          this.period = null;
4253        } else if (name.equals("inputParameters")) {
4254          this.inputParameters = null;
4255        } else if (name.equals("scoring")) {
4256          this.scoring = null;
4257        } else if (name.equals("improvementNotation")) {
4258          this.improvementNotation = null;
4259        } else if (name.equals("group")) {
4260          this.getGroup().remove((MeasureReportGroupComponent) value);
4261        } else if (name.equals("supplementalData")) {
4262          this.getSupplementalData().remove(value);
4263        } else if (name.equals("evaluatedResource")) {
4264          this.getEvaluatedResource().remove(value);
4265        } else
4266          super.removeChild(name, value);
4267        
4268      }
4269
4270      @Override
4271      public Base makeProperty(int hash, String name) throws FHIRException {
4272        switch (hash) {
4273        case -1618432855:  return addIdentifier(); 
4274        case -892481550:  return getStatusElement();
4275        case 3575610:  return getTypeElement();
4276        case -425890067:  return getDataUpdateTypeElement();
4277        case 938321246:  return getMeasureElement();
4278        case -1867885268:  return getSubject();
4279        case 3076014:  return getDateElement();
4280        case -427039519:  return getReporter();
4281        case 581336342:  return getReportingVendor();
4282        case 1901043637:  return getLocation();
4283        case -991726143:  return getPeriod();
4284        case -812039852:  return getInputParameters();
4285        case 1924005583:  return getScoring();
4286        case -2085456136:  return getImprovementNotation();
4287        case 98629247:  return addGroup(); 
4288        case 1447496814:  return addSupplementalData(); 
4289        case -1056771047:  return addEvaluatedResource(); 
4290        default: return super.makeProperty(hash, name);
4291        }
4292
4293      }
4294
4295      @Override
4296      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
4297        switch (hash) {
4298        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
4299        case -892481550: /*status*/ return new String[] {"code"};
4300        case 3575610: /*type*/ return new String[] {"code"};
4301        case -425890067: /*dataUpdateType*/ return new String[] {"code"};
4302        case 938321246: /*measure*/ return new String[] {"canonical"};
4303        case -1867885268: /*subject*/ return new String[] {"Reference"};
4304        case 3076014: /*date*/ return new String[] {"dateTime"};
4305        case -427039519: /*reporter*/ return new String[] {"Reference"};
4306        case 581336342: /*reportingVendor*/ return new String[] {"Reference"};
4307        case 1901043637: /*location*/ return new String[] {"Reference"};
4308        case -991726143: /*period*/ return new String[] {"Period"};
4309        case -812039852: /*inputParameters*/ return new String[] {"Reference"};
4310        case 1924005583: /*scoring*/ return new String[] {"CodeableConcept"};
4311        case -2085456136: /*improvementNotation*/ return new String[] {"CodeableConcept"};
4312        case 98629247: /*group*/ return new String[] {};
4313        case 1447496814: /*supplementalData*/ return new String[] {"Reference"};
4314        case -1056771047: /*evaluatedResource*/ return new String[] {"Reference"};
4315        default: return super.getTypesForProperty(hash, name);
4316        }
4317
4318      }
4319
4320      @Override
4321      public Base addChild(String name) throws FHIRException {
4322        if (name.equals("identifier")) {
4323          return addIdentifier();
4324        }
4325        else if (name.equals("status")) {
4326          throw new FHIRException("Cannot call addChild on a singleton property MeasureReport.status");
4327        }
4328        else if (name.equals("type")) {
4329          throw new FHIRException("Cannot call addChild on a singleton property MeasureReport.type");
4330        }
4331        else if (name.equals("dataUpdateType")) {
4332          throw new FHIRException("Cannot call addChild on a singleton property MeasureReport.dataUpdateType");
4333        }
4334        else if (name.equals("measure")) {
4335          throw new FHIRException("Cannot call addChild on a singleton property MeasureReport.measure");
4336        }
4337        else if (name.equals("subject")) {
4338          this.subject = new Reference();
4339          return this.subject;
4340        }
4341        else if (name.equals("date")) {
4342          throw new FHIRException("Cannot call addChild on a singleton property MeasureReport.date");
4343        }
4344        else if (name.equals("reporter")) {
4345          this.reporter = new Reference();
4346          return this.reporter;
4347        }
4348        else if (name.equals("reportingVendor")) {
4349          this.reportingVendor = new Reference();
4350          return this.reportingVendor;
4351        }
4352        else if (name.equals("location")) {
4353          this.location = new Reference();
4354          return this.location;
4355        }
4356        else if (name.equals("period")) {
4357          this.period = new Period();
4358          return this.period;
4359        }
4360        else if (name.equals("inputParameters")) {
4361          this.inputParameters = new Reference();
4362          return this.inputParameters;
4363        }
4364        else if (name.equals("scoring")) {
4365          this.scoring = new CodeableConcept();
4366          return this.scoring;
4367        }
4368        else if (name.equals("improvementNotation")) {
4369          this.improvementNotation = new CodeableConcept();
4370          return this.improvementNotation;
4371        }
4372        else if (name.equals("group")) {
4373          return addGroup();
4374        }
4375        else if (name.equals("supplementalData")) {
4376          return addSupplementalData();
4377        }
4378        else if (name.equals("evaluatedResource")) {
4379          return addEvaluatedResource();
4380        }
4381        else
4382          return super.addChild(name);
4383      }
4384
4385  public String fhirType() {
4386    return "MeasureReport";
4387
4388  }
4389
4390      public MeasureReport copy() {
4391        MeasureReport dst = new MeasureReport();
4392        copyValues(dst);
4393        return dst;
4394      }
4395
4396      public void copyValues(MeasureReport dst) {
4397        super.copyValues(dst);
4398        if (identifier != null) {
4399          dst.identifier = new ArrayList<Identifier>();
4400          for (Identifier i : identifier)
4401            dst.identifier.add(i.copy());
4402        };
4403        dst.status = status == null ? null : status.copy();
4404        dst.type = type == null ? null : type.copy();
4405        dst.dataUpdateType = dataUpdateType == null ? null : dataUpdateType.copy();
4406        dst.measure = measure == null ? null : measure.copy();
4407        dst.subject = subject == null ? null : subject.copy();
4408        dst.date = date == null ? null : date.copy();
4409        dst.reporter = reporter == null ? null : reporter.copy();
4410        dst.reportingVendor = reportingVendor == null ? null : reportingVendor.copy();
4411        dst.location = location == null ? null : location.copy();
4412        dst.period = period == null ? null : period.copy();
4413        dst.inputParameters = inputParameters == null ? null : inputParameters.copy();
4414        dst.scoring = scoring == null ? null : scoring.copy();
4415        dst.improvementNotation = improvementNotation == null ? null : improvementNotation.copy();
4416        if (group != null) {
4417          dst.group = new ArrayList<MeasureReportGroupComponent>();
4418          for (MeasureReportGroupComponent i : group)
4419            dst.group.add(i.copy());
4420        };
4421        if (supplementalData != null) {
4422          dst.supplementalData = new ArrayList<Reference>();
4423          for (Reference i : supplementalData)
4424            dst.supplementalData.add(i.copy());
4425        };
4426        if (evaluatedResource != null) {
4427          dst.evaluatedResource = new ArrayList<Reference>();
4428          for (Reference i : evaluatedResource)
4429            dst.evaluatedResource.add(i.copy());
4430        };
4431      }
4432
4433      protected MeasureReport typedCopy() {
4434        return copy();
4435      }
4436
4437      @Override
4438      public boolean equalsDeep(Base other_) {
4439        if (!super.equalsDeep(other_))
4440          return false;
4441        if (!(other_ instanceof MeasureReport))
4442          return false;
4443        MeasureReport o = (MeasureReport) other_;
4444        return compareDeep(identifier, o.identifier, true) && compareDeep(status, o.status, true) && compareDeep(type, o.type, true)
4445           && compareDeep(dataUpdateType, o.dataUpdateType, true) && compareDeep(measure, o.measure, true)
4446           && compareDeep(subject, o.subject, true) && compareDeep(date, o.date, true) && compareDeep(reporter, o.reporter, true)
4447           && compareDeep(reportingVendor, o.reportingVendor, true) && compareDeep(location, o.location, true)
4448           && compareDeep(period, o.period, true) && compareDeep(inputParameters, o.inputParameters, true)
4449           && compareDeep(scoring, o.scoring, true) && compareDeep(improvementNotation, o.improvementNotation, true)
4450           && compareDeep(group, o.group, true) && compareDeep(supplementalData, o.supplementalData, true)
4451           && compareDeep(evaluatedResource, o.evaluatedResource, true);
4452      }
4453
4454      @Override
4455      public boolean equalsShallow(Base other_) {
4456        if (!super.equalsShallow(other_))
4457          return false;
4458        if (!(other_ instanceof MeasureReport))
4459          return false;
4460        MeasureReport o = (MeasureReport) other_;
4461        return compareValues(status, o.status, true) && compareValues(type, o.type, true) && compareValues(dataUpdateType, o.dataUpdateType, true)
4462           && compareValues(measure, o.measure, true) && compareValues(date, o.date, true);
4463      }
4464
4465      public boolean isEmpty() {
4466        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, status, type
4467          , dataUpdateType, measure, subject, date, reporter, reportingVendor, location
4468          , period, inputParameters, scoring, improvementNotation, group, supplementalData
4469          , evaluatedResource);
4470      }
4471
4472  @Override
4473  public ResourceType getResourceType() {
4474    return ResourceType.MeasureReport;
4475   }
4476
4477 /**
4478   * Search parameter: <b>evaluated-resource</b>
4479   * <p>
4480   * Description: <b>An evaluated resource referenced by the measure report</b><br>
4481   * Type: <b>reference</b><br>
4482   * Path: <b>MeasureReport.evaluatedResource</b><br>
4483   * </p>
4484   */
4485  @SearchParamDefinition(name="evaluated-resource", path="MeasureReport.evaluatedResource", description="An evaluated resource referenced by the measure report", 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 } )
4486  public static final String SP_EVALUATED_RESOURCE = "evaluated-resource";
4487 /**
4488   * <b>Fluent Client</b> search parameter constant for <b>evaluated-resource</b>
4489   * <p>
4490   * Description: <b>An evaluated resource referenced by the measure report</b><br>
4491   * Type: <b>reference</b><br>
4492   * Path: <b>MeasureReport.evaluatedResource</b><br>
4493   * </p>
4494   */
4495  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam EVALUATED_RESOURCE = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_EVALUATED_RESOURCE);
4496
4497/**
4498   * Constant for fluent queries to be used to add include statements. Specifies
4499   * the path value of "<b>MeasureReport:evaluated-resource</b>".
4500   */
4501  public static final ca.uhn.fhir.model.api.Include INCLUDE_EVALUATED_RESOURCE = new ca.uhn.fhir.model.api.Include("MeasureReport:evaluated-resource").toLocked();
4502
4503 /**
4504   * Search parameter: <b>location</b>
4505   * <p>
4506   * Description: <b>The location to return measure report results for</b><br>
4507   * Type: <b>reference</b><br>
4508   * Path: <b>MeasureReport.location</b><br>
4509   * </p>
4510   */
4511  @SearchParamDefinition(name="location", path="MeasureReport.location", description="The location to return measure report results for", type="reference", target={Location.class } )
4512  public static final String SP_LOCATION = "location";
4513 /**
4514   * <b>Fluent Client</b> search parameter constant for <b>location</b>
4515   * <p>
4516   * Description: <b>The location to return measure report results for</b><br>
4517   * Type: <b>reference</b><br>
4518   * Path: <b>MeasureReport.location</b><br>
4519   * </p>
4520   */
4521  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam LOCATION = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_LOCATION);
4522
4523/**
4524   * Constant for fluent queries to be used to add include statements. Specifies
4525   * the path value of "<b>MeasureReport:location</b>".
4526   */
4527  public static final ca.uhn.fhir.model.api.Include INCLUDE_LOCATION = new ca.uhn.fhir.model.api.Include("MeasureReport:location").toLocked();
4528
4529 /**
4530   * Search parameter: <b>measure</b>
4531   * <p>
4532   * Description: <b>The measure to return measure report results for</b><br>
4533   * Type: <b>reference</b><br>
4534   * Path: <b>MeasureReport.measure</b><br>
4535   * </p>
4536   */
4537  @SearchParamDefinition(name="measure", path="MeasureReport.measure", description="The measure to return measure report results for", type="reference", target={Measure.class } )
4538  public static final String SP_MEASURE = "measure";
4539 /**
4540   * <b>Fluent Client</b> search parameter constant for <b>measure</b>
4541   * <p>
4542   * Description: <b>The measure to return measure report results for</b><br>
4543   * Type: <b>reference</b><br>
4544   * Path: <b>MeasureReport.measure</b><br>
4545   * </p>
4546   */
4547  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam MEASURE = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_MEASURE);
4548
4549/**
4550   * Constant for fluent queries to be used to add include statements. Specifies
4551   * the path value of "<b>MeasureReport:measure</b>".
4552   */
4553  public static final ca.uhn.fhir.model.api.Include INCLUDE_MEASURE = new ca.uhn.fhir.model.api.Include("MeasureReport:measure").toLocked();
4554
4555 /**
4556   * Search parameter: <b>period</b>
4557   * <p>
4558   * Description: <b>The period of the measure report</b><br>
4559   * Type: <b>date</b><br>
4560   * Path: <b>MeasureReport.period</b><br>
4561   * </p>
4562   */
4563  @SearchParamDefinition(name="period", path="MeasureReport.period", description="The period of the measure report", type="date" )
4564  public static final String SP_PERIOD = "period";
4565 /**
4566   * <b>Fluent Client</b> search parameter constant for <b>period</b>
4567   * <p>
4568   * Description: <b>The period of the measure report</b><br>
4569   * Type: <b>date</b><br>
4570   * Path: <b>MeasureReport.period</b><br>
4571   * </p>
4572   */
4573  public static final ca.uhn.fhir.rest.gclient.DateClientParam PERIOD = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_PERIOD);
4574
4575 /**
4576   * Search parameter: <b>reporter</b>
4577   * <p>
4578   * Description: <b>The reporter to return measure report results for</b><br>
4579   * Type: <b>reference</b><br>
4580   * Path: <b>MeasureReport.reporter</b><br>
4581   * </p>
4582   */
4583  @SearchParamDefinition(name="reporter", path="MeasureReport.reporter", description="The reporter to return measure report results for", type="reference", target={Group.class, Organization.class, Practitioner.class, PractitionerRole.class } )
4584  public static final String SP_REPORTER = "reporter";
4585 /**
4586   * <b>Fluent Client</b> search parameter constant for <b>reporter</b>
4587   * <p>
4588   * Description: <b>The reporter to return measure report results for</b><br>
4589   * Type: <b>reference</b><br>
4590   * Path: <b>MeasureReport.reporter</b><br>
4591   * </p>
4592   */
4593  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam REPORTER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_REPORTER);
4594
4595/**
4596   * Constant for fluent queries to be used to add include statements. Specifies
4597   * the path value of "<b>MeasureReport:reporter</b>".
4598   */
4599  public static final ca.uhn.fhir.model.api.Include INCLUDE_REPORTER = new ca.uhn.fhir.model.api.Include("MeasureReport:reporter").toLocked();
4600
4601 /**
4602   * Search parameter: <b>status</b>
4603   * <p>
4604   * Description: <b>The status of the measure report</b><br>
4605   * Type: <b>token</b><br>
4606   * Path: <b>MeasureReport.status</b><br>
4607   * </p>
4608   */
4609  @SearchParamDefinition(name="status", path="MeasureReport.status", description="The status of the measure report", type="token" )
4610  public static final String SP_STATUS = "status";
4611 /**
4612   * <b>Fluent Client</b> search parameter constant for <b>status</b>
4613   * <p>
4614   * Description: <b>The status of the measure report</b><br>
4615   * Type: <b>token</b><br>
4616   * Path: <b>MeasureReport.status</b><br>
4617   * </p>
4618   */
4619  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
4620
4621 /**
4622   * Search parameter: <b>subject</b>
4623   * <p>
4624   * Description: <b>The identity of a subject to search for individual measure report results for</b><br>
4625   * Type: <b>reference</b><br>
4626   * Path: <b>MeasureReport.subject</b><br>
4627   * </p>
4628   */
4629  @SearchParamDefinition(name="subject", path="MeasureReport.subject", description="The identity of a subject to search for individual measure report results for", type="reference", target={CareTeam.class, Device.class, Group.class, HealthcareService.class, Location.class, Organization.class, Patient.class, Practitioner.class, PractitionerRole.class, RelatedPerson.class } )
4630  public static final String SP_SUBJECT = "subject";
4631 /**
4632   * <b>Fluent Client</b> search parameter constant for <b>subject</b>
4633   * <p>
4634   * Description: <b>The identity of a subject to search for individual measure report results for</b><br>
4635   * Type: <b>reference</b><br>
4636   * Path: <b>MeasureReport.subject</b><br>
4637   * </p>
4638   */
4639  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SUBJECT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SUBJECT);
4640
4641/**
4642   * Constant for fluent queries to be used to add include statements. Specifies
4643   * the path value of "<b>MeasureReport:subject</b>".
4644   */
4645  public static final ca.uhn.fhir.model.api.Include INCLUDE_SUBJECT = new ca.uhn.fhir.model.api.Include("MeasureReport:subject").toLocked();
4646
4647 /**
4648   * Search parameter: <b>date</b>
4649   * <p>
4650   * Description: <b>Multiple Resources: 
4651
4652* [AdverseEvent](adverseevent.html): When the event occurred
4653* [AllergyIntolerance](allergyintolerance.html): Date first version of the resource instance was recorded
4654* [Appointment](appointment.html): Appointment date/time.
4655* [AuditEvent](auditevent.html): Time when the event was recorded
4656* [CarePlan](careplan.html): Time period plan covers
4657* [CareTeam](careteam.html): A date within the coverage time period.
4658* [ClinicalImpression](clinicalimpression.html): When the assessment was documented
4659* [Composition](composition.html): Composition editing time
4660* [Consent](consent.html): When consent was agreed to
4661* [DiagnosticReport](diagnosticreport.html): The clinically relevant time of the report
4662* [DocumentReference](documentreference.html): When this document reference was created
4663* [Encounter](encounter.html): A date within the actualPeriod the Encounter lasted
4664* [EpisodeOfCare](episodeofcare.html): The provided date search value falls within the episode of care's period
4665* [FamilyMemberHistory](familymemberhistory.html): When history was recorded or last updated
4666* [Flag](flag.html): Time period when flag is active
4667* [Immunization](immunization.html): Vaccination  (non)-Administration Date
4668* [ImmunizationEvaluation](immunizationevaluation.html): Date the evaluation was generated
4669* [ImmunizationRecommendation](immunizationrecommendation.html): Date recommendation(s) created
4670* [Invoice](invoice.html): Invoice date / posting date
4671* [List](list.html): When the list was prepared
4672* [MeasureReport](measurereport.html): The date of the measure report
4673* [NutritionIntake](nutritionintake.html): Date when patient was taking (or not taking) the medication
4674* [Observation](observation.html): Clinically relevant time/time-period for observation
4675* [Procedure](procedure.html): When the procedure occurred or is occurring
4676* [ResearchSubject](researchsubject.html): Start and end of participation
4677* [RiskAssessment](riskassessment.html): When was assessment made?
4678* [SupplyRequest](supplyrequest.html): When the request was made
4679</b><br>
4680   * Type: <b>date</b><br>
4681   * Path: <b>AdverseEvent.occurrence.ofType(dateTime) | AdverseEvent.occurrence.ofType(Period) | AdverseEvent.occurrence.ofType(Timing) | AllergyIntolerance.recordedDate | (start | requestedPeriod.start).first() | AuditEvent.recorded | CarePlan.period | ClinicalImpression.date | Composition.date | Consent.date | DiagnosticReport.effective.ofType(dateTime) | DiagnosticReport.effective.ofType(Period) | DocumentReference.date | Encounter.actualPeriod | EpisodeOfCare.period | FamilyMemberHistory.date | Flag.period | (Immunization.occurrence.ofType(dateTime)) | ImmunizationEvaluation.date | ImmunizationRecommendation.date | Invoice.date | List.date | MeasureReport.date | NutritionIntake.occurrence.ofType(dateTime) | NutritionIntake.occurrence.ofType(Period) | Observation.effective.ofType(dateTime) | Observation.effective.ofType(Period) | Observation.effective.ofType(Timing) | Observation.effective.ofType(instant) | Procedure.occurrence.ofType(dateTime) | Procedure.occurrence.ofType(Period) | Procedure.occurrence.ofType(Timing) | ResearchSubject.period | (RiskAssessment.occurrence.ofType(dateTime)) | SupplyRequest.authoredOn</b><br>
4682   * </p>
4683   */
4684  @SearchParamDefinition(name="date", path="AdverseEvent.occurrence.ofType(dateTime) | AdverseEvent.occurrence.ofType(Period) | AdverseEvent.occurrence.ofType(Timing) | AllergyIntolerance.recordedDate | (start | requestedPeriod.start).first() | AuditEvent.recorded | CarePlan.period | ClinicalImpression.date | Composition.date | Consent.date | DiagnosticReport.effective.ofType(dateTime) | DiagnosticReport.effective.ofType(Period) | DocumentReference.date | Encounter.actualPeriod | EpisodeOfCare.period | FamilyMemberHistory.date | Flag.period | (Immunization.occurrence.ofType(dateTime)) | ImmunizationEvaluation.date | ImmunizationRecommendation.date | Invoice.date | List.date | MeasureReport.date | NutritionIntake.occurrence.ofType(dateTime) | NutritionIntake.occurrence.ofType(Period) | Observation.effective.ofType(dateTime) | Observation.effective.ofType(Period) | Observation.effective.ofType(Timing) | Observation.effective.ofType(instant) | Procedure.occurrence.ofType(dateTime) | Procedure.occurrence.ofType(Period) | Procedure.occurrence.ofType(Timing) | ResearchSubject.period | (RiskAssessment.occurrence.ofType(dateTime)) | SupplyRequest.authoredOn", description="Multiple Resources: \r\n\r\n* [AdverseEvent](adverseevent.html): When the event occurred\r\n* [AllergyIntolerance](allergyintolerance.html): Date first version of the resource instance was recorded\r\n* [Appointment](appointment.html): Appointment date/time.\r\n* [AuditEvent](auditevent.html): Time when the event was recorded\r\n* [CarePlan](careplan.html): Time period plan covers\r\n* [CareTeam](careteam.html): A date within the coverage time period.\r\n* [ClinicalImpression](clinicalimpression.html): When the assessment was documented\r\n* [Composition](composition.html): Composition editing time\r\n* [Consent](consent.html): When consent was agreed to\r\n* [DiagnosticReport](diagnosticreport.html): The clinically relevant time of the report\r\n* [DocumentReference](documentreference.html): When this document reference was created\r\n* [Encounter](encounter.html): A date within the actualPeriod the Encounter lasted\r\n* [EpisodeOfCare](episodeofcare.html): The provided date search value falls within the episode of care's period\r\n* [FamilyMemberHistory](familymemberhistory.html): When history was recorded or last updated\r\n* [Flag](flag.html): Time period when flag is active\r\n* [Immunization](immunization.html): Vaccination  (non)-Administration Date\r\n* [ImmunizationEvaluation](immunizationevaluation.html): Date the evaluation was generated\r\n* [ImmunizationRecommendation](immunizationrecommendation.html): Date recommendation(s) created\r\n* [Invoice](invoice.html): Invoice date / posting date\r\n* [List](list.html): When the list was prepared\r\n* [MeasureReport](measurereport.html): The date of the measure report\r\n* [NutritionIntake](nutritionintake.html): Date when patient was taking (or not taking) the medication\r\n* [Observation](observation.html): Clinically relevant time/time-period for observation\r\n* [Procedure](procedure.html): When the procedure occurred or is occurring\r\n* [ResearchSubject](researchsubject.html): Start and end of participation\r\n* [RiskAssessment](riskassessment.html): When was assessment made?\r\n* [SupplyRequest](supplyrequest.html): When the request was made\r\n", type="date" )
4685  public static final String SP_DATE = "date";
4686 /**
4687   * <b>Fluent Client</b> search parameter constant for <b>date</b>
4688   * <p>
4689   * Description: <b>Multiple Resources: 
4690
4691* [AdverseEvent](adverseevent.html): When the event occurred
4692* [AllergyIntolerance](allergyintolerance.html): Date first version of the resource instance was recorded
4693* [Appointment](appointment.html): Appointment date/time.
4694* [AuditEvent](auditevent.html): Time when the event was recorded
4695* [CarePlan](careplan.html): Time period plan covers
4696* [CareTeam](careteam.html): A date within the coverage time period.
4697* [ClinicalImpression](clinicalimpression.html): When the assessment was documented
4698* [Composition](composition.html): Composition editing time
4699* [Consent](consent.html): When consent was agreed to
4700* [DiagnosticReport](diagnosticreport.html): The clinically relevant time of the report
4701* [DocumentReference](documentreference.html): When this document reference was created
4702* [Encounter](encounter.html): A date within the actualPeriod the Encounter lasted
4703* [EpisodeOfCare](episodeofcare.html): The provided date search value falls within the episode of care's period
4704* [FamilyMemberHistory](familymemberhistory.html): When history was recorded or last updated
4705* [Flag](flag.html): Time period when flag is active
4706* [Immunization](immunization.html): Vaccination  (non)-Administration Date
4707* [ImmunizationEvaluation](immunizationevaluation.html): Date the evaluation was generated
4708* [ImmunizationRecommendation](immunizationrecommendation.html): Date recommendation(s) created
4709* [Invoice](invoice.html): Invoice date / posting date
4710* [List](list.html): When the list was prepared
4711* [MeasureReport](measurereport.html): The date of the measure report
4712* [NutritionIntake](nutritionintake.html): Date when patient was taking (or not taking) the medication
4713* [Observation](observation.html): Clinically relevant time/time-period for observation
4714* [Procedure](procedure.html): When the procedure occurred or is occurring
4715* [ResearchSubject](researchsubject.html): Start and end of participation
4716* [RiskAssessment](riskassessment.html): When was assessment made?
4717* [SupplyRequest](supplyrequest.html): When the request was made
4718</b><br>
4719   * Type: <b>date</b><br>
4720   * Path: <b>AdverseEvent.occurrence.ofType(dateTime) | AdverseEvent.occurrence.ofType(Period) | AdverseEvent.occurrence.ofType(Timing) | AllergyIntolerance.recordedDate | (start | requestedPeriod.start).first() | AuditEvent.recorded | CarePlan.period | ClinicalImpression.date | Composition.date | Consent.date | DiagnosticReport.effective.ofType(dateTime) | DiagnosticReport.effective.ofType(Period) | DocumentReference.date | Encounter.actualPeriod | EpisodeOfCare.period | FamilyMemberHistory.date | Flag.period | (Immunization.occurrence.ofType(dateTime)) | ImmunizationEvaluation.date | ImmunizationRecommendation.date | Invoice.date | List.date | MeasureReport.date | NutritionIntake.occurrence.ofType(dateTime) | NutritionIntake.occurrence.ofType(Period) | Observation.effective.ofType(dateTime) | Observation.effective.ofType(Period) | Observation.effective.ofType(Timing) | Observation.effective.ofType(instant) | Procedure.occurrence.ofType(dateTime) | Procedure.occurrence.ofType(Period) | Procedure.occurrence.ofType(Timing) | ResearchSubject.period | (RiskAssessment.occurrence.ofType(dateTime)) | SupplyRequest.authoredOn</b><br>
4721   * </p>
4722   */
4723  public static final ca.uhn.fhir.rest.gclient.DateClientParam DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_DATE);
4724
4725 /**
4726   * Search parameter: <b>identifier</b>
4727   * <p>
4728   * Description: <b>Multiple Resources: 
4729
4730* [Account](account.html): Account number
4731* [AdverseEvent](adverseevent.html): Business identifier for the event
4732* [AllergyIntolerance](allergyintolerance.html): External ids for this item
4733* [Appointment](appointment.html): An Identifier of the Appointment
4734* [AppointmentResponse](appointmentresponse.html): An Identifier in this appointment response
4735* [Basic](basic.html): Business identifier
4736* [BodyStructure](bodystructure.html): Bodystructure identifier
4737* [CarePlan](careplan.html): External Ids for this plan
4738* [CareTeam](careteam.html): External Ids for this team
4739* [ChargeItem](chargeitem.html): Business Identifier for item
4740* [Claim](claim.html): The primary identifier of the financial resource
4741* [ClaimResponse](claimresponse.html): The identity of the ClaimResponse
4742* [ClinicalImpression](clinicalimpression.html): Business identifier
4743* [Communication](communication.html): Unique identifier
4744* [CommunicationRequest](communicationrequest.html): Unique identifier
4745* [Composition](composition.html): Version-independent identifier for the Composition
4746* [Condition](condition.html): A unique identifier of the condition record
4747* [Consent](consent.html): Identifier for this record (external references)
4748* [Contract](contract.html): The identity of the contract
4749* [Coverage](coverage.html): The primary identifier of the insured and the coverage
4750* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The business identifier of the Eligibility
4751* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The business identifier
4752* [DetectedIssue](detectedissue.html): Unique id for the detected issue
4753* [DeviceRequest](devicerequest.html): Business identifier for request/order
4754* [DeviceUsage](deviceusage.html): Search by identifier
4755* [DiagnosticReport](diagnosticreport.html): An identifier for the report
4756* [DocumentReference](documentreference.html): Identifier of the attachment binary
4757* [Encounter](encounter.html): Identifier(s) by which this encounter is known
4758* [EnrollmentRequest](enrollmentrequest.html): The business identifier of the Enrollment
4759* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare
4760* [ExplanationOfBenefit](explanationofbenefit.html): The business identifier of the Explanation of Benefit
4761* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier
4762* [Flag](flag.html): Business identifier
4763* [Goal](goal.html): External Ids for this goal
4764* [GuidanceResponse](guidanceresponse.html): The identifier of the guidance response
4765* [ImagingSelection](imagingselection.html): Identifiers for the imaging selection
4766* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID
4767* [Immunization](immunization.html): Business identifier
4768* [ImmunizationEvaluation](immunizationevaluation.html): ID of the evaluation
4769* [ImmunizationRecommendation](immunizationrecommendation.html): Business identifier
4770* [Invoice](invoice.html): Business Identifier for item
4771* [List](list.html): Business identifier
4772* [MeasureReport](measurereport.html): External identifier of the measure report to be returned
4773* [Medication](medication.html): Returns medications with this external identifier
4774* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier
4775* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier
4776* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier
4777* [MedicationStatement](medicationstatement.html): Return statements with this external identifier
4778* [MolecularSequence](molecularsequence.html): The unique identity for a particular sequence
4779* [NutritionIntake](nutritionintake.html): Return statements with this external identifier
4780* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier
4781* [Observation](observation.html): The unique id for a particular observation
4782* [Person](person.html): A person Identifier
4783* [Procedure](procedure.html): A unique identifier for a procedure
4784* [QuestionnaireResponse](questionnaireresponse.html): The unique identifier for the questionnaire response
4785* [RelatedPerson](relatedperson.html): An Identifier of the RelatedPerson
4786* [RequestOrchestration](requestorchestration.html): External identifiers for the request orchestration
4787* [ResearchSubject](researchsubject.html): Business Identifier for research subject in a study
4788* [RiskAssessment](riskassessment.html): Unique identifier for the assessment
4789* [ServiceRequest](servicerequest.html): Identifiers assigned to this order
4790* [Specimen](specimen.html): The unique identifier associated with the specimen
4791* [SupplyDelivery](supplydelivery.html): External identifier
4792* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest
4793* [Task](task.html): Search for a task instance by its business identifier
4794* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier
4795</b><br>
4796   * Type: <b>token</b><br>
4797   * 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>
4798   * </p>
4799   */
4800  @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" )
4801  public static final String SP_IDENTIFIER = "identifier";
4802 /**
4803   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
4804   * <p>
4805   * Description: <b>Multiple Resources: 
4806
4807* [Account](account.html): Account number
4808* [AdverseEvent](adverseevent.html): Business identifier for the event
4809* [AllergyIntolerance](allergyintolerance.html): External ids for this item
4810* [Appointment](appointment.html): An Identifier of the Appointment
4811* [AppointmentResponse](appointmentresponse.html): An Identifier in this appointment response
4812* [Basic](basic.html): Business identifier
4813* [BodyStructure](bodystructure.html): Bodystructure identifier
4814* [CarePlan](careplan.html): External Ids for this plan
4815* [CareTeam](careteam.html): External Ids for this team
4816* [ChargeItem](chargeitem.html): Business Identifier for item
4817* [Claim](claim.html): The primary identifier of the financial resource
4818* [ClaimResponse](claimresponse.html): The identity of the ClaimResponse
4819* [ClinicalImpression](clinicalimpression.html): Business identifier
4820* [Communication](communication.html): Unique identifier
4821* [CommunicationRequest](communicationrequest.html): Unique identifier
4822* [Composition](composition.html): Version-independent identifier for the Composition
4823* [Condition](condition.html): A unique identifier of the condition record
4824* [Consent](consent.html): Identifier for this record (external references)
4825* [Contract](contract.html): The identity of the contract
4826* [Coverage](coverage.html): The primary identifier of the insured and the coverage
4827* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The business identifier of the Eligibility
4828* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The business identifier
4829* [DetectedIssue](detectedissue.html): Unique id for the detected issue
4830* [DeviceRequest](devicerequest.html): Business identifier for request/order
4831* [DeviceUsage](deviceusage.html): Search by identifier
4832* [DiagnosticReport](diagnosticreport.html): An identifier for the report
4833* [DocumentReference](documentreference.html): Identifier of the attachment binary
4834* [Encounter](encounter.html): Identifier(s) by which this encounter is known
4835* [EnrollmentRequest](enrollmentrequest.html): The business identifier of the Enrollment
4836* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare
4837* [ExplanationOfBenefit](explanationofbenefit.html): The business identifier of the Explanation of Benefit
4838* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier
4839* [Flag](flag.html): Business identifier
4840* [Goal](goal.html): External Ids for this goal
4841* [GuidanceResponse](guidanceresponse.html): The identifier of the guidance response
4842* [ImagingSelection](imagingselection.html): Identifiers for the imaging selection
4843* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID
4844* [Immunization](immunization.html): Business identifier
4845* [ImmunizationEvaluation](immunizationevaluation.html): ID of the evaluation
4846* [ImmunizationRecommendation](immunizationrecommendation.html): Business identifier
4847* [Invoice](invoice.html): Business Identifier for item
4848* [List](list.html): Business identifier
4849* [MeasureReport](measurereport.html): External identifier of the measure report to be returned
4850* [Medication](medication.html): Returns medications with this external identifier
4851* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier
4852* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier
4853* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier
4854* [MedicationStatement](medicationstatement.html): Return statements with this external identifier
4855* [MolecularSequence](molecularsequence.html): The unique identity for a particular sequence
4856* [NutritionIntake](nutritionintake.html): Return statements with this external identifier
4857* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier
4858* [Observation](observation.html): The unique id for a particular observation
4859* [Person](person.html): A person Identifier
4860* [Procedure](procedure.html): A unique identifier for a procedure
4861* [QuestionnaireResponse](questionnaireresponse.html): The unique identifier for the questionnaire response
4862* [RelatedPerson](relatedperson.html): An Identifier of the RelatedPerson
4863* [RequestOrchestration](requestorchestration.html): External identifiers for the request orchestration
4864* [ResearchSubject](researchsubject.html): Business Identifier for research subject in a study
4865* [RiskAssessment](riskassessment.html): Unique identifier for the assessment
4866* [ServiceRequest](servicerequest.html): Identifiers assigned to this order
4867* [Specimen](specimen.html): The unique identifier associated with the specimen
4868* [SupplyDelivery](supplydelivery.html): External identifier
4869* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest
4870* [Task](task.html): Search for a task instance by its business identifier
4871* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier
4872</b><br>
4873   * Type: <b>token</b><br>
4874   * 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>
4875   * </p>
4876   */
4877  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
4878
4879 /**
4880   * Search parameter: <b>patient</b>
4881   * <p>
4882   * Description: <b>Multiple Resources: 
4883
4884* [Account](account.html): The entity that caused the expenses
4885* [AdverseEvent](adverseevent.html): Subject impacted by event
4886* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for
4887* [Appointment](appointment.html): One of the individuals of the appointment is this patient
4888* [AppointmentResponse](appointmentresponse.html): This Response is for this Patient
4889* [AuditEvent](auditevent.html): Where the activity involved patient data
4890* [Basic](basic.html): Identifies the focus of this resource
4891* [BodyStructure](bodystructure.html): Who this is about
4892* [CarePlan](careplan.html): Who the care plan is for
4893* [CareTeam](careteam.html): Who care team is for
4894* [ChargeItem](chargeitem.html): Individual service was done for/to
4895* [Claim](claim.html): Patient receiving the products or services
4896* [ClaimResponse](claimresponse.html): The subject of care
4897* [ClinicalImpression](clinicalimpression.html): Patient assessed
4898* [Communication](communication.html): Focus of message
4899* [CommunicationRequest](communicationrequest.html): Focus of message
4900* [Composition](composition.html): Who and/or what the composition is about
4901* [Condition](condition.html): Who has the condition?
4902* [Consent](consent.html): Who the consent applies to
4903* [Contract](contract.html): The identity of the subject of the contract (if a patient)
4904* [Coverage](coverage.html): Retrieve coverages for a patient
4905* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The reference to the patient
4906* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The reference to the patient
4907* [DetectedIssue](detectedissue.html): Associated patient
4908* [DeviceRequest](devicerequest.html): Individual the service is ordered for
4909* [DeviceUsage](deviceusage.html): Search by patient who used / uses the device
4910* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient
4911* [DocumentReference](documentreference.html): Who/what is the subject of the document
4912* [Encounter](encounter.html): The patient present at the encounter
4913* [EnrollmentRequest](enrollmentrequest.html): The party to be enrolled
4914* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care
4915* [ExplanationOfBenefit](explanationofbenefit.html): The reference to the patient
4916* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for
4917* [Flag](flag.html): The identity of a subject to list flags for
4918* [Goal](goal.html): Who this goal is intended for
4919* [GuidanceResponse](guidanceresponse.html): The identity of a patient to search for guidance response results
4920* [ImagingSelection](imagingselection.html): Who the study is about
4921* [ImagingStudy](imagingstudy.html): Who the study is about
4922* [Immunization](immunization.html): The patient for the vaccination record
4923* [ImmunizationEvaluation](immunizationevaluation.html): The patient being evaluated
4924* [ImmunizationRecommendation](immunizationrecommendation.html): Who this profile is for
4925* [Invoice](invoice.html): Recipient(s) of goods and services
4926* [List](list.html): If all resources have the same subject
4927* [MeasureReport](measurereport.html): The identity of a patient to search for individual measure report results for
4928* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for
4929* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for
4930* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient
4931* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.
4932* [MolecularSequence](molecularsequence.html): The subject that the sequence is about
4933* [NutritionIntake](nutritionintake.html): Returns statements for a specific patient.
4934* [NutritionOrder](nutritionorder.html): The identity of the individual or set of individuals who requires the diet, formula or nutritional supplement
4935* [Observation](observation.html): The subject that the observation is about (if patient)
4936* [Person](person.html): The Person links to this Patient
4937* [Procedure](procedure.html): Search by subject - a patient
4938* [Provenance](provenance.html): Where the activity involved patient data
4939* [QuestionnaireResponse](questionnaireresponse.html): The patient that is the subject of the questionnaire response
4940* [RelatedPerson](relatedperson.html): The patient this related person is related to
4941* [RequestOrchestration](requestorchestration.html): The identity of a patient to search for request orchestrations
4942* [ResearchSubject](researchsubject.html): Who or what is part of study
4943* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?
4944* [ServiceRequest](servicerequest.html): Search by subject - a patient
4945* [Specimen](specimen.html): The patient the specimen comes from
4946* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied
4947* [SupplyRequest](supplyrequest.html): The patient or subject for whom the supply is destined
4948* [Task](task.html): Search by patient
4949* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for
4950</b><br>
4951   * Type: <b>reference</b><br>
4952   * 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>
4953   * </p>
4954   */
4955  @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 } )
4956  public static final String SP_PATIENT = "patient";
4957 /**
4958   * <b>Fluent Client</b> search parameter constant for <b>patient</b>
4959   * <p>
4960   * Description: <b>Multiple Resources: 
4961
4962* [Account](account.html): The entity that caused the expenses
4963* [AdverseEvent](adverseevent.html): Subject impacted by event
4964* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for
4965* [Appointment](appointment.html): One of the individuals of the appointment is this patient
4966* [AppointmentResponse](appointmentresponse.html): This Response is for this Patient
4967* [AuditEvent](auditevent.html): Where the activity involved patient data
4968* [Basic](basic.html): Identifies the focus of this resource
4969* [BodyStructure](bodystructure.html): Who this is about
4970* [CarePlan](careplan.html): Who the care plan is for
4971* [CareTeam](careteam.html): Who care team is for
4972* [ChargeItem](chargeitem.html): Individual service was done for/to
4973* [Claim](claim.html): Patient receiving the products or services
4974* [ClaimResponse](claimresponse.html): The subject of care
4975* [ClinicalImpression](clinicalimpression.html): Patient assessed
4976* [Communication](communication.html): Focus of message
4977* [CommunicationRequest](communicationrequest.html): Focus of message
4978* [Composition](composition.html): Who and/or what the composition is about
4979* [Condition](condition.html): Who has the condition?
4980* [Consent](consent.html): Who the consent applies to
4981* [Contract](contract.html): The identity of the subject of the contract (if a patient)
4982* [Coverage](coverage.html): Retrieve coverages for a patient
4983* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The reference to the patient
4984* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The reference to the patient
4985* [DetectedIssue](detectedissue.html): Associated patient
4986* [DeviceRequest](devicerequest.html): Individual the service is ordered for
4987* [DeviceUsage](deviceusage.html): Search by patient who used / uses the device
4988* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient
4989* [DocumentReference](documentreference.html): Who/what is the subject of the document
4990* [Encounter](encounter.html): The patient present at the encounter
4991* [EnrollmentRequest](enrollmentrequest.html): The party to be enrolled
4992* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care
4993* [ExplanationOfBenefit](explanationofbenefit.html): The reference to the patient
4994* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for
4995* [Flag](flag.html): The identity of a subject to list flags for
4996* [Goal](goal.html): Who this goal is intended for
4997* [GuidanceResponse](guidanceresponse.html): The identity of a patient to search for guidance response results
4998* [ImagingSelection](imagingselection.html): Who the study is about
4999* [ImagingStudy](imagingstudy.html): Who the study is about
5000* [Immunization](immunization.html): The patient for the vaccination record
5001* [ImmunizationEvaluation](immunizationevaluation.html): The patient being evaluated
5002* [ImmunizationRecommendation](immunizationrecommendation.html): Who this profile is for
5003* [Invoice](invoice.html): Recipient(s) of goods and services
5004* [List](list.html): If all resources have the same subject
5005* [MeasureReport](measurereport.html): The identity of a patient to search for individual measure report results for
5006* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for
5007* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for
5008* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient
5009* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.
5010* [MolecularSequence](molecularsequence.html): The subject that the sequence is about
5011* [NutritionIntake](nutritionintake.html): Returns statements for a specific patient.
5012* [NutritionOrder](nutritionorder.html): The identity of the individual or set of individuals who requires the diet, formula or nutritional supplement
5013* [Observation](observation.html): The subject that the observation is about (if patient)
5014* [Person](person.html): The Person links to this Patient
5015* [Procedure](procedure.html): Search by subject - a patient
5016* [Provenance](provenance.html): Where the activity involved patient data
5017* [QuestionnaireResponse](questionnaireresponse.html): The patient that is the subject of the questionnaire response
5018* [RelatedPerson](relatedperson.html): The patient this related person is related to
5019* [RequestOrchestration](requestorchestration.html): The identity of a patient to search for request orchestrations
5020* [ResearchSubject](researchsubject.html): Who or what is part of study
5021* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?
5022* [ServiceRequest](servicerequest.html): Search by subject - a patient
5023* [Specimen](specimen.html): The patient the specimen comes from
5024* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied
5025* [SupplyRequest](supplyrequest.html): The patient or subject for whom the supply is destined
5026* [Task](task.html): Search by patient
5027* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for
5028</b><br>
5029   * Type: <b>reference</b><br>
5030   * 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>
5031   * </p>
5032   */
5033  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PATIENT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PATIENT);
5034
5035/**
5036   * Constant for fluent queries to be used to add include statements. Specifies
5037   * the path value of "<b>MeasureReport:patient</b>".
5038   */
5039  public static final ca.uhn.fhir.model.api.Include INCLUDE_PATIENT = new ca.uhn.fhir.model.api.Include("MeasureReport:patient").toLocked();
5040
5041
5042}
5043