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 Tue, Dec 13, 2022 17:53+1100 for FHIR vcurrent
033
034import java.util.ArrayList;
035import java.util.Date;
036import java.util.List;
037import org.hl7.fhir.r5.model.Enumerations.*;
038import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
039import org.hl7.fhir.exceptions.FHIRException;
040import org.hl7.fhir.instance.model.api.ICompositeType;
041import ca.uhn.fhir.model.api.annotation.ResourceDef;
042import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
043import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
044import ca.uhn.fhir.model.api.annotation.Child;
045import ca.uhn.fhir.model.api.annotation.ChildOrder;
046import ca.uhn.fhir.model.api.annotation.Description;
047import ca.uhn.fhir.model.api.annotation.Block;
048
049/**
050 * Regulatory approval, clearance or licencing related to a regulated product, treatment, facility or activity that is cited in a guidance, regulation, rule or legislative act. An example is Market Authorization relating to a Medicinal Product.
051 */
052@ResourceDef(name="RegulatedAuthorization", profile="http://hl7.org/fhir/StructureDefinition/RegulatedAuthorization")
053public class RegulatedAuthorization extends DomainResource {
054
055    @Block()
056    public static class RegulatedAuthorizationCaseComponent extends BackboneElement implements IBaseBackboneElement {
057        /**
058         * Identifier by which this case can be referenced.
059         */
060        @Child(name = "identifier", type = {Identifier.class}, order=1, min=0, max=1, modifier=false, summary=true)
061        @Description(shortDefinition="Identifier by which this case can be referenced", formalDefinition="Identifier by which this case can be referenced." )
062        protected Identifier identifier;
063
064        /**
065         * The defining type of case.
066         */
067        @Child(name = "type", type = {CodeableConcept.class}, order=2, min=0, max=1, modifier=false, summary=true)
068        @Description(shortDefinition="The defining type of case", formalDefinition="The defining type of case." )
069        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/regulated-authorization-case-type")
070        protected CodeableConcept type;
071
072        /**
073         * The status associated with the case.
074         */
075        @Child(name = "status", type = {CodeableConcept.class}, order=3, min=0, max=1, modifier=false, summary=true)
076        @Description(shortDefinition="The status associated with the case", formalDefinition="The status associated with the case." )
077        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/publication-status")
078        protected CodeableConcept status;
079
080        /**
081         * Relevant date for this case.
082         */
083        @Child(name = "date", type = {Period.class, DateTimeType.class}, order=4, min=0, max=1, modifier=false, summary=true)
084        @Description(shortDefinition="Relevant date for this case", formalDefinition="Relevant date for this case." )
085        protected DataType date;
086
087        /**
088         * A regulatory submission from an organization to a regulator, as part of an assessing case. Multiple applications may occur over time, with more or different information to support or modify the submission or the authorization. The applications can be considered as steps within the longer running case or procedure for this authorization process.
089         */
090        @Child(name = "application", type = {RegulatedAuthorizationCaseComponent.class}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
091        @Description(shortDefinition="Applications submitted to obtain a regulated authorization. Steps within the longer running case or procedure", formalDefinition="A regulatory submission from an organization to a regulator, as part of an assessing case. Multiple applications may occur over time, with more or different information to support or modify the submission or the authorization. The applications can be considered as steps within the longer running case or procedure for this authorization process." )
092        protected List<RegulatedAuthorizationCaseComponent> application;
093
094        private static final long serialVersionUID = 2052202113L;
095
096    /**
097     * Constructor
098     */
099      public RegulatedAuthorizationCaseComponent() {
100        super();
101      }
102
103        /**
104         * @return {@link #identifier} (Identifier by which this case can be referenced.)
105         */
106        public Identifier getIdentifier() { 
107          if (this.identifier == null)
108            if (Configuration.errorOnAutoCreate())
109              throw new Error("Attempt to auto-create RegulatedAuthorizationCaseComponent.identifier");
110            else if (Configuration.doAutoCreate())
111              this.identifier = new Identifier(); // cc
112          return this.identifier;
113        }
114
115        public boolean hasIdentifier() { 
116          return this.identifier != null && !this.identifier.isEmpty();
117        }
118
119        /**
120         * @param value {@link #identifier} (Identifier by which this case can be referenced.)
121         */
122        public RegulatedAuthorizationCaseComponent setIdentifier(Identifier value) { 
123          this.identifier = value;
124          return this;
125        }
126
127        /**
128         * @return {@link #type} (The defining type of case.)
129         */
130        public CodeableConcept getType() { 
131          if (this.type == null)
132            if (Configuration.errorOnAutoCreate())
133              throw new Error("Attempt to auto-create RegulatedAuthorizationCaseComponent.type");
134            else if (Configuration.doAutoCreate())
135              this.type = new CodeableConcept(); // cc
136          return this.type;
137        }
138
139        public boolean hasType() { 
140          return this.type != null && !this.type.isEmpty();
141        }
142
143        /**
144         * @param value {@link #type} (The defining type of case.)
145         */
146        public RegulatedAuthorizationCaseComponent setType(CodeableConcept value) { 
147          this.type = value;
148          return this;
149        }
150
151        /**
152         * @return {@link #status} (The status associated with the case.)
153         */
154        public CodeableConcept getStatus() { 
155          if (this.status == null)
156            if (Configuration.errorOnAutoCreate())
157              throw new Error("Attempt to auto-create RegulatedAuthorizationCaseComponent.status");
158            else if (Configuration.doAutoCreate())
159              this.status = new CodeableConcept(); // cc
160          return this.status;
161        }
162
163        public boolean hasStatus() { 
164          return this.status != null && !this.status.isEmpty();
165        }
166
167        /**
168         * @param value {@link #status} (The status associated with the case.)
169         */
170        public RegulatedAuthorizationCaseComponent setStatus(CodeableConcept value) { 
171          this.status = value;
172          return this;
173        }
174
175        /**
176         * @return {@link #date} (Relevant date for this case.)
177         */
178        public DataType getDate() { 
179          return this.date;
180        }
181
182        /**
183         * @return {@link #date} (Relevant date for this case.)
184         */
185        public Period getDatePeriod() throws FHIRException { 
186          if (this.date == null)
187            this.date = new Period();
188          if (!(this.date instanceof Period))
189            throw new FHIRException("Type mismatch: the type Period was expected, but "+this.date.getClass().getName()+" was encountered");
190          return (Period) this.date;
191        }
192
193        public boolean hasDatePeriod() { 
194          return this != null && this.date instanceof Period;
195        }
196
197        /**
198         * @return {@link #date} (Relevant date for this case.)
199         */
200        public DateTimeType getDateDateTimeType() throws FHIRException { 
201          if (this.date == null)
202            this.date = new DateTimeType();
203          if (!(this.date instanceof DateTimeType))
204            throw new FHIRException("Type mismatch: the type DateTimeType was expected, but "+this.date.getClass().getName()+" was encountered");
205          return (DateTimeType) this.date;
206        }
207
208        public boolean hasDateDateTimeType() { 
209          return this != null && this.date instanceof DateTimeType;
210        }
211
212        public boolean hasDate() { 
213          return this.date != null && !this.date.isEmpty();
214        }
215
216        /**
217         * @param value {@link #date} (Relevant date for this case.)
218         */
219        public RegulatedAuthorizationCaseComponent setDate(DataType value) { 
220          if (value != null && !(value instanceof Period || value instanceof DateTimeType))
221            throw new Error("Not the right type for RegulatedAuthorization.case.date[x]: "+value.fhirType());
222          this.date = value;
223          return this;
224        }
225
226        /**
227         * @return {@link #application} (A regulatory submission from an organization to a regulator, as part of an assessing case. Multiple applications may occur over time, with more or different information to support or modify the submission or the authorization. The applications can be considered as steps within the longer running case or procedure for this authorization process.)
228         */
229        public List<RegulatedAuthorizationCaseComponent> getApplication() { 
230          if (this.application == null)
231            this.application = new ArrayList<RegulatedAuthorizationCaseComponent>();
232          return this.application;
233        }
234
235        /**
236         * @return Returns a reference to <code>this</code> for easy method chaining
237         */
238        public RegulatedAuthorizationCaseComponent setApplication(List<RegulatedAuthorizationCaseComponent> theApplication) { 
239          this.application = theApplication;
240          return this;
241        }
242
243        public boolean hasApplication() { 
244          if (this.application == null)
245            return false;
246          for (RegulatedAuthorizationCaseComponent item : this.application)
247            if (!item.isEmpty())
248              return true;
249          return false;
250        }
251
252        public RegulatedAuthorizationCaseComponent addApplication() { //3
253          RegulatedAuthorizationCaseComponent t = new RegulatedAuthorizationCaseComponent();
254          if (this.application == null)
255            this.application = new ArrayList<RegulatedAuthorizationCaseComponent>();
256          this.application.add(t);
257          return t;
258        }
259
260        public RegulatedAuthorizationCaseComponent addApplication(RegulatedAuthorizationCaseComponent t) { //3
261          if (t == null)
262            return this;
263          if (this.application == null)
264            this.application = new ArrayList<RegulatedAuthorizationCaseComponent>();
265          this.application.add(t);
266          return this;
267        }
268
269        /**
270         * @return The first repetition of repeating field {@link #application}, creating it if it does not already exist {3}
271         */
272        public RegulatedAuthorizationCaseComponent getApplicationFirstRep() { 
273          if (getApplication().isEmpty()) {
274            addApplication();
275          }
276          return getApplication().get(0);
277        }
278
279        protected void listChildren(List<Property> children) {
280          super.listChildren(children);
281          children.add(new Property("identifier", "Identifier", "Identifier by which this case can be referenced.", 0, 1, identifier));
282          children.add(new Property("type", "CodeableConcept", "The defining type of case.", 0, 1, type));
283          children.add(new Property("status", "CodeableConcept", "The status associated with the case.", 0, 1, status));
284          children.add(new Property("date[x]", "Period|dateTime", "Relevant date for this case.", 0, 1, date));
285          children.add(new Property("application", "@RegulatedAuthorization.case", "A regulatory submission from an organization to a regulator, as part of an assessing case. Multiple applications may occur over time, with more or different information to support or modify the submission or the authorization. The applications can be considered as steps within the longer running case or procedure for this authorization process.", 0, java.lang.Integer.MAX_VALUE, application));
286        }
287
288        @Override
289        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
290          switch (_hash) {
291          case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "Identifier by which this case can be referenced.", 0, 1, identifier);
292          case 3575610: /*type*/  return new Property("type", "CodeableConcept", "The defining type of case.", 0, 1, type);
293          case -892481550: /*status*/  return new Property("status", "CodeableConcept", "The status associated with the case.", 0, 1, status);
294          case 1443311122: /*date[x]*/  return new Property("date[x]", "Period|dateTime", "Relevant date for this case.", 0, 1, date);
295          case 3076014: /*date*/  return new Property("date[x]", "Period|dateTime", "Relevant date for this case.", 0, 1, date);
296          case 432297743: /*datePeriod*/  return new Property("date[x]", "Period", "Relevant date for this case.", 0, 1, date);
297          case 185136489: /*dateDateTime*/  return new Property("date[x]", "dateTime", "Relevant date for this case.", 0, 1, date);
298          case 1554253136: /*application*/  return new Property("application", "@RegulatedAuthorization.case", "A regulatory submission from an organization to a regulator, as part of an assessing case. Multiple applications may occur over time, with more or different information to support or modify the submission or the authorization. The applications can be considered as steps within the longer running case or procedure for this authorization process.", 0, java.lang.Integer.MAX_VALUE, application);
299          default: return super.getNamedProperty(_hash, _name, _checkValid);
300          }
301
302        }
303
304      @Override
305      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
306        switch (hash) {
307        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : new Base[] {this.identifier}; // Identifier
308        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // CodeableConcept
309        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // CodeableConcept
310        case 3076014: /*date*/ return this.date == null ? new Base[0] : new Base[] {this.date}; // DataType
311        case 1554253136: /*application*/ return this.application == null ? new Base[0] : this.application.toArray(new Base[this.application.size()]); // RegulatedAuthorizationCaseComponent
312        default: return super.getProperty(hash, name, checkValid);
313        }
314
315      }
316
317      @Override
318      public Base setProperty(int hash, String name, Base value) throws FHIRException {
319        switch (hash) {
320        case -1618432855: // identifier
321          this.identifier = TypeConvertor.castToIdentifier(value); // Identifier
322          return value;
323        case 3575610: // type
324          this.type = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
325          return value;
326        case -892481550: // status
327          this.status = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
328          return value;
329        case 3076014: // date
330          this.date = TypeConvertor.castToType(value); // DataType
331          return value;
332        case 1554253136: // application
333          this.getApplication().add((RegulatedAuthorizationCaseComponent) value); // RegulatedAuthorizationCaseComponent
334          return value;
335        default: return super.setProperty(hash, name, value);
336        }
337
338      }
339
340      @Override
341      public Base setProperty(String name, Base value) throws FHIRException {
342        if (name.equals("identifier")) {
343          this.identifier = TypeConvertor.castToIdentifier(value); // Identifier
344        } else if (name.equals("type")) {
345          this.type = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
346        } else if (name.equals("status")) {
347          this.status = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
348        } else if (name.equals("date[x]")) {
349          this.date = TypeConvertor.castToType(value); // DataType
350        } else if (name.equals("application")) {
351          this.getApplication().add((RegulatedAuthorizationCaseComponent) value);
352        } else
353          return super.setProperty(name, value);
354        return value;
355      }
356
357      @Override
358      public Base makeProperty(int hash, String name) throws FHIRException {
359        switch (hash) {
360        case -1618432855:  return getIdentifier();
361        case 3575610:  return getType();
362        case -892481550:  return getStatus();
363        case 1443311122:  return getDate();
364        case 3076014:  return getDate();
365        case 1554253136:  return addApplication(); 
366        default: return super.makeProperty(hash, name);
367        }
368
369      }
370
371      @Override
372      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
373        switch (hash) {
374        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
375        case 3575610: /*type*/ return new String[] {"CodeableConcept"};
376        case -892481550: /*status*/ return new String[] {"CodeableConcept"};
377        case 3076014: /*date*/ return new String[] {"Period", "dateTime"};
378        case 1554253136: /*application*/ return new String[] {"@RegulatedAuthorization.case"};
379        default: return super.getTypesForProperty(hash, name);
380        }
381
382      }
383
384      @Override
385      public Base addChild(String name) throws FHIRException {
386        if (name.equals("identifier")) {
387          this.identifier = new Identifier();
388          return this.identifier;
389        }
390        else if (name.equals("type")) {
391          this.type = new CodeableConcept();
392          return this.type;
393        }
394        else if (name.equals("status")) {
395          this.status = new CodeableConcept();
396          return this.status;
397        }
398        else if (name.equals("datePeriod")) {
399          this.date = new Period();
400          return this.date;
401        }
402        else if (name.equals("dateDateTime")) {
403          this.date = new DateTimeType();
404          return this.date;
405        }
406        else if (name.equals("application")) {
407          return addApplication();
408        }
409        else
410          return super.addChild(name);
411      }
412
413      public RegulatedAuthorizationCaseComponent copy() {
414        RegulatedAuthorizationCaseComponent dst = new RegulatedAuthorizationCaseComponent();
415        copyValues(dst);
416        return dst;
417      }
418
419      public void copyValues(RegulatedAuthorizationCaseComponent dst) {
420        super.copyValues(dst);
421        dst.identifier = identifier == null ? null : identifier.copy();
422        dst.type = type == null ? null : type.copy();
423        dst.status = status == null ? null : status.copy();
424        dst.date = date == null ? null : date.copy();
425        if (application != null) {
426          dst.application = new ArrayList<RegulatedAuthorizationCaseComponent>();
427          for (RegulatedAuthorizationCaseComponent i : application)
428            dst.application.add(i.copy());
429        };
430      }
431
432      @Override
433      public boolean equalsDeep(Base other_) {
434        if (!super.equalsDeep(other_))
435          return false;
436        if (!(other_ instanceof RegulatedAuthorizationCaseComponent))
437          return false;
438        RegulatedAuthorizationCaseComponent o = (RegulatedAuthorizationCaseComponent) other_;
439        return compareDeep(identifier, o.identifier, true) && compareDeep(type, o.type, true) && compareDeep(status, o.status, true)
440           && compareDeep(date, o.date, true) && compareDeep(application, o.application, true);
441      }
442
443      @Override
444      public boolean equalsShallow(Base other_) {
445        if (!super.equalsShallow(other_))
446          return false;
447        if (!(other_ instanceof RegulatedAuthorizationCaseComponent))
448          return false;
449        RegulatedAuthorizationCaseComponent o = (RegulatedAuthorizationCaseComponent) other_;
450        return true;
451      }
452
453      public boolean isEmpty() {
454        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, type, status
455          , date, application);
456      }
457
458  public String fhirType() {
459    return "RegulatedAuthorization.case";
460
461  }
462
463  }
464
465    /**
466     * Business identifier for the authorization, typically assigned by the authorizing body.
467     */
468    @Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
469    @Description(shortDefinition="Business identifier for the authorization, typically assigned by the authorizing body", formalDefinition="Business identifier for the authorization, typically assigned by the authorizing body." )
470    protected List<Identifier> identifier;
471
472    /**
473     * The product type, treatment, facility or activity that is being authorized.
474     */
475    @Child(name = "subject", type = {MedicinalProductDefinition.class, BiologicallyDerivedProduct.class, NutritionProduct.class, PackagedProductDefinition.class, ManufacturedItemDefinition.class, Ingredient.class, SubstanceDefinition.class, DeviceDefinition.class, ResearchStudy.class, ActivityDefinition.class, PlanDefinition.class, ObservationDefinition.class, Practitioner.class, Organization.class, Location.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
476    @Description(shortDefinition="The product type, treatment, facility or activity that is being authorized", formalDefinition="The product type, treatment, facility or activity that is being authorized." )
477    protected List<Reference> subject;
478
479    /**
480     * Overall type of this authorization, for example drug marketing approval, orphan drug designation.
481     */
482    @Child(name = "type", type = {CodeableConcept.class}, order=2, min=0, max=1, modifier=false, summary=true)
483    @Description(shortDefinition="Overall type of this authorization, for example drug marketing approval, orphan drug designation", formalDefinition="Overall type of this authorization, for example drug marketing approval, orphan drug designation." )
484    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/regulated-authorization-type")
485    protected CodeableConcept type;
486
487    /**
488     * General textual supporting information.
489     */
490    @Child(name = "description", type = {MarkdownType.class}, order=3, min=0, max=1, modifier=false, summary=true)
491    @Description(shortDefinition="General textual supporting information", formalDefinition="General textual supporting information." )
492    protected MarkdownType description;
493
494    /**
495     * The territory (e.g., country, jurisdiction etc.) in which the authorization has been granted.
496     */
497    @Child(name = "region", type = {CodeableConcept.class}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
498    @Description(shortDefinition="The territory in which the authorization has been granted", formalDefinition="The territory (e.g., country, jurisdiction etc.) in which the authorization has been granted." )
499    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/jurisdiction")
500    protected List<CodeableConcept> region;
501
502    /**
503     * The status that is authorised e.g. approved. Intermediate states and actions can be tracked with cases and applications.
504     */
505    @Child(name = "status", type = {CodeableConcept.class}, order=5, min=0, max=1, modifier=false, summary=true)
506    @Description(shortDefinition="The status that is authorised e.g. approved. Intermediate states can be tracked with cases and applications", formalDefinition="The status that is authorised e.g. approved. Intermediate states and actions can be tracked with cases and applications." )
507    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/publication-status")
508    protected CodeableConcept status;
509
510    /**
511     * The date at which the current status was assigned.
512     */
513    @Child(name = "statusDate", type = {DateTimeType.class}, order=6, min=0, max=1, modifier=false, summary=true)
514    @Description(shortDefinition="The date at which the current status was assigned", formalDefinition="The date at which the current status was assigned." )
515    protected DateTimeType statusDate;
516
517    /**
518     * The time period in which the regulatory approval, clearance or licencing is in effect. As an example, a Marketing Authorization includes the date of authorization and/or an expiration date.
519     */
520    @Child(name = "validityPeriod", type = {Period.class}, order=7, min=0, max=1, modifier=false, summary=true)
521    @Description(shortDefinition="The time period in which the regulatory approval etc. is in effect, e.g. a Marketing Authorization includes the date of authorization and/or expiration date", formalDefinition="The time period in which the regulatory approval, clearance or licencing is in effect. As an example, a Marketing Authorization includes the date of authorization and/or an expiration date." )
522    protected Period validityPeriod;
523
524    /**
525     * Condition for which the use of the regulated product applies.
526     */
527    @Child(name = "indication", type = {CodeableReference.class}, order=8, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
528    @Description(shortDefinition="Condition for which the use of the regulated product applies", formalDefinition="Condition for which the use of the regulated product applies." )
529    protected List<CodeableReference> indication;
530
531    /**
532     * The intended use of the product, e.g. prevention, treatment, diagnosis.
533     */
534    @Child(name = "intendedUse", type = {CodeableConcept.class}, order=9, min=0, max=1, modifier=false, summary=true)
535    @Description(shortDefinition="The intended use of the product, e.g. prevention, treatment", formalDefinition="The intended use of the product, e.g. prevention, treatment, diagnosis." )
536    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/product-intended-use")
537    protected CodeableConcept intendedUse;
538
539    /**
540     * The legal or regulatory framework against which this authorization is granted, or other reasons for it.
541     */
542    @Child(name = "basis", type = {CodeableConcept.class}, order=10, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
543    @Description(shortDefinition="The legal/regulatory framework or reasons under which this authorization is granted", formalDefinition="The legal or regulatory framework against which this authorization is granted, or other reasons for it." )
544    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/regulated-authorization-basis")
545    protected List<CodeableConcept> basis;
546
547    /**
548     * The organization that has been granted this authorization, by some authoritative body (the 'regulator').
549     */
550    @Child(name = "holder", type = {Organization.class}, order=11, min=0, max=1, modifier=false, summary=true)
551    @Description(shortDefinition="The organization that has been granted this authorization, by the regulator", formalDefinition="The organization that has been granted this authorization, by some authoritative body (the 'regulator')." )
552    protected Reference holder;
553
554    /**
555     * The regulatory authority or authorizing body granting the authorization. For example, European Medicines Agency (EMA), Food and Drug Administration (FDA), Health Canada (HC), etc.
556     */
557    @Child(name = "regulator", type = {Organization.class}, order=12, min=0, max=1, modifier=false, summary=true)
558    @Description(shortDefinition="The regulatory authority or authorizing body granting the authorization", formalDefinition="The regulatory authority or authorizing body granting the authorization. For example, European Medicines Agency (EMA), Food and Drug Administration (FDA), Health Canada (HC), etc." )
559    protected Reference regulator;
560
561    /**
562     * Additional information or supporting documentation about the authorization.
563     */
564    @Child(name = "attachedDocument", type = {DocumentReference.class}, order=13, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
565    @Description(shortDefinition="Additional information or supporting documentation about the authorization", formalDefinition="Additional information or supporting documentation about the authorization." )
566    protected List<Reference> attachedDocument;
567
568    /**
569     * The case or regulatory procedure for granting or amending a regulated authorization. An authorization is granted in response to submissions/applications by those seeking authorization. A case is the administrative process that deals with the application(s) that relate to this and assesses them. Note: This area is subject to ongoing review and the workgroup is seeking implementer feedback on its use (see link at bottom of page).
570     */
571    @Child(name = "case", type = {}, order=14, min=0, max=1, modifier=false, summary=true)
572    @Description(shortDefinition="The case or regulatory procedure for granting or amending a regulated authorization. Note: This area is subject to ongoing review and the workgroup is seeking implementer feedback on its use (see link at bottom of page)", formalDefinition="The case or regulatory procedure for granting or amending a regulated authorization. An authorization is granted in response to submissions/applications by those seeking authorization. A case is the administrative process that deals with the application(s) that relate to this and assesses them. Note: This area is subject to ongoing review and the workgroup is seeking implementer feedback on its use (see link at bottom of page)." )
573    protected RegulatedAuthorizationCaseComponent case_;
574
575    private static final long serialVersionUID = 1227409639L;
576
577  /**
578   * Constructor
579   */
580    public RegulatedAuthorization() {
581      super();
582    }
583
584    /**
585     * @return {@link #identifier} (Business identifier for the authorization, typically assigned by the authorizing body.)
586     */
587    public List<Identifier> getIdentifier() { 
588      if (this.identifier == null)
589        this.identifier = new ArrayList<Identifier>();
590      return this.identifier;
591    }
592
593    /**
594     * @return Returns a reference to <code>this</code> for easy method chaining
595     */
596    public RegulatedAuthorization setIdentifier(List<Identifier> theIdentifier) { 
597      this.identifier = theIdentifier;
598      return this;
599    }
600
601    public boolean hasIdentifier() { 
602      if (this.identifier == null)
603        return false;
604      for (Identifier item : this.identifier)
605        if (!item.isEmpty())
606          return true;
607      return false;
608    }
609
610    public Identifier addIdentifier() { //3
611      Identifier t = new Identifier();
612      if (this.identifier == null)
613        this.identifier = new ArrayList<Identifier>();
614      this.identifier.add(t);
615      return t;
616    }
617
618    public RegulatedAuthorization addIdentifier(Identifier t) { //3
619      if (t == null)
620        return this;
621      if (this.identifier == null)
622        this.identifier = new ArrayList<Identifier>();
623      this.identifier.add(t);
624      return this;
625    }
626
627    /**
628     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {3}
629     */
630    public Identifier getIdentifierFirstRep() { 
631      if (getIdentifier().isEmpty()) {
632        addIdentifier();
633      }
634      return getIdentifier().get(0);
635    }
636
637    /**
638     * @return {@link #subject} (The product type, treatment, facility or activity that is being authorized.)
639     */
640    public List<Reference> getSubject() { 
641      if (this.subject == null)
642        this.subject = new ArrayList<Reference>();
643      return this.subject;
644    }
645
646    /**
647     * @return Returns a reference to <code>this</code> for easy method chaining
648     */
649    public RegulatedAuthorization setSubject(List<Reference> theSubject) { 
650      this.subject = theSubject;
651      return this;
652    }
653
654    public boolean hasSubject() { 
655      if (this.subject == null)
656        return false;
657      for (Reference item : this.subject)
658        if (!item.isEmpty())
659          return true;
660      return false;
661    }
662
663    public Reference addSubject() { //3
664      Reference t = new Reference();
665      if (this.subject == null)
666        this.subject = new ArrayList<Reference>();
667      this.subject.add(t);
668      return t;
669    }
670
671    public RegulatedAuthorization addSubject(Reference t) { //3
672      if (t == null)
673        return this;
674      if (this.subject == null)
675        this.subject = new ArrayList<Reference>();
676      this.subject.add(t);
677      return this;
678    }
679
680    /**
681     * @return The first repetition of repeating field {@link #subject}, creating it if it does not already exist {3}
682     */
683    public Reference getSubjectFirstRep() { 
684      if (getSubject().isEmpty()) {
685        addSubject();
686      }
687      return getSubject().get(0);
688    }
689
690    /**
691     * @return {@link #type} (Overall type of this authorization, for example drug marketing approval, orphan drug designation.)
692     */
693    public CodeableConcept getType() { 
694      if (this.type == null)
695        if (Configuration.errorOnAutoCreate())
696          throw new Error("Attempt to auto-create RegulatedAuthorization.type");
697        else if (Configuration.doAutoCreate())
698          this.type = new CodeableConcept(); // cc
699      return this.type;
700    }
701
702    public boolean hasType() { 
703      return this.type != null && !this.type.isEmpty();
704    }
705
706    /**
707     * @param value {@link #type} (Overall type of this authorization, for example drug marketing approval, orphan drug designation.)
708     */
709    public RegulatedAuthorization setType(CodeableConcept value) { 
710      this.type = value;
711      return this;
712    }
713
714    /**
715     * @return {@link #description} (General textual supporting information.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
716     */
717    public MarkdownType getDescriptionElement() { 
718      if (this.description == null)
719        if (Configuration.errorOnAutoCreate())
720          throw new Error("Attempt to auto-create RegulatedAuthorization.description");
721        else if (Configuration.doAutoCreate())
722          this.description = new MarkdownType(); // bb
723      return this.description;
724    }
725
726    public boolean hasDescriptionElement() { 
727      return this.description != null && !this.description.isEmpty();
728    }
729
730    public boolean hasDescription() { 
731      return this.description != null && !this.description.isEmpty();
732    }
733
734    /**
735     * @param value {@link #description} (General textual supporting information.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
736     */
737    public RegulatedAuthorization setDescriptionElement(MarkdownType value) { 
738      this.description = value;
739      return this;
740    }
741
742    /**
743     * @return General textual supporting information.
744     */
745    public String getDescription() { 
746      return this.description == null ? null : this.description.getValue();
747    }
748
749    /**
750     * @param value General textual supporting information.
751     */
752    public RegulatedAuthorization setDescription(String value) { 
753      if (value == null)
754        this.description = null;
755      else {
756        if (this.description == null)
757          this.description = new MarkdownType();
758        this.description.setValue(value);
759      }
760      return this;
761    }
762
763    /**
764     * @return {@link #region} (The territory (e.g., country, jurisdiction etc.) in which the authorization has been granted.)
765     */
766    public List<CodeableConcept> getRegion() { 
767      if (this.region == null)
768        this.region = new ArrayList<CodeableConcept>();
769      return this.region;
770    }
771
772    /**
773     * @return Returns a reference to <code>this</code> for easy method chaining
774     */
775    public RegulatedAuthorization setRegion(List<CodeableConcept> theRegion) { 
776      this.region = theRegion;
777      return this;
778    }
779
780    public boolean hasRegion() { 
781      if (this.region == null)
782        return false;
783      for (CodeableConcept item : this.region)
784        if (!item.isEmpty())
785          return true;
786      return false;
787    }
788
789    public CodeableConcept addRegion() { //3
790      CodeableConcept t = new CodeableConcept();
791      if (this.region == null)
792        this.region = new ArrayList<CodeableConcept>();
793      this.region.add(t);
794      return t;
795    }
796
797    public RegulatedAuthorization addRegion(CodeableConcept t) { //3
798      if (t == null)
799        return this;
800      if (this.region == null)
801        this.region = new ArrayList<CodeableConcept>();
802      this.region.add(t);
803      return this;
804    }
805
806    /**
807     * @return The first repetition of repeating field {@link #region}, creating it if it does not already exist {3}
808     */
809    public CodeableConcept getRegionFirstRep() { 
810      if (getRegion().isEmpty()) {
811        addRegion();
812      }
813      return getRegion().get(0);
814    }
815
816    /**
817     * @return {@link #status} (The status that is authorised e.g. approved. Intermediate states and actions can be tracked with cases and applications.)
818     */
819    public CodeableConcept getStatus() { 
820      if (this.status == null)
821        if (Configuration.errorOnAutoCreate())
822          throw new Error("Attempt to auto-create RegulatedAuthorization.status");
823        else if (Configuration.doAutoCreate())
824          this.status = new CodeableConcept(); // cc
825      return this.status;
826    }
827
828    public boolean hasStatus() { 
829      return this.status != null && !this.status.isEmpty();
830    }
831
832    /**
833     * @param value {@link #status} (The status that is authorised e.g. approved. Intermediate states and actions can be tracked with cases and applications.)
834     */
835    public RegulatedAuthorization setStatus(CodeableConcept value) { 
836      this.status = value;
837      return this;
838    }
839
840    /**
841     * @return {@link #statusDate} (The date at which the current status was assigned.). This is the underlying object with id, value and extensions. The accessor "getStatusDate" gives direct access to the value
842     */
843    public DateTimeType getStatusDateElement() { 
844      if (this.statusDate == null)
845        if (Configuration.errorOnAutoCreate())
846          throw new Error("Attempt to auto-create RegulatedAuthorization.statusDate");
847        else if (Configuration.doAutoCreate())
848          this.statusDate = new DateTimeType(); // bb
849      return this.statusDate;
850    }
851
852    public boolean hasStatusDateElement() { 
853      return this.statusDate != null && !this.statusDate.isEmpty();
854    }
855
856    public boolean hasStatusDate() { 
857      return this.statusDate != null && !this.statusDate.isEmpty();
858    }
859
860    /**
861     * @param value {@link #statusDate} (The date at which the current status was assigned.). This is the underlying object with id, value and extensions. The accessor "getStatusDate" gives direct access to the value
862     */
863    public RegulatedAuthorization setStatusDateElement(DateTimeType value) { 
864      this.statusDate = value;
865      return this;
866    }
867
868    /**
869     * @return The date at which the current status was assigned.
870     */
871    public Date getStatusDate() { 
872      return this.statusDate == null ? null : this.statusDate.getValue();
873    }
874
875    /**
876     * @param value The date at which the current status was assigned.
877     */
878    public RegulatedAuthorization setStatusDate(Date value) { 
879      if (value == null)
880        this.statusDate = null;
881      else {
882        if (this.statusDate == null)
883          this.statusDate = new DateTimeType();
884        this.statusDate.setValue(value);
885      }
886      return this;
887    }
888
889    /**
890     * @return {@link #validityPeriod} (The time period in which the regulatory approval, clearance or licencing is in effect. As an example, a Marketing Authorization includes the date of authorization and/or an expiration date.)
891     */
892    public Period getValidityPeriod() { 
893      if (this.validityPeriod == null)
894        if (Configuration.errorOnAutoCreate())
895          throw new Error("Attempt to auto-create RegulatedAuthorization.validityPeriod");
896        else if (Configuration.doAutoCreate())
897          this.validityPeriod = new Period(); // cc
898      return this.validityPeriod;
899    }
900
901    public boolean hasValidityPeriod() { 
902      return this.validityPeriod != null && !this.validityPeriod.isEmpty();
903    }
904
905    /**
906     * @param value {@link #validityPeriod} (The time period in which the regulatory approval, clearance or licencing is in effect. As an example, a Marketing Authorization includes the date of authorization and/or an expiration date.)
907     */
908    public RegulatedAuthorization setValidityPeriod(Period value) { 
909      this.validityPeriod = value;
910      return this;
911    }
912
913    /**
914     * @return {@link #indication} (Condition for which the use of the regulated product applies.)
915     */
916    public List<CodeableReference> getIndication() { 
917      if (this.indication == null)
918        this.indication = new ArrayList<CodeableReference>();
919      return this.indication;
920    }
921
922    /**
923     * @return Returns a reference to <code>this</code> for easy method chaining
924     */
925    public RegulatedAuthorization setIndication(List<CodeableReference> theIndication) { 
926      this.indication = theIndication;
927      return this;
928    }
929
930    public boolean hasIndication() { 
931      if (this.indication == null)
932        return false;
933      for (CodeableReference item : this.indication)
934        if (!item.isEmpty())
935          return true;
936      return false;
937    }
938
939    public CodeableReference addIndication() { //3
940      CodeableReference t = new CodeableReference();
941      if (this.indication == null)
942        this.indication = new ArrayList<CodeableReference>();
943      this.indication.add(t);
944      return t;
945    }
946
947    public RegulatedAuthorization addIndication(CodeableReference t) { //3
948      if (t == null)
949        return this;
950      if (this.indication == null)
951        this.indication = new ArrayList<CodeableReference>();
952      this.indication.add(t);
953      return this;
954    }
955
956    /**
957     * @return The first repetition of repeating field {@link #indication}, creating it if it does not already exist {3}
958     */
959    public CodeableReference getIndicationFirstRep() { 
960      if (getIndication().isEmpty()) {
961        addIndication();
962      }
963      return getIndication().get(0);
964    }
965
966    /**
967     * @return {@link #intendedUse} (The intended use of the product, e.g. prevention, treatment, diagnosis.)
968     */
969    public CodeableConcept getIntendedUse() { 
970      if (this.intendedUse == null)
971        if (Configuration.errorOnAutoCreate())
972          throw new Error("Attempt to auto-create RegulatedAuthorization.intendedUse");
973        else if (Configuration.doAutoCreate())
974          this.intendedUse = new CodeableConcept(); // cc
975      return this.intendedUse;
976    }
977
978    public boolean hasIntendedUse() { 
979      return this.intendedUse != null && !this.intendedUse.isEmpty();
980    }
981
982    /**
983     * @param value {@link #intendedUse} (The intended use of the product, e.g. prevention, treatment, diagnosis.)
984     */
985    public RegulatedAuthorization setIntendedUse(CodeableConcept value) { 
986      this.intendedUse = value;
987      return this;
988    }
989
990    /**
991     * @return {@link #basis} (The legal or regulatory framework against which this authorization is granted, or other reasons for it.)
992     */
993    public List<CodeableConcept> getBasis() { 
994      if (this.basis == null)
995        this.basis = new ArrayList<CodeableConcept>();
996      return this.basis;
997    }
998
999    /**
1000     * @return Returns a reference to <code>this</code> for easy method chaining
1001     */
1002    public RegulatedAuthorization setBasis(List<CodeableConcept> theBasis) { 
1003      this.basis = theBasis;
1004      return this;
1005    }
1006
1007    public boolean hasBasis() { 
1008      if (this.basis == null)
1009        return false;
1010      for (CodeableConcept item : this.basis)
1011        if (!item.isEmpty())
1012          return true;
1013      return false;
1014    }
1015
1016    public CodeableConcept addBasis() { //3
1017      CodeableConcept t = new CodeableConcept();
1018      if (this.basis == null)
1019        this.basis = new ArrayList<CodeableConcept>();
1020      this.basis.add(t);
1021      return t;
1022    }
1023
1024    public RegulatedAuthorization addBasis(CodeableConcept t) { //3
1025      if (t == null)
1026        return this;
1027      if (this.basis == null)
1028        this.basis = new ArrayList<CodeableConcept>();
1029      this.basis.add(t);
1030      return this;
1031    }
1032
1033    /**
1034     * @return The first repetition of repeating field {@link #basis}, creating it if it does not already exist {3}
1035     */
1036    public CodeableConcept getBasisFirstRep() { 
1037      if (getBasis().isEmpty()) {
1038        addBasis();
1039      }
1040      return getBasis().get(0);
1041    }
1042
1043    /**
1044     * @return {@link #holder} (The organization that has been granted this authorization, by some authoritative body (the 'regulator').)
1045     */
1046    public Reference getHolder() { 
1047      if (this.holder == null)
1048        if (Configuration.errorOnAutoCreate())
1049          throw new Error("Attempt to auto-create RegulatedAuthorization.holder");
1050        else if (Configuration.doAutoCreate())
1051          this.holder = new Reference(); // cc
1052      return this.holder;
1053    }
1054
1055    public boolean hasHolder() { 
1056      return this.holder != null && !this.holder.isEmpty();
1057    }
1058
1059    /**
1060     * @param value {@link #holder} (The organization that has been granted this authorization, by some authoritative body (the 'regulator').)
1061     */
1062    public RegulatedAuthorization setHolder(Reference value) { 
1063      this.holder = value;
1064      return this;
1065    }
1066
1067    /**
1068     * @return {@link #regulator} (The regulatory authority or authorizing body granting the authorization. For example, European Medicines Agency (EMA), Food and Drug Administration (FDA), Health Canada (HC), etc.)
1069     */
1070    public Reference getRegulator() { 
1071      if (this.regulator == null)
1072        if (Configuration.errorOnAutoCreate())
1073          throw new Error("Attempt to auto-create RegulatedAuthorization.regulator");
1074        else if (Configuration.doAutoCreate())
1075          this.regulator = new Reference(); // cc
1076      return this.regulator;
1077    }
1078
1079    public boolean hasRegulator() { 
1080      return this.regulator != null && !this.regulator.isEmpty();
1081    }
1082
1083    /**
1084     * @param value {@link #regulator} (The regulatory authority or authorizing body granting the authorization. For example, European Medicines Agency (EMA), Food and Drug Administration (FDA), Health Canada (HC), etc.)
1085     */
1086    public RegulatedAuthorization setRegulator(Reference value) { 
1087      this.regulator = value;
1088      return this;
1089    }
1090
1091    /**
1092     * @return {@link #attachedDocument} (Additional information or supporting documentation about the authorization.)
1093     */
1094    public List<Reference> getAttachedDocument() { 
1095      if (this.attachedDocument == null)
1096        this.attachedDocument = new ArrayList<Reference>();
1097      return this.attachedDocument;
1098    }
1099
1100    /**
1101     * @return Returns a reference to <code>this</code> for easy method chaining
1102     */
1103    public RegulatedAuthorization setAttachedDocument(List<Reference> theAttachedDocument) { 
1104      this.attachedDocument = theAttachedDocument;
1105      return this;
1106    }
1107
1108    public boolean hasAttachedDocument() { 
1109      if (this.attachedDocument == null)
1110        return false;
1111      for (Reference item : this.attachedDocument)
1112        if (!item.isEmpty())
1113          return true;
1114      return false;
1115    }
1116
1117    public Reference addAttachedDocument() { //3
1118      Reference t = new Reference();
1119      if (this.attachedDocument == null)
1120        this.attachedDocument = new ArrayList<Reference>();
1121      this.attachedDocument.add(t);
1122      return t;
1123    }
1124
1125    public RegulatedAuthorization addAttachedDocument(Reference t) { //3
1126      if (t == null)
1127        return this;
1128      if (this.attachedDocument == null)
1129        this.attachedDocument = new ArrayList<Reference>();
1130      this.attachedDocument.add(t);
1131      return this;
1132    }
1133
1134    /**
1135     * @return The first repetition of repeating field {@link #attachedDocument}, creating it if it does not already exist {3}
1136     */
1137    public Reference getAttachedDocumentFirstRep() { 
1138      if (getAttachedDocument().isEmpty()) {
1139        addAttachedDocument();
1140      }
1141      return getAttachedDocument().get(0);
1142    }
1143
1144    /**
1145     * @return {@link #case_} (The case or regulatory procedure for granting or amending a regulated authorization. An authorization is granted in response to submissions/applications by those seeking authorization. A case is the administrative process that deals with the application(s) that relate to this and assesses them. Note: This area is subject to ongoing review and the workgroup is seeking implementer feedback on its use (see link at bottom of page).)
1146     */
1147    public RegulatedAuthorizationCaseComponent getCase() { 
1148      if (this.case_ == null)
1149        if (Configuration.errorOnAutoCreate())
1150          throw new Error("Attempt to auto-create RegulatedAuthorization.case_");
1151        else if (Configuration.doAutoCreate())
1152          this.case_ = new RegulatedAuthorizationCaseComponent(); // cc
1153      return this.case_;
1154    }
1155
1156    public boolean hasCase() { 
1157      return this.case_ != null && !this.case_.isEmpty();
1158    }
1159
1160    /**
1161     * @param value {@link #case_} (The case or regulatory procedure for granting or amending a regulated authorization. An authorization is granted in response to submissions/applications by those seeking authorization. A case is the administrative process that deals with the application(s) that relate to this and assesses them. Note: This area is subject to ongoing review and the workgroup is seeking implementer feedback on its use (see link at bottom of page).)
1162     */
1163    public RegulatedAuthorization setCase(RegulatedAuthorizationCaseComponent value) { 
1164      this.case_ = value;
1165      return this;
1166    }
1167
1168      protected void listChildren(List<Property> children) {
1169        super.listChildren(children);
1170        children.add(new Property("identifier", "Identifier", "Business identifier for the authorization, typically assigned by the authorizing body.", 0, java.lang.Integer.MAX_VALUE, identifier));
1171        children.add(new Property("subject", "Reference(MedicinalProductDefinition|BiologicallyDerivedProduct|NutritionProduct|PackagedProductDefinition|ManufacturedItemDefinition|Ingredient|SubstanceDefinition|DeviceDefinition|ResearchStudy|ActivityDefinition|PlanDefinition|ObservationDefinition|Practitioner|Organization|Location)", "The product type, treatment, facility or activity that is being authorized.", 0, java.lang.Integer.MAX_VALUE, subject));
1172        children.add(new Property("type", "CodeableConcept", "Overall type of this authorization, for example drug marketing approval, orphan drug designation.", 0, 1, type));
1173        children.add(new Property("description", "markdown", "General textual supporting information.", 0, 1, description));
1174        children.add(new Property("region", "CodeableConcept", "The territory (e.g., country, jurisdiction etc.) in which the authorization has been granted.", 0, java.lang.Integer.MAX_VALUE, region));
1175        children.add(new Property("status", "CodeableConcept", "The status that is authorised e.g. approved. Intermediate states and actions can be tracked with cases and applications.", 0, 1, status));
1176        children.add(new Property("statusDate", "dateTime", "The date at which the current status was assigned.", 0, 1, statusDate));
1177        children.add(new Property("validityPeriod", "Period", "The time period in which the regulatory approval, clearance or licencing is in effect. As an example, a Marketing Authorization includes the date of authorization and/or an expiration date.", 0, 1, validityPeriod));
1178        children.add(new Property("indication", "CodeableReference(ClinicalUseDefinition)", "Condition for which the use of the regulated product applies.", 0, java.lang.Integer.MAX_VALUE, indication));
1179        children.add(new Property("intendedUse", "CodeableConcept", "The intended use of the product, e.g. prevention, treatment, diagnosis.", 0, 1, intendedUse));
1180        children.add(new Property("basis", "CodeableConcept", "The legal or regulatory framework against which this authorization is granted, or other reasons for it.", 0, java.lang.Integer.MAX_VALUE, basis));
1181        children.add(new Property("holder", "Reference(Organization)", "The organization that has been granted this authorization, by some authoritative body (the 'regulator').", 0, 1, holder));
1182        children.add(new Property("regulator", "Reference(Organization)", "The regulatory authority or authorizing body granting the authorization. For example, European Medicines Agency (EMA), Food and Drug Administration (FDA), Health Canada (HC), etc.", 0, 1, regulator));
1183        children.add(new Property("attachedDocument", "Reference(DocumentReference)", "Additional information or supporting documentation about the authorization.", 0, java.lang.Integer.MAX_VALUE, attachedDocument));
1184        children.add(new Property("case", "", "The case or regulatory procedure for granting or amending a regulated authorization. An authorization is granted in response to submissions/applications by those seeking authorization. A case is the administrative process that deals with the application(s) that relate to this and assesses them. Note: This area is subject to ongoing review and the workgroup is seeking implementer feedback on its use (see link at bottom of page).", 0, 1, case_));
1185      }
1186
1187      @Override
1188      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1189        switch (_hash) {
1190        case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "Business identifier for the authorization, typically assigned by the authorizing body.", 0, java.lang.Integer.MAX_VALUE, identifier);
1191        case -1867885268: /*subject*/  return new Property("subject", "Reference(MedicinalProductDefinition|BiologicallyDerivedProduct|NutritionProduct|PackagedProductDefinition|ManufacturedItemDefinition|Ingredient|SubstanceDefinition|DeviceDefinition|ResearchStudy|ActivityDefinition|PlanDefinition|ObservationDefinition|Practitioner|Organization|Location)", "The product type, treatment, facility or activity that is being authorized.", 0, java.lang.Integer.MAX_VALUE, subject);
1192        case 3575610: /*type*/  return new Property("type", "CodeableConcept", "Overall type of this authorization, for example drug marketing approval, orphan drug designation.", 0, 1, type);
1193        case -1724546052: /*description*/  return new Property("description", "markdown", "General textual supporting information.", 0, 1, description);
1194        case -934795532: /*region*/  return new Property("region", "CodeableConcept", "The territory (e.g., country, jurisdiction etc.) in which the authorization has been granted.", 0, java.lang.Integer.MAX_VALUE, region);
1195        case -892481550: /*status*/  return new Property("status", "CodeableConcept", "The status that is authorised e.g. approved. Intermediate states and actions can be tracked with cases and applications.", 0, 1, status);
1196        case 247524032: /*statusDate*/  return new Property("statusDate", "dateTime", "The date at which the current status was assigned.", 0, 1, statusDate);
1197        case -1434195053: /*validityPeriod*/  return new Property("validityPeriod", "Period", "The time period in which the regulatory approval, clearance or licencing is in effect. As an example, a Marketing Authorization includes the date of authorization and/or an expiration date.", 0, 1, validityPeriod);
1198        case -597168804: /*indication*/  return new Property("indication", "CodeableReference(ClinicalUseDefinition)", "Condition for which the use of the regulated product applies.", 0, java.lang.Integer.MAX_VALUE, indication);
1199        case -1618671268: /*intendedUse*/  return new Property("intendedUse", "CodeableConcept", "The intended use of the product, e.g. prevention, treatment, diagnosis.", 0, 1, intendedUse);
1200        case 93508670: /*basis*/  return new Property("basis", "CodeableConcept", "The legal or regulatory framework against which this authorization is granted, or other reasons for it.", 0, java.lang.Integer.MAX_VALUE, basis);
1201        case -1211707988: /*holder*/  return new Property("holder", "Reference(Organization)", "The organization that has been granted this authorization, by some authoritative body (the 'regulator').", 0, 1, holder);
1202        case 414760449: /*regulator*/  return new Property("regulator", "Reference(Organization)", "The regulatory authority or authorizing body granting the authorization. For example, European Medicines Agency (EMA), Food and Drug Administration (FDA), Health Canada (HC), etc.", 0, 1, regulator);
1203        case -513945889: /*attachedDocument*/  return new Property("attachedDocument", "Reference(DocumentReference)", "Additional information or supporting documentation about the authorization.", 0, java.lang.Integer.MAX_VALUE, attachedDocument);
1204        case 3046192: /*case*/  return new Property("case", "", "The case or regulatory procedure for granting or amending a regulated authorization. An authorization is granted in response to submissions/applications by those seeking authorization. A case is the administrative process that deals with the application(s) that relate to this and assesses them. Note: This area is subject to ongoing review and the workgroup is seeking implementer feedback on its use (see link at bottom of page).", 0, 1, case_);
1205        default: return super.getNamedProperty(_hash, _name, _checkValid);
1206        }
1207
1208      }
1209
1210      @Override
1211      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1212        switch (hash) {
1213        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
1214        case -1867885268: /*subject*/ return this.subject == null ? new Base[0] : this.subject.toArray(new Base[this.subject.size()]); // Reference
1215        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // CodeableConcept
1216        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // MarkdownType
1217        case -934795532: /*region*/ return this.region == null ? new Base[0] : this.region.toArray(new Base[this.region.size()]); // CodeableConcept
1218        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // CodeableConcept
1219        case 247524032: /*statusDate*/ return this.statusDate == null ? new Base[0] : new Base[] {this.statusDate}; // DateTimeType
1220        case -1434195053: /*validityPeriod*/ return this.validityPeriod == null ? new Base[0] : new Base[] {this.validityPeriod}; // Period
1221        case -597168804: /*indication*/ return this.indication == null ? new Base[0] : this.indication.toArray(new Base[this.indication.size()]); // CodeableReference
1222        case -1618671268: /*intendedUse*/ return this.intendedUse == null ? new Base[0] : new Base[] {this.intendedUse}; // CodeableConcept
1223        case 93508670: /*basis*/ return this.basis == null ? new Base[0] : this.basis.toArray(new Base[this.basis.size()]); // CodeableConcept
1224        case -1211707988: /*holder*/ return this.holder == null ? new Base[0] : new Base[] {this.holder}; // Reference
1225        case 414760449: /*regulator*/ return this.regulator == null ? new Base[0] : new Base[] {this.regulator}; // Reference
1226        case -513945889: /*attachedDocument*/ return this.attachedDocument == null ? new Base[0] : this.attachedDocument.toArray(new Base[this.attachedDocument.size()]); // Reference
1227        case 3046192: /*case*/ return this.case_ == null ? new Base[0] : new Base[] {this.case_}; // RegulatedAuthorizationCaseComponent
1228        default: return super.getProperty(hash, name, checkValid);
1229        }
1230
1231      }
1232
1233      @Override
1234      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1235        switch (hash) {
1236        case -1618432855: // identifier
1237          this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier
1238          return value;
1239        case -1867885268: // subject
1240          this.getSubject().add(TypeConvertor.castToReference(value)); // Reference
1241          return value;
1242        case 3575610: // type
1243          this.type = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1244          return value;
1245        case -1724546052: // description
1246          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
1247          return value;
1248        case -934795532: // region
1249          this.getRegion().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
1250          return value;
1251        case -892481550: // status
1252          this.status = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1253          return value;
1254        case 247524032: // statusDate
1255          this.statusDate = TypeConvertor.castToDateTime(value); // DateTimeType
1256          return value;
1257        case -1434195053: // validityPeriod
1258          this.validityPeriod = TypeConvertor.castToPeriod(value); // Period
1259          return value;
1260        case -597168804: // indication
1261          this.getIndication().add(TypeConvertor.castToCodeableReference(value)); // CodeableReference
1262          return value;
1263        case -1618671268: // intendedUse
1264          this.intendedUse = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1265          return value;
1266        case 93508670: // basis
1267          this.getBasis().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
1268          return value;
1269        case -1211707988: // holder
1270          this.holder = TypeConvertor.castToReference(value); // Reference
1271          return value;
1272        case 414760449: // regulator
1273          this.regulator = TypeConvertor.castToReference(value); // Reference
1274          return value;
1275        case -513945889: // attachedDocument
1276          this.getAttachedDocument().add(TypeConvertor.castToReference(value)); // Reference
1277          return value;
1278        case 3046192: // case
1279          this.case_ = (RegulatedAuthorizationCaseComponent) value; // RegulatedAuthorizationCaseComponent
1280          return value;
1281        default: return super.setProperty(hash, name, value);
1282        }
1283
1284      }
1285
1286      @Override
1287      public Base setProperty(String name, Base value) throws FHIRException {
1288        if (name.equals("identifier")) {
1289          this.getIdentifier().add(TypeConvertor.castToIdentifier(value));
1290        } else if (name.equals("subject")) {
1291          this.getSubject().add(TypeConvertor.castToReference(value));
1292        } else if (name.equals("type")) {
1293          this.type = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1294        } else if (name.equals("description")) {
1295          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
1296        } else if (name.equals("region")) {
1297          this.getRegion().add(TypeConvertor.castToCodeableConcept(value));
1298        } else if (name.equals("status")) {
1299          this.status = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1300        } else if (name.equals("statusDate")) {
1301          this.statusDate = TypeConvertor.castToDateTime(value); // DateTimeType
1302        } else if (name.equals("validityPeriod")) {
1303          this.validityPeriod = TypeConvertor.castToPeriod(value); // Period
1304        } else if (name.equals("indication")) {
1305          this.getIndication().add(TypeConvertor.castToCodeableReference(value));
1306        } else if (name.equals("intendedUse")) {
1307          this.intendedUse = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1308        } else if (name.equals("basis")) {
1309          this.getBasis().add(TypeConvertor.castToCodeableConcept(value));
1310        } else if (name.equals("holder")) {
1311          this.holder = TypeConvertor.castToReference(value); // Reference
1312        } else if (name.equals("regulator")) {
1313          this.regulator = TypeConvertor.castToReference(value); // Reference
1314        } else if (name.equals("attachedDocument")) {
1315          this.getAttachedDocument().add(TypeConvertor.castToReference(value));
1316        } else if (name.equals("case")) {
1317          this.case_ = (RegulatedAuthorizationCaseComponent) value; // RegulatedAuthorizationCaseComponent
1318        } else
1319          return super.setProperty(name, value);
1320        return value;
1321      }
1322
1323      @Override
1324      public Base makeProperty(int hash, String name) throws FHIRException {
1325        switch (hash) {
1326        case -1618432855:  return addIdentifier(); 
1327        case -1867885268:  return addSubject(); 
1328        case 3575610:  return getType();
1329        case -1724546052:  return getDescriptionElement();
1330        case -934795532:  return addRegion(); 
1331        case -892481550:  return getStatus();
1332        case 247524032:  return getStatusDateElement();
1333        case -1434195053:  return getValidityPeriod();
1334        case -597168804:  return addIndication(); 
1335        case -1618671268:  return getIntendedUse();
1336        case 93508670:  return addBasis(); 
1337        case -1211707988:  return getHolder();
1338        case 414760449:  return getRegulator();
1339        case -513945889:  return addAttachedDocument(); 
1340        case 3046192:  return getCase();
1341        default: return super.makeProperty(hash, name);
1342        }
1343
1344      }
1345
1346      @Override
1347      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1348        switch (hash) {
1349        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
1350        case -1867885268: /*subject*/ return new String[] {"Reference"};
1351        case 3575610: /*type*/ return new String[] {"CodeableConcept"};
1352        case -1724546052: /*description*/ return new String[] {"markdown"};
1353        case -934795532: /*region*/ return new String[] {"CodeableConcept"};
1354        case -892481550: /*status*/ return new String[] {"CodeableConcept"};
1355        case 247524032: /*statusDate*/ return new String[] {"dateTime"};
1356        case -1434195053: /*validityPeriod*/ return new String[] {"Period"};
1357        case -597168804: /*indication*/ return new String[] {"CodeableReference"};
1358        case -1618671268: /*intendedUse*/ return new String[] {"CodeableConcept"};
1359        case 93508670: /*basis*/ return new String[] {"CodeableConcept"};
1360        case -1211707988: /*holder*/ return new String[] {"Reference"};
1361        case 414760449: /*regulator*/ return new String[] {"Reference"};
1362        case -513945889: /*attachedDocument*/ return new String[] {"Reference"};
1363        case 3046192: /*case*/ return new String[] {};
1364        default: return super.getTypesForProperty(hash, name);
1365        }
1366
1367      }
1368
1369      @Override
1370      public Base addChild(String name) throws FHIRException {
1371        if (name.equals("identifier")) {
1372          return addIdentifier();
1373        }
1374        else if (name.equals("subject")) {
1375          return addSubject();
1376        }
1377        else if (name.equals("type")) {
1378          this.type = new CodeableConcept();
1379          return this.type;
1380        }
1381        else if (name.equals("description")) {
1382          throw new FHIRException("Cannot call addChild on a primitive type RegulatedAuthorization.description");
1383        }
1384        else if (name.equals("region")) {
1385          return addRegion();
1386        }
1387        else if (name.equals("status")) {
1388          this.status = new CodeableConcept();
1389          return this.status;
1390        }
1391        else if (name.equals("statusDate")) {
1392          throw new FHIRException("Cannot call addChild on a primitive type RegulatedAuthorization.statusDate");
1393        }
1394        else if (name.equals("validityPeriod")) {
1395          this.validityPeriod = new Period();
1396          return this.validityPeriod;
1397        }
1398        else if (name.equals("indication")) {
1399          return addIndication();
1400        }
1401        else if (name.equals("intendedUse")) {
1402          this.intendedUse = new CodeableConcept();
1403          return this.intendedUse;
1404        }
1405        else if (name.equals("basis")) {
1406          return addBasis();
1407        }
1408        else if (name.equals("holder")) {
1409          this.holder = new Reference();
1410          return this.holder;
1411        }
1412        else if (name.equals("regulator")) {
1413          this.regulator = new Reference();
1414          return this.regulator;
1415        }
1416        else if (name.equals("attachedDocument")) {
1417          return addAttachedDocument();
1418        }
1419        else if (name.equals("case")) {
1420          this.case_ = new RegulatedAuthorizationCaseComponent();
1421          return this.case_;
1422        }
1423        else
1424          return super.addChild(name);
1425      }
1426
1427  public String fhirType() {
1428    return "RegulatedAuthorization";
1429
1430  }
1431
1432      public RegulatedAuthorization copy() {
1433        RegulatedAuthorization dst = new RegulatedAuthorization();
1434        copyValues(dst);
1435        return dst;
1436      }
1437
1438      public void copyValues(RegulatedAuthorization dst) {
1439        super.copyValues(dst);
1440        if (identifier != null) {
1441          dst.identifier = new ArrayList<Identifier>();
1442          for (Identifier i : identifier)
1443            dst.identifier.add(i.copy());
1444        };
1445        if (subject != null) {
1446          dst.subject = new ArrayList<Reference>();
1447          for (Reference i : subject)
1448            dst.subject.add(i.copy());
1449        };
1450        dst.type = type == null ? null : type.copy();
1451        dst.description = description == null ? null : description.copy();
1452        if (region != null) {
1453          dst.region = new ArrayList<CodeableConcept>();
1454          for (CodeableConcept i : region)
1455            dst.region.add(i.copy());
1456        };
1457        dst.status = status == null ? null : status.copy();
1458        dst.statusDate = statusDate == null ? null : statusDate.copy();
1459        dst.validityPeriod = validityPeriod == null ? null : validityPeriod.copy();
1460        if (indication != null) {
1461          dst.indication = new ArrayList<CodeableReference>();
1462          for (CodeableReference i : indication)
1463            dst.indication.add(i.copy());
1464        };
1465        dst.intendedUse = intendedUse == null ? null : intendedUse.copy();
1466        if (basis != null) {
1467          dst.basis = new ArrayList<CodeableConcept>();
1468          for (CodeableConcept i : basis)
1469            dst.basis.add(i.copy());
1470        };
1471        dst.holder = holder == null ? null : holder.copy();
1472        dst.regulator = regulator == null ? null : regulator.copy();
1473        if (attachedDocument != null) {
1474          dst.attachedDocument = new ArrayList<Reference>();
1475          for (Reference i : attachedDocument)
1476            dst.attachedDocument.add(i.copy());
1477        };
1478        dst.case_ = case_ == null ? null : case_.copy();
1479      }
1480
1481      protected RegulatedAuthorization typedCopy() {
1482        return copy();
1483      }
1484
1485      @Override
1486      public boolean equalsDeep(Base other_) {
1487        if (!super.equalsDeep(other_))
1488          return false;
1489        if (!(other_ instanceof RegulatedAuthorization))
1490          return false;
1491        RegulatedAuthorization o = (RegulatedAuthorization) other_;
1492        return compareDeep(identifier, o.identifier, true) && compareDeep(subject, o.subject, true) && compareDeep(type, o.type, true)
1493           && compareDeep(description, o.description, true) && compareDeep(region, o.region, true) && compareDeep(status, o.status, true)
1494           && compareDeep(statusDate, o.statusDate, true) && compareDeep(validityPeriod, o.validityPeriod, true)
1495           && compareDeep(indication, o.indication, true) && compareDeep(intendedUse, o.intendedUse, true)
1496           && compareDeep(basis, o.basis, true) && compareDeep(holder, o.holder, true) && compareDeep(regulator, o.regulator, true)
1497           && compareDeep(attachedDocument, o.attachedDocument, true) && compareDeep(case_, o.case_, true)
1498          ;
1499      }
1500
1501      @Override
1502      public boolean equalsShallow(Base other_) {
1503        if (!super.equalsShallow(other_))
1504          return false;
1505        if (!(other_ instanceof RegulatedAuthorization))
1506          return false;
1507        RegulatedAuthorization o = (RegulatedAuthorization) other_;
1508        return compareValues(description, o.description, true) && compareValues(statusDate, o.statusDate, true)
1509          ;
1510      }
1511
1512      public boolean isEmpty() {
1513        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, subject, type
1514          , description, region, status, statusDate, validityPeriod, indication, intendedUse
1515          , basis, holder, regulator, attachedDocument, case_);
1516      }
1517
1518  @Override
1519  public ResourceType getResourceType() {
1520    return ResourceType.RegulatedAuthorization;
1521   }
1522
1523 /**
1524   * Search parameter: <b>case-type</b>
1525   * <p>
1526   * Description: <b>The defining type of case</b><br>
1527   * Type: <b>token</b><br>
1528   * Path: <b>RegulatedAuthorization.case.type</b><br>
1529   * </p>
1530   */
1531  @SearchParamDefinition(name="case-type", path="RegulatedAuthorization.case.type", description="The defining type of case", type="token" )
1532  public static final String SP_CASE_TYPE = "case-type";
1533 /**
1534   * <b>Fluent Client</b> search parameter constant for <b>case-type</b>
1535   * <p>
1536   * Description: <b>The defining type of case</b><br>
1537   * Type: <b>token</b><br>
1538   * Path: <b>RegulatedAuthorization.case.type</b><br>
1539   * </p>
1540   */
1541  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CASE_TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CASE_TYPE);
1542
1543 /**
1544   * Search parameter: <b>case</b>
1545   * <p>
1546   * Description: <b>The case or procedure number</b><br>
1547   * Type: <b>token</b><br>
1548   * Path: <b>RegulatedAuthorization.case.identifier</b><br>
1549   * </p>
1550   */
1551  @SearchParamDefinition(name="case", path="RegulatedAuthorization.case.identifier", description="The case or procedure number", type="token" )
1552  public static final String SP_CASE = "case";
1553 /**
1554   * <b>Fluent Client</b> search parameter constant for <b>case</b>
1555   * <p>
1556   * Description: <b>The case or procedure number</b><br>
1557   * Type: <b>token</b><br>
1558   * Path: <b>RegulatedAuthorization.case.identifier</b><br>
1559   * </p>
1560   */
1561  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CASE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CASE);
1562
1563 /**
1564   * Search parameter: <b>holder</b>
1565   * <p>
1566   * Description: <b>The organization that holds the granted authorization</b><br>
1567   * Type: <b>reference</b><br>
1568   * Path: <b>RegulatedAuthorization.holder</b><br>
1569   * </p>
1570   */
1571  @SearchParamDefinition(name="holder", path="RegulatedAuthorization.holder", description="The organization that holds the granted authorization", type="reference", target={Organization.class } )
1572  public static final String SP_HOLDER = "holder";
1573 /**
1574   * <b>Fluent Client</b> search parameter constant for <b>holder</b>
1575   * <p>
1576   * Description: <b>The organization that holds the granted authorization</b><br>
1577   * Type: <b>reference</b><br>
1578   * Path: <b>RegulatedAuthorization.holder</b><br>
1579   * </p>
1580   */
1581  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam HOLDER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_HOLDER);
1582
1583/**
1584   * Constant for fluent queries to be used to add include statements. Specifies
1585   * the path value of "<b>RegulatedAuthorization:holder</b>".
1586   */
1587  public static final ca.uhn.fhir.model.api.Include INCLUDE_HOLDER = new ca.uhn.fhir.model.api.Include("RegulatedAuthorization:holder").toLocked();
1588
1589 /**
1590   * Search parameter: <b>identifier</b>
1591   * <p>
1592   * Description: <b>Business identifier for the authorization, typically assigned by the authorizing body</b><br>
1593   * Type: <b>token</b><br>
1594   * Path: <b>RegulatedAuthorization.identifier</b><br>
1595   * </p>
1596   */
1597  @SearchParamDefinition(name="identifier", path="RegulatedAuthorization.identifier", description="Business identifier for the authorization, typically assigned by the authorizing body", type="token" )
1598  public static final String SP_IDENTIFIER = "identifier";
1599 /**
1600   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
1601   * <p>
1602   * Description: <b>Business identifier for the authorization, typically assigned by the authorizing body</b><br>
1603   * Type: <b>token</b><br>
1604   * Path: <b>RegulatedAuthorization.identifier</b><br>
1605   * </p>
1606   */
1607  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
1608
1609 /**
1610   * Search parameter: <b>region</b>
1611   * <p>
1612   * Description: <b>The territory (e.g., country, jurisdiction etc.) in which the authorization has been granted</b><br>
1613   * Type: <b>token</b><br>
1614   * Path: <b>RegulatedAuthorization.region</b><br>
1615   * </p>
1616   */
1617  @SearchParamDefinition(name="region", path="RegulatedAuthorization.region", description="The territory (e.g., country, jurisdiction etc.) in which the authorization has been granted", type="token" )
1618  public static final String SP_REGION = "region";
1619 /**
1620   * <b>Fluent Client</b> search parameter constant for <b>region</b>
1621   * <p>
1622   * Description: <b>The territory (e.g., country, jurisdiction etc.) in which the authorization has been granted</b><br>
1623   * Type: <b>token</b><br>
1624   * Path: <b>RegulatedAuthorization.region</b><br>
1625   * </p>
1626   */
1627  public static final ca.uhn.fhir.rest.gclient.TokenClientParam REGION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_REGION);
1628
1629 /**
1630   * Search parameter: <b>status</b>
1631   * <p>
1632   * Description: <b>The status that is authorised e.g. approved. Intermediate states can be tracked with cases and applications</b><br>
1633   * Type: <b>token</b><br>
1634   * Path: <b>RegulatedAuthorization.status</b><br>
1635   * </p>
1636   */
1637  @SearchParamDefinition(name="status", path="RegulatedAuthorization.status", description="The status that is authorised e.g. approved. Intermediate states can be tracked with cases and applications", type="token" )
1638  public static final String SP_STATUS = "status";
1639 /**
1640   * <b>Fluent Client</b> search parameter constant for <b>status</b>
1641   * <p>
1642   * Description: <b>The status that is authorised e.g. approved. Intermediate states can be tracked with cases and applications</b><br>
1643   * Type: <b>token</b><br>
1644   * Path: <b>RegulatedAuthorization.status</b><br>
1645   * </p>
1646   */
1647  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
1648
1649 /**
1650   * Search parameter: <b>subject</b>
1651   * <p>
1652   * Description: <b>The type of regulated product, treatment, facility or activity that is being authorized</b><br>
1653   * Type: <b>reference</b><br>
1654   * Path: <b>RegulatedAuthorization.subject</b><br>
1655   * </p>
1656   */
1657  @SearchParamDefinition(name="subject", path="RegulatedAuthorization.subject", description="The type of regulated product, treatment, facility or activity that is being authorized", type="reference", target={ActivityDefinition.class, BiologicallyDerivedProduct.class, DeviceDefinition.class, Ingredient.class, Location.class, ManufacturedItemDefinition.class, MedicinalProductDefinition.class, NutritionProduct.class, ObservationDefinition.class, Organization.class, PackagedProductDefinition.class, PlanDefinition.class, Practitioner.class, ResearchStudy.class, SubstanceDefinition.class } )
1658  public static final String SP_SUBJECT = "subject";
1659 /**
1660   * <b>Fluent Client</b> search parameter constant for <b>subject</b>
1661   * <p>
1662   * Description: <b>The type of regulated product, treatment, facility or activity that is being authorized</b><br>
1663   * Type: <b>reference</b><br>
1664   * Path: <b>RegulatedAuthorization.subject</b><br>
1665   * </p>
1666   */
1667  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SUBJECT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SUBJECT);
1668
1669/**
1670   * Constant for fluent queries to be used to add include statements. Specifies
1671   * the path value of "<b>RegulatedAuthorization:subject</b>".
1672   */
1673  public static final ca.uhn.fhir.model.api.Include INCLUDE_SUBJECT = new ca.uhn.fhir.model.api.Include("RegulatedAuthorization:subject").toLocked();
1674
1675
1676}
1677